#
whycq
2024-03-20 adbca2df763731388b9ca7c0e6b0f17f926a7887
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
8643
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419
9420
9421
9422
9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
9518
9519
9520
9521
9522
9523
9524
9525
9526
9527
9528
9529
9530
9531
9532
9533
9534
9535
9536
9537
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
9729
9730
9731
9732
9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
9800
9801
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
9848
9849
9850
9851
9852
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
11484
11485
11486
11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501
11502
11503
11504
11505
11506
11507
11508
11509
11510
11511
11512
11513
11514
11515
11516
11517
11518
11519
11520
11521
11522
11523
11524
11525
11526
11527
11528
11529
11530
11531
11532
11533
11534
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640
11641
11642
11643
11644
11645
11646
11647
11648
11649
11650
11651
11652
11653
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664
11665
11666
11667
11668
11669
11670
11671
11672
11673
11674
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687
11688
11689
11690
11691
11692
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703
11704
11705
11706
11707
11708
11709
11710
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721
11722
11723
11724
11725
11726
11727
11728
11729
11730
11731
11732
11733
11734
11735
11736
11737
11738
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767
11768
11769
11770
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781
11782
11783
11784
11785
11786
11787
11788
11789
11790
11791
11792
11793
11794
11795
11796
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811
11812
11813
11814
11815
11816
11817
11818
11819
11820
11821
11822
11823
11824
11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
11838
11839
11840
11841
11842
11843
11844
11845
11846
11847
11848
11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882
11883
11884
11885
11886
11887
11888
11889
11890
11891
11892
11893
11894
11895
11896
11897
11898
11899
11900
11901
11902
11903
11904
11905
11906
11907
11908
11909
11910
11911
11912
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
11958
11959
11960
11961
11962
11963
11964
11965
11966
11967
11968
11969
11970
11971
11972
11973
11974
11975
11976
11977
11978
11979
11980
11981
11982
11983
11984
11985
11986
11987
11988
11989
11990
11991
11992
11993
11994
11995
11996
11997
11998
11999
12000
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012
12013
12014
12015
12016
12017
12018
12019
12020
12021
12022
12023
12024
12025
12026
12027
12028
12029
12030
12031
12032
12033
12034
12035
12036
12037
12038
12039
12040
12041
12042
12043
12044
12045
12046
12047
12048
12049
12050
12051
12052
12053
12054
12055
12056
12057
12058
12059
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
12112
12113
12114
12115
12116
12117
12118
12119
12120
12121
12122
12123
12124
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137
12138
12139
12140
12141
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
12164
12165
12166
12167
12168
12169
12170
12171
12172
12173
12174
12175
12176
12177
12178
12179
12180
12181
12182
12183
12184
12185
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202
12203
12204
12205
12206
12207
12208
12209
12210
12211
12212
12213
12214
12215
12216
12217
12218
12219
12220
12221
12222
12223
12224
12225
12226
12227
12228
12229
12230
12231
12232
12233
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244
12245
12246
12247
12248
12249
12250
12251
12252
12253
12254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313
12314
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325
12326
12327
12328
12329
12330
12331
12332
12333
12334
12335
12336
12337
12338
12339
12340
12341
12342
12343
12344
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
12355
12356
12357
12358
12359
12360
12361
12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379
12380
12381
12382
12383
12384
12385
12386
12387
12388
12389
12390
12391
12392
12393
12394
12395
12396
12397
12398
12399
12400
12401
12402
12403
12404
12405
12406
12407
12408
12409
12410
12411
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
12431
12432
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
12537
12538
12539
12540
12541
12542
12543
12544
12545
12546
12547
12548
12549
12550
12551
12552
12553
12554
12555
12556
12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
12568
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625
12626
12627
12628
12629
12630
12631
12632
12633
12634
12635
12636
12637
12638
12639
12640
12641
12642
12643
12644
12645
12646
12647
12648
12649
12650
12651
12652
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662
12663
12664
12665
12666
12667
12668
12669
12670
12671
12672
12673
12674
12675
12676
12677
12678
12679
12680
12681
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
12713
12714
12715
12716
12717
12718
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744
12745
12746
12747
12748
12749
12750
12751
12752
12753
12754
12755
12756
12757
12758
12759
12760
12761
12762
12763
12764
12765
12766
12767
12768
12769
12770
12771
12772
12773
12774
12775
12776
12777
12778
12779
12780
12781
12782
12783
12784
12785
12786
12787
12788
12789
12790
12791
12792
12793
12794
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805
12806
12807
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820
12821
12822
12823
12824
12825
12826
12827
12828
12829
12830
12831
12832
12833
12834
12835
12836
12837
12838
12839
12840
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
12895
12896
12897
12898
12899
12900
12901
12902
12903
12904
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
12915
12916
12917
12918
12919
12920
12921
12922
12923
12924
12925
12926
12927
12928
12929
12930
12931
12932
12933
12934
12935
12936
12937
12938
12939
12940
12941
12942
12943
12944
12945
12946
12947
12948
12949
12950
12951
12952
12953
12954
12955
12956
12957
12958
12959
12960
12961
12962
12963
12964
12965
12966
12967
12968
12969
12970
12971
12972
12973
12974
12975
12976
12977
12978
12979
12980
12981
12982
12983
12984
12985
12986
12987
12988
12989
12990
12991
12992
12993
12994
12995
12996
12997
12998
12999
13000
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
13133
13134
13135
13136
13137
13138
13139
13140
13141
13142
13143
13144
13145
13146
13147
13148
13149
13150
13151
13152
13153
13154
13155
13156
13157
13158
13159
13160
13161
13162
13163
13164
13165
13166
13167
13168
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197
13198
13199
13200
13201
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226
13227
13228
13229
13230
13231
13232
13233
13234
13235
13236
13237
13238
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249
13250
13251
13252
13253
13254
13255
13256
13257
13258
13259
13260
13261
13262
13263
13264
13265
13266
13267
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293
13294
13295
13296
13297
13298
13299
13300
13301
13302
13303
13304
13305
13306
13307
13308
13309
13310
13311
13312
13313
13314
13315
13316
13317
13318
13319
13320
13321
13322
13323
13324
13325
13326
13327
13328
13329
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340
13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357
13358
13359
13360
13361
13362
13363
13364
13365
13366
13367
13368
13369
13370
13371
13372
13373
13374
13375
13376
13377
13378
13379
13380
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431
13432
13433
13434
13435
13436
13437
13438
13439
13440
13441
13442
13443
13444
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466
13467
13468
13469
13470
13471
13472
13473
13474
13475
13476
13477
13478
13479
13480
13481
13482
13483
13484
13485
13486
13487
13488
13489
13490
13491
13492
13493
13494
13495
13496
13497
13498
13499
13500
13501
13502
13503
13504
13505
13506
13507
13508
13509
13510
13511
13512
13513
13514
13515
13516
13517
13518
13519
13520
13521
13522
13523
13524
13525
13526
13527
13528
13529
13530
13531
13532
13533
13534
13535
13536
13537
13538
13539
13540
13541
13542
13543
13544
13545
13546
13547
13548
13549
13550
13551
13552
13553
13554
13555
13556
13557
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
13601
13602
13603
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
13614
13615
13616
13617
13618
13619
13620
13621
13622
13623
13624
13625
13626
13627
13628
13629
13630
13631
13632
13633
13634
13635
13636
13637
13638
13639
13640
13641
13642
13643
13644
13645
13646
13647
13648
13649
13650
13651
13652
13653
13654
13655
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
13674
13675
13676
13677
13678
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
13732
13733
13734
13735
13736
13737
13738
13739
13740
13741
13742
13743
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
13785
13786
13787
13788
13789
13790
13791
13792
13793
13794
13795
13796
13797
13798
13799
13800
13801
13802
13803
13804
13805
13806
13807
13808
13809
13810
13811
13812
13813
13814
13815
13816
13817
13818
13819
13820
13821
13822
13823
13824
13825
13826
13827
13828
13829
13830
13831
13832
13833
13834
13835
13836
13837
13838
13839
13840
13841
13842
13843
13844
13845
13846
13847
13848
13849
13850
13851
13852
13853
13854
13855
13856
13857
13858
13859
13860
13861
13862
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889
13890
13891
13892
13893
13894
13895
13896
13897
13898
13899
13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030
14031
14032
14033
14034
14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
14210
14211
14212
14213
14214
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237
14238
14239
14240
14241
14242
14243
14244
14245
14246
14247
14248
14249
14250
14251
14252
14253
14254
14255
14256
14257
14258
14259
14260
14261
14262
14263
14264
14265
14266
14267
14268
14269
14270
14271
14272
14273
14274
14275
14276
14277
14278
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289
14290
14291
14292
14293
14294
14295
14296
14297
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312
14313
14314
14315
14316
14317
14318
14319
14320
14321
14322
14323
14324
14325
14326
14327
14328
14329
14330
14331
14332
14333
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
14397
14398
14399
14400
14401
14402
14403
14404
14405
14406
14407
14408
14409
14410
14411
14412
14413
14414
14415
14416
14417
14418
14419
14420
14421
14422
14423
14424
14425
14426
14427
14428
14429
14430
14431
14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
(this["webpackJsonp"] = this["webpackJsonp"] || []).push([["app-service"],[
/* 0 */
/*!***************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/main.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\n__webpack_require__(/*! uni-pages */ 6);\nvar _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 143));\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 111));\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n_vue.default.config.productionTip = false;\n_vue.default.prototype.baseHttp = 'http://';\n// Vue.prototype.baseUrl = '/bfwcs'\n_App.default.mpType = 'app';\nvar app = new _vue.default(_objectSpread({}, _App.default));\napp.$mount();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyJdLCJuYW1lcyI6WyJWdWUiLCJjb25maWciLCJwcm9kdWN0aW9uVGlwIiwicHJvdG90eXBlIiwiYmFzZUh0dHAiLCJBcHAiLCJtcFR5cGUiLCJhcHAiLCIkbW91bnQiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUFtQjtBQUduQjtBQUFxQjtBQUFBO0FBQ3JCQSxZQUFHLENBQUNDLE1BQU0sQ0FBQ0MsYUFBYSxHQUFHLEtBQUs7QUFDaENGLFlBQUcsQ0FBQ0csU0FBUyxDQUFDQyxRQUFRLEdBQUcsU0FBUztBQUNsQztBQUNBQyxZQUFHLENBQUNDLE1BQU0sR0FBRyxLQUFLO0FBQ2xCLElBQU1DLEdBQUcsR0FBRyxJQUFJUCxZQUFHLG1CQUNaSyxZQUFHLEVBQ1I7QUFDRkUsR0FBRyxDQUFDQyxNQUFNLEVBQUUiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJztpbXBvcnQgQXBwIGZyb20gJy4vQXBwJ1xyXG5cclxuXHJcbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xyXG5WdWUuY29uZmlnLnByb2R1Y3Rpb25UaXAgPSBmYWxzZVxyXG5WdWUucHJvdG90eXBlLmJhc2VIdHRwID0gJ2h0dHA6Ly8nXHJcbi8vIFZ1ZS5wcm90b3R5cGUuYmFzZVVybCA9ICcvYmZ3Y3MnXHJcbkFwcC5tcFR5cGUgPSAnYXBwJ1xyXG5jb25zdCBhcHAgPSBuZXcgVnVlKHtcclxuICAgIC4uLkFwcFxyXG59KVxyXG5hcHAuJG1vdW50KClcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n");
 
/***/ }),
/* 1 */
/*!**********************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}
module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 2 */
/*!***************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3);
function _defineProperty(obj, key, value) {
  key = toPropertyKey(key);
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }
  return obj;
}
module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 3 */
/*!**************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 5);
function _toPropertyKey(arg) {
  var key = toPrimitive(arg, "string");
  return _typeof(key) === "symbol" ? key : String(key);
}
module.exports = _toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 4 */
/*!*******************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _typeof(obj) {
  "@babel/helpers - typeof";
 
  return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
    return typeof obj;
  } : function (obj) {
    return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj);
}
module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 5 */
/*!************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
function _toPrimitive(input, hint) {
  if (_typeof(input) !== "object" || input === null) return input;
  var prim = input[Symbol.toPrimitive];
  if (prim !== undefined) {
    var res = prim.call(input, hint || "default");
    if (_typeof(res) !== "object") return res;
    throw new TypeError("@@toPrimitive must return a primitive value.");
  }
  return (hint === "string" ? String : Number)(input);
}
module.exports = _toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 6 */
/*!******************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages.json ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
if (typeof Promise !== 'undefined' && !Promise.prototype.finally) {
  Promise.prototype.finally = function (callback) {
    var promise = this.constructor;
    return this.then(function (value) {
      return promise.resolve(callback()).then(function () {
        return value;
      });
    }, function (reason) {
      return promise.resolve(callback()).then(function () {
        throw reason;
      });
    });
  };
}
if (typeof uni !== 'undefined' && uni && uni.requireGlobal) {
  var global = uni.requireGlobal();
  ArrayBuffer = global.ArrayBuffer;
  Int8Array = global.Int8Array;
  Uint8Array = global.Uint8Array;
  Uint8ClampedArray = global.Uint8ClampedArray;
  Int16Array = global.Int16Array;
  Uint16Array = global.Uint16Array;
  Int32Array = global.Int32Array;
  Uint32Array = global.Uint32Array;
  Float32Array = global.Float32Array;
  Float64Array = global.Float64Array;
  BigInt64Array = global.BigInt64Array;
  BigUint64Array = global.BigUint64Array;
}
if (uni.restoreGlobal) {
  uni.restoreGlobal(weex, plus, setTimeout, clearTimeout, setInterval, clearInterval);
}
__definePage('pages/home/home', function () {
  return Vue.extend(__webpack_require__(/*! pages/home/home.vue?mpType=page */ 7).default);
});
__definePage('pages/index', function () {
  return Vue.extend(__webpack_require__(/*! pages/index.vue?mpType=page */ 61).default);
});
__definePage('pages/index/index', function () {
  return Vue.extend(__webpack_require__(/*! pages/index/index.vue?mpType=page */ 66).default);
});
__definePage('pages/index/monitor', function () {
  return Vue.extend(__webpack_require__(/*! pages/index/monitor.vue?mpType=page */ 138).default);
});
 
/***/ }),
/* 7 */
/*!***************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/home/home.vue?mpType=page ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./home.vue?vue&type=template&id=44021cb6&mpType=page */ 8);\n/* harmony import */ var _home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./home.vue?vue&type=script&lang=js&mpType=page */ 57);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"pages/home/home.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEg7QUFDNUg7QUFDbUU7QUFDTDs7O0FBRzlEO0FBQzZLO0FBQzdLLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLHFGQUFNO0FBQ1IsRUFBRSwwRkFBTTtBQUNSLEVBQUUsbUdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsOEZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vaG9tZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDQwMjFjYjYmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2hvbWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2hvbWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL2hvbWUvaG9tZS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///7\n");
 
/***/ }),
/* 8 */
/*!*********************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/home/home.vue?vue&type=template&id=44021cb6&mpType=page ***!
  \*********************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./home.vue?vue&type=template&id=44021cb6&mpType=page */ 9);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_template_id_44021cb6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 9 */
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/pages/home/home.vue?vue&type=template&id=44021cb6&mpType=page ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
try {
  components = {
    uniTransition:
      __webpack_require__(/*! @/uni_modules/uni-transition/components/uni-transition/uni-transition.vue */ 10)
        .default,
    yBox: __webpack_require__(/*! @/components/y-box/y-box.vue */ 26).default,
    uniPopup:
      __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup/uni-popup.vue */ 31)
        .default,
    uniPopupDialog:
      __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue */ 36)
        .default,
    uniPopupMessage:
      __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue */ 52)
        .default,
  }
} catch (e) {
  if (
    e.message.indexOf("Cannot find module") !== -1 &&
    e.message.indexOf(".vue") !== -1
  ) {
    console.error(e.message)
    console.error("1. 排查组件名称拼写是否正确")
    console.error(
      "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
    )
    console.error(
      "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
    )
  } else {
    throw e
  }
}
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "container"), attrs: { _i: 0 } },
    [
      _c(
        "uni-transition",
        {
          attrs: {
            duration: _vm.duration,
            "mode-class": _vm.infoMode,
            show: _vm.infoViewShow,
            _i: 1,
          },
        },
        [
          _c(
            "view",
            { staticClass: _vm._$s(2, "sc", "home-view"), attrs: { _i: 2 } },
            [
              _c(
                "view",
                { staticClass: _vm._$s(3, "sc", "head"), attrs: { _i: 3 } },
                [
                  _c("view", {
                    staticClass: _vm._$s(4, "sc", "head-left"),
                    attrs: { _i: 4 },
                    on: {
                      click: function ($event) {
                        return _vm.ejected()
                      },
                    },
                  }),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(5, "sc", "head-mid"),
                      attrs: { _i: 5 },
                    },
                    [_c("text")]
                  ),
                  _c("view", {
                    staticClass: _vm._$s(7, "sc", "head-right"),
                    attrs: { _i: 7 },
                  }),
                ]
              ),
              _c(
                "view",
                {
                  staticClass: _vm._$s(8, "sc", "info-main"),
                  attrs: { _i: 8 },
                },
                [
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(9, "sc", "info-box"),
                      attrs: { _i: 9 },
                    },
                    [
                      _c("y-box", { attrs: { _i: 10 } }, [
                        _c(
                          "view",
                          {
                            staticClass: _vm._$s(11, "sc", "text-content"),
                            attrs: { _i: 11 },
                          },
                          [
                            _c(
                              "view",
                              {
                                staticClass: _vm._$s(12, "sc", "swiper-head"),
                                attrs: { _i: 12 },
                              },
                              [
                                _c("view", {
                                  staticClass: _vm._$s(13, "sc", "item-box1"),
                                  attrs: { _i: 13 },
                                }),
                                _c("view", {
                                  staticClass: _vm._$s(14, "sc", "item-box1"),
                                  attrs: { _i: 14 },
                                }),
                                _c("view", {
                                  staticClass: _vm._$s(15, "sc", "item-box1"),
                                  attrs: { _i: 15 },
                                }),
                                _c("view", {
                                  staticClass: _vm._$s(16, "sc", "item-box1"),
                                  attrs: { _i: 16 },
                                }),
                                _c("view", {
                                  staticClass: _vm._$s(17, "sc", "item-box1"),
                                  attrs: { _i: 17 },
                                }),
                                _c("view", {
                                  staticClass: _vm._$s(18, "sc", "item-box1"),
                                  attrs: { _i: 18 },
                                }),
                                _c("view", {
                                  staticClass: _vm._$s(19, "sc", "item-box1"),
                                  attrs: { _i: 19 },
                                }),
                                _c("view", {
                                  staticClass: _vm._$s(20, "sc", "item-box1"),
                                  attrs: { _i: 20 },
                                }),
                              ]
                            ),
                            _c(
                              "view",
                              {
                                staticClass: _vm._$s(21, "sc", "swiper-body"),
                                attrs: { _i: 21 },
                              },
                              [
                                _c(
                                  "swiper",
                                  {
                                    staticClass: _vm._$s(
                                      22,
                                      "sc",
                                      "swiper-body-main"
                                    ),
                                    attrs: { _i: 22 },
                                  },
                                  _vm._l(
                                    _vm._$s(23, "f", {
                                      forItems: _vm.swiperList,
                                    }),
                                    function (item, i, $20, $30) {
                                      return _c(
                                        "swiper-item",
                                        {
                                          key: _vm._$s(23, "f", {
                                            forIndex: $20,
                                            key: i,
                                          }),
                                          staticClass: _vm._$s(
                                            "23-" + $30,
                                            "sc",
                                            "swiper-item"
                                          ),
                                          class: _vm._$s(
                                            "23-" + $30,
                                            "c",
                                            item.inspectSts
                                          ),
                                          attrs: { _i: "23-" + $30 },
                                        },
                                        [
                                          _c(
                                            "view",
                                            {
                                              staticClass: _vm._$s(
                                                "24-" + $30,
                                                "sc",
                                                "item-box"
                                              ),
                                              attrs: { _i: "24-" + $30 },
                                            },
                                            [
                                              _vm._v(
                                                _vm._$s(
                                                  "24-" + $30,
                                                  "t0-0",
                                                  _vm._s(+ 1)
                                                )
                                              ),
                                            ]
                                          ),
                                          _c(
                                            "view",
                                            {
                                              staticClass: _vm._$s(
                                                "25-" + $30,
                                                "sc",
                                                "item-box"
                                              ),
                                              attrs: { _i: "25-" + $30 },
                                            },
                                            [
                                              _vm._v(
                                                _vm._$s(
                                                  "25-" + $30,
                                                  "t0-0",
                                                  _vm._s(item.maktx)
                                                )
                                              ),
                                            ]
                                          ),
                                          _c(
                                            "view",
                                            {
                                              staticClass: _vm._$s(
                                                "26-" + $30,
                                                "sc",
                                                "item-box"
                                              ),
                                              attrs: { _i: "26-" + $30 },
                                            },
                                            [
                                              _vm._v(
                                                _vm._$s(
                                                  "26-" + $30,
                                                  "t0-0",
                                                  _vm._s(
                                                    item.storeReplenishment
                                                  )
                                                )
                                              ),
                                            ]
                                          ),
                                          _c(
                                            "view",
                                            {
                                              staticClass: _vm._$s(
                                                "27-" + $30,
                                                "sc",
                                                "item-box"
                                              ),
                                              attrs: { _i: "27-" + $30 },
                                            },
                                            [
                                              _vm._$s(
                                                "28-" + $30,
                                                "i",
                                                item.inspectSts ==
                                                  "inspectWhite"
                                              )
                                                ? _c("text", [
                                                    _vm._v(
                                                      _vm._$s(
                                                        "28-" + $30,
                                                        "t0-0",
                                                        _vm._s(item.storeAdd)
                                                      )
                                                    ),
                                                  ])
                                                : _vm._e(),
                                              _vm._$s(
                                                "29-" + $30,
                                                "i",
                                                item.inspectSts == "inspectRed"
                                              )
                                                ? _c("text", [
                                                    _vm._v(
                                                      _vm._$s(
                                                        "29-" + $30,
                                                        "t0-0",
                                                        _vm._s(item.storeAdd)
                                                      )
                                                    ),
                                                  ])
                                                : _vm._e(),
                                            ]
                                          ),
                                          _c(
                                            "view",
                                            {
                                              staticClass: _vm._$s(
                                                "30-" + $30,
                                                "sc",
                                                "item-box"
                                              ),
                                              attrs: { _i: "30-" + $30 },
                                            },
                                            [
                                              _vm._$s(
                                                "31-" + $30,
                                                "i",
                                                item.beBatch == 2
                                              )
                                                ? _c(
                                                    "text",
                                                    {
                                                      staticClass: _vm._$s(
                                                        "31-" + $30,
                                                        "sc",
                                                        "beBatch1"
                                                      ),
                                                      attrs: {
                                                        _i: "31-" + $30,
                                                      },
                                                    },
                                                    [
                                                      _vm._v(
                                                        _vm._$s(
                                                          "31-" + $30,
                                                          "t0-0",
                                                          _vm._s(item.beBatch$)
                                                        )
                                                      ),
                                                    ]
                                                  )
                                                : _vm._e(),
                                              _vm._$s(
                                                "32-" + $30,
                                                "i",
                                                item.beBatch != 2
                                              )
                                                ? _c(
                                                    "text",
                                                    {
                                                      staticClass: _vm._$s(
                                                        "32-" + $30,
                                                        "sc",
                                                        "beBatch2"
                                                      ),
                                                      attrs: {
                                                        _i: "32-" + $30,
                                                      },
                                                    },
                                                    [
                                                      _vm._v(
                                                        _vm._$s(
                                                          "32-" + $30,
                                                          "t0-0",
                                                          _vm._s(item.beBatch$)
                                                        )
                                                      ),
                                                    ]
                                                  )
                                                : _vm._e(),
                                            ]
                                          ),
                                          _c(
                                            "view",
                                            {
                                              staticClass: _vm._$s(
                                                "33-" + $30,
                                                "sc",
                                                "item-box"
                                              ),
                                              attrs: { _i: "33-" + $30 },
                                            },
                                            [
                                              _vm._v(
                                                _vm._$s(
                                                  "33-" + $30,
                                                  "t0-0",
                                                  _vm._s(item.appeTime$)
                                                )
                                              ),
                                            ]
                                          ),
                                          _c(
                                            "view",
                                            {
                                              staticClass: _vm._$s(
                                                "34-" + $30,
                                                "sc",
                                                "item-box"
                                              ),
                                              attrs: { _i: "34-" + $30 },
                                            },
                                            [
                                              _vm._v(
                                                _vm._$s(
                                                  "34-" + $30,
                                                  "t0-0",
                                                  _vm._s(item.appeTime$)
                                                )
                                              ),
                                            ]
                                          ),
                                          _c(
                                            "view",
                                            {
                                              staticClass: _vm._$s(
                                                "35-" + $30,
                                                "sc",
                                                "item-box"
                                              ),
                                              attrs: { _i: "35-" + $30 },
                                            },
                                            [
                                              _vm._$s(
                                                "36-" + $30,
                                                "i",
                                                item.beBatch == 1
                                              )
                                                ? _c("button", {
                                                    staticClass: _vm._$s(
                                                      "36-" + $30,
                                                      "sc",
                                                      "start-btn"
                                                    ),
                                                    attrs: { _i: "36-" + $30 },
                                                    on: {
                                                      click: function ($event) {
                                                        return _vm.complete(
                                                          item.matnr
                                                        )
                                                      },
                                                    },
                                                  })
                                                : _vm._e(),
                                              _vm._$s(
                                                "37-" + $30,
                                                "i",
                                                item.beBatch == 2
                                              )
                                                ? _c("button", {
                                                    staticClass: _vm._$s(
                                                      "37-" + $30,
                                                      "sc",
                                                      "end-btn"
                                                    ),
                                                    attrs: { _i: "37-" + $30 },
                                                    on: {
                                                      click: function ($event) {
                                                        return _vm.cancel(
                                                          item.matnr
                                                        )
                                                      },
                                                    },
                                                  })
                                                : _vm._e(),
                                            ]
                                          ),
                                        ]
                                      )
                                    }
                                  ),
                                  0
                                ),
                              ]
                            ),
                          ]
                        ),
                      ]),
                    ],
                    1
                  ),
                ]
              ),
            ]
          ),
        ]
      ),
      _c(
        "uni-transition",
        {
          attrs: {
            duration: _vm.duration,
            "mode-class": _vm.errorInfoMode,
            show: _vm.errorInfoViewShow,
            _i: 38,
          },
        },
        [
          _c(
            "view",
            {
              staticClass: _vm._$s(39, "sc", "error-info-view"),
              attrs: { _i: 39 },
            },
            [
              _c(
                "view",
                { staticClass: _vm._$s(40, "sc", "head"), attrs: { _i: 40 } },
                [
                  _c("text", [
                    _vm._v(_vm._$s(41, "t0-0", _vm._s(_vm.infoText.title))),
                  ]),
                ]
              ),
              _c(
                "view",
                {
                  staticClass: _vm._$s(42, "sc", "time-tools"),
                  attrs: { _i: 42 },
                },
                [_vm._v(_vm._$s(42, "t0-0", _vm._s(_vm.calendar)))]
              ),
              _c("view", {
                staticClass: _vm._$s(43, "sc", "button-left"),
                attrs: { _i: 43 },
              }),
              _c("view", {
                staticClass: _vm._$s(44, "sc", "button-right"),
                attrs: { _i: 44 },
              }),
              _c(
                "view",
                {
                  staticClass: _vm._$s(45, "sc", "info-main"),
                  attrs: { _i: 45 },
                },
                [
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(46, "sc", "info-box"),
                      attrs: { _i: 46 },
                    },
                    [
                      _c("y-box", { attrs: { _i: 47 } }, [
                        _c(
                          "view",
                          {
                            staticClass: _vm._$s(48, "sc", "info-box-text"),
                            attrs: { _i: 48 },
                          },
                          [
                            _c(
                              "view",
                              {
                                staticClass: _vm._$s(
                                  49,
                                  "sc",
                                  "flex-col info-box-text-item"
                                ),
                                attrs: { _i: 49 },
                              },
                              [
                                _vm._v(
                                  _vm._$s(
                                    49,
                                    "t0-0",
                                    _vm._s(_vm.infoText.error)
                                  )
                                ),
                              ]
                            ),
                          ]
                        ),
                      ]),
                    ],
                    1
                  ),
                ]
              ),
            ]
          ),
        ]
      ),
      _c(
        "view",
        {
          directives: [
            {
              name: "show",
              rawName: "v-show",
              value: _vm._$s(50, "v-show", _vm.ejectShow),
              expression: "_$s(50,'v-show',ejectShow)",
            },
          ],
          staticClass: _vm._$s(50, "sc", "eject-mask"),
          attrs: { _i: 50 },
        },
        [
          _c(
            "view",
            { staticClass: _vm._$s(51, "sc", "eject"), attrs: { _i: 51 } },
            [
              _c("view", {
                staticClass: _vm._$s(52, "sc", "eject-title"),
                attrs: { _i: 52 },
              }),
              _c(
                "view",
                {
                  staticClass: _vm._$s(53, "sc", "eject-input"),
                  attrs: { _i: 53 },
                },
                [
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(54, "sc", "item"),
                      attrs: { _i: 54 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(55, "sc", "desc"),
                        attrs: { _i: 55 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(56, "sc", "input"),
                          attrs: { _i: 56 },
                        },
                        [
                          _c("input", {
                            directives: [
                              {
                                name: "model",
                                rawName: "v-model",
                                value: _vm.baseIP,
                                expression: "baseIP",
                              },
                            ],
                            attrs: { _i: 57 },
                            domProps: {
                              value: _vm._$s(57, "v-model", _vm.baseIP),
                            },
                            on: {
                              input: function ($event) {
                                if ($event.target.composing) {
                                  return
                                }
                                _vm.baseIP = $event.target.value
                              },
                            },
                          }),
                        ]
                      ),
                    ]
                  ),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(58, "sc", "item"),
                      attrs: { _i: 58 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(59, "sc", "desc"),
                        attrs: { _i: 59 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(60, "sc", "input"),
                          attrs: { _i: 60 },
                        },
                        [
                          _c("input", {
                            directives: [
                              {
                                name: "model",
                                rawName: "v-model",
                                value: _vm.basePort,
                                expression: "basePort",
                              },
                            ],
                            attrs: { _i: 61 },
                            domProps: {
                              value: _vm._$s(61, "v-model", _vm.basePort),
                            },
                            on: {
                              input: function ($event) {
                                if ($event.target.composing) {
                                  return
                                }
                                _vm.basePort = $event.target.value
                              },
                            },
                          }),
                        ]
                      ),
                    ]
                  ),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(62, "sc", "item"),
                      attrs: { _i: 62 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(63, "sc", "desc"),
                        attrs: { _i: 63 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(64, "sc", "input"),
                          attrs: { _i: 64 },
                        },
                        [
                          _c("input", {
                            directives: [
                              {
                                name: "model",
                                rawName: "v-model",
                                value: _vm.baseLedId,
                                expression: "baseLedId",
                              },
                            ],
                            attrs: { _i: 65 },
                            domProps: {
                              value: _vm._$s(65, "v-model", _vm.baseLedId),
                            },
                            on: {
                              input: function ($event) {
                                if ($event.target.composing) {
                                  return
                                }
                                _vm.baseLedId = $event.target.value
                              },
                            },
                          }),
                        ]
                      ),
                    ]
                  ),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(66, "sc", "item"),
                      attrs: { _i: 66 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(67, "sc", "desc"),
                        attrs: { _i: 67 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(68, "sc", "input"),
                          attrs: { _i: 68 },
                        },
                        [
                          _c("input", {
                            directives: [
                              {
                                name: "model",
                                rawName: "v-model",
                                value: _vm.baseCrnId,
                                expression: "baseCrnId",
                              },
                            ],
                            attrs: { _i: 69 },
                            domProps: {
                              value: _vm._$s(69, "v-model", _vm.baseCrnId),
                            },
                            on: {
                              input: function ($event) {
                                if ($event.target.composing) {
                                  return
                                }
                                _vm.baseCrnId = $event.target.value
                              },
                            },
                          }),
                        ]
                      ),
                    ]
                  ),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(70, "sc", "item"),
                      attrs: { _i: 70 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(71, "sc", "desc"),
                        attrs: { _i: 71 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(72, "sc", "input"),
                          attrs: { _i: 72 },
                        },
                        [
                          _c("input", {
                            directives: [
                              {
                                name: "model",
                                rawName: "v-model",
                                value: _vm.baseUrl,
                                expression: "baseUrl",
                              },
                            ],
                            attrs: { _i: 73 },
                            domProps: {
                              value: _vm._$s(73, "v-model", _vm.baseUrl),
                            },
                            on: {
                              input: function ($event) {
                                if ($event.target.composing) {
                                  return
                                }
                                _vm.baseUrl = $event.target.value
                              },
                            },
                          }),
                        ]
                      ),
                    ]
                  ),
                ]
              ),
              _c(
                "view",
                {
                  staticClass: _vm._$s(74, "sc", "eject-button"),
                  attrs: { _i: 74 },
                },
                [
                  _c("view", {
                    staticClass: _vm._$s(75, "sc", "button-item"),
                    attrs: { _i: 75 },
                    on: { click: _vm.ejectClose },
                  }),
                  _c("view", {
                    staticClass: _vm._$s(76, "sc", "button-item"),
                    attrs: { _i: 76 },
                    on: { click: _vm.ejectConfirm },
                  }),
                ]
              ),
            ]
          ),
        ]
      ),
      _c(
        "view",
        [
          _c(
            "uni-popup",
            { ref: "inputDialog", attrs: { type: "dialog", _i: 78 } },
            [
              _c("uni-popup-dialog", {
                attrs: {
                  type: _vm.msgType,
                  title: _vm.dialogTitle,
                  content: _vm.dialogContent,
                  _i: 79,
                },
                on: { confirm: _vm.dialogConfirm, close: _vm.dialogClose },
              }),
            ],
            1
          ),
        ],
        1
      ),
      _c(
        "view",
        [
          _c(
            "uni-popup",
            { ref: "message", attrs: { type: "message", _i: 81 } },
            [
              _c("uni-popup-message", {
                attrs: {
                  type: _vm.messageType,
                  message: _vm.messageText,
                  duration: 3000,
                  _i: 82,
                },
              }),
            ],
            1
          ),
        ],
        1
      ),
    ],
    1
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 10 */
/*!*******************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-transition/components/uni-transition/uni-transition.vue ***!
  \*******************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_transition_vue_vue_type_template_id_6369f8c4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-transition.vue?vue&type=template&id=6369f8c4& */ 11);\n/* harmony import */ var _uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-transition.vue?vue&type=script&lang=js& */ 13);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _uni_transition_vue_vue_type_template_id_6369f8c4___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _uni_transition_vue_vue_type_template_id_6369f8c4___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _uni_transition_vue_vue_type_template_id_6369f8c4___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-transition/components/uni-transition/uni-transition.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkg7QUFDM0g7QUFDa0U7QUFDTDs7O0FBRzdEO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLG9GQUFNO0FBQ1IsRUFBRSx5RkFBTTtBQUNSLEVBQUUsa0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNkZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS10cmFuc2l0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MzY5ZjhjNCZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3VuaS10cmFuc2l0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdW5pLXRyYW5zaXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy91bmktdHJhbnNpdGlvbi9jb21wb25lbnRzL3VuaS10cmFuc2l0aW9uL3VuaS10cmFuc2l0aW9uLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///10\n");
 
/***/ }),
/* 11 */
/*!**************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=template&id=6369f8c4& ***!
  \**************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_template_id_6369f8c4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-transition.vue?vue&type=template&id=6369f8c4& */ 12);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_template_id_6369f8c4___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_template_id_6369f8c4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_template_id_6369f8c4___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_template_id_6369f8c4___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 12 */
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=template&id=6369f8c4& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _vm._$s(0, "i", _vm.isShow)
    ? _c(
        "view",
        {
          ref: "ani",
          class: _vm._$s(0, "c", _vm.customClass),
          style: _vm._$s(0, "s", _vm.transformStyles),
          attrs: {
            animation: _vm._$s(0, "a-animation", _vm.animationData),
            _i: 0,
          },
          on: { click: _vm.onClick },
        },
        [_vm._t("default", null, { _i: 1 })],
        2
      )
    : _vm._e()
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 13 */
/*!********************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=script&lang=js& ***!
  \********************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-transition.vue?vue&type=script&lang=js& */ 14);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_transition_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBtQixDQUFnQixvbEJBQUcsRUFBQyIsImZpbGUiOiIxMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktdHJhbnNpdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktdHJhbnNpdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///13\n");
 
/***/ }),
/* 14 */
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?vue&type=script&lang=js& ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 16));\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _createAnimation = __webpack_require__(/*! ./createAnimation */ 22);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/**\r\n * Transition 过渡动画\r\n * @description 简单过渡动画组件\r\n * @tutorial https://ext.dcloud.net.cn/plugin?id=985\r\n * @property {Boolean} show = [false|true] 控制组件显示或隐藏\r\n * @property {Array|String} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型\r\n *  @value fade 渐隐渐出过渡\r\n *  @value slide-top 由上至下过渡\r\n *  @value slide-right 由右至左过渡\r\n *  @value slide-bottom 由下至上过渡\r\n *  @value slide-left 由左至右过渡\r\n *  @value zoom-in 由小到大过渡\r\n *  @value zoom-out 由大到小过渡\r\n * @property {Number} duration 过渡动画持续时间\r\n * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`\r\n */\nvar _default2 = {\n  name: 'uniTransition',\n  emits: ['click', 'change'],\n  props: {\n    show: {\n      type: Boolean,\n      default: false\n    },\n    modeClass: {\n      type: [Array, String],\n      default: function _default() {\n        return 'fade';\n      }\n    },\n    duration: {\n      type: Number,\n      default: 300\n    },\n    styles: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    customClass: {\n      type: String,\n      default: ''\n    }\n  },\n  data: function data() {\n    return {\n      isShow: false,\n      transform: '',\n      opacity: 1,\n      animationData: {},\n      durationTime: 300,\n      config: {}\n    };\n  },\n  watch: {\n    show: {\n      handler: function handler(newVal) {\n        if (newVal) {\n          this.open();\n        } else {\n          // 避免上来就执行 close,导致动画错乱\n          if (this.isShow) {\n            this.close();\n          }\n        }\n      },\n      immediate: true\n    }\n  },\n  computed: {\n    // 生成样式数据\n    stylesObject: function stylesObject() {\n      var styles = _objectSpread(_objectSpread({}, this.styles), {}, {\n        'transition-duration': this.duration / 1000 + 's'\n      });\n      var transform = '';\n      for (var i in styles) {\n        var line = this.toLine(i);\n        transform += line + ':' + styles[i] + ';';\n      }\n      return transform;\n    },\n    // 初始化动画条件\n    transformStyles: function transformStyles() {\n      return 'transform:' + this.transform + ';' + 'opacity:' + this.opacity + ';' + this.stylesObject;\n    }\n  },\n  created: function created() {\n    // 动画默认配置\n    this.config = {\n      duration: this.duration,\n      timingFunction: 'ease',\n      transformOrigin: '50% 50%',\n      delay: 0\n    };\n    this.durationTime = this.duration;\n  },\n  methods: {\n    /**\r\n     *  ref 触发 初始化动画\r\n     */\n    init: function init() {\n      var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (obj.duration) {\n        this.durationTime = obj.duration;\n      }\n      this.animation = (0, _createAnimation.createAnimation)(Object.assign(this.config, obj), this);\n    },\n    /**\r\n     * 点击组件触发回调\r\n     */\n    onClick: function onClick() {\n      this.$emit('click', {\n        detail: this.isShow\n      });\n    },\n    /**\r\n     * ref 触发 动画分组\r\n     * @param {Object} obj\r\n     */\n    step: function step(obj) {\n      var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!this.animation) return;\n      for (var i in obj) {\n        try {\n          if ((0, _typeof2.default)(obj[i]) === 'object') {\n            var _this$animation;\n            (_this$animation = this.animation)[i].apply(_this$animation, (0, _toConsumableArray2.default)(obj[i]));\n          } else {\n            this.animation[i](obj[i]);\n          }\n        } catch (e) {\n          __f__(\"error\", \"\\u65B9\\u6CD5 \".concat(i, \" \\u4E0D\\u5B58\\u5728\"), \" at uni_modules/uni-transition/components/uni-transition/uni-transition.vue:139\");\n        }\n      }\n      this.animation.step(config);\n      return this;\n    },\n    /**\r\n     *  ref 触发 执行动画\r\n     */\n    run: function run(fn) {\n      if (!this.animation) return;\n      this.animation.run(fn);\n    },\n    // 开始过度动画\n    open: function open() {\n      var _this = this;\n      clearTimeout(this.timer);\n      this.transform = '';\n      this.isShow = true;\n      var _this$styleInit = this.styleInit(false),\n        opacity = _this$styleInit.opacity,\n        transform = _this$styleInit.transform;\n      if (typeof opacity !== 'undefined') {\n        this.opacity = opacity;\n      }\n      this.transform = transform;\n      // 确保动态样式已经生效后,执行动画,如果不加 nextTick ,会导致 wx 动画执行异常\n      this.$nextTick(function () {\n        // TODO 定时器保证动画完全执行,目前有些问题,后面会取消定时器\n        _this.timer = setTimeout(function () {\n          _this.animation = (0, _createAnimation.createAnimation)(_this.config, _this);\n          _this.tranfromInit(false).step();\n          _this.animation.run();\n          _this.$emit('change', {\n            detail: _this.isShow\n          });\n        }, 20);\n      });\n    },\n    // 关闭过度动画\n    close: function close(type) {\n      var _this2 = this;\n      if (!this.animation) return;\n      this.tranfromInit(true).step().run(function () {\n        _this2.isShow = false;\n        _this2.animationData = null;\n        _this2.animation = null;\n        var _this2$styleInit = _this2.styleInit(false),\n          opacity = _this2$styleInit.opacity,\n          transform = _this2$styleInit.transform;\n        _this2.opacity = opacity || 1;\n        _this2.transform = transform;\n        _this2.$emit('change', {\n          detail: _this2.isShow\n        });\n      });\n    },\n    // 处理动画开始前的默认样式\n    styleInit: function styleInit(type) {\n      var _this3 = this;\n      var styles = {\n        transform: ''\n      };\n      var buildStyle = function buildStyle(type, mode) {\n        if (mode === 'fade') {\n          styles.opacity = _this3.animationType(type)[mode];\n        } else {\n          styles.transform += _this3.animationType(type)[mode] + ' ';\n        }\n      };\n      if (typeof this.modeClass === 'string') {\n        buildStyle(type, this.modeClass);\n      } else {\n        this.modeClass.forEach(function (mode) {\n          buildStyle(type, mode);\n        });\n      }\n      return styles;\n    },\n    // 处理内置组合动画\n    tranfromInit: function tranfromInit(type) {\n      var _this4 = this;\n      var buildTranfrom = function buildTranfrom(type, mode) {\n        var aniNum = null;\n        if (mode === 'fade') {\n          aniNum = type ? 0 : 1;\n        } else {\n          aniNum = type ? '-100%' : '0';\n          if (mode === 'zoom-in') {\n            aniNum = type ? 0.8 : 1;\n          }\n          if (mode === 'zoom-out') {\n            aniNum = type ? 1.2 : 1;\n          }\n          if (mode === 'slide-right') {\n            aniNum = type ? '100%' : '0';\n          }\n          if (mode === 'slide-bottom') {\n            aniNum = type ? '100%' : '0';\n          }\n        }\n        _this4.animation[_this4.animationMode()[mode]](aniNum);\n      };\n      if (typeof this.modeClass === 'string') {\n        buildTranfrom(type, this.modeClass);\n      } else {\n        this.modeClass.forEach(function (mode) {\n          buildTranfrom(type, mode);\n        });\n      }\n      return this.animation;\n    },\n    animationType: function animationType(type) {\n      return {\n        fade: type ? 1 : 0,\n        'slide-top': \"translateY(\".concat(type ? '0' : '-100%', \")\"),\n        'slide-right': \"translateX(\".concat(type ? '0' : '100%', \")\"),\n        'slide-bottom': \"translateY(\".concat(type ? '0' : '100%', \")\"),\n        'slide-left': \"translateX(\".concat(type ? '0' : '-100%', \")\"),\n        'zoom-in': \"scaleX(\".concat(type ? 1 : 0.8, \") scaleY(\").concat(type ? 1 : 0.8, \")\"),\n        'zoom-out': \"scaleX(\".concat(type ? 1 : 1.2, \") scaleY(\").concat(type ? 1 : 1.2, \")\")\n      };\n    },\n    // 内置动画类型与实际动画对应字典\n    animationMode: function animationMode() {\n      return {\n        fade: 'opacity',\n        'slide-top': 'translateY',\n        'slide-right': 'translateX',\n        'slide-bottom': 'translateY',\n        'slide-left': 'translateX',\n        'zoom-in': 'scale',\n        'zoom-out': 'scale'\n      };\n    },\n    // 驼峰转中横线\n    toLine: function toLine(name) {\n      return name.replace(/([A-Z])/g, '-$1').toLowerCase();\n    }\n  }\n};\nexports.default = _default2;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXRyYW5zaXRpb24vY29tcG9uZW50cy91bmktdHJhbnNpdGlvbi91bmktdHJhbnNpdGlvbi52dWUiXSwibmFtZXMiOlsibmFtZSIsImVtaXRzIiwicHJvcHMiLCJzaG93IiwidHlwZSIsImRlZmF1bHQiLCJtb2RlQ2xhc3MiLCJkdXJhdGlvbiIsInN0eWxlcyIsImN1c3RvbUNsYXNzIiwiZGF0YSIsImlzU2hvdyIsInRyYW5zZm9ybSIsIm9wYWNpdHkiLCJhbmltYXRpb25EYXRhIiwiZHVyYXRpb25UaW1lIiwiY29uZmlnIiwid2F0Y2giLCJoYW5kbGVyIiwiaW1tZWRpYXRlIiwiY29tcHV0ZWQiLCJzdHlsZXNPYmplY3QiLCJ0cmFuc2Zvcm1TdHlsZXMiLCJjcmVhdGVkIiwidGltaW5nRnVuY3Rpb24iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJkZWxheSIsIm1ldGhvZHMiLCJpbml0Iiwib25DbGljayIsImRldGFpbCIsInN0ZXAiLCJydW4iLCJvcGVuIiwiY2xlYXJUaW1lb3V0IiwiY2xvc2UiLCJzdHlsZUluaXQiLCJidWlsZFN0eWxlIiwidHJhbmZyb21Jbml0IiwiYW5pTnVtIiwiYnVpbGRUcmFuZnJvbSIsImFuaW1hdGlvblR5cGUiLCJmYWRlIiwiYW5pbWF0aW9uTW9kZSIsInRvTGluZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUtBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZkEsZ0JBZ0JBO0VBQ0FBO0VBQ0FDO0VBQ0FDO0lBQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7SUFDQUM7TUFDQUY7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQUU7TUFDQUg7TUFDQUM7SUFDQTtJQUNBRztNQUNBSjtNQUNBQztRQUNBO01BQ0E7SUFDQTtJQUNBSTtNQUNBTDtNQUNBQztJQUNBO0VBQ0E7RUFDQUs7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFDQWQ7TUFDQWU7UUFDQTtVQUNBO1FBQ0E7VUFDQTtVQUNBO1lBQ0E7VUFDQTtRQUNBO01BQ0E7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQUM7TUFDQSw2Q0FDQTtRQUNBO01BQUEsRUFDQTtNQUNBO01BQ0E7UUFDQTtRQUNBVDtNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FVO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQTtNQUNBaEI7TUFDQWlCO01BQ0FDO01BQ0FDO0lBQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7QUFDQTtBQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0FDO01BQ0E7UUFDQUM7TUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQUM7TUFBQTtNQUNBO01BQ0E7UUFDQTtVQUNBO1lBQUE7WUFDQTtVQUNBO1lBQ0E7VUFDQTtRQUNBO1VBQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFBQTtNQUNBQztNQUNBO01BQ0E7TUFDQTtRQUFBckI7UUFBQUQ7TUFDQTtRQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFDQWtCO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBSztNQUFBO01BQ0E7TUFDQSx3QkFDQUosT0FDQUM7UUFDQTtRQUNBO1FBQ0E7UUFDQTtVQUFBbkI7VUFBQUQ7UUFDQTtRQUNBO1FBQ0E7VUFDQWtCO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQU07TUFBQTtNQUNBO1FBQ0F4QjtNQUNBO01BQ0E7UUFDQTtVQUNBSjtRQUNBO1VBQ0FBO1FBQ0E7TUFDQTtNQUNBO1FBQ0E2QjtNQUNBO1FBQ0E7VUFDQUE7UUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBO1FBQ0E7VUFDQUM7UUFDQTtVQUNBQTtVQUNBO1lBQ0FBO1VBQ0E7VUFDQTtZQUNBQTtVQUNBO1VBQ0E7WUFDQUE7VUFDQTtVQUNBO1lBQ0FBO1VBQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBQztNQUNBO1FBQ0E7VUFDQUE7UUFDQTtNQUNBO01BRUE7SUFDQTtJQUNBQztNQUNBO1FBQ0FDO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7UUFDQUQ7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUU7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBLDRCIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IHYtaWY9XCJpc1Nob3dcIiByZWY9XCJhbmlcIiA6YW5pbWF0aW9uPVwiYW5pbWF0aW9uRGF0YVwiIDpjbGFzcz1cImN1c3RvbUNsYXNzXCIgOnN0eWxlPVwidHJhbnNmb3JtU3R5bGVzXCIgQGNsaWNrPVwib25DbGlja1wiPjxzbG90Pjwvc2xvdD48L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5pbXBvcnQgeyBjcmVhdGVBbmltYXRpb24gfSBmcm9tICcuL2NyZWF0ZUFuaW1hdGlvbidcclxuXHJcbi8qKlxyXG4gKiBUcmFuc2l0aW9uIOi/h+a4oeWKqOeUu1xyXG4gKiBAZGVzY3JpcHRpb24g566A5Y2V6L+H5rih5Yqo55S757uE5Lu2XHJcbiAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD05ODVcclxuICogQHByb3BlcnR5IHtCb29sZWFufSBzaG93ID0gW2ZhbHNlfHRydWVdIOaOp+WItue7hOS7tuaYvuekuuaIlumakOiXj1xyXG4gKiBAcHJvcGVydHkge0FycmF5fFN0cmluZ30gbW9kZUNsYXNzID0gW2ZhZGV8c2xpZGUtdG9wfHNsaWRlLXJpZ2h0fHNsaWRlLWJvdHRvbXxzbGlkZS1sZWZ0fHpvb20taW58em9vbS1vdXRdIOi/h+a4oeWKqOeUu+exu+Wei1xyXG4gKiAgQHZhbHVlIGZhZGUg5riQ6ZqQ5riQ5Ye66L+H5rihXHJcbiAqICBAdmFsdWUgc2xpZGUtdG9wIOeUseS4iuiHs+S4i+i/h+a4oVxyXG4gKiAgQHZhbHVlIHNsaWRlLXJpZ2h0IOeUseWPs+iHs+W3pui/h+a4oVxyXG4gKiAgQHZhbHVlIHNsaWRlLWJvdHRvbSDnlLHkuIvoh7PkuIrov4fmuKFcclxuICogIEB2YWx1ZSBzbGlkZS1sZWZ0IOeUseW3puiHs+WPs+i/h+a4oVxyXG4gKiAgQHZhbHVlIHpvb20taW4g55Sx5bCP5Yiw5aSn6L+H5rihXHJcbiAqICBAdmFsdWUgem9vbS1vdXQg55Sx5aSn5Yiw5bCP6L+H5rihXHJcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBkdXJhdGlvbiDov4fmuKHliqjnlLvmjIHnu63ml7bpl7RcclxuICogQHByb3BlcnR5IHtPYmplY3R9IHN0eWxlcyDnu4Tku7bmoLflvI/vvIzlkIwgY3NzIOagt+W8j++8jOazqOaEj+W4puKAmS3igJjov57mjqXnrKbnmoTlsZ7mgKfpnIDopoHkvb/nlKjlsI/pqbzls7Dlhpnms5XlpoLvvJpgYmFja2dyb3VuZENvbG9yOnJlZGBcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuXHRuYW1lOiAndW5pVHJhbnNpdGlvbicsXHJcblx0ZW1pdHM6WydjbGljaycsJ2NoYW5nZSddLFxyXG5cdHByb3BzOiB7XHJcblx0XHRzaG93OiB7XHJcblx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdGRlZmF1bHQ6IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0bW9kZUNsYXNzOiB7XHJcblx0XHRcdHR5cGU6IFtBcnJheSwgU3RyaW5nXSxcclxuXHRcdFx0ZGVmYXVsdCgpIHtcclxuXHRcdFx0XHRyZXR1cm4gJ2ZhZGUnXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRkdXJhdGlvbjoge1xyXG5cdFx0XHR0eXBlOiBOdW1iZXIsXHJcblx0XHRcdGRlZmF1bHQ6IDMwMFxyXG5cdFx0fSxcclxuXHRcdHN0eWxlczoge1xyXG5cdFx0XHR0eXBlOiBPYmplY3QsXHJcblx0XHRcdGRlZmF1bHQoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHt9XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjdXN0b21DbGFzczp7XHJcblx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdH1cclxuXHR9LFxyXG5cdGRhdGEoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRpc1Nob3c6IGZhbHNlLFxyXG5cdFx0XHR0cmFuc2Zvcm06ICcnLFxyXG5cdFx0XHRvcGFjaXR5OiAxLFxyXG5cdFx0XHRhbmltYXRpb25EYXRhOiB7fSxcclxuXHRcdFx0ZHVyYXRpb25UaW1lOiAzMDAsXHJcblx0XHRcdGNvbmZpZzoge31cclxuXHRcdH1cclxuXHR9LFxyXG5cdHdhdGNoOiB7XHJcblx0XHRzaG93OiB7XHJcblx0XHRcdGhhbmRsZXIobmV3VmFsKSB7XHJcblx0XHRcdFx0aWYgKG5ld1ZhbCkge1xyXG5cdFx0XHRcdFx0dGhpcy5vcGVuKClcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Ly8g6YG/5YWN5LiK5p2l5bCx5omn6KGMIGNsb3NlLOWvvOiHtOWKqOeUu+mUmeS5sVxyXG5cdFx0XHRcdFx0aWYgKHRoaXMuaXNTaG93KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuY2xvc2UoKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0aW1tZWRpYXRlOiB0cnVlXHJcblx0XHR9XHJcblx0fSxcclxuXHRjb21wdXRlZDoge1xyXG5cdFx0Ly8g55Sf5oiQ5qC35byP5pWw5o2uXHJcblx0XHRzdHlsZXNPYmplY3QoKSB7XHJcblx0XHRcdGxldCBzdHlsZXMgPSB7XHJcblx0XHRcdFx0Li4udGhpcy5zdHlsZXMsXHJcblx0XHRcdFx0J3RyYW5zaXRpb24tZHVyYXRpb24nOiB0aGlzLmR1cmF0aW9uIC8gMTAwMCArICdzJ1xyXG5cdFx0XHR9XHJcblx0XHRcdGxldCB0cmFuc2Zvcm0gPSAnJ1xyXG5cdFx0XHRmb3IgKGxldCBpIGluIHN0eWxlcykge1xyXG5cdFx0XHRcdGxldCBsaW5lID0gdGhpcy50b0xpbmUoaSlcclxuXHRcdFx0XHR0cmFuc2Zvcm0gKz0gbGluZSArICc6JyArIHN0eWxlc1tpXSArICc7J1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiB0cmFuc2Zvcm1cclxuXHRcdH0sXHJcblx0XHQvLyDliJ3lp4vljJbliqjnlLvmnaHku7ZcclxuXHRcdHRyYW5zZm9ybVN0eWxlcygpIHtcclxuXHRcdFx0cmV0dXJuICd0cmFuc2Zvcm06JyArIHRoaXMudHJhbnNmb3JtICsgJzsnICsgJ29wYWNpdHk6JyArIHRoaXMub3BhY2l0eSArICc7JyArIHRoaXMuc3R5bGVzT2JqZWN0XHJcblx0XHR9XHJcblx0fSxcclxuXHRjcmVhdGVkKCkge1xyXG5cdFx0Ly8g5Yqo55S76buY6K6k6YWN572uXHJcblx0XHR0aGlzLmNvbmZpZyA9IHtcclxuXHRcdFx0ZHVyYXRpb246IHRoaXMuZHVyYXRpb24sXHJcblx0XHRcdHRpbWluZ0Z1bmN0aW9uOiAnZWFzZScsXHJcblx0XHRcdHRyYW5zZm9ybU9yaWdpbjogJzUwJSA1MCUnLFxyXG5cdFx0XHRkZWxheTogMFxyXG5cdFx0fVxyXG5cdFx0dGhpcy5kdXJhdGlvblRpbWUgPSB0aGlzLmR1cmF0aW9uXHJcblx0fSxcclxuXHRtZXRob2RzOiB7XHJcblx0XHQvKipcclxuXHRcdCAqICByZWYg6Kem5Y+RIOWIneWni+WMluWKqOeUu1xyXG5cdFx0ICovXHJcblx0XHRpbml0KG9iaiA9IHt9KSB7XHJcblx0XHRcdGlmIChvYmouZHVyYXRpb24pIHtcclxuXHRcdFx0XHR0aGlzLmR1cmF0aW9uVGltZSA9IG9iai5kdXJhdGlvblxyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuYW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKE9iamVjdC5hc3NpZ24odGhpcy5jb25maWcsIG9iaiksdGhpcylcclxuXHRcdH0sXHJcblx0XHQvKipcclxuXHRcdCAqIOeCueWHu+e7hOS7tuinpuWPkeWbnuiwg1xyXG5cdFx0ICovXHJcblx0XHRvbkNsaWNrKCkge1xyXG5cdFx0XHR0aGlzLiRlbWl0KCdjbGljaycsIHtcclxuXHRcdFx0XHRkZXRhaWw6IHRoaXMuaXNTaG93XHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0LyoqXHJcblx0XHQgKiByZWYg6Kem5Y+RIOWKqOeUu+WIhue7hFxyXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IG9ialxyXG5cdFx0ICovXHJcblx0XHRzdGVwKG9iaiwgY29uZmlnID0ge30pIHtcclxuXHRcdFx0aWYgKCF0aGlzLmFuaW1hdGlvbikgcmV0dXJuXHJcblx0XHRcdGZvciAobGV0IGkgaW4gb2JqKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGlmKHR5cGVvZiBvYmpbaV0gPT09ICdvYmplY3QnKXtcclxuXHRcdFx0XHRcdFx0dGhpcy5hbmltYXRpb25baV0oLi4ub2JqW2ldKVxyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHRoaXMuYW5pbWF0aW9uW2ldKG9ialtpXSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGDmlrnms5UgJHtpfSDkuI3lrZjlnKhgKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmFuaW1hdGlvbi5zdGVwKGNvbmZpZylcclxuXHRcdFx0cmV0dXJuIHRoaXNcclxuXHRcdH0sXHJcblx0XHQvKipcclxuXHRcdCAqICByZWYg6Kem5Y+RIOaJp+ihjOWKqOeUu1xyXG5cdFx0ICovXHJcblx0XHRydW4oZm4pIHtcclxuXHRcdFx0aWYgKCF0aGlzLmFuaW1hdGlvbikgcmV0dXJuXHJcblx0XHRcdHRoaXMuYW5pbWF0aW9uLnJ1bihmbilcclxuXHRcdH0sXHJcblx0XHQvLyDlvIDlp4vov4fluqbliqjnlLtcclxuXHRcdG9wZW4oKSB7XHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKVxyXG5cdFx0XHR0aGlzLnRyYW5zZm9ybSA9ICcnXHJcblx0XHRcdHRoaXMuaXNTaG93ID0gdHJ1ZVxyXG5cdFx0XHRsZXQgeyBvcGFjaXR5LCB0cmFuc2Zvcm0gfSA9IHRoaXMuc3R5bGVJbml0KGZhbHNlKVxyXG5cdFx0XHRpZiAodHlwZW9mIG9wYWNpdHkgIT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdFx0dGhpcy5vcGFjaXR5ID0gb3BhY2l0eVxyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMudHJhbnNmb3JtID0gdHJhbnNmb3JtXHJcblx0XHRcdC8vIOehruS/neWKqOaAgeagt+W8j+W3sue7j+eUn+aViOWQju+8jOaJp+ihjOWKqOeUu++8jOWmguaenOS4jeWKoCBuZXh0VGljayDvvIzkvJrlr7zoh7Qgd3gg5Yqo55S75omn6KGM5byC5bi4XHJcblx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcclxuXHRcdFx0XHQvLyBUT0RPIOWumuaXtuWZqOS/neivgeWKqOeUu+WujOWFqOaJp+ihjO+8jOebruWJjeacieS6m+mXrumimO+8jOWQjumdouS8muWPlua2iOWumuaXtuWZqFxyXG5cdFx0XHRcdHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuYW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKHRoaXMuY29uZmlnLCB0aGlzKVxyXG5cdFx0XHRcdFx0dGhpcy50cmFuZnJvbUluaXQoZmFsc2UpLnN0ZXAoKVxyXG5cdFx0XHRcdFx0dGhpcy5hbmltYXRpb24ucnVuKClcclxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZScsIHtcclxuXHRcdFx0XHRcdFx0ZGV0YWlsOiB0aGlzLmlzU2hvd1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9LCAyMClcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHQvLyDlhbPpl63ov4fluqbliqjnlLtcclxuXHRcdGNsb3NlKHR5cGUpIHtcclxuXHRcdFx0aWYgKCF0aGlzLmFuaW1hdGlvbikgcmV0dXJuXHJcblx0XHRcdHRoaXMudHJhbmZyb21Jbml0KHRydWUpXHJcblx0XHRcdFx0LnN0ZXAoKVxyXG5cdFx0XHRcdC5ydW4oKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5pc1Nob3cgPSBmYWxzZVxyXG5cdFx0XHRcdFx0dGhpcy5hbmltYXRpb25EYXRhID0gbnVsbFxyXG5cdFx0XHRcdFx0dGhpcy5hbmltYXRpb24gPSBudWxsXHJcblx0XHRcdFx0XHRsZXQgeyBvcGFjaXR5LCB0cmFuc2Zvcm0gfSA9IHRoaXMuc3R5bGVJbml0KGZhbHNlKVxyXG5cdFx0XHRcdFx0dGhpcy5vcGFjaXR5ID0gb3BhY2l0eSB8fCAxXHJcblx0XHRcdFx0XHR0aGlzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxyXG5cdFx0XHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlJywge1xyXG5cdFx0XHRcdFx0XHRkZXRhaWw6IHRoaXMuaXNTaG93XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0Ly8g5aSE55CG5Yqo55S75byA5aeL5YmN55qE6buY6K6k5qC35byPXHJcblx0XHRzdHlsZUluaXQodHlwZSkge1xyXG5cdFx0XHRsZXQgc3R5bGVzID0ge1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogJydcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgYnVpbGRTdHlsZSA9ICh0eXBlLCBtb2RlKSA9PiB7XHJcblx0XHRcdFx0aWYgKG1vZGUgPT09ICdmYWRlJykge1xyXG5cdFx0XHRcdFx0c3R5bGVzLm9wYWNpdHkgPSB0aGlzLmFuaW1hdGlvblR5cGUodHlwZSlbbW9kZV1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0c3R5bGVzLnRyYW5zZm9ybSArPSB0aGlzLmFuaW1hdGlvblR5cGUodHlwZSlbbW9kZV0gKyAnICdcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHR5cGVvZiB0aGlzLm1vZGVDbGFzcyA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0XHRidWlsZFN0eWxlKHR5cGUsIHRoaXMubW9kZUNsYXNzKVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMubW9kZUNsYXNzLmZvckVhY2gobW9kZSA9PiB7XHJcblx0XHRcdFx0XHRidWlsZFN0eWxlKHR5cGUsIG1vZGUpXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gc3R5bGVzXHJcblx0XHR9LFxyXG5cdFx0Ly8g5aSE55CG5YaF572u57uE5ZCI5Yqo55S7XHJcblx0XHR0cmFuZnJvbUluaXQodHlwZSkge1xyXG5cdFx0XHRsZXQgYnVpbGRUcmFuZnJvbSA9ICh0eXBlLCBtb2RlKSA9PiB7XHJcblx0XHRcdFx0bGV0IGFuaU51bSA9IG51bGxcclxuXHRcdFx0XHRpZiAobW9kZSA9PT0gJ2ZhZGUnKSB7XHJcblx0XHRcdFx0XHRhbmlOdW0gPSB0eXBlID8gMCA6IDFcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0YW5pTnVtID0gdHlwZSA/ICctMTAwJScgOiAnMCdcclxuXHRcdFx0XHRcdGlmIChtb2RlID09PSAnem9vbS1pbicpIHtcclxuXHRcdFx0XHRcdFx0YW5pTnVtID0gdHlwZSA/IDAuOCA6IDFcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChtb2RlID09PSAnem9vbS1vdXQnKSB7XHJcblx0XHRcdFx0XHRcdGFuaU51bSA9IHR5cGUgPyAxLjIgOiAxXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAobW9kZSA9PT0gJ3NsaWRlLXJpZ2h0Jykge1xyXG5cdFx0XHRcdFx0XHRhbmlOdW0gPSB0eXBlID8gJzEwMCUnIDogJzAnXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAobW9kZSA9PT0gJ3NsaWRlLWJvdHRvbScpIHtcclxuXHRcdFx0XHRcdFx0YW5pTnVtID0gdHlwZSA/ICcxMDAlJyA6ICcwJ1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmFuaW1hdGlvblt0aGlzLmFuaW1hdGlvbk1vZGUoKVttb2RlXV0oYW5pTnVtKVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0eXBlb2YgdGhpcy5tb2RlQ2xhc3MgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdFx0YnVpbGRUcmFuZnJvbSh0eXBlLCB0aGlzLm1vZGVDbGFzcylcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm1vZGVDbGFzcy5mb3JFYWNoKG1vZGUgPT4ge1xyXG5cdFx0XHRcdFx0YnVpbGRUcmFuZnJvbSh0eXBlLCBtb2RlKVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiB0aGlzLmFuaW1hdGlvblxyXG5cdFx0fSxcclxuXHRcdGFuaW1hdGlvblR5cGUodHlwZSkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGZhZGU6IHR5cGUgPyAxIDogMCxcclxuXHRcdFx0XHQnc2xpZGUtdG9wJzogYHRyYW5zbGF0ZVkoJHt0eXBlID8gJzAnIDogJy0xMDAlJ30pYCxcclxuXHRcdFx0XHQnc2xpZGUtcmlnaHQnOiBgdHJhbnNsYXRlWCgke3R5cGUgPyAnMCcgOiAnMTAwJSd9KWAsXHJcblx0XHRcdFx0J3NsaWRlLWJvdHRvbSc6IGB0cmFuc2xhdGVZKCR7dHlwZSA/ICcwJyA6ICcxMDAlJ30pYCxcclxuXHRcdFx0XHQnc2xpZGUtbGVmdCc6IGB0cmFuc2xhdGVYKCR7dHlwZSA/ICcwJyA6ICctMTAwJSd9KWAsXHJcblx0XHRcdFx0J3pvb20taW4nOiBgc2NhbGVYKCR7dHlwZSA/IDEgOiAwLjh9KSBzY2FsZVkoJHt0eXBlID8gMSA6IDAuOH0pYCxcclxuXHRcdFx0XHQnem9vbS1vdXQnOiBgc2NhbGVYKCR7dHlwZSA/IDEgOiAxLjJ9KSBzY2FsZVkoJHt0eXBlID8gMSA6IDEuMn0pYFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Ly8g5YaF572u5Yqo55S757G75Z6L5LiO5a6e6ZmF5Yqo55S75a+55bqU5a2X5YW4XHJcblx0XHRhbmltYXRpb25Nb2RlKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGZhZGU6ICdvcGFjaXR5JyxcclxuXHRcdFx0XHQnc2xpZGUtdG9wJzogJ3RyYW5zbGF0ZVknLFxyXG5cdFx0XHRcdCdzbGlkZS1yaWdodCc6ICd0cmFuc2xhdGVYJyxcclxuXHRcdFx0XHQnc2xpZGUtYm90dG9tJzogJ3RyYW5zbGF0ZVknLFxyXG5cdFx0XHRcdCdzbGlkZS1sZWZ0JzogJ3RyYW5zbGF0ZVgnLFxyXG5cdFx0XHRcdCd6b29tLWluJzogJ3NjYWxlJyxcclxuXHRcdFx0XHQnem9vbS1vdXQnOiAnc2NhbGUnXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHQvLyDpqbzls7DovazkuK3mqKrnur9cclxuXHRcdHRvTGluZShuYW1lKSB7XHJcblx0XHRcdHJldHVybiBuYW1lLnJlcGxhY2UoLyhbQS1aXSkvZywgJy0kMScpLnRvTG93ZXJDYXNlKClcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGU+PC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///14\n");
 
/***/ }),
/* 15 */
/*!*********************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js ***!
  \*********************************************************************/
/*! exports provided: log, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatLog; });
function typof (v) {
  var s = Object.prototype.toString.call(v)
  return s.substring(8, s.length - 1)
}
 
function isDebugMode () {
  /* eslint-disable no-undef */
  return typeof __channelId__ === 'string' && __channelId__
}
 
function jsonStringifyReplacer (k, p) {
  switch (typof(p)) {
    case 'Function':
      return 'function() { [native code] }'
    default :
      return p
  }
}
 
function log (type) {
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
    args[_key - 1] = arguments[_key]
  }
  console[type].apply(console, args)
}
 
function formatLog () {
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
    args[_key] = arguments[_key]
  }
  var type = args.shift()
  if (isDebugMode()) {
    args.push(args.pop().replace('at ', 'uni-app:///'))
    return console[type].apply(console, args)
  }
 
  var msgs = args.map(function (v) {
    var type = Object.prototype.toString.call(v).toLowerCase()
 
    if (type === '[object object]' || type === '[object array]') {
      try {
        v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---'
      } catch (e) {
        v = type
      }
    } else {
      if (=== null) {
        v = '---NULL---'
      } else if (=== undefined) {
        v = '---UNDEFINED---'
      } else {
        var vType = typof(v).toUpperCase()
 
        if (vType === 'NUMBER' || vType === 'BOOLEAN') {
          v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---'
        } else {
          v = String(v)
        }
      }
    }
 
    return v
  })
  var msg = ''
 
  if (msgs.length > 1) {
    var lastMsg = msgs.pop()
    msg = msgs.join('---COMMA---')
 
    if (lastMsg.indexOf(' at ') === 0) {
      msg += lastMsg
    } else {
      msg += '---COMMA---' + lastMsg
    }
  } else {
    msg = msgs[0]
  }
 
  console[type](msg)
}
 
 
/***/ }),
/* 16 */
/*!******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ 17);
var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ 19);
var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 20);
var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ 21);
function _toConsumableArray(arr) {
  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}
module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 17 */
/*!******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 18);
function _arrayWithoutHoles(arr) {
  if (Array.isArray(arr)) return arrayLikeToArray(arr);
}
module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 18 */
/*!*****************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;
  for (var i = 0, arr2 = new Array(len); i < len; i++) {
    arr2[i] = arr[i];
  }
  return arr2;
}
module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 19 */
/*!****************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _iterableToArray(iter) {
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 20 */
/*!***************************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 18);
function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === "string") return arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (=== "Object" && o.constructor) n = o.constructor.name;
  if (=== "Map" || n === "Set") return Array.from(o);
  if (=== "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
}
module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 21 */
/*!******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
  \******************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 22 */
/*!*******************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-transition/components/uni-transition/createAnimation.js ***!
  \*******************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createAnimation = createAnimation;\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n// const defaultOption = {\n// \tduration: 300,\n// \ttimingFunction: 'linear',\n// \tdelay: 0,\n// \ttransformOrigin: '50% 50% 0'\n// }\nvar MPAnimation = /*#__PURE__*/function () {\n  function MPAnimation(options, _this) {\n    (0, _classCallCheck2.default)(this, MPAnimation);\n    this.options = options;\n    this.animation = uni.createAnimation(options);\n    this.currentStepAnimates = {};\n    this.next = 0;\n    this.$ = _this;\n  }\n  (0, _createClass2.default)(MPAnimation, [{\n    key: \"_nvuePushAnimates\",\n    value: function _nvuePushAnimates(type, args) {\n      var aniObj = this.currentStepAnimates[this.next];\n      var styles = {};\n      if (!aniObj) {\n        styles = {\n          styles: {},\n          config: {}\n        };\n      } else {\n        styles = aniObj;\n      }\n      if (animateTypes1.includes(type)) {\n        if (!styles.styles.transform) {\n          styles.styles.transform = '';\n        }\n        var unit = '';\n        if (type === 'rotate') {\n          unit = 'deg';\n        }\n        styles.styles.transform += \"\".concat(type, \"(\").concat(args + unit, \") \");\n      } else {\n        styles.styles[type] = \"\".concat(args);\n      }\n      this.currentStepAnimates[this.next] = styles;\n    }\n  }, {\n    key: \"_animateRun\",\n    value: function _animateRun() {\n      var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var ref = this.$.$refs['ani'].ref;\n      if (!ref) return;\n      return new Promise(function (resolve, reject) {\n        nvueAnimation.transition(ref, _objectSpread({\n          styles: styles\n        }, config), function (res) {\n          resolve();\n        });\n      });\n    }\n  }, {\n    key: \"_nvueNextAnimate\",\n    value: function _nvueNextAnimate(animates) {\n      var _this2 = this;\n      var step = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var fn = arguments.length > 2 ? arguments[2] : undefined;\n      var obj = animates[step];\n      if (obj) {\n        var styles = obj.styles,\n          config = obj.config;\n        this._animateRun(styles, config).then(function () {\n          step += 1;\n          _this2._nvueNextAnimate(animates, step, fn);\n        });\n      } else {\n        this.currentStepAnimates = {};\n        typeof fn === 'function' && fn();\n        this.isEnd = true;\n      }\n    }\n  }, {\n    key: \"step\",\n    value: function step() {\n      var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      this.animation.step(config);\n      return this;\n    }\n  }, {\n    key: \"run\",\n    value: function run(fn) {\n      this.$.animationData = this.animation.export();\n      this.$.timer = setTimeout(function () {\n        typeof fn === 'function' && fn();\n      }, this.$.durationTime);\n    }\n  }]);\n  return MPAnimation;\n}();\nvar animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', 'translateZ'];\nvar animateTypes2 = ['opacity', 'backgroundColor'];\nvar animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'];\nanimateTypes1.concat(animateTypes2, animateTypes3).forEach(function (type) {\n  MPAnimation.prototype[type] = function () {\n    var _this$animation;\n    (_this$animation = this.animation)[type].apply(_this$animation, arguments);\n    return this;\n  };\n});\nfunction createAnimation(option, _this) {\n  if (!_this) return;\n  clearTimeout(_this.timer);\n  return new MPAnimation(option, _this);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXRyYW5zaXRpb24vY29tcG9uZW50cy91bmktdHJhbnNpdGlvbi9jcmVhdGVBbmltYXRpb24uanMiXSwibmFtZXMiOlsiTVBBbmltYXRpb24iLCJvcHRpb25zIiwiX3RoaXMiLCJhbmltYXRpb24iLCJ1bmkiLCJjcmVhdGVBbmltYXRpb24iLCJjdXJyZW50U3RlcEFuaW1hdGVzIiwibmV4dCIsIiQiLCJ0eXBlIiwiYXJncyIsImFuaU9iaiIsInN0eWxlcyIsImNvbmZpZyIsImFuaW1hdGVUeXBlczEiLCJpbmNsdWRlcyIsInRyYW5zZm9ybSIsInVuaXQiLCJyZWYiLCIkcmVmcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwibnZ1ZUFuaW1hdGlvbiIsInRyYW5zaXRpb24iLCJyZXMiLCJhbmltYXRlcyIsInN0ZXAiLCJmbiIsIm9iaiIsIl9hbmltYXRlUnVuIiwidGhlbiIsIl9udnVlTmV4dEFuaW1hdGUiLCJpc0VuZCIsImFuaW1hdGlvbkRhdGEiLCJleHBvcnQiLCJ0aW1lciIsInNldFRpbWVvdXQiLCJkdXJhdGlvblRpbWUiLCJhbmltYXRlVHlwZXMyIiwiYW5pbWF0ZVR5cGVzMyIsImNvbmNhdCIsImZvckVhY2giLCJwcm90b3R5cGUiLCJvcHRpb24iLCJjbGVhclRpbWVvdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBLElBSU1BLFdBQVc7RUFDaEIscUJBQVlDLE9BQU8sRUFBRUMsS0FBSyxFQUFFO0lBQUE7SUFDM0IsSUFBSSxDQUFDRCxPQUFPLEdBQUdBLE9BQU87SUFDdEIsSUFBSSxDQUFDRSxTQUFTLEdBQUdDLEdBQUcsQ0FBQ0MsZUFBZSxDQUFDSixPQUFPLENBQUM7SUFDN0MsSUFBSSxDQUFDSyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUcsQ0FBQztJQUNiLElBQUksQ0FBQ0Ms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Q0FBQ3VDLE1BQU0sRUFBRTFDLEtBQUssRUFBRTtFQUM5QyxJQUFHLENBQUNBLEtBQUssRUFBRTtFQUNYMkMsWUFBWSxDQUFDM0MsS0FBSyxDQUFDa0MsS0FBSyxDQUFDO0VBQ3pCLE9BQU8sSUFBSXBDLFdBQVcsQ0FBQzRDLE1BQU0sRUFBRTFDLEtBQUssQ0FBQztBQUN0QyIsImZpbGUiOiIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGNvbnN0IGRlZmF1bHRPcHRpb24gPSB7XHJcbi8vIFx0ZHVyYXRpb246IDMwMCxcclxuLy8gXHR0aW1pbmdGdW5jdGlvbjogJ2xpbmVhcicsXHJcbi8vIFx0ZGVsYXk6IDAsXHJcbi8vIFx0dHJhbnNmb3JtT3JpZ2luOiAnNTAlIDUwJSAwJ1xyXG4vLyB9XHJcblxyXG5cclxuXHJcbmNsYXNzIE1QQW5pbWF0aW9uIHtcclxuXHRjb25zdHJ1Y3RvcihvcHRpb25zLCBfdGhpcykge1xyXG5cdFx0dGhpcy5vcHRpb25zID0gb3B0aW9uc1xyXG5cdFx0dGhpcy5hbmltYXRpb24gPSB1bmkuY3JlYXRlQW5pbWF0aW9uKG9wdGlvbnMpXHJcblx0XHR0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMgPSB7fVxyXG5cdFx0dGhpcy5uZXh0ID0gMFxyXG5cdFx0dGhpcy4kID0gX3RoaXNcclxuXHJcblx0fVxyXG5cclxuXHRfbnZ1ZVB1c2hBbmltYXRlcyh0eXBlLCBhcmdzKSB7XHJcblx0XHRsZXQgYW5pT2JqID0gdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzW3RoaXMubmV4dF1cclxuXHRcdGxldCBzdHlsZXMgPSB7fVxyXG5cdFx0aWYgKCFhbmlPYmopIHtcclxuXHRcdFx0c3R5bGVzID0ge1xyXG5cdFx0XHRcdHN0eWxlczoge30sXHJcblx0XHRcdFx0Y29uZmlnOiB7fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzdHlsZXMgPSBhbmlPYmpcclxuXHRcdH1cclxuXHRcdGlmIChhbmltYXRlVHlwZXMxLmluY2x1ZGVzKHR5cGUpKSB7XHJcblx0XHRcdGlmICghc3R5bGVzLnN0eWxlcy50cmFuc2Zvcm0pIHtcclxuXHRcdFx0XHRzdHlsZXMuc3R5bGVzLnRyYW5zZm9ybSA9ICcnXHJcblx0XHRcdH1cclxuXHRcdFx0bGV0IHVuaXQgPSAnJ1xyXG5cdFx0XHRpZih0eXBlID09PSAncm90YXRlJyl7XHJcblx0XHRcdFx0dW5pdCA9ICdkZWcnXHJcblx0XHRcdH1cclxuXHRcdFx0c3R5bGVzLnN0eWxlcy50cmFuc2Zvcm0gKz0gYCR7dHlwZX0oJHthcmdzK3VuaXR9KSBgXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzdHlsZXMuc3R5bGVzW3R5cGVdID0gYCR7YXJnc31gXHJcblx0XHR9XHJcblx0XHR0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXNbdGhpcy5uZXh0XSA9IHN0eWxlc1xyXG5cdH1cclxuXHRfYW5pbWF0ZVJ1bihzdHlsZXMgPSB7fSwgY29uZmlnID0ge30pIHtcclxuXHRcdGxldCByZWYgPSB0aGlzLiQuJHJlZnNbJ2FuaSddLnJlZlxyXG5cdFx0aWYgKCFyZWYpIHJldHVyblxyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0bnZ1ZUFuaW1hdGlvbi50cmFuc2l0aW9uKHJlZiwge1xyXG5cdFx0XHRcdHN0eWxlcyxcclxuXHRcdFx0XHQuLi5jb25maWdcclxuXHRcdFx0fSwgcmVzID0+IHtcclxuXHRcdFx0XHRyZXNvbHZlKClcclxuXHRcdFx0fSlcclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRfbnZ1ZU5leHRBbmltYXRlKGFuaW1hdGVzLCBzdGVwID0gMCwgZm4pIHtcclxuXHRcdGxldCBvYmogPSBhbmltYXRlc1tzdGVwXVxyXG5cdFx0aWYgKG9iaikge1xyXG5cdFx0XHRsZXQge1xyXG5cdFx0XHRcdHN0eWxlcyxcclxuXHRcdFx0XHRjb25maWdcclxuXHRcdFx0fSA9IG9ialxyXG5cdFx0XHR0aGlzLl9hbmltYXRlUnVuKHN0eWxlcywgY29uZmlnKS50aGVuKCgpID0+IHtcclxuXHRcdFx0XHRzdGVwICs9IDFcclxuXHRcdFx0XHR0aGlzLl9udnVlTmV4dEFuaW1hdGUoYW5pbWF0ZXMsIHN0ZXAsIGZuKVxyXG5cdFx0XHR9KVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzID0ge31cclxuXHRcdFx0dHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIGZuKClcclxuXHRcdFx0dGhpcy5pc0VuZCA9IHRydWVcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHN0ZXAoY29uZmlnID0ge30pIHtcclxuXHJcblx0XHR0aGlzLmFuaW1hdGlvbi5zdGVwKGNvbmZpZylcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHRcdHJldHVybiB0aGlzXHJcblx0fVxyXG5cclxuXHRydW4oZm4pIHtcclxuXHJcblx0XHR0aGlzLiQuYW5pbWF0aW9uRGF0YSA9IHRoaXMuYW5pbWF0aW9uLmV4cG9ydCgpXHJcblx0XHR0aGlzLiQudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIGZuKClcclxuXHRcdH0sIHRoaXMuJC5kdXJhdGlvblRpbWUpXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHR9XHJcbn1cclxuXHJcblxyXG5jb25zdCBhbmltYXRlVHlwZXMxID0gWydtYXRyaXgnLCAnbWF0cml4M2QnLCAncm90YXRlJywgJ3JvdGF0ZTNkJywgJ3JvdGF0ZVgnLCAncm90YXRlWScsICdyb3RhdGVaJywgJ3NjYWxlJywgJ3NjYWxlM2QnLFxyXG5cdCdzY2FsZVgnLCAnc2NhbGVZJywgJ3NjYWxlWicsICdza2V3JywgJ3NrZXdYJywgJ3NrZXdZJywgJ3RyYW5zbGF0ZScsICd0cmFuc2xhdGUzZCcsICd0cmFuc2xhdGVYJywgJ3RyYW5zbGF0ZVknLFxyXG5cdCd0cmFuc2xhdGVaJ1xyXG5dXHJcbmNvbnN0IGFuaW1hdGVUeXBlczIgPSBbJ29wYWNpdHknLCAnYmFja2dyb3VuZENvbG9yJ11cclxuY29uc3QgYW5pbWF0ZVR5cGVzMyA9IFsnd2lkdGgnLCAnaGVpZ2h0JywgJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbSddXHJcbmFuaW1hdGVUeXBlczEuY29uY2F0KGFuaW1hdGVUeXBlczIsIGFuaW1hdGVUeXBlczMpLmZvckVhY2godHlwZSA9PiB7XHJcblx0TVBBbmltYXRpb24ucHJvdG90eXBlW3R5cGVdID0gZnVuY3Rpb24oLi4uYXJncykge1xyXG5cclxuXHRcdHRoaXMuYW5pbWF0aW9uW3R5cGVdKC4uLmFyZ3MpXHJcblxyXG5cclxuXHJcblxyXG5cdFx0cmV0dXJuIHRoaXNcclxuXHR9XHJcbn0pXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5pbWF0aW9uKG9wdGlvbiwgX3RoaXMpIHtcclxuXHRpZighX3RoaXMpIHJldHVyblxyXG5cdGNsZWFyVGltZW91dChfdGhpcy50aW1lcilcclxuXHRyZXR1cm4gbmV3IE1QQW5pbWF0aW9uKG9wdGlvbiwgX3RoaXMpXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///22\n");
 
/***/ }),
/* 23 */
/*!***************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}
module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 24 */
/*!************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3);
function _defineProperties(target, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor) descriptor.writable = true;
    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
  }
}
function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  Object.defineProperty(Constructor, "prototype", {
    writable: false
  });
  return Constructor;
}
module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 25 */
/*!**********************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***!
  \**********************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; });
/* globals __VUE_SSR_CONTEXT__ */
 
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
 
function normalizeComponent (
  scriptExports,
  render,
  staticRenderFns,
  functionalTemplate,
  injectStyles,
  scopeId,
  moduleIdentifier, /* server only */
  shadowMode, /* vue-cli only */
  components, // fixed by xxxxxx auto components
  renderjs // fixed by xxxxxx renderjs
) {
  // Vue.extend constructor export interop
  var options = typeof scriptExports === 'function'
    ? scriptExports.options
    : scriptExports
 
  // fixed by xxxxxx auto components
  if (components) {
    if (!options.components) {
      options.components = {}
    }
    var hasOwn = Object.prototype.hasOwnProperty
    for (var name in components) {
      if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {
        options.components[name] = components[name]
      }
    }
  }
  // fixed by xxxxxx renderjs
  if (renderjs) {
    if(typeof renderjs.beforeCreate === 'function'){
            renderjs.beforeCreate = [renderjs.beforeCreate]
        }
    (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
      this[renderjs.__module] = this
    });
    (options.mixins || (options.mixins = [])).push(renderjs)
  }
 
  // render functions
  if (render) {
    options.render = render
    options.staticRenderFns = staticRenderFns
    options._compiled = true
  }
 
  // functional template
  if (functionalTemplate) {
    options.functional = true
  }
 
  // scopedId
  if (scopeId) {
    options._scopeId = 'data-v-' + scopeId
  }
 
  var hook
  if (moduleIdentifier) { // server build
    hook = function (context) {
      // 2.3 injection
      context =
        context || // cached call
        (this.$vnode && this.$vnode.ssrContext) || // stateful
        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
      // 2.2 with runInNewContext: true
      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
        context = __VUE_SSR_CONTEXT__
      }
      // inject component styles
      if (injectStyles) {
        injectStyles.call(this, context)
      }
      // register component module identifier for async chunk inferrence
      if (context && context._registeredComponents) {
        context._registeredComponents.add(moduleIdentifier)
      }
    }
    // used by ssr in case component is cached and beforeCreate
    // never gets called
    options._ssrRegister = hook
  } else if (injectStyles) {
    hook = shadowMode
      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
      : injectStyles
  }
 
  if (hook) {
    if (options.functional) {
      // for template-only hot-reload because in that case the render fn doesn't
      // go through the normalizer
      options._injectStyles = hook
      // register for functioal component in vue file
      var originalRender = options.render
      options.render = function renderWithStyleInjection (h, context) {
        hook.call(context)
        return originalRender(h, context)
      }
    } else {
      // inject component registration as beforeCreate hook
      var existing = options.beforeCreate
      options.beforeCreate = existing
        ? [].concat(existing, hook)
        : [hook]
    }
  }
 
  return {
    exports: scriptExports,
    options: options
  }
}
 
 
/***/ }),
/* 26 */
/*!**********************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/components/y-box/y-box.vue ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./y-box.vue?vue&type=template&id=799f6118& */ 27);\n/* harmony import */ var _y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./y-box.vue?vue&type=script&lang=js& */ 29);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"components/y-box/y-box.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0g7QUFDbEg7QUFDeUQ7QUFDTDs7O0FBR3BEO0FBQzZLO0FBQzdLLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLDJFQUFNO0FBQ1IsRUFBRSxnRkFBTTtBQUNSLEVBQUUseUZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsb0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3ktYm94LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OTlmNjExOCZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3ktYm94LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4veS1ib3gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJjb21wb25lbnRzL3ktYm94L3ktYm94LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///26\n");
 
/***/ }),
/* 27 */
/*!*****************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/components/y-box/y-box.vue?vue&type=template&id=799f6118& ***!
  \*****************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./y-box.vue?vue&type=template&id=799f6118& */ 28);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_template_id_799f6118___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 28 */
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/components/y-box/y-box.vue?vue&type=template&id=799f6118& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "box"), attrs: { _i: 0 } },
    [
      _c("view", {
        staticClass: _vm._$s(1, "sc", "box-border box-border1"),
        attrs: { _i: 1 },
      }),
      _c("view", {
        staticClass: _vm._$s(2, "sc", "box-border box-border2"),
        attrs: { _i: 2 },
      }),
      _c("view", {
        staticClass: _vm._$s(3, "sc", "box-border box-border3"),
        attrs: { _i: 3 },
      }),
      _c("view", {
        staticClass: _vm._$s(4, "sc", "box-border box-border4"),
        attrs: { _i: 4 },
      }),
      _c(
        "view",
        { staticClass: _vm._$s(5, "sc", "box-main"), attrs: { _i: 5 } },
        [_vm._t("default", null, { _i: 6 })],
        2
      ),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 29 */
/*!***********************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/components/y-box/y-box.vue?vue&type=script&lang=js& ***!
  \***********************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./y-box.vue?vue&type=script&lang=js& */ 30);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_y_box_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlrQixDQUFnQiwya0JBQUcsRUFBQyIsImZpbGUiOiIyOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi95LWJveC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi95LWJveC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///29\n");
 
/***/ }),
/* 30 */
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/components/y-box/y-box.vue?vue&type=script&lang=js& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  props: {\n    title: {\n      type: [String, Number],\n      default: '标题'\n    }\n  },\n  computed: {\n    titleText: function titleText() {\n      return this.title;\n    }\n  },\n  data: function data() {\n    return {};\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vY29tcG9uZW50cy95LWJveC95LWJveC52dWUiXSwibmFtZXMiOlsicHJvcHMiLCJ0aXRsZSIsInR5cGUiLCJkZWZhdWx0IiwiY29tcHV0ZWQiLCJ0aXRsZVRleHQiLCJkYXRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFhQTtFQUNBQTtJQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFDQUM7TUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQSxRQUVBO0VBQ0E7QUFFQTtBQUFBIiwiZmlsZSI6IjMwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiYm94XCI+XHJcblx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjFcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjNcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjRcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cImJveC1tYWluXCI+XHJcblx0XHRcdDxzbG90Lz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdHByb3BzOiB7XHJcblx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0dHlwZTogW1N0cmluZyxOdW1iZXJdLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICfmoIfpopgnXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0dGl0bGVUZXh0KCkge1xyXG5cdFx0XHRcdHJldHVybiB0aGlzLnRpdGxlIFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0XHRcclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG5cdC5ib3gge1xyXG5cdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDAuMnZoKTtcclxuXHRcdGhlaWdodDogY2FsYygxMDAlIC0gMC4ydmgpO1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0Ym9yZGVyOiAwLjF2aCBzb2xpZCByZ2JhKDIwLCA4MCwgMTM2LCAxKTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHR9XHJcblx0LmJveC1tYWluIHtcclxuXHRcdHdpZHRoOiA5NiU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMzFjNGM0OyAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuXHR9XHJcblx0LmJveC1ib3JkZXIge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzRDRDk2NDsgKi9cclxuXHRcdHdpZHRoOiAxLjV2aDtcclxuXHRcdGhlaWdodDogMS41dmg7XHJcblx0fVxyXG5cdC5ib3gtYm9yZGVyMSB7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRsZWZ0OiAwO1xyXG5cdFx0Ym9yZGVyLWxlZnQ6IDAuMXZoIHNvbGlkICMzMWM0YzQ7XHJcblx0XHRib3JkZXItdG9wOiAwLjF2aCBzb2xpZCAjMzFjNGM0O1xyXG5cdH1cclxuXHQuYm94LWJvcmRlcjIge1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0cmlnaHQ6IDA7XHJcblx0XHRib3JkZXItcmlnaHQ6IDAuMXZoIHNvbGlkICMzMWM0YzQ7XHJcblx0XHRib3JkZXItdG9wOiAwLjF2aCBzb2xpZCAjMzFjNGM0O1xyXG5cdH1cclxuXHQuYm94LWJvcmRlcjMge1xyXG5cdFx0Ym90dG9tOiAwO1xyXG5cdFx0bGVmdDogMDtcclxuXHRcdGJvcmRlci1ib3R0b206IDAuMXZoIHNvbGlkICMzMWM0YzQ7XHJcblx0XHRib3JkZXItbGVmdDogMC4xdmggc29saWQgIzMxYzRjNDtcclxuXHR9XHJcblx0LmJveC1ib3JkZXI0IHtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdHJpZ2h0OiAwO1xyXG5cdFx0Ym9yZGVyLXJpZ2h0OiAwLjF2aCBzb2xpZCAjMzFjNGM0O1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogMC4xdmggc29saWQgIzMxYzRjNDtcclxuXHR9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n");
 
/***/ }),
/* 31 */
/*!****************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue ***!
  \****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-popup.vue?vue&type=template&id=7c43d41b& */ 32);\n/* harmony import */ var _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-popup.vue?vue&type=script&lang=js& */ 34);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-popup/components/uni-popup/uni-popup.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0g7QUFDdEg7QUFDNkQ7QUFDTDs7O0FBR3hEO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLCtFQUFNO0FBQ1IsRUFBRSxvRkFBTTtBQUNSLEVBQUUsNkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsd0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1wb3B1cC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2M0M2Q0MWImXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi91bmktcG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktcG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy91bmktcG9wdXAvY29tcG9uZW50cy91bmktcG9wdXAvdW5pLXBvcHVwLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n");
 
/***/ }),
/* 32 */
/*!***********************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=template&id=7c43d41b& ***!
  \***********************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup.vue?vue&type=template&id=7c43d41b& */ 33);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_template_id_7c43d41b___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 33 */
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=template&id=7c43d41b& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
try {
  components = {
    uniTransition:
      __webpack_require__(/*! @/uni_modules/uni-transition/components/uni-transition/uni-transition.vue */ 10)
        .default,
  }
} catch (e) {
  if (
    e.message.indexOf("Cannot find module") !== -1 &&
    e.message.indexOf(".vue") !== -1
  ) {
    console.error(e.message)
    console.error("1. 排查组件名称拼写是否正确")
    console.error(
      "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
    )
    console.error(
      "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
    )
  } else {
    throw e
  }
}
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _vm._$s(0, "i", _vm.showPopup)
    ? _c(
        "view",
        {
          staticClass: _vm._$s(0, "sc", "uni-popup"),
          class: _vm._$s(0, "c", [
            _vm.popupstyle,
            _vm.isDesktop ? "fixforpc-z-index" : "",
          ]),
          attrs: { _i: 0 },
          on: {
            touchmove: function ($event) {
              $event.stopPropagation()
              $event.preventDefault()
              return _vm.clear($event)
            },
          },
        },
        [
          _c(
            "view",
            { attrs: { _i: 1 }, on: { touchstart: _vm.touchstart } },
            [
              _vm._$s(2, "i", _vm.maskShow)
                ? _c("uni-transition", {
                    key: "1",
                    attrs: {
                      name: "mask",
                      "mode-class": "fade",
                      styles: _vm.maskClass,
                      duration: _vm.duration,
                      show: _vm.showTrans,
                      _i: 2,
                    },
                    on: { click: _vm.onTap },
                  })
                : _vm._e(),
              _c(
                "uni-transition",
                {
                  key: "2",
                  attrs: {
                    "mode-class": _vm.ani,
                    name: "content",
                    styles: _vm.transClass,
                    duration: _vm.duration,
                    show: _vm.showTrans,
                    _i: 3,
                  },
                  on: { click: _vm.onTap },
                },
                [
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(4, "sc", "uni-popup__wrapper"),
                      class: _vm._$s(4, "c", [_vm.popupstyle]),
                      style: _vm._$s(4, "s", { backgroundColor: _vm.bg }),
                      attrs: { _i: 4 },
                      on: { click: _vm.clear },
                    },
                    [_vm._t("default", null, { _i: 5 })],
                    2
                  ),
                ]
              ),
            ],
            1
          ),
        ]
      )
    : _vm._e()
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 34 */
/*!*****************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup.vue?vue&type=script&lang=js& */ 35);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFtQixDQUFnQiwra0JBQUcsRUFBQyIsImZpbGUiOiIzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktcG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLXBvcHVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///34\n");
 
/***/ }),
/* 35 */
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?vue&type=script&lang=js& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/**\r\n * PopUp 弹出层\r\n * @description 弹出层组件,为了解决遮罩弹层的问题\r\n * @tutorial https://ext.dcloud.net.cn/plugin?id=329\r\n * @property {String} type = [top|center|bottom|left|right|message|dialog|share] 弹出方式\r\n * \t@value top 顶部弹出\r\n * \t@value center 中间弹出\r\n * \t@value bottom 底部弹出\r\n * \t@value left\t\t左侧弹出\r\n * \t@value right  右侧弹出\r\n * \t@value message 消息提示\r\n * \t@value dialog 对话框\r\n * \t@value share 底部分享示例\r\n * @property {Boolean} animation = [true|false] 是否开启动画\r\n * @property {Boolean} maskClick = [true|false] 蒙版点击是否关闭弹窗(废弃)\r\n * @property {Boolean} isMaskClick = [true|false] 蒙版点击是否关闭弹窗\r\n * @property {String}  backgroundColor 主窗口背景色\r\n * @property {String}  maskBackgroundColor 蒙版颜色\r\n * @property {Boolean} safeArea\t\t   是否适配底部安全区\r\n * @event {Function} change 打开关闭弹窗触发,e={show: false}\r\n * @event {Function} maskClick 点击遮罩触发\r\n */\nvar _default = {\n  name: 'uniPopup',\n  components: {},\n  emits: ['change', 'maskClick'],\n  props: {\n    // 开启动画\n    animation: {\n      type: Boolean,\n      default: true\n    },\n    // 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层\n    // message: 消息提示 ; dialog : 对话框\n    type: {\n      type: String,\n      default: 'center'\n    },\n    // maskClick\n    isMaskClick: {\n      type: Boolean,\n      default: null\n    },\n    // TODO 2 个版本后废弃属性 ,使用 isMaskClick\n    maskClick: {\n      type: Boolean,\n      default: null\n    },\n    backgroundColor: {\n      type: String,\n      default: 'none'\n    },\n    safeArea: {\n      type: Boolean,\n      default: true\n    },\n    maskBackgroundColor: {\n      type: String,\n      default: 'rgba(0, 0, 0, 0.4)'\n    }\n  },\n  watch: {\n    /**\r\n     * 监听type类型\r\n     */\n    type: {\n      handler: function handler(type) {\n        if (!this.config[type]) return;\n        this[this.config[type]](true);\n      },\n      immediate: true\n    },\n    isDesktop: {\n      handler: function handler(newVal) {\n        if (!this.config[newVal]) return;\n        this[this.config[this.type]](true);\n      },\n      immediate: true\n    },\n    /**\r\n     * 监听遮罩是否可点击\r\n     * @param {Object} val\r\n     */\n    maskClick: {\n      handler: function handler(val) {\n        this.mkclick = val;\n      },\n      immediate: true\n    },\n    isMaskClick: {\n      handler: function handler(val) {\n        this.mkclick = val;\n      },\n      immediate: true\n    },\n    // H5 下禁止底部滚动\n    showPopup: function showPopup(show) {}\n  },\n  data: function data() {\n    return {\n      duration: 300,\n      ani: [],\n      showPopup: false,\n      showTrans: false,\n      popupWidth: 0,\n      popupHeight: 0,\n      config: {\n        top: 'top',\n        bottom: 'bottom',\n        center: 'center',\n        left: 'left',\n        right: 'right',\n        message: 'top',\n        dialog: 'center',\n        share: 'bottom'\n      },\n      maskClass: {\n        position: 'fixed',\n        bottom: 0,\n        top: 0,\n        left: 0,\n        right: 0,\n        backgroundColor: 'rgba(0, 0, 0, 0.4)'\n      },\n      transClass: {\n        position: 'fixed',\n        left: 0,\n        right: 0\n      },\n      maskShow: true,\n      mkclick: true,\n      popupstyle: this.isDesktop ? 'fixforpc-top' : 'top'\n    };\n  },\n  computed: {\n    isDesktop: function isDesktop() {\n      return this.popupWidth >= 500 && this.popupHeight >= 500;\n    },\n    bg: function bg() {\n      if (this.backgroundColor === '' || this.backgroundColor === 'none') {\n        return 'transparent';\n      }\n      return this.backgroundColor;\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n    var fixSize = function fixSize() {\n      var _uni$getSystemInfoSyn = uni.getSystemInfoSync(),\n        windowWidth = _uni$getSystemInfoSyn.windowWidth,\n        windowHeight = _uni$getSystemInfoSyn.windowHeight,\n        windowTop = _uni$getSystemInfoSyn.windowTop,\n        safeArea = _uni$getSystemInfoSyn.safeArea,\n        screenHeight = _uni$getSystemInfoSyn.screenHeight,\n        safeAreaInsets = _uni$getSystemInfoSyn.safeAreaInsets;\n      _this.popupWidth = windowWidth;\n      _this.popupHeight = windowHeight + windowTop;\n      // TODO fix by mehaotian 是否适配底部安全区 ,目前微信ios 、和 app ios 计算有差异,需要框架修复\n      if (safeArea) {\n        _this.safeAreaInsets = safeAreaInsets.bottom;\n      } else {\n        _this.safeAreaInsets = 0;\n      }\n    };\n    fixSize();\n  },\n  created: function created() {\n    // this.mkclick =  this.isMaskClick || this.maskClick\n    if (this.isMaskClick === null && this.maskClick === null) {\n      this.mkclick = true;\n    } else {\n      this.mkclick = this.isMaskClick !== null ? this.isMaskClick : this.maskClick;\n    }\n    if (this.animation) {\n      this.duration = 300;\n    } else {\n      this.duration = 0;\n    }\n    // TODO 处理 message 组件生命周期异常的问题\n    this.messageChild = null;\n    // TODO 解决头条冒泡的问题\n    this.clearPropagation = false;\n    this.maskClass.backgroundColor = this.maskBackgroundColor;\n  },\n  methods: {\n    /**\r\n     * 公用方法,不显示遮罩层\r\n     */\n    closeMask: function closeMask() {\n      this.maskShow = false;\n    },\n    /**\r\n     * 公用方法,遮罩层禁止点击\r\n     */\n    disableMask: function disableMask() {\n      this.mkclick = false;\n    },\n    // TODO nvue 取消冒泡\n    clear: function clear(e) {\n      e.stopPropagation();\n      this.clearPropagation = true;\n    },\n    open: function open(direction) {\n      var innerType = ['top', 'center', 'bottom', 'left', 'right', 'message', 'dialog', 'share'];\n      if (!(direction && innerType.indexOf(direction) !== -1)) {\n        direction = this.type;\n      }\n      if (!this.config[direction]) {\n        __f__(\"error\", '缺少类型:', direction, \" at uni_modules/uni-popup/components/uni-popup/uni-popup.vue:246\");\n        return;\n      }\n      this[this.config[direction]]();\n      this.$emit('change', {\n        show: true,\n        type: direction\n      });\n    },\n    close: function close(type) {\n      var _this2 = this;\n      this.showTrans = false;\n      this.$emit('change', {\n        show: false,\n        type: this.type\n      });\n      clearTimeout(this.timer);\n      // // 自定义关闭事件\n      // this.customOpen && this.customClose()\n      this.timer = setTimeout(function () {\n        _this2.showPopup = false;\n      }, 300);\n    },\n    // TODO 处理冒泡事件,头条的冒泡事件有问题 ,先这样兼容\n    touchstart: function touchstart() {\n      this.clearPropagation = false;\n    },\n    onTap: function onTap() {\n      if (this.clearPropagation) {\n        // fix by mehaotian 兼容 nvue\n        this.clearPropagation = false;\n        return;\n      }\n      this.$emit('maskClick');\n      if (!this.mkclick) return;\n      this.close();\n    },\n    /**\r\n     * 顶部弹出样式处理\r\n     */\n    top: function top(type) {\n      var _this3 = this;\n      this.popupstyle = this.isDesktop ? 'fixforpc-top' : 'top';\n      this.ani = ['slide-top'];\n      this.transClass = {\n        position: 'fixed',\n        left: 0,\n        right: 0,\n        backgroundColor: this.bg\n      };\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n      this.$nextTick(function () {\n        if (_this3.messageChild && _this3.type === 'message') {\n          _this3.messageChild.timerClose();\n        }\n      });\n    },\n    /**\r\n     * 底部弹出样式处理\r\n     */\n    bottom: function bottom(type) {\n      this.popupstyle = 'bottom';\n      this.ani = ['slide-bottom'];\n      this.transClass = {\n        position: 'fixed',\n        left: 0,\n        right: 0,\n        bottom: 0,\n        paddingBottom: this.safeAreaInsets + 'px',\n        backgroundColor: this.bg\n      };\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    },\n    /**\r\n     * 中间弹出样式处理\r\n     */\n    center: function center(type) {\n      this.popupstyle = 'center';\n      this.ani = ['zoom-out', 'fade'];\n      this.transClass = {\n        position: 'fixed',\n        display: 'flex',\n        flexDirection: 'column',\n        bottom: 0,\n        left: 0,\n        right: 0,\n        top: 0,\n        justifyContent: 'center',\n        alignItems: 'center'\n      };\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    },\n    left: function left(type) {\n      this.popupstyle = 'left';\n      this.ani = ['slide-left'];\n      this.transClass = {\n        position: 'fixed',\n        left: 0,\n        bottom: 0,\n        top: 0,\n        backgroundColor: this.bg,\n        display: 'flex',\n        flexDirection: 'column'\n      };\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    },\n    right: function right(type) {\n      this.popupstyle = 'right';\n      this.ani = ['slide-right'];\n      this.transClass = {\n        position: 'fixed',\n        bottom: 0,\n        right: 0,\n        top: 0,\n        backgroundColor: this.bg,\n        display: 'flex',\n        flexDirection: 'column'\n      };\n      // TODO 兼容 type 属性 ,后续会废弃\n      if (type) return;\n      this.showPopup = true;\n      this.showTrans = true;\n    }\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwL3VuaS1wb3B1cC52dWUiXSwibmFtZXMiOlsibmFtZSIsImNvbXBvbmVudHMiLCJlbWl0cyIsInByb3BzIiwiYW5pbWF0aW9uIiwidHlwZSIsImRlZmF1bHQiLCJpc01hc2tDbGljayIsIm1hc2tDbGljayIsImJhY2tncm91bmRDb2xvciIsInNhZmVBcmVhIiwibWFza0JhY2tncm91bmRDb2xvciIsIndhdGNoIiwiaGFuZGxlciIsImltbWVkaWF0ZSIsImlzRGVza3RvcCIsInNob3dQb3B1cCIsImRhdGEiLCJkdXJhdGlvbiIsImFuaSIsInNob3dUcmFucyIsInBvcHVwV2lkdGgiLCJwb3B1cEhlaWdodCIsImNvbmZpZyIsInRvcCIsImJvdHRvbSIsImNlbnRlciIsImxlZnQiLCJyaWdodCIsIm1lc3NhZ2UiLCJkaWFsb2ciLCJzaGFyZSIsIm1hc2tDbGFzcyIsInBvc2l0aW9uIiwidHJhbnNDbGFzcyIsIm1hc2tTaG93IiwibWtjbGljayIsInBvcHVwc3R5bGUiLCJjb21wdXRlZCIsImJnIiwibW91bnRlZCIsIndpbmRvd1dpZHRoIiwid2luZG93SGVpZ2h0Iiwid2luZG93VG9wIiwic2NyZWVuSGVpZ2h0Iiwic2FmZUFyZWFJbnNldHMiLCJmaXhTaXplIiwiY3JlYXRlZCIsIm1ldGhvZHMiLCJjbG9zZU1hc2siLCJkaXNhYmxlTWFzayIsImNsZWFyIiwiZSIsIm9wZW4iLCJkaXJlY3Rpb24iLCJzaG93IiwiY2xvc2UiLCJjbGVhclRpbWVvdXQiLCJ0b3VjaHN0YXJ0Iiwib25UYXAiLCJwYWRkaW5nQm90dG9tIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBckJBLGVBdUJBO0VBQ0FBO0VBQ0FDLGFBSUE7RUFDQUM7RUFDQUM7SUFDQTtJQUNBQztNQUNBQztNQUNBQztJQUNBO0lBQ0E7SUFDQTtJQUNBRDtNQUNBQTtNQUNBQztJQUNBO0lBQ0E7SUFDQUM7TUFDQUY7TUFDQUM7SUFDQTtJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7SUFDQUc7TUFDQUo7TUFDQUM7SUFDQTtJQUNBSTtNQUNBTDtNQUNBQztJQUNBO0lBQ0FLO01BQ0FOO01BQ0FDO0lBQ0E7RUFDQTtFQUVBTTtJQUNBO0FBQ0E7QUFDQTtJQUNBUDtNQUNBUTtRQUNBO1FBQ0E7TUFDQTtNQUNBQztJQUNBO0lBQ0FDO01BQ0FGO1FBQ0E7UUFDQTtNQUNBO01BQ0FDO0lBQ0E7SUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNBTjtNQUNBSztRQUNBO01BQ0E7TUFDQUM7SUFDQTtJQUNBUDtNQUNBTTtRQUNBO01BQ0E7TUFDQUM7SUFDQTtJQUNBO0lBQ0FFLHFDQUtBO0VBQ0E7RUFDQUM7SUFDQTtNQUNBQztNQUNBQztNQUNBSDtNQUNBSTtNQUNBQztNQUNBQztNQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztNQUNBO01BQ0FDO1FBQ0FDO1FBQ0FSO1FBQ0FEO1FBQ0FHO1FBQ0FDO1FBQ0FuQjtNQUNBO01BQ0F5QjtRQUNBRDtRQUNBTjtRQUNBQztNQUNBO01BQ0FPO01BQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBdkI7TUFDQTtJQUNBO0lBQ0F3QjtNQUNBO1FBQ0E7TUFDQTtNQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUFBO0lBQ0E7TUFDQTtRQUFBQztRQUFBQztRQUFBQztRQUFBakM7UUFBQWtDO1FBQUFDO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFLQTtNQUVBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO0VBT0E7RUFDQUM7SUFDQTtJQUNBO01BQ0E7SUFDQTtNQUNBO0lBQ0E7SUFDQTtNQUNBO0lBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7QUFDQTtBQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBO0FBQ0E7QUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUVBQztNQUVBO0lBQ0E7SUFFQUM7TUFDQTtNQUNBO1FBQ0FDO01BQ0E7TUFDQTtRQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQUM7UUFDQWxEO01BQ0E7SUFDQTtJQUNBbUQ7TUFBQTtNQUNBO01BQ0E7UUFDQUQ7UUFDQWxEO01BQ0E7TUFDQW9EO01BQ0E7TUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBRUFDO01BQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0FuQztNQUFBO01BQ0E7TUFDQTtNQUNBO1FBQ0FTO1FBQ0FOO1FBQ0FDO1FBQ0FuQjtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQTtBQUNBO0FBQ0E7SUFDQWdCO01BQ0E7TUFDQTtNQUNBO1FBQ0FRO1FBQ0FOO1FBQ0FDO1FBQ0FIO1FBQ0FtQztRQUNBbkQ7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQTtBQUNBO0FBQ0E7SUFDQWlCO01BQ0E7TUFDQTtNQUNBO1FBQ0FPO1FBRUE0QjtRQUNBQztRQUVBckM7UUFDQUU7UUFDQUM7UUFDQUo7UUFDQXVDO1FBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FyQztNQUNBO01BQ0E7TUFDQTtRQUNBTTtRQUNBTjtRQUNBRjtRQUNBRDtRQUNBZjtRQUVBb0Q7UUFDQUM7TUFFQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQWxDO01BQ0E7TUFDQTtNQUNBO1FBQ0FLO1FBQ0FSO1FBQ0FHO1FBQ0FKO1FBQ0FmO1FBRUFvRDtRQUNBQztNQUVBO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiIzNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyB2LWlmPVwic2hvd1BvcHVwXCIgY2xhc3M9XCJ1bmktcG9wdXBcIiA6Y2xhc3M9XCJbcG9wdXBzdHlsZSwgaXNEZXNrdG9wID8gJ2ZpeGZvcnBjLXotaW5kZXgnIDogJyddXCIgQHRvdWNobW92ZS5zdG9wLnByZXZlbnQ9XCJjbGVhclwiPlxyXG5cdFx0PHZpZXcgQHRvdWNoc3RhcnQ9XCJ0b3VjaHN0YXJ0XCIgPlxyXG5cdFx0XHQ8dW5pLXRyYW5zaXRpb24ga2V5PVwiMVwiIHYtaWY9XCJtYXNrU2hvd1wiIG5hbWU9XCJtYXNrXCIgbW9kZS1jbGFzcz1cImZhZGVcIiA6c3R5bGVzPVwibWFza0NsYXNzXCIgOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6c2hvdz1cInNob3dUcmFuc1wiIEBjbGljaz1cIm9uVGFwXCIgLz5cclxuXHRcdFx0PHVuaS10cmFuc2l0aW9uIGtleT1cIjJcIiA6bW9kZS1jbGFzcz1cImFuaVwiIG5hbWU9XCJjb250ZW50XCIgOnN0eWxlcz1cInRyYW5zQ2xhc3NcIiA6ZHVyYXRpb249XCJkdXJhdGlvblwiIDpzaG93PVwic2hvd1RyYW5zXCIgQGNsaWNrPVwib25UYXBcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1wb3B1cF9fd3JhcHBlclwiIDpzdHlsZT1cInsgYmFja2dyb3VuZENvbG9yOiBiZyB9XCIgOmNsYXNzPVwiW3BvcHVwc3R5bGVdXCIgQGNsaWNrPVwiY2xlYXJcIj48c2xvdCAvPjwvdmlldz5cclxuXHRcdFx0PC91bmktdHJhbnNpdGlvbj5cclxuXHRcdDwvdmlldz5cclxuXHRcdDwhLS0gI2lmZGVmIEg1IC0tPlxyXG5cdFx0PGtleXByZXNzIHYtaWY9XCJtYXNrU2hvd1wiIEBlc2M9XCJvblRhcFwiIC8+XHJcblx0XHQ8IS0tICNlbmRpZiAtLT5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG4vLyAjaWZkZWYgSDVcclxuaW1wb3J0IGtleXByZXNzIGZyb20gJy4va2V5cHJlc3MuanMnXHJcbi8vICNlbmRpZlxyXG5cclxuLyoqXHJcbiAqIFBvcFVwIOW8ueWHuuWxglxyXG4gKiBAZGVzY3JpcHRpb24g5by55Ye65bGC57uE5Lu277yM5Li65LqG6Kej5Yaz6YGu572p5by55bGC55qE6Zeu6aKYXHJcbiAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0zMjlcclxuICogQHByb3BlcnR5IHtTdHJpbmd9IHR5cGUgPSBbdG9wfGNlbnRlcnxib3R0b218bGVmdHxyaWdodHxtZXNzYWdlfGRpYWxvZ3xzaGFyZV0g5by55Ye65pa55byPXHJcbiAqIFx0QHZhbHVlIHRvcCDpobbpg6jlvLnlh7pcclxuICogXHRAdmFsdWUgY2VudGVyIOS4remXtOW8ueWHulxyXG4gKiBcdEB2YWx1ZSBib3R0b20g5bqV6YOo5by55Ye6XHJcbiAqIFx0QHZhbHVlIGxlZnRcdFx05bem5L6n5by55Ye6XHJcbiAqIFx0QHZhbHVlIHJpZ2h0ICDlj7PkvqflvLnlh7pcclxuICogXHRAdmFsdWUgbWVzc2FnZSDmtojmga/mj5DnpLpcclxuICogXHRAdmFsdWUgZGlhbG9nIOWvueivneahhlxyXG4gKiBcdEB2YWx1ZSBzaGFyZSDlupXpg6jliIbkuqvnpLrkvotcclxuICogQHByb3BlcnR5IHtCb29sZWFufSBhbmltYXRpb24gPSBbdHJ1ZXxmYWxzZV0g5piv5ZCm5byA5ZCv5Yqo55S7XHJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gbWFza0NsaWNrID0gW3RydWV8ZmFsc2VdIOiSmeeJiOeCueWHu+aYr+WQpuWFs+mXreW8ueeqlyjlup/lvIMpXHJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gaXNNYXNrQ2xpY2sgPSBbdHJ1ZXxmYWxzZV0g6JKZ54mI54K55Ye75piv5ZCm5YWz6Zet5by556qXXHJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSAgYmFja2dyb3VuZENvbG9yIOS4u+eql+WPo+iDjOaZr+iJslxyXG4gKiBAcHJvcGVydHkge1N0cmluZ30gIG1hc2tCYWNrZ3JvdW5kQ29sb3Ig6JKZ54mI6aKc6ImyXHJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gc2FmZUFyZWFcdFx0ICAg5piv5ZCm6YCC6YWN5bqV6YOo5a6J5YWo5Yy6XHJcbiAqIEBldmVudCB7RnVuY3Rpb259IGNoYW5nZSDmiZPlvIDlhbPpl63lvLnnqpfop6blj5HvvIxlPXtzaG93OiBmYWxzZX1cclxuICogQGV2ZW50IHtGdW5jdGlvbn0gbWFza0NsaWNrIOeCueWHu+mBrue9qeinpuWPkVxyXG4gKi9cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuXHRuYW1lOiAndW5pUG9wdXAnLFxyXG5cdGNvbXBvbmVudHM6IHtcclxuXHRcdC8vICNpZmRlZiBINVxyXG5cdFx0a2V5cHJlc3NcclxuXHRcdC8vICNlbmRpZlxyXG5cdH0sXHJcblx0ZW1pdHM6WydjaGFuZ2UnLCdtYXNrQ2xpY2snXSxcclxuXHRwcm9wczoge1xyXG5cdFx0Ly8g5byA5ZCv5Yqo55S7XHJcblx0XHRhbmltYXRpb246IHtcclxuXHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxyXG5cdFx0fSxcclxuXHRcdC8vIOW8ueWHuuWxguexu+Wei++8jOWPr+mAieWAvO+8jHRvcDog6aG26YOo5by55Ye65bGC77ybYm90dG9t77ya5bqV6YOo5by55Ye65bGC77ybY2VudGVy77ya5YWo5bGP5by55Ye65bGCXHJcblx0XHQvLyBtZXNzYWdlOiDmtojmga/mj5DnpLogOyBkaWFsb2cgOiDlr7nor53moYZcclxuXHRcdHR5cGU6IHtcclxuXHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRkZWZhdWx0OiAnY2VudGVyJ1xyXG5cdFx0fSxcclxuXHRcdC8vIG1hc2tDbGlja1xyXG5cdFx0aXNNYXNrQ2xpY2s6IHtcclxuXHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0ZGVmYXVsdDogbnVsbFxyXG5cdFx0fSxcclxuXHRcdC8vIFRPRE8gMiDkuKrniYjmnKzlkI7lup/lvIPlsZ7mgKcg77yM5L2/55SoIGlzTWFza0NsaWNrXHJcblx0XHRtYXNrQ2xpY2s6IHtcclxuXHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0ZGVmYXVsdDogbnVsbFxyXG5cdFx0fSxcclxuXHRcdGJhY2tncm91bmRDb2xvcjoge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGRlZmF1bHQ6ICdub25lJ1xyXG5cdFx0fSxcclxuXHRcdHNhZmVBcmVhOntcclxuXHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxyXG5cdFx0fSxcclxuXHRcdG1hc2tCYWNrZ3JvdW5kQ29sb3I6IHtcclxuXHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRkZWZhdWx0OiAncmdiYSgwLCAwLCAwLCAwLjQpJ1xyXG5cdFx0fSxcclxuXHR9LFxyXG5cclxuXHR3YXRjaDoge1xyXG5cdFx0LyoqXHJcblx0XHQgKiDnm5HlkKx0eXBl57G75Z6LXHJcblx0XHQgKi9cclxuXHRcdHR5cGU6IHtcclxuXHRcdFx0aGFuZGxlcjogZnVuY3Rpb24odHlwZSkge1xyXG5cdFx0XHRcdGlmICghdGhpcy5jb25maWdbdHlwZV0pIHJldHVyblxyXG5cdFx0XHRcdHRoaXNbdGhpcy5jb25maWdbdHlwZV1dKHRydWUpXHJcblx0XHRcdH0sXHJcblx0XHRcdGltbWVkaWF0ZTogdHJ1ZVxyXG5cdFx0fSxcclxuXHRcdGlzRGVza3RvcDoge1xyXG5cdFx0XHRoYW5kbGVyOiBmdW5jdGlvbihuZXdWYWwpIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMuY29uZmlnW25ld1ZhbF0pIHJldHVyblxyXG5cdFx0XHRcdHRoaXNbdGhpcy5jb25maWdbdGhpcy50eXBlXV0odHJ1ZSlcclxuXHRcdFx0fSxcclxuXHRcdFx0aW1tZWRpYXRlOiB0cnVlXHJcblx0XHR9LFxyXG5cdFx0LyoqXHJcblx0XHQgKiDnm5HlkKzpga7nvanmmK/lkKblj6/ngrnlh7tcclxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSB2YWxcclxuXHRcdCAqL1xyXG5cdFx0bWFza0NsaWNrOiB7XHJcblx0XHRcdGhhbmRsZXI6IGZ1bmN0aW9uKHZhbCkge1xyXG5cdFx0XHRcdHRoaXMubWtjbGljayA9IHZhbFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpbW1lZGlhdGU6IHRydWVcclxuXHRcdH0sXHJcblx0XHRpc01hc2tDbGljazoge1xyXG5cdFx0XHRoYW5kbGVyOiBmdW5jdGlvbih2YWwpIHtcclxuXHRcdFx0XHR0aGlzLm1rY2xpY2sgPSB2YWxcclxuXHRcdFx0fSxcclxuXHRcdFx0aW1tZWRpYXRlOiB0cnVlXHJcblx0XHR9LFxyXG5cdFx0Ly8gSDUg5LiL56aB5q2i5bqV6YOo5rua5YqoXHJcblx0XHRzaG93UG9wdXAoc2hvdykge1xyXG5cdFx0XHQvLyAjaWZkZWYgSDVcclxuXHRcdFx0Ly8gZml4IGJ5IG1laGFvdGlhbiDlpITnkIYgaDUg5rua5Yqo56m/6YCP55qE6Zeu6aKYXHJcblx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0uc3R5bGUub3ZlcmZsb3cgPSBzaG93ID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHR9XHJcblx0fSxcclxuXHRkYXRhKCkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0ZHVyYXRpb246IDMwMCxcclxuXHRcdFx0YW5pOiBbXSxcclxuXHRcdFx0c2hvd1BvcHVwOiBmYWxzZSxcclxuXHRcdFx0c2hvd1RyYW5zOiBmYWxzZSxcclxuXHRcdFx0cG9wdXBXaWR0aDogMCxcclxuXHRcdFx0cG9wdXBIZWlnaHQ6IDAsXHJcblx0XHRcdGNvbmZpZzoge1xyXG5cdFx0XHRcdHRvcDogJ3RvcCcsXHJcblx0XHRcdFx0Ym90dG9tOiAnYm90dG9tJyxcclxuXHRcdFx0XHRjZW50ZXI6ICdjZW50ZXInLFxyXG5cdFx0XHRcdGxlZnQ6ICdsZWZ0JyxcclxuXHRcdFx0XHRyaWdodDogJ3JpZ2h0JyxcclxuXHRcdFx0XHRtZXNzYWdlOiAndG9wJyxcclxuXHRcdFx0XHRkaWFsb2c6ICdjZW50ZXInLFxyXG5cdFx0XHRcdHNoYXJlOiAnYm90dG9tJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRtYXNrQ2xhc3M6IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcclxuXHRcdFx0XHRib3R0b206IDAsXHJcblx0XHRcdFx0dG9wOiAwLFxyXG5cdFx0XHRcdGxlZnQ6IDAsXHJcblx0XHRcdFx0cmlnaHQ6IDAsXHJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjQpJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR0cmFuc0NsYXNzOiB7XHJcblx0XHRcdFx0cG9zaXRpb246ICdmaXhlZCcsXHJcblx0XHRcdFx0bGVmdDogMCxcclxuXHRcdFx0XHRyaWdodDogMFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtYXNrU2hvdzogdHJ1ZSxcclxuXHRcdFx0bWtjbGljazogdHJ1ZSxcclxuXHRcdFx0cG9wdXBzdHlsZTogdGhpcy5pc0Rlc2t0b3AgPyAnZml4Zm9ycGMtdG9wJyA6ICd0b3AnXHJcblx0XHR9XHJcblx0fSxcclxuXHRjb21wdXRlZDoge1xyXG5cdFx0aXNEZXNrdG9wKCkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5wb3B1cFdpZHRoID49IDUwMCAmJiB0aGlzLnBvcHVwSGVpZ2h0ID49IDUwMFxyXG5cdFx0fSxcclxuXHRcdGJnKCkge1xyXG5cdFx0XHRpZiAodGhpcy5iYWNrZ3JvdW5kQ29sb3IgPT09ICcnIHx8IHRoaXMuYmFja2dyb3VuZENvbG9yID09PSAnbm9uZScpIHtcclxuXHRcdFx0XHRyZXR1cm4gJ3RyYW5zcGFyZW50J1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiB0aGlzLmJhY2tncm91bmRDb2xvclxyXG5cdFx0fVxyXG5cdH0sXHJcblx0bW91bnRlZCgpIHtcclxuXHRcdGNvbnN0IGZpeFNpemUgPSAoKSA9PiB7XHJcblx0XHRcdGNvbnN0IHsgd2luZG93V2lkdGgsIHdpbmRvd0hlaWdodCwgd2luZG93VG9wLCBzYWZlQXJlYSxzY3JlZW5IZWlnaHQgLHNhZmVBcmVhSW5zZXRzIH0gPSB1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKVxyXG5cdFx0XHR0aGlzLnBvcHVwV2lkdGggPSB3aW5kb3dXaWR0aFxyXG5cdFx0XHR0aGlzLnBvcHVwSGVpZ2h0ID0gd2luZG93SGVpZ2h0ICsgd2luZG93VG9wXHJcblx0XHRcdC8vIFRPRE8gZml4IGJ5IG1laGFvdGlhbiDmmK/lkKbpgILphY3lupXpg6jlronlhajljLogLOebruWJjeW+ruS/oWlvcyDjgIHlkowgYXBwIGlvcyDorqHnrpfmnInlt67lvILvvIzpnIDopoHmoYbmnrbkv67lpI1cclxuXHRcdFx0aWYoc2FmZUFyZWEpe1xyXG5cdFx0XHRcdC8vICNpZmRlZiBNUC1XRUlYSU5cclxuXHRcdFx0XHR0aGlzLnNhZmVBcmVhSW5zZXRzID0gc2NyZWVuSGVpZ2h0IC0gc2FmZUFyZWEuYm90dG9tXHJcblx0XHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBNUC1XRUlYSU5cclxuXHRcdFx0XHR0aGlzLnNhZmVBcmVhSW5zZXRzID0gc2FmZUFyZWFJbnNldHMuYm90dG9tXHJcblx0XHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHRoaXMuc2FmZUFyZWFJbnNldHMgPSAwXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGZpeFNpemUoKVxyXG5cdFx0Ly8gI2lmZGVmIEg1XHJcblx0XHQvLyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZml4U2l6ZSlcclxuXHRcdC8vIHRoaXMuJG9uY2UoJ2hvb2s6YmVmb3JlRGVzdHJveScsICgpID0+IHtcclxuXHRcdC8vIFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpeFNpemUpXHJcblx0XHQvLyB9KVxyXG5cdFx0Ly8gI2VuZGlmXHJcblx0fSxcclxuXHRjcmVhdGVkKCkge1xyXG5cdFx0Ly8gdGhpcy5ta2NsaWNrID0gIHRoaXMuaXNNYXNrQ2xpY2sgfHwgdGhpcy5tYXNrQ2xpY2tcclxuXHRcdGlmKHRoaXMuaXNNYXNrQ2xpY2sgPT09IG51bGwgJiYgdGhpcy5tYXNrQ2xpY2sgPT09IG51bGwpe1xyXG5cdFx0XHR0aGlzLm1rY2xpY2sgID0gdHJ1ZVxyXG5cdFx0fWVsc2V7XHJcblx0XHRcdHRoaXMubWtjbGljayA9IHRoaXMuaXNNYXNrQ2xpY2sgIT09IG51bGwgPyB0aGlzLmlzTWFza0NsaWNrIDogdGhpcy5tYXNrQ2xpY2tcclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLmFuaW1hdGlvbikge1xyXG5cdFx0XHR0aGlzLmR1cmF0aW9uID0gMzAwXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmR1cmF0aW9uID0gMFxyXG5cdFx0fVxyXG5cdFx0Ly8gVE9ETyDlpITnkIYgbWVzc2FnZSDnu4Tku7bnlJ/lkb3lkajmnJ/lvILluLjnmoTpl67pophcclxuXHRcdHRoaXMubWVzc2FnZUNoaWxkID0gbnVsbFxyXG5cdFx0Ly8gVE9ETyDop6PlhrPlpLTmnaHlhpLms6HnmoTpl67pophcclxuXHRcdHRoaXMuY2xlYXJQcm9wYWdhdGlvbiA9IGZhbHNlXHJcblx0XHR0aGlzLm1hc2tDbGFzcy5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLm1hc2tCYWNrZ3JvdW5kQ29sb3JcclxuXHR9LFxyXG5cdG1ldGhvZHM6IHtcclxuXHRcdC8qKlxyXG5cdFx0ICog5YWs55So5pa55rOV77yM5LiN5pi+56S66YGu572p5bGCXHJcblx0XHQgKi9cclxuXHRcdGNsb3NlTWFzaygpIHtcclxuXHRcdFx0dGhpcy5tYXNrU2hvdyA9IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0LyoqXHJcblx0XHQgKiDlhaznlKjmlrnms5XvvIzpga7nvanlsYLnpoHmraLngrnlh7tcclxuXHRcdCAqL1xyXG5cdFx0ZGlzYWJsZU1hc2soKSB7XHJcblx0XHRcdHRoaXMubWtjbGljayA9IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0Ly8gVE9ETyBudnVlIOWPlua2iOWGkuazoVxyXG5cdFx0Y2xlYXIoZSkge1xyXG5cdFx0XHQvLyAjaWZuZGVmIEFQUC1OVlVFXHJcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKClcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdHRoaXMuY2xlYXJQcm9wYWdhdGlvbiA9IHRydWVcclxuXHRcdH0sXHJcblxyXG5cdFx0b3BlbihkaXJlY3Rpb24pIHtcclxuXHRcdFx0bGV0IGlubmVyVHlwZSA9IFsndG9wJywgJ2NlbnRlcicsICdib3R0b20nLCAnbGVmdCcsICdyaWdodCcsICdtZXNzYWdlJywgJ2RpYWxvZycsICdzaGFyZSddXHJcblx0XHRcdGlmICghKGRpcmVjdGlvbiAmJiBpbm5lclR5cGUuaW5kZXhPZihkaXJlY3Rpb24pICE9PSAtMSkpIHtcclxuXHRcdFx0XHRkaXJlY3Rpb24gPSB0aGlzLnR5cGVcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoIXRoaXMuY29uZmlnW2RpcmVjdGlvbl0pIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCfnvLrlsJHnsbvlnovvvJonLCBkaXJlY3Rpb24pXHJcblx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdH1cclxuXHRcdFx0dGhpc1t0aGlzLmNvbmZpZ1tkaXJlY3Rpb25dXSgpXHJcblx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZScsIHtcclxuXHRcdFx0XHRzaG93OiB0cnVlLFxyXG5cdFx0XHRcdHR5cGU6IGRpcmVjdGlvblxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdGNsb3NlKHR5cGUpIHtcclxuXHRcdFx0dGhpcy5zaG93VHJhbnMgPSBmYWxzZVxyXG5cdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2UnLCB7XHJcblx0XHRcdFx0c2hvdzogZmFsc2UsXHJcblx0XHRcdFx0dHlwZTogdGhpcy50eXBlXHJcblx0XHRcdH0pXHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKVxyXG5cdFx0XHQvLyAvLyDoh6rlrprkuYnlhbPpl63kuovku7ZcclxuXHRcdFx0Ly8gdGhpcy5jdXN0b21PcGVuICYmIHRoaXMuY3VzdG9tQ2xvc2UoKVxyXG5cdFx0XHR0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5zaG93UG9wdXAgPSBmYWxzZVxyXG5cdFx0XHR9LCAzMDApXHJcblx0XHR9LFxyXG5cdFx0Ly8gVE9ETyDlpITnkIblhpLms6Hkuovku7bvvIzlpLTmnaHnmoTlhpLms6Hkuovku7bmnInpl67popgg77yM5YWI6L+Z5qC35YW85a65XHJcblx0XHR0b3VjaHN0YXJ0KCl7XHJcblx0XHRcdHRoaXMuY2xlYXJQcm9wYWdhdGlvbiA9IGZhbHNlXHJcblx0XHR9LFxyXG5cclxuXHRcdG9uVGFwKCkge1xyXG5cdFx0XHRpZiAodGhpcy5jbGVhclByb3BhZ2F0aW9uKSB7XHJcblx0XHRcdFx0Ly8gZml4IGJ5IG1laGFvdGlhbiDlhbzlrrkgbnZ1ZVxyXG5cdFx0XHRcdHRoaXMuY2xlYXJQcm9wYWdhdGlvbiA9IGZhbHNlXHJcblx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy4kZW1pdCgnbWFza0NsaWNrJylcclxuXHRcdFx0aWYgKCF0aGlzLm1rY2xpY2spIHJldHVyblxyXG5cdFx0XHR0aGlzLmNsb3NlKClcclxuXHRcdH0sXHJcblx0XHQvKipcclxuXHRcdCAqIOmhtumDqOW8ueWHuuagt+W8j+WkhOeQhlxyXG5cdFx0ICovXHJcblx0XHR0b3AodHlwZSkge1xyXG5cdFx0XHR0aGlzLnBvcHVwc3R5bGUgPSB0aGlzLmlzRGVza3RvcCA/ICdmaXhmb3JwYy10b3AnIDogJ3RvcCdcclxuXHRcdFx0dGhpcy5hbmkgPSBbJ3NsaWRlLXRvcCddXHJcblx0XHRcdHRoaXMudHJhbnNDbGFzcyA9IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcclxuXHRcdFx0XHRsZWZ0OiAwLFxyXG5cdFx0XHRcdHJpZ2h0OiAwLFxyXG5cdFx0XHRcdGJhY2tncm91bmRDb2xvcjogdGhpcy5iZ1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIFRPRE8g5YW85a65IHR5cGUg5bGe5oCnIO+8jOWQjue7reS8muW6n+W8g1xyXG5cdFx0XHRpZiAodHlwZSkgcmV0dXJuXHJcblx0XHRcdHRoaXMuc2hvd1BvcHVwID0gdHJ1ZVxyXG5cdFx0XHR0aGlzLnNob3dUcmFucyA9IHRydWVcclxuXHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLm1lc3NhZ2VDaGlsZCAmJiB0aGlzLnR5cGUgPT09ICdtZXNzYWdlJykge1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlQ2hpbGQudGltZXJDbG9zZSgpXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdC8qKlxyXG5cdFx0ICog5bqV6YOo5by55Ye65qC35byP5aSE55CGXHJcblx0XHQgKi9cclxuXHRcdGJvdHRvbSh0eXBlKSB7XHJcblx0XHRcdHRoaXMucG9wdXBzdHlsZSA9ICdib3R0b20nXHJcblx0XHRcdHRoaXMuYW5pID0gWydzbGlkZS1ib3R0b20nXVxyXG5cdFx0XHR0aGlzLnRyYW5zQ2xhc3MgPSB7XHJcblx0XHRcdFx0cG9zaXRpb246ICdmaXhlZCcsXHJcblx0XHRcdFx0bGVmdDogMCxcclxuXHRcdFx0XHRyaWdodDogMCxcclxuXHRcdFx0XHRib3R0b206IDAsXHJcblx0XHRcdFx0cGFkZGluZ0JvdHRvbTogdGhpcy5zYWZlQXJlYUluc2V0cysncHgnLFxyXG5cdFx0XHRcdGJhY2tncm91bmRDb2xvcjogdGhpcy5iZ1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIFRPRE8g5YW85a65IHR5cGUg5bGe5oCnIO+8jOWQjue7reS8muW6n+W8g1xyXG5cdFx0XHRpZiAodHlwZSkgcmV0dXJuXHJcblx0XHRcdHRoaXMuc2hvd1BvcHVwID0gdHJ1ZVxyXG5cdFx0XHR0aGlzLnNob3dUcmFucyA9IHRydWVcclxuXHRcdH0sXHJcblx0XHQvKipcclxuXHRcdCAqIOS4remXtOW8ueWHuuagt+W8j+WkhOeQhlxyXG5cdFx0ICovXHJcblx0XHRjZW50ZXIodHlwZSkge1xyXG5cdFx0XHR0aGlzLnBvcHVwc3R5bGUgPSAnY2VudGVyJ1xyXG5cdFx0XHR0aGlzLmFuaSA9IFsnem9vbS1vdXQnLCAnZmFkZSddXHJcblx0XHRcdHRoaXMudHJhbnNDbGFzcyA9IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcclxuXHRcdFx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRcdFx0ZGlzcGxheTogJ2ZsZXgnLFxyXG5cdFx0XHRcdGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxyXG5cdFx0XHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0XHRcdGJvdHRvbTogMCxcclxuXHRcdFx0XHRsZWZ0OiAwLFxyXG5cdFx0XHRcdHJpZ2h0OiAwLFxyXG5cdFx0XHRcdHRvcDogMCxcclxuXHRcdFx0XHRqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXHJcblx0XHRcdFx0YWxpZ25JdGVtczogJ2NlbnRlcidcclxuXHRcdFx0fVxyXG5cdFx0XHQvLyBUT0RPIOWFvOWuuSB0eXBlIOWxnuaApyDvvIzlkI7nu63kvJrlup/lvINcclxuXHRcdFx0aWYgKHR5cGUpIHJldHVyblxyXG5cdFx0XHR0aGlzLnNob3dQb3B1cCA9IHRydWVcclxuXHRcdFx0dGhpcy5zaG93VHJhbnMgPSB0cnVlXHJcblx0XHR9LFxyXG5cdFx0bGVmdCh0eXBlKSB7XHJcblx0XHRcdHRoaXMucG9wdXBzdHlsZSA9ICdsZWZ0J1xyXG5cdFx0XHR0aGlzLmFuaSA9IFsnc2xpZGUtbGVmdCddXHJcblx0XHRcdHRoaXMudHJhbnNDbGFzcyA9IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcclxuXHRcdFx0XHRsZWZ0OiAwLFxyXG5cdFx0XHRcdGJvdHRvbTogMCxcclxuXHRcdFx0XHR0b3A6IDAsXHJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiB0aGlzLmJnLFxyXG5cdFx0XHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdFx0XHRkaXNwbGF5OiAnZmxleCcsXHJcblx0XHRcdFx0ZmxleERpcmVjdGlvbjogJ2NvbHVtbidcclxuXHRcdFx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdFx0fVxyXG5cdFx0XHQvLyBUT0RPIOWFvOWuuSB0eXBlIOWxnuaApyDvvIzlkI7nu63kvJrlup/lvINcclxuXHRcdFx0aWYgKHR5cGUpIHJldHVyblxyXG5cdFx0XHR0aGlzLnNob3dQb3B1cCA9IHRydWVcclxuXHRcdFx0dGhpcy5zaG93VHJhbnMgPSB0cnVlXHJcblx0XHR9LFxyXG5cdFx0cmlnaHQodHlwZSkge1xyXG5cdFx0XHR0aGlzLnBvcHVwc3R5bGUgPSAncmlnaHQnXHJcblx0XHRcdHRoaXMuYW5pID0gWydzbGlkZS1yaWdodCddXHJcblx0XHRcdHRoaXMudHJhbnNDbGFzcyA9IHtcclxuXHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcclxuXHRcdFx0XHRib3R0b206IDAsXHJcblx0XHRcdFx0cmlnaHQ6IDAsXHJcblx0XHRcdFx0dG9wOiAwLFxyXG5cdFx0XHRcdGJhY2tncm91bmRDb2xvcjogdGhpcy5iZyxcclxuXHRcdFx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRcdFx0ZGlzcGxheTogJ2ZsZXgnLFxyXG5cdFx0XHRcdGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nXHJcblx0XHRcdFx0LyogI2VuZGlmICovXHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gVE9ETyDlhbzlrrkgdHlwZSDlsZ7mgKcg77yM5ZCO57ut5Lya5bqf5byDXHJcblx0XHRcdGlmICh0eXBlKSByZXR1cm5cclxuXHRcdFx0dGhpcy5zaG93UG9wdXAgPSB0cnVlXHJcblx0XHRcdHRoaXMuc2hvd1RyYW5zID0gdHJ1ZVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgPlxyXG4udW5pLXBvcHVwIHtcclxuXHRwb3NpdGlvbjogZml4ZWQ7XHJcblx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdHotaW5kZXg6IDk5O1xyXG5cdC8qICNlbmRpZiAqL1xyXG5cdCYudG9wLFxyXG5cdCYubGVmdCxcclxuXHQmLnJpZ2h0IHtcclxuXHRcdC8qICNpZmRlZiBINSAqL1xyXG5cdFx0dG9wOiB2YXIoLS13aW5kb3ctdG9wKTtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0LyogI2lmbmRlZiBINSAqL1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG5cdC51bmktcG9wdXBfX3dyYXBwZXIge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdC8qIGlwaG9uZXgg562J5a6J5YWo5Yy66K6+572u77yM5bqV6YOo5a6J5YWo5Yy66YCC6YWNICovXHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHQvLyBwYWRkaW5nLWJvdHRvbTogY29uc3RhbnQoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XHJcblx0XHQvLyBwYWRkaW5nLWJvdHRvbTogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHQmLmxlZnQsXHJcblx0XHQmLnJpZ2h0IHtcclxuXHRcdFx0LyogI2lmZGVmIEg1ICovXHJcblx0XHRcdHBhZGRpbmctdG9wOiB2YXIoLS13aW5kb3ctdG9wKTtcclxuXHRcdFx0LyogI2VuZGlmICovXHJcblx0XHRcdC8qICNpZm5kZWYgSDUgKi9cclxuXHRcdFx0cGFkZGluZy10b3A6IDA7XHJcblx0XHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0XHRmbGV4OiAxO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLmZpeGZvcnBjLXotaW5kZXgge1xyXG5cdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHR6LWluZGV4OiA5OTk7XHJcblx0LyogI2VuZGlmICovXHJcbn1cclxuXHJcbi5maXhmb3JwYy10b3Age1xyXG5cdHRvcDogMDtcclxufVxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///35\n");
 
/***/ }),
/* 36 */
/*!******************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue ***!
  \******************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-popup-dialog.vue?vue&type=template&id=6f54520a& */ 37);\n/* harmony import */ var _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-popup-dialog.vue?vue&type=script&lang=js& */ 39);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1wb3B1cC1kaWFsb2cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmNTQ1MjBhJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLXBvcHVwLWRpYWxvZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VuaS1wb3B1cC1kaWFsb2cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy91bmktcG9wdXAvY29tcG9uZW50cy91bmktcG9wdXAtZGlhbG9nL3VuaS1wb3B1cC1kaWFsb2cudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///36\n");
 
/***/ }),
/* 37 */
/*!*************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue?vue&type=template&id=6f54520a& ***!
  \*************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup-dialog.vue?vue&type=template&id=6f54520a& */ 38);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_template_id_6f54520a___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 38 */
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue?vue&type=template&id=6f54520a& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "uni-popup-dialog"), attrs: { _i: 0 } },
    [
      _c(
        "view",
        { staticClass: _vm._$s(1, "sc", "uni-dialog-title"), attrs: { _i: 1 } },
        [
          _c(
            "text",
            {
              staticClass: _vm._$s(2, "sc", "uni-dialog-title-text"),
              class: _vm._$s(2, "c", ["uni-popup__" + _vm.dialogType]),
              attrs: { _i: 2 },
            },
            [_vm._v(_vm._$s(2, "t0-0", _vm._s(_vm.titleText)))]
          ),
        ]
      ),
      _vm._$s(3, "i", _vm.mode === "base")
        ? _c(
            "view",
            {
              staticClass: _vm._$s(3, "sc", "uni-dialog-content"),
              attrs: { _i: 3 },
            },
            [
              _vm._t(
                "default",
                [
                  _c(
                    "text",
                    {
                      staticClass: _vm._$s(5, "sc", "uni-dialog-content-text"),
                      attrs: { _i: 5 },
                    },
                    [_vm._v(_vm._$s(5, "t0-0", _vm._s(_vm.content)))]
                  ),
                ],
                { _i: 4 }
              ),
            ],
            2
          )
        : _c(
            "view",
            {
              staticClass: _vm._$s(6, "sc", "uni-dialog-content"),
              attrs: { _i: 6 },
            },
            [
              _vm._t(
                "default",
                [
                  _c("input", {
                    directives: [
                      {
                        name: "model",
                        rawName: "v-model",
                        value: _vm.val,
                        expression: "val",
                      },
                    ],
                    staticClass: _vm._$s(8, "sc", "uni-dialog-input"),
                    attrs: {
                      placeholder: _vm._$s(
                        8,
                        "a-placeholder",
                        _vm.placeholderText
                      ),
                      focus: _vm._$s(8, "a-focus", _vm.focus),
                      _i: 8,
                    },
                    domProps: { value: _vm._$s(8, "v-model", _vm.val) },
                    on: {
                      input: function ($event) {
                        if ($event.target.composing) {
                          return
                        }
                        _vm.val = $event.target.value
                      },
                    },
                  }),
                ],
                { _i: 7 }
              ),
            ],
            2
          ),
      _c(
        "view",
        {
          staticClass: _vm._$s(9, "sc", "uni-dialog-button-group"),
          attrs: { _i: 9 },
        },
        [
          _c(
            "view",
            {
              staticClass: _vm._$s(10, "sc", "uni-dialog-button"),
              attrs: { _i: 10 },
              on: { click: _vm.closeDialog },
            },
            [
              _c(
                "text",
                {
                  staticClass: _vm._$s(11, "sc", "uni-dialog-button-text"),
                  attrs: { _i: 11 },
                },
                [_vm._v(_vm._$s(11, "t0-0", _vm._s(_vm.closeText)))]
              ),
            ]
          ),
          _c(
            "view",
            {
              staticClass: _vm._$s(
                12,
                "sc",
                "uni-dialog-button uni-border-left"
              ),
              attrs: { _i: 12 },
              on: { click: _vm.onOk },
            },
            [
              _c(
                "text",
                {
                  staticClass: _vm._$s(
                    13,
                    "sc",
                    "uni-dialog-button-text uni-button-color"
                  ),
                  attrs: { _i: 13 },
                },
                [_vm._v(_vm._$s(13, "t0-0", _vm._s(_vm.okText)))]
              ),
            ]
          ),
        ]
      ),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 39 */
/*!*******************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup-dialog.vue?vue&type=script&lang=js& */ 40);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_dialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRtQixDQUFnQixzbEJBQUcsRUFBQyIsImZpbGUiOiIzOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktcG9wdXAtZGlhbG9nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3VuaS1wb3B1cC1kaWFsb2cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n");
 
/***/ }),
/* 40 */
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue?vue&type=script&lang=js& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _popup = _interopRequireDefault(__webpack_require__(/*! ../uni-popup/popup.js */ 41));\nvar _uniI18n = __webpack_require__(/*! @dcloudio/uni-i18n */ 42);\nvar _index = _interopRequireDefault(__webpack_require__(/*! ../uni-popup/i18n/index.js */ 48));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar _initVueI18n = (0, _uniI18n.initVueI18n)(_index.default),\n  t = _initVueI18n.t;\n/**\n * PopUp 弹出层-对话框样式\n * @description 弹出层-对话框样式\n * @tutorial https://ext.dcloud.net.cn/plugin?id=329\n * @property {String} value input 模式下的默认值\n * @property {String} placeholder input 模式下输入提示\n * @property {String} type = [success|warning|info|error] 主题样式\n *  @value success 成功\n * \t@value warning 提示\n * \t@value info 消息\n * \t@value error 错误\n * @property {String} mode = [base|input] 模式、\n * \t@value base 基础对话框\n * \t@value input 可输入对话框\n * @property {String} content 对话框内容\n * @property {Boolean} beforeClose 是否拦截取消事件\n * @event {Function} confirm 点击确认按钮触发\n * @event {Function} close 点击取消按钮触发\n */\nvar _default = {\n  name: \"uniPopupDialog\",\n  mixins: [_popup.default],\n  emits: ['confirm', 'close'],\n  props: {\n    value: {\n      type: [String, Number],\n      default: ''\n    },\n    placeholder: {\n      type: [String, Number],\n      default: ''\n    },\n    type: {\n      type: String,\n      default: 'error'\n    },\n    mode: {\n      type: String,\n      default: 'base'\n    },\n    title: {\n      type: String,\n      default: ''\n    },\n    content: {\n      type: String,\n      default: ''\n    },\n    beforeClose: {\n      type: Boolean,\n      default: false\n    },\n    cancelText: {\n      type: String,\n      default: ''\n    },\n    confirmText: {\n      type: String,\n      default: ''\n    }\n  },\n  data: function data() {\n    return {\n      dialogType: 'error',\n      focus: false,\n      val: \"\"\n    };\n  },\n  computed: {\n    okText: function okText() {\n      return this.confirmText || t(\"uni-popup.ok\");\n    },\n    closeText: function closeText() {\n      return this.cancelText || t(\"uni-popup.cancel\");\n    },\n    placeholderText: function placeholderText() {\n      return this.placeholder || t(\"uni-popup.placeholder\");\n    },\n    titleText: function titleText() {\n      return this.title || t(\"uni-popup.title\");\n    }\n  },\n  watch: {\n    type: function type(val) {\n      this.dialogType = val;\n    },\n    mode: function mode(val) {\n      if (val === 'input') {\n        this.dialogType = 'info';\n      }\n    },\n    value: function value(val) {\n      this.val = val;\n    }\n  },\n  created: function created() {\n    // 对话框遮罩不可点击\n    this.popup.disableMask();\n    // this.popup.closeMask()\n    if (this.mode === 'input') {\n      this.dialogType = 'info';\n      this.val = this.value;\n    } else {\n      this.dialogType = this.type;\n    }\n  },\n  mounted: function mounted() {\n    this.focus = true;\n  },\n  methods: {\n    /**\n     * 点击确认按钮\n     */\n    onOk: function onOk() {\n      if (this.mode === 'input') {\n        this.$emit('confirm', this.val);\n      } else {\n        this.$emit('confirm');\n      }\n      if (this.beforeClose) return;\n      this.popup.close();\n    },\n    /**\n     * 点击取消按钮\n     */\n    closeDialog: function closeDialog() {\n      this.$emit('close');\n      if (this.beforeClose) return;\n      this.popup.close();\n    },\n    close: function close() {\n      this.popup.close();\n    }\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwLWRpYWxvZy91bmktcG9wdXAtZGlhbG9nLnZ1ZSJdLCJuYW1lcyI6WyJ0IiwibmFtZSIsIm1peGlucyIsImVtaXRzIiwicHJvcHMiLCJ2YWx1ZSIsInR5cGUiLCJkZWZhdWx0IiwicGxhY2Vob2xkZXIiLCJtb2RlIiwidGl0bGUiLCJjb250ZW50IiwiYmVmb3JlQ2xvc2UiLCJjYW5jZWxUZXh0IiwiY29uZmlybVRleHQiLCJkYXRhIiwiZGlhbG9nVHlwZSIsImZvY3VzIiwidmFsIiwiY29tcHV0ZWQiLCJva1RleHQiLCJjbG9zZVRleHQiLCJwbGFjZWhvbGRlclRleHQiLCJ0aXRsZVRleHQiLCJ3YXRjaCIsImNyZWF0ZWQiLCJtb3VudGVkIiwibWV0aG9kcyIsIm9uT2siLCJjbG9zZURpYWxvZyIsImNsb3NlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBNEJBO0FBQ0E7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtFQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbEJBLGVBb0JBO0VBQ0FDO0VBQ0FDO0VBQ0FDO0VBQ0FDO0lBQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7SUFDQUM7TUFDQUY7TUFDQUM7SUFDQTtJQUNBRDtNQUNBQTtNQUNBQztJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7SUFDQUc7TUFDQUo7TUFDQUM7SUFDQTtJQUNBSTtNQUNBTDtNQUNBQztJQUNBO0lBQ0FLO01BQ0FOO01BQ0FDO0lBQ0E7SUFDQU07TUFDQVA7TUFDQUM7SUFDQTtJQUNBTztNQUNBUjtNQUNBQztJQUNBO0VBQ0E7RUFDQVE7SUFDQTtNQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQWxCO01BQ0E7SUFDQTtJQUNBRztNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FKO01BQ0E7SUFDQTtFQUNBO0VBQ0FvQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO01BQ0E7TUFDQTtJQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0FBQ0E7QUFDQTtJQUNBQztNQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQTtBQUNBO0FBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEiLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJ1bmktcG9wdXAtZGlhbG9nXCI+XHJcblx0XHQ8dmlldyBjbGFzcz1cInVuaS1kaWFsb2ctdGl0bGVcIj5cclxuXHRcdFx0PHRleHQgY2xhc3M9XCJ1bmktZGlhbG9nLXRpdGxlLXRleHRcIiA6Y2xhc3M9XCJbJ3VuaS1wb3B1cF9fJytkaWFsb2dUeXBlXVwiPnt7dGl0bGVUZXh0fX08L3RleHQ+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyB2LWlmPVwibW9kZSA9PT0gJ2Jhc2UnXCIgY2xhc3M9XCJ1bmktZGlhbG9nLWNvbnRlbnRcIj5cclxuXHRcdFx0PHNsb3Q+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJ1bmktZGlhbG9nLWNvbnRlbnQtdGV4dFwiPnt7Y29udGVudH19PC90ZXh0PlxyXG5cdFx0XHQ8L3Nsb3Q+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyB2LWVsc2UgY2xhc3M9XCJ1bmktZGlhbG9nLWNvbnRlbnRcIj5cclxuXHRcdFx0PHNsb3Q+XHJcblx0XHRcdFx0PGlucHV0IGNsYXNzPVwidW5pLWRpYWxvZy1pbnB1dFwiIHYtbW9kZWw9XCJ2YWxcIiB0eXBlPVwidGV4dFwiIDpwbGFjZWhvbGRlcj1cInBsYWNlaG9sZGVyVGV4dFwiIDpmb2N1cz1cImZvY3VzXCIgPlxyXG5cdFx0XHQ8L3Nsb3Q+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInVuaS1kaWFsb2ctYnV0dG9uLWdyb3VwXCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidW5pLWRpYWxvZy1idXR0b25cIiBAY2xpY2s9XCJjbG9zZURpYWxvZ1wiPlxyXG5cdFx0XHRcdDx0ZXh0IGNsYXNzPVwidW5pLWRpYWxvZy1idXR0b24tdGV4dFwiPnt7Y2xvc2VUZXh0fX08L3RleHQ+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ1bmktZGlhbG9nLWJ1dHRvbiB1bmktYm9yZGVyLWxlZnRcIiBAY2xpY2s9XCJvbk9rXCI+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJ1bmktZGlhbG9nLWJ1dHRvbi10ZXh0IHVuaS1idXR0b24tY29sb3JcIj57e29rVGV4dH19PC90ZXh0PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHBvcHVwIGZyb20gJy4uL3VuaS1wb3B1cC9wb3B1cC5qcydcclxuXHRpbXBvcnQge1xyXG5cdGluaXRWdWVJMThuXHJcblx0fSBmcm9tICdAZGNsb3VkaW8vdW5pLWkxOG4nXHJcblx0aW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL3VuaS1wb3B1cC9pMThuL2luZGV4LmpzJ1xyXG5cdGNvbnN0IHtcdHQgfSA9IGluaXRWdWVJMThuKG1lc3NhZ2VzKVxyXG5cdC8qKlxyXG5cdCAqIFBvcFVwIOW8ueWHuuWxgi3lr7nor53moYbmoLflvI9cclxuXHQgKiBAZGVzY3JpcHRpb24g5by55Ye65bGCLeWvueivneahhuagt+W8j1xyXG5cdCAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0zMjlcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gdmFsdWUgaW5wdXQg5qih5byP5LiL55qE6buY6K6k5YC8XHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IHBsYWNlaG9sZGVyIGlucHV0IOaooeW8j+S4i+i+k+WFpeaPkOekulxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB0eXBlID0gW3N1Y2Nlc3N8d2FybmluZ3xpbmZvfGVycm9yXSDkuLvpopjmoLflvI9cclxuXHQgKiAgQHZhbHVlIHN1Y2Nlc3Mg5oiQ5YqfXHJcblx0ICogXHRAdmFsdWUgd2FybmluZyDmj5DnpLpcclxuXHQgKiBcdEB2YWx1ZSBpbmZvIOa2iOaBr1xyXG5cdCAqIFx0QHZhbHVlIGVycm9yIOmUmeivr1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBtb2RlID0gW2Jhc2V8aW5wdXRdIOaooeW8j+OAgVxyXG5cdCAqIFx0QHZhbHVlIGJhc2Ug5Z+656GA5a+56K+d5qGGXHJcblx0ICogXHRAdmFsdWUgaW5wdXQg5Y+v6L6T5YWl5a+56K+d5qGGXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IGNvbnRlbnQg5a+56K+d5qGG5YaF5a65XHJcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBiZWZvcmVDbG9zZSDmmK/lkKbmi6bmiKrlj5bmtojkuovku7ZcclxuXHQgKiBAZXZlbnQge0Z1bmN0aW9ufSBjb25maXJtIOeCueWHu+ehruiupOaMiemSruinpuWPkVxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNsb3NlIOeCueWHu+WPlua2iOaMiemSruinpuWPkVxyXG5cdCAqL1xyXG5cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRuYW1lOiBcInVuaVBvcHVwRGlhbG9nXCIsXHJcblx0XHRtaXhpbnM6IFtwb3B1cF0sXHJcblx0XHRlbWl0czpbJ2NvbmZpcm0nLCdjbG9zZSddLFxyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0dmFsdWU6IHtcclxuXHRcdFx0XHR0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdHBsYWNlaG9sZGVyOiB7XHJcblx0XHRcdFx0dHlwZTogW1N0cmluZywgTnVtYmVyXSxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR0eXBlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdlcnJvcidcclxuXHRcdFx0fSxcclxuXHRcdFx0bW9kZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnYmFzZSdcclxuXHRcdFx0fSxcclxuXHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0Y29udGVudDoge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRiZWZvcmVDbG9zZToge1xyXG5cdFx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2FuY2VsVGV4dDp7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbmZpcm1UZXh0OntcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0ZGlhbG9nVHlwZTogJ2Vycm9yJyxcclxuXHRcdFx0XHRmb2N1czogZmFsc2UsXHJcblx0XHRcdFx0dmFsOiBcIlwiXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjb21wdXRlZDoge1xyXG5cdFx0XHRva1RleHQoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuY29uZmlybVRleHQgfHwgdChcInVuaS1wb3B1cC5va1wiKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbG9zZVRleHQoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuY2FuY2VsVGV4dCB8fCB0KFwidW5pLXBvcHVwLmNhbmNlbFwiKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRwbGFjZWhvbGRlclRleHQoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMucGxhY2Vob2xkZXIgfHwgdChcInVuaS1wb3B1cC5wbGFjZWhvbGRlclwiKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aXRsZVRleHQoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMudGl0bGUgfHwgdChcInVuaS1wb3B1cC50aXRsZVwiKVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0d2F0Y2g6IHtcclxuXHRcdFx0dHlwZSh2YWwpIHtcclxuXHRcdFx0XHR0aGlzLmRpYWxvZ1R5cGUgPSB2YWxcclxuXHRcdFx0fSxcclxuXHRcdFx0bW9kZSh2YWwpIHtcclxuXHRcdFx0XHRpZiAodmFsID09PSAnaW5wdXQnKSB7XHJcblx0XHRcdFx0XHR0aGlzLmRpYWxvZ1R5cGUgPSAnaW5mbydcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHZhbHVlKHZhbCkge1xyXG5cdFx0XHRcdHRoaXMudmFsID0gdmFsXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjcmVhdGVkKCkge1xyXG5cdFx0XHQvLyDlr7nor53moYbpga7nvankuI3lj6/ngrnlh7tcclxuXHRcdFx0dGhpcy5wb3B1cC5kaXNhYmxlTWFzaygpXHJcblx0XHRcdC8vIHRoaXMucG9wdXAuY2xvc2VNYXNrKClcclxuXHRcdFx0aWYgKHRoaXMubW9kZSA9PT0gJ2lucHV0Jykge1xyXG5cdFx0XHRcdHRoaXMuZGlhbG9nVHlwZSA9ICdpbmZvJ1xyXG5cdFx0XHRcdHRoaXMudmFsID0gdGhpcy52YWx1ZVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuZGlhbG9nVHlwZSA9IHRoaXMudHlwZVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bW91bnRlZCgpIHtcclxuXHRcdFx0dGhpcy5mb2N1cyA9IHRydWVcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdC8qKlxyXG5cdFx0XHQgKiDngrnlh7vnoa7orqTmjInpkq5cclxuXHRcdFx0ICovXHJcblx0XHRcdG9uT2soKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMubW9kZSA9PT0gJ2lucHV0Jyl7XHJcblx0XHRcdFx0XHR0aGlzLiRlbWl0KCdjb25maXJtJywgdGhpcy52YWwpXHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR0aGlzLiRlbWl0KCdjb25maXJtJylcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYodGhpcy5iZWZvcmVDbG9zZSkgcmV0dXJuXHJcblx0XHRcdFx0dGhpcy5wb3B1cC5jbG9zZSgpXHJcblx0XHRcdH0sXHJcblx0XHRcdC8qKlxyXG5cdFx0XHQgKiDngrnlh7vlj5bmtojmjInpkq5cclxuXHRcdFx0ICovXHJcblx0XHRcdGNsb3NlRGlhbG9nKCkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2Nsb3NlJylcclxuXHRcdFx0XHRpZih0aGlzLmJlZm9yZUNsb3NlKSByZXR1cm5cclxuXHRcdFx0XHR0aGlzLnBvcHVwLmNsb3NlKClcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xvc2UoKXtcclxuXHRcdFx0XHR0aGlzLnBvcHVwLmNsb3NlKClcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cInNjc3NcIiA+XHJcblx0LnVuaS1wb3B1cC1kaWFsb2cge1xyXG5cdFx0d2lkdGg6IDMwMHB4O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTFweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0fVxyXG5cclxuXHQudW5pLWRpYWxvZy10aXRsZSB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRwYWRkaW5nLXRvcDogMjVweDtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLXRpdGxlLXRleHQge1xyXG5cdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDUwMDtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLWNvbnRlbnQge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdHBhZGRpbmc6IDIwcHg7XHJcblx0fVxyXG5cclxuXHQudW5pLWRpYWxvZy1jb250ZW50LXRleHQge1xyXG5cdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0Y29sb3I6ICM2QzZDNkM7XHJcblx0fVxyXG5cclxuXHQudW5pLWRpYWxvZy1idXR0b24tZ3JvdXAge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGJvcmRlci10b3AtY29sb3I6ICNmNWY1ZjU7XHJcblx0XHRib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcclxuXHRcdGJvcmRlci10b3Atd2lkdGg6IDFweDtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLWJ1dHRvbiB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblxyXG5cdFx0ZmxleDogMTtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRoZWlnaHQ6IDQ1cHg7XHJcblx0fVxyXG5cclxuXHQudW5pLWJvcmRlci1sZWZ0IHtcclxuXHRcdGJvcmRlci1sZWZ0LWNvbG9yOiAjZjBmMGYwO1xyXG5cdFx0Ym9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xyXG5cdFx0Ym9yZGVyLWxlZnQtd2lkdGg6IDFweDtcclxuXHR9XHJcblxyXG5cdC51bmktZGlhbG9nLWJ1dHRvbi10ZXh0IHtcclxuXHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdGNvbG9yOiAjMzMzO1xyXG5cdH1cclxuXHJcblx0LnVuaS1idXR0b24tY29sb3Ige1xyXG5cdFx0Y29sb3I6ICMwMDdhZmY7XHJcblx0fVxyXG5cclxuXHQudW5pLWRpYWxvZy1pbnB1dCB7XHJcblx0XHRmbGV4OiAxO1xyXG5cdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0Ym9yZGVyOiAxcHggI2VlZSBzb2xpZDtcclxuXHRcdGhlaWdodDogNDBweDtcclxuXHRcdHBhZGRpbmc6IDAgMTBweDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDVweDtcclxuXHRcdGNvbG9yOiAjNTU1O1xyXG5cdH1cclxuXHJcblx0LnVuaS1wb3B1cF9fc3VjY2VzcyB7XHJcblx0XHRjb2xvcjogIzRjZDk2NDtcclxuXHR9XHJcblxyXG5cdC51bmktcG9wdXBfX3dhcm4ge1xyXG5cdFx0Y29sb3I6ICNmMGFkNGU7XHJcblx0fVxyXG5cclxuXHQudW5pLXBvcHVwX19lcnJvciB7XHJcblx0XHRjb2xvcjogI2RkNTI0ZDtcclxuXHR9XHJcblxyXG5cdC51bmktcG9wdXBfX2luZm8ge1xyXG5cdFx0Y29sb3I6ICM5MDkzOTk7XHJcblx0fVxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///40\n");
 
/***/ }),
/* 41 */
/*!***********************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/popup.js ***!
  \***********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = {\n  data: function data() {\n    return {};\n  },\n  created: function created() {\n    this.popup = this.getParent();\n  },\n  methods: {\n    /**\r\n     * 获取父元素实例\r\n     */\n    getParent: function getParent() {\n      var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'uniPopup';\n      var parent = this.$parent;\n      var parentName = parent.$options.name;\n      while (parentName !== name) {\n        parent = parent.$parent;\n        if (!parent) return false;\n        parentName = parent.$options.name;\n      }\n      return parent;\n    }\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwL3BvcHVwLmpzIl0sIm5hbWVzIjpbImRhdGEiLCJjcmVhdGVkIiwicG9wdXAiLCJnZXRQYXJlbnQiLCJtZXRob2RzIiwibmFtZSIsInBhcmVudCIsIiRwYXJlbnQiLCJwYXJlbnROYW1lIiwiJG9wdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7OztlQUNlO0VBQ2RBLElBQUksa0JBQUc7SUFDTixPQUFPLENBRVAsQ0FBQztFQUNGLENBQUM7RUFDREMsT0FBTyxxQkFBRTtJQUNSLElBQUksQ0FBQ0MsS0FBSyxHQUFHLElBQUksQ0FBQ0MsU0FBUyxFQUFFO0VBQzlCLENBQUM7RUFDREMsT0FBTyxFQUFDO0lBQ1A7QUFDRjtBQUNBO0lBQ0VELFNBQVMsdUJBQW9CO01BQUEsSUFBbkJFLElBQUksdUVBQUcsVUFBVTtNQUMxQixJQUFJQyxNQUFNLEdBQUcsSUFBSSxDQUFDQyxPQUFPO01BQ3pCLElBQUlDLFVBQVUsR0FBR0YsTUFBTSxDQUFDRyxRQUFRLENBQUNKLElBQUk7TUFDckMsT0FBT0csVUFBVSxLQUFLSCxJQUFJLEVBQUU7UUFDM0JDLE1BQU0sR0FBR0EsTUFBTSxDQUFDQyxPQUFPO1FBQ3ZCLElBQUksQ0FBQ0QsTUFBTSxFQUFFLE9BQU8sS0FBSztRQUN6QkUsVUFBVSxHQUFHRixNQUFNLENBQUNHLFFBQVEsQ0FBQ0osSUFBSTtNQUNsQztNQUNBLE9BQU9DLE1BQU07SUFDZDtFQUNEO0FBQ0QsQ0FBQztBQUFBIiwiZmlsZSI6IjQxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuXHRkYXRhKCkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0XHJcblx0XHR9XHJcblx0fSxcclxuXHRjcmVhdGVkKCl7XHJcblx0XHR0aGlzLnBvcHVwID0gdGhpcy5nZXRQYXJlbnQoKVxyXG5cdH0sXHJcblx0bWV0aG9kczp7XHJcblx0XHQvKipcclxuXHRcdCAqIOiOt+WPlueItuWFg+e0oOWunuS+i1xyXG5cdFx0ICovXHJcblx0XHRnZXRQYXJlbnQobmFtZSA9ICd1bmlQb3B1cCcpIHtcclxuXHRcdFx0bGV0IHBhcmVudCA9IHRoaXMuJHBhcmVudDtcclxuXHRcdFx0bGV0IHBhcmVudE5hbWUgPSBwYXJlbnQuJG9wdGlvbnMubmFtZTtcclxuXHRcdFx0d2hpbGUgKHBhcmVudE5hbWUgIT09IG5hbWUpIHtcclxuXHRcdFx0XHRwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcclxuXHRcdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0cGFyZW50TmFtZSA9IHBhcmVudC4kb3B0aW9ucy5uYW1lO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBwYXJlbnQ7XHJcblx0XHR9LFxyXG5cdH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///41\n");
 
/***/ }),
/* 42 */
/*!*************************************************************!*\
  !*** ./node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
/* WEBPACK VAR INJECTION */(function(global) {
 
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.LOCALE_ZH_HANT = exports.LOCALE_ZH_HANS = exports.LOCALE_FR = exports.LOCALE_ES = exports.LOCALE_EN = exports.I18n = exports.Formatter = void 0;
exports.compileI18nJsonStr = compileI18nJsonStr;
exports.hasI18nJson = hasI18nJson;
exports.initVueI18n = initVueI18n;
exports.isI18nStr = isI18nStr;
exports.isString = void 0;
exports.normalizeLocale = normalizeLocale;
exports.parseI18nJson = parseI18nJson;
exports.resolveLocale = resolveLocale;
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 44));
var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));
var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));
var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));
var isObject = function isObject(val) {
  return val !== null && (0, _typeof2.default)(val) === 'object';
};
var defaultDelimiters = ['{', '}'];
var BaseFormatter = /*#__PURE__*/function () {
  function BaseFormatter() {
    (0, _classCallCheck2.default)(this, BaseFormatter);
    this._caches = Object.create(null);
  }
  (0, _createClass2.default)(BaseFormatter, [{
    key: "interpolate",
    value: function interpolate(message, values) {
      var delimiters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultDelimiters;
      if (!values) {
        return [message];
      }
      var tokens = this._caches[message];
      if (!tokens) {
        tokens = parse(message, delimiters);
        this._caches[message] = tokens;
      }
      return compile(tokens, values);
    }
  }]);
  return BaseFormatter;
}();
exports.Formatter = BaseFormatter;
var RE_TOKEN_LIST_VALUE = /^(?:\d)+/;
var RE_TOKEN_NAMED_VALUE = /^(?:\w)+/;
function parse(format, _ref) {
  var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
    startDelimiter = _ref2[0],
    endDelimiter = _ref2[1];
  var tokens = [];
  var position = 0;
  var text = '';
  while (position < format.length) {
    var char = format[position++];
    if (char === startDelimiter) {
      if (text) {
        tokens.push({
          type: 'text',
          value: text
        });
      }
      text = '';
      var sub = '';
      char = format[position++];
      while (char !== undefined && char !== endDelimiter) {
        sub += char;
        char = format[position++];
      }
      var isClosed = char === endDelimiter;
      var type = RE_TOKEN_LIST_VALUE.test(sub) ? 'list' : isClosed && RE_TOKEN_NAMED_VALUE.test(sub) ? 'named' : 'unknown';
      tokens.push({
        value: sub,
        type: type
      });
    }
    //  else if (char === '%') {
    //   // when found rails i18n syntax, skip text capture
    //   if (format[position] !== '{') {
    //     text += char
    //   }
    // }
    else {
      text += char;
    }
  }
  text && tokens.push({
    type: 'text',
    value: text
  });
  return tokens;
}
function compile(tokens, values) {
  var compiled = [];
  var index = 0;
  var mode = Array.isArray(values) ? 'list' : isObject(values) ? 'named' : 'unknown';
  if (mode === 'unknown') {
    return compiled;
  }
  while (index < tokens.length) {
    var token = tokens[index];
    switch (token.type) {
      case 'text':
        compiled.push(token.value);
        break;
      case 'list':
        compiled.push(values[parseInt(token.value, 10)]);
        break;
      case 'named':
        if (mode === 'named') {
          compiled.push(values[token.value]);
        } else {
          if (true) {
            console.warn("Type of token '".concat(token.type, "' and format of value '").concat(mode, "' don't match!"));
          }
        }
        break;
      case 'unknown':
        if (true) {
          console.warn("Detect 'unknown' type of token!");
        }
        break;
    }
    index++;
  }
  return compiled;
}
var LOCALE_ZH_HANS = 'zh-Hans';
exports.LOCALE_ZH_HANS = LOCALE_ZH_HANS;
var LOCALE_ZH_HANT = 'zh-Hant';
exports.LOCALE_ZH_HANT = LOCALE_ZH_HANT;
var LOCALE_EN = 'en';
exports.LOCALE_EN = LOCALE_EN;
var LOCALE_FR = 'fr';
exports.LOCALE_FR = LOCALE_FR;
var LOCALE_ES = 'es';
exports.LOCALE_ES = LOCALE_ES;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var hasOwn = function hasOwn(val, key) {
  return hasOwnProperty.call(val, key);
};
var defaultFormatter = new BaseFormatter();
function include(str, parts) {
  return !!parts.find(function (part) {
    return str.indexOf(part) !== -1;
  });
}
function startsWith(str, parts) {
  return parts.find(function (part) {
    return str.indexOf(part) === 0;
  });
}
function normalizeLocale(locale, messages) {
  if (!locale) {
    return;
  }
  locale = locale.trim().replace(/_/g, '-');
  if (messages && messages[locale]) {
    return locale;
  }
  locale = locale.toLowerCase();
  if (locale === 'chinese') {
    // 支付宝
    return LOCALE_ZH_HANS;
  }
  if (locale.indexOf('zh') === 0) {
    if (locale.indexOf('-hans') > -1) {
      return LOCALE_ZH_HANS;
    }
    if (locale.indexOf('-hant') > -1) {
      return LOCALE_ZH_HANT;
    }
    if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {
      return LOCALE_ZH_HANT;
    }
    return LOCALE_ZH_HANS;
  }
  var locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES];
  if (messages && Object.keys(messages).length > 0) {
    locales = Object.keys(messages);
  }
  var lang = startsWith(locale, locales);
  if (lang) {
    return lang;
  }
}
var I18n = /*#__PURE__*/function () {
  function I18n(_ref3) {
    var locale = _ref3.locale,
      fallbackLocale = _ref3.fallbackLocale,
      messages = _ref3.messages,
      watcher = _ref3.watcher,
      formater = _ref3.formater;
    (0, _classCallCheck2.default)(this, I18n);
    this.locale = LOCALE_EN;
    this.fallbackLocale = LOCALE_EN;
    this.message = {};
    this.messages = {};
    this.watchers = [];
    if (fallbackLocale) {
      this.fallbackLocale = fallbackLocale;
    }
    this.formater = formater || defaultFormatter;
    this.messages = messages || {};
    this.setLocale(locale || LOCALE_EN);
    if (watcher) {
      this.watchLocale(watcher);
    }
  }
  (0, _createClass2.default)(I18n, [{
    key: "setLocale",
    value: function setLocale(locale) {
      var _this = this;
      var oldLocale = this.locale;
      this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;
      if (!this.messages[this.locale]) {
        // 可能初始化时不存在
        this.messages[this.locale] = {};
      }
      this.message = this.messages[this.locale];
      // 仅发生变化时,通知
      if (oldLocale !== this.locale) {
        this.watchers.forEach(function (watcher) {
          watcher(_this.locale, oldLocale);
        });
      }
    }
  }, {
    key: "getLocale",
    value: function getLocale() {
      return this.locale;
    }
  }, {
    key: "watchLocale",
    value: function watchLocale(fn) {
      var _this2 = this;
      var index = this.watchers.push(fn) - 1;
      return function () {
        _this2.watchers.splice(index, 1);
      };
    }
  }, {
    key: "add",
    value: function add(locale, message) {
      var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
      var curMessages = this.messages[locale];
      if (curMessages) {
        if (override) {
          Object.assign(curMessages, message);
        } else {
          Object.keys(message).forEach(function (key) {
            if (!hasOwn(curMessages, key)) {
              curMessages[key] = message[key];
            }
          });
        }
      } else {
        this.messages[locale] = message;
      }
    }
  }, {
    key: "f",
    value: function f(message, values, delimiters) {
      return this.formater.interpolate(message, values, delimiters).join('');
    }
  }, {
    key: "t",
    value: function t(key, locale, values) {
      var message = this.message;
      if (typeof locale === 'string') {
        locale = normalizeLocale(locale, this.messages);
        locale && (message = this.messages[locale]);
      } else {
        values = locale;
      }
      if (!hasOwn(message, key)) {
        console.warn("Cannot translate the value of keypath ".concat(key, ". Use the value of keypath as default."));
        return key;
      }
      return this.formater.interpolate(message[key], values).join('');
    }
  }]);
  return I18n;
}();
exports.I18n = I18n;
function watchAppLocale(appVm, i18n) {
  // 需要保证 watch 的触发在组件渲染之前
  if (appVm.$watchLocale) {
    // vue2
    appVm.$watchLocale(function (newLocale) {
      i18n.setLocale(newLocale);
    });
  } else {
    appVm.$watch(function () {
      return appVm.$locale;
    }, function (newLocale) {
      i18n.setLocale(newLocale);
    });
  }
}
function getDefaultLocale() {
  if (typeof uni !== 'undefined' && uni.getLocale) {
    return uni.getLocale();
  }
  // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale
  if (typeof global !== 'undefined' && global.getLocale) {
    return global.getLocale();
  }
  return LOCALE_EN;
}
function initVueI18n(locale) {
  var messages = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  var fallbackLocale = arguments.length > 2 ? arguments[2] : undefined;
  var watcher = arguments.length > 3 ? arguments[3] : undefined;
  // 兼容旧版本入参
  if (typeof locale !== 'string') {
    var _ref4 = [messages, locale];
    locale = _ref4[0];
    messages = _ref4[1];
  }
  if (typeof locale !== 'string') {
    // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined
    locale = getDefaultLocale();
  }
  if (typeof fallbackLocale !== 'string') {
    fallbackLocale = typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale || LOCALE_EN;
  }
  var i18n = new I18n({
    locale: locale,
    fallbackLocale: fallbackLocale,
    messages: messages,
    watcher: watcher
  });
  var _t = function t(key, values) {
    if (typeof getApp !== 'function') {
      // app view
      /* eslint-disable no-func-assign */
      _t = function t(key, values) {
        return i18n.t(key, values);
      };
    } else {
      var isWatchedAppLocale = false;
      _t = function t(key, values) {
        var appVm = getApp().$vm;
        // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化
        // options: {
        //     type: Array,
        //     default () {
        //         return [{
        //             icon: 'shop',
        //             text: t("uni-goods-nav.options.shop"),
        //         }, {
        //             icon: 'cart',
        //             text: t("uni-goods-nav.options.cart")
        //         }]
        //     }
        // },
        if (appVm) {
          // 触发响应式
          appVm.$locale;
          if (!isWatchedAppLocale) {
            isWatchedAppLocale = true;
            watchAppLocale(appVm, i18n);
          }
        }
        return i18n.t(key, values);
      };
    }
    return _t(key, values);
  };
  return {
    i18n: i18n,
    f: function f(message, values, delimiters) {
      return i18n.f(message, values, delimiters);
    },
    t: function t(key, values) {
      return _t(key, values);
    },
    add: function add(locale, message) {
      var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
      return i18n.add(locale, message, override);
    },
    watch: function watch(fn) {
      return i18n.watchLocale(fn);
    },
    getLocale: function getLocale() {
      return i18n.getLocale();
    },
    setLocale: function setLocale(newLocale) {
      return i18n.setLocale(newLocale);
    }
  };
}
var isString = function isString(val) {
  return typeof val === 'string';
};
exports.isString = isString;
var formater;
function hasI18nJson(jsonObj, delimiters) {
  if (!formater) {
    formater = new BaseFormatter();
  }
  return walkJsonObj(jsonObj, function (jsonObj, key) {
    var value = jsonObj[key];
    if (isString(value)) {
      if (isI18nStr(value, delimiters)) {
        return true;
      }
    } else {
      return hasI18nJson(value, delimiters);
    }
  });
}
function parseI18nJson(jsonObj, values, delimiters) {
  if (!formater) {
    formater = new BaseFormatter();
  }
  walkJsonObj(jsonObj, function (jsonObj, key) {
    var value = jsonObj[key];
    if (isString(value)) {
      if (isI18nStr(value, delimiters)) {
        jsonObj[key] = compileStr(value, values, delimiters);
      }
    } else {
      parseI18nJson(value, values, delimiters);
    }
  });
  return jsonObj;
}
function compileI18nJsonStr(jsonStr, _ref5) {
  var locale = _ref5.locale,
    locales = _ref5.locales,
    delimiters = _ref5.delimiters;
  if (!isI18nStr(jsonStr, delimiters)) {
    return jsonStr;
  }
  if (!formater) {
    formater = new BaseFormatter();
  }
  var localeValues = [];
  Object.keys(locales).forEach(function (name) {
    if (name !== locale) {
      localeValues.push({
        locale: name,
        values: locales[name]
      });
    }
  });
  localeValues.unshift({
    locale: locale,
    values: locales[locale]
  });
  try {
    return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);
  } catch (e) {}
  return jsonStr;
}
function isI18nStr(value, delimiters) {
  return value.indexOf(delimiters[0]) > -1;
}
function compileStr(value, values, delimiters) {
  return formater.interpolate(value, values, delimiters).join('');
}
function compileValue(jsonObj, key, localeValues, delimiters) {
  var value = jsonObj[key];
  if (isString(value)) {
    // 存在国际化
    if (isI18nStr(value, delimiters)) {
      jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);
      if (localeValues.length > 1) {
        // 格式化国际化语言
        var valueLocales = jsonObj[key + 'Locales'] = {};
        localeValues.forEach(function (localValue) {
          valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);
        });
      }
    }
  } else {
    compileJsonObj(value, localeValues, delimiters);
  }
}
function compileJsonObj(jsonObj, localeValues, delimiters) {
  walkJsonObj(jsonObj, function (jsonObj, key) {
    compileValue(jsonObj, key, localeValues, delimiters);
  });
  return jsonObj;
}
function walkJsonObj(jsonObj, walk) {
  if (Array.isArray(jsonObj)) {
    for (var i = 0; i < jsonObj.length; i++) {
      if (walk(jsonObj, i)) {
        return true;
      }
    }
  } else if (isObject(jsonObj)) {
    for (var key in jsonObj) {
      if (walk(jsonObj, key)) {
        return true;
      }
    }
  }
  return false;
}
function resolveLocale(locales) {
  return function (locale) {
    if (!locale) {
      return locale;
    }
    locale = normalizeLocale(locale) || locale;
    return resolveLocaleChain(locale).find(function (locale) {
      return locales.indexOf(locale) > -1;
    });
  };
}
function resolveLocaleChain(locale) {
  var chain = [];
  var tokens = locale.split('-');
  while (tokens.length) {
    chain.push(tokens.join('-'));
    tokens.pop();
  }
  return chain;
}
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 43)))
 
/***/ }),
/* 43 */
/*!***********************************!*\
  !*** (webpack)/buildin/global.js ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
var g;
 
// This works in non-strict mode
= (function() {
    return this;
})();
 
try {
    // This works if eval is allowed (see CSP)
    g = g || new Function("return this")();
} catch (e) {
    // This works if the window reference is available
    if (typeof window === "object") g = window;
}
 
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
 
module.exports = g;
 
 
/***/ }),
/* 44 */
/*!**************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***!
  \**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ 45);
var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ 46);
var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 20);
var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ 47);
function _slicedToArray(arr, i) {
  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
}
module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 45 */
/*!***************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _arrayWithHoles(arr) {
  if (Array.isArray(arr)) return arr;
}
module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 46 */
/*!*********************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _iterableToArrayLimit(arr, i) {
  var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
  if (null != _i) {
    var _s,
      _e,
      _x,
      _r,
      _arr = [],
      _n = !0,
      _d = !1;
    try {
      if (_x = (_i = _i.call(arr)).next, 0 === i) {
        if (Object(_i) !== _i) return;
        _n = !1;
      } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {
        ;
      }
    } catch (err) {
      _d = !0, _e = err;
    } finally {
      try {
        if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
      } finally {
        if (_d) throw _e;
      }
    }
    return _arr;
  }
}
module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 47 */
/*!****************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _nonIterableRest() {
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 48 */
/*!****************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/i18n/index.js ***!
  \****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _en = _interopRequireDefault(__webpack_require__(/*! ./en.json */ 49));\nvar _zhHans = _interopRequireDefault(__webpack_require__(/*! ./zh-Hans.json */ 50));\nvar _zhHant = _interopRequireDefault(__webpack_require__(/*! ./zh-Hant.json */ 51));\nvar _default = {\n  en: _en.default,\n  'zh-Hans': _zhHans.default,\n  'zh-Hant': _zhHant.default\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwL2kxOG4vaW5kZXguanMiXSwibmFtZXMiOlsiZW4iLCJ6aEhhbnMiLCJ6aEhhbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBbUMsZUFDcEI7RUFDZEEsRUFBRSxFQUFGQSxXQUFFO0VBQ0YsU0FBUyxFQUFFQyxlQUFNO0VBQ2pCLFNBQVMsRUFBRUM7QUFDWixDQUFDO0FBQUEiLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZW4gZnJvbSAnLi9lbi5qc29uJ1xyXG5pbXBvcnQgemhIYW5zIGZyb20gJy4vemgtSGFucy5qc29uJ1xyXG5pbXBvcnQgemhIYW50IGZyb20gJy4vemgtSGFudC5qc29uJ1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcblx0ZW4sXHJcblx0J3poLUhhbnMnOiB6aEhhbnMsXHJcblx0J3poLUhhbnQnOiB6aEhhbnRcclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///48\n");
 
/***/ }),
/* 49 */
/*!***************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/i18n/en.json ***!
  \***************************************************************************************************/
/*! exports provided: uni-popup.cancel, uni-popup.ok, uni-popup.placeholder, uni-popup.title, uni-popup.shareTitle, default */
/***/ (function(module) {
 
eval("module.exports = JSON.parse(\"{\\\"uni-popup.cancel\\\":\\\"cancel\\\",\\\"uni-popup.ok\\\":\\\"ok\\\",\\\"uni-popup.placeholder\\\":\\\"pleace enter\\\",\\\"uni-popup.title\\\":\\\"Hint\\\",\\\"uni-popup.shareTitle\\\":\\\"Share to\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI0OS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///49\n");
 
/***/ }),
/* 50 */
/*!********************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json ***!
  \********************************************************************************************************/
/*! exports provided: uni-popup.cancel, uni-popup.ok, uni-popup.placeholder, uni-popup.title, uni-popup.shareTitle, default */
/***/ (function(module) {
 
eval("module.exports = JSON.parse(\"{\\\"uni-popup.cancel\\\":\\\"取消\\\",\\\"uni-popup.ok\\\":\\\"确定\\\",\\\"uni-popup.placeholder\\\":\\\"请输入\\\",\\\"uni-popup.title\\\":\\\"提示\\\",\\\"uni-popup.shareTitle\\\":\\\"分享到\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI1MC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n");
 
/***/ }),
/* 51 */
/*!********************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json ***!
  \********************************************************************************************************/
/*! exports provided: uni-popup.cancel, uni-popup.ok, uni-popup.placeholder, uni-popup.title, uni-popup.shareTitle, default */
/***/ (function(module) {
 
eval("module.exports = JSON.parse(\"{\\\"uni-popup.cancel\\\":\\\"取消\\\",\\\"uni-popup.ok\\\":\\\"確定\\\",\\\"uni-popup.placeholder\\\":\\\"請輸入\\\",\\\"uni-popup.title\\\":\\\"提示\\\",\\\"uni-popup.shareTitle\\\":\\\"分享到\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI1MS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///51\n");
 
/***/ }),
/* 52 */
/*!********************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue ***!
  \********************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_popup_message_vue_vue_type_template_id_38167fe2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-popup-message.vue?vue&type=template&id=38167fe2& */ 53);\n/* harmony import */ var _uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-popup-message.vue?vue&type=script&lang=js& */ 55);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _uni_popup_message_vue_vue_type_template_id_38167fe2___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _uni_popup_message_vue_vue_type_template_id_38167fe2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _uni_popup_message_vue_vue_type_template_id_38167fe2___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBOEg7QUFDOUg7QUFDcUU7QUFDTDs7O0FBR2hFO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLHVGQUFNO0FBQ1IsRUFBRSw0RkFBTTtBQUNSLEVBQUUscUdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsZ0dBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1wb3B1cC1tZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zODE2N2ZlMiZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3VuaS1wb3B1cC1tZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdW5pLXBvcHVwLW1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy91bmktcG9wdXAvY29tcG9uZW50cy91bmktcG9wdXAtbWVzc2FnZS91bmktcG9wdXAtbWVzc2FnZS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///52\n");
 
/***/ }),
/* 53 */
/*!***************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue?vue&type=template&id=38167fe2& ***!
  \***************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_template_id_38167fe2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup-message.vue?vue&type=template&id=38167fe2& */ 54);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_template_id_38167fe2___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_template_id_38167fe2___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_template_id_38167fe2___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_template_id_38167fe2___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 54 */
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue?vue&type=template&id=38167fe2& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "uni-popup-message"), attrs: { _i: 0 } },
    [
      _c(
        "view",
        {
          staticClass: _vm._$s(
            1,
            "sc",
            "uni-popup-message__box fixforpc-width"
          ),
          class: _vm._$s(1, "c", "uni-popup__" + _vm.type),
          attrs: { _i: 1 },
        },
        [
          _vm._t(
            "default",
            [
              _c(
                "text",
                {
                  staticClass: _vm._$s(3, "sc", "uni-popup-message-text"),
                  class: _vm._$s(3, "c", "uni-popup__" + _vm.type + "-text"),
                  attrs: { _i: 3 },
                },
                [_vm._v(_vm._$s(3, "t0-0", _vm._s(_vm.message)))]
              ),
            ],
            { _i: 2 }
          ),
        ],
        2
      ),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 55 */
/*!*********************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-popup-message.vue?vue&type=script&lang=js& */ 56);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_popup_message_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZtQixDQUFnQix1bEJBQUcsRUFBQyIsImZpbGUiOiI1NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktcG9wdXAtbWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktcG9wdXAtbWVzc2FnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n");
 
/***/ }),
/* 56 */
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _popup = _interopRequireDefault(__webpack_require__(/*! ../uni-popup/popup.js */ 41));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/**\n * PopUp 弹出层-消息提示\n * @description 弹出层-消息提示\n * @tutorial https://ext.dcloud.net.cn/plugin?id=329\n * @property {String} type = [success|warning|info|error] 主题样式\n *  @value success 成功\n * \t@value warning 提示\n * \t@value info 消息\n * \t@value error 错误\n * @property {String} message 消息提示文字\n * @property {String} duration 显示时间,设置为 0 则不会自动关闭\n */\nvar _default = {\n  name: 'uniPopupMessage',\n  mixins: [_popup.default],\n  props: {\n    /**\n     * 主题 success/warning/info/error\t  默认 success\n     */\n    type: {\n      type: String,\n      default: 'success'\n    },\n    /**\n     * 消息文字\n     */\n    message: {\n      type: String,\n      default: ''\n    },\n    /**\n     * 显示时间,设置为 0 则不会自动关闭\n     */\n    duration: {\n      type: Number,\n      default: 3000\n    },\n    maskShow: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {};\n  },\n  created: function created() {\n    this.popup.maskShow = this.maskShow;\n    this.popup.messageChild = this;\n  },\n  methods: {\n    timerClose: function timerClose() {\n      var _this = this;\n      if (this.duration === 0) return;\n      clearTimeout(this.timer);\n      this.timer = setTimeout(function () {\n        _this.popup.close();\n      }, this.duration);\n    }\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXBvcHVwL2NvbXBvbmVudHMvdW5pLXBvcHVwLW1lc3NhZ2UvdW5pLXBvcHVwLW1lc3NhZ2UudnVlIl0sIm5hbWVzIjpbIm5hbWUiLCJtaXhpbnMiLCJwcm9wcyIsInR5cGUiLCJkZWZhdWx0IiwibWVzc2FnZSIsImR1cmF0aW9uIiwibWFza1Nob3ciLCJkYXRhIiwiY3JlYXRlZCIsIm1ldGhvZHMiLCJ0aW1lckNsb3NlIiwiY2xlYXJUaW1lb3V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEEsZUFhQTtFQUNBQTtFQUNBQztFQUNBQztJQUNBO0FBQ0E7QUFDQTtJQUNBQztNQUNBQTtNQUNBQztJQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0FDO01BQ0FGO01BQ0FDO0lBQ0E7SUFDQTtBQUNBO0FBQ0E7SUFDQUU7TUFDQUg7TUFDQUM7SUFDQTtJQUNBRztNQUNBSjtNQUNBQztJQUNBO0VBQ0E7RUFDQUk7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0FDO01BQUE7TUFDQTtNQUNBQztNQUNBO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBIiwiZmlsZSI6IjU2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwidW5pLXBvcHVwLW1lc3NhZ2VcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwidW5pLXBvcHVwLW1lc3NhZ2VfX2JveCBmaXhmb3JwYy13aWR0aFwiIDpjbGFzcz1cIid1bmktcG9wdXBfXycrdHlwZVwiPlxyXG5cdFx0XHQ8c2xvdD5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cInVuaS1wb3B1cC1tZXNzYWdlLXRleHRcIiA6Y2xhc3M9XCIndW5pLXBvcHVwX18nK3R5cGUrJy10ZXh0J1wiPnt7bWVzc2FnZX19PC90ZXh0PlxyXG5cdFx0XHQ8L3Nsb3Q+XHJcblx0XHQ8L3ZpZXc+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQgcG9wdXAgZnJvbSAnLi4vdW5pLXBvcHVwL3BvcHVwLmpzJ1xyXG5cdC8qKlxyXG5cdCAqIFBvcFVwIOW8ueWHuuWxgi3mtojmga/mj5DnpLpcclxuXHQgKiBAZGVzY3JpcHRpb24g5by55Ye65bGCLea2iOaBr+aPkOekulxyXG5cdCAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0zMjlcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gdHlwZSA9IFtzdWNjZXNzfHdhcm5pbmd8aW5mb3xlcnJvcl0g5Li76aKY5qC35byPXHJcblx0ICogIEB2YWx1ZSBzdWNjZXNzIOaIkOWKn1xyXG5cdCAqIFx0QHZhbHVlIHdhcm5pbmcg5o+Q56S6XHJcblx0ICogXHRAdmFsdWUgaW5mbyDmtojmga9cclxuXHQgKiBcdEB2YWx1ZSBlcnJvciDplJnor69cclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gbWVzc2FnZSDmtojmga/mj5DnpLrmloflrZdcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gZHVyYXRpb24g5pi+56S65pe26Ze077yM6K6+572u5Li6IDAg5YiZ5LiN5Lya6Ieq5Yqo5YWz6ZetXHJcblx0ICovXHJcblxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6ICd1bmlQb3B1cE1lc3NhZ2UnLFxyXG5cdFx0bWl4aW5zOltwb3B1cF0sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHQvKipcclxuXHRcdFx0ICog5Li76aKYIHN1Y2Nlc3Mvd2FybmluZy9pbmZvL2Vycm9yXHQgIOm7mOiupCBzdWNjZXNzXHJcblx0XHRcdCAqL1xyXG5cdFx0XHR0eXBlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdzdWNjZXNzJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQvKipcclxuXHRcdFx0ICog5raI5oGv5paH5a2XXHJcblx0XHRcdCAqL1xyXG5cdFx0XHRtZXNzYWdlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdC8qKlxyXG5cdFx0XHQgKiDmmL7npLrml7bpl7TvvIzorr7nva7kuLogMCDliJnkuI3kvJroh6rliqjlhbPpl61cclxuXHRcdFx0ICovXHJcblx0XHRcdGR1cmF0aW9uOiB7XHJcblx0XHRcdFx0dHlwZTogTnVtYmVyLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDMwMDBcclxuXHRcdFx0fSxcclxuXHRcdFx0bWFza1Nob3c6e1xyXG5cdFx0XHRcdHR5cGU6Qm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OmZhbHNlXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge31cclxuXHRcdH0sXHJcblx0XHRjcmVhdGVkKCkge1xyXG5cdFx0XHR0aGlzLnBvcHVwLm1hc2tTaG93ID0gdGhpcy5tYXNrU2hvd1xyXG5cdFx0XHR0aGlzLnBvcHVwLm1lc3NhZ2VDaGlsZCA9IHRoaXNcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdHRpbWVyQ2xvc2UoKXtcclxuXHRcdFx0XHRpZih0aGlzLmR1cmF0aW9uID09PSAwKSByZXR1cm5cclxuXHRcdFx0XHRjbGVhclRpbWVvdXQodGhpcy50aW1lcikgXHJcblx0XHRcdFx0dGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCk9PntcclxuXHRcdFx0XHRcdHRoaXMucG9wdXAuY2xvc2UoKVxyXG5cdFx0XHRcdH0sdGhpcy5kdXJhdGlvbilcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiID5cclxuXHQudW5pLXBvcHVwLW1lc3NhZ2Uge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdH1cclxuXHJcblx0LnVuaS1wb3B1cC1tZXNzYWdlX19ib3gge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2UxZjNkODtcclxuXHRcdHBhZGRpbmc6IDEwcHggMTVweDtcclxuXHRcdGJvcmRlci1jb2xvcjogI2VlZTtcclxuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XHJcblx0XHRib3JkZXItd2lkdGg6IDFweDtcclxuXHRcdGZsZXg6IDE7XHJcblx0fVxyXG5cclxuXHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MDBweCkge1xyXG5cdFx0LmZpeGZvcnBjLXdpZHRoIHtcclxuXHRcdFx0bWFyZ2luLXRvcDogMjBweDtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cdFx0XHRmbGV4OiBub25lO1xyXG5cdFx0XHRtaW4td2lkdGg6IDM4MHB4O1xyXG5cdFx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRcdG1heC13aWR0aDogNTAlO1xyXG5cdFx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdFx0LyogI2lmZGVmIEFQUC1OVlVFICovXHJcblx0XHRcdG1heC13aWR0aDogNTAwcHg7XHJcblx0XHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LnVuaS1wb3B1cC1tZXNzYWdlLXRleHQge1xyXG5cdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0cGFkZGluZzogMDtcclxuXHR9XHJcblxyXG5cdC51bmktcG9wdXBfX3N1Y2Nlc3Mge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2UxZjNkODtcclxuXHR9XHJcblxyXG5cdC51bmktcG9wdXBfX3N1Y2Nlc3MtdGV4dCB7XHJcblx0XHRjb2xvcjogIzY3QzIzQTtcclxuXHR9XHJcblxyXG5cdC51bmktcG9wdXBfX3dhcm4ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZhZWNkODtcclxuXHR9XHJcblxyXG5cdC51bmktcG9wdXBfX3dhcm4tdGV4dCB7XHJcblx0XHRjb2xvcjogI0U2QTIzQztcclxuXHR9XHJcblxyXG5cdC51bmktcG9wdXBfX2Vycm9yIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGUyZTI7XHJcblx0fVxyXG5cclxuXHQudW5pLXBvcHVwX19lcnJvci10ZXh0IHtcclxuXHRcdGNvbG9yOiAjRjU2QzZDO1xyXG5cdH1cclxuXHJcblx0LnVuaS1wb3B1cF9faW5mbyB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRjJGNkZDO1xyXG5cdH1cclxuXHJcblx0LnVuaS1wb3B1cF9faW5mby10ZXh0IHtcclxuXHRcdGNvbG9yOiAjOTA5Mzk5O1xyXG5cdH1cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///56\n");
 
/***/ }),
/* 57 */
/*!***************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/home/home.vue?vue&type=script&lang=js&mpType=page ***!
  \***************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./home.vue?vue&type=script&lang=js&mpType=page */ 58);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_home_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1sQixDQUFnQixxbEJBQUcsRUFBQyIsImZpbGUiOiI1Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9ob21lLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaG9tZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///57\n");
 
/***/ }),
/* 58 */
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/pages/home/home.vue?vue&type=script&lang=js&mpType=page ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 59));\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 60));\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nvar _default = {\n  data: function data() {\n    return {\n      type: 'center',\n      msgType: 'success',\n      messageType: 'success',\n      messageText: '这是一条成功提示',\n      dialogTitle: '',\n      value: '',\n      dialogContent: '确认开始该笔补货物料?',\n      matnr: '',\n      dialogType: 0,\n      series: [],\n      homeViewShow: false,\n      infoViewShow: true,\n      errorInfoViewShow: false,\n      homeMode: [],\n      infoMode: [],\n      errorInfoMode: [],\n      baseInfo: {\n        xDistance: 1,\n        yDistance: 2,\n        xDuration: 3,\n        yDuration: 4,\n        usedPr: 50,\n        used: 3537,\n        stockCount: '',\n        emptyCount: '',\n        noneCount: ''\n      },\n      chartsData: {\n        \"Line\": {\n          \"categories\": [],\n          \"series\": []\n        },\n        \"Pie\": {\n          \"series\": [{\n            \"data\": []\n          }]\n        }\n      },\n      duration: 1000,\n      calendar: '',\n      ringOpts: {},\n      chartsDataLine1: {},\n      chartsDataPie2: {},\n      fontSize: '',\n      height: '',\n      showCharts: false,\n      ejectShow: false,\n      baseIP: '',\n      basePort: '',\n      baseLedId: '',\n      baseCrnId: '',\n      baseUrl: '',\n      info: null,\n      error: null,\n      infoType: 0,\n      text: '',\n      infoText: {\n        title: '',\n        staNo: \"\",\n        matnr: \"\",\n        maknx: \"\",\n        specs: \"\",\n        count: \"\",\n        error: \"\"\n      },\n      swiperList: [],\n      inspect: 'inspectRed'\n    };\n  },\n  onShow: function onShow() {\n    // 隐藏时间,电量,信号等\n\n    plus.navigator.setFullscreen(true);\n  },\n  mounted: function mounted() {\n    var that = this;\n    var BaseIP = uni.getStorageSync('BaseIp');\n    var BaseLedId = uni.getStorageSync('BaseLedId');\n    var BasePort = uni.getStorageSync('BasePort');\n    var BaseCrnId = uni.getStorageSync('BaseCrnId');\n    var PROJ = uni.getStorageSync('UPROJ');\n    that.baseUrl = PROJ;\n    that.baseIP = BaseIP;\n    that.baseLedId = BaseLedId;\n    that.basePort = BasePort;\n    that.baseCrnId = BaseCrnId;\n    this.getUrl();\n  },\n  onLoad: function onLoad() {\n    var _this = this;\n    setInterval(function () {\n      // this.getServerData()\n      // this.getDate2()\n      // this.getUrl()\n      // this.getInfo()\n      // this.getError()\n      // this.getInfo2()\n      // this.getError2()\n      _this.getInfo3();\n      // this.getInfo4()\n      // this.controller()\n    }, 1000);\n\n    // setInterval(()=>{\n    // \tthis.changeErrorShow()\n    // },5000)\n\n    // setInterval(()=>{\n    // \tthis.getServerData()\n    // \tthis.initlineChart()\n    // \tthis.initPieChart()\n    // \tthis.getOther()\n    // },600000)\n  },\n\n  methods: {\n    // 日历 服务器\n    getDate2: function getDate2() {\n      var that = this;\n      if (that.commonUrl == 'undefined') {\n        return;\n      }\n      uni.request({\n        url: that.commonUrl + \"/monitor/date\",\n        method: \"GET\",\n        success: function success(result) {\n          // console.log(result);\n          var res = result.data.data;\n          that.calendar = res.year + \"年\" + res.month + \"月\" + res.day + \"日 \" + res.hour + \":\" + res.minute + \":\" + res.second + \" \" + res.week;\n          that.currDate = res.year + \"/\" + res.month + \"/\" + res.day;\n        },\n        fail: function fail(res) {}\n      });\n    },\n    // 开始按钮\n    complete: function complete(matnr) {\n      this.matnr = matnr;\n      this.dialogTitle = \"\\u54C1\\u756A\\uFF1A\".concat(matnr);\n      this.dialogType = 1;\n      this.dialogContent = '确认开始该笔补货物料?';\n      this.$refs.inputDialog.open();\n    },\n    // 结束按钮\n    cancel: function cancel(matnr) {\n      this.matnr = matnr;\n      this.dialogTitle = \"\\u54C1\\u756A\\uFF1A\".concat(matnr);\n      this.dialogType = 2;\n      this.dialogContent = '确认完成该笔补货物料?';\n      this.$refs.inputDialog.open();\n    },\n    // 弹窗取消\n    dialogClose: function dialogClose() {\n      this.$refs.inputDialog.close();\n    },\n    // 弹窗确认\n    dialogConfirm: function dialogConfirm() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/LocDetlReplenishmentController/hand/control/re\",\n        method: \"GET\",\n        data: {\n          matnr: that.matnr,\n          type: that.dialogType\n        },\n        success: function success(result) {\n          __f__(\"log\", result, \" at pages/home/home.vue:334\");\n          var res = result.data;\n          if (res.code === 200) {\n            that.messageType = 'success';\n            that.messageText = \"\\u64CD\\u4F5C\\u6210\\u529F\";\n            that.$refs.message.open();\n          } else {\n            that.messageType = 'error';\n            that.messageText = res.msg;\n            that.$refs.message.open();\n          }\n        }\n      });\n    },\n    getUrl: function getUrl() {\n      this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + \"/\" + this.baseUrl;\n    },\n    getServerData: function getServerData() {\n      this.chartsDataLine1 = JSON.parse(JSON.stringify(this.chartsData.Line));\n      this.chartsDataPie2 = JSON.parse(JSON.stringify(this.chartsData.Pie));\n    },\n    // 获取错误信息\n    getInfo2: function getInfo2() {\n      var that = this;\n      var result = _data.default.dataInfo2;\n      var res = result.data;\n      if (res.data && res.data !== \"\") {\n        if (that.infoType == 2 || that.infoType == 3) {\n          return;\n        }\n        // infoType1:只有拣料等信息\n        that.infoType = 1;\n        if (res.data[0].ioType === 101) {\n          that.infoText.title = '全板出库';\n        } else if (res.data[0].ioType === 103) {\n          that.infoText.title = '检料出库';\n        }\n        that.infoText.staNo = res.data[0].staNo;\n        that.swiperList = res.data[0].matDtos;\n        // that.infoText.matnr = res.data[0].matDtos[0].matnr\n        // that.infoText.specs = res.data[0].matDtos[0].specs\n        // that.infoText.maknx = res.data[0].matDtos[0].maknx\n        // that.infoText.count = res.data[0].matDtos[0].count\n      } else {\n        if (that.infoType == 2 || that.infoType == 3) {\n          return;\n        }\n        that.infoType = 0;\n      }\n    },\n    getInfo3: function getInfo3() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/open/loc/query/auth/v1\",\n        method: \"GET\",\n        data: {\n          ledId: that.baseLedId\n        },\n        success: function success(result) {\n          // console.log(result);\n          var res = result.data;\n          var _iterator = _createForOfIteratorHelper(res.data),\n            _step;\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              var k = _step.value;\n              if (k.inspect == 1) {\n                k['inspectSts'] = 'inspectWhite';\n              } else {\n                k['inspectSts'] = 'inspectRed';\n              }\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          that.swiperList = res.data;\n        }\n      });\n    },\n    getInfo4: function getInfo4() {\n      var result = _data.default.dataError3;\n      var res = result.data;\n      var _iterator2 = _createForOfIteratorHelper(res.data),\n        _step2;\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var k = _step2.value;\n          if (k.inspect == 1) {\n            k['inspectSts'] = 'inspectWhite';\n          } else {\n            k['inspectSts'] = 'inspectRed';\n          }\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n      this.swiperList = res.data;\n    },\n    getError2: function getError2() {\n      var that = this;\n      var result = _data.default.dataError2;\n      var res = result.data;\n      if (res.data && res.data !== \"\") {\n        var errorInfo = res.data;\n        if (that.infoType == 1) {\n          that.infoType = 3;\n          that.infoText.title = \"异常\";\n          that.infoText.error = errorInfo;\n          return;\n        }\n        that.infoType = 2;\n        that.infoText.title = \"异常\";\n        that.infoText.error = errorInfo;\n      } else {\n        if (that.infoType == 1) {\n          return;\n        }\n        that.infoType = 0;\n      }\n    },\n    getInfo: function getInfo() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/led\",\n        method: \"GET\",\n        data: {\n          ledId: that.baseLedId\n        },\n        success: function success(result) {\n          // console.log(result);\n          var res = result.data;\n          if (res.data && res.data !== \"\") {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            // infoType1:只有拣料等信息\n            that.infoType = 1;\n            if (res.data[0].ioType === 101) {\n              that.infoText.title = '全板出库';\n            } else if (res.data[0].ioType === 103) {\n              that.infoText.title = '检料出库';\n            } else if (res.data[0].ioType === 107) {\n              that.infoText.title = '盘点出库';\n            }\n            that.infoText.staNo = res.data[0].staNo;\n            that.swiperList = res.data[0].matDtos;\n            // that.infoText.matnr = res.data[0].matDtos[0].matnr\n            // that.infoText.specs = res.data[0].matDtos[0].specs\n            // that.infoText.maknx = res.data[0].matDtos[0].maknx\n            // that.infoText.count = res.data[0].matDtos[0].count\n          } else {\n            if (that.infoType == 2 || that.infoType == 3) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        }\n      });\n    },\n    getError: function getError() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/led/error\",\n        data: {\n          ledId: that.baseLedId\n        },\n        method: \"GET\",\n        success: function success(result) {\n          __f__(\"log\", result, \" at pages/home/home.vue:484\");\n          var res = result.data;\n          if (res.data && res.data !== \"\") {\n            var errorInfo = res.data;\n            if (that.infoType == 1) {\n              that.infoType = 3;\n              that.infoText.title = \"其他信息\";\n              // that.infoText.title = \"异常\"\n              that.infoText.error = errorInfo;\n              return;\n            }\n            that.infoType = 2;\n            that.infoText.title = \"其他信息\";\n            // that.infoText.title = \"异常\"\n            that.infoText.error = errorInfo;\n          } else {\n            if (that.infoType == 1) {\n              return;\n            }\n            that.infoType = 0;\n          }\n        }\n      });\n    },\n    // 控制器\n    controller: function controller() {\n      var _this2 = this;\n      switch (this.infoType) {\n        // 有信息 但 没有错误信息\n        case 1:\n          if (this.homeViewShow) {\n            this.homeViewShow = false;\n            this.homeMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.infoViewShow = true;\n              _this2.infoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.errorInfoViewShow) {\n            this.errorInfoViewShow = false;\n            this.errorInfoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.infoViewShow = true;\n              _this2.infoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n        // 有信息 且 有错误信息\n        case 2:\n          if (this.homeViewShow) {\n            this.homeViewShow = false;\n            this.homeMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.infoViewShow) {\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n        // 有信息 且 有错误信息\n        case 3:\n          if (this.homeViewShow) {\n            this.homeViewShow = false;\n            this.homeMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.infoViewShow) {\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.errorInfoViewShow = true;\n              _this2.errorInfoMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n        default:\n          if (this.errorInfoViewShow) {\n            this.errorInfoViewShow = false;\n            this.errorInfoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.homeViewShow = true;\n              _this2.homeMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          } else if (this.infoViewShow) {\n            this.infoViewShow = false;\n            this.infoMode = ['fade', 'slide-bottom'];\n            setTimeout(function () {\n              _this2.homeViewShow = true;\n              _this2.homeMode = ['fade', 'slide-bottom'];\n            }, 1000);\n          }\n          return;\n      }\n    },\n    // 主屏幕\n    handle: function handle(type) {\n      this.homeViewShow = !this.homeViewShow;\n      this.modeClass = type;\n    },\n    // 拣料\n    handle1: function handle1(type) {\n      this.infoViewShow = !this.infoViewShow;\n      this.modeClass = type;\n    },\n    // 异常\n    handle2: function handle2(type) {\n      this.errorInfoViewShow = !this.errorInfoViewShow;\n      this.modeClass = type;\n    },\n    // 配置\n    ejected: function ejected() {\n      this.ejectShow = true;\n    },\n    // 取消配置\n    ejectClose: function ejectClose() {\n      this.ejectShow = false;\n    },\n    // 确认配置\n    ejectConfirm: function ejectConfirm() {\n      uni.setStorageSync('BaseIp', this.baseIP);\n      uni.setStorageSync('BaseLedId', this.baseLedId);\n      uni.setStorageSync('BasePort', this.basePort);\n      uni.setStorageSync('BaseCrnId', this.baseCrnId);\n      uni.setStorageSync('UPROJ', this.baseUrl);\n      this.getUrl();\n      this.ejectShow = false;\n    },\n    // 日历\n    getDate: function getDate() {\n      var dt = new Date();\n      var year, month, day, hours, minutes, seconds, weeks;\n      year = dt.getFullYear();\n      month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;\n      day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();\n      hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();\n      minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();\n      seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();\n      weeks = dt.getDay();\n      switch (weeks) {\n        case 0:\n          weeks = \"星期日\";\n          break;\n        case 1:\n          weeks = \"星期一\";\n          break;\n        case 2:\n          weeks = \"星期二\";\n          break;\n        case 3:\n          weeks = \"星期三\";\n          break;\n        case 4:\n          weeks = \"星期四\";\n          break;\n        case 5:\n          weeks = \"星期五\";\n          break;\n        default:\n          weeks = \"星期六\";\n      }\n      this.calendar = year + \"年\" + month + \"月\" + day + \"日 \" + hours + \":\" + minutes + \":\" + seconds + \" \" + weeks;\n    },\n    getDateFormat: function getDateFormat(value) {\n      var date = new Date(); // 获取当前时间\n      date.setDate(date.getDate() + value); // 设置天数 -1 天\n      var m = date.getMonth() + 1;\n      var d = date.getDate();\n      var newDate = m + '-' + d;\n      return newDate;\n    },\n    /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/line/charts\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {\n            that.chartsData.Line.categories = [that.getDateFormat(-11), that.getDateFormat(-10), that.getDateFormat(-9), that.getDateFormat(-8), that.getDateFormat(-7), that.getDateFormat(-6), that.getDateFormat(-5), that.getDateFormat(-4), that.getDateFormat(-3), that.getDateFormat(-2), that.getDateFormat(-1), that.getDateFormat(0)];\n            that.chartsData.Line.series = res.data.rows;\n          }\n        }\n      });\n    },\n    /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/loc/rep\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {\n            that.chartsData.Pie.series[0].data = res.data.pie;\n            that.baseInfo.stockCount = res.data.stockCunt;\n            that.baseInfo.emptyCount = res.data.emptyCount;\n            that.baseInfo.noneCount = res.data.noneCount;\n            that.baseInfo.used = res.data.used;\n            that.baseInfo.usedPr = res.data.usedPr;\n          }\n        }\n      });\n    },\n    getOther: function getOther() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/other\",\n        data: {\n          crnId: that.baseCrnId,\n          ledId: that.baseLedId\n        },\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {\n            that.baseInfo.xDistance = res.data.xDistance;\n            that.baseInfo.yDistance = res.data.yDistance;\n            that.baseInfo.xDuration = res.data.xDuration;\n            that.baseInfo.yDuration = res.data.yDuration;\n          } else if (res.code === 403) {} else {}\n        }\n      });\n    }\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwidHlwZSIsIm1zZ1R5cGUiLCJtZXNzYWdlVHlwZSIsIm1lc3NhZ2VUZXh0IiwiZGlhbG9nVGl0bGUiLCJ2YWx1ZSIsImRpYWxvZ0NvbnRlbnQiLCJtYXRuciIsImRpYWxvZ1R5cGUiLCJzZXJpZXMiLCJob21lVmlld1Nob3ciLCJpbmZvVmlld1Nob3ciLCJlcnJvckluZm9WaWV3U2hvdyIsImhvbWVNb2RlIiwiaW5mb01vZGUiLCJlcnJvckluZm9Nb2RlIiwiYmFzZUluZm8iLCJ4RGlzdGFuY2UiLCJ5RGlzdGFuY2UiLCJ4RHVyYXRpb24iLCJ5RHVyYXRpb24iLCJ1c2VkUHIiLCJ1c2VkIiwic3RvY2tDb3VudCIsImVtcHR5Q291bnQiLCJub25lQ291bnQiLCJjaGFydHNEYXRhIiwiZHVyYXRpb24iLCJjYWxlbmRhciIsInJpbmdPcHRzIiwiY2hhcnRzRGF0YUxpbmUxIiwiY2hhcnRzRGF0YVBpZTIiLCJmb250U2l6ZSIsImhlaWdodCIsInNob3dDaGFydHMiLCJlamVjdFNob3ciLCJiYXNlSVAiLCJiYXNlUG9ydCIsImJhc2VMZWRJZCIsImJhc2VDcm5JZCIsImJhc2VVcmwiLCJpbmZvIiwiZXJyb3IiLCJpbmZvVHlwZSIsInRleHQiLCJpbmZvVGV4dCIsInRpdGxlIiwic3RhTm8iLCJtYWtueCIsInNwZWNzIiwiY291bnQiLCJzd2lwZXJMaXN0IiwiaW5zcGVjdCIsIm9uU2hvdyIsInBsdXMiLCJtb3VudGVkIiwidGhhdCIsIm9uTG9hZCIsInNldEludGVydmFsIiwibWV0aG9kcyIsImdldERhdGUyIiwidW5pIiwidXJsIiwibWV0aG9kIiwic3VjY2VzcyIsImZhaWwiLCJjb21wbGV0ZSIsImNhbmNlbCIsImRpYWxvZ0Nsb3NlIiwiZGlhbG9nQ29uZmlybSIsImdldFVybCIsImdldFNlcnZlckRhdGEiLCJnZXRJbmZvMiIsImdldEluZm8zIiwibGVkSWQiLCJyZXMiLCJrIiwiZ2V0SW5mbzQiLCJnZXRFcnJvcjIiLCJnZXRJbmZvIiwiZ2V0RXJyb3IiLCJjb250cm9sbGVyIiwic2V0VGltZW91dCIsImhhbmRsZSIsImhhbmRsZTEiLCJoYW5kbGUyIiwiZWplY3RlZCIsImVqZWN0Q2xvc2UiLCJlamVjdENvbmZpcm0iLCJnZXREYXRlIiwieWVhciIsIm1vbnRoIiwiZGF5IiwiaG91cnMiLCJtaW51dGVzIiwic2Vjb25kcyIsIndlZWtzIiwiZ2V0RGF0ZUZvcm1hdCIsImRhdGUiLCJpbml0bGluZUNoYXJ0IiwiaW5pdFBpZUNoYXJ0IiwiZ2V0T3RoZXIiLCJjcm5JZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW1LQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFDQTtFQUNBQTtJQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7TUFDQUM7UUFDQTtVQUNBO1VBQ0E7UUFDQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztRQUNBQztRQUNBQztRQUNBeEM7UUFDQXlDO1FBQ0FDO1FBQ0FDO1FBQ0FSO01BQ0E7TUFDQVMsY0FFQTtNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFDQTs7SUFFQUM7RUFFQTtFQUNBQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBQztJQUNBQTtJQUNBQTtJQUNBQTtJQUNBQTtJQUNBO0VBQ0E7RUFDQUM7SUFBQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7O0lBRUE7SUFDQTtJQUNBOztJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQUNBOztFQUNBQztJQUNBO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO01BQ0E7TUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7VUFDQTtVQUNBO1VBQ0FSO1VBQ0FBO1FBQ0E7UUFDQVMsMEJBQ0E7TUFFQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQVI7UUFDQUM7UUFDQUM7UUFDQWhFO1VBQUFRO1VBQUFQO1FBQUE7UUFDQWdFO1VBQ0E7VUFDQTtVQUNBO1lBQ0FSO1lBQ0FBO1lBQ0FBO1VBQ0E7WUFDQUE7WUFDQUE7WUFDQUE7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBYztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7VUFDQTtRQUNBO1FBQ0E7UUFDQWhCO1FBQ0E7VUFDQUE7UUFDQTtVQUNBQTtRQUNBO1FBQ0FBO1FBQ0FBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO1VBQ0E7UUFDQTtRQUNBQTtNQUNBO0lBQ0E7SUFDQWlCO01BQ0E7TUFDQVo7UUFDQUM7UUFDQUM7UUFDQWhFO1VBQUEyRTtRQUFBO1FBQ0FWO1VBQ0E7VUFDQTtVQUFBLDJDQUNBVztZQUFBO1VBQUE7WUFBQTtjQUFBO2NBQ0E7Z0JBQ0FDO2NBQ0E7Z0JBQ0FBO2NBQ0E7WUFDQTtVQUFBO1lBQUE7VUFBQTtZQUFBO1VBQUE7VUFDQXBCO1FBQ0E7TUFDQTtJQUNBO0lBQ0FxQjtNQUNBO01BQ0E7TUFBQSw0Q0FDQUY7UUFBQTtNQUFBO1FBQUE7VUFBQTtVQUNBO1lBQ0FDO1VBQ0E7WUFDQUE7VUFFQTtRQUNBO01BQUE7UUFBQTtNQUFBO1FBQUE7TUFBQTtNQUNBO0lBQ0E7SUFDQUU7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBO1FBQ0E7VUFDQXRCO1VBQ0FBO1VBQ0FBO1VBQ0E7UUFDQTtRQUNBQTtRQUNBQTtRQUNBQTtNQUNBO1FBQ0E7VUFDQTtRQUNBO1FBQ0FBO01BQ0E7SUFDQTtJQUNBdUI7TUFDQTtNQUNBbEI7UUFDQUM7UUFDQUM7UUFDQWhFO1VBQUEyRTtRQUFBO1FBQ0FWO1VBQ0E7VUFDQTtVQUNBO1lBQ0E7Y0FDQTtZQUNBO1lBQ0E7WUFDQVI7WUFDQTtjQUNBQTtZQUNBO2NBQ0FBO1lBQ0E7Y0FDQUE7WUFDQTtZQUNBQTtZQUNBQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1VBQ0E7WUFDQTtjQUNBO1lBQ0E7WUFDQUE7VUFDQTtRQUNBO01BQ0E7SUFFQTtJQUNBd0I7TUFDQTtNQUNBbkI7UUFDQUM7UUFDQS9EO1VBQUEyRTtRQUFBO1FBQ0FYO1FBQ0FDO1VBQ0E7VUFDQTtVQUNBO1lBQ0E7WUFDQTtjQUNBUjtjQUNBQTtjQUNBO2NBQ0FBO2NBQ0E7WUFDQTtZQUNBQTtZQUNBQTtZQUNBO1lBQ0FBO1VBQ0E7WUFDQTtjQUNBO1lBQ0E7WUFDQUE7VUFDQTtRQUNBO01BQ0E7SUFFQTtJQUNBO0lBQ0F5QjtNQUFBO01BQ0E7UUFDQTtRQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0FDO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0FBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7VUFFQTtRQUNBO1FBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQUE7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQUE7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtVQUNBO1FBQ0E7UUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBQTtjQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBQTtjQUNBO2NBQ0E7WUFDQTtVQUNBO1VBQ0E7UUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBQTtjQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBQTtjQUNBO2NBQ0E7WUFDQTtVQUNBO1VBQ0E7TUFBQTtJQUdBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTNCO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQTRCO01BQ0E7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBO1FBQ0E7VUFBQUE7VUFBQTtRQUNBO1VBQUFBO1VBQUE7UUFDQTtVQUFBQTtVQUFBO1FBQ0E7VUFBQUE7VUFBQTtRQUNBO1VBQUFBO1VBQUE7UUFDQTtVQUFBQTtVQUFBO1FBQ0E7VUFBQUE7TUFBQTtNQUVBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQSwySEFDQUM7TUFDQTtNQUNBdEM7UUFDQUM7UUFDQUM7UUFDQUM7VUFDQTtVQUNBO1lBQ0FSLG1DQUNBQSxrR0FDQUEsZ0dBQ0FBO1lBQ0FBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQSwwSEFDQTRDO01BQ0E7TUFDQXZDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1VBQ0E7VUFDQTtZQUNBUjtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E2QztNQUNBO01BQ0F4QztRQUNBQztRQUNBL0Q7VUFDQXVHO1VBQ0E1QjtRQUNBO1FBQ0FWO1VBQ0E7VUFDQTtZQUNBUjtZQUNBQTtZQUNBQTtZQUNBQTtVQUNBLDhCQUVBLFFBRUE7UUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUVBO0FBQUEsMkIiLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgICA8dmlldyBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgIDwhLS0g5YWo5p2/L+aLo+aWmeS/oeaBryAtLT5cclxuICAgICAgICA8dW5pLXRyYW5zaXRpb24gOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6bW9kZS1jbGFzcz1cImluZm9Nb2RlXCIgOnNob3c9XCJpbmZvVmlld1Nob3dcIj5cclxuICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJob21lLXZpZXdcIj5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiaGVhZFwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkLWxlZnRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImhlYWQtbWlkXCI+XHJcblx0XHRcdFx0XHRcdDx0ZXh0IHN0eWxlPVwiei1pbmRleDogOTk5O1wiPuihpei0p+WNleWIl+ihqDwvdGV4dD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaGVhZC1yaWdodFwiPjwvdmlldz5cclxuICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgIDwhLS0g5pel5Y6GIC0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8dmlldyBjbGFzcz1cInRpbWUtdG9vbHNcIj57e2NhbGVuZGFyfX08L3ZpZXc+IC0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8dmlldyBjbGFzcz1cImJ1dHRvbi1sZWZ0XCIgQGNsaWNrPVwiZWplY3RlZCgpXCI+PC92aWV3PiAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHZpZXcgY2xhc3M9XCJidXR0b24tcmlnaHRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+IC0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSDkuLvkvZMgLS0+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImluZm8tbWFpblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiaW5mby1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHktYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDmlofmnKzlrrnlmaggLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cInRleHQtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gaGVhZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cInN3aXBlci1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiaXRlbS1ib3gxXCIgc3R5bGU9XCJ3aWR0aDogNSU7XCI+5bqP5Y+3PC92aWV3PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cIml0ZW0tYm94MVwiIHN0eWxlPVwid2lkdGg6IDIwJTtcIj7lk4Hnlao8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiaXRlbS1ib3gxXCIgc3R5bGU9XCJ3aWR0aDogMTUlO1wiPuW+heihpei0p+aVsOmHjzwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtLWJveDFcIiBzdHlsZT1cIndpZHRoOiAxNSU7XCI+5bey6KGl6LSn5pWw6YePPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW0tYm94MVwiIHN0eWxlPVwid2lkdGg6IDE1JTtcIj7ooaXotKfnirbmgIE8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbS1ib3gxXCIgc3R5bGU9XCJ3aWR0aDogMTAlO1wiPuWIm+W7uuaXtumXtDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtLWJveDFcIiBzdHlsZT1cIndpZHRoOiAxMCU7XCI+6aKE6K6h5a6M5oiQ5pe26Ze0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW0tYm94MVwiIHN0eWxlPVwid2lkdGg6IDkuNSU7XCI+5pON5L2cPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJvZHkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJzd2lwZXItYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHN3aXBlciDkuIDkupvor7TmmI5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lyY3VsYXIg5piv5ZCm6YeH55So6KGU5o6l5ruR5Yqo77yM5Y2z5pKt5pS+5Yiw5pyr5bC+5ZCO6YeN5paw5Zue5Yiw5byA5aS0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsIOa7keWKqOaWueWQkeaYr+WQpuS4uue6teWQkSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheS1tdWx0aXBsZS1pdGVtcyDlkIzml7bmmL7npLrnmoTmu5HlnZfmlbDph48gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzd2lwZXIgY2xhc3M9XCJzd2lwZXItYm9keS1tYWluXCIgdmVydGljYWw9XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXktbXVsdGlwbGUtaXRlbXM9XCIxMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpcmN1bGFyPVwidHJ1ZVwiIDphdXRvcGxheT1cInRydWVcIiA6aW50ZXJ2YWw9XCIzMDAwXCIgOmR1cmF0aW9uPVwiMTAwMFwiIGRpc2FibGUtdG91Y2g9J3RydWUnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN3aXBlci1pdGVtIDpjbGFzcz1cIml0ZW0uaW5zcGVjdFN0c1wiIGNsYXNzPVwic3dpcGVyLWl0ZW1cIiAgdi1mb3I9XCIoaXRlbSxpKSBpbiBzd2lwZXJMaXN0XCIgOmtleT1cImlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cIml0ZW0tYm94XCIgc3R5bGU9XCJ3aWR0aDogNSU7XCIgPnt7aSsxfX08L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJpdGVtLWJveFwiIHN0eWxlPVwid2lkdGg6IDIwJTtcIj57e2l0ZW0ubWFrdHh9fTwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cIml0ZW0tYm94XCIgc3R5bGU9XCJ3aWR0aDogMTUlO1wiPnt7aXRlbS5zdG9yZVJlcGxlbmlzaG1lbnR9fTwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cIml0ZW0tYm94XCIgc3R5bGU9XCJ3aWR0aDogMTUlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgc3R5bGU9XCJjb2xvcjogIzI1RTUxRSA7XCIgIHYtaWY9XCJpdGVtLmluc3BlY3RTdHMgPT0gJ2luc3BlY3RXaGl0ZSdcIj57e2l0ZW0uc3RvcmVBZGR9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgdi1pZj1cIml0ZW0uaW5zcGVjdFN0cyA9PSAnaW5zcGVjdFJlZCdcIj57e2l0ZW0uc3RvcmVBZGR9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cIml0ZW0tYm94XCIgc3R5bGU9XCJ3aWR0aDogMTUlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImJlQmF0Y2gxXCIgdi1pZj1cIml0ZW0uYmVCYXRjaCA9PSAyIFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7aXRlbS5iZUJhdGNoJH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJiZUJhdGNoMlwiIHYtaWY9XCJpdGVtLmJlQmF0Y2ggIT0gMiBcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7e2l0ZW0uYmVCYXRjaCR9fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHRleHQgY2xhc3M9XCJiZUJhdGNoM1wiIHYtaWY9XCJpdGVtLmluc3BlY3RTdHMgIT0gJ2luc3BlY3RXaGl0ZSdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7e2l0ZW0uYmVCYXRjaCR9fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3RleHQ+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtLWJveFwiIHN0eWxlPVwid2lkdGg6IDEwJTtcIj57e2l0ZW0uYXBwZVRpbWUkfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW0tYm94XCIgc3R5bGU9XCJ3aWR0aDogMTAlO1wiPnt7aXRlbS5hcHBlVGltZSR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbS1ib3hcIiBzdHlsZT1cIndpZHRoOiA5LjUlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzPVwic3RhcnQtYnRuXCIgc2l6ZT1cIm1pbmlcIiB2LWlmPVwiaXRlbS5iZUJhdGNoID09IDFcIiBAY2xpY2s9XCJjb21wbGV0ZShpdGVtLm1hdG5yKVwiPuW8gOWnizwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzPVwiZW5kLWJ0blwiIHNpemU9XCJtaW5pXCIgdi1pZj1cIml0ZW0uYmVCYXRjaCA9PSAyXCIgQGNsaWNrPVwiY2FuY2VsKGl0ZW0ubWF0bnIpXCI+5a6M5oiQPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N3aXBlci1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N3aXBlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwveS1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgPC91bmktdHJhbnNpdGlvbj5cclxuICAgICAgICA8IS0tIOW8guW4uOS/oeaBryAtLT5cclxuICAgICAgICA8dW5pLXRyYW5zaXRpb24gOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6bW9kZS1jbGFzcz1cImVycm9ySW5mb01vZGVcIiA6c2hvdz1cImVycm9ySW5mb1ZpZXdTaG93XCI+XHJcbiAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZXJyb3ItaW5mby12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImhlYWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGV4dD57e2luZm9UZXh0LnRpdGxlfX08L3RleHQ+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8IS0tIOaXpeWOhiAtLT5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwidGltZS10b29sc1wiPnt7Y2FsZW5kYXJ9fTwvdmlldz5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIj48L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImJ1dHRvbi1yaWdodFwiPjwvdmlldz5cclxuICAgICAgICAgICAgICAgIDwhLS0g5Li75L2TIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJpbmZvLW1haW5cIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJpbmZvLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8eS1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImluZm8tYm94LXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImZsZXgtY29sIGluZm8tYm94LXRleHQtaXRlbVwiPnt7aW5mb1RleHQuZXJyb3J9fTwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC95LWJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICA8L3VuaS10cmFuc2l0aW9uPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDwhLS0g6Ieq5a6a5LmJ5by55Ye65bGCIC0tPlxyXG4gICAgICAgIDx2aWV3IGNsYXNzPVwiZWplY3QtbWFza1wiIHYtc2hvdz1cImVqZWN0U2hvd1wiPlxyXG4gICAgICAgICAgICA8dmlldyBjbGFzcz1cImVqZWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIOW8ueWHunRpdGxlIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJlamVjdC10aXRsZVwiPuS/ruaUuSAvIOmFjee9rjwvdmlldz5cclxuICAgICAgICAgICAgICAgIDwhLS0gaW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImVqZWN0LWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZGVzY1wiPmlw77yaPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZUlQXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZGVzY1wiPnBvcnTvvJo8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlUG9ydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImRlc2NcIj5sZWRJZO+8mjwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VMZWRJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImRlc2NcIj5Dcm5JZO+8mjwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VDcm5JZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBjbGFzcz1cImRlc2NcIj5VcmzvvJo8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmlldz5cclxuICAgICAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgICAgICA8IS0tIGJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiZWplY3QtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJidXR0b24taXRlbVwiIEBjbGljaz1cImVqZWN0Q2xvc2VcIj7lj5Yg5raIPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgICAgIDx2aWV3IGNsYXNzPVwiYnV0dG9uLWl0ZW1cIiBAY2xpY2s9XCJlamVjdENvbmZpcm1cIj7noa4g6K6kPC92aWV3PlxyXG4gICAgICAgICAgICAgICAgPC92aWV3PlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgPC92aWV3PlxyXG5cdFx0PCEtLSDnoa7orqTmmK/lkKbmk43kvZwgLS0+XHJcblx0XHQ8dmlldz5cclxuXHRcdFx0PHVuaS1wb3B1cCByZWY9XCJpbnB1dERpYWxvZ1wiIHR5cGU9XCJkaWFsb2dcIj5cclxuXHRcdFx0XHQ8dW5pLXBvcHVwLWRpYWxvZyA6dHlwZT1cIm1zZ1R5cGVcIiA6dGl0bGU9XCJkaWFsb2dUaXRsZVwiIDpjb250ZW50PVwiZGlhbG9nQ29udGVudFwiIEBjb25maXJtPVwiZGlhbG9nQ29uZmlybVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdEBjbG9zZT1cImRpYWxvZ0Nsb3NlXCI+PC91bmktcG9wdXAtZGlhbG9nPlxyXG5cdFx0XHQ8L3VuaS1wb3B1cD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDwhLS0g5pON5L2c5oiQ5Yqf5aSx6LSl5by556qXIC0tPlxyXG5cdFx0PHZpZXc+XHJcblx0XHRcdDwhLS0g5o+Q56S65L+h5oGv5by556qXIC0tPlxyXG5cdFx0XHQ8dW5pLXBvcHVwIHJlZj1cIm1lc3NhZ2VcIiB0eXBlPVwibWVzc2FnZVwiPlxyXG5cdFx0XHRcdDx1bmktcG9wdXAtbWVzc2FnZSA6dHlwZT1cIm1lc3NhZ2VUeXBlXCIgOm1lc3NhZ2U9XCJtZXNzYWdlVGV4dFwiIDpkdXJhdGlvbj1cIjMwMDBcIj48L3VuaS1wb3B1cC1tZXNzYWdlPlxyXG5cdFx0XHQ8L3VuaS1wb3B1cD5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcbiBcclxuPHNjcmlwdD5cclxuICAgIGltcG9ydCBkZW1vZGF0YSBmcm9tICdAL21vY2tkYXRhL2RlbW9kYXRhLmpzb24nO1xyXG4gICAgaW1wb3J0IHljcWRhdGEgZnJvbSAnQC9wYWdlcy9pbmRleC9kYXRhLmpzb24nO1xyXG4gICAgZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgICAgIGRhdGEoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcblx0XHRcdFx0dHlwZTogJ2NlbnRlcicsXHJcblx0XHRcdFx0bXNnVHlwZTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRcdG1lc3NhZ2VUeXBlOiAnc3VjY2VzcycsXHJcblx0XHRcdFx0bWVzc2FnZVRleHQ6ICfov5nmmK/kuIDmnaHmiJDlip/mj5DnpLonLFxyXG5cdFx0XHRcdGRpYWxvZ1RpdGxlOiAnJyxcclxuXHRcdFx0XHR2YWx1ZTogJycsXHJcblx0XHRcdFx0ZGlhbG9nQ29udGVudDogJ+ehruiupOW8gOWni+ivpeeslOihpei0p+eJqeaWme+8nycsXHJcblx0XHRcdFx0bWF0bnI6ICcnLFxyXG5cdFx0XHRcdGRpYWxvZ1R5cGU6IDAsXHJcbiAgICAgICAgICAgICAgICBzZXJpZXM6IFtdLFxyXG4gICAgICAgICAgICAgICAgaG9tZVZpZXdTaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGluZm9WaWV3U2hvdzogdHJ1ZSAgICAsXHJcbiAgICAgICAgICAgICAgICBlcnJvckluZm9WaWV3U2hvdzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBob21lTW9kZTogW10sXHJcbiAgICAgICAgICAgICAgICBpbmZvTW9kZTogW10sXHJcbiAgICAgICAgICAgICAgICBlcnJvckluZm9Nb2RlOiBbXSxcclxuICAgICAgICAgICAgICAgIGJhc2VJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgeERpc3RhbmNlOiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIHlEaXN0YW5jZTogMixcclxuICAgICAgICAgICAgICAgICAgICB4RHVyYXRpb246IDMsXHJcbiAgICAgICAgICAgICAgICAgICAgeUR1cmF0aW9uOiA0LFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZWRQcjogNTAsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlZDogMzUzNyxcclxuICAgICAgICAgICAgICAgICAgICBzdG9ja0NvdW50OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBlbXB0eUNvdW50OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBub25lQ291bnQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNoYXJ0c0RhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICBcIkxpbmVcIjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNhdGVnb3JpZXNcIjogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2VyaWVzXCI6IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBcIlBpZVwiOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2VyaWVzXCI6IFt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGFcIjogW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwLFxyXG4gICAgICAgICAgICAgICAgY2FsZW5kYXI6ICcnLFxyXG4gICAgICAgICAgICAgICAgcmluZ09wdHM6e30sXHJcbiAgICAgICAgICAgICAgICBjaGFydHNEYXRhTGluZTE6IHt9LFxyXG4gICAgICAgICAgICAgICAgY2hhcnRzRGF0YVBpZTI6IHt9LFxyXG4gICAgICAgICAgICAgICAgZm9udFNpemU6ICcnLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnJyxcclxuICAgICAgICAgICAgICAgIHNob3dDaGFydHM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZWplY3RTaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGJhc2VJUDogJycsXHJcbiAgICAgICAgICAgICAgICBiYXNlUG9ydDogJycsXHJcbiAgICAgICAgICAgICAgICBiYXNlTGVkSWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgYmFzZUNybklkOiAnJyxcclxuICAgICAgICAgICAgICAgIGJhc2VVcmw6ICcnLFxyXG4gICAgICAgICAgICAgICAgaW5mbzogbnVsbCxcclxuICAgICAgICAgICAgICAgIGVycm9yOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgaW5mb1R5cGU6IDAsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiAnJyxcclxuICAgICAgICAgICAgICAgIGluZm9UZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YU5vOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hdG5yOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ha254OiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHNwZWNzOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50OiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBcIlwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3dpcGVyTGlzdDogW1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XSxcclxuXHRcdFx0XHRpbnNwZWN0OiAnaW5zcGVjdFJlZCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25TaG93KCkge1xyXG4gICAgICAgICAgICAvLyDpmpDol4/ml7bpl7Qs55S16YePLOS/oeWPt+etiVxyXG4gICAgICAgICAgICAvLyAjaWZkZWYgQVBQLVBMVVNcclxuICAgICAgICAgICAgcGx1cy5uYXZpZ2F0b3Iuc2V0RnVsbHNjcmVlbih0cnVlKVxyXG4gICAgICAgICAgICAvLyAjZW5kaWZcclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdW50ZWQoKSB7XHJcbiAgICAgICAgICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgICAgICAgICBjb25zdCBCYXNlSVAgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VJcCcpO1xyXG4gICAgICAgICAgICBjb25zdCBCYXNlTGVkSWQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VMZWRJZCcpO1xyXG4gICAgICAgICAgICBjb25zdCBCYXNlUG9ydCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZVBvcnQnKTtcclxuICAgICAgICAgICAgY29uc3QgQmFzZUNybklkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlQ3JuSWQnKTtcclxuICAgICAgICAgICAgY29uc3QgUFJPSiA9IHVuaS5nZXRTdG9yYWdlU3luYygnVVBST0onKTtcclxuICAgICAgICAgICAgdGhhdC5iYXNlVXJsID0gUFJPSlxyXG4gICAgICAgICAgICB0aGF0LmJhc2VJUCA9IEJhc2VJUFxyXG4gICAgICAgICAgICB0aGF0LmJhc2VMZWRJZCA9IEJhc2VMZWRJZFxyXG4gICAgICAgICAgICB0aGF0LmJhc2VQb3J0ID0gQmFzZVBvcnRcclxuICAgICAgICAgICAgdGhhdC5iYXNlQ3JuSWQgPSBCYXNlQ3JuSWRcclxuICAgICAgICAgICAgdGhpcy5nZXRVcmwoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25Mb2FkKCkge1xyXG5cdFx0XHRzZXRJbnRlcnZhbCgoKT0+e1xyXG5cdFx0XHRcdC8vIHRoaXMuZ2V0U2VydmVyRGF0YSgpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXREYXRlMigpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRVcmwoKVxyXG5cdFx0XHRcdC8vIHRoaXMuZ2V0SW5mbygpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRFcnJvcigpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRJbmZvMigpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRFcnJvcjIoKVxyXG5cdFx0XHRcdHRoaXMuZ2V0SW5mbzMoKVxyXG5cdFx0XHRcdC8vIHRoaXMuZ2V0SW5mbzQoKVxyXG5cdFx0XHRcdC8vIHRoaXMuY29udHJvbGxlcigpXHJcblx0XHRcdH0sMTAwMClcclxuXHRcdFx0XHJcblx0XHRcdC8vIHNldEludGVydmFsKCgpPT57XHJcblx0XHRcdC8vIFx0dGhpcy5jaGFuZ2VFcnJvclNob3coKVxyXG5cdFx0XHQvLyB9LDUwMDApXHJcblx0XHRcdFxyXG5cdFx0XHQvLyBzZXRJbnRlcnZhbCgoKT0+e1xyXG5cdFx0XHQvLyBcdHRoaXMuZ2V0U2VydmVyRGF0YSgpXHJcblx0XHRcdC8vIFx0dGhpcy5pbml0bGluZUNoYXJ0KClcclxuXHRcdFx0Ly8gXHR0aGlzLmluaXRQaWVDaGFydCgpXHJcblx0XHRcdC8vIFx0dGhpcy5nZXRPdGhlcigpXHJcblx0XHRcdC8vIH0sNjAwMDAwKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWV0aG9kczoge1xyXG5cdFx0XHQvLyDml6XljoYg5pyN5Yqh5ZmoXHJcblx0XHRcdGdldERhdGUyKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdGlmKHRoYXQuY29tbW9uVXJsID09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvZGF0ZVwiLFxyXG5cdFx0XHRcdFx0bWV0aG9kOlwiR0VUXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGEuZGF0YVxyXG5cdFx0XHRcdFx0XHR0aGF0LmNhbGVuZGFyID0gcmVzLnllYXIgKyBcIuW5tFwiICsgcmVzLm1vbnRoICsgXCLmnIhcIiArIHJlcy5kYXkgKyBcIuaXpSBcIiArIHJlcy5ob3VyICsgXCI6XCIgKyByZXMubWludXRlICsgXCI6XCIgKyByZXMuc2Vjb25kICsgXCIgXCIgKyByZXMud2Vla1xyXG5cdFx0XHRcdFx0XHR0aGF0LmN1cnJEYXRlID0gcmVzLnllYXIgKyBcIi9cIiArIHJlcy5tb250aCArIFwiL1wiICsgcmVzLmRheVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWwocmVzKSB7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDlvIDlp4vmjInpkq5cclxuXHRcdFx0Y29tcGxldGUobWF0bnIpIHtcclxuXHRcdFx0XHR0aGlzLm1hdG5yID0gbWF0bnJcclxuXHRcdFx0XHR0aGlzLmRpYWxvZ1RpdGxlID0gYOWTgeeVqu+8miR7bWF0bnJ9YFxyXG5cdFx0XHRcdHRoaXMuZGlhbG9nVHlwZSA9IDFcclxuXHRcdFx0XHR0aGlzLmRpYWxvZ0NvbnRlbnQgPSAn56Gu6K6k5byA5aeL6K+l56yU6KGl6LSn54mp5paZ77yfJ1xyXG5cdFx0XHRcdHRoaXMuJHJlZnMuaW5wdXREaWFsb2cub3BlbigpXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOe7k+adn+aMiemSrlxyXG5cdFx0XHRjYW5jZWwobWF0bnIpIHtcclxuXHRcdFx0XHR0aGlzLm1hdG5yID0gbWF0bnJcclxuXHRcdFx0XHR0aGlzLmRpYWxvZ1RpdGxlID0gYOWTgeeVqu+8miR7bWF0bnJ9YFxyXG5cdFx0XHRcdHRoaXMuZGlhbG9nVHlwZSA9IDJcclxuXHRcdFx0XHR0aGlzLmRpYWxvZ0NvbnRlbnQgPSAn56Gu6K6k5a6M5oiQ6K+l56yU6KGl6LSn54mp5paZ77yfJ1xyXG5cdFx0XHRcdHRoaXMuJHJlZnMuaW5wdXREaWFsb2cub3BlbigpXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOW8ueeql+WPlua2iFxyXG5cdFx0XHRkaWFsb2dDbG9zZSgpIHtcclxuXHRcdFx0XHR0aGlzLiRyZWZzLmlucHV0RGlhbG9nLmNsb3NlKClcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5by556qX56Gu6K6kXHJcblx0XHRcdGRpYWxvZ0NvbmZpcm0oKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdCAgICB1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvTG9jRGV0bFJlcGxlbmlzaG1lbnRDb250cm9sbGVyL2hhbmQvY29udHJvbC9yZVwiLFxyXG5cdFx0XHRcdCAgICBtZXRob2Q6XCJHRVRcIixcclxuXHRcdFx0XHQgICAgZGF0YToge21hdG5yOnRoYXQubWF0bnIsdHlwZTogdGhhdC5kaWFsb2dUeXBlfSxcclxuXHRcdFx0XHQgICAgc3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzdWx0KTtcclxuXHRcdFx0XHQgICAgICAgIHZhciByZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQubWVzc2FnZVR5cGUgPSAnc3VjY2VzcydcclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm1lc3NhZ2VUZXh0ID0gYOaTjeS9nOaIkOWKn2BcclxuXHRcdFx0XHRcdFx0XHR0aGF0LiRyZWZzLm1lc3NhZ2Uub3BlbigpXHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5tZXNzYWdlVHlwZSA9ICdlcnJvcidcclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm1lc3NhZ2VUZXh0ID0gcmVzLm1zZ1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuJHJlZnMubWVzc2FnZS5vcGVuKClcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuICAgICAgICAgICAgZ2V0VXJsKCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25VcmwgPSB0aGlzLmJhc2VIdHRwICsgdGhpcy5iYXNlSVAgKyAnOicgK3RoaXMuYmFzZVBvcnQgKyBcIi9cIiArdGhpcy5iYXNlVXJsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldFNlcnZlckRhdGEoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYXJ0c0RhdGFMaW5lMT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY2hhcnRzRGF0YS5MaW5lKSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhcnRzRGF0YVBpZTI9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0c0RhdGEuUGllKSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8g6I635Y+W6ZSZ6K+v5L+h5oGvXHJcbiAgICAgICAgICAgIGdldEluZm8yKCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0geWNxZGF0YS5kYXRhSW5mbzJcclxuICAgICAgICAgICAgICAgIHZhciAgICByZXMgPSByZXN1bHQuZGF0YVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuaW5mb1R5cGUgPT0gMiB8fCB0aGF0LmluZm9UeXBlID09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBpbmZvVHlwZTE65Y+q5pyJ5ouj5paZ562J5L+h5oGvXHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5pbmZvVHlwZSA9IDFcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhajmnb/lh7rlupMnXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5qOA5paZ5Ye65bqTJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0LmluZm9UZXh0LnN0YU5vID0gcmVzLmRhdGFbMF0uc3RhTm9cclxuICAgICAgICAgICAgICAgICAgICB0aGF0LnN3aXBlckxpc3QgPSByZXMuZGF0YVswXS5tYXREdG9zXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC5pbmZvVGV4dC5tYXRuciA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWF0bnJcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LmluZm9UZXh0LnNwZWNzID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5zcGVjc1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuaW5mb1RleHQubWFrbnggPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1ha254XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC5pbmZvVGV4dC5jb3VudCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uY291bnRcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuaW5mb1R5cGUgPT0gMiB8fCB0aGF0LmluZm9UeXBlID09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0LmluZm9UeXBlID0gMFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG5cdFx0XHRnZXRJbmZvMygpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0ICAgIHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9vcGVuL2xvYy9xdWVyeS9hdXRoL3YxXCIsXHJcblx0XHRcdFx0ICAgIG1ldGhvZDpcIkdFVFwiLFxyXG5cdFx0XHRcdCAgICBkYXRhOiB7bGVkSWQ6dGhhdC5iYXNlTGVkSWR9LFxyXG5cdFx0XHRcdCAgICBzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cdFx0XHRcdCAgICAgICAgdmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGZvciAobGV0IGsgb2YgcmVzLmRhdGEpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoay5pbnNwZWN0ID09IDEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGtbJ2luc3BlY3RTdHMnXSA9ICdpbnNwZWN0V2hpdGUnIFxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRrWydpbnNwZWN0U3RzJ10gPSAnaW5zcGVjdFJlZCcgXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0ICAgICAgIHRoYXQuc3dpcGVyTGlzdCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRJbmZvNCgpIHtcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0geWNxZGF0YS5kYXRhRXJyb3IzXHJcblx0XHRcdFx0dmFyICAgIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0Zm9yIChsZXQgayBvZiByZXMuZGF0YSkge1xyXG5cdFx0XHRcdFx0aWYgKGsuaW5zcGVjdCA9PSAxKSB7XHJcblx0XHRcdFx0XHRcdGtbJ2luc3BlY3RTdHMnXSA9ICdpbnNwZWN0V2hpdGUnIFxyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0a1snaW5zcGVjdFN0cyddID0gJ2luc3BlY3RSZWQnIFxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5zd2lwZXJMaXN0ID0gcmVzLmRhdGFcclxuXHRcdFx0fSxcclxuICAgICAgICAgICAgZ2V0RXJyb3IyICgpIHtcclxuICAgICAgICAgICAgICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHljcWRhdGEuZGF0YUVycm9yMlxyXG4gICAgICAgICAgICAgICAgdmFyICAgIHJlcyA9IHJlc3VsdC5kYXRhXHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JJbmZvID0gcmVzLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuaW5mb1R5cGUgPSAzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuaW5mb1RleHQuZXJyb3IgPSBlcnJvckluZm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuaW5mb1R5cGUgPSAyXHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5byC5bi4XCJcclxuICAgICAgICAgICAgICAgICAgICB0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuaW5mb1R5cGUgPSAwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldEluZm8oKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgICAgICAgICAgICAgIHVuaS5yZXF1ZXN0KHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sZWRcIixcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6XCJHRVRcIixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7bGVkSWQ6dGhhdC5iYXNlTGVkSWR9LFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAgICByZXMgPSByZXN1bHQuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5mb1R5cGUxOuWPquacieaLo+aWmeetieS/oeaBr1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5pbmZvVHlwZSA9IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5YWo5p2/5Ye65bqTJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5pbmZvVGV4dC50aXRsZSA9ICfmo4Dmlpnlh7rlupMnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+ebmOeCueWHuuW6kydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuaW5mb1RleHQuc3RhTm8gPSByZXMuZGF0YVswXS5zdGFOb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5zd2lwZXJMaXN0ID0gcmVzLmRhdGFbMF0ubWF0RHRvc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC5pbmZvVGV4dC5tYXRuciA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWF0bnJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuaW5mb1RleHQuc3BlY3MgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLnNwZWNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LmluZm9UZXh0Lm1ha254ID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYWtueFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC5pbmZvVGV4dC5jb3VudCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5pbmZvVHlwZSA9IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2V0RXJyb3IoKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgICAgICAgICAgICAgIHVuaS5yZXF1ZXN0KHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sZWQvZXJyb3JcIixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7bGVkSWQ6dGhhdC5iYXNlTGVkSWR9LFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDpcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAgICByZXMgPSByZXN1bHQuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEgJiYgcmVzLmRhdGEgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnJvckluZm8gPSByZXMuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuaW5mb1R5cGUgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuaW5mb1R5cGUgPSAzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5YW25LuW5L+h5oGvXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5byC5bi4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmluZm9UeXBlID0gMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5YW25LuW5L+h5oGvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmluZm9UeXBlID0gMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDmjqfliLblmahcclxuICAgICAgICAgICAgY29udHJvbGxlcigpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCh0aGlzLmluZm9UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pyJ5L+h5oGvIOS9hiDmsqHmnInplJnor6/kv6Hmga9cclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ob21lVmlld1Nob3cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaG9tZVZpZXdTaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaG9tZU1vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZm9WaWV3U2hvdyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5lcnJvckluZm9WaWV3U2hvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZm9WaWV3U2hvdyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pyJ5L+h5oGvIOS4lCDmnInplJnor6/kv6Hmga9cclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhvbWVWaWV3U2hvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob21lVmlld1Nob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvckluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbmZvVmlld1Nob3cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwxMDAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAvLyDmnInkv6Hmga8g5LiUIOaciemUmeivr+S/oeaBr1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaG9tZVZpZXdTaG93KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvbWVWaWV3U2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMTAwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmluZm9WaWV3U2hvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmZvVmlld1Nob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvckluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lcnJvckluZm9WaWV3U2hvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvbWVWaWV3U2hvdyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbmZvVmlld1Nob3cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvbWVWaWV3U2hvdyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOS4u+Wxj+W5lVxyXG4gICAgICAgICAgICBoYW5kbGUodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ob21lVmlld1Nob3cgPSAhdGhpcy5ob21lVmlld1Nob3dcclxuICAgICAgICAgICAgICAgIHRoaXMubW9kZUNsYXNzID0gdHlwZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDmi6PmlplcclxuICAgICAgICAgICAgaGFuZGxlMSh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluZm9WaWV3U2hvdyA9ICF0aGlzLmluZm9WaWV3U2hvd1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlQ2xhc3MgPSB0eXBlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOW8guW4uFxyXG4gICAgICAgICAgICBoYW5kbGUyKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSAhdGhpcy5lcnJvckluZm9WaWV3U2hvd1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlQ2xhc3MgPSB0eXBlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOmFjee9rlxyXG4gICAgICAgICAgICBlamVjdGVkICgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWplY3RTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDlj5bmtojphY3nva5cclxuICAgICAgICAgICAgZWplY3RDbG9zZSgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWplY3RTaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8g56Gu6K6k6YWN572uXHJcbiAgICAgICAgICAgIGVqZWN0Q29uZmlybSgpIHtcclxuICAgICAgICAgICAgICAgIHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUlwJywgdGhpcy5iYXNlSVApO1xyXG4gICAgICAgICAgICAgICAgdW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnLCB0aGlzLmJhc2VMZWRJZCk7XHJcbiAgICAgICAgICAgICAgICB1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyx0aGlzLmJhc2VQb3J0KTtcclxuICAgICAgICAgICAgICAgIHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUNybklkJyx0aGlzLmJhc2VDcm5JZCk7XHJcbiAgICAgICAgICAgICAgICB1bmkuc2V0U3RvcmFnZVN5bmMoJ1VQUk9KJyx0aGlzLmJhc2VVcmwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRVcmwoKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lamVjdFNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDml6XljoZcclxuICAgICAgICAgICAgZ2V0RGF0ZSgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkdCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgeWVhcixtb250aCxkYXksaG91cnMsbWludXRlcyxzZWNvbmRzLHdlZWtzXHJcbiAgICAgICAgICAgICAgICB5ZWFyID0gZHQuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgICAgICAgIG1vbnRoID0gKGR0LmdldE1vbnRoKCkrMSkgPCAxMCA/ICcwJysgKGR0LmdldE1vbnRoKCkrMSkgOiAoZHQuZ2V0TW9udGgoKSsxKTtcclxuICAgICAgICAgICAgICAgIGRheSA9IGR0LmdldERhdGUoKSA8IDEwID8gJzAnK2R0LmdldERhdGUoKSA6IGR0LmdldERhdGUoKTtcclxuICAgICAgICAgICAgICAgIGhvdXJzID0gZHQuZ2V0SG91cnMoKSA8IDEwID8gJzAnICsgZHQuZ2V0SG91cnMoKSA6IGR0LmdldEhvdXJzKCk7XHJcbiAgICAgICAgICAgICAgICBtaW51dGVzID0gZHQuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkdC5nZXRNaW51dGVzKCkgOiBkdC5nZXRNaW51dGVzKCk7XHJcbiAgICAgICAgICAgICAgICBzZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpIDwgMTAgPyAnMCcgKyBkdC5nZXRTZWNvbmRzKCkgOiBkdC5nZXRTZWNvbmRzKCk7IFxyXG4gICAgICAgICAgICAgICAgd2Vla3MgPSBkdC5nZXREYXkoKTsgXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHdlZWtzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiB3ZWVrcyA9IFwi5pif5pyf5pelXCI7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTogd2Vla3MgPSBcIuaYn+acn+S4gFwiOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHdlZWtzID0gXCLmmJ/mnJ/kuoxcIjsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiB3ZWVrcyA9IFwi5pif5pyf5LiJXCI7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogd2Vla3MgPSBcIuaYn+acn+Wbm1wiOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHdlZWtzID0gXCLmmJ/mnJ/kupRcIjsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA6IHdlZWtzID0gXCLmmJ/mnJ/lha1cIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXIgPSB5ZWFyICsgXCLlubRcIiArIG1vbnRoICsgXCLmnIhcIiArIGRheSArIFwi5pelIFwiICsgaG91cnMgKyBcIjpcIiArIG1pbnV0ZXMgKyBcIjpcIiArIHNlY29uZHMgKyBcIiBcIiArIHdlZWtzXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldERhdGVGb3JtYXQodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTsvLyDojrflj5blvZPliY3ml7bpl7RcclxuICAgICAgICAgICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIHZhbHVlKTsvLyDorr7nva7lpKnmlbAgLTEg5aSpXHJcbiAgICAgICAgICAgICAgICB2YXIgbSA9IGRhdGUuZ2V0TW9udGgoKSArIDFcclxuICAgICAgICAgICAgICAgIHZhciBkID0gZGF0ZS5nZXREYXRlKClcclxuICAgICAgICAgICAgICAgIHZhciBuZXdEYXRlID0gbSArICctJyArIGRcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdEYXRlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8qKioqKioqKioqKioqKiog5oqY57q/5Zu+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgICAgICBpbml0bGluZUNoYXJ0KCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICAgICAgICAgICAgICB1bmkucmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGluZS9jaGFydHNcIixcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6J0dFVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNoYXJ0c0RhdGEuTGluZS5jYXRlZ29yaWVzID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTEpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTApLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOSksdGhhdC5nZXREYXRlRm9ybWF0KC04KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmdldERhdGVGb3JtYXQoLTcpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNiksdGhhdC5nZXREYXRlRm9ybWF0KC01KSx0aGF0LmdldERhdGVGb3JtYXQoLTQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMyksdGhhdC5nZXREYXRlRm9ybWF0KC0yKSx0aGF0LmdldERhdGVGb3JtYXQoLTEpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgwKSxdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNoYXJ0c0RhdGEuTGluZS5zZXJpZXMgPSByZXMuZGF0YS5yb3dzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvKioqKioqKioqKioqKioqIOmlvOWbviAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICAgICAgaW5pdFBpZUNoYXJ0KCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICAgICAgICAgICAgICB1bmkucmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbG9jL3JlcFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDonR0VUJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gcmVzdWx0LmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhcnRzRGF0YS5QaWUuc2VyaWVzWzBdLmRhdGEgPSByZXMuZGF0YS5waWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYmFzZUluZm8uc3RvY2tDb3VudCA9IHJlcy5kYXRhLnN0b2NrQ3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5iYXNlSW5mby5lbXB0eUNvdW50ID0gcmVzLmRhdGEuZW1wdHlDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5iYXNlSW5mby5ub25lQ291bnQgPSByZXMuZGF0YS5ub25lQ291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYmFzZUluZm8udXNlZCA9IHJlcy5kYXRhLnVzZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYmFzZUluZm8udXNlZFByID0gcmVzLmRhdGEudXNlZFByXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXRPdGhlcigpIHtcclxuICAgICAgICAgICAgICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgICAgICAgICAgICAgdW5pLnJlcXVlc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL290aGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjcm5JZDogdGhhdC5iYXNlQ3JuSWQsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWRJZDogdGhhdC5iYXNlTGVkSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gcmVzdWx0LmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYmFzZUluZm8ueERpc3RhbmNlID0gcmVzLmRhdGEueERpc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmJhc2VJbmZvLnlEaXN0YW5jZSA9IHJlcy5kYXRhLnlEaXN0YW5jZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5iYXNlSW5mby54RHVyYXRpb24gPSByZXMuZGF0YS54RHVyYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYmFzZUluZm8ueUR1cmF0aW9uID0gcmVzLmRhdGEueUR1cmF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmNvZGUgPT09IDQwMykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgfVxyXG48L3NjcmlwdD5cclxuIFxyXG48c3R5bGU+XHJcbiAgICAvKiBAaW1wb3J0IHVybChcIi4uLy4uL3N0YXRpYy9jc3MvY29tbW9uLmNzc1wiKTsgKi9cclxuICAgIEBpbXBvcnQgdXJsKFwiaG9tZS5jc3NcIik7XHJcbiAgICAvKiDliJcgKi9cclxuICAgIC5mbGV4LWNvbCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgfVxyXG4gICAgLyog6KGMICovXHJcbiAgICAuZmxleC1yb3cge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgIH1cclxuICAgIFxyXG4gICAgLmNvbnRhaW5lcntcclxuICAgICAgICB3aWR0aDogMTAwdnc7XHJcbiAgICAgICAgbWluLWhlaWdodDogMTAwdmg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA4Mzg3MDtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICAvKiDkuLvop4blm74gKi9cclxuICAgIC5ob21lLXZpZXcge1xyXG4gICAgICAgIHdpZHRoOiAxMDB2dztcclxuICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDtcclxuICAgICAgIC8qIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvaGVhZC5wbmcpO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogNTB2dyAxMHZoO1xyXG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgKi9cclxuICAgIH1cclxuICAgIC5ob21lLXJpZ2h0IHtcclxuICAgICAgICB3aWR0aDogNTB2dztcclxuICAgICAgICBoZWlnaHQ6IDg5dmg7XHJcbiAgICAgICAgLyogYmFja2dyb3VuZC1jb2xvcjogY2FkZXRibHVlOyAqL1xyXG4gICAgfVxyXG4gICAgLmhvbWUtcmlnaHQtYm94IHtcclxuICAgICAgICB3aWR0aDogOTglO1xyXG4gICAgICAgIGhlaWdodDogOTglO1xyXG4gICAgfVxyXG4gICAgLmhlYWQge1xyXG4gICAgICAgIHdpZHRoOiAxMDB2dztcclxuICAgICAgICBoZWlnaHQ6IDExdmg7XHJcbiAgICAgICAgZm9udC1zaXplOjN2dztcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG5cdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAxZnI7XHJcbiAgICB9XHJcblx0LmhlYWQtbWlkIHtcclxuXHRcdGhlaWdodDogMTB2aDtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvaGVhZC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XHJcblx0fVxyXG5cdC5oZWFkLWxlZnQge1xyXG5cdFx0aGVpZ2h0OiA2dmg7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2hlYWRsZWZ0LnBuZyk7XHJcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDExMCUgMTAwJTtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcclxuXHR9XHJcblx0LmhlYWQtcmlnaHQge1xyXG5cdFx0aGVpZ2h0OiA2dmg7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2hlYWRsZWZ0LnBuZyk7XHJcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDExMCUgMTAwJTtcclxuXHR9XHJcbiAgICAudGltZS10b29scyB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHJpZ2h0OiAyJTtcclxuICAgICAgICB0b3A6IDIlO1xyXG4gICAgICAgIGZvbnQtc2l6ZToxdnc7XHJcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xyXG4gICAgfVxyXG4gICAgLmJ1dHRvbi1sZWZ0IHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9oZWFkbGVmdC5wbmcpO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xyXG4gICAgICAgIHRvcDogMS44JTtcclxuICAgICAgICBsZWZ0OiAyMS4zJTtcclxuICAgICAgICB3aWR0aDogMTMuNSU7XHJcbiAgICAgICAgaGVpZ2h0OiA4LjUlO1xyXG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcclxuICAgIH1cclxuICAgIC5idXR0b24tcmlnaHQge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL3JpZ2h0LnBuZyk7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XHJcbiAgICAgICAgdG9wOiAxLjglO1xyXG4gICAgICAgIGxlZnQ6IDY1JTtcclxuICAgICAgICB3aWR0aDogMTMuNSU7XHJcbiAgICAgICAgaGVpZ2h0OiA4LjUlO1xyXG4gICAgfVxyXG4gICAgLmltZy1ib3gge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIC8qIGJhY2tncm91bmQtY29sb3I6ICM2NjY2NjY7ICovXHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgICAgZm9udC1zaXplOiAxdnc7XHJcbiAgICB9XHJcbiAgICAuaXRlbS1pbWcge1xyXG4gICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogNSU7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICAgIC8qIGJhY2tncm91bmQtY29sb3I6ICMwMGZmZmY7ICovXHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAgfVxyXG4gICAgLmRpc3RhbmNlIHtcclxuICAgICAgICBcclxuICAgIH1cclxuICAgIC5pdGVtLWltZyBpbWFnZSB7XHJcbiAgICAgICAgaGVpZ2h0OiA1dnc7XHJcbiAgICAgICAgd2lkdGg6IDV2dztcclxuICAgIH1cclxuICAgIC5wcm9ncmVzc0JhciB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogOSU7XHJcbiAgICAgICAgLyogd2lkdGg6IDEwMCU7ICovXHJcbiAgICAgICAgaGVpZ2h0OiAyMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIzMzc1MTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1dnc7XHJcbiAgICB9XHJcbiAgICAucHJvZ3Jlc3Mge1xyXG4gICAgICAgIC8qIHdpZHRoOiA5MCU7ICovXHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjU3MjI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXZ3O1xyXG4gICAgfVxyXG4gICAgLmNoYXJ0cy1ib3gge1xyXG4gICAgICB3aWR0aDogODAlO1xyXG4gICAgICBoZWlnaHQ6IDI0dmg7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMCU7XHJcbiAgICB9IFxyXG4gICAgLmNoYXJ0cy1ib3gtcmluZyB7XHJcbiAgICAgICAgd2lkdGg6IDUwJTtcclxuICAgICAgICBoZWlnaHQ6IDI0dmg7XHJcbiAgICAgICAgLyogYmFja2dyb3VuZC1jb2xvcjogIzAwZmZmZjsgKi9cclxuICAgIH1cclxuICAgIC5zdWItaW5mbyB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxLjV2dztcclxuICAgIH1cclxuICAgIC5zdWItaW5mbyBpbWFnZSB7XHJcbiAgICAgICAgd2lkdGg6IDMuNXZ3O1xyXG4gICAgICAgIGhlaWdodDogMy41dnc7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qIOWFseeUqCAqL1xyXG4gICAgLm1haW4ge1xyXG4gICAgICAgIHdpZHRoOiAxMDB2dztcclxuICAgICAgICBoZWlnaHQ6IDg4dmg7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMXZoO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICAubWlhbi1pdGVtIHtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIH1cclxuICAgIC5taWFuLWl0ZW0tYm94IHtcclxuICAgICAgICB3aWR0aDogOTglO1xyXG4gICAgICAgIGhlaWdodDogOTglO1xyXG4gICAgfVxyXG4gICAgLmJveC1pdGVtIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBtYXJnaW4tdG9wOiA0JTtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgfVxyXG4gICAgLml0ZW0tdGl0bGUge1xyXG4gICAgICAgIGZvbnQtc2l6ZToxLjV2dztcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgfVxyXG4gICAgLml0ZW0tc3ViVGl0bGUge1xyXG4gICAgICAgIGZvbnQtc2l6ZTowLjV2dztcclxuICAgICAgICB0ZXh0LWluZGVudDogMGVtO1xyXG4gICAgfVxyXG4gICAgLml0ZW0tdGV4dCB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxdnc7XHJcbiAgICAgICAgdGV4dC1pbmRlbnQ6IDJlbTtcclxuICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzdmg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qIOWFqOadvy/mi6Pmlpnkv6Hmga8gKi9cclxuICAgIC5pbmZvLXZpZXcge1xyXG4gICAgICAgIHdpZHRoOiAxMDB2dztcclxuICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMHZ3IDEwMHZoO1xyXG4gICAgfVxyXG4gICAgLmluZm8tbWFpbiB7XHJcbiAgICAgICAgd2lkdGg6IDEwMHZ3O1xyXG4gICAgICAgIGhlaWdodDogODh2aDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB9XHJcbiAgICAuaW5mby1ib3gge1xyXG4gICAgICAgIHdpZHRoOiA5OCU7XHJcbiAgICAgICAgaGVpZ2h0OiA5OCU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDMyMjQ2O1xyXG4gICAgfVxyXG4gICAgLyog5byC5bi45L+h5oGvICovXHJcbiAgICAuZXJyb3ItaW5mby12aWV3IHtcclxuICAgICAgICB3aWR0aDogMTAwdnc7XHJcbiAgICAgICAgbWluLWhlaWdodDogMTAwdmg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9iYWNrZ3JvdW5kLnBuZyk7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDB2dyAxMDB2aDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyog5by55Ye6OumFjee9ruWMuuWfnyAqL1xyXG4gICAgLmVqZWN0LW1hc2sge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDk5OTtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7ICAgIFxyXG4gICAgfVxyXG4gICAgLmVqZWN0e1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB3aWR0aDogNDB2dztcclxuICAgICAgICBoZWlnaHQ6IDQwdmg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAycmVtO1xyXG4gICAgfVxyXG4gICAgLmVqZWN0LXRpdGxlIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDV2aDtcclxuICAgICAgICBsaW5lLWhlaWdodDogNnZoO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogM3ZoO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgICAgY29sb3I6ICAgICAjNjA2MjY2O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuICAgIC5lamVjdC1pbnB1dCB7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICAuaXRlbSB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIG1hcmdpbjogMnZoIDAgMCAwO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS41dnc7XHJcbiAgICAgICAgY29sb3I6ICMzNjM2MzY7XHJcbiAgICB9XHJcbiAgICAuZGVzYyB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiA0MCU7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICAgICAgY29sb3I6ICM2MDYyNjY7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICAuaW5wdXQge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAzdmg7XHJcbiAgICAgICAgYm9yZGVyOiAwLjF2aCBzb2xpZCAjY2ZkNGRjO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMjAlO1xyXG4gICAgICAgIHRleHQtYWxpZ246IHN0YXJ0O1xyXG4gICAgfVxyXG4gICAgLmVqZWN0LWlucHV0IGlucHV0IHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDN2aDtcclxuICAgICAgICBmb250LXNpemU6IDF2dztcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgIH1cclxuICAgIC5lamVjdC1idXR0b24ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgYm90dG9tOiAwO1xyXG4gICAgICAgIGhlaWdodDogNnZoO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiA2dmg7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7XHJcbiAgICB9XHJcbiAgICAuYnV0dG9uLWl0ZW0ge1xyXG4gICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS41dnc7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGNvbG9yOiAjOTA5Mzk5O1xyXG4gICAgfVxyXG4gICAgLmJ1dHRvbi1pdGVtOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIGNvbG9yOiAjNjdDMjNBO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2NjYztcclxuICAgIH1cclxuICAgIC5pbmZvLWJveC10ZXh0IHtcclxuICAgICAgICB3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2FsaWduLWl0ZW1zOiBjZW50ZXI7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB9XHJcbiAgICAuaW5mby1ib3gtdGV4dC1pdGVtIHtcclxuICAgICAgICBoZWlnaHQ6IDIwJTtmb250LXNpemU6IDh2aDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIH1cclxuXHQuYmVCYXRjaDEge1xyXG5cdFx0Y29sb3I6ICNmZmJhMDI7XHJcblx0XHRwYWRkaW5nOiA0cnB4IDEwcnB4O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjhlNjtcclxuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMnJweDtcclxuXHR9XHJcblx0LmJlQmF0Y2gyIHtcclxuXHRcdGNvbG9yOiAjZmY1NDU0O1xyXG5cdFx0cGFkZGluZzogNHJweCAxMHJweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmVkZWQ7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDJycHg7XHJcblx0fVxyXG5cdC5pbnNwZWN0UmVkIHtcclxuXHRcdGNvbG9yOiAjRjEwRjBGO1xyXG5cdH1cclxuXHQuaW5zcGVjdFdoaXRlIHtcclxuXHRcdGNvbG9yOiAjRkZGO1xyXG5cdH1cclxuXHQuaXRlbS1ib3gxIHtcclxuXHRcdGhlaWdodDogOTglO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzdkYjJmNztcclxuXHR9XHJcblx0Lml0ZW0tYm94IHtcclxuXHRcdGhlaWdodDogOTglO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICMwNzRhOWE7XHJcblx0fVxyXG5cdC5zdGFydC1idG4ge1xyXG5cdFx0Y29sb3I6ICNGRkY7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMTNjZTY2O1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgwLjcpO1xyXG5cdH1cclxuXHQuZW5kLWJ0biB7XHJcblx0XHRjb2xvcjogI0ZGRjtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMxODkwZmY7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XHJcblx0fVxyXG5cdC5wb3B1cCB7XHJcblx0XHRcclxuXHR9XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n");
 
/***/ }),
/* 59 */
/*!******************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/mockdata/demodata.json ***!
  \******************************************************************/
/*! exports provided: localdata, localdataB, TLine, Scatter, Bubble, Column, ColumnA, Mix, Line, Pie, PieA, Radar, Arcbar1, Arcbar2, Gauge, Candle, CandleColumn, Word, default */
/***/ (function(module) {
 
eval("module.exports = JSON.parse(\"{\\\"localdata\\\":[{\\\"value\\\":35,\\\"text\\\":\\\"2016\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":18,\\\"text\\\":\\\"2016\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":36,\\\"text\\\":\\\"2017\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":27,\\\"text\\\":\\\"2017\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":31,\\\"text\\\":\\\"2018\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":21,\\\"text\\\":\\\"2018\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":33,\\\"text\\\":\\\"2019\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":24,\\\"text\\\":\\\"2019\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":13,\\\"text\\\":\\\"2020\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":6,\\\"text\\\":\\\"2020\\\",\\\"group\\\":\\\"完成量\\\"},{\\\"value\\\":34,\\\"text\\\":\\\"2021\\\",\\\"group\\\":\\\"目标值\\\"},{\\\"value\\\":28,\\\"text\\\":\\\"2021\\\",\\\"group\\\":\\\"完成量\\\"}],\\\"localdataB\\\":[{\\\"value\\\":50,\\\"text\\\":\\\"一班\\\"},{\\\"value\\\":30,\\\"text\\\":\\\"二班\\\"},{\\\"value\\\":20,\\\"text\\\":\\\"三班\\\"},{\\\"value\\\":18,\\\"text\\\":\\\"四班\\\"},{\\\"value\\\":8,\\\"text\\\":\\\"五班\\\"}],\\\"TLine\\\":{\\\"series\\\":[{\\\"name\\\":\\\"时间轴1\\\",\\\"data\\\":[[10000,55],[30000,25],[50000,55],[70000,25],[90000,55]]},{\\\"name\\\":\\\"时间轴2\\\",\\\"data\\\":[[0,25],[20000,55],[40000,25],[60000,55],[80000,25]]},{\\\"name\\\":\\\"时间轴3\\\",\\\"data\\\":[[0,55],[15000,25],[30000,55],[45000,25],[60000,55]]}]},\\\"Scatter\\\":{\\\"series\\\":[{\\\"name\\\":\\\"散点一\\\",\\\"data\\\":[[10,8.04],[8.07,6.95],[13,7.58],[9.05,8.81],[11,8.33],[14,7.66],[13.4,6.81],[10,6.33],[14,8.96],[12.5,6.82]]},{\\\"name\\\":\\\"散点二\\\",\\\"data\\\":[[9.15,7.2],[11.5,7.2],[3.03,4.23],[12.2,7.83],[2.02,4.47],[1.05,3.33],[4.05,4.96],[6.03,7.24],[12,6.26],[12,8.84],[7.08,5.82],[5.02,5.68]]}]},\\\"Bubble\\\":{\\\"series\\\":[{\\\"name\\\":\\\"气泡一\\\",\\\"data\\\":[[95,95,23,\\\"标题1\\\"],[30,55,33,\\\"标题2\\\"]]},{\\\"name\\\":\\\"气泡二\\\",\\\"data\\\":[[130,30,30,\\\"标题3\\\"],[200,90,40,\\\"标题4\\\"]]}]},\\\"Column\\\":{\\\"categories\\\":[\\\"2016\\\",\\\"2017\\\",\\\"2018\\\",\\\"2019\\\",\\\"2020\\\",\\\"2021\\\"],\\\"series\\\":[{\\\"name\\\":\\\"目标值\\\",\\\"data\\\":[35,36,31,33,13,34]},{\\\"name\\\":\\\"完成量\\\",\\\"data\\\":[18,27,21,24,6,28]}]},\\\"ColumnA\\\":{\\\"categories\\\":[\\\"2016\\\",\\\"2017\\\",\\\"2018\\\",\\\"2019\\\",\\\"2020\\\",\\\"2021\\\"],\\\"series\\\":[{\\\"name\\\":\\\"成交量1\\\",\\\"data\\\":[15,{\\\"value\\\":20,\\\"color\\\":\\\"#f04864\\\"},45,37,43,34]},{\\\"name\\\":\\\"成交量2\\\",\\\"data\\\":[30,{\\\"value\\\":40,\\\"color\\\":\\\"#facc14\\\"},25,14,34,18]}]},\\\"Mix\\\":{\\\"categories\\\":[\\\"2016\\\",\\\"2017\\\",\\\"2018\\\",\\\"2019\\\",\\\"2020\\\",\\\"2021\\\"],\\\"series\\\":[{\\\"name\\\":\\\"曲面\\\",\\\"data\\\":[70,50,85,130,64,88],\\\"type\\\":\\\"area\\\",\\\"style\\\":\\\"curve\\\"},{\\\"name\\\":\\\"柱1\\\",\\\"index\\\":1,\\\"data\\\":[40,{\\\"value\\\":30,\\\"color\\\":\\\"#f04864\\\"},55,110,24,58],\\\"type\\\":\\\"column\\\"},{\\\"name\\\":\\\"柱2\\\",\\\"index\\\":1,\\\"data\\\":[50,20,75,60,34,38],\\\"type\\\":\\\"column\\\"},{\\\"name\\\":\\\"曲线\\\",\\\"data\\\":[70,50,85,130,64,88],\\\"type\\\":\\\"line\\\",\\\"style\\\":\\\"curve\\\",\\\"color\\\":\\\"#1890ff\\\",\\\"disableLegend\\\":true},{\\\"name\\\":\\\"折线\\\",\\\"data\\\":[120,140,105,170,95,160],\\\"type\\\":\\\"line\\\",\\\"color\\\":\\\"#2fc25b\\\"},{\\\"name\\\":\\\"点\\\",\\\"index\\\":2,\\\"data\\\":[100,80,125,150,112,132],\\\"type\\\":\\\"point\\\",\\\"color\\\":\\\"#f04864\\\"}]},\\\"Line\\\":{\\\"categories\\\":[\\\"2016\\\",\\\"2017\\\",\\\"2018\\\",\\\"2019\\\",\\\"2020\\\",\\\"2021\\\"],\\\"series\\\":[{\\\"name\\\":\\\"成交量A\\\",\\\"data\\\":[35,8,25,37,4,20]},{\\\"name\\\":\\\"成交量B\\\",\\\"data\\\":[70,40,65,100,44,68]}]},\\\"Pie\\\":{\\\"series\\\":[{\\\"name\\\":\\\"一班\\\",\\\"data\\\":50},{\\\"name\\\":\\\"二班\\\",\\\"data\\\":30},{\\\"name\\\":\\\"三班\\\",\\\"data\\\":20},{\\\"name\\\":\\\"四班\\\",\\\"data\\\":18},{\\\"name\\\":\\\"五班\\\",\\\"data\\\":8}]},\\\"PieA\\\":{\\\"series\\\":[{\\\"data\\\":[{\\\"name\\\":\\\"在库\\\",\\\"value\\\":314},{\\\"name\\\":\\\"空\\\",\\\"value\\\":1175},{\\\"name\\\":\\\"禁用\\\",\\\"value\\\":96}]}]},\\\"Radar\\\":{\\\"categories\\\":[\\\"维度1\\\",\\\"维度2\\\",\\\"维度3\\\",\\\"维度4\\\",\\\"维度5\\\",\\\"维度6\\\"],\\\"series\\\":[{\\\"name\\\":\\\"成交量1\\\",\\\"data\\\":[90,110,165,195,187,172]},{\\\"name\\\":\\\"成交量2\\\",\\\"data\\\":[190,210,105,35,27,102]}]},\\\"Arcbar1\\\":{\\\"series\\\":[{\\\"name\\\":\\\"正确率\\\",\\\"data\\\":0.8,\\\"color\\\":\\\"#2fc25b\\\"}]},\\\"Arcbar2\\\":{\\\"series\\\":[{\\\"name\\\":\\\"一班\\\",\\\"data\\\":0.8},{\\\"name\\\":\\\"二班\\\",\\\"data\\\":0.6},{\\\"name\\\":\\\"三班\\\",\\\"data\\\":0.45},{\\\"name\\\":\\\"四班\\\",\\\"data\\\":0.3},{\\\"name\\\":\\\"五班\\\",\\\"data\\\":0.15}]},\\\"Gauge\\\":{\\\"categories\\\":[{\\\"value\\\":0.2,\\\"color\\\":\\\"#1890ff\\\"},{\\\"value\\\":0.8,\\\"color\\\":\\\"#2fc25b\\\"},{\\\"value\\\":1,\\\"color\\\":\\\"#f04864\\\"}],\\\"series\\\":[{\\\"name\\\":\\\"完成率\\\",\\\"data\\\":0.66}]},\\\"Candle\\\":{\\\"categories\\\":[\\\"2020/1/24\\\",\\\"2020/1/25\\\",\\\"2020/1/28\\\",\\\"2020/1/29\\\",\\\"2020/1/30\\\",\\\"2020/1/31\\\",\\\"2020/2/1\\\",\\\"2020/2/4\\\",\\\"2020/2/5\\\",\\\"2020/2/6\\\",\\\"2020/2/7\\\",\\\"2020/2/8\\\",\\\"2020/2/18\\\",\\\"2020/2/19\\\",\\\"2020/2/20\\\",\\\"2020/2/21\\\",\\\"2020/2/22\\\",\\\"2020/2/25\\\",\\\"2020/2/26\\\",\\\"2020/2/27\\\",\\\"2020/2/28\\\",\\\"2020/3/1\\\",\\\"2020/3/4\\\",\\\"2020/3/5\\\",\\\"2020/3/6\\\",\\\"2020/3/7\\\",\\\"2020/3/8\\\",\\\"2020/3/11\\\",\\\"2020/3/12\\\",\\\"2020/3/13\\\",\\\"2020/3/14\\\",\\\"2020/3/15\\\",\\\"2020/3/18\\\",\\\"2020/3/19\\\",\\\"2020/3/20\\\",\\\"2020/3/21\\\",\\\"2020/3/22\\\",\\\"2020/3/25\\\",\\\"2020/3/26\\\",\\\"2020/3/27\\\",\\\"2020/3/28\\\",\\\"2020/3/29\\\",\\\"2020/4/1\\\",\\\"2020/4/2\\\",\\\"2020/4/3\\\",\\\"2020/4/8\\\",\\\"2020/4/9\\\",\\\"2020/4/10\\\",\\\"2020/4/11\\\",\\\"2020/4/12\\\",\\\"2020/4/15\\\",\\\"2020/4/16\\\",\\\"2020/4/17\\\",\\\"2020/4/18\\\",\\\"2020/4/19\\\",\\\"2020/4/22\\\",\\\"2020/4/23\\\",\\\"2020/4/24\\\",\\\"2020/4/25\\\",\\\"2020/4/26\\\",\\\"2020/5/2\\\",\\\"2020/5/3\\\",\\\"2020/5/6\\\",\\\"2020/5/7\\\",\\\"2020/5/8\\\",\\\"2020/5/9\\\",\\\"2020/5/10\\\",\\\"2020/5/13\\\",\\\"2020/5/14\\\",\\\"2020/5/15\\\",\\\"2020/5/16\\\",\\\"2020/5/17\\\",\\\"2020/5/20\\\",\\\"2020/5/21\\\",\\\"2020/5/22\\\",\\\"2020/5/23\\\",\\\"2020/5/24\\\",\\\"2020/5/27\\\",\\\"2020/5/28\\\",\\\"2020/5/29\\\",\\\"2020/5/30\\\",\\\"2020/5/31\\\",\\\"2020/6/3\\\",\\\"2020/6/4\\\",\\\"2020/6/5\\\",\\\"2020/6/6\\\",\\\"2020/6/7\\\",\\\"2020/6/13\\\"],\\\"series\\\":[{\\\"name\\\":\\\"上证指数\\\",\\\"data\\\":[[2320.26,2302.6,2287.3,2362.94],[2300,2291.3,2288.26,2308.38],[2295.35,2346.5,2295.35,2346.92],[2347.22,2358.98,2337.35,2363.8],[2360.75,2382.48,2347.89,2383.76],[2383.43,2385.42,2371.23,2391.82],[2377.41,2419.02,2369.57,2421.15],[2425.92,2428.15,2417.58,2440.38],[2411,2433.13,2403.3,2437.42],[2432.68,2434.48,2427.7,2441.73],[2430.69,2418.53,2394.22,2433.89],[2416.62,2432.4,2414.4,2443.03],[2441.91,2421.56,2415.43,2444.8],[2420.26,2382.91,2373.53,2427.07],[2383.49,2397.18,2370.61,2397.94],[2378.82,2325.95,2309.17,2378.82],[2322.94,2314.16,2308.76,2330.88],[2320.62,2325.82,2315.01,2338.78],[2313.74,2293.34,2289.89,2340.71],[2297.77,2313.22,2292.03,2324.63],[2322.32,2365.59,2308.92,2366.16],[2364.54,2359.51,2330.86,2369.65],[2332.08,2273.4,2259.25,2333.54],[2274.81,2326.31,2270.1,2328.14],[2333.61,2347.18,2321.6,2351.44],[2340.44,2324.29,2304.27,2352.02],[2326.42,2318.61,2314.59,2333.67],[2314.68,2310.59,2296.58,2320.96],[2309.16,2286.6,2264.83,2333.29],[2282.17,2263.97,2253.25,2286.33],[2255.77,2270.28,2253.31,2276.22],[2269.31,2278.4,2250,2312.08],[2267.29,2240.02,2239.21,2276.05],[2244.26,2257.43,2232.02,2261.31],[2257.74,2317.37,2257.42,2317.86],[2318.21,2324.24,2311.6,2330.81],[2321.4,2328.28,2314.97,2332],[2334.74,2326.72,2319.91,2344.89],[2318.58,2297.67,2281.12,2319.99],[2299.38,2301.26,2289,2323.48],[2273.55,2236.3,2232.91,2273.55],[2238.49,2236.62,2228.81,2246.87],[2229.46,2234.4,2227.31,2243.95],[2234.9,2227.74,2220.44,2253.42],[2232.69,2225.29,2217.25,2241.34],[2196.24,2211.59,2180.67,2212.59],[2215.47,2225.77,2215.47,2234.73],[2224.93,2226.13,2212.56,2233.04],[2236.98,2219.55,2217.26,2242.48],[2218.09,2206.78,2204.44,2226.26],[2199.91,2181.94,2177.39,2204.99],[2169.63,2194.85,2165.78,2196.43],[2195.03,2193.8,2178.47,2197.51],[2181.82,2197.6,2175.44,2206.03],[2201.12,2244.64,2200.58,2250.11],[2236.4,2242.17,2232.26,2245.12],[2242.62,2184.54,2182.81,2242.62],[2187.35,2218.32,2184.11,2226.12],[2213.19,2199.31,2191.85,2224.63],[2203.89,2177.91,2173.86,2210.58],[2170.78,2174.12,2161.14,2179.65],[2179.05,2205.5,2179.05,2222.81],[2212.5,2231.17,2212.5,2236.07],[2227.86,2235.57,2219.44,2240.26],[2242.39,2246.3,2235.42,2255.21],[2246.96,2232.97,2221.38,2247.86],[2228.82,2246.83,2225.81,2247.67],[2247.68,2241.92,2231.36,2250.85],[2238.9,2217.01,2205.87,2239.93],[2217.09,2224.8,2213.58,2225.19],[2221.34,2251.81,2210.77,2252.87],[2249.81,2282.87,2248.41,2288.09],[2286.33,2299.99,2281.9,2309.39],[2297.11,2305.11,2290.12,2305.3],[2303.75,2302.4,2292.43,2314.18],[2293.81,2275.67,2274.1,2304.95],[2281.45,2288.53,2270.25,2292.59],[2286.66,2293.08,2283.94,2301.7],[2293.4,2321.32,2281.47,2322.1],[2323.54,2324.02,2321.17,2334.33],[2316.25,2317.75,2310.49,2325.72],[2320.74,2300.59,2299.37,2325.53],[2300.21,2299.25,2294.11,2313.43],[2297.1,2272.42,2264.76,2297.1],[2270.71,2270.93,2260.87,2276.86],[2264.43,2242.11,2240.07,2266.69],[2242.26,2210.9,2205.07,2250.63],[2190.1,2148.35,2126.22,2190.1]]}]},\\\"CandleColumn\\\":{\\\"categories\\\":[\\\"2020/1/24\\\",\\\"2020/1/25\\\",\\\"2020/1/28\\\",\\\"2020/1/29\\\",\\\"2020/1/30\\\",\\\"2020/1/31\\\",\\\"2020/2/1\\\",\\\"2020/2/4\\\",\\\"2020/2/5\\\",\\\"2020/2/6\\\",\\\"2020/2/7\\\",\\\"2020/2/8\\\",\\\"2020/2/18\\\",\\\"2020/2/19\\\",\\\"2020/2/20\\\",\\\"2020/2/21\\\",\\\"2020/2/22\\\",\\\"2020/2/25\\\",\\\"2020/2/26\\\",\\\"2020/2/27\\\",\\\"2020/2/28\\\",\\\"2020/3/1\\\",\\\"2020/3/4\\\",\\\"2020/3/5\\\",\\\"2020/3/6\\\",\\\"2020/3/7\\\",\\\"2020/3/8\\\",\\\"2020/3/11\\\",\\\"2020/3/12\\\",\\\"2020/3/13\\\",\\\"2020/3/14\\\",\\\"2020/3/15\\\",\\\"2020/3/18\\\",\\\"2020/3/19\\\",\\\"2020/3/20\\\",\\\"2020/3/21\\\",\\\"2020/3/22\\\",\\\"2020/3/25\\\",\\\"2020/3/26\\\",\\\"2020/3/27\\\",\\\"2020/3/28\\\",\\\"2020/3/29\\\",\\\"2020/4/1\\\",\\\"2020/4/2\\\",\\\"2020/4/3\\\",\\\"2020/4/8\\\",\\\"2020/4/9\\\",\\\"2020/4/10\\\",\\\"2020/4/11\\\",\\\"2020/4/12\\\",\\\"2020/4/15\\\",\\\"2020/4/16\\\",\\\"2020/4/17\\\",\\\"2020/4/18\\\",\\\"2020/4/19\\\",\\\"2020/4/22\\\",\\\"2020/4/23\\\",\\\"2020/4/24\\\",\\\"2020/4/25\\\",\\\"2020/4/26\\\",\\\"2020/5/2\\\",\\\"2020/5/3\\\",\\\"2020/5/6\\\",\\\"2020/5/7\\\",\\\"2020/5/8\\\",\\\"2020/5/9\\\",\\\"2020/5/10\\\",\\\"2020/5/13\\\",\\\"2020/5/14\\\",\\\"2020/5/15\\\",\\\"2020/5/16\\\",\\\"2020/5/17\\\",\\\"2020/5/20\\\",\\\"2020/5/21\\\",\\\"2020/5/22\\\",\\\"2020/5/23\\\",\\\"2020/5/24\\\",\\\"2020/5/27\\\",\\\"2020/5/28\\\",\\\"2020/5/29\\\",\\\"2020/5/30\\\",\\\"2020/5/31\\\",\\\"2020/6/3\\\",\\\"2020/6/4\\\",\\\"2020/6/5\\\",\\\"2020/6/6\\\",\\\"2020/6/7\\\",\\\"2020/6/13\\\"],\\\"series\\\":[{\\\"name\\\":\\\"成交量1\\\",\\\"data\\\":[15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45,37,43,15,20,45]}]},\\\"Word\\\":{\\\"series\\\":[{\\\"name\\\":\\\"跨全端图表\\\",\\\"textSize\\\":25},{\\\"name\\\":\\\"微信小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"支付宝小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"百度小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"QQ小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"头条小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"抖音小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"360小程序\\\",\\\"textSize\\\":20},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":10},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":12},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":10},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":12},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":10},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":12},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":10},{\\\"name\\\":\\\"跨全端\\\",\\\"textSize\\\":12}]}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI1OS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///59\n");
 
/***/ }),
/* 60 */
/*!*****************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index/data.json ***!
  \*****************************************************************/
/*! exports provided: dataInfo2, dataError2, dataError3, lineData, pieData, other, default */
/***/ (function(module) {
 
eval("module.exports = JSON.parse(\"{\\\"dataInfo2\\\":{\\\"data\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":[{\\\"title\\\":\\\"全板出库\\\",\\\"workNo\\\":8046,\\\"staNo\\\":4,\\\"sourceStaNo\\\":null,\\\"locNo\\\":null,\\\"sourceLocNo\\\":\\\"1500502\\\",\\\"barcode\\\":\\\"80009901\\\",\\\"matDtos\\\":[{\\\"matnr\\\":\\\"LPJ.SLJ.XG.037\\\",\\\"itnum1\\\":\\\"4500\\\",\\\"itnum2\\\":\\\"补货中\\\",\\\"itnum3\\\":\\\"3200\\\",\\\"itnum4\\\":\\\"2024-2-20 13:13:55\\\",\\\"itnum5\\\":\\\"2024-2-20 13:13:55\\\"}],\\\"emptyMk\\\":false,\\\"ioType\\\":101}]}},\\\"dataError2\\\":{\\\"data\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":\\\"\\\"}},\\\"dataError3\\\":{\\\"data\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":[{\\\"maktx\\\":\\\"TD00091\\\",\\\"storeReplenishment\\\":\\\"123123\\\",\\\"storeAdd\\\":\\\"123123\\\",\\\"beBatch$\\\":\\\"123\\\",\\\"appeTime$\\\":\\\"2024年3月1日 21点14分\\\",\\\"overTime$\\\":\\\"2024年3月1日 21\\\"},{\\\"maktx\\\":\\\"TD00091\\\",\\\"storeReplenishment\\\":\\\"123123\\\",\\\"storeAdd\\\":\\\"123123\\\",\\\"beBatch$\\\":\\\"123\\\",\\\"appeTime$\\\":\\\"2024年3月1日 21点14分\\\",\\\"overTime$\\\":\\\"2024年3月1日 21\\\",\\\"inspectSts\\\":\\\"inspectRed\\\",\\\"inspect\\\":1}]}},\\\"lineData\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":{\\\"rows\\\":[{\\\"name\\\":\\\"入库数量\\\",\\\"data\\\":[0,0,0,0,1,1,0,0,4,4,0,4]},{\\\"name\\\":\\\"出库数量\\\",\\\"data\\\":[0,0,0,0,0,0,0,0,3,4,0,1]}]}},\\\"pieData\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":{\\\"emptyCount\\\":3582,\\\"noneCount\\\":256,\\\"total\\\":3840,\\\"stockCunt\\\":2,\\\"usedPr\\\":0.1,\\\"used\\\":2,\\\"pie\\\":[{\\\"name\\\":\\\"在库\\\",\\\"value\\\":2},{\\\"name\\\":\\\"空\\\",\\\"value\\\":3582},{\\\"name\\\":\\\"使用\\\",\\\"value\\\":0},{\\\"name\\\":\\\"禁用\\\",\\\"value\\\":256}]}},\\\"other\\\":{\\\"msg\\\":\\\"操作成功\\\",\\\"code\\\":200,\\\"data\\\":{\\\"xDistance\\\":15651,\\\"xSpeed\\\":32704,\\\"zSpeed\\\":32704,\\\"yDistance\\\":15,\\\"yDuration\\\":0,\\\"ySpeed\\\":32704,\\\"xDuration\\\":0,\\\"content\\\":\\\"\\\",\\\"forkPos\\\":1,\\\"isShow\\\":false}}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2MC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///60\n");
 
/***/ }),
/* 61 */
/*!***********************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index.vue?mpType=page ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_2b59da0e_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=2b59da0e&scoped=true&mpType=page */ 62);\n/* harmony import */ var _index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&setup=true&lang=ts&mpType=page */ 64);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _index_vue_vue_type_template_id_2b59da0e_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _index_vue_vue_type_template_id_2b59da0e_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"2b59da0e\",\n  null,\n  false,\n  _index_vue_vue_type_template_id_2b59da0e_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"pages/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUk7QUFDekk7QUFDK0U7QUFDTDs7O0FBRzFFO0FBQzBLO0FBQzFLLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLGlHQUFNO0FBQ1IsRUFBRSx1R0FBTTtBQUNSLEVBQUUsZ0hBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMkdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYjU5ZGEwZSZzY29wZWQ9dHJ1ZSZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHMmbXBUeXBlPXBhZ2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHMmbXBUeXBlPXBhZ2VcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCIyYjU5ZGEwZVwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9pbmRleC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///61\n");
 
/***/ }),
/* 62 */
/*!*****************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index.vue?vue&type=template&id=2b59da0e&scoped=true&mpType=page ***!
  \*****************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2b59da0e_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=2b59da0e&scoped=true&mpType=page */ 63);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2b59da0e_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2b59da0e_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2b59da0e_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2b59da0e_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 63 */
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/pages/index.vue?vue&type=template&id=2b59da0e&scoped=true&mpType=page ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c("view", {
    staticClass: _vm._$s(0, "sc", "container"),
    attrs: { _i: 0 },
  })
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 64 */
/*!**********************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index.vue?vue&type=script&setup=true&lang=ts&mpType=page ***!
  \**********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_ts_loader_index_js_ref_8_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_2_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/ts-loader??ref--8-1!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-2!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&setup=true&lang=ts&mpType=page */ 65);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_ts_loader_index_js_ref_8_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_2_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_ts_loader_index_js_ref_8_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_2_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_ts_loader_index_js_ref_8_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_2_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_ts_loader_index_js_ref_8_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_2_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_ts_loader_index_js_ref_8_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_2_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_setup_true_lang_ts_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZxQixDQUFnQiwwcUJBQUcsRUFBQyIsImZpbGUiOiI2NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL3RzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LTEhLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS04LTIhLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10cyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy90cy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC0xIS4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tOC0yIS4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHMmbXBUeXBlPXBhZ2VcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///64\n");
 
/***/ }),
/* 65 */
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--8-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-2!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/pages/index.vue?vue&type=script&setup=true&lang=ts&mpType=page ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI2NS5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///65\n");
 
/***/ }),
/* 66 */
/*!*****************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index/index.vue?mpType=page ***!
  \*****************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 67);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 136);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"pages/index/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQzZLO0FBQzdLLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yYmU4NGEzYyZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9pbmRleC9pbmRleC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///66\n");
 
/***/ }),
/* 67 */
/*!***********************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***!
  \***********************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=2be84a3c&mpType=page */ 68);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_2be84a3c_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 68 */
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
try {
  components = {
    qiunDataCharts:
      __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue */ 69)
        .default,
    uniPopup:
      __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup/uni-popup.vue */ 31)
        .default,
    uniPopupDialog:
      __webpack_require__(/*! @/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue */ 36)
        .default,
  }
} catch (e) {
  if (
    e.message.indexOf("Cannot find module") !== -1 &&
    e.message.indexOf(".vue") !== -1
  ) {
    console.error(e.message)
    console.error("1. 排查组件名称拼写是否正确")
    console.error(
      "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
    )
    console.error(
      "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
    )
  } else {
    throw e
  }
}
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "container"), attrs: { _i: 0 } },
    [
      _c(
        "view",
        {
          staticClass: _vm._$s(1, "sc", "floor-screen"),
          class: _vm._$s(1, "c", _vm.floorMove),
          attrs: { _i: 1 },
        },
        [
          _c(
            "view",
            { staticClass: _vm._$s(2, "sc", "head"), attrs: { _i: 2 } },
            [
              _c("text", {
                attrs: { _i: 3 },
                on: {
                  click: function ($event) {
                    return _vm.port()
                  },
                },
              }),
              _c(
                "view",
                {
                  staticClass: _vm._$s(4, "sc", "time-tools"),
                  attrs: { _i: 4 },
                },
                [
                  _vm._v(
                    _vm._$s(4, "t0-0", _vm._s(_vm.year)) +
                      _vm._$s(4, "t0-1", _vm._s(_vm.month)) +
                      _vm._$s(4, "t0-2", _vm._s(_vm.day)) +
                      _vm._$s(4, "t0-3", _vm._s(_vm.hours)) +
                      _vm._$s(4, "t0-4", _vm._s(_vm.minutes)) +
                      _vm._$s(4, "t0-5", _vm._s(_vm.seconds)) +
                      _vm._$s(4, "t0-6", _vm._s(_vm.week))
                  ),
                ]
              ),
              _c("view", {
                staticClass: _vm._$s(5, "sc", "button-left"),
                attrs: { _i: 5 },
                on: {
                  click: function ($event) {
                    return _vm.ejected()
                  },
                },
              }),
              _c("view", {
                staticClass: _vm._$s(6, "sc", "button-right"),
                attrs: { _i: 6 },
                on: {
                  click: function ($event) {
                    return _vm.ledId()
                  },
                },
              }),
            ]
          ),
          _c(
            "view",
            { staticClass: _vm._$s(7, "sc", "main"), attrs: { _i: 7 } },
            [
              _c(
                "view",
                {
                  staticClass: _vm._$s(8, "sc", "main-sides"),
                  attrs: { _i: 8 },
                },
                [
                  _c(
                    "view",
                    { staticClass: _vm._$s(9, "sc", "box"), attrs: { _i: 9 } },
                    [
                      _c("view", {
                        staticClass: _vm._$s(
                          10,
                          "sc",
                          "box-border box-border1"
                        ),
                        attrs: { _i: 10 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          11,
                          "sc",
                          "box-border box-border2"
                        ),
                        attrs: { _i: 11 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          12,
                          "sc",
                          "box-border box-border3"
                        ),
                        attrs: { _i: 12 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          13,
                          "sc",
                          "box-border box-border4"
                        ),
                        attrs: { _i: 13 },
                      }),
                      _c(
                        "view",
                        {
                          directives: [
                            {
                              name: "show",
                              rawName: "v-show",
                              value: _vm._$s(14, "v-show", !_vm.errorShow),
                              expression: "_$s(14,'v-show',!errorShow)",
                            },
                          ],
                          attrs: { _i: 14 },
                        },
                        [
                          _c(
                            "view",
                            {
                              class: _vm._$s(15, "c", _vm.width),
                              attrs: { _i: 15 },
                            },
                            [
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(16, "sc", "box-items"),
                                  attrs: { _i: 16 },
                                },
                                [_vm._v(_vm._$s(16, "t0-0", _vm._s(_vm.title)))]
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(17, "sc", "box-items"),
                                  attrs: { _i: 17 },
                                },
                                [_vm._v(_vm._$s(17, "t0-0", _vm._s(_vm.staNo)))]
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(18, "sc", "box-items"),
                                  attrs: { _i: 18 },
                                },
                                [_vm._v(_vm._$s(18, "t0-0", _vm._s(_vm.maknx)))]
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(19, "sc", "box-items"),
                                  attrs: { _i: 19 },
                                },
                                [_vm._v(_vm._$s(19, "t0-0", _vm._s(_vm.specs)))]
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(20, "sc", "box-items"),
                                  attrs: { _i: 20 },
                                },
                                [_vm._v(_vm._$s(20, "t0-0", _vm._s(_vm.count)))]
                              ),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              directives: [
                                {
                                  name: "show",
                                  rawName: "v-show",
                                  value: _vm._$s(21, "v-show", _vm.orderShow),
                                  expression: "_$s(21,'v-show',orderShow)",
                                },
                              ],
                              attrs: { _i: 21 },
                            },
                            [
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(22, "sc", "box-items"),
                                  attrs: { _i: 22 },
                                },
                                [
                                  _vm._v(
                                    _vm._$s(22, "t0-0", _vm._s(_vm.orderNo))
                                  ),
                                ]
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(23, "sc", "box-items"),
                                  attrs: { _i: 23 },
                                },
                                [
                                  _vm._v(
                                    _vm._$s(23, "t0-0", _vm._s(_vm.doneOfTray))
                                  ),
                                ]
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(24, "sc", "box-items"),
                                  attrs: { _i: 24 },
                                },
                                [
                                  _vm._v(
                                    _vm._$s(24, "t0-0", _vm._s(_vm.totalOfTray))
                                  ),
                                ]
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(25, "sc", "box-items"),
                                  attrs: { _i: 25 },
                                },
                                [
                                  _vm._v(
                                    _vm._$s(25, "t0-0", _vm._s(_vm.doneOfUnit))
                                  ),
                                ]
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(26, "sc", "box-items"),
                                  attrs: { _i: 26 },
                                },
                                [
                                  _vm._v(
                                    _vm._$s(26, "t0-0", _vm._s(_vm.totalOfUnit))
                                  ),
                                ]
                              ),
                            ]
                          ),
                        ]
                      ),
                      _c(
                        "view",
                        {
                          directives: [
                            {
                              name: "show",
                              rawName: "v-show",
                              value: _vm._$s(27, "v-show", _vm.errorShow),
                              expression: "_$s(27,'v-show',errorShow)",
                            },
                          ],
                          attrs: { _i: 27 },
                        },
                        [
                          _c("view", [
                            _vm._v(_vm._$s(28, "t0-0", _vm._s(_vm.errorMsg))),
                          ]),
                        ]
                      ),
                    ]
                  ),
                ]
              ),
            ]
          ),
        ]
      ),
      _c(
        "view",
        {
          staticClass: _vm._$s(29, "sc", "top-screen"),
          class: _vm._$s(29, "c", _vm.topMove),
          attrs: { _i: 29 },
        },
        [
          _c(
            "view",
            { staticClass: _vm._$s(30, "sc", "head"), attrs: { _i: 30 } },
            [
              _c("text", {
                attrs: { _i: 31 },
                on: {
                  click: function ($event) {
                    return _vm.port()
                  },
                },
              }),
              _c(
                "view",
                {
                  staticClass: _vm._$s(32, "sc", "time-tools"),
                  attrs: { _i: 32 },
                },
                [
                  _vm._v(
                    _vm._$s(32, "t0-0", _vm._s(_vm.year)) +
                      _vm._$s(32, "t0-1", _vm._s(_vm.month)) +
                      _vm._$s(32, "t0-2", _vm._s(_vm.day)) +
                      _vm._$s(32, "t0-3", _vm._s(_vm.hours)) +
                      _vm._$s(32, "t0-4", _vm._s(_vm.minutes)) +
                      _vm._$s(32, "t0-5", _vm._s(_vm.seconds)) +
                      _vm._$s(32, "t0-6", _vm._s(_vm.week))
                  ),
                ]
              ),
              _c("view", {
                staticClass: _vm._$s(33, "sc", "button-left"),
                attrs: { _i: 33 },
                on: {
                  click: function ($event) {
                    return _vm.ejected()
                  },
                },
              }),
              _c("view", {
                staticClass: _vm._$s(34, "sc", "button-right"),
                attrs: { _i: 34 },
                on: {
                  click: function ($event) {
                    return _vm.ledId()
                  },
                },
              }),
            ]
          ),
          _c(
            "view",
            { staticClass: _vm._$s(35, "sc", "main"), attrs: { _i: 35 } },
            [
              _c(
                "view",
                {
                  staticClass: _vm._$s(36, "sc", "main-sides"),
                  attrs: { _i: 36 },
                },
                [
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(37, "sc", "box box-lg"),
                      attrs: { _i: 37 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(
                          38,
                          "sc",
                          "box-border box-border1"
                        ),
                        attrs: { _i: 38 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          39,
                          "sc",
                          "box-border box-border2"
                        ),
                        attrs: { _i: 39 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          40,
                          "sc",
                          "box-border box-border3"
                        ),
                        attrs: { _i: 40 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          41,
                          "sc",
                          "box-border box-border4"
                        ),
                        attrs: { _i: 41 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(42, "sc", "box-item introduce"),
                          attrs: { _i: 42 },
                        },
                        [
                          _c("h3"),
                          _c("p", {
                            staticClass: _vm._$s(44, "sc", "english"),
                            attrs: { _i: 44 },
                          }),
                          _c("p", {
                            staticClass: _vm._$s(45, "sc", "introduce-content"),
                            attrs: { _i: 45 },
                          }),
                        ]
                      ),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(
                            46,
                            "sc",
                            "box-item charge-info"
                          ),
                          attrs: { _i: 46 },
                        },
                        [
                          _c("h3"),
                          _c("p", {
                            staticClass: _vm._$s(48, "sc", "english"),
                            attrs: { _i: 48 },
                          }),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(
                                49,
                                "sc",
                                "charge-info-item"
                              ),
                              attrs: { _i: 49 },
                            },
                            [
                              _c("image", {
                                attrs: {
                                  src: _vm._$s(
                                    50,
                                    "a-src",
                                    __webpack_require__(/*! ../../static/a1.png */ 129)
                                  ),
                                  _i: 50,
                                },
                              }),
                              _c("view", [
                                _c(
                                  "text",
                                  {
                                    staticClass: _vm._$s(52, "sc", "count"),
                                    attrs: { _i: 52 },
                                  },
                                  [
                                    _vm._v(
                                      _vm._$s(52, "t0-0", _vm._s(_vm.xDistance))
                                    ),
                                  ]
                                ),
                                _c("text", {
                                  staticClass: _vm._$s(53, "sc", "unit"),
                                  attrs: { _i: 53 },
                                }),
                              ]),
                              _c("view"),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(
                                55,
                                "sc",
                                "charge-info-item"
                              ),
                              attrs: { _i: 55 },
                            },
                            [
                              _c("image", {
                                attrs: {
                                  src: _vm._$s(
                                    56,
                                    "a-src",
                                    __webpack_require__(/*! ../../static/b1.png */ 130)
                                  ),
                                  _i: 56,
                                },
                              }),
                              _c("view", [
                                _c(
                                  "text",
                                  {
                                    staticClass: _vm._$s(58, "sc", "count"),
                                    attrs: { _i: 58 },
                                  },
                                  [
                                    _vm._v(
                                      _vm._$s(58, "t0-0", _vm._s(_vm.yDistance))
                                    ),
                                  ]
                                ),
                                _c("text", {
                                  staticClass: _vm._$s(59, "sc", "unit"),
                                  attrs: { _i: 59 },
                                }),
                              ]),
                              _c("view"),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(
                                61,
                                "sc",
                                "charge-info-item"
                              ),
                              attrs: { _i: 61 },
                            },
                            [
                              _c("image", {
                                attrs: {
                                  src: _vm._$s(
                                    62,
                                    "a-src",
                                    __webpack_require__(/*! ../../static/c1.png */ 131)
                                  ),
                                  _i: 62,
                                },
                              }),
                              _c("view", [
                                _c(
                                  "text",
                                  {
                                    staticClass: _vm._$s(64, "sc", "count"),
                                    attrs: { _i: 64 },
                                  },
                                  [
                                    _vm._v(
                                      _vm._$s(64, "t0-0", _vm._s(_vm.xDuration))
                                    ),
                                  ]
                                ),
                                _c("text", {
                                  staticClass: _vm._$s(65, "sc", "unit"),
                                  attrs: { _i: 65 },
                                }),
                              ]),
                              _c("view"),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(
                                67,
                                "sc",
                                "charge-info-item"
                              ),
                              attrs: { _i: 67 },
                            },
                            [
                              _c("image", {
                                attrs: {
                                  src: _vm._$s(
                                    68,
                                    "a-src",
                                    __webpack_require__(/*! ../../static/d1.png */ 132)
                                  ),
                                  _i: 68,
                                },
                              }),
                              _c("view", [
                                _c(
                                  "text",
                                  {
                                    staticClass: _vm._$s(70, "sc", "count"),
                                    attrs: { _i: 70 },
                                  },
                                  [
                                    _vm._v(
                                      _vm._$s(70, "t0-0", _vm._s(_vm.yDuration))
                                    ),
                                  ]
                                ),
                                _c("text", {
                                  staticClass: _vm._$s(71, "sc", "unit"),
                                  attrs: { _i: 71 },
                                }),
                              ]),
                              _c("view"),
                            ]
                          ),
                        ]
                      ),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(73, "sc", "box-item use-info"),
                          attrs: { _i: 73 },
                        },
                        [
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(74, "sc", "use-left"),
                              attrs: { _i: 74 },
                            },
                            [
                              _c("h3"),
                              _c("p", {
                                staticClass: _vm._$s(76, "sc", "english"),
                                attrs: { _i: 76 },
                              }),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(77, "sc", "use-right"),
                              attrs: { _i: 77 },
                            },
                            [
                              _c("h3", [
                                _vm._v(_vm._$s(78, "t0-0", _vm._s(_vm.usedPr))),
                              ]),
                              _c("p", {
                                staticClass: _vm._$s(79, "sc", "english"),
                                attrs: { _i: 79 },
                              }),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(80, "sc", "use-main"),
                              attrs: { _i: 80 },
                            },
                            [
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(81, "sc", "left"),
                                  attrs: { _i: 81 },
                                },
                                [
                                  _c(
                                    "view",
                                    {
                                      staticClass: _vm._$s(
                                        82,
                                        "sc",
                                        "progressBar"
                                      ),
                                      attrs: { _i: 82 },
                                    },
                                    [
                                      _c("view", {
                                        staticClass: _vm._$s(
                                          83,
                                          "sc",
                                          "progress"
                                        ),
                                        style: _vm._$s(
                                          83,
                                          "s",
                                          "width:" + _vm.usedPr + "%"
                                        ),
                                        attrs: { _i: 83 },
                                      }),
                                    ]
                                  ),
                                ]
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(84, "sc", "right"),
                                  attrs: { _i: 84 },
                                },
                                [_vm._v(_vm._$s(84, "t0-0", _vm._s(_vm.used)))]
                              ),
                            ]
                          ),
                        ]
                      ),
                    ]
                  ),
                ]
              ),
              _c(
                "view",
                {
                  staticClass: _vm._$s(85, "sc", "main-sides"),
                  attrs: { _i: 85 },
                },
                [
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(86, "sc", "box box-tp"),
                      attrs: { _i: 86 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(
                          87,
                          "sc",
                          "box-border box-border1"
                        ),
                        attrs: { _i: 87 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          88,
                          "sc",
                          "box-border box-border2"
                        ),
                        attrs: { _i: 88 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          89,
                          "sc",
                          "box-border box-border3"
                        ),
                        attrs: { _i: 89 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          90,
                          "sc",
                          "box-border box-border4"
                        ),
                        attrs: { _i: 90 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(91, "sc", "box-item right-item"),
                          attrs: { _i: 91 },
                        },
                        [
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(92, "sc", "sub-left"),
                              attrs: { _i: 92 },
                            },
                            [
                              _c("h3"),
                              _c("p", {
                                staticClass: _vm._$s(94, "sc", "english"),
                                attrs: { _i: 94 },
                              }),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(95, "sc", "sub-right"),
                              attrs: { _i: 95 },
                            },
                            [
                              _c("h3"),
                              _c("p", {
                                staticClass: _vm._$s(97, "sc", "english"),
                                attrs: { _i: 97 },
                              }),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(98, "sc", "sub-main"),
                              attrs: { _i: 98 },
                            },
                            [
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(99, "sc", "charts-box"),
                                  attrs: { _i: 99 },
                                },
                                [
                                  _c("qiun-data-charts", {
                                    attrs: {
                                      type: "line",
                                      chartData: _vm.chartsDataLine1,
                                      echartsH5: true,
                                      echartsApp: true,
                                      _i: 100,
                                    },
                                  }),
                                ],
                                1
                              ),
                            ]
                          ),
                        ]
                      ),
                    ]
                  ),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(101, "sc", "box box-md"),
                      attrs: { _i: 101 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(
                          102,
                          "sc",
                          "box-border box-border1"
                        ),
                        attrs: { _i: 102 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          103,
                          "sc",
                          "box-border box-border2"
                        ),
                        attrs: { _i: 103 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          104,
                          "sc",
                          "box-border box-border3"
                        ),
                        attrs: { _i: 104 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          105,
                          "sc",
                          "box-border box-border4"
                        ),
                        attrs: { _i: 105 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(
                            106,
                            "sc",
                            "box-item right-item"
                          ),
                          attrs: { _i: 106 },
                        },
                        [
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(107, "sc", "sub-left"),
                              attrs: { _i: 107 },
                            },
                            [
                              _c("h3"),
                              _c("p", {
                                staticClass: _vm._$s(109, "sc", "english"),
                                attrs: { _i: 109 },
                              }),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(110, "sc", "sub-right"),
                              attrs: { _i: 110 },
                            },
                            [
                              _c("h3"),
                              _c("p", {
                                staticClass: _vm._$s(112, "sc", "english"),
                                attrs: { _i: 112 },
                              }),
                            ]
                          ),
                          _c(
                            "view",
                            {
                              staticClass: _vm._$s(113, "sc", "sub-main"),
                              attrs: { _i: 113 },
                            },
                            [
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(
                                    114,
                                    "sc",
                                    "charts-box ring"
                                  ),
                                  attrs: { _i: 114 },
                                },
                                [
                                  _c("qiun-data-charts", {
                                    attrs: {
                                      type: "ring",
                                      opts: { legend: { position: "bottom" } },
                                      eopts: _vm.ringOpts,
                                      chartData: _vm.chartsDataPie2,
                                      echartsH5: true,
                                      echartsApp: true,
                                      _i: 115,
                                    },
                                  }),
                                ],
                                1
                              ),
                              _c(
                                "view",
                                {
                                  staticClass: _vm._$s(
                                    116,
                                    "sc",
                                    "sub-main-right"
                                  ),
                                  attrs: { _i: 116 },
                                },
                                [
                                  _c(
                                    "view",
                                    {
                                      staticClass: _vm._$s(
                                        117,
                                        "sc",
                                        "sub-info"
                                      ),
                                      attrs: { _i: 117 },
                                    },
                                    [
                                      _c("image", {
                                        attrs: {
                                          src: _vm._$s(
                                            118,
                                            "a-src",
                                            __webpack_require__(/*! ../../static/g1.png */ 133)
                                          ),
                                          _i: 118,
                                        },
                                      }),
                                      _c("text"),
                                      _c("text", [
                                        _vm._v(
                                          _vm._$s(
                                            120,
                                            "t0-0",
                                            _vm._s(_vm.stockCount)
                                          )
                                        ),
                                      ]),
                                    ]
                                  ),
                                  _c(
                                    "view",
                                    {
                                      staticClass: _vm._$s(
                                        121,
                                        "sc",
                                        "sub-info"
                                      ),
                                      attrs: { _i: 121 },
                                    },
                                    [
                                      _c("image", {
                                        attrs: {
                                          src: _vm._$s(
                                            122,
                                            "a-src",
                                            __webpack_require__(/*! ../../static/f1.png */ 134)
                                          ),
                                          _i: 122,
                                        },
                                      }),
                                      _c("text"),
                                      _c("text", [
                                        _vm._v(
                                          _vm._$s(
                                            124,
                                            "t0-0",
                                            _vm._s(_vm.emptyCount)
                                          )
                                        ),
                                      ]),
                                    ]
                                  ),
                                  _c(
                                    "view",
                                    {
                                      staticClass: _vm._$s(
                                        125,
                                        "sc",
                                        "sub-info"
                                      ),
                                      attrs: { _i: 125 },
                                    },
                                    [
                                      _c("image", {
                                        attrs: {
                                          src: _vm._$s(
                                            126,
                                            "a-src",
                                            __webpack_require__(/*! ../../static/e1.png */ 135)
                                          ),
                                          _i: 126,
                                        },
                                      }),
                                      _c("text"),
                                      _c("text", [
                                        _vm._v(
                                          _vm._$s(
                                            128,
                                            "t0-0",
                                            _vm._s(_vm.noneCount)
                                          )
                                        ),
                                      ]),
                                    ]
                                  ),
                                ]
                              ),
                            ]
                          ),
                        ]
                      ),
                    ]
                  ),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(129, "sc", "box box-bt"),
                      attrs: { _i: 129 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(
                          130,
                          "sc",
                          "box-border box-border1"
                        ),
                        attrs: { _i: 130 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          131,
                          "sc",
                          "box-border box-border2"
                        ),
                        attrs: { _i: 131 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          132,
                          "sc",
                          "box-border box-border3"
                        ),
                        attrs: { _i: 132 },
                      }),
                      _c("view", {
                        staticClass: _vm._$s(
                          133,
                          "sc",
                          "box-border box-border4"
                        ),
                        attrs: { _i: 133 },
                      }),
                      _c("view", {
                        attrs: { _i: 134 },
                        on: {
                          click: function ($event) {
                            return _vm.crn()
                          },
                        },
                      }),
                    ]
                  ),
                ]
              ),
            ]
          ),
        ]
      ),
      _c(
        "view",
        [
          _c(
            "uni-popup",
            { ref: "url", attrs: { type: "dialog", _i: 136 } },
            [
              _c("uni-popup-dialog", {
                ref: "inputClose",
                attrs: {
                  mode: "input",
                  title: "配置url",
                  value: _vm.baseIP,
                  placeholder: "示例:192.168.1.1",
                  _i: 137,
                },
                on: { confirm: _vm.baseUrlConfirm },
              }),
            ],
            1
          ),
        ],
        1
      ),
      _c(
        "view",
        [
          _c(
            "uni-popup",
            { ref: "ledId", attrs: { type: "dialog", _i: 139 } },
            [
              _c("uni-popup-dialog", {
                ref: "inputClose",
                attrs: {
                  mode: "input",
                  title: "配置ledId",
                  value: _vm.baseLedId,
                  placeholder: "示例:188",
                  _i: 140,
                },
                on: { confirm: _vm.ledIdConfirm },
              }),
            ],
            1
          ),
        ],
        1
      ),
      _c(
        "view",
        [
          _c(
            "uni-popup",
            { ref: "port", attrs: { type: "dialog", _i: 142 } },
            [
              _c("uni-popup-dialog", {
                ref: "inputClose",
                attrs: {
                  mode: "input",
                  title: "配置端口号",
                  value: _vm.basePort,
                  placeholder: "示例:9090",
                  _i: 143,
                },
                on: { confirm: _vm.portConfirm },
              }),
            ],
            1
          ),
        ],
        1
      ),
      _c(
        "view",
        [
          _c(
            "uni-popup",
            { ref: "crnId", attrs: { type: "dialog", _i: 145 } },
            [
              _c("uni-popup-dialog", {
                ref: "inputClose",
                attrs: {
                  mode: "input",
                  title: "配置堆垛机",
                  value: _vm.crnId,
                  placeholder: "示例:1",
                  _i: 146,
                },
                on: { confirm: _vm.crnConfirm },
              }),
            ],
            1
          ),
        ],
        1
      ),
      _c(
        "view",
        {
          directives: [
            {
              name: "show",
              rawName: "v-show",
              value: _vm._$s(147, "v-show", _vm.ejectShow),
              expression: "_$s(147,'v-show',ejectShow)",
            },
          ],
          staticClass: _vm._$s(147, "sc", "eject-mask"),
          attrs: { _i: 147 },
        },
        [
          _c(
            "view",
            { staticClass: _vm._$s(148, "sc", "eject"), attrs: { _i: 148 } },
            [
              _c("view", {
                staticClass: _vm._$s(149, "sc", "eject-title"),
                attrs: { _i: 149 },
              }),
              _c(
                "view",
                {
                  staticClass: _vm._$s(150, "sc", "eject-input"),
                  attrs: { _i: 150 },
                },
                [
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(151, "sc", "item"),
                      attrs: { _i: 151 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(152, "sc", "desc"),
                        attrs: { _i: 152 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(153, "sc", "input"),
                          attrs: { _i: 153 },
                        },
                        [
                          _c("input", {
                            directives: [
                              {
                                name: "model",
                                rawName: "v-model",
                                value: _vm.baseIP,
                                expression: "baseIP",
                              },
                            ],
                            attrs: { _i: 154 },
                            domProps: {
                              value: _vm._$s(154, "v-model", _vm.baseIP),
                            },
                            on: {
                              input: function ($event) {
                                if ($event.target.composing) {
                                  return
                                }
                                _vm.baseIP = $event.target.value
                              },
                            },
                          }),
                        ]
                      ),
                    ]
                  ),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(155, "sc", "item"),
                      attrs: { _i: 155 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(156, "sc", "desc"),
                        attrs: { _i: 156 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(157, "sc", "input"),
                          attrs: { _i: 157 },
                        },
                        [
                          _c("input", {
                            directives: [
                              {
                                name: "model",
                                rawName: "v-model",
                                value: _vm.basePort,
                                expression: "basePort",
                              },
                            ],
                            attrs: { _i: 158 },
                            domProps: {
                              value: _vm._$s(158, "v-model", _vm.basePort),
                            },
                            on: {
                              input: function ($event) {
                                if ($event.target.composing) {
                                  return
                                }
                                _vm.basePort = $event.target.value
                              },
                            },
                          }),
                        ]
                      ),
                    ]
                  ),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(159, "sc", "item"),
                      attrs: { _i: 159 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(160, "sc", "desc"),
                        attrs: { _i: 160 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(161, "sc", "input"),
                          attrs: { _i: 161 },
                        },
                        [
                          _c("input", {
                            directives: [
                              {
                                name: "model",
                                rawName: "v-model",
                                value: _vm.baseLedId,
                                expression: "baseLedId",
                              },
                            ],
                            attrs: { _i: 162 },
                            domProps: {
                              value: _vm._$s(162, "v-model", _vm.baseLedId),
                            },
                            on: {
                              input: function ($event) {
                                if ($event.target.composing) {
                                  return
                                }
                                _vm.baseLedId = $event.target.value
                              },
                            },
                          }),
                        ]
                      ),
                    ]
                  ),
                  _c(
                    "view",
                    {
                      staticClass: _vm._$s(163, "sc", "item"),
                      attrs: { _i: 163 },
                    },
                    [
                      _c("view", {
                        staticClass: _vm._$s(164, "sc", "desc"),
                        attrs: { _i: 164 },
                      }),
                      _c(
                        "view",
                        {
                          staticClass: _vm._$s(165, "sc", "input"),
                          attrs: { _i: 165 },
                        },
                        [
                          _c("input", {
                            directives: [
                              {
                                name: "model",
                                rawName: "v-model",
                                value: _vm.baseCrnId,
                                expression: "baseCrnId",
                              },
                            ],
                            attrs: { _i: 166 },
                            domProps: {
                              value: _vm._$s(166, "v-model", _vm.baseCrnId),
                            },
                            on: {
                              input: function ($event) {
                                if ($event.target.composing) {
                                  return
                                }
                                _vm.baseCrnId = $event.target.value
                              },
                            },
                          }),
                        ]
                      ),
                    ]
                  ),
                ]
              ),
              _c(
                "view",
                {
                  staticClass: _vm._$s(167, "sc", "eject-button"),
                  attrs: { _i: 167 },
                },
                [
                  _c("view", {
                    staticClass: _vm._$s(168, "sc", "button-item"),
                    attrs: { _i: 168 },
                    on: { click: _vm.ejectClose },
                  }),
                  _c("view", {
                    staticClass: _vm._$s(169, "sc", "button-item"),
                    attrs: { _i: 169 },
                    on: { click: _vm.ejectConfirm },
                  }),
                ]
              ),
            ]
          ),
        ]
      ),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 69 */
/*!*************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue ***!
  \*************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0_3D___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0%3D& */ 70);\n/* harmony import */ var _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./qiun-data-charts.vue?vue&type=script&lang=js& */ 107);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0_3D___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0_3D___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"fe947b98\",\n  null,\n  false,\n  _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0_3D___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbVQ7QUFDblQ7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSxpUkFBTTtBQUNSLEVBQUUsMFJBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUscVJBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3FpdW4tZGF0YS1jaGFydHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZlOTQ3Yjk4JnNjb3BlZD10cnVlJmZpbHRlci1tb2R1bGVzPWV5SnlaR05vWVhKMGN5STZleUowZVhCbElqb2ljbVZ1WkdWeWFuTWlMQ0pqYjI1MFpXNTBJam9pSWl3aWMzUmhjblFpT2pNNE9Ea3dMQ0poZEhSeWN5STZleUp0YjJSMWJHVWlPaUp5WkdOb1lYSjBjeUlzSW14aGJtY2lPaUpxY3lKOUxDSmxibVFpT2pVME5qY3lmWDAlM0QmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9xaXVuLWRhdGEtY2hhcnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vcWl1bi1kYXRhLWNoYXJ0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiZmU5NDdiOThcIixcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZGF0YS1jaGFydHMvcWl1bi1kYXRhLWNoYXJ0cy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///69\n");
 
/***/ }),
/* 70 */
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0%3D& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0_3D___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0%3D& */ 71);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 71 */
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjcyfX0%3D& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
try {
  components = {
    qiunLoading:
      __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue */ 72)
        .default,
    qiunError:
      __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue */ 102)
        .default,
  }
} catch (e) {
  if (
    e.message.indexOf("Cannot find module") !== -1 &&
    e.message.indexOf(".vue") !== -1
  ) {
    console.error(e.message)
    console.error("1. 排查组件名称拼写是否正确")
    console.error(
      "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
    )
    console.error(
      "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
    )
  } else {
    throw e
  }
}
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    {
      staticClass: _vm._$s(0, "sc", "chartsview"),
      attrs: { id: _vm._$s(0, "a-id", "ChartBoxId" + _vm.cid), _i: 0 },
    },
    [
      _vm._$s(1, "i", _vm.mixinDatacomLoading)
        ? _c(
            "view",
            [
              _c("qiun-loading", {
                attrs: { loadingType: _vm.loadingType, _i: 2 },
              }),
            ],
            1
          )
        : _vm._e(),
      _vm._$s(3, "i", _vm.mixinDatacomErrorMessage && _vm.errorShow)
        ? _c(
            "view",
            { attrs: { _i: 3 }, on: { click: _vm.reloading } },
            [
              _c("qiun-error", {
                attrs: { errorMessage: _vm.errorMessage, _i: 4 },
              }),
            ],
            1
          )
        : _vm._e(),
      _vm._$s(5, "i", _vm.echarts)
        ? [
            _c("view", {
              directives: [
                {
                  name: "show",
                  rawName: "v-show",
                  value: _vm._$s(6, "v-show", _vm.showchart),
                  expression: "_$s(6,'v-show',showchart)",
                },
              ],
              wxsProps: {
                "change:resize": "echartsResize",
                "change:prop": "echartsOpts",
              },
              style: _vm._$s(6, "s", { background: _vm.background }),
              attrs: {
                "data-directory": _vm._$s(6, "a-data-directory", _vm.directory),
                id: _vm._$s(6, "a-id", "EC" + _vm.cid),
                prop: _vm._$s(6, "change:echartsOpts", _vm.echartsOpts),
                resize: _vm._$s(6, "change:echartsResize", _vm.echartsResize),
                _i: 6,
              },
            }),
          ]
        : [
            _c(
              "view",
              {
                wxsProps: { "change:prop": "uchartsOpts" },
                attrs: {
                  id: _vm._$s(8, "a-id", "UC" + _vm.cid),
                  prop: _vm._$s(8, "change:uchartsOpts", _vm.uchartsOpts),
                  _i: 8,
                },
                on: {},
              },
              [
                _c("canvas", {
                  directives: [
                    {
                      name: "show",
                      rawName: "v-show",
                      value: _vm._$s(9, "v-show", _vm.showchart),
                      expression: "_$s(9,'v-show',showchart)",
                    },
                  ],
                  style: _vm._$s(9, "s", {
                    width: _vm.cWidth + "px",
                    height: _vm.cHeight + "px",
                    background: _vm.background,
                  }),
                  attrs: {
                    id: _vm._$s(9, "a-id", _vm.cid),
                    canvasId: _vm._$s(9, "a-canvasId", _vm.cid),
                    "disable-scroll": _vm._$s(
                      9,
                      "a-disable-scroll",
                      _vm.disableScroll
                    ),
                    _i: 9,
                  },
                  on: { error: _vm._error },
                }),
              ]
            ),
          ],
    ],
    2
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 72 */
/*!*****************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue ***!
  \*****************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./qiun-loading.vue?vue&type=template&id=1c4fd998& */ 73);\n/* harmony import */ var _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./qiun-loading.vue?vue&type=script&lang=js& */ 75);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUg7QUFDekg7QUFDZ0U7QUFDTDs7O0FBRzNEO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLGtGQUFNO0FBQ1IsRUFBRSx1RkFBTTtBQUNSLEVBQUUsZ0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMkZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3FpdW4tbG9hZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWM0ZmQ5OTgmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9xaXVuLWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9xaXVuLWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL3FpdW4tbG9hZGluZy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///72\n");
 
/***/ }),
/* 73 */
/*!************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=template&id=1c4fd998& ***!
  \************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-loading.vue?vue&type=template&id=1c4fd998& */ 74);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 74 */
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=template&id=1c4fd998& ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    [
      _vm._$s(1, "i", _vm.loadingType == 1)
        ? _c("Loading1", { attrs: { _i: 1 } })
        : _vm._e(),
      _vm._$s(2, "i", _vm.loadingType == 2)
        ? _c("Loading2", { attrs: { _i: 2 } })
        : _vm._e(),
      _vm._$s(3, "i", _vm.loadingType == 3)
        ? _c("Loading3", { attrs: { _i: 3 } })
        : _vm._e(),
      _vm._$s(4, "i", _vm.loadingType == 4)
        ? _c("Loading4", { attrs: { _i: 4 } })
        : _vm._e(),
      _vm._$s(5, "i", _vm.loadingType == 5)
        ? _c("Loading5", { attrs: { _i: 5 } })
        : _vm._e(),
    ],
    1
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 75 */
/*!******************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-loading.vue?vue&type=script&lang=js& */ 76);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdtQixDQUFnQixrbEJBQUcsRUFBQyIsImZpbGUiOiI3NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9xaXVuLWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1sb2FkaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n");
 
/***/ }),
/* 76 */
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=script&lang=js& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _loading = _interopRequireDefault(__webpack_require__(/*! ./loading1.vue */ 77));\nvar _loading2 = _interopRequireDefault(__webpack_require__(/*! ./loading2.vue */ 82));\nvar _loading3 = _interopRequireDefault(__webpack_require__(/*! ./loading3.vue */ 87));\nvar _loading4 = _interopRequireDefault(__webpack_require__(/*! ./loading4.vue */ 92));\nvar _loading5 = _interopRequireDefault(__webpack_require__(/*! ./loading5.vue */ 97));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  components: {\n    Loading1: _loading.default,\n    Loading2: _loading2.default,\n    Loading3: _loading3.default,\n    Loading4: _loading4.default,\n    Loading5: _loading5.default\n  },\n  name: 'qiun-loading',\n  props: {\n    loadingType: {\n      type: Number,\n      default: 2\n    }\n  },\n  data: function data() {\n    return {};\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9xaXVuLWxvYWRpbmcudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJMb2FkaW5nMSIsIkxvYWRpbmcyIiwiTG9hZGluZzMiLCJMb2FkaW5nNCIsIkxvYWRpbmc1IiwibmFtZSIsInByb3BzIiwibG9hZGluZ1R5cGUiLCJ0eXBlIiwiZGVmYXVsdCIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztlQUNBO0VBQ0FBO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0VBQUE7RUFDQUM7RUFDQUM7SUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI3Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldz5cclxuXHQgPExvYWRpbmcxIHYtaWY9XCJsb2FkaW5nVHlwZT09MVwiLz5cclxuXHQgPExvYWRpbmcyIHYtaWY9XCJsb2FkaW5nVHlwZT09MlwiLz5cclxuXHQgPExvYWRpbmczIHYtaWY9XCJsb2FkaW5nVHlwZT09M1wiLz5cclxuXHQgPExvYWRpbmc0IHYtaWY9XCJsb2FkaW5nVHlwZT09NFwiLz5cclxuXHQgPExvYWRpbmc1IHYtaWY9XCJsb2FkaW5nVHlwZT09NVwiLz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCBMb2FkaW5nMSBmcm9tIFwiLi9sb2FkaW5nMS52dWVcIjtcclxuXHRpbXBvcnQgTG9hZGluZzIgZnJvbSBcIi4vbG9hZGluZzIudnVlXCI7XHJcblx0aW1wb3J0IExvYWRpbmczIGZyb20gXCIuL2xvYWRpbmczLnZ1ZVwiO1xyXG5cdGltcG9ydCBMb2FkaW5nNCBmcm9tIFwiLi9sb2FkaW5nNC52dWVcIjtcclxuXHRpbXBvcnQgTG9hZGluZzUgZnJvbSBcIi4vbG9hZGluZzUudnVlXCI7XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0Y29tcG9uZW50czp7TG9hZGluZzEsTG9hZGluZzIsTG9hZGluZzMsTG9hZGluZzQsTG9hZGluZzV9LFxyXG5cdFx0bmFtZTogJ3FpdW4tbG9hZGluZycsXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHRsb2FkaW5nVHlwZToge1xyXG5cdFx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0XHRkZWZhdWx0OiAyXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcclxuXHRcdFx0fTtcclxuXHRcdH0sXHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuXHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///76\n");
 
/***/ }),
/* 77 */
/*!*************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue ***!
  \*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading1.vue?vue&type=template&id=e4e769ee&scoped=true& */ 78);\n/* harmony import */ var _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading1.vue?vue&type=script&lang=js& */ 80);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"e4e769ee\",\n  null,\n  false,\n  _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmcxLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGU3NjllZSZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmcxLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcImU0ZTc2OWVlXCIsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvY29tcG9uZW50cy9xaXVuLWxvYWRpbmcvbG9hZGluZzEudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///77\n");
 
/***/ }),
/* 78 */
/*!********************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=template&id=e4e769ee&scoped=true& ***!
  \********************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading1.vue?vue&type=template&id=e4e769ee&scoped=true& */ 79);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 79 */
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=template&id=e4e769ee&scoped=true& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "container loading1"), attrs: { _i: 0 } },
    [
      _c("view", {
        staticClass: _vm._$s(1, "sc", "shape shape1"),
        attrs: { _i: 1 },
      }),
      _c("view", {
        staticClass: _vm._$s(2, "sc", "shape shape2"),
        attrs: { _i: 2 },
      }),
      _c("view", {
        staticClass: _vm._$s(3, "sc", "shape shape3"),
        attrs: { _i: 3 },
      }),
      _c("view", {
        staticClass: _vm._$s(4, "sc", "shape shape4"),
        attrs: { _i: 4 },
      }),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 80 */
/*!**************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading1.vue?vue&type=script&lang=js& */ 81);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9tQixDQUFnQiw4a0JBQUcsRUFBQyIsImZpbGUiOiI4MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9sb2FkaW5nMS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9sb2FkaW5nMS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///80\n");
 
/***/ }),
/* 81 */
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  name: 'loading1',\n  data: function data() {\n    return {};\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nMS52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI4MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzFcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmcxJyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuLmNvbnRhaW5lci5sb2FkaW5nMSB7XHJcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbn1cclxuXHJcbi5jb250YWluZXIgLnNoYXBlIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDEwcHg7XHJcbiAgaGVpZ2h0OiAxMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTEge1xyXG4gIGxlZnQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4OTBGRjtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTIge1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM5MUNCNzQ7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUzIHtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZBQzg1ODtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTQge1xyXG4gIGJvdHRvbTogMDtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NjY2O1xyXG59XHJcblxyXG4ubG9hZGluZzEgLnNoYXBlMSB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjFzaGFwZTEgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uMXNoYXBlMSAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uMXNoYXBlMSB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAxNnB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMTZweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTEge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE2cHgsIDE2cHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzEgLnNoYXBlMiB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjFzaGFwZTIgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uMXNoYXBlMiAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uMXNoYXBlMiB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTZweCwgMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAxNnB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMXNoYXBlMiB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTZweCwgMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAxNnB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmcxIC5zaGFwZTMge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24xc2hhcGUzIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjFzaGFwZTMgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTMge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgLTE2cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAtMTZweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTMge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgLTE2cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAtMTZweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nMSAuc2hhcGU0IHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uMXNoYXBlNCAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24xc2hhcGU0IDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24xc2hhcGU0IHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAtMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAtMTZweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTQge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE2cHgsIC0xNnB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE2cHgsIC0xNnB4KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///81\n");
 
/***/ }),
/* 82 */
/*!*************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue ***!
  \*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& */ 83);\n/* harmony import */ var _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading2.vue?vue&type=script&lang=js& */ 85);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"e4cb3aec\",\n  null,\n  false,\n  _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmcyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGNiM2FlYyZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmcyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcImU0Y2IzYWVjXCIsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvY29tcG9uZW50cy9xaXVuLWxvYWRpbmcvbG9hZGluZzIudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///82\n");
 
/***/ }),
/* 83 */
/*!********************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& ***!
  \********************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& */ 84);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 84 */
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "container loading2"), attrs: { _i: 0 } },
    [
      _c("view", {
        staticClass: _vm._$s(1, "sc", "shape shape1"),
        attrs: { _i: 1 },
      }),
      _c("view", {
        staticClass: _vm._$s(2, "sc", "shape shape2"),
        attrs: { _i: 2 },
      }),
      _c("view", {
        staticClass: _vm._$s(3, "sc", "shape shape3"),
        attrs: { _i: 3 },
      }),
      _c("view", {
        staticClass: _vm._$s(4, "sc", "shape shape4"),
        attrs: { _i: 4 },
      }),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 85 */
/*!**************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading2.vue?vue&type=script&lang=js& */ 86);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9tQixDQUFnQiw4a0JBQUcsRUFBQyIsImZpbGUiOiI4NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9sb2FkaW5nMi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9sb2FkaW5nMi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n");
 
/***/ }),
/* 86 */
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  name: 'loading2',\n  data: function data() {\n    return {};\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nMi52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI4Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzJcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmcyJyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5jb250YWluZXIubG9hZGluZzIge1xyXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpO1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpO1xyXG59XHJcbi5jb250YWluZXIubG9hZGluZzIgLnNoYXBlIHtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuLmNvbnRhaW5lci5sb2FkaW5nMntcclxuICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRpb24gMXMgaW5maW5pdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IHJvdGF0aW9uIDFzIGluZmluaXRlO1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5zaGFwZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUxIHtcclxuICBsZWZ0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMxODkwRkY7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUyIHtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTFDQjc0O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMyB7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGQUM4NTg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGU0IHtcclxuICBib3R0b206IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjY2NjtcclxufVxyXG5cclxuXHJcbi5sb2FkaW5nMiAuc2hhcGUxIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uMnNoYXBlMSAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24yc2hhcGUxIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24yc2hhcGUxIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIDIwcHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAyMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlMSB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAyMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMjBweCwgMjBweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nMiAuc2hhcGUyIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uMnNoYXBlMiAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24yc2hhcGUyIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24yc2hhcGUyIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0yMHB4LCAyMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIDIwcHgpO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb24yc2hhcGUyIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0yMHB4LCAyMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIDIwcHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzIgLnNoYXBlMyB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjJzaGFwZTMgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uMnNoYXBlMyAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlMyB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAtMjBweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIC0yMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlMyB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAtMjBweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIC0yMHB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmcyIC5zaGFwZTQge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24yc2hhcGU0IDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjJzaGFwZTQgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjJzaGFwZTQge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIC0yMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIC0yMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlNCB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjBweCwgLTIwcHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjBweCwgLTIwcHgpO1xyXG4gIH1cclxufVxyXG5cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///86\n");
 
/***/ }),
/* 87 */
/*!*************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue ***!
  \*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading3.vue?vue&type=template&id=e4af0bea&scoped=true& */ 88);\n/* harmony import */ var _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading3.vue?vue&type=script&lang=js& */ 90);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"e4af0bea\",\n  null,\n  false,\n  _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmczLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGFmMGJlYSZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmczLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcImU0YWYwYmVhXCIsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvY29tcG9uZW50cy9xaXVuLWxvYWRpbmcvbG9hZGluZzMudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///87\n");
 
/***/ }),
/* 88 */
/*!********************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=template&id=e4af0bea&scoped=true& ***!
  \********************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading3.vue?vue&type=template&id=e4af0bea&scoped=true& */ 89);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 89 */
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=template&id=e4af0bea&scoped=true& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "container loading3"), attrs: { _i: 0 } },
    [
      _c("view", {
        staticClass: _vm._$s(1, "sc", "shape shape1"),
        attrs: { _i: 1 },
      }),
      _c("view", {
        staticClass: _vm._$s(2, "sc", "shape shape2"),
        attrs: { _i: 2 },
      }),
      _c("view", {
        staticClass: _vm._$s(3, "sc", "shape shape3"),
        attrs: { _i: 3 },
      }),
      _c("view", {
        staticClass: _vm._$s(4, "sc", "shape shape4"),
        attrs: { _i: 4 },
      }),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 90 */
/*!**************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading3.vue?vue&type=script&lang=js& */ 91);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9tQixDQUFnQiw4a0JBQUcsRUFBQyIsImZpbGUiOiI5MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9sb2FkaW5nMy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9sb2FkaW5nMy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///90\n");
 
/***/ }),
/* 91 */
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  name: 'loading3',\n  data: function data() {\n    return {};\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nMy52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI5MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzNcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmczJyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbiAuY29udGFpbmVyLmxvYWRpbmczIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRpb24gMXMgaW5maW5pdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IHJvdGF0aW9uIDFzIGluZmluaXRlO1xyXG59XHJcbi5jb250YWluZXIubG9hZGluZzMgLnNoYXBlMSB7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBweDtcclxufVxyXG4uY29udGFpbmVyLmxvYWRpbmczIC5zaGFwZTIge1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMHB4O1xyXG59XHJcbi5jb250YWluZXIubG9hZGluZzMgLnNoYXBlMyB7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDtcclxufVxyXG4uY29udGFpbmVyLmxvYWRpbmczIC5zaGFwZTQge1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxMHB4O1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5zaGFwZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUxIHtcclxuICBsZWZ0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMxODkwRkY7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUyIHtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTFDQjc0O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMyB7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGQUM4NTg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGU0IHtcclxuICBib3R0b206IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjY2NjtcclxufVxyXG5cclxuLmxvYWRpbmczIC5zaGFwZTEge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24zc2hhcGUxIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjNzaGFwZTEgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTEge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCA1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIDVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTEge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCA1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIDVweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nMyAuc2hhcGUyIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uM3NoYXBlMiAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24zc2hhcGUyIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24zc2hhcGUyIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01cHgsIDVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01cHgsIDVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTIge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgNXB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmczIC5zaGFwZTMge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24zc2hhcGUzIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjNzaGFwZTMgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTMge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCAtNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCAtNXB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uM3NoYXBlMyB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIC01cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIC01cHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzMgLnNoYXBlNCB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjNzaGFwZTQgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uM3NoYXBlNCAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uM3NoYXBlNCB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNXB4LCAtNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgLTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTQge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgLTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01cHgsIC01cHgpO1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///91\n");
 
/***/ }),
/* 92 */
/*!*************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue ***!
  \*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading4.vue?vue&type=template&id=e492dce8&scoped=true& */ 93);\n/* harmony import */ var _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading4.vue?vue&type=script&lang=js& */ 95);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"e492dce8\",\n  null,\n  false,\n  _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmc0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNDkyZGNlOCZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmc0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcImU0OTJkY2U4XCIsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvY29tcG9uZW50cy9xaXVuLWxvYWRpbmcvbG9hZGluZzQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///92\n");
 
/***/ }),
/* 93 */
/*!********************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=template&id=e492dce8&scoped=true& ***!
  \********************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading4.vue?vue&type=template&id=e492dce8&scoped=true& */ 94);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 94 */
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=template&id=e492dce8&scoped=true& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "container loading5"), attrs: { _i: 0 } },
    [
      _c("view", {
        staticClass: _vm._$s(1, "sc", "shape shape1"),
        attrs: { _i: 1 },
      }),
      _c("view", {
        staticClass: _vm._$s(2, "sc", "shape shape2"),
        attrs: { _i: 2 },
      }),
      _c("view", {
        staticClass: _vm._$s(3, "sc", "shape shape3"),
        attrs: { _i: 3 },
      }),
      _c("view", {
        staticClass: _vm._$s(4, "sc", "shape shape4"),
        attrs: { _i: 4 },
      }),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 95 */
/*!**************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading4.vue?vue&type=script&lang=js& */ 96);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9tQixDQUFnQiw4a0JBQUcsRUFBQyIsImZpbGUiOiI5NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9sb2FkaW5nNC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9sb2FkaW5nNC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///95\n");
 
/***/ }),
/* 96 */
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  name: 'loading5',\n  data: function data() {\n    return {};\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nNC52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI5Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzVcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmc1JyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5jb250YWluZXIubG9hZGluZzUgLnNoYXBlIHtcclxuICB3aWR0aDogMTVweDtcclxuICBoZWlnaHQ6IDE1cHg7XHJcbn1cclxuXHJcbi5jb250YWluZXIgLnNoYXBlIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDEwcHg7XHJcbiAgaGVpZ2h0OiAxMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTEge1xyXG4gIGxlZnQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4OTBGRjtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTIge1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM5MUNCNzQ7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUzIHtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZBQzg1ODtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTQge1xyXG4gIGJvdHRvbTogMDtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NjY2O1xyXG59XHJcblxyXG4ubG9hZGluZzUgLnNoYXBlMSB7XHJcbiAgYW5pbWF0aW9uOiBhbmltYXRpb241c2hhcGUxIDJzIGVhc2UgMHMgaW5maW5pdGUgcmV2ZXJzZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjVzaGFwZTEge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTVweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAxNXB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb241c2hhcGUxIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE1cHgpO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc1IC5zaGFwZTIge1xyXG4gIGFuaW1hdGlvbjogYW5pbWF0aW9uNXNoYXBlMiAycyBlYXNlIDBzIGluZmluaXRlIHJldmVyc2U7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb241c2hhcGUyIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDE1cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjVzaGFwZTIge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNXB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc1IC5zaGFwZTMge1xyXG4gIGFuaW1hdGlvbjogYW5pbWF0aW9uNXNoYXBlMyAycyBlYXNlIDBzIGluZmluaXRlIHJldmVyc2U7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb241c2hhcGUzIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIC0xNXB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjVzaGFwZTMge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIC0xNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgLTE1cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xNXB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc1IC5zaGFwZTQge1xyXG4gIGFuaW1hdGlvbjogYW5pbWF0aW9uNXNoYXBlNCAycyBlYXNlIDBzIGluZmluaXRlIHJldmVyc2U7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb241c2hhcGU0IHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb241c2hhcGU0IHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApO1xyXG4gIH1cclxufVxyXG5cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///96\n");
 
/***/ }),
/* 97 */
/*!*************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue ***!
  \*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading5.vue?vue&type=template&id=e476ade6&scoped=true& */ 98);\n/* harmony import */ var _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading5.vue?vue&type=script&lang=js& */ 100);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"e476ade6\",\n  null,\n  false,\n  _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmc1LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNDc2YWRlNiZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmc1LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcImU0NzZhZGU2XCIsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvY29tcG9uZW50cy9xaXVuLWxvYWRpbmcvbG9hZGluZzUudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///97\n");
 
/***/ }),
/* 98 */
/*!********************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=template&id=e476ade6&scoped=true& ***!
  \********************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading5.vue?vue&type=template&id=e476ade6&scoped=true& */ 99);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 99 */
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=template&id=e476ade6&scoped=true& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "container loading6"), attrs: { _i: 0 } },
    [
      _c("view", {
        staticClass: _vm._$s(1, "sc", "shape shape1"),
        attrs: { _i: 1 },
      }),
      _c("view", {
        staticClass: _vm._$s(2, "sc", "shape shape2"),
        attrs: { _i: 2 },
      }),
      _c("view", {
        staticClass: _vm._$s(3, "sc", "shape shape3"),
        attrs: { _i: 3 },
      }),
      _c("view", {
        staticClass: _vm._$s(4, "sc", "shape shape4"),
        attrs: { _i: 4 },
      }),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 100 */
/*!**************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading5.vue?vue&type=script&lang=js& */ 101);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9tQixDQUFnQiw4a0JBQUcsRUFBQyIsImZpbGUiOiIxMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///100\n");
 
/***/ }),
/* 101 */
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  name: 'loading6',\n  data: function data() {\n    return {};\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nNS52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiIxMDEuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0IDx2aWV3IGNsYXNzPVwiY29udGFpbmVyIGxvYWRpbmc2XCI+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlMVwiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUyXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTNcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlNFwiPjwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6ICdsb2FkaW5nNicsXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5jb250YWluZXIubG9hZGluZzYge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBpbmZpbml0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogcm90YXRpb24gMXMgaW5maW5pdGU7XHJcbn1cclxuLmNvbnRhaW5lci5sb2FkaW5nNiAuc2hhcGUge1xyXG4gIHdpZHRoOiAxMnB4O1xyXG4gIGhlaWdodDogMTJweDtcclxuICBib3JkZXItcmFkaXVzOiAycHg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogMTBweDtcclxuICBoZWlnaHQ6IDEwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMSB7XHJcbiAgbGVmdDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTg5MEZGO1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMiB7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzkxQ0I3NDtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTMge1xyXG4gIGJvdHRvbTogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkFDODU4O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlNCB7XHJcbiAgYm90dG9tOiAwO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNFRTY2NjY7XHJcbn1cclxuXHJcblxyXG4ubG9hZGluZzYgLnNoYXBlMSB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjZzaGFwZTEgMnMgbGluZWFyIDBzIGluZmluaXRlIG5vcm1hbDtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uNnNoYXBlMSAycyBsaW5lYXIgMHMgaW5maW5pdGUgbm9ybWFsO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlMSB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxOHB4KTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjZzaGFwZTEge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMThweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAxOHB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDApO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzYgLnNoYXBlMiB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjZzaGFwZTIgMnMgbGluZWFyIDBzIGluZmluaXRlIG5vcm1hbDtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uNnNoYXBlMiAycyBsaW5lYXIgMHMgaW5maW5pdGUgbm9ybWFsO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlMiB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDApO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAxOHB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE4cHgpO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb242c2hhcGUyIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAxOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMThweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nNiAuc2hhcGUzIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uNnNoYXBlMyAycyBsaW5lYXIgMHMgaW5maW5pdGUgbm9ybWFsO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb242c2hhcGUzIDJzIGxpbmVhciAwcyBpbmZpbml0ZSBub3JtYWw7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb242c2hhcGUzIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDApO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAtMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIC0xOHB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMThweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjZzaGFwZTMge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgLTE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc2IC5zaGFwZTQge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb242c2hhcGU0IDJzIGxpbmVhciAwcyBpbmZpbml0ZSBub3JtYWw7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjZzaGFwZTQgMnMgbGluZWFyIDBzIGluZmluaXRlIG5vcm1hbDtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjZzaGFwZTQge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIC0xOHB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjZzaGFwZTQge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIC0xOHB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///101\n");
 
/***/ }),
/* 102 */
/*!*************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue ***!
  \*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./qiun-error.vue?vue&type=template&id=0507f1f4& */ 103);\n/* harmony import */ var _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./qiun-error.vue?vue&type=script&lang=js& */ 105);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null,\n  false,\n  _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUg7QUFDdkg7QUFDOEQ7QUFDTDs7O0FBR3pEO0FBQ21MO0FBQ25MLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLGdGQUFNO0FBQ1IsRUFBRSxxRkFBTTtBQUNSLEVBQUUsOEZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUseUZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTAyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9xaXVuLWVycm9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNTA3ZjFmNCZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3FpdW4tZXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9xaXVuLWVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZXJyb3IvcWl1bi1lcnJvci52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///102\n");
 
/***/ }),
/* 103 */
/*!********************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=template&id=0507f1f4& ***!
  \********************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-error.vue?vue&type=template&id=0507f1f4& */ 104);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 104 */
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=template&id=0507f1f4& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "view",
    { staticClass: _vm._$s(0, "sc", "chartsview"), attrs: { _i: 0 } },
    [
      _c("view", {
        staticClass: _vm._$s(1, "sc", "charts-error"),
        attrs: { _i: 1 },
      }),
      _c(
        "view",
        { staticClass: _vm._$s(2, "sc", "charts-font"), attrs: { _i: 2 } },
        [
          _vm._v(
            _vm._$s(
              2,
              "t0-0",
              _vm._s(_vm.errorMessage == null ? "请点击重试" : _vm.errorMessage)
            )
          ),
        ]
      ),
    ]
  )
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 105 */
/*!**************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-error.vue?vue&type=script&lang=js& */ 106);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNtQixDQUFnQixnbEJBQUcsRUFBQyIsImZpbGUiOiIxMDUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9xaXVuLWVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///105\n");
 
/***/ }),
/* 106 */
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  name: 'qiun-error',\n  props: {\n    errorMessage: {\n      type: String,\n      default: null\n    }\n  },\n  data: function data() {\n    return {};\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZXJyb3IvcWl1bi1lcnJvci52dWUiXSwibmFtZXMiOlsibmFtZSIsInByb3BzIiwiZXJyb3JNZXNzYWdlIiwidHlwZSIsImRlZmF1bHQiLCJkYXRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O2VBUUE7RUFDQUE7RUFDQUM7SUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiIxMDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjaGFydHN2aWV3XCI+XHJcblx0XHQ8dmlldyBjbGFzcz1cImNoYXJ0cy1lcnJvclwiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwiY2hhcnRzLWZvbnRcIj57e2Vycm9yTWVzc2FnZT09bnVsbD8n6K+354K55Ye76YeN6K+VJzplcnJvck1lc3NhZ2V9fTwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6ICdxaXVuLWVycm9yJyxcclxuXHRcdHByb3BzOiB7XHJcblx0XHRcdGVycm9yTWVzc2FnZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiBudWxsXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcclxuXHRcdFx0fTtcclxuXHRcdH0sXHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuXHQuY2hhcnRzdmlldyB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblx0LmNoYXJ0cy1mb250e1xyXG5cdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0Y29sb3I6ICNDQ0NDQ0M7XHJcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xyXG5cdH1cclxuXHQuY2hhcnRzLWVycm9ye1xyXG5cdFx0d2lkdGg6IDEyOHB4O1xyXG5cdFx0aGVpZ2h0OiAxMjhweDtcclxuXHRcdGJhY2tncm91bmQ6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBWUFBQUREUG1ITEFBQVV6MGxFUVZSNFh1MWRlM0JjMVgzK3ptcDNqWVZXZmtQQWdDV3dZOHpMRWdsTlFDU1cweVQ5bzJTUWFES2ROdWxVeWt3Zk0razA5cCtKM0ltWUlQSlhpOXlaekRTWlppd3lhWnVaQkN3bk5HMURNb2dFbVVBQXk3eHMvTUF5TmhDTWpXV3RzSzFkZVUvbjIzT3Z0THU2ajNQdjN0MjlkNzFueGpPU2RlNDU1LzUrMy9tOXo3a0NqUlk0QlI3ZUs3ZmtjbWhyYXNMVDM3aGJUQVkrUVlBRGlnREhhZ3dGWUdoYzdnWndITUFVZ0c0aE1Qek5lOFJvV0luVEFFQ0FuSGw0cit5UkV0MERYV0liaHgzY0o1ZkhQOFRZam50RlI0RFRCRHFVSXdCbU1ySkRDdHlQSERvUXcwUThqa2VYaW5DTHRFQ3A0M0d3aDU2UjIySXhUQmJ1K0tGeE9UYlFKYm85RGxXMTdyWUFTR2RsTnlTZUtsMkpBRHBia21LaWFpdDBtV2hvWEhaa216RTUyQ2tvY212YXZ2T3NiTXZsOE1oQWwramxRcmcyQ1F6dTZCSTlOVjJZdytUMkFKaVZvK0R1TDJrU2VMUTFLZnJDOGtMY1lia1lCdi9wYmpFV2hqVU5qVXZTcGs5S1NBaWNtMnRHWHhqQWFVY2Jld0JrSkFtNnhlTEJwMVBKMm9zMDZ0dGNEbDhIMENFRWFHbnZHZWdTZzJFQVFaVFc0QjBBRW50U1Myb3YwbWhnSmM1am13VDZJREVXaTJFMHpOWjJXRUZoQzRDWmpDUnhIN0d3QWZwYmttSWtMQzlFRlFCZzIwQlhlT3lTc05CR1p4Mk9Ya0I2Vmc1Q2dBYk1aZ0Q3QlREU2toVERPZ00zK2tTREFyN2lBTk56OG40aFFSZHhvalV1OWtUalZSdXJ0S0tBSndCSUtaZlBaUE91WVdGZ1k2d2xnVjRoYXUrR05WanNuUUtlQUpET1NJcC9XdDZsYlNLZVFHOGpTT1NkQWJWK3dpc0E3RnhEU0dBcUJtd05TNURJaUdJdWN5TndLaUdlZHV0VHozLzNCZ0NiNEpCSm9HcURJSjJWVzRSRW14Um9nMFMzbEdnVC9ObGZZM1J6Q2dKalFtSlNDa3hlRHVEd0JnQ2I4SEFodlFrQ0lkQ2JTZ1FmbVNQRG1XR0R6SHNtMVVxd2pCRVVBTWJxRVJDZUFFQkd6MlJrbndSMnVXMHlBWlFkTDZEUitXRVc5MHN5WExtanRXOFNvMEpnOU1vRTl0U0Q0ZXNaQU5VQUFkMU01TkFqR09VTGFhT2tBekNLR0VhajdBcjdBb0JIRUd4clNZcWRPbnhNWitXM1pBNTlaZWh4bldrQzd5TWxKa1VNSXkxeDdJeWFWUEFOQUFNRUhUbGdUQUNPMXJZRVJscVRvdCtKOG5icDU4QzVWY0VCRGZ0bk9FcEFLQXNBZ1lQQVBnTlpRYllGUDNRZUNBeWJKL0JnMkNWQzJRRHdDb0pVQXR1ZGlKS3VFeENRTG9aYlBLaXJBb09Ib3Z1SVRoVkJ5dVhpaTJqRS9DOUkyVGFYQllzZm1UaHlhaE10Q1d5MUE0RVJiajdydnZSSTlhQ2EzRjdwSU5tM241WGRYZ3RqRmdIQVlDUXJXNHY4YkJvNk1ZRmVwNWN3bUVlZnVTd1FwRE5TUm9xOStvc2RycVJhR0JxWE1oZkRWaThnV0FTQWRFYnVzd3V5R0NLTlNMYXRCeWdYQkhVcUFRb2hNbUhFU0FLcnF6U3JvNFRJUzJ5T3ExMGRWUVFBdXlLUVVvQzdCWG5JeEhRV3d3TDRheS9xSU0vOERIYUZKdWlqdjdNOTlRemFObUF4Nmh6UUZzdmhLU214dmFrSm83b0hVb29BNE1VQTB3SEJURFlmUW5WVUI2YkZuTGMxSkhxaUZnUHd4UG5TemhLakxVbjBCK1Vwc0RvcUZrT2ZMdk81SE44QU1ONWxPSlVVMisySU1EMG5lMFFPdENjcTBrN09BTmUxVkdUb2FnN3FhQlJYZWlGRkFKak95QkVOc1YyMEpxY2dqMkZRSGd2eUpXWXZBUWZQQUp1dkF2NzE5OEFEbTRETUhKQktBbXVhZzV5cGVtUHBHTmlWV2sycERjQ0RERFFDUFRVN0VPZ21qcnhNUmdBOGRnQlltd0pPWHdCdVdnSDg3bTNnejI2T0xnRHk2cTlHOVJTTHZJQXltRlpVR3NhQ2pKekU3cUIxK3Z2bmdYUkdRZWJHNVFCL1AzMGVhRjJpUUJIbGxrOHd4ZERmR3EvZVlWTExRSkJmRU9RTk9wazMvQmc4NmhiQThpQVp3dDIvYTc4YXNYOHpzS1JKL2Z6WVFlRHR0RklIVWJjSnFpMEpuTTRGYU9YOWcyU3c3bGdIVGdQVHMwREhSeFRqVDV3RHRxelRmVHI4L2FvSkFyZlR3WDA1NVAxNTE5cTZhcEdWNHY4L1hsVTZuenYvdm84Q3Z6d0szTDBXMkxTNldxdW8vRHpWQW9Gck1paXZ5elZTdnBVbnljSU1WQVVVLy8vMmtnSUM5YitwRHFxNWppck1WWEVYMFJVQWZNa3dnb0RyTW9GUUJVYlVjb3F4VkZKc3JkUUN0QUFRWmhCVWlqQ2hHbGZpd2RTU3lweDgxZ2FBQVFMTEE2T2hJbGFORjJNR3FyaU1tMWNGcUpvRXRsYWkwbG9iQUl6cVpiUFlGN1JyVjJOK0JUNzlMOTljOEVoK2R6STQ3NFJHWVNxQjlxRHlCdWFMYXdNZ25aRThFeGphdTI0QzU2VFBBWjgrdnNEMDU5NEdQckhXNTBEV2p3VnVEMmdCd0RnbS9xMUFYNlZPQi92NVllRFdOZXJsWG5zZitNS0dZRi9VTFF2cmRUWlhBRlFpb2VOMWtWSHFUeHVBZ1NvMnhpV0NkaytEVmdXdUFFalB5dDMxWHFBUkpZQVphOTJaU3FxN0NNdHRqZ0NvaDFyOWNna1UxdWVEdXE3UEVRRFRzL0pZME5tOHNCSTBndXNLeENDTVpESW9nc3lxekpJRGlBM1lBcUN4K3l2RHM0QkhMVnNLQkZvUEVQRExOWWJUb1VDWlVzQVNBRkhZL1NmVEN4V3RxNXFCSzR6aUVCMmExVm1mc3FUQUlnQlV1cExYTC9FdnNoajBOTkNhQk03TkFyODlzVERTcDY0SE9qL2lkK1RvUDFlT1I3QVlBRDRxZzZ0Qnd1ZmVBUmhhYlY4QmZQSmFGV3haRWdlU01XRFRtc3RhQXBEOHZ1TUNSUUFJNDdHczM3d0ZyRzRHcmtzQlI4ODJtRzIxMlZoVzNycEV0UHZaaUw2T2h2bVp5T3N6RlBtN0Q2cXFYKzc2TDZ4ZkdJSC9sN21rVk1HTkt5NzczWjhuakl5aDEwODFjZkhCa0pBRWZncVp2MmtWOENtajRIUC9INEFEWjFSQnFObVliZnZFdFY3aFZYLzkvWDdIWVI0QVlVcjZQUG1tWWpTWi83a2JsUlQ0N3lPSzhVeXU4RHhBNnhYcUhBRFZ3MlhzQVJRaHVTV0JGVjdyQmVZQm9Ic3l1Tko3NTgyendCTkhnTlZMZ2IrOFRUSC84WU9xL28rN2ZmUFZDd3lucEFpQytXK2NVZk9jbndPdXZsSWRPNHRpODZNRzVnR1FkcmtGdEZvRTJmVXlrSjRGK3U0QWtuSGd4NitwbmYvWmR1Q1cxUUQ5ZjNvRFBBL0E1dGNGcEEzeDhpbmd4WGNWdVBKNjFEZ3QyN01SdUtHMVdtOGM2RHlldllFOEFNSmsvZi9ucThCTks1VmVOMTAvazhtdm53WitaUncxcGZqbllkQ09xMVZadUpkMi9Cend2MGNYR0w5aHBkcjFQR05JZ01VRjhPZTNBcXVXZWhrMUZIMG5Va25SNldVbGVRQ0VOZTM3dlplVUZPaS9BeWhVRGJRTC9Kd0U1cTRuZ0k0WU54QnhsN05pWjVrQm9DZVBBYjkvUjRtQnE2NEVlamNHWDlEaGhUbCsrc1lUYVBkeWE3c0NnUG95U00xTHZ1anpNOER6ZDNjdU1OeTA4aWtaZUJxWXFvRTduanYxdDI4cDNjM2YvK2hhcFNMczJqc3pBSTFMdW80MEpNbjRqNjRzN3YzUHp5bXBRTmVTZ0x0bkxmRHhpSGtZWGt2R0ZBQTByMllqc2Yzc1BGMGttL3IvSCs5YUVQOFA4T1JQRWhoNWVjRXJJUE5wR0xKeEY3LzNvV0xjZmVzVjgwcmJvUStVeURmN2YzSFRZdVB4K1hlQVgwMEN0NjhCUG4wRDhPOFRhc3l2YmdaYWtycHZFSXArbnV5QVBBQ21NL0tzVzdrM2IrTjQvQUJBNWxTcThjSUgwL28zOWY5ZjNLb1lRWWFiMHVEblI0QmpaNEd2M0xZQWdCKzlxaVFCK3hlMlgwK3E0a3cyMmhMOFY5cm9UWHozQlRYUDF6Nm1WQUp6RGZ4SHFVSURORUxOMDJmOWhJNy9UNnY3elNrbGJtbDhNZkZDWHp6b1JwMVB2NTduL1dqNU0vUnJKbm4yL1FHNHJsVkpJUE00K0RmdldWakI5L1lwRmZGSkl6QkVadjdpTUhBaXJVVCs1OXFCTzJ6Y3U3enVmMWZ0ZnJPS3R4QVVWRWxCRjNjR1RUdHpQQmFOdGlhRmhSeTBubEhvR0lEYy9hK2ZVbGV6MERxL1pZMjZraVhvUm9DUjBHNVd2UmtvTW5mMC94d0ZYbndQaUFGSU5nRTNMQU9tTHdLbmpQRW9LZWpmVzdYajArcTBNZWY5MnNlTFZRTkx2Rjk1SC9pVG00Q05KZlpDME84ZTVIaGVBa0pDTndCa0hzdisrenVEWEtxL3NTZ2QvdXUxeGY0N2dmbldPUjVtVmVOZTFReDhhZE9DbFc4bCtuOHdvUXpETDk2ODJDaWs3ZkRUZzhEMUthRDNabjlycmRSVGxIQTBtbW12TEpKT0hvcEVSRmc4QUsrRUlnaW9tbzZkQXk3T0tkWHdOeDNBaVJuZ1J5OERPUWwwWGdOOFpwMTl0SkRNSlpNTFJYL3BPaDdlcXdoTU5SQ21adHBrVnJlaWVQRUVDQURMajBTSDZXV2Qxa0lnUFA2RzJzVnR5NEF2MzZwRS8rNDNnRE1YMUs2K2I4TmlFSmhHSHFYRVYyNjNCd205QVk3MzFRNmdKVkY3cW5EblQ3eW5iQ1M2ekR4OFFwWEpnTmk4SlBCd21sam91b0MxZjNYN0ZkREhIMzBEbU1zQkcxWW9zVSttMFZnOGV4RzRwa1Y1QjJiZWdDRmc1aHRJTUNmN2dET2Fkc0NYYmdHdXNiRWpxa2tiTXAraXY3UVI1UE9HK2VVR0FETC9yV21nU1FCekV1aTRDdmpUOWNCVUJuamlrUHFiQ1lKekY0RWZHQmROTVc1ZzV4bVlCS1kzY09nTXNHRVZjQ2xYVFZZN3orV2tBcnhVQ0lrb0ZJQTZrZUxYeDREWFRpdURiMnViaWhka2NzQ25EWitmRFB6WklSWCtwWXZKUkJQRjZHZmJWUFJRdDEyNEZFNEFVTEpaQk9lMFl3RlVBWkc5bXYyRmQ0RzlKNHRkT0ViMGZuTkNWUXh0dVFIb3VnNGdDSDV5QURneHJkanRaUFJaZVFxdm5GSVNnRW1pTURWNlpqYnVlUDBEZ0JtOVBZZXM5VGl6aHI4NG1yOThPbDlRd3BzNjZPc3paT3lGK1dTMkdTUUtpdzJnQ2NENkJrQk1BQlQ5RE5MWTZYRktnaWNuVldDSXVRUjZCTXdiME9qejBoaGlwZzN4NWRzaWxSNnVid0EweHdHQ2dEdmFMc0pISnRQUFAveUJLdlFnODYyU1FHNWdZQnlBclpJNUVMYzErUGk3UGdDbU01SmZ1QXJOUlpCdUwwdUdNa2RnNWRzWFBrdHdjUGZTNFBNcTlzMXh6REF4UzlLWmxZeFEwd2RBbE9JQUZPUFU1V3htMXM2S0tmVHpxYnZMWVQ3SE5XTUFOQ1paaXhpaFZwOEFZSFNQbHJ4ZFdwY01NaU44L1BtdWExUVcwRStMYWpiUWVOZjZBNEJaMU1HdzV6OThiREZMeWJBbkRxdllQcHRPa01jSkdCR3VCK0JyYVJlRlJDWVUvT1BYZ1ZNZldqT1crcDRHbjFudTVSYmVkWk1JSE9lN0w2cGV2SmErRXFsdnR6V1U5WGRQb2VDUTFBTTZ2YkNwKzB0M1AzYzk2d0paek1IRzZsNFdkSlI3VnVDUjU0RUxjNnE0eEV1MHNDeW1CZml3cDJ5Z2JqMUFnT3Z6UEJRamNVOGRMOWJwTlBRb3BzMWRUN3NnQ0dZeFNjU3hHVVJhMitydWJYaCttV284NEtrZUlDdTdJY0ZiUUVQYjZQcXg2bWRwWEJWOUh2bGdvUmlrdExTN25KY3c5WDRpcHVJTTlDSldYcUhTeFZGcVhrckRSWmdPaGRnUk9ac0R2djhTY01uTVdnaVY5dVdPWHhmQUNSNnFFcnA4QkpwVlk3S0YyVVczVXJVd2dFUUM1MXFUUXJ0aVUxVUZ6OHBKSVJEcWo2N016QUdQdmE1RVBzTzd6UGtId1h5Tzk4TlgxSWVvbUU0bXlGZ25RSEF4eXNpUU1rUEJMSVpsc1dvRW1yWUx5SGZ4ZEM2ZzFpL1B4ZkprRDlPL2JPV0lmL09hR2VwN051cjhlRXdCb05DRnBIUXc2d2IvOXM3eURjd3EwRkRiQlZ3QVFBUThnVUxDVVZTUG4xeTRKNEJsWCt1V3FmSXY4NWlYRmFITjRnN3VhSjRJTnI4NHd0THpyQVJlZUZzOTlWZTNGeDhPL1pmblZkM2hYZGVxYnhPRnVYbnhBT1lCRU5hTG9ad0lUV25BM2N0NkFQTjBML3RUYkZPRVh4RlhQM09uVDExVUk1SHhoWTJIUG5qWWhDcUZwZVk4KzhCV0dHbms4OS9mQjlBT1lXUFJDWE1MWVcxZURNQjVBUENIcUJhR0VBaXNEV0NJK1BEWjR0dERTcGxFWUt4Zm9keTc5dVVLS09hcEk1NUo0R2xnMmdJc0pxRjZJWUFJTXZaaC8yTUdRRzViQTN5bUxYZ0kwSUFUQWozbWwwRzhWbXhMaWVPdFM0U25sWVh1Zm9CeXlkb1VVd2RIZVVoa2RrNmRMcWJ6d0NObmRPOEtHNW5POERHWmJsWUhzMmJ3SndlTGdXUUdtRmdieURnQkcwOE9YeCtBQjFLMElBdi8zY3RIUFAxY0V4TzZHMExLQllEdTgyUStxNGE1MnluU1dUbFVHRUZrS3BodCtaSml1NEwvVDgvZzgrMUFjNkpZL2VqT2JkY3ZsUlNXUldjOHZTVWxSdDNTOW1YZEVLSnpSckRjRnd6TDg2eW5aN3FZelcrdEFBM0tueDVRaGFhMEdjb3RySFE3MDZmMTZUNkowWllrK3IzY0UxU0V1SFJHVGdEWUhCWkdWV0lkaGN6M1dobGN1SjdDZERHRFVuL2Nyb3pKY3ByYkR0WUNBZURwWTVQRkFJaVlPK2lWMk56MTV1ZGN5azBYYys3Q3FpUGVLUExBeHZKQW9QTzVXT09yN0tNdWdUdHRFQlFCb0o3VlFDSHpHUzl3cWlYMEFpeUN3S3hCcUJZSWpQQTl2OUx1SkswbjRnbjB1bDBYRTVtN2dyMHdwYlN2ZVlxbW5ERjBudzNxV2htM2dJNE9DSFFreWlJQTZOd1hvRXVNc1BTakg4L0lYMmF1c2l1aUljamF3WEp0QVhPVmdZQkFZaktWUktlZFlXajN2WURRSjRjcXk4cndqTzRHQXE1MDJ1V0dkeWZqc3ZIRmtQRHcybjRsQW9PcGhIalFhYWxPSUhBQ2tTVUFxRi9TV1V5NkJSNmlRTHQ2V2FNRVJscVRvdDhyQ0JoZVRpVFFZV2NNMmg1MzlCS0NyQmNpaC8wOWRFQkF2dVdBWVc1ZU1oOHg5Sm5YeUJ1NWhTMzU5eFFZYTRsanArTjUxeWdVaW9TZGFVR3ZqeUJJSmJEZExkcEhLVjdZeHlxeHhOeUJJd0RxMFNNSW1pRTFHazg3MEdPdXorb0VHTjFFMXhQdlVUbzZWaU5tMUdwYVR5Q3dDL083QW9DaFJ3bnNxOVZiTnVaMXBJQTJDQ3k5QklrOXJnRGc5T21NSEFidzlRWXpRa2tCTFJBWWtjTlJBTW9JQlBZTG9FOExBQVlJNmo1VEdFcjI2aTNLVXlGbzRaRGFBTkJNUmVvdHQ5RXJVQXE0MVJJNFRhWU5BQTRTaFdOa2dWSTJRb1BaVlJPNXZZSXRBSWJHWlljUVdKWlppdjJEbmNJb2g4eC9YQ0xTTjR1NkVTU3FmdzhVQUVQamVhT3ZqMStrQkxDdXFRbWQzN2hiOEdmeiswSnV1ZWlvMGpHUzYvWlRER3ErNkNJSk1MaFBMaytjeDlsWURPMWsra1BQeUJFaE1EblFKUWJOaDFnNGtzMWlvcEVycURoZTlzY1Q2Sm5MWUJnQzkxdk41aGJyZDF2aElnQjg1MW5abHN2aFdMWVpLeWo2RFdtQWdTNnhyWEN3aGxIb1J0cnkvczRhLzFRU0hXWTRsNkZjS2JDdGNOT3hUMHlncHlVcDZLSDVhcFkyZ0xIcnQxQUZDSUhPV0F3ZHBnb29uS1VSS3ZaRmM5ZUh1S3RqUUhjcFkvTWxlM05vUXc3ZHNna1RmcjRWWERxNXJSSDQ4Rjdaazh1aHJha0pvMWJNTndkcVpBMWQrZW1wZ3gzelBRM2lvYk1uTjlCdTNBWUlQRkRjb1d1MW1jK2xCQUlBRHNRRHBzaGhwR0VZK2dORExaZ2ZDQURvTlNRdnFQTGtUU3V4ZnVOcTdJd0poT0RUQ3Y0WVVZdW5zamtjM2Y4K0JvN000djhLWXk1Y2l4bVBLVnhYYVd5bW5EV1hMUUdHeGlWakFtYUNvWnkxWFBiUFNvbjlPKzRWSFNZaGFJZEppZDJsaEpFU1V6dnUxZjgwbkJOaHl3WUEzY1k1b09oSTh1cWxhTGsraGZXWFBVYzFDSEFpalNPbkwyQ0dYZVBBWktIQnpkMFBnRUc1MGpaUjZwWnJUR1hacFd3QStKMjQ4Vnc0S05BQVFEajRVTE5WQkE2QWJ6OHJ1OFVsOVNWeUlUQ1ZiVVkvRFJzanhMeExTbWhkWVNZRUhoM29FaU1jaDJybTBpWHNzcUhTeEk1N3hmWktVL0NoWitRakFPYjFjNlhuTStnM1Q0Tkt6UmM0QUliR1pSOFRTZWFDWXpIMFVhOFpJZVk4UXpYYlNCRUFjdmxTWnl2d0JLWVBuZGIxMExqa0JRMWE0TlY4UDUxdTh6VFE2ZXluVCtBQThMT0l4ak8xbzBBREFMV2pmU2htamh3QUNnTlBvYUNnc25XT08rVkx3ckpPcTNWRURnQ0dMcmJNamRlSzBFRUdacXI5RHBFRGdGWGdxZHBFSzUwdmxzUFVRSmYvbkh3dDEvLy84OWJxRGpDUFdQQUFBQUFBU1VWT1JLNUNZSUk9XCIpO1xyXG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG5cdH1cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///106\n");
 
/***/ }),
/* 107 */
/*!**************************************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-data-charts.vue?vue&type=script&lang=js& */ 108);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRtQixDQUFnQixzbEJBQUcsRUFBQyIsImZpbGUiOiIxMDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1kYXRhLWNoYXJ0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9xaXVuLWRhdGEtY2hhcnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///107\n");
 
/***/ }),
/* 108 */
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=script&lang=js& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(uniCloud, __f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar _uCharts = _interopRequireDefault(__webpack_require__(/*! ../../js_sdk/u-charts/u-charts.js */ 126));\nvar _configUcharts = _interopRequireDefault(__webpack_require__(/*! ../../js_sdk/u-charts/config-ucharts.js */ 127));\nvar _configEcharts = _interopRequireDefault(__webpack_require__(/*! ../../js_sdk/u-charts/config-echarts.js */ 128));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nfunction deepCloneAssign() {\n  var origin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n  for (var i in args) {\n    for (var key in args[i]) {\n      if (args[i].hasOwnProperty(key)) {\n        origin[key] = args[i][key] && (0, _typeof2.default)(args[i][key]) === 'object' ? deepCloneAssign(Array.isArray(args[i][key]) ? [] : {}, origin[key], args[i][key]) : args[i][key];\n      }\n    }\n  }\n  return origin;\n}\nfunction formatterAssign(args, formatter) {\n  for (var key in args) {\n    if (args.hasOwnProperty(key) && args[key] !== null && (0, _typeof2.default)(args[key]) === 'object') {\n      formatterAssign(args[key], formatter);\n    } else if (key === 'format' && typeof args[key] === 'string') {\n      args['formatter'] = formatter[args[key]] ? formatter[args[key]] : undefined;\n    }\n  }\n  return args;\n}\n\n// 时间转换函数,为了匹配uniClinetDB读取出的时间与categories不同\nfunction getFormatDate(date) {\n  var seperator = \"-\";\n  var year = date.getFullYear();\n  var month = date.getMonth() + 1;\n  var strDate = date.getDate();\n  if (month >= 1 && month <= 9) {\n    month = \"0\" + month;\n  }\n  if (strDate >= 0 && strDate <= 9) {\n    strDate = \"0\" + strDate;\n  }\n  var currentdate = year + seperator + month + seperator + strDate;\n  return currentdate;\n}\nvar lastMoveTime = null;\n/**\r\n * 防抖\r\n *\r\n * @param { Function } fn 要执行的方法\r\n * @param { Number } wait  防抖多少毫秒\r\n *\r\n * 在 vue 中使用(注意:不能使用箭头函数,否则this指向不对,并且不能再次封装如:\r\n * move(){  // 错误调用方式\r\n *   debounce(function () {\r\n *   console.log(this.title);\r\n * }, 1000)});\r\n * 应该直接使用:// 正确调用方式\r\n * move: debounce(function () {\r\n *   console.log(this.title);\r\n * }, 1000)\r\n */\nfunction debounce(fn, wait) {\n  var timer = false;\n  return function () {\n    var _arguments = arguments,\n      _this = this;\n    clearTimeout(timer);\n    timer && clearTimeout(timer);\n    timer = setTimeout(function () {\n      timer = false;\n      fn.apply(_this, _arguments); // 把参数传进去\n    }, wait);\n  };\n}\nvar _default2 = {\n  name: 'qiun-data-charts',\n  mixins: [uniCloud.mixinDatacom],\n  props: {\n    type: {\n      type: String,\n      default: null\n    },\n    canvasId: {\n      type: String,\n      default: 'uchartsid'\n    },\n    canvas2d: {\n      type: Boolean,\n      default: false\n    },\n    background: {\n      type: String,\n      default: 'rgba(0,0,0,0)'\n    },\n    animation: {\n      type: Boolean,\n      default: true\n    },\n    chartData: {\n      type: Object,\n      default: function _default() {\n        return {\n          categories: [],\n          series: []\n        };\n      }\n    },\n    opts: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    eopts: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    loadingType: {\n      type: Number,\n      default: 2\n    },\n    errorShow: {\n      type: Boolean,\n      default: true\n    },\n    errorReload: {\n      type: Boolean,\n      default: true\n    },\n    errorMessage: {\n      type: String,\n      default: null\n    },\n    inScrollView: {\n      type: Boolean,\n      default: false\n    },\n    reshow: {\n      type: Boolean,\n      default: false\n    },\n    reload: {\n      type: Boolean,\n      default: false\n    },\n    disableScroll: {\n      type: Boolean,\n      default: false\n    },\n    optsWatch: {\n      type: Boolean,\n      default: true\n    },\n    onzoom: {\n      type: Boolean,\n      default: false\n    },\n    ontap: {\n      type: Boolean,\n      default: true\n    },\n    ontouch: {\n      type: Boolean,\n      default: false\n    },\n    onmouse: {\n      type: Boolean,\n      default: true\n    },\n    onmovetip: {\n      type: Boolean,\n      default: false\n    },\n    echartsH5: {\n      type: Boolean,\n      default: false\n    },\n    echartsApp: {\n      type: Boolean,\n      default: false\n    },\n    tooltipShow: {\n      type: Boolean,\n      default: true\n    },\n    tooltipFormat: {\n      type: String,\n      default: undefined\n    },\n    tooltipCustom: {\n      type: Object,\n      default: undefined\n    },\n    startDate: {\n      type: String,\n      default: undefined\n    },\n    endDate: {\n      type: String,\n      default: undefined\n    },\n    textEnum: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    groupEnum: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    pageScrollTop: {\n      type: Number,\n      default: 0\n    },\n    directory: {\n      type: String,\n      default: '/'\n    },\n    tapLegend: {\n      type: Boolean,\n      default: true\n    },\n    menus: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    }\n  },\n  data: function data() {\n    return {\n      cid: 'uchartsid',\n      inWx: false,\n      inAli: false,\n      inTt: false,\n      inBd: false,\n      inH5: false,\n      inApp: false,\n      inWin: false,\n      type2d: true,\n      disScroll: false,\n      openmouse: false,\n      pixel: 1,\n      cWidth: 375,\n      cHeight: 250,\n      showchart: false,\n      echarts: false,\n      echartsResize: {\n        state: false\n      },\n      uchartsOpts: {},\n      echartsOpts: {},\n      drawData: {},\n      lastDrawTime: null\n    };\n  },\n  created: function created() {\n    this.cid = this.canvasId;\n    if (this.canvasId == 'uchartsid' || this.canvasId == '') {\n      var t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n      var len = t.length;\n      var id = '';\n      for (var i = 0; i < 32; i++) {\n        id += t.charAt(Math.floor(Math.random() * len));\n      }\n      this.cid = id;\n    }\n    var systemInfo = uni.getSystemInfoSync();\n    if (systemInfo.platform === 'windows' || systemInfo.platform === 'mac') {\n      this.inWin = true;\n    }\n\n    //非微信小程序端强制关闭canvas2d模式\n\n    this.type2d = false;\n    this.disScroll = this.disableScroll;\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n    this.inApp = true;\n    if (this.echartsApp === true) {\n      this.echarts = true;\n      this.openmouse = false;\n    }\n    this.$nextTick(function () {\n      _this2.beforeInit();\n    });\n  },\n  destroyed: function destroyed() {\n    if (this.echarts === true) {\n      delete _configEcharts.default.option[this.cid];\n      delete _configEcharts.default.instance[this.cid];\n    } else {\n      delete _configUcharts.default.option[this.cid];\n      delete _configUcharts.default.instance[this.cid];\n    }\n    uni.offWindowResize(function () {});\n  },\n  watch: {\n    chartDataProps: {\n      handler: function handler(val, oldval) {\n        if ((0, _typeof2.default)(val) === 'object') {\n          if (JSON.stringify(val) !== JSON.stringify(oldval)) {\n            this._clearChart();\n            if (val.series && val.series.length > 0) {\n              this.beforeInit();\n            } else {\n              this.mixinDatacomLoading = true;\n              this.showchart = false;\n              this.mixinDatacomErrorMessage = null;\n            }\n          }\n        } else {\n          this.mixinDatacomLoading = false;\n          this._clearChart();\n          this.showchart = false;\n          this.mixinDatacomErrorMessage = '参数错误:chartData数据类型错误';\n        }\n      },\n      immediate: false,\n      deep: true\n    },\n    localdata: {\n      handler: function handler(val, oldval) {\n        if (JSON.stringify(val) !== JSON.stringify(oldval)) {\n          if (val.length > 0) {\n            this.beforeInit();\n          } else {\n            this.mixinDatacomLoading = true;\n            this._clearChart();\n            this.showchart = false;\n            this.mixinDatacomErrorMessage = null;\n          }\n        }\n      },\n      immediate: false,\n      deep: true\n    },\n    optsProps: {\n      handler: function handler(val, oldval) {\n        if ((0, _typeof2.default)(val) === 'object') {\n          if (JSON.stringify(val) !== JSON.stringify(oldval) && this.echarts === false && this.optsWatch == true) {\n            this.checkData(this.drawData);\n          }\n        } else {\n          this.mixinDatacomLoading = false;\n          this._clearChart();\n          this.showchart = false;\n          this.mixinDatacomErrorMessage = '参数错误:opts数据类型错误';\n        }\n      },\n      immediate: false,\n      deep: true\n    },\n    eoptsProps: {\n      handler: function handler(val, oldval) {\n        if ((0, _typeof2.default)(val) === 'object') {\n          if (JSON.stringify(val) !== JSON.stringify(oldval) && this.echarts === true) {\n            this.checkData(this.drawData);\n          }\n        } else {\n          this.mixinDatacomLoading = false;\n          this.showchart = false;\n          this.mixinDatacomErrorMessage = '参数错误:eopts数据类型错误';\n        }\n      },\n      immediate: false,\n      deep: true\n    },\n    reshow: function reshow(val, oldval) {\n      var _this3 = this;\n      if (val === true && this.mixinDatacomLoading === false) {\n        setTimeout(function () {\n          _this3.mixinDatacomErrorMessage = null;\n          _this3.echartsResize.state = !_this3.echartsResize.state;\n          _this3.checkData(_this3.drawData);\n        }, 200);\n      }\n    },\n    reload: function reload(val, oldval) {\n      if (val === true) {\n        this.showchart = false;\n        this.mixinDatacomErrorMessage = null;\n        this.reloading();\n      }\n    },\n    mixinDatacomErrorMessage: function mixinDatacomErrorMessage(val, oldval) {\n      if (val) {\n        this.emitMsg({\n          name: 'error',\n          params: {\n            type: \"error\",\n            errorShow: this.errorShow,\n            msg: val,\n            id: this.cid\n          }\n        });\n        if (this.errorShow) {\n          __f__(\"log\", '[秋云图表组件]' + val, \" at uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue:611\");\n        }\n      }\n    },\n    errorMessage: function errorMessage(val, oldval) {\n      if (val && this.errorShow && val !== null && val !== 'null' && val !== '') {\n        this.showchart = false;\n        this.mixinDatacomLoading = false;\n        this.mixinDatacomErrorMessage = val;\n      } else {\n        this.showchart = false;\n        this.mixinDatacomErrorMessage = null;\n        this.reloading();\n      }\n    }\n  },\n  computed: {\n    optsProps: function optsProps() {\n      return JSON.parse(JSON.stringify(this.opts));\n    },\n    eoptsProps: function eoptsProps() {\n      return JSON.parse(JSON.stringify(this.eopts));\n    },\n    chartDataProps: function chartDataProps() {\n      return JSON.parse(JSON.stringify(this.chartData));\n    }\n  },\n  methods: {\n    beforeInit: function beforeInit() {\n      this.mixinDatacomErrorMessage = null;\n      if ((0, _typeof2.default)(this.chartData) === 'object' && this.chartData != null && this.chartData.series !== undefined && this.chartData.series.length > 0) {\n        //拷贝一下chartData,为了opts变更后统一数据来源\n        this.drawData = deepCloneAssign({}, this.chartData);\n        this.mixinDatacomLoading = false;\n        this.showchart = true;\n        this.checkData(this.chartData);\n      } else if (this.localdata.length > 0) {\n        this.mixinDatacomLoading = false;\n        this.showchart = true;\n        this.localdataInit(this.localdata);\n      } else if (this.collection !== '') {\n        this.mixinDatacomLoading = false;\n        this.getCloudData();\n      } else {\n        this.mixinDatacomLoading = true;\n      }\n    },\n    localdataInit: function localdataInit(resdata) {\n      //替换enum类型为正确的描述\n      if (this.groupEnum.length > 0) {\n        for (var i = 0; i < resdata.length; i++) {\n          for (var j = 0; j < this.groupEnum.length; j++) {\n            if (resdata[i].group === this.groupEnum[j].value) {\n              resdata[i].group = this.groupEnum[j].text;\n            }\n          }\n        }\n      }\n      if (this.textEnum.length > 0) {\n        for (var _i = 0; _i < resdata.length; _i++) {\n          for (var _j = 0; _j < this.textEnum.length; _j++) {\n            if (resdata[_i].text === this.textEnum[_j].value) {\n              resdata[_i].text = this.textEnum[_j].text;\n            }\n          }\n        }\n      }\n      var needCategories = false;\n      var tmpData = {\n        categories: [],\n        series: []\n      };\n      var tmpcategories = [];\n      var tmpseries = [];\n      //拼接categories\n      if (this.echarts === true) {\n        needCategories = _configEcharts.default.categories.includes(this.type);\n      } else {\n        needCategories = _configUcharts.default.categories.includes(this.type);\n      }\n      if (needCategories === true) {\n        //如果props中的chartData带有categories,则优先使用chartData的categories\n        if (this.chartData && this.chartData.categories && this.chartData.categories.length > 0) {\n          tmpcategories = this.chartData.categories;\n        } else {\n          //如果是日期类型的数据,不管是本地数据还是云数据,都按起止日期自动拼接categories\n          if (this.startDate && this.endDate) {\n            var idate = new Date(this.startDate);\n            var edate = new Date(this.endDate);\n            while (idate <= edate) {\n              tmpcategories.push(getFormatDate(idate));\n              idate = idate.setDate(idate.getDate() + 1);\n              idate = new Date(idate);\n            }\n            //否则从结果中去重并拼接categories\n          } else {\n            var tempckey = {};\n            resdata.map(function (item, index) {\n              if (item.text != undefined && !tempckey[item.text]) {\n                tmpcategories.push(item.text);\n                tempckey[item.text] = true;\n              }\n            });\n          }\n        }\n        tmpData.categories = tmpcategories;\n      }\n      //拼接series\n      var tempskey = {};\n      resdata.map(function (item, index) {\n        if (item.group != undefined && !tempskey[item.group]) {\n          tmpseries.push({\n            name: item.group,\n            data: []\n          });\n          tempskey[item.group] = true;\n        }\n      });\n      //如果没有获取到分组名称(可能是带categories的数据,也可能是不带的饼图类)\n      if (tmpseries.length == 0) {\n        tmpseries = [{\n          name: '默认分组',\n          data: []\n        }];\n        //如果是需要categories的图表类型\n        if (needCategories === true) {\n          for (var _j2 = 0; _j2 < tmpcategories.length; _j2++) {\n            var seriesdata = 0;\n            for (var _i2 = 0; _i2 < resdata.length; _i2++) {\n              if (resdata[_i2].text == tmpcategories[_j2]) {\n                seriesdata = resdata[_i2].value;\n              }\n            }\n            tmpseries[0].data.push(seriesdata);\n          }\n          //如果是饼图类的图表类型\n        } else {\n          for (var _i3 = 0; _i3 < resdata.length; _i3++) {\n            tmpseries[0].data.push({\n              \"name\": resdata[_i3].text,\n              \"value\": resdata[_i3].value\n            });\n          }\n        }\n        //如果有分组名\n      } else {\n        for (var k = 0; k < tmpseries.length; k++) {\n          //如果有categories\n          if (tmpcategories.length > 0) {\n            for (var _j3 = 0; _j3 < tmpcategories.length; _j3++) {\n              var _seriesdata = 0;\n              for (var _i4 = 0; _i4 < resdata.length; _i4++) {\n                if (tmpseries[k].name == resdata[_i4].group && resdata[_i4].text == tmpcategories[_j3]) {\n                  _seriesdata = resdata[_i4].value;\n                }\n              }\n              tmpseries[k].data.push(_seriesdata);\n            }\n            //如果传了group而没有传text,即没有categories(正常情况下这种数据是不符合数据要求规范的)\n          } else {\n            for (var _i5 = 0; _i5 < resdata.length; _i5++) {\n              if (tmpseries[k].name == resdata[_i5].group) {\n                tmpseries[k].data.push(resdata[_i5].value);\n              }\n            }\n          }\n        }\n      }\n      tmpData.series = tmpseries;\n      //拷贝一下chartData,为了opts变更后统一数据来源\n      this.drawData = deepCloneAssign({}, tmpData);\n      this.checkData(tmpData);\n    },\n    reloading: function reloading() {\n      if (this.errorReload === false) {\n        return;\n      }\n      this.showchart = false;\n      this.mixinDatacomErrorMessage = null;\n      if (this.collection !== '') {\n        this.mixinDatacomLoading = false;\n        this.onMixinDatacomPropsChange(true);\n      } else {\n        this.beforeInit();\n      }\n    },\n    checkData: function checkData(anyData) {\n      var _this4 = this;\n      var cid = this.cid;\n      //复位opts或eopts\n      if (this.echarts === true) {\n        _configEcharts.default.option[cid] = deepCloneAssign({}, this.eopts);\n        _configEcharts.default.option[cid].id = cid;\n        _configEcharts.default.option[cid].type = this.type;\n      } else {\n        if (this.type && _configUcharts.default.type.includes(this.type)) {\n          _configUcharts.default.option[cid] = deepCloneAssign({}, _configUcharts.default[this.type], this.opts);\n          _configUcharts.default.option[cid].canvasId = cid;\n        } else {\n          this.mixinDatacomLoading = false;\n          this.showchart = false;\n          this.mixinDatacomErrorMessage = '参数错误:props参数中type类型不正确';\n        }\n      }\n      //挂载categories和series\n      var newData = deepCloneAssign({}, anyData);\n      if (newData.series !== undefined && newData.series.length > 0) {\n        this.mixinDatacomErrorMessage = null;\n        if (this.echarts === true) {\n          _configEcharts.default.option[cid].chartData = newData;\n          this.$nextTick(function () {\n            _this4.init();\n          });\n        } else {\n          _configUcharts.default.option[cid].categories = newData.categories;\n          _configUcharts.default.option[cid].series = newData.series;\n          this.$nextTick(function () {\n            _this4.init();\n          });\n        }\n      }\n    },\n    resizeHandler: function resizeHandler() {\n      var _this5 = this;\n      //渲染防抖\n      var currTime = Date.now();\n      var lastDrawTime = this.lastDrawTime ? this.lastDrawTime : currTime - 3000;\n      var duration = currTime - lastDrawTime;\n      if (duration < 1000) return;\n      var chartdom = uni.createSelectorQuery().in(this).select('#ChartBoxId' + this.cid).boundingClientRect(function (data) {\n        _this5.showchart = true;\n        if (data.width > 0 && data.height > 0) {\n          if (data.width !== _this5.cWidth || data.height !== _this5.cHeight) {\n            _this5.checkData(_this5.drawData);\n          }\n        }\n      }).exec();\n    },\n    getCloudData: function getCloudData() {\n      var _this6 = this;\n      if (this.mixinDatacomLoading == true) {\n        return;\n      }\n      this.mixinDatacomLoading = true;\n      this.mixinDatacomGet().then(function (res) {\n        _this6.mixinDatacomResData = res.result.data;\n        _this6.localdataInit(_this6.mixinDatacomResData);\n      }).catch(function (err) {\n        _this6.mixinDatacomLoading = false;\n        _this6.showchart = false;\n        _this6.mixinDatacomErrorMessage = '请求错误:' + err;\n      });\n    },\n    onMixinDatacomPropsChange: function onMixinDatacomPropsChange(needReset, changed) {\n      if (needReset == true && this.collection !== '') {\n        this.showchart = false;\n        this.mixinDatacomErrorMessage = null;\n        this._clearChart();\n        this.getCloudData();\n      }\n    },\n    _clearChart: function _clearChart() {\n      var cid = this.cid;\n      if (this.echarts !== true && _configUcharts.default.option[cid] && _configUcharts.default.option[cid].context) {\n        var ctx = _configUcharts.default.option[cid].context;\n        if ((0, _typeof2.default)(ctx) === \"object\" && !!!_configUcharts.default.option[cid].update) {\n          ctx.clearRect(0, 0, this.cWidth * this.pixel, this.cHeight * this.pixel);\n          ctx.draw();\n        }\n      }\n    },\n    init: function init() {\n      var _this7 = this;\n      var cid = this.cid;\n      var chartdom = uni.createSelectorQuery().in(this).select('#ChartBoxId' + cid).boundingClientRect(function (data) {\n        if (data.width > 0 && data.height > 0) {\n          _this7.mixinDatacomLoading = false;\n          _this7.showchart = true;\n          _this7.lastDrawTime = Date.now();\n          _this7.cWidth = data.width;\n          _this7.cHeight = data.height;\n          if (_this7.echarts !== true) {\n            _configUcharts.default.option[cid].background = _this7.background == 'rgba(0,0,0,0)' ? '#FFFFFF' : _this7.background;\n            _configUcharts.default.option[cid].canvas2d = _this7.type2d;\n            _configUcharts.default.option[cid].pixelRatio = _this7.pixel;\n            _configUcharts.default.option[cid].animation = _this7.animation;\n            _configUcharts.default.option[cid].width = data.width * _this7.pixel;\n            _configUcharts.default.option[cid].height = data.height * _this7.pixel;\n            _configUcharts.default.option[cid].onzoom = _this7.onzoom;\n            _configUcharts.default.option[cid].ontap = _this7.ontap;\n            _configUcharts.default.option[cid].ontouch = _this7.ontouch;\n            _configUcharts.default.option[cid].onmouse = _this7.openmouse;\n            _configUcharts.default.option[cid].onmovetip = _this7.onmovetip;\n            _configUcharts.default.option[cid].tooltipShow = _this7.tooltipShow;\n            _configUcharts.default.option[cid].tooltipFormat = _this7.tooltipFormat;\n            _configUcharts.default.option[cid].tooltipCustom = _this7.tooltipCustom;\n            _configUcharts.default.option[cid].inScrollView = _this7.inScrollView;\n            _configUcharts.default.option[cid].lastDrawTime = _this7.lastDrawTime;\n            _configUcharts.default.option[cid].tapLegend = _this7.tapLegend;\n          }\n          //如果是H5或者App端,采用renderjs渲染图表\n          if (_this7.inH5 || _this7.inApp) {\n            if (_this7.echarts == true) {\n              _configEcharts.default.option[cid].ontap = _this7.ontap;\n              _configEcharts.default.option[cid].onmouse = _this7.openmouse;\n              _configEcharts.default.option[cid].tooltipShow = _this7.tooltipShow;\n              _configEcharts.default.option[cid].tooltipFormat = _this7.tooltipFormat;\n              _configEcharts.default.option[cid].tooltipCustom = _this7.tooltipCustom;\n              _configEcharts.default.option[cid].lastDrawTime = _this7.lastDrawTime;\n              _this7.echartsOpts = deepCloneAssign({}, _configEcharts.default.option[cid]);\n            } else {\n              _configUcharts.default.option[cid].rotateLock = _configUcharts.default.option[cid].rotate;\n              _this7.uchartsOpts = deepCloneAssign({}, _configUcharts.default.option[cid]);\n            }\n            //如果是小程序端,采用uCharts渲染\n          } else {\n            _configUcharts.default.option[cid] = formatterAssign(_configUcharts.default.option[cid], _configUcharts.default.formatter);\n            _this7.mixinDatacomErrorMessage = null;\n            _this7.mixinDatacomLoading = false;\n            _this7.showchart = true;\n            _this7.$nextTick(function () {\n              if (_this7.type2d === true) {\n                var query = uni.createSelectorQuery().in(_this7);\n                query.select('#' + cid).fields({\n                  node: true,\n                  size: true\n                }).exec(function (res) {\n                  if (res[0]) {\n                    var canvas = res[0].node;\n                    var ctx = canvas.getContext('2d');\n                    _configUcharts.default.option[cid].context = ctx;\n                    _configUcharts.default.option[cid].rotateLock = _configUcharts.default.option[cid].rotate;\n                    if (_configUcharts.default.instance[cid] && _configUcharts.default.option[cid] && _configUcharts.default.option[cid].update === true) {\n                      _this7._updataUChart(cid);\n                    } else {\n                      canvas.width = data.width * _this7.pixel;\n                      canvas.height = data.height * _this7.pixel;\n                      canvas._width = data.width * _this7.pixel;\n                      canvas._height = data.height * _this7.pixel;\n                      setTimeout(function () {\n                        _configUcharts.default.option[cid].context.restore();\n                        _configUcharts.default.option[cid].context.save();\n                        _this7._newChart(cid);\n                      }, 100);\n                    }\n                  } else {\n                    _this7.showchart = false;\n                    _this7.mixinDatacomErrorMessage = '参数错误:开启2d模式后,未获取到dom节点,canvas-id:' + cid;\n                  }\n                });\n              } else {\n                if (_this7.inAli) {\n                  _configUcharts.default.option[cid].rotateLock = _configUcharts.default.option[cid].rotate;\n                }\n                _configUcharts.default.option[cid].context = uni.createCanvasContext(cid, _this7);\n                if (_configUcharts.default.instance[cid] && _configUcharts.default.option[cid] && _configUcharts.default.option[cid].update === true) {\n                  _this7._updataUChart(cid);\n                } else {\n                  setTimeout(function () {\n                    _configUcharts.default.option[cid].context.restore();\n                    _configUcharts.default.option[cid].context.save();\n                    _this7._newChart(cid);\n                  }, 100);\n                }\n              }\n            });\n          }\n        } else {\n          _this7.mixinDatacomLoading = false;\n          _this7.showchart = false;\n          if (_this7.reshow == true) {\n            _this7.mixinDatacomErrorMessage = '布局错误:未获取到父元素宽高尺寸!canvas-id:' + cid;\n          }\n        }\n      }).exec();\n    },\n    saveImage: function saveImage() {\n      uni.canvasToTempFilePath({\n        canvasId: this.cid,\n        success: function success(res) {\n          uni.saveImageToPhotosAlbum({\n            filePath: res.tempFilePath,\n            success: function success() {\n              uni.showToast({\n                title: '保存成功',\n                duration: 2000\n              });\n            }\n          });\n        }\n      }, this);\n    },\n    getImage: function getImage() {\n      var _this8 = this;\n      if (this.type2d == false) {\n        uni.canvasToTempFilePath({\n          canvasId: this.cid,\n          success: function success(res) {\n            _this8.emitMsg({\n              name: 'getImage',\n              params: {\n                type: \"getImage\",\n                base64: res.tempFilePath\n              }\n            });\n          }\n        }, this);\n      } else {\n        var query = uni.createSelectorQuery().in(this);\n        query.select('#' + this.cid).fields({\n          node: true,\n          size: true\n        }).exec(function (res) {\n          if (res[0]) {\n            var canvas = res[0].node;\n            _this8.emitMsg({\n              name: 'getImage',\n              params: {\n                type: \"getImage\",\n                base64: canvas.toDataURL('image/png')\n              }\n            });\n          }\n        });\n      }\n    },\n    _error: function _error(e) {\n      this.mixinDatacomErrorMessage = e.detail.errMsg;\n    },\n    emitMsg: function emitMsg(msg) {\n      this.$emit(msg.name, msg.params);\n    },\n    getRenderType: function getRenderType() {\n      //防止如果开启echarts且父元素为v-if的情况renderjs监听不到prop变化的问题\n      if (this.echarts === true && this.mixinDatacomLoading === false) {\n        this.beforeInit();\n      }\n    },\n    toJSON: function toJSON() {\n      return this;\n    }\n  }\n};\nexports.default = _default2;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js */ 109)[\"default\"], __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZGF0YS1jaGFydHMvcWl1bi1kYXRhLWNoYXJ0cy52dWUiXSwibmFtZXMiOlsiYXJncyIsIm9yaWdpbiIsImZvcm1hdHRlckFzc2lnbiIsIm1vbnRoIiwic3RyRGF0ZSIsImNsZWFyVGltZW91dCIsInRpbWVyIiwiZm4iLCJuYW1lIiwibWl4aW5zIiwicHJvcHMiLCJ0eXBlIiwiZGVmYXVsdCIsImNhbnZhc0lkIiwiY2FudmFzMmQiLCJiYWNrZ3JvdW5kIiwiYW5pbWF0aW9uIiwiY2hhcnREYXRhIiwiY2F0ZWdvcmllcyIsInNlcmllcyIsIm9wdHMiLCJlb3B0cyIsImxvYWRpbmdUeXBlIiwiZXJyb3JTaG93IiwiZXJyb3JSZWxvYWQiLCJlcnJvck1lc3NhZ2UiLCJpblNjcm9sbFZpZXciLCJyZXNob3ciLCJyZWxvYWQiLCJkaXNhYmxlU2Nyb2xsIiwib3B0c1dhdGNoIiwib256b29tIiwib250YXAiLCJvbnRvdWNoIiwib25tb3VzZSIsIm9ubW92ZXRpcCIsImVjaGFydHNINSIsImVjaGFydHNBcHAiLCJ0b29sdGlwU2hvdyIsInRvb2x0aXBGb3JtYXQiLCJ0b29sdGlwQ3VzdG9tIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInRleHRFbnVtIiwiZ3JvdXBFbnVtIiwicGFnZVNjcm9sbFRvcCIsImRpcmVjdG9yeSIsInRhcExlZ2VuZCIsIm1lbnVzIiwiZGF0YSIsImNpZCIsImluV3giLCJpbkFsaSIsImluVHQiLCJpbkJkIiwiaW5INSIsImluQXBwIiwiaW5XaW4iLCJ0eXBlMmQiLCJkaXNTY3JvbGwiLCJvcGVubW91c2UiLCJwaXhlbCIsImNXaWR0aCIsImNIZWlnaHQiLCJzaG93Y2hhcnQiLCJlY2hhcnRzIiwiZWNoYXJ0c1Jlc2l6ZSIsInN0YXRlIiwidWNoYXJ0c09wdHMiLCJlY2hhcnRzT3B0cyIsImRyYXdEYXRhIiwibGFzdERyYXdUaW1lIiwiY3JlYXRlZCIsImlkIiwibW91bnRlZCIsImRlc3Ryb3llZCIsInVuaSIsIndhdGNoIiwiY2hhcnREYXRhUHJvcHMiLCJoYW5kbGVyIiwiaW1tZWRpYXRlIiwiZGVlcCIsImxvY2FsZGF0YSIsIm9wdHNQcm9wcyIsImVvcHRzUHJvcHMiLCJzZXRUaW1lb3V0IiwibWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlIiwicGFyYW1zIiwibXNnIiwiY29tcHV0ZWQiLCJtZXRob2RzIiwiYmVmb3JlSW5pdCIsImxvY2FsZGF0YUluaXQiLCJyZXNkYXRhIiwibmVlZENhdGVnb3JpZXMiLCJ0bXBjYXRlZ29yaWVzIiwiaWRhdGUiLCJ0ZW1wY2tleSIsInRtcERhdGEiLCJ0bXBzZXJpZXMiLCJ0ZW1wc2tleSIsInNlcmllc2RhdGEiLCJyZWxvYWRpbmciLCJjaGVja0RhdGEiLCJjZmUiLCJjZnUiLCJyZXNpemVIYW5kbGVyIiwiY3JlYXRlU2VsZWN0b3JRdWVyeSIsImluIiwic2VsZWN0IiwiYm91bmRpbmdDbGllbnRSZWN0IiwiZXhlYyIsImdldENsb3VkRGF0YSIsInRoZW4iLCJjYXRjaCIsIm9uTWl4aW5EYXRhY29tUHJvcHNDaGFuZ2UiLCJfY2xlYXJDaGFydCIsImN0eCIsImluaXQiLCJxdWVyeSIsImZpZWxkcyIsIm5vZGUiLCJzaXplIiwiY2FudmFzIiwic2F2ZUltYWdlIiwic3VjY2VzcyIsImZpbGVQYXRoIiwidGl0bGUiLCJkdXJhdGlvbiIsImdldEltYWdlIiwiYmFzZTY0IiwiX2Vycm9yIiwiZW1pdE1zZyIsImdldFJlbmRlclR5cGUiLCJ0b0pTT04iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBOEpBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7RUFBQTtFQUFBO0lBQUFBO0VBQUE7RUFDQTtJQUNBO01BQ0E7UUFDQUM7TUFDQTtJQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtJQUNBO01BQ0FDO0lBQ0E7TUFDQUY7SUFDQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNBRztFQUNBO0VBQ0E7SUFDQUM7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7SUFBQTtNQUFBO0lBQ0FDO0lBQ0FDO0lBQ0FBO01BQ0FBO01BQ0FDO0lBQ0E7RUFDQTtBQUNBO0FBQUEsZ0JBRUE7RUFDQUM7RUFDQUM7RUFDQUM7SUFDQUM7TUFDQUE7TUFDQUM7SUFDQTtJQUNBQztNQUNBRjtNQUNBQztJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7SUFDQUc7TUFDQUo7TUFDQUM7SUFDQTtJQUNBSTtNQUNBTDtNQUNBQztJQUNBO0lBQ0FLO01BQ0FOO01BQ0FDO1FBQ0E7VUFDQU07VUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQVQ7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQVM7TUFDQVY7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQVU7TUFDQVg7TUFDQUM7SUFDQTtJQUNBVztNQUNBWjtNQUNBQztJQUNBO0lBQ0FZO01BQ0FiO01BQ0FDO0lBQ0E7SUFDQWE7TUFDQWQ7TUFDQUM7SUFDQTtJQUNBYztNQUNBZjtNQUNBQztJQUNBO0lBQ0FlO01BQ0FoQjtNQUNBQztJQUNBO0lBQ0FnQjtNQUNBakI7TUFDQUM7SUFDQTtJQUNBaUI7TUFDQWxCO01BQ0FDO0lBQ0E7SUFDQWtCO01BQ0FuQjtNQUNBQztJQUNBO0lBQ0FtQjtNQUNBcEI7TUFDQUM7SUFDQTtJQUNBb0I7TUFDQXJCO01BQ0FDO0lBQ0E7SUFDQXFCO01BQ0F0QjtNQUNBQztJQUNBO0lBQ0FzQjtNQUNBdkI7TUFDQUM7SUFDQTtJQUNBdUI7TUFDQXhCO01BQ0FDO0lBQ0E7SUFDQXdCO01BQ0F6QjtNQUNBQztJQUNBO0lBQ0F5QjtNQUNBMUI7TUFDQUM7SUFDQTtJQUNBMEI7TUFDQTNCO01BQ0FDO0lBQ0E7SUFDQTJCO01BQ0E1QjtNQUNBQztJQUNBO0lBQ0E0QjtNQUNBN0I7TUFDQUM7SUFDQTtJQUNBNkI7TUFDQTlCO01BQ0FDO0lBQ0E7SUFDQThCO01BQ0EvQjtNQUNBQztJQUNBO0lBQ0ErQjtNQUNBaEM7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQWdDO01BQ0FqQztNQUNBQztRQUNBO01BQ0E7SUFDQTtJQUNBaUM7TUFDQWxDO01BQ0FDO0lBQ0E7SUFDQWtDO01BQ0FuQztNQUNBQztJQUNBO0lBQ0FtQztNQUNBcEM7TUFDQUM7SUFDQTtJQUNBb0M7TUFDQXJDO01BQ0FDO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7RUFDQXFDO0lBQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7UUFDQUM7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBO01BQ0E7SUFDQTs7SUFVQTs7SUFFQTtJQWVBO0VBQ0E7RUFDQUM7SUFBQTtJQUVBO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7SUFnQkE7TUFDQTtJQUNBO0VBcUJBO0VBQ0FDO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7SUFFQUM7RUFFQTtFQUNBQztJQUNBQztNQUNBQztRQUNBO1VBQ0E7WUFDQTtZQUNBO2NBQ0E7WUFDQTtjQUNBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztJQUNBO0lBQ0FDO01BQ0FIO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztJQUNBO0lBQ0FFO01BQ0FKO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztJQUNBO0lBQ0FHO01BQ0FMO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtRQUNBO01BQ0E7TUFDQUM7TUFDQUM7SUFDQTtJQUNBdEQ7TUFBQTtNQUNBO1FBQ0EwRDtVQUNBO1VBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBekQ7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQTBEO01BQ0E7UUFDQTtVQUFBOUU7VUFBQStFO1lBQUE1RTtZQUFBWTtZQUFBaUU7WUFBQWY7VUFBQTtRQUFBO1FBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBaEQ7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FnRTtJQUNBTjtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FOO01BQ0E7SUFDQTtFQUNBO0VBQ0FZO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO1VBQ0E7WUFDQTtjQUNBQztZQUNBO1VBQ0E7UUFDQTtNQUNBO01BQ0E7UUFDQTtVQUNBO1lBQ0E7Y0FDQUE7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7UUFBQTNFO1FBQUFDO01BQUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBMkU7TUFDQTtRQUNBQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1VBQ0FDO1FBQ0E7VUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0FBO2NBQ0FDO2NBQ0FBO1lBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQUg7Y0FDQTtnQkFDQUU7Z0JBQ0FFO2NBQ0E7WUFDQTtVQUNBO1FBQ0E7UUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQUw7UUFDQTtVQUNBTTtZQUFBM0Y7WUFBQXlDO1VBQUE7VUFDQW1EO1FBQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQUQ7VUFBQTNGO1VBQUF5QztRQUFBO1FBQ0E7UUFDQTtVQUNBO1lBQ0E7WUFDQTtjQUNBO2dCQUNBb0Q7Y0FDQTtZQUNBO1lBQ0FGO1VBQ0E7VUFDQTtRQUNBO1VBQ0E7WUFDQUE7Y0FBQTtjQUFBO1lBQUE7VUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO1VBQ0E7VUFDQTtZQUNBO2NBQ0E7Y0FDQTtnQkFDQTtrQkFDQUU7Z0JBQ0E7Y0FDQTtjQUNBRjtZQUNBO1lBQ0E7VUFDQTtZQUNBO2NBQ0E7Z0JBQ0FBO2NBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBRDtNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FJO01BQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtNQUNBO01BQ0E7UUFDQUM7UUFDQUE7UUFDQUE7TUFDQTtRQUNBO1VBQ0FDO1VBQ0FBO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtVQUNBRDtVQUNBO1lBQ0E7VUFDQTtRQUNBO1VBQ0FDO1VBQ0FBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsbUJBQ0FDLHNCQUVBQyxTQUVBQyxpQ0FDQUM7UUFDQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQSxHQUNBQztJQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBO01BQ0E7TUFDQTtNQUNBLHVCQUNBQztRQUNBO1FBQ0E7TUFDQSxHQUNBQztRQUNBO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7UUFDQTtRQUNBO1VBQ0FDO1VBQ0FBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtNQUNBLG1CQUNBWCxzQkFFQUMsU0FFQUMsNEJBQ0FDO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFDQUw7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7VUFDQTtVQUNBO1VBQ0E7WUFDQTtjQUNBRDtjQUNBQTtjQUNBQTtjQUNBQTtjQUNBQTtjQUNBQTtjQUNBO1lBQ0E7Y0FDQUM7Y0FDQTtZQUNBO1lBQ0E7VUFDQTtZQUNBQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0E7Z0JBQ0E7Z0JBQ0FjLE1BQ0FWLGtCQUNBVztrQkFBQUM7a0JBQUFDO2dCQUFBLEdBQ0FYO2tCQUNBO29CQUNBO29CQUNBO29CQUNBTjtvQkFDQUE7b0JBQ0E7c0JBQ0E7b0JBQ0E7c0JBQ0FrQjtzQkFDQUE7c0JBQ0FBO3NCQUNBQTtzQkFDQXRDO3dCQUNBb0I7d0JBQ0FBO3dCQUNBO3NCQUNBO29CQUNBO2tCQUNBO29CQUNBO29CQUNBO2tCQUNBO2dCQUNBO2NBQ0E7Z0JBQ0E7a0JBQ0FBO2dCQUNBO2dCQUNBQTtnQkFDQTtrQkFDQTtnQkFDQTtrQkFDQXBCO29CQUNBb0I7b0JBQ0FBO29CQUNBO2tCQUNBO2dCQUNBO2NBQ0E7WUFDQTtVQUNBO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQSxHQUNBTTtJQUNBO0lBQ0FhO01BQ0FoRDtRQUNBL0Q7UUFDQWdIO1VBU0FqRDtZQUNBa0Q7WUFDQUQ7Y0FDQWpEO2dCQUNBbUQ7Z0JBQ0FDO2NBQ0E7WUFDQTtVQUNBO1FBRUE7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBckQ7VUFDQS9EO1VBQ0FnSDtZQUNBO2NBQUFySDtjQUFBK0U7Z0JBQUE1RTtnQkFBQXVIO2NBQUE7WUFBQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO1FBQ0FYLE1BQ0FWLHVCQUNBVztVQUFBQztVQUFBQztRQUFBLEdBQ0FYO1VBQ0E7WUFDQTtZQUNBO2NBQUF2RztjQUFBK0U7Z0JBQUE1RTtnQkFBQXVIO2NBQUE7WUFBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBb0tBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsNEIiLCJmaWxlIjoiMTA4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPCEtLSBcclxuICogcWl1bi1kYXRhLWNoYXJ0cyDnp4vkupHpq5jmgKfog73ot6jlhajnq6/lm77ooajnu4Tku7ZcclxuICogQ29weXJpZ2h0IChjKSAyMDIxIFFJVU7CriDnp4vkupEgaHR0cHM6Ly93d3cudWNoYXJ0cy5jbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCAoIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCApXHJcbiAqIOWkjeWItuS9v+eUqOivt+S/neeVmeacrOauteazqOmHiu+8jOaEn+iwouaUr+aMgeW8gOa6kO+8gVxyXG4gKiDkuLrmlrnkvr/mm7TlpJrlvIDlj5HogIXkvb/nlKjvvIzlpoLmnInmm7Tlpb3nmoTlu7rorq7or7fmj5DkuqTnoIHkupEgUHVsbCBSZXF1ZXN0cyDvvIFcclxuICpcclxuICogdUNoYXJ0c8Ku5a6Y5pa5572R56uZXHJcbiAqIGh0dHBzOi8vd3d3LnVDaGFydHMuY25cclxuICogXHJcbiAqIOW8gOa6kOWcsOWdgDpcclxuICogaHR0cHM6Ly9naXRlZS5jb20vdUNoYXJ0cy91Q2hhcnRzXHJcbiAqIFxyXG4gKiB1bmktYXBw5o+S5Lu25biC5Zy65Zyw5Z2A77yaXHJcbiAqIGh0dHA6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9MjcxXHJcbiAqIFxyXG4gLS0+XHJcbjx0ZW1wbGF0ZT5cclxuICA8dmlldyBjbGFzcz1cImNoYXJ0c3ZpZXdcIiA6aWQ9XCInQ2hhcnRCb3hJZCcrY2lkXCI+XHJcbiAgICA8dmlldyB2LWlmPVwibWl4aW5EYXRhY29tTG9hZGluZ1wiPlxyXG4gICAgICA8IS0tIOiHquWumuS5ieWKoOi9veeKtuaAge+8jOivt+aUuei/memHjCAtLT5cclxuICAgICAgPHFpdW4tbG9hZGluZyA6bG9hZGluZ1R5cGU9XCJsb2FkaW5nVHlwZVwiIC8+XHJcbiAgICA8L3ZpZXc+XHJcbiAgICA8dmlldyB2LWlmPVwibWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlICYmIGVycm9yU2hvd1wiIEB0YXA9XCJyZWxvYWRpbmdcIj5cclxuICAgICAgPCEtLSDoh6rlrprkuYnplJnor6/mj5DnpLrvvIzor7fmlLnov5nph4wgLS0+XHJcbiAgICAgIDxxaXVuLWVycm9yIDplcnJvck1lc3NhZ2U9XCJlcnJvck1lc3NhZ2VcIiAvPlxyXG4gICAgPC92aWV3PlxyXG4gICAgPCEtLSBBUFDlkoxINemHh+eUqHJlbmRlcmpz5riy5p+T5Zu+6KGoIC0tPlxyXG4gICAgPCEtLSAjaWZkZWYgQVBQLVZVRSB8fCBINSAtLT5cclxuICAgIDxibG9jayB2LWlmPVwiZWNoYXJ0c1wiPlxyXG4gICAgICA8dmlld1xyXG4gICAgICAgIDpzdHlsZT1cInsgYmFja2dyb3VuZDogYmFja2dyb3VuZCB9XCJcclxuICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtcIlxyXG4gICAgICAgIDpkYXRhLWRpcmVjdG9yeT1cImRpcmVjdG9yeVwiXHJcbiAgICAgICAgOmlkPVwiJ0VDJytjaWRcIiBcclxuICAgICAgICA6cHJvcD1cImVjaGFydHNPcHRzXCIgXHJcbiAgICAgICAgOmNoYW5nZTpwcm9wPVwicmRjaGFydHMuZWNpbml0XCIgXHJcbiAgICAgICAgOnJlc2l6ZT1cImVjaGFydHNSZXNpemVcIlxyXG4gICAgICAgIDpjaGFuZ2U6cmVzaXplPVwicmRjaGFydHMuZWNyZXNpemVcIlxyXG4gICAgICAgIHYtc2hvdz1cInNob3djaGFydFwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2Jsb2NrPlxyXG4gICAgPGJsb2NrIHYtZWxzZT5cclxuICAgICAgPHZpZXdcclxuICAgICAgICB2LW9uOnRhcD1cInJkY2hhcnRzLnRhcFwiXHJcbiAgICAgICAgdi1vbjptb3VzZW1vdmU9XCJyZGNoYXJ0cy5tb3VzZU1vdmVcIlxyXG4gICAgICAgIHYtb246bW91c2Vkb3duPVwicmRjaGFydHMubW91c2VEb3duXCJcclxuICAgICAgICB2LW9uOm1vdXNldXA9XCJyZGNoYXJ0cy5tb3VzZVVwXCJcclxuICAgICAgICB2LW9uOnRvdWNoc3RhcnQ9XCJyZGNoYXJ0cy50b3VjaFN0YXJ0XCJcclxuICAgICAgICB2LW9uOnRvdWNobW92ZT1cInJkY2hhcnRzLnRvdWNoTW92ZVwiXHJcbiAgICAgICAgdi1vbjp0b3VjaGVuZD1cInJkY2hhcnRzLnRvdWNoRW5kXCJcclxuICAgICAgICA6aWQ9XCInVUMnK2NpZFwiXHJcbiAgICAgICAgOnByb3A9XCJ1Y2hhcnRzT3B0c1wiXHJcbiAgICAgICAgOmNoYW5nZTpwcm9wPVwicmRjaGFydHMudWNpbml0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjYW52YXNcclxuICAgICAgICAgIDppZD1cImNpZFwiXHJcbiAgICAgICAgICA6Y2FudmFzSWQ9XCJjaWRcIlxyXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogY1dpZHRoICsgJ3B4JywgaGVpZ2h0OiBjSGVpZ2h0ICsgJ3B4JywgYmFja2dyb3VuZDogYmFja2dyb3VuZCB9XCJcclxuICAgICAgICAgIDpkaXNhYmxlLXNjcm9sbD1cImRpc2FibGVTY3JvbGxcIlxyXG4gICAgICAgICAgQGVycm9yPVwiX2Vycm9yXCJcclxuICAgICAgICAgIHYtc2hvdz1cInNob3djaGFydFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC92aWV3PlxyXG4gICAgPC9ibG9jaz5cclxuICAgIDwhLS0gI2VuZGlmIC0tPlxyXG4gICAgPCEtLSDmlK/ku5jlrp3lsI/nqIvluo8gLS0+XHJcbiAgICA8IS0tICNpZmRlZiBNUC1BTElQQVkgLS0+XHJcbiAgICA8YmxvY2sgdi1pZj1cIm9udG91Y2hcIj5cclxuICAgICAgPGNhbnZhc1xyXG4gICAgICAgIDppZD1cImNpZFwiXHJcbiAgICAgICAgOmNhbnZhc0lkPVwiY2lkXCJcclxuICAgICAgICA6d2lkdGg9XCJjV2lkdGggKiBwaXhlbFwiXHJcbiAgICAgICAgOmhlaWdodD1cImNIZWlnaHQgKiBwaXhlbFwiXHJcbiAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogY1dpZHRoICsgJ3B4JywgaGVpZ2h0OiBjSGVpZ2h0ICsgJ3B4JywgYmFja2dyb3VuZDogYmFja2dyb3VuZCB9XCJcclxuICAgICAgICA6ZGlzYWJsZS1zY3JvbGw9XCJkaXNTY3JvbGxcIlxyXG4gICAgICAgIEB0YXA9XCJfdGFwXCJcclxuICAgICAgICBAdG91Y2hzdGFydD1cIl90b3VjaFN0YXJ0XCJcclxuICAgICAgICBAdG91Y2htb3ZlPVwiX3RvdWNoTW92ZVwiXHJcbiAgICAgICAgQHRvdWNoZW5kPVwiX3RvdWNoRW5kXCJcclxuICAgICAgICBAZXJyb3I9XCJfZXJyb3JcIlxyXG4gICAgICAgIHYtc2hvdz1cInNob3djaGFydFwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2Jsb2NrPlxyXG4gICAgPGJsb2NrIHYtaWY9XCIhb250b3VjaFwiPlxyXG4gICAgICA8Y2FudmFzXHJcbiAgICAgICAgOmlkPVwiY2lkXCJcclxuICAgICAgICA6Y2FudmFzSWQ9XCJjaWRcIlxyXG4gICAgICAgIDp3aWR0aD1cImNXaWR0aCAqIHBpeGVsXCJcclxuICAgICAgICA6aGVpZ2h0PVwiY0hlaWdodCAqIHBpeGVsXCJcclxuICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBjV2lkdGggKyAncHgnLCBoZWlnaHQ6IGNIZWlnaHQgKyAncHgnLCBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgIDpkaXNhYmxlLXNjcm9sbD1cImRpc1Njcm9sbFwiXHJcbiAgICAgICAgQHRhcD1cIl90YXBcIlxyXG4gICAgICAgIEBlcnJvcj1cIl9lcnJvclwiXHJcbiAgICAgICAgdi1zaG93PVwic2hvd2NoYXJ0XCJcclxuICAgICAgLz5cclxuICAgIDwvYmxvY2s+XHJcbiAgICA8IS0tICNlbmRpZiAtLT5cclxuICAgIDwhLS0g5YW25LuW5bCP56iL5bqP6YCa6L+HdnVl5riy5p+T5Zu+6KGoIC0tPlxyXG4gICAgPCEtLSAjaWZkZWYgTVAtMzYwIHx8IE1QLUJBSURVIHx8IE1QLVFRIHx8IE1QLVRPVVRJQU8gfHwgTVAtV0VJWElOIHx8IE1QLUtVQUlTSE9VIHx8IE1QLUxBUksgfHwgTVAtSkQgLS0+XHJcbiAgICA8YmxvY2sgdi1pZj1cInR5cGUyZFwiPlxyXG4gICAgICA8dmlldyB2LWlmPVwib250b3VjaFwiIEB0YXA9XCJfdGFwXCI+XHJcbiAgICAgICAgPGNhbnZhc1xyXG4gICAgICAgICAgOmlkPVwiY2lkXCJcclxuICAgICAgICAgIDpjYW52YXNJZD1cImNpZFwiXHJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBjV2lkdGggKyAncHgnLCBoZWlnaHQ6IGNIZWlnaHQgKyAncHgnLCBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgICAgdHlwZT1cIjJkXCJcclxuICAgICAgICAgIDpkaXNhYmxlLXNjcm9sbD1cImRpc1Njcm9sbFwiXHJcbiAgICAgICAgICBAdG91Y2hzdGFydD1cIl90b3VjaFN0YXJ0XCJcclxuICAgICAgICAgIEB0b3VjaG1vdmU9XCJfdG91Y2hNb3ZlXCJcclxuICAgICAgICAgIEB0b3VjaGVuZD1cIl90b3VjaEVuZFwiXHJcbiAgICAgICAgICBAZXJyb3I9XCJfZXJyb3JcIlxyXG4gICAgICAgICAgdi1zaG93PVwic2hvd2NoYXJ0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3ZpZXc+XHJcbiAgICAgIDx2aWV3IHYtaWY9XCIhb250b3VjaFwiIEB0YXA9XCJfdGFwXCI+XHJcbiAgICAgICAgPGNhbnZhc1xyXG4gICAgICAgICAgOmlkPVwiY2lkXCJcclxuICAgICAgICAgIDpjYW52YXNJZD1cImNpZFwiXHJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBjV2lkdGggKyAncHgnLCBoZWlnaHQ6IGNIZWlnaHQgKyAncHgnLCBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgICAgdHlwZT1cIjJkXCJcclxuICAgICAgICAgIDpkaXNhYmxlLXNjcm9sbD1cImRpc1Njcm9sbFwiXHJcbiAgICAgICAgICBAZXJyb3I9XCJfZXJyb3JcIlxyXG4gICAgICAgICAgdi1zaG93PVwic2hvd2NoYXJ0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3ZpZXc+XHJcbiAgICA8L2Jsb2NrPlxyXG4gICAgPGJsb2NrIHYtaWY9XCIhdHlwZTJkXCI+XHJcbiAgICAgIDx2aWV3IHYtaWY9XCJvbnRvdWNoXCIgQHRhcD1cIl90YXBcIj5cclxuICAgICAgICA8Y2FudmFzXHJcbiAgICAgICAgICA6aWQ9XCJjaWRcIlxyXG4gICAgICAgICAgOmNhbnZhc0lkPVwiY2lkXCJcclxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGNXaWR0aCArICdweCcsIGhlaWdodDogY0hlaWdodCArICdweCcsIGJhY2tncm91bmQ6IGJhY2tncm91bmQgfVwiXHJcbiAgICAgICAgICBAdG91Y2hzdGFydD1cIl90b3VjaFN0YXJ0XCJcclxuICAgICAgICAgIEB0b3VjaG1vdmU9XCJfdG91Y2hNb3ZlXCJcclxuICAgICAgICAgIEB0b3VjaGVuZD1cIl90b3VjaEVuZFwiXHJcbiAgICAgICAgICA6ZGlzYWJsZS1zY3JvbGw9XCJkaXNTY3JvbGxcIlxyXG4gICAgICAgICAgQGVycm9yPVwiX2Vycm9yXCJcclxuICAgICAgICAgIHYtaWY9XCJzaG93Y2hhcnRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvdmlldz5cclxuICAgICAgPHZpZXcgdi1pZj1cIiFvbnRvdWNoXCIgPlxyXG4gICAgICAgIDxjYW52YXNcclxuICAgICAgICAgIDppZD1cImNpZFwiXHJcbiAgICAgICAgICA6Y2FudmFzSWQ9XCJjaWRcIlxyXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogY1dpZHRoICsgJ3B4JywgaGVpZ2h0OiBjSGVpZ2h0ICsgJ3B4JywgYmFja2dyb3VuZDogYmFja2dyb3VuZCB9XCJcclxuICAgICAgICAgIDpkaXNhYmxlLXNjcm9sbD1cImRpc1Njcm9sbFwiXHJcbiAgICAgICAgICBAdGFwPVwiX3RhcFwiXHJcbiAgICAgICAgICBAZXJyb3I9XCJfZXJyb3JcIlxyXG4gICAgICAgICAgdi1pZj1cInNob3djaGFydFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC92aWV3PlxyXG4gICAgPC9ibG9jaz5cclxuICAgIDwhLS0gI2VuZGlmIC0tPlxyXG4gIDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcbmltcG9ydCB1Q2hhcnRzIGZyb20gJy4uLy4uL2pzX3Nkay91LWNoYXJ0cy91LWNoYXJ0cy5qcyc7XHJcbmltcG9ydCBjZnUgZnJvbSAnLi4vLi4vanNfc2RrL3UtY2hhcnRzL2NvbmZpZy11Y2hhcnRzLmpzJztcclxuLy8gI2lmZGVmIEFQUC1WVUUgfHwgSDVcclxuaW1wb3J0IGNmZSBmcm9tICcuLi8uLi9qc19zZGsvdS1jaGFydHMvY29uZmlnLWVjaGFydHMuanMnO1xyXG4vLyAjZW5kaWZcclxuXHJcbmZ1bmN0aW9uIGRlZXBDbG9uZUFzc2lnbihvcmlnaW4gPSB7fSwgLi4uYXJncykge1xyXG4gIGZvciAobGV0IGkgaW4gYXJncykge1xyXG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3NbaV0pIHtcclxuICAgICAgaWYgKGFyZ3NbaV0uaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIG9yaWdpbltrZXldID0gYXJnc1tpXVtrZXldICYmIHR5cGVvZiBhcmdzW2ldW2tleV0gPT09ICdvYmplY3QnID8gZGVlcENsb25lQXNzaWduKEFycmF5LmlzQXJyYXkoYXJnc1tpXVtrZXldKSA/IFtdIDoge30sIG9yaWdpbltrZXldLCBhcmdzW2ldW2tleV0pIDogYXJnc1tpXVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBvcmlnaW47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1hdHRlckFzc2lnbihhcmdzLGZvcm1hdHRlcikge1xyXG4gIGZvciAobGV0IGtleSBpbiBhcmdzKSB7XHJcbiAgICBpZihhcmdzLmhhc093blByb3BlcnR5KGtleSkgJiYgYXJnc1trZXldICE9PSBudWxsICYmIHR5cGVvZiBhcmdzW2tleV0gPT09ICdvYmplY3QnKXtcclxuICAgICAgZm9ybWF0dGVyQXNzaWduKGFyZ3Nba2V5XSxmb3JtYXR0ZXIpXHJcbiAgICB9ZWxzZSBpZihrZXkgPT09ICdmb3JtYXQnICYmIHR5cGVvZiBhcmdzW2tleV0gPT09ICdzdHJpbmcnKXtcclxuICAgICAgYXJnc1snZm9ybWF0dGVyJ10gPSBmb3JtYXR0ZXJbYXJnc1trZXldXSA/IGZvcm1hdHRlclthcmdzW2tleV1dIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gYXJncztcclxufVxyXG5cclxuLy8g5pe26Ze06L2s5o2i5Ye95pWw77yM5Li65LqG5Yy56YWNdW5pQ2xpbmV0RELor7vlj5blh7rnmoTml7bpl7TkuI5jYXRlZ29yaWVz5LiN5ZCMXHJcbmZ1bmN0aW9uIGdldEZvcm1hdERhdGUoZGF0ZSkge1xyXG5cdHZhciBzZXBlcmF0b3IgPSBcIi1cIjtcclxuXHR2YXIgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuXHR2YXIgbW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG5cdHZhciBzdHJEYXRlID0gZGF0ZS5nZXREYXRlKCk7XHJcblx0aWYgKG1vbnRoID49IDEgJiYgbW9udGggPD0gOSkge1xyXG5cdFx0XHRtb250aCA9IFwiMFwiICsgbW9udGg7XHJcblx0fVxyXG5cdGlmIChzdHJEYXRlID49IDAgJiYgc3RyRGF0ZSA8PSA5KSB7XHJcblx0XHRcdHN0ckRhdGUgPSBcIjBcIiArIHN0ckRhdGU7XHJcblx0fVxyXG5cdHZhciBjdXJyZW50ZGF0ZSA9IHllYXIgKyBzZXBlcmF0b3IgKyBtb250aCArIHNlcGVyYXRvciArIHN0ckRhdGU7XHJcblx0cmV0dXJuIGN1cnJlbnRkYXRlO1xyXG59XHJcblxyXG52YXIgbGFzdE1vdmVUaW1lID0gbnVsbDtcclxuLyoqXHJcbiAqIOmYsuaKllxyXG4gKlxyXG4gKiBAcGFyYW0geyBGdW5jdGlvbiB9IGZuIOimgeaJp+ihjOeahOaWueazlVxyXG4gKiBAcGFyYW0geyBOdW1iZXIgfSB3YWl0ICDpmLLmipblpJrlsJHmr6vnp5JcclxuICpcclxuICog5ZyoIHZ1ZSDkuK3kvb/nlKjvvIjms6jmhI/vvJrkuI3og73kvb/nlKjnrq3lpLTlh73mlbDvvIzlkKbliJl0aGlz5oyH5ZCR5LiN5a+577yM5bm25LiU5LiN6IO95YaN5qyh5bCB6KOF5aaC77yaXHJcbiAqIG1vdmUoKXsgIC8vIOmUmeivr+iwg+eUqOaWueW8j1xyXG4gKiAgIGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcclxuICogICBjb25zb2xlLmxvZyh0aGlzLnRpdGxlKTtcclxuICogfSwgMTAwMCl977yJO1xyXG4gKiDlupTor6Xnm7TmjqXkvb/nlKjvvJovLyDmraPnoa7osIPnlKjmlrnlvI9cclxuICogbW92ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xyXG4gKiAgIGNvbnNvbGUubG9nKHRoaXMudGl0bGUpO1xyXG4gKiB9LCAxMDAwKVxyXG4gKi9cclxuZnVuY3Rpb24gZGVib3VuY2UoZm4sIHdhaXQpIHtcclxuICBsZXQgdGltZXIgPSBmYWxzZTtcclxuICByZXR1cm4gZnVuY3Rpb24oKSB7XHJcbiAgICBjbGVhclRpbWVvdXQodGltZXIpO1xyXG4gICAgdGltZXIgJiYgY2xlYXJUaW1lb3V0KHRpbWVyKTtcclxuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRpbWVyID0gZmFsc2U7XHJcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIOaKiuWPguaVsOS8oOi/m+WOu1xyXG4gICAgfSwgd2FpdCk7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIG5hbWU6ICdxaXVuLWRhdGEtY2hhcnRzJyxcclxuICBtaXhpbnM6IFt1bmlDbG91ZC5taXhpbkRhdGFjb21dLFxyXG4gIHByb3BzOiB7XHJcbiAgICB0eXBlOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogbnVsbFxyXG4gICAgfSxcclxuICAgIGNhbnZhc0lkOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogJ3VjaGFydHNpZCdcclxuICAgIH0sXHJcbiAgICBjYW52YXMyZDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIGJhY2tncm91bmQ6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiAncmdiYSgwLDAsMCwwKSdcclxuICAgIH0sXHJcbiAgICBhbmltYXRpb246IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGNoYXJ0RGF0YToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGNhdGVnb3JpZXM6IFtdLFxyXG4gICAgICAgICAgc2VyaWVzOiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBvcHRzOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlb3B0czoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgbG9hZGluZ1R5cGU6IHtcclxuICAgICAgdHlwZTogTnVtYmVyLFxyXG4gICAgICBkZWZhdWx0OiAyXHJcbiAgICB9LFxyXG4gICAgZXJyb3JTaG93OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlcnJvclJlbG9hZDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZXJyb3JNZXNzYWdlOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogbnVsbFxyXG4gICAgfSxcclxuICAgIGluU2Nyb2xsVmlldzoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIHJlc2hvdzoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIHJlbG9hZDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIGRpc2FibGVTY3JvbGw6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBvcHRzV2F0Y2g6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIG9uem9vbToge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIG9udGFwOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBvbnRvdWNoOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgb25tb3VzZToge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgb25tb3ZldGlwOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgZWNoYXJ0c0g1OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgZWNoYXJ0c0FwcDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIHRvb2x0aXBTaG93OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICB0b29sdGlwRm9ybWF0OiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgdG9vbHRpcEN1c3RvbToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIHN0YXJ0RGF0ZToge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIGVuZERhdGU6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICB0ZXh0RW51bToge1xyXG4gICAgICB0eXBlOiBBcnJheSxcclxuICAgICAgZGVmYXVsdCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBncm91cEVudW06IHtcclxuICAgICAgdHlwZTogQXJyYXksXHJcbiAgICAgIGRlZmF1bHQgKCkge1xyXG4gICAgICAgIHJldHVybiBbXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgcGFnZVNjcm9sbFRvcDoge1xyXG4gICAgICB0eXBlOiBOdW1iZXIsXHJcbiAgICAgIGRlZmF1bHQ6IDBcclxuICAgIH0sXHJcbiAgICBkaXJlY3Rvcnk6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiAnLydcclxuICAgIH0sXHJcbiAgICB0YXBMZWdlbmQ6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIG1lbnVzOiB7XHJcbiAgICAgIHR5cGU6IEFycmF5LFxyXG4gICAgICBkZWZhdWx0ICgpIHtcclxuICAgICAgICByZXR1cm4gW11cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNpZDogJ3VjaGFydHNpZCcsXHJcbiAgICAgIGluV3g6IGZhbHNlLFxyXG4gICAgICBpbkFsaTogZmFsc2UsXHJcbiAgICAgIGluVHQ6IGZhbHNlLFxyXG4gICAgICBpbkJkOiBmYWxzZSxcclxuICAgICAgaW5INTogZmFsc2UsXHJcbiAgICAgIGluQXBwOiBmYWxzZSxcclxuICAgICAgaW5XaW46IGZhbHNlLFxyXG4gICAgICB0eXBlMmQ6IHRydWUsXHJcbiAgICAgIGRpc1Njcm9sbDogZmFsc2UsXHJcbiAgICAgIG9wZW5tb3VzZTogZmFsc2UsXHJcbiAgICAgIHBpeGVsOiAxLFxyXG4gICAgICBjV2lkdGg6IDM3NSxcclxuICAgICAgY0hlaWdodDogMjUwLFxyXG4gICAgICBzaG93Y2hhcnQ6IGZhbHNlLFxyXG4gICAgICBlY2hhcnRzOiBmYWxzZSxcclxuICAgICAgZWNoYXJ0c1Jlc2l6ZTp7XHJcbiAgICAgICAgc3RhdGU6ZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgdWNoYXJ0c09wdHM6IHt9LFxyXG4gICAgICBlY2hhcnRzT3B0czoge30sXHJcbiAgICAgIGRyYXdEYXRhOnt9LFxyXG4gICAgICBsYXN0RHJhd1RpbWU6bnVsbCxcclxuICAgIH07XHJcbiAgfSxcclxuICBjcmVhdGVkKCl7XHJcbiAgICB0aGlzLmNpZCA9IHRoaXMuY2FudmFzSWRcclxuICAgIGlmICh0aGlzLmNhbnZhc0lkID09ICd1Y2hhcnRzaWQnIHx8IHRoaXMuY2FudmFzSWQgPT0gJycpIHtcclxuICAgICAgbGV0IHQgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidcclxuICAgICAgbGV0IGxlbiA9IHQubGVuZ3RoXHJcbiAgICAgIGxldCBpZCA9ICcnXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzI7IGkrKykge1xyXG4gICAgICAgIGlkICs9IHQuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGxlbikpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaWQgPSBpZFxyXG4gICAgfVxyXG4gICAgY29uc3Qgc3lzdGVtSW5mbyA9IHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpXHJcbiAgICBpZihzeXN0ZW1JbmZvLnBsYXRmb3JtID09PSAnd2luZG93cycgfHwgc3lzdGVtSW5mby5wbGF0Zm9ybSA9PT0gJ21hYycpe1xyXG4gICAgICB0aGlzLmluV2luID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vICNpZmRlZiBNUC1XRUlYSU5cclxuICAgIHRoaXMuaW5XeCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5jYW52YXMyZCA9PT0gZmFsc2UgfHwgc3lzdGVtSW5mby5wbGF0Zm9ybSA9PT0gJ3dpbmRvd3MnIHx8IHN5c3RlbUluZm8ucGxhdGZvcm0gPT09ICdtYWMnKSB7XHJcbiAgICAgIHRoaXMudHlwZTJkID0gZmFsc2U7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy50eXBlMmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnBpeGVsID0gc3lzdGVtSW5mby5waXhlbFJhdGlvO1xyXG4gICAgfVxyXG4gICAgLy8gI2VuZGlmXHJcbiAgICAvL+mdnuW+ruS/oeWwj+eoi+W6j+err+W8uuWItuWFs+mXrWNhbnZhczJk5qih5byPXHJcbiAgICAvLyAjaWZuZGVmIE1QLVdFSVhJTlxyXG4gICAgdGhpcy50eXBlMmQgPSBmYWxzZTtcclxuICAgIC8vICNlbmRpZlxyXG4gICAgLy8gI2lmZGVmICBNUC1UT1VUSUFPIHx8IE1QLUxBUksgfHwgTVAtQUxJUEFZXHJcbiAgICB0aGlzLnR5cGUyZCA9IHRoaXMuY2FudmFzMmQ7XHJcbiAgICAvLyAjZW5kaWZcclxuICAgIC8vICNpZmRlZiBNUC1BTElQQVlcclxuICAgIHRoaXMuaW5BbGkgPSB0cnVlO1xyXG4gICAgdGhpcy5waXhlbCA9IHN5c3RlbUluZm8ucGl4ZWxSYXRpbztcclxuICAgIC8vICNlbmRpZlxyXG4gICAgLy8gI2lmZGVmIE1QLUJBSURVXHJcbiAgICB0aGlzLmluQmQgPSB0cnVlO1xyXG4gICAgLy8gI2VuZGlmXHJcbiAgICAvLyAjaWZkZWYgTVAtVE9VVElBT1xyXG4gICAgdGhpcy5pblR0ID0gdHJ1ZTtcclxuICAgIC8vICNlbmRpZlxyXG4gICAgdGhpcy5kaXNTY3JvbGwgPSB0aGlzLmRpc2FibGVTY3JvbGw7XHJcbiAgfSxcclxuICBtb3VudGVkKCkge1xyXG4gICAgLy8gI2lmZGVmIEFQUC1WVUVcclxuICAgIHRoaXMuaW5BcHAgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZWNoYXJ0c0FwcCA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmVjaGFydHMgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9wZW5tb3VzZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gI2VuZGlmXHJcbiAgICAvLyAjaWZkZWYgQVBQLU5WVUVcclxuICAgIHRoaXMuaW5BcHAgPSB0cnVlO1xyXG4gICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2VcclxuICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gXCLmmoLkuI3mlK/mjIFOVlVFXCJcclxuICAgIC8vICNlbmRpZlxyXG4gICAgLy8gI2lmZGVmIEg1XHJcbiAgICB0aGlzLmluSDUgPSB0cnVlO1xyXG4gICAgaWYodGhpcy5pbldpbiA9PT0gdHJ1ZSl7XHJcbiAgICAgIHRoaXMub3Blbm1vdXNlID0gdGhpcy5vbm1vdXNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZWNoYXJ0c0g1ID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZWNoYXJ0cyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyAjZW5kaWZcclxuICAgIHRoaXMuJG5leHRUaWNrKCgpPT57XHJcbiAgICAgIHRoaXMuYmVmb3JlSW5pdCgpO1xyXG4gICAgfSlcclxuICAgIC8vICNpZm5kZWYgTVAtQUxJUEFZIHx8IE1QLUJBSURVIHx8IE1QLVRPVVRJQU8gfHwgQVBQLVZVRVxyXG4gICAgY29uc3QgdGltZSA9IHRoaXMuaW5INSA/IDUwMCA6IDIwMDtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIHVuaS5vbldpbmRvd1Jlc2l6ZShcclxuICAgICAgZGVib3VuY2UoZnVuY3Rpb24ocmVzKSB7XHJcbiAgICAgICAgaWYgKF90aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZXJybXNnID0gX3RoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlO1xyXG4gICAgICAgIGlmIChlcnJtc2cgIT09IG51bGwgJiYgZXJybXNnICE9PSAnbnVsbCcgJiYgZXJybXNnICE9PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoX3RoaXMuZWNoYXJ0cykge1xyXG4gICAgICAgICAgX3RoaXMuZWNoYXJ0c1Jlc2l6ZS5zdGF0ZSA9ICFfdGhpcy5lY2hhcnRzUmVzaXplLnN0YXRlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBfdGhpcy5yZXNpemVIYW5kbGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCB0aW1lKVxyXG4gICAgKTtcclxuICAgIC8vICNlbmRpZlxyXG4gIH0sXHJcbiAgZGVzdHJveWVkKCl7XHJcbiAgICBpZih0aGlzLmVjaGFydHMgPT09IHRydWUpe1xyXG4gICAgICBkZWxldGUgY2ZlLm9wdGlvblt0aGlzLmNpZF1cclxuICAgICAgZGVsZXRlIGNmZS5pbnN0YW5jZVt0aGlzLmNpZF1cclxuICAgIH1lbHNle1xyXG4gICAgICBkZWxldGUgY2Z1Lm9wdGlvblt0aGlzLmNpZF1cclxuICAgICAgZGVsZXRlIGNmdS5pbnN0YW5jZVt0aGlzLmNpZF1cclxuICAgIH1cclxuICAgIC8vICNpZm5kZWYgTVAtQUxJUEFZIHx8IE1QLUJBSURVIHx8IE1QLVRPVVRJQU9cclxuICAgIHVuaS5vZmZXaW5kb3dSZXNpemUoKCk9Pnt9KVxyXG4gICAgLy8gI2VuZGlmXHJcbiAgfSxcclxuICB3YXRjaDoge1xyXG4gICAgY2hhcnREYXRhUHJvcHM6IHtcclxuICAgICAgaGFuZGxlcih2YWwsIG9sZHZhbCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHZhbCkgIT09IEpTT04uc3RyaW5naWZ5KG9sZHZhbCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2xlYXJDaGFydCgpO1xyXG4gICAgICAgICAgICBpZiAodmFsLnNlcmllcyAmJiB2YWwuc2VyaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmJlZm9yZUluaXQoKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX2NsZWFyQ2hhcnQoKTtcclxuICAgICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9ICflj4LmlbDplJnor6/vvJpjaGFydERhdGHmlbDmja7nsbvlnovplJnor68nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgaW1tZWRpYXRlOiBmYWxzZSxcclxuICAgICAgZGVlcDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2FsZGF0YTp7XHJcbiAgICAgIGhhbmRsZXIodmFsLCBvbGR2YWwpIHtcclxuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodmFsKSAhPT0gSlNPTi5zdHJpbmdpZnkob2xkdmFsKSkge1xyXG4gICAgICAgICAgaWYgKHZhbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmVmb3JlSW5pdCgpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyQ2hhcnQoKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgaW1tZWRpYXRlOiBmYWxzZSxcclxuICAgICAgZGVlcDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIG9wdHNQcm9wczoge1xyXG4gICAgICBoYW5kbGVyKHZhbCwgb2xkdmFsKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodmFsKSAhPT0gSlNPTi5zdHJpbmdpZnkob2xkdmFsKSAmJiB0aGlzLmVjaGFydHMgPT09IGZhbHNlICYmIHRoaXMub3B0c1dhdGNoID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0RhdGEodGhpcy5kcmF3RGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fY2xlYXJDaGFydCgpO1xyXG4gICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gJ+WPguaVsOmUmeivr++8mm9wdHPmlbDmja7nsbvlnovplJnor68nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgaW1tZWRpYXRlOiBmYWxzZSxcclxuICAgICAgZGVlcDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGVvcHRzUHJvcHM6IHtcclxuICAgICAgaGFuZGxlcih2YWwsIG9sZHZhbCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHZhbCkgIT09IEpTT04uc3RyaW5naWZ5KG9sZHZhbCkgJiYgdGhpcy5lY2hhcnRzID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tEYXRhKHRoaXMuZHJhd0RhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9ICflj4LmlbDplJnor6/vvJplb3B0c+aVsOaNruexu+Wei+mUmeivryc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBpbW1lZGlhdGU6IGZhbHNlLFxyXG4gICAgICBkZWVwOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgcmVzaG93KHZhbCwgb2xkdmFsKSB7XHJcbiAgICAgIGlmICh2YWwgPT09IHRydWUgJiYgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID09PSBmYWxzZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5lY2hhcnRzUmVzaXplLnN0YXRlID0gIXRoaXMuZWNoYXJ0c1Jlc2l6ZS5zdGF0ZTtcclxuICAgICAgICAgIHRoaXMuY2hlY2tEYXRhKHRoaXMuZHJhd0RhdGEpO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICByZWxvYWQodmFsLCBvbGR2YWwpIHtcclxuICAgICAgaWYgKHZhbCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmVsb2FkaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBtaXhpbkRhdGFjb21FcnJvck1lc3NhZ2UodmFsLCBvbGR2YWwpIHtcclxuICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ2Vycm9yJywgcGFyYW1zOiB7dHlwZTpcImVycm9yXCIsIGVycm9yU2hvdzogdGhpcy5lcnJvclNob3csIG1zZzogdmFsLCBpZDogdGhpcy5jaWR9fSk7XHJcbiAgICAgICAgaWYodGhpcy5lcnJvclNob3cpe1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1vnp4vkupHlm77ooajnu4Tku7ZdJyArIHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZXJyb3JNZXNzYWdlKHZhbCwgb2xkdmFsKSB7XHJcbiAgICAgIGlmICh2YWwgJiYgdGhpcy5lcnJvclNob3cgJiYgdmFsICE9PSBudWxsICYmIHZhbCAhPT0gJ251bGwnICYmIHZhbCAhPT0gJycpIHtcclxuICAgICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gdmFsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmVsb2FkaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LFxyXG4gIGNvbXB1dGVkOiB7XHJcbiAgICBvcHRzUHJvcHMoKSB7XHJcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMub3B0cykpO1xyXG4gICAgfSxcclxuICAgIGVvcHRzUHJvcHMoKSB7XHJcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZW9wdHMpKTtcclxuICAgIH0sXHJcbiAgICBjaGFydERhdGFQcm9wcygpIHtcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jaGFydERhdGEpKTtcclxuICAgIH0sXHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBiZWZvcmVJbml0KCl7XHJcbiAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNoYXJ0RGF0YSA9PT0gJ29iamVjdCcgJiYgdGhpcy5jaGFydERhdGEgIT0gbnVsbCAmJiB0aGlzLmNoYXJ0RGF0YS5zZXJpZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNoYXJ0RGF0YS5zZXJpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8v5ou36LSd5LiA5LiLY2hhcnREYXRh77yM5Li65LqGb3B0c+WPmOabtOWQjue7n+S4gOaVsOaNruadpea6kFxyXG4gICAgICAgIHRoaXMuZHJhd0RhdGEgPSBkZWVwQ2xvbmVBc3NpZ24oe30sIHRoaXMuY2hhcnREYXRhKTtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3djaGFydCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGVja0RhdGEodGhpcy5jaGFydERhdGEpO1xyXG4gICAgICB9ZWxzZSBpZih0aGlzLmxvY2FsZGF0YS5sZW5ndGg+MCl7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubG9jYWxkYXRhSW5pdCh0aGlzLmxvY2FsZGF0YSk7XHJcbiAgICAgIH1lbHNlIGlmKHRoaXMuY29sbGVjdGlvbiAhPT0gJycpe1xyXG4gICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2V0Q2xvdWREYXRhKCk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBsb2NhbGRhdGFJbml0KHJlc2RhdGEpe1xyXG4gICAgICAvL+abv+aNomVudW3nsbvlnovkuLrmraPnoa7nmoTmj4/ov7BcclxuICAgICAgaWYodGhpcy5ncm91cEVudW0ubGVuZ3RoPjApe1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmdyb3VwRW51bS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBpZihyZXNkYXRhW2ldLmdyb3VwID09PSB0aGlzLmdyb3VwRW51bVtqXS52YWx1ZSl7XHJcbiAgICAgICAgICAgICAgcmVzZGF0YVtpXS5ncm91cCA9IHRoaXMuZ3JvdXBFbnVtW2pdLnRleHRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLnRleHRFbnVtLmxlbmd0aD4wKXtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy50ZXh0RW51bS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBpZihyZXNkYXRhW2ldLnRleHQgPT09IHRoaXMudGV4dEVudW1bal0udmFsdWUpe1xyXG4gICAgICAgICAgICAgIHJlc2RhdGFbaV0udGV4dCA9IHRoaXMudGV4dEVudW1bal0udGV4dFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBuZWVkQ2F0ZWdvcmllcyA9IGZhbHNlO1xyXG4gICAgICBsZXQgdG1wRGF0YSA9IHtjYXRlZ29yaWVzOltdLCBzZXJpZXM6W119XHJcbiAgICAgIGxldCB0bXBjYXRlZ29yaWVzID0gW11cclxuICAgICAgbGV0IHRtcHNlcmllcyA9IFtdO1xyXG4gICAgICAvL+aLvOaOpWNhdGVnb3JpZXNcclxuICAgICAgaWYodGhpcy5lY2hhcnRzID09PSB0cnVlKXtcclxuICAgICAgICBuZWVkQ2F0ZWdvcmllcyA9IGNmZS5jYXRlZ29yaWVzLmluY2x1ZGVzKHRoaXMudHlwZSlcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgbmVlZENhdGVnb3JpZXMgPSBjZnUuY2F0ZWdvcmllcy5pbmNsdWRlcyh0aGlzLnR5cGUpXHJcbiAgICAgIH1cclxuICAgICAgaWYobmVlZENhdGVnb3JpZXMgPT09IHRydWUpe1xyXG4gICAgICAgIC8v5aaC5p6ccHJvcHPkuK3nmoRjaGFydERhdGHluKbmnIljYXRlZ29yaWVz77yM5YiZ5LyY5YWI5L2/55SoY2hhcnREYXRh55qEY2F0ZWdvcmllc1xyXG4gICAgICAgIGlmKHRoaXMuY2hhcnREYXRhICYmIHRoaXMuY2hhcnREYXRhLmNhdGVnb3JpZXMgJiYgdGhpcy5jaGFydERhdGEuY2F0ZWdvcmllcy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICB0bXBjYXRlZ29yaWVzID0gdGhpcy5jaGFydERhdGEuY2F0ZWdvcmllc1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgLy/lpoLmnpzmmK/ml6XmnJ/nsbvlnovnmoTmlbDmja7vvIzkuI3nrqHmmK/mnKzlnLDmlbDmja7ov5jmmK/kupHmlbDmja7vvIzpg73mjInotbfmraLml6XmnJ/oh6rliqjmi7zmjqVjYXRlZ29yaWVzXHJcbiAgICAgICAgICBpZih0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpe1xyXG4gICAgICAgICAgICBsZXQgaWRhdGUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSlcclxuICAgICAgICAgICAgbGV0IGVkYXRlID0gbmV3IERhdGUodGhpcy5lbmREYXRlKVxyXG4gICAgICAgICAgICB3aGlsZSAoaWRhdGUgPD0gZWRhdGUpIHtcclxuICAgICAgICAgICAgXHR0bXBjYXRlZ29yaWVzLnB1c2goZ2V0Rm9ybWF0RGF0ZShpZGF0ZSkpXHJcbiAgICAgICAgICAgIFx0aWRhdGUgPSBpZGF0ZS5zZXREYXRlKGlkYXRlLmdldERhdGUoKSArIDEpXHJcbiAgICAgICAgICAgIFx0aWRhdGUgPSBuZXcgRGF0ZShpZGF0ZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgLy/lkKbliJnku47nu5PmnpzkuK3ljrvph43lubbmi7zmjqVjYXRlZ29yaWVzXHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgbGV0IHRlbXBja2V5ID0ge307XHJcbiAgICAgICAgICAgIHJlc2RhdGEubWFwKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0udGV4dCAhPSB1bmRlZmluZWQgJiYgIXRlbXBja2V5W2l0ZW0udGV4dF0pIHtcclxuICAgICAgICAgICAgICAgIHRtcGNhdGVnb3JpZXMucHVzaChpdGVtLnRleHQpXHJcbiAgICAgICAgICAgICAgICB0ZW1wY2tleVtpdGVtLnRleHRdID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRtcERhdGEuY2F0ZWdvcmllcyA9IHRtcGNhdGVnb3JpZXNcclxuICAgICAgfVxyXG4gICAgICAvL+aLvOaOpXNlcmllc1xyXG4gICAgICBsZXQgdGVtcHNrZXkgPSB7fTtcclxuICAgICAgcmVzZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBpZiAoaXRlbS5ncm91cCAhPSB1bmRlZmluZWQgJiYgIXRlbXBza2V5W2l0ZW0uZ3JvdXBdKSB7XHJcbiAgICAgICAgICB0bXBzZXJpZXMucHVzaCh7IG5hbWU6IGl0ZW0uZ3JvdXAsIGRhdGE6IFtdIH0pO1xyXG4gICAgICAgICAgdGVtcHNrZXlbaXRlbS5ncm91cF0gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIC8v5aaC5p6c5rKh5pyJ6I635Y+W5Yiw5YiG57uE5ZCN56ewKOWPr+iDveaYr+W4pmNhdGVnb3JpZXPnmoTmlbDmja7vvIzkuZ/lj6/og73mmK/kuI3luKbnmoTppbzlm77nsbspXHJcbiAgICAgIGlmICh0bXBzZXJpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICB0bXBzZXJpZXMgPSBbeyBuYW1lOiAn6buY6K6k5YiG57uEJywgZGF0YTogW10gfV07XHJcbiAgICAgICAgLy/lpoLmnpzmmK/pnIDopoFjYXRlZ29yaWVz55qE5Zu+6KGo57G75Z6LXHJcbiAgICAgICAgaWYobmVlZENhdGVnb3JpZXMgPT09IHRydWUpe1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0bXBjYXRlZ29yaWVzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGxldCBzZXJpZXNkYXRhID0gMDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc2RhdGFbaV0udGV4dCA9PSB0bXBjYXRlZ29yaWVzW2pdKSB7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXNkYXRhID0gcmVzZGF0YVtpXS52YWx1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG1wc2VyaWVzWzBdLmRhdGEucHVzaChzZXJpZXNkYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAvL+WmguaenOaYr+mlvOWbvuexu+eahOWbvuihqOexu+Wei1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRtcHNlcmllc1swXS5kYXRhLnB1c2goe1wibmFtZVwiOiByZXNkYXRhW2ldLnRleHQsXCJ2YWx1ZVwiOiByZXNkYXRhW2ldLnZhbHVlfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAvL+WmguaenOacieWIhue7hOWQjVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgdG1wc2VyaWVzLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgICAgICAvL+WmguaenOaciWNhdGVnb3JpZXNcclxuICAgICAgICAgIGlmICh0bXBjYXRlZ29yaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0bXBjYXRlZ29yaWVzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHNlcmllc2RhdGEgPSAwO1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRtcHNlcmllc1trXS5uYW1lID09IHJlc2RhdGFbaV0uZ3JvdXAgJiYgcmVzZGF0YVtpXS50ZXh0ID09IHRtcGNhdGVnb3JpZXNbal0pIHtcclxuICAgICAgICAgICAgICAgICAgc2VyaWVzZGF0YSA9IHJlc2RhdGFbaV0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRtcHNlcmllc1trXS5kYXRhLnB1c2goc2VyaWVzZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIC8v5aaC5p6c5Lyg5LqGZ3JvdXDogIzmsqHmnInkvKB0ZXh077yM5Y2z5rKh5pyJY2F0ZWdvcmllc++8iOato+W4uOaDheWGteS4i+i/meenjeaVsOaNruaYr+S4jeespuWQiOaVsOaNruimgeaxguinhOiMg+eahO+8iVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRtcHNlcmllc1trXS5uYW1lID09IHJlc2RhdGFbaV0uZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgIHRtcHNlcmllc1trXS5kYXRhLnB1c2gocmVzZGF0YVtpXS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRtcERhdGEuc2VyaWVzID0gdG1wc2VyaWVzXHJcbiAgICAgIC8v5ou36LSd5LiA5LiLY2hhcnREYXRh77yM5Li65LqGb3B0c+WPmOabtOWQjue7n+S4gOaVsOaNruadpea6kFxyXG4gICAgICB0aGlzLmRyYXdEYXRhID0gZGVlcENsb25lQXNzaWduKHt9LCB0bXBEYXRhKTtcclxuICAgICAgdGhpcy5jaGVja0RhdGEodG1wRGF0YSlcclxuICAgIH0sXHJcbiAgICByZWxvYWRpbmcoKSB7XHJcbiAgICAgIGlmKHRoaXMuZXJyb3JSZWxvYWQgPT09IGZhbHNlKXtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5jb2xsZWN0aW9uICE9PSAnJykge1xyXG4gICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25NaXhpbkRhdGFjb21Qcm9wc0NoYW5nZSh0cnVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmJlZm9yZUluaXQoKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNoZWNrRGF0YShhbnlEYXRhKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLmNpZFxyXG4gICAgICAvL+WkjeS9jW9wdHPmiJZlb3B0c1xyXG4gICAgICBpZih0aGlzLmVjaGFydHMgPT09IHRydWUpe1xyXG4gICAgICAgIGNmZS5vcHRpb25bY2lkXSA9IGRlZXBDbG9uZUFzc2lnbih7fSwgdGhpcy5lb3B0cyk7XHJcbiAgICAgICAgY2ZlLm9wdGlvbltjaWRdLmlkID0gY2lkO1xyXG4gICAgICAgIGNmZS5vcHRpb25bY2lkXS50eXBlID0gdGhpcy50eXBlO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZiAodGhpcy50eXBlICYmIGNmdS50eXBlLmluY2x1ZGVzKHRoaXMudHlwZSkpIHtcclxuICAgICAgICAgIGNmdS5vcHRpb25bY2lkXSA9IGRlZXBDbG9uZUFzc2lnbih7fSwgY2Z1W3RoaXMudHlwZV0sIHRoaXMub3B0cyk7XHJcbiAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY2FudmFzSWQgPSBjaWQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gJ+WPguaVsOmUmeivr++8mnByb3Bz5Y+C5pWw5LitdHlwZeexu+Wei+S4jeato+ehric7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8v5oyC6L29Y2F0ZWdvcmllc+WSjHNlcmllc1xyXG4gICAgICBsZXQgbmV3RGF0YSA9IGRlZXBDbG9uZUFzc2lnbih7fSwgYW55RGF0YSk7XHJcbiAgICAgIGlmIChuZXdEYXRhLnNlcmllcyAhPT0gdW5kZWZpbmVkICYmIG5ld0RhdGEuc2VyaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuZWNoYXJ0cyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLmNoYXJ0RGF0YSA9IG5ld0RhdGE7XHJcbiAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKT0+e1xyXG4gICAgICAgICAgICB0aGlzLmluaXQoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jYXRlZ29yaWVzID0gbmV3RGF0YS5jYXRlZ29yaWVzO1xyXG4gICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLnNlcmllcyA9IG5ld0RhdGEuc2VyaWVzO1xyXG4gICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCk9PntcclxuICAgICAgICAgICAgdGhpcy5pbml0KClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgcmVzaXplSGFuZGxlcigpIHtcclxuICAgICAgLy/muLLmn5PpmLLmipZcclxuICAgICAgbGV0IGN1cnJUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgbGV0IGxhc3REcmF3VGltZSA9IHRoaXMubGFzdERyYXdUaW1lP3RoaXMubGFzdERyYXdUaW1lOmN1cnJUaW1lLTMwMDA7XHJcbiAgICAgIGxldCBkdXJhdGlvbiA9IGN1cnJUaW1lIC0gbGFzdERyYXdUaW1lO1xyXG4gICAgICBpZiAoZHVyYXRpb24gPCAxMDAwKSByZXR1cm47XHJcbiAgICAgIGxldCBjaGFydGRvbSA9IHVuaVxyXG4gICAgICAgIC5jcmVhdGVTZWxlY3RvclF1ZXJ5KClcclxuICAgICAgICAvLyAjaWZuZGVmIE1QLUFMSVBBWVxyXG4gICAgICAgIC5pbih0aGlzKVxyXG4gICAgICAgIC8vICNlbmRpZlxyXG4gICAgICAgIC5zZWxlY3QoJyNDaGFydEJveElkJyt0aGlzLmNpZClcclxuICAgICAgICAuYm91bmRpbmdDbGllbnRSZWN0KGRhdGEgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGRhdGEud2lkdGggPiAwICYmIGRhdGEuaGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICBpZiAoZGF0YS53aWR0aCAhPT0gdGhpcy5jV2lkdGggfHwgZGF0YS5oZWlnaHQgIT09IHRoaXMuY0hlaWdodCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tEYXRhKHRoaXMuZHJhd0RhdGEpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5leGVjKCk7XHJcbiAgICB9LFxyXG4gICAgZ2V0Q2xvdWREYXRhKCkge1xyXG4gICAgICBpZiAodGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID09IHRydWUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5taXhpbkRhdGFjb21HZXQoKVxyXG4gICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbVJlc0RhdGEgPSByZXMucmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICB0aGlzLmxvY2FsZGF0YUluaXQodGhpcy5taXhpbkRhdGFjb21SZXNEYXRhKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSAn6K+35rGC6ZSZ6K+v77yaJyArIGVycjtcclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBvbk1peGluRGF0YWNvbVByb3BzQ2hhbmdlKG5lZWRSZXNldCwgY2hhbmdlZCkge1xyXG4gICAgICBpZiAobmVlZFJlc2V0ID09IHRydWUgJiYgdGhpcy5jb2xsZWN0aW9uICE9PSAnJykge1xyXG4gICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2NsZWFyQ2hhcnQoKTtcclxuICAgICAgICB0aGlzLmdldENsb3VkRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgX2NsZWFyQ2hhcnQoKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLmNpZFxyXG4gICAgICBpZiAodGhpcy5lY2hhcnRzICE9PSB0cnVlICYmIGNmdS5vcHRpb25bY2lkXSAmJiBjZnUub3B0aW9uW2NpZF0uY29udGV4dCkge1xyXG4gICAgICAgIGNvbnN0IGN0eCA9IGNmdS5vcHRpb25bY2lkXS5jb250ZXh0O1xyXG4gICAgICAgIGlmKHR5cGVvZiBjdHggPT09IFwib2JqZWN0XCIgJiYgISEhY2Z1Lm9wdGlvbltjaWRdLnVwZGF0ZSl7XHJcbiAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuY1dpZHRoKnRoaXMucGl4ZWwsIHRoaXMuY0hlaWdodCp0aGlzLnBpeGVsKTtcclxuICAgICAgICAgIGN0eC5kcmF3KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgaW5pdCgpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2lkXHJcbiAgICAgIGxldCBjaGFydGRvbSA9IHVuaVxyXG4gICAgICAgIC5jcmVhdGVTZWxlY3RvclF1ZXJ5KClcclxuICAgICAgICAvLyAjaWZuZGVmIE1QLUFMSVBBWVxyXG4gICAgICAgIC5pbih0aGlzKVxyXG4gICAgICAgIC8vICNlbmRpZlxyXG4gICAgICAgIC5zZWxlY3QoJyNDaGFydEJveElkJytjaWQpXHJcbiAgICAgICAgLmJvdW5kaW5nQ2xpZW50UmVjdChkYXRhID0+IHtcclxuICAgICAgICAgIGlmIChkYXRhLndpZHRoID4gMCAmJiBkYXRhLmhlaWdodCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5sYXN0RHJhd1RpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICB0aGlzLmNXaWR0aCA9IGRhdGEud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMuY0hlaWdodCA9IGRhdGEuaGVpZ2h0O1xyXG4gICAgICAgICAgICBpZih0aGlzLmVjaGFydHMgIT09IHRydWUpe1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5iYWNrZ3JvdW5kID0gdGhpcy5iYWNrZ3JvdW5kID09ICdyZ2JhKDAsMCwwLDApJyA/ICcjRkZGRkZGJyA6IHRoaXMuYmFja2dyb3VuZDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY2FudmFzMmQgPSB0aGlzLnR5cGUyZDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ucGl4ZWxSYXRpbyA9IHRoaXMucGl4ZWw7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS53aWR0aCA9IGRhdGEud2lkdGggKiB0aGlzLnBpeGVsO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5oZWlnaHQgPSBkYXRhLmhlaWdodCAqIHRoaXMucGl4ZWw7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLm9uem9vbSA9IHRoaXMub256b29tO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5vbnRhcCA9IHRoaXMub250YXA7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLm9udG91Y2ggPSB0aGlzLm9udG91Y2g7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLm9ubW91c2UgPSB0aGlzLm9wZW5tb3VzZTtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ub25tb3ZldGlwID0gdGhpcy5vbm1vdmV0aXA7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBTaG93ID0gdGhpcy50b29sdGlwU2hvdztcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdCA9IHRoaXMudG9vbHRpcEZvcm1hdDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0udG9vbHRpcEN1c3RvbSA9IHRoaXMudG9vbHRpcEN1c3RvbTtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uaW5TY3JvbGxWaWV3ID0gdGhpcy5pblNjcm9sbFZpZXc7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmxhc3REcmF3VGltZSA9IHRoaXMubGFzdERyYXdUaW1lO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS50YXBMZWdlbmQgPSB0aGlzLnRhcExlZ2VuZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+WmguaenOaYr0g15oiW6ICFQXBw56uv77yM6YeH55SocmVuZGVyanPmuLLmn5Plm77ooahcclxuICAgICAgICAgICAgaWYgKHRoaXMuaW5INSB8fCB0aGlzLmluQXBwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZWNoYXJ0cyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBjZmUub3B0aW9uW2NpZF0ub250YXAgPSB0aGlzLm9udGFwO1xyXG4gICAgICAgICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLm9ubW91c2UgPSB0aGlzLm9wZW5tb3VzZTtcclxuICAgICAgICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS50b29sdGlwU2hvdyA9IHRoaXMudG9vbHRpcFNob3c7XHJcbiAgICAgICAgICAgICAgICBjZmUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdCA9IHRoaXMudG9vbHRpcEZvcm1hdDtcclxuICAgICAgICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS50b29sdGlwQ3VzdG9tID0gdGhpcy50b29sdGlwQ3VzdG9tO1xyXG4gICAgICAgICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLmxhc3REcmF3VGltZSA9IHRoaXMubGFzdERyYXdUaW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lY2hhcnRzT3B0cyA9IGRlZXBDbG9uZUFzc2lnbih7fSwgY2ZlLm9wdGlvbltjaWRdKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLnJvdGF0ZUxvY2sgPSBjZnUub3B0aW9uW2NpZF0ucm90YXRlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51Y2hhcnRzT3B0cyA9IGRlZXBDbG9uZUFzc2lnbih7fSwgY2Z1Lm9wdGlvbltjaWRdKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v5aaC5p6c5piv5bCP56iL5bqP56uv77yM6YeH55SodUNoYXJ0c+a4suafk1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXSA9IGZvcm1hdHRlckFzc2lnbihjZnUub3B0aW9uW2NpZF0sY2Z1LmZvcm1hdHRlcilcclxuICAgICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpPT57XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlMmQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLmluKHRoaXMpXHJcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgLnNlbGVjdCgnIycgKyBjaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpZWxkcyh7IG5vZGU6IHRydWUsIHNpemU6IHRydWUgfSlcclxuICAgICAgICAgICAgICAgICAgICAuZXhlYyhyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc1swXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW52YXMgPSByZXNbMF0ubm9kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0ID0gY3R4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ucm90YXRlTG9jayA9IGNmdS5vcHRpb25bY2lkXS5yb3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNmdS5pbnN0YW5jZVtjaWRdICYmIGNmdS5vcHRpb25bY2lkXSAmJiBjZnUub3B0aW9uW2NpZF0udXBkYXRlID09PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGFVQ2hhcnQoY2lkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggPSBkYXRhLndpZHRoICogdGhpcy5waXhlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQgKiB0aGlzLnBpeGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fd2lkdGggPSBkYXRhLndpZHRoICogdGhpcy5waXhlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuX2hlaWdodCA9IGRhdGEuaGVpZ2h0ICogdGhpcy5waXhlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dC5zYXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXdDaGFydChjaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwxMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gJ+WPguaVsOmUmeivr++8muW8gOWQrzJk5qih5byP5ZCO77yM5pyq6I635Y+W5YiwZG9t6IqC54K577yMY2FudmFzLWlkOicgKyBjaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBpZih0aGlzLmluQWxpKXtcclxuICAgICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ucm90YXRlTG9jayA9IGNmdS5vcHRpb25bY2lkXS5yb3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQgPSB1bmkuY3JlYXRlQ2FudmFzQ29udGV4dChjaWQsIHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICBpZihjZnUuaW5zdGFuY2VbY2lkXSAmJiBjZnUub3B0aW9uW2NpZF0gJiYgY2Z1Lm9wdGlvbltjaWRdLnVwZGF0ZSA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRhVUNoYXJ0KGNpZClcclxuICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQucmVzdG9yZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQuc2F2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV3Q2hhcnQoY2lkKVxyXG4gICAgICAgICAgICAgICAgICAgIH0sMTAwKVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2hvdyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSAn5biD5bGA6ZSZ6K+v77ya5pyq6I635Y+W5Yiw54i25YWD57Sg5a696auY5bC65a+477yBY2FudmFzLWlkOicgKyBjaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5leGVjKCk7XHJcbiAgICB9LFxyXG4gICAgc2F2ZUltYWdlKCl7XHJcbiAgICBcdHVuaS5jYW52YXNUb1RlbXBGaWxlUGF0aCh7XHJcbiAgICBcdCAgY2FudmFzSWQ6IHRoaXMuY2lkLFxyXG4gICAgXHQgIHN1Y2Nlc3M6IHJlcz0+e1xyXG4gICAgXHQgICAgLy8jaWZkZWYgSDVcclxuICAgIFx0XHRcdHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICBcdFx0XHRhLmhyZWYgPSByZXMudGVtcEZpbGVQYXRoO1xyXG4gICAgXHRcdFx0YS5kb3dubG9hZCA9IHRoaXMuY2lkO1xyXG4gICAgXHRcdFx0YS50YXJnZXQgPSAnX2JsYW5rJ1xyXG4gICAgXHRcdFx0YS5jbGljaygpO1xyXG4gICAgXHQgICAgLy8jZW5kaWZcclxuICAgIFx0ICAgIC8vI2lmbmRlZiBINVxyXG4gICAgXHQgICAgICB1bmkuc2F2ZUltYWdlVG9QaG90b3NBbGJ1bSh7XHJcbiAgICAgICAgICAgICAgZmlsZVBhdGg6IHJlcy50ZW1wRmlsZVBhdGgsXHJcbiAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdW5pLnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5L+d5a2Y5oiQ5YqfJyxcclxuICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgIFx0ICAgICAgfSk7XHJcbiAgICBcdCAgICAvLyNlbmRpZlxyXG4gICAgXHQgIH0gXHJcbiAgICBcdH0sdGhpcyk7XHJcbiAgICB9LFxyXG4gICAgZ2V0SW1hZ2UoKXtcclxuICAgICAgaWYodGhpcy50eXBlMmQgPT0gZmFsc2Upe1xyXG4gICAgICAgIHVuaS5jYW52YXNUb1RlbXBGaWxlUGF0aCh7XHJcbiAgICAgICAgICBjYW52YXNJZDogdGhpcy5jaWQsXHJcbiAgICAgICAgICBzdWNjZXNzOiByZXM9PntcclxuICAgICAgICAgICAgdGhpcy5lbWl0TXNnKHtuYW1lOiAnZ2V0SW1hZ2UnLCBwYXJhbXM6IHt0eXBlOlwiZ2V0SW1hZ2VcIiwgYmFzZTY0OiByZXMudGVtcEZpbGVQYXRofX0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sdGhpcyk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gdW5pLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKS5pbih0aGlzKVxyXG4gICAgICAgIHF1ZXJ5XHJcbiAgICAgICAgICAuc2VsZWN0KCcjJyArIHRoaXMuY2lkKVxyXG4gICAgICAgICAgLmZpZWxkcyh7IG5vZGU6IHRydWUsIHNpemU6IHRydWUgfSlcclxuICAgICAgICAgIC5leGVjKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXNbMF0pIHtcclxuICAgICAgICAgICAgICBjb25zdCBjYW52YXMgPSByZXNbMF0ubm9kZTtcclxuICAgICAgICAgICAgICB0aGlzLmVtaXRNc2coe25hbWU6ICdnZXRJbWFnZScsIHBhcmFtczoge3R5cGU6XCJnZXRJbWFnZVwiLCBiYXNlNjQ6IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpfX0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vICNpZm5kZWYgQVBQLVZVRSB8fCBINVxyXG4gICAgX25ld0NoYXJ0KGNpZCkge1xyXG4gICAgICBpZiAodGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID09IHRydWUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93Y2hhcnQgPSB0cnVlO1xyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXSA9IG5ldyB1Q2hhcnRzKGNmdS5vcHRpb25bY2lkXSk7XHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmFkZEV2ZW50TGlzdGVuZXIoJ3JlbmRlckNvbXBsZXRlJywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ2NvbXBsZXRlJywgcGFyYW1zOiB7dHlwZTpcImNvbXBsZXRlXCIsIGNvbXBsZXRlOiB0cnVlLCBpZDogY2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pO1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmRlbEV2ZW50TGlzdGVuZXIoJ3JlbmRlckNvbXBsZXRlJylcclxuICAgICAgfSk7XHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbExlZnQnLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbWl0TXNnKHtuYW1lOiAnc2Nyb2xsTGVmdCcsIHBhcmFtczoge3R5cGU6XCJzY3JvbGxMZWZ0XCIsIHNjcm9sbExlZnQ6IHRydWUsIGlkOiBjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGxSaWdodCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLmVtaXRNc2coe25hbWU6ICdzY3JvbGxSaWdodCcsIHBhcmFtczoge3R5cGU6XCJzY3JvbGxSaWdodFwiLCBzY3JvbGxSaWdodDogdHJ1ZSwgaWQ6IGNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KTtcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgX3VwZGF0YVVDaGFydChjaWQpIHtcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0udXBkYXRlRGF0YShjZnUub3B0aW9uW2NpZF0pXHJcbiAgICB9LFxyXG4gICAgX3Rvb2x0aXBEZWZhdWx0KGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cykge1xyXG4gICAgICBpZiAoY2F0ZWdvcnkpIHtcclxuICAgICAgICBsZXQgZGF0YSA9IGl0ZW0uZGF0YVxyXG4gICAgICAgIGlmKHR5cGVvZiBpdGVtLmRhdGEgPT09IFwib2JqZWN0XCIpe1xyXG4gICAgICAgICAgZGF0YSA9IGl0ZW0uZGF0YS52YWx1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2F0ZWdvcnkgKyAnICcgKyBpdGVtLm5hbWUgKyAnOicgKyBkYXRhO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpdGVtLnByb3BlcnRpZXMgJiYgaXRlbS5wcm9wZXJ0aWVzLm5hbWUpIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLnByb3BlcnRpZXMubmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZSArICc6JyArIGl0ZW0uZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBfc2hvd1Rvb2x0aXAoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5jaWRcclxuICAgICAgbGV0IHRjID0gY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBDdXN0b21cclxuICAgICAgaWYgKHRjICYmIHRjICE9PSB1bmRlZmluZWQgJiYgdGMgIT09IG51bGwpIHtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0Yy54ID49IDAgJiYgdGMueSA+PSAwKSB7XHJcbiAgICAgICAgICBvZmZzZXQgPSB7IHg6IHRjLngsIHk6IHRjLnkgKyAxMCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zaG93VG9vbFRpcChlLCB7XHJcbiAgICAgICAgICBpbmRleDogdGMuaW5kZXgsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcclxuICAgICAgICAgIHRleHRMaXN0OiB0Yy50ZXh0TGlzdCxcclxuICAgICAgICAgIGZvcm1hdHRlcjogKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cykgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0ID09PSAnc3RyaW5nJyAmJiBjZnUuZm9ybWF0dGVyW2NmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0XSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBjZnUuZm9ybWF0dGVyW2NmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0XShpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLl90b29sdGlwRGVmYXVsdChpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uc2hvd1Rvb2xUaXAoZSwge1xyXG4gICAgICAgICAgZm9ybWF0dGVyOiAoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXQgPT09ICdzdHJpbmcnICYmIGNmdS5mb3JtYXR0ZXJbY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXRdKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNmdS5mb3JtYXR0ZXJbY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXRdKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXBEZWZhdWx0KGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIF90YXAoZSxtb3ZlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLmNpZFxyXG4gICAgICBsZXQgY3VycmVudEluZGV4ID0gbnVsbDtcclxuICAgICAgbGV0IGxlZ2VuZEluZGV4ID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuaW5TY3JvbGxWaWV3ID09PSB0cnVlIHx8IHRoaXMuaW5BbGkpIHtcclxuICAgICAgICBsZXQgY2hhcnRkb20gPSB1bmlcclxuICAgICAgICAgIC5jcmVhdGVTZWxlY3RvclF1ZXJ5KClcclxuICAgICAgICAgIC8vICNpZm5kZWYgTVAtQUxJUEFZXHJcbiAgICAgICAgICAuaW4odGhpcylcclxuICAgICAgICAgIC5zZWxlY3QoJyNDaGFydEJveElkJytjaWQpXHJcbiAgICAgICAgICAvLyAjZW5kaWZcclxuICAgICAgICAgIC8vICNpZmRlZiBNUC1BTElQQVlcclxuICAgICAgICAgIC5zZWxlY3QoJyMnK3RoaXMuY2lkKVxyXG4gICAgICAgICAgLy8gI2VuZGlmXHJcbiAgICAgICAgICAuYm91bmRpbmdDbGllbnRSZWN0KGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBlLmNoYW5nZWRUb3VjaGVzPVtdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pbkFsaSkge1xyXG4gICAgICAgICAgICAgIGUuY2hhbmdlZFRvdWNoZXMudW5zaGlmdCh7IHg6IGUuZGV0YWlsLmNsaWVudFggLSBkYXRhLmxlZnQsIHk6IGUuZGV0YWlsLmNsaWVudFkgLSBkYXRhLnRvcH0pO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICBlLmNoYW5nZWRUb3VjaGVzLnVuc2hpZnQoeyB4OiBlLmRldGFpbC54IC0gZGF0YS5sZWZ0LCB5OiBlLmRldGFpbC55IC0gZGF0YS50b3AgLSB0aGlzLnBhZ2VTY3JvbGxUb3B9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihtb3ZlKXtcclxuICAgICAgICAgICAgICBpZiAodGhpcy50b29sdGlwU2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAoZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICBjdXJyZW50SW5kZXggPSBjZnUuaW5zdGFuY2VbY2lkXS5nZXRDdXJyZW50RGF0YUluZGV4KGUpO1xyXG4gICAgICAgICAgICAgIGxlZ2VuZEluZGV4ID0gY2Z1Lmluc3RhbmNlW2NpZF0uZ2V0TGVnZW5kRGF0YUluZGV4KGUpO1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMudGFwTGVnZW5kID09PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnRvdWNoTGVnZW5kKGUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy50b29sdGlwU2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAoZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ2dldEluZGV4JywgcGFyYW1zOiB7IHR5cGU6XCJnZXRJbmRleFwiLCBldmVudDp7IHg6IGUuZGV0YWlsLnggLSBkYXRhLmxlZnQsIHk6IGUuZGV0YWlsLnkgLSBkYXRhLnRvcCB9LCBjdXJyZW50SW5kZXg6IGN1cnJlbnRJbmRleCwgbGVnZW5kSW5kZXg6IGxlZ2VuZEluZGV4LCBpZDogY2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmV4ZWMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZihtb3ZlKXtcclxuICAgICAgICAgIGlmICh0aGlzLnRvb2x0aXBTaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Nob3dUb29sdGlwKGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgZS5jaGFuZ2VkVG91Y2hlcz1bXTtcclxuICAgICAgICAgIGUuY2hhbmdlZFRvdWNoZXMudW5zaGlmdCh7IHg6IGUuZGV0YWlsLnggLSBlLmN1cnJlbnRUYXJnZXQub2Zmc2V0TGVmdCwgeTogZS5kZXRhaWwueSAtIGUuY3VycmVudFRhcmdldC5vZmZzZXRUb3AgfSk7XHJcbiAgICAgICAgICBjdXJyZW50SW5kZXggPSBjZnUuaW5zdGFuY2VbY2lkXS5nZXRDdXJyZW50RGF0YUluZGV4KGUpO1xyXG4gICAgICAgICAgbGVnZW5kSW5kZXggPSBjZnUuaW5zdGFuY2VbY2lkXS5nZXRMZWdlbmREYXRhSW5kZXgoZSk7XHJcbiAgICAgICAgICBpZih0aGlzLnRhcExlZ2VuZCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnRvdWNoTGVnZW5kKGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMudG9vbHRpcFNob3cgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAoZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmVtaXRNc2coe25hbWU6ICdnZXRJbmRleCcsIHBhcmFtczoge3R5cGU6XCJnZXRJbmRleFwiLCBldmVudDp7IHg6IGUuZGV0YWlsLngsIHk6IGUuZGV0YWlsLnkgLSBlLmN1cnJlbnRUYXJnZXQub2Zmc2V0VG9wIH0sIGN1cnJlbnRJbmRleDogY3VycmVudEluZGV4LCBsZWdlbmRJbmRleDogbGVnZW5kSW5kZXgsIGlkOiBjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgX3RvdWNoU3RhcnQoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5jaWRcclxuICAgICAgbGFzdE1vdmVUaW1lPURhdGUubm93KCk7XHJcbiAgICAgIGlmKGNmdS5vcHRpb25bY2lkXS5lbmFibGVTY3JvbGwgPT09IHRydWUgJiYgZS50b3VjaGVzLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zY3JvbGxTdGFydChlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVtaXRNc2coe25hbWU6J2dldFRvdWNoU3RhcnQnLCBwYXJhbXM6e3R5cGU6XCJ0b3VjaFN0YXJ0XCIsIGV2ZW50OmUuY2hhbmdlZFRvdWNoZXNbMF0sIGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KTtcclxuICAgIH0sXHJcbiAgICBfdG91Y2hNb3ZlKGUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2lkXHJcbiAgICAgIGxldCBjdXJyTW92ZVRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICBsZXQgZHVyYXRpb24gPSBjdXJyTW92ZVRpbWUgLSBsYXN0TW92ZVRpbWU7XHJcbiAgICAgIGxldCB0b3VjaE1vdmVMaW1pdCA9IGNmdS5vcHRpb25bY2lkXS50b3VjaE1vdmVMaW1pdCB8fCAyNDtcclxuICAgICAgaWYgKGR1cmF0aW9uIDwgTWF0aC5mbG9vcigxMDAwIC8gdG91Y2hNb3ZlTGltaXQpKSByZXR1cm47Ly/mr4/np5I2MOW4p1xyXG4gICAgICBsYXN0TW92ZVRpbWUgPSBjdXJyTW92ZVRpbWU7XHJcbiAgICAgIGlmKGNmdS5vcHRpb25bY2lkXS5lbmFibGVTY3JvbGwgPT09IHRydWUgJiYgZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggPT0gMSl7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uc2Nyb2xsKGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMub250YXAgPT09IHRydWUgJiYgY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gZmFsc2UgJiYgdGhpcy5vbm1vdmV0aXAgPT09IHRydWUpe1xyXG4gICAgICAgIHRoaXMuX3RhcChlLHRydWUpXHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5vbnRvdWNoID09PSB0cnVlICYmIGNmdS5vcHRpb25bY2lkXS5lbmFibGVTY3JvbGwgPT09IHRydWUgJiYgdGhpcy5vbnpvb20gPT09IHRydWUgJiYgZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggPT0gMil7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uZG9idWxlWm9vbShlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVtaXRNc2coe25hbWU6ICdnZXRUb3VjaE1vdmUnLCBwYXJhbXM6IHt0eXBlOlwidG91Y2hNb3ZlXCIsIGV2ZW50OmUuY2hhbmdlZFRvdWNoZXNbMF0sIGlkOiBjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSk7XHJcbiAgICB9LFxyXG4gICAgX3RvdWNoRW5kKGUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2lkXHJcbiAgICAgIGlmKGNmdS5vcHRpb25bY2lkXS5lbmFibGVTY3JvbGwgPT09IHRydWUgJiYgZS50b3VjaGVzLmxlbmd0aCA9PSAwKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zY3JvbGxFbmQoZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbWl0TXNnKHtuYW1lOidnZXRUb3VjaEVuZCcsIHBhcmFtczp7dHlwZTpcInRvdWNoRW5kXCIsIGV2ZW50OmUuY2hhbmdlZFRvdWNoZXNbMF0sIGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KTtcclxuICAgICAgaWYodGhpcy5vbnRhcCA9PT0gdHJ1ZSAmJiBjZnUub3B0aW9uW2NpZF0uZW5hYmxlU2Nyb2xsID09PSBmYWxzZSAmJiB0aGlzLm9ubW92ZXRpcCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5fdGFwKGUsdHJ1ZSlcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vICNlbmRpZlxyXG4gICAgX2Vycm9yKGUpIHtcclxuICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBlLmRldGFpbC5lcnJNc2c7XHJcbiAgICB9LFxyXG4gICAgZW1pdE1zZyhtc2cpIHtcclxuICAgICAgdGhpcy4kZW1pdChtc2cubmFtZSwgbXNnLnBhcmFtcyk7XHJcbiAgICB9LFxyXG4gICAgZ2V0UmVuZGVyVHlwZSgpIHtcclxuICAgICAgLy/pmLLmraLlpoLmnpzlvIDlkK9lY2hhcnRz5LiU54i25YWD57Sg5Li6di1pZueahOaDheWGtXJlbmRlcmpz55uR5ZCs5LiN5YiwcHJvcOWPmOWMlueahOmXrumimFxyXG4gICAgICBpZih0aGlzLmVjaGFydHM9PT10cnVlICYmIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZz09PWZhbHNlKXtcclxuICAgICAgICB0aGlzLmJlZm9yZUluaXQoKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgdG9KU09OKCl7XHJcbiAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcbiAgfVxyXG59O1xyXG48L3NjcmlwdD5cclxuXHJcbjwhLS0gI2lmZGVmIEFQUC1WVUUgfHwgSDUgLS0+XHJcbjxzY3JpcHQgbW9kdWxlPVwicmRjaGFydHNcIiBsYW5nPVwicmVuZGVyanNcIj5cclxuaW1wb3J0IHVDaGFydHNSRCBmcm9tICcuLi8uLi9qc19zZGsvdS1jaGFydHMvdS1jaGFydHMuanMnO1xyXG5pbXBvcnQgY2Z1IGZyb20gJy4uLy4uL2pzX3Nkay91LWNoYXJ0cy9jb25maWctdWNoYXJ0cy5qcyc7XHJcbmltcG9ydCBjZmUgZnJvbSAnLi4vLi4vanNfc2RrL3UtY2hhcnRzL2NvbmZpZy1lY2hhcnRzLmpzJztcclxuXHJcbnZhciB0aGF0ID0ge307XHJcbnZhciByb290ZG9tID0gbnVsbDtcclxuXHJcbmZ1bmN0aW9uIHJkZGVlcENsb25lQXNzaWduKG9yaWdpbiA9IHt9LCAuLi5hcmdzKSB7XHJcbiAgZm9yIChsZXQgaSBpbiBhcmdzKSB7XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gYXJnc1tpXSkge1xyXG4gICAgICBpZiAoYXJnc1tpXS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgb3JpZ2luW2tleV0gPSBhcmdzW2ldW2tleV0gJiYgdHlwZW9mIGFyZ3NbaV1ba2V5XSA9PT0gJ29iamVjdCcgPyByZGRlZXBDbG9uZUFzc2lnbihBcnJheS5pc0FycmF5KGFyZ3NbaV1ba2V5XSkgPyBbXSA6IHt9LCBvcmlnaW5ba2V5XSwgYXJnc1tpXVtrZXldKSA6IGFyZ3NbaV1ba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gb3JpZ2luO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZGZvcm1hdHRlckFzc2lnbihhcmdzLGZvcm1hdHRlcikge1xyXG4gIGZvciAobGV0IGtleSBpbiBhcmdzKSB7XHJcbiAgICBpZihhcmdzLmhhc093blByb3BlcnR5KGtleSkgJiYgYXJnc1trZXldICE9PSBudWxsICYmIHR5cGVvZiBhcmdzW2tleV0gPT09ICdvYmplY3QnKXtcclxuICAgICAgcmRmb3JtYXR0ZXJBc3NpZ24oYXJnc1trZXldLGZvcm1hdHRlcilcclxuICAgIH1lbHNlIGlmKGtleSA9PT0gJ2Zvcm1hdCcgJiYgdHlwZW9mIGFyZ3Nba2V5XSA9PT0gJ3N0cmluZycpe1xyXG4gICAgICBhcmdzWydmb3JtYXR0ZXInXSA9IGZvcm1hdHRlclthcmdzW2tleV1dID8gZm9ybWF0dGVyW2FyZ3Nba2V5XV0gOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBhcmdzO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHJpZDpudWxsXHJcbiAgICB9XHJcbiAgfSxcclxuICBtb3VudGVkKCkge1xyXG4gICAgcm9vdGRvbSA9IHt0b3A6MCxsZWZ0OjB9XHJcbiAgICAvLyAjaWZkZWYgSDVcclxuICAgIGxldCBkbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3VuaS1tYWluJylbMF1cclxuICAgIGlmKGRtID09PSB1bmRlZmluZWQpe1xyXG4gICAgICBkbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3VuaS1wYWdlLXdyYXBwZXInKVswXVxyXG4gICAgfVxyXG4gICAgcm9vdGRvbSA9IHt0b3A6ZG0ub2Zmc2V0VG9wLGxlZnQ6ZG0ub2Zmc2V0TGVmdH1cclxuICAgIC8vICNlbmRpZlxyXG4gICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICBpZih0aGlzLnJpZCA9PT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy4kb3duZXJJbnN0YW5jZSAmJiB0aGlzLiRvd25lckluc3RhbmNlLmNhbGxNZXRob2QoJ2dldFJlbmRlclR5cGUnKVxyXG4gICAgICB9XHJcbiAgICB9LDIwMClcclxuICB9LFxyXG4gIGRlc3Ryb3llZCgpe1xyXG4gICAgZGVsZXRlIGNmdS5vcHRpb25bdGhpcy5yaWRdXHJcbiAgICBkZWxldGUgY2Z1Lmluc3RhbmNlW3RoaXMucmlkXVxyXG4gICAgZGVsZXRlIGNmZS5vcHRpb25bdGhpcy5yaWRdXHJcbiAgICBkZWxldGUgY2ZlLmluc3RhbmNlW3RoaXMucmlkXVxyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgLy89PT09PT09PT09PT09PeS7peS4i+aYr0VDaGFydHPnmoTmlrnms5U9PT09PT09PT09PT09PT09PT09PVxyXG4gICAgZWNpbml0KG5ld1ZhbCwgb2xkVmFsLCBvd25lciwgaW5zdGFuY2Upe1xyXG4gICAgICBsZXQgY2lkID0gSlNPTi5zdHJpbmdpZnkobmV3VmFsLmlkKVxyXG4gICAgICB0aGlzLnJpZCA9IGNpZFxyXG4gICAgICB0aGF0W2NpZF0gPSB0aGlzLiRvd25lckluc3RhbmNlIHx8IGluc3RhbmNlXHJcbiAgICAgIGxldCBlb3B0cyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmV3VmFsKSlcclxuICAgICAgbGV0IHR5cGUgPSBlb3B0cy50eXBlO1xyXG4gICAgICAvL+i9veWFpeW5tuimhueblum7mOiupOmFjee9rlxyXG4gICAgICBpZiAodHlwZSAmJiBjZmUudHlwZS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICAgIGNmZS5vcHRpb25bY2lkXSA9IHJkZGVlcENsb25lQXNzaWduKHt9LCBjZmVbdHlwZV0sIGVvcHRzKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgY2ZlLm9wdGlvbltjaWRdID0gcmRkZWVwQ2xvbmVBc3NpZ24oe30sIGVvcHRzKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3RGF0YSA9IGVvcHRzLmNoYXJ0RGF0YTtcclxuICAgICAgaWYobmV3RGF0YSl7XHJcbiAgICAgICAgLy/mjILovb1jYXRlZ29yaWVz5ZKMc2VyaWVzXHJcbiAgICAgICAgaWYoY2ZlLm9wdGlvbltjaWRdLnhBeGlzICYmIGNmZS5vcHRpb25bY2lkXS54QXhpcy50eXBlICYmIGNmZS5vcHRpb25bY2lkXS54QXhpcy50eXBlID09PSAnY2F0ZWdvcnknKXtcclxuICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS54QXhpcy5kYXRhID0gbmV3RGF0YS5jYXRlZ29yaWVzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNmZS5vcHRpb25bY2lkXS55QXhpcyAmJiBjZmUub3B0aW9uW2NpZF0ueUF4aXMudHlwZSAmJiBjZmUub3B0aW9uW2NpZF0ueUF4aXMudHlwZSA9PT0gJ2NhdGVnb3J5Jyl7XHJcbiAgICAgICAgICBjZmUub3B0aW9uW2NpZF0ueUF4aXMuZGF0YSA9IG5ld0RhdGEuY2F0ZWdvcmllc1xyXG4gICAgICAgIH1cclxuICAgICAgICBjZmUub3B0aW9uW2NpZF0uc2VyaWVzID0gW11cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0RhdGEuc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBjZmUub3B0aW9uW2NpZF0uc2VyaWVzVGVtcGxhdGUgPSBjZmUub3B0aW9uW2NpZF0uc2VyaWVzVGVtcGxhdGUgPyBjZmUub3B0aW9uW2NpZF0uc2VyaWVzVGVtcGxhdGUgOiB7fVxyXG4gICAgICAgICAgbGV0IFRlbXBsYXRlID0gcmRkZWVwQ2xvbmVBc3NpZ24oe30sY2ZlLm9wdGlvbltjaWRdLnNlcmllc1RlbXBsYXRlLG5ld0RhdGEuc2VyaWVzW2ldKVxyXG4gICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLnNlcmllcy5wdXNoKFRlbXBsYXRlKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuZWNoYXJ0cyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIHRoaXMubmV3RUNoYXJ0KClcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JylcclxuICAgICAgICAvLyAjaWZkZWYgQVBQLVZVRVxyXG4gICAgICAgIHNjcmlwdC5zcmMgPSAnLi91bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL3N0YXRpYy9hcHAtcGx1cy9lY2hhcnRzLm1pbi5qcydcclxuICAgICAgICAvLyAjZW5kaWZcclxuICAgICAgICAvLyAjaWZkZWYgSDVcclxuICAgICAgICBjb25zdCB7IG9yaWdpbiB9ID0gd2luZG93LmxvY2F0aW9uXHJcbiAgICAgICAgY29uc3Qgcm9vdHVybCA9IG9yaWdpbiArIHByb2Nlc3MuZW52LkJBU0VfVVJMXHJcbiAgICAgICAgc2NyaXB0LnNyYyA9IHJvb3R1cmwgKyAndW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9zdGF0aWMvaDUvZWNoYXJ0cy5taW4uanMnXHJcbiAgICAgICAgLy8gI2VuZGlmXHJcbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IHRoaXMubmV3RUNoYXJ0XHJcbiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlY3Jlc2l6ZShuZXdWYWwsIG9sZFZhbCwgb3duZXIsIGluc3RhbmNlKXtcclxuICAgICAgaWYoY2ZlLmluc3RhbmNlW3RoaXMucmlkXSl7XHJcbiAgICAgICAgY2ZlLmluc3RhbmNlW3RoaXMucmlkXS5yZXNpemUoKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgbmV3RUNoYXJ0KCl7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBpZihjZmUuaW5zdGFuY2VbY2lkXSA9PT0gdW5kZWZpbmVkKXtcclxuICAgICAgICBjZmUuaW5zdGFuY2VbY2lkXSA9IGVjaGFydHMuaW5pdCh0aGF0W2NpZF0uJGVsLmNoaWxkcmVuWzBdKVxyXG4gICAgICAgIC8vb250YXDlvIDlkK/lkI7miY3op6blj5FjbGlja+S6i+S7tlxyXG4gICAgICAgIGlmKGNmZS5vcHRpb25bY2lkXS5vbnRhcCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgICBjZmUuaW5zdGFuY2VbY2lkXS5vbignY2xpY2snLCByZXNkYXRhID0+IHtcclxuICAgICAgICAgICAgbGV0IGV2ZW50ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgeDpyZXNkYXRhLmV2ZW50Lm9mZnNldFgseTpyZXNkYXRhLmV2ZW50Lm9mZnNldFlcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcImdldEluZGV4XCIsIHBhcmFtczp7dHlwZTpcImdldEluZGV4XCIsIGV2ZW50OmV2ZW50LCBjdXJyZW50SW5kZXg6cmVzZGF0YS5kYXRhSW5kZXgsIHZhbHVlOnJlc2RhdGEuZGF0YSwgc2VyaWVzTmFtZTogcmVzZGF0YS5zZXJpZXNOYW1lLGlkOmNpZH19KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC8vIOWinuWKoEVDaGFydHPnmoRoaWdobGlnaHTmtojmga/vvIzlrp7njrDmjInkuIvnp7vliqjov5Tlm57ntKLlvJXlip/og73jgIJhZGQgYnkgb25lZmlzaCDliJvlu7rkuo4gMjAyMS0xMi0xMSAwOTo1MFxyXG4gICAgICAgICAgY2ZlLmluc3RhbmNlW2NpZF0ub24oJ2hpZ2hsaWdodCcsIHJlc2RhdGEgPT4ge1xyXG4gICAgICAgICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRIaWdobGlnaHRcIiwgcGFyYW1zOnt0eXBlOlwiaGlnaGxpZ2h0XCIsIHJlczpyZXNkYXRhLCBpZDpjaWR9fSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRhRUNoYXJ0KGNpZCxjZmUub3B0aW9uW2NpZF0pXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMudXBkYXRhRUNoYXJ0KGNpZCxjZmUub3B0aW9uW2NpZF0pXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB1cGRhdGFFQ2hhcnQoY2lkLG9wdGlvbil7XHJcbiAgICAgIC8v5pu/5o2ib3B0aW9u5YaFZm9ybWF05bGe5oCn5Li6Zm9ybWF0dGVy55qE6aKE5a6a5LmJ5pa55rOVXHJcbiAgICAgIG9wdGlvbiA9IHJkZm9ybWF0dGVyQXNzaWduKG9wdGlvbixjZmUuZm9ybWF0dGVyKVxyXG4gICAgICBpZihvcHRpb24udG9vbHRpcCl7XHJcbiAgICAgICAgb3B0aW9uLnRvb2x0aXAuc2hvdyA9IG9wdGlvbi50b29sdGlwU2hvdz90cnVlOmZhbHNlO1xyXG4gICAgICAgIG9wdGlvbi50b29sdGlwLnBvc2l0aW9uID0gdGhpcy50b29sdGlwUG9zaXRpb24oKVxyXG4gICAgICAgIC8vdG9vbHRpcEZvcm1hdOaWueazle+8jOabv+aNoue7hOS7tueahHRvb2x0aXBGb3JtYXTkuLpjb25maWctZWNoYXJ0cy5qc+WGheWvueW6lOeahOaWueazlVxyXG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uLnRvb2x0aXBGb3JtYXQgPT09ICdzdHJpbmcnICYmIGNmZS5mb3JtYXR0ZXJbb3B0aW9uLnRvb2x0aXBGb3JtYXRdKSB7XHJcbiAgICAgICAgICBvcHRpb24udG9vbHRpcC5mb3JtYXR0ZXIgPSBvcHRpb24udG9vbHRpcC5mb3JtYXR0ZXIgPyBvcHRpb24udG9vbHRpcC5mb3JtYXR0ZXIgOiBjZmUuZm9ybWF0dGVyW29wdGlvbi50b29sdGlwRm9ybWF0XVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyDpopzoibLmuJDlj5jmt7vliqDnmoTmlrnms5VcclxuICAgICAgaWYgKG9wdGlvbi5zZXJpZXMpIHtcclxuICAgICAgXHRmb3IgKGxldCBpIGluIG9wdGlvbi5zZXJpZXMpIHtcclxuICAgICAgXHRcdGxldCBsaW5lYXJHcmFkaWVudCA9IG9wdGlvbi5zZXJpZXNbaV0ubGluZWFyR3JhZGllbnRcclxuICAgICAgXHRcdGlmIChsaW5lYXJHcmFkaWVudCkge1xyXG4gICAgICBcdFx0XHRvcHRpb24uc2VyaWVzW2ldLmNvbG9yID0gbmV3IGVjaGFydHMuZ3JhcGhpYy5MaW5lYXJHcmFkaWVudChsaW5lYXJHcmFkaWVudFswXSxsaW5lYXJHcmFkaWVudFsxXSxsaW5lYXJHcmFkaWVudFsyXSxsaW5lYXJHcmFkaWVudFszXSxsaW5lYXJHcmFkaWVudFs0XSlcclxuICAgICAgXHRcdH1cclxuICAgICAgXHR9XHJcbiAgICAgIH1cclxuICAgICAgY2ZlLmluc3RhbmNlW2NpZF0uc2V0T3B0aW9uKG9wdGlvbiwgb3B0aW9uLm5vdE1lcmdlKVxyXG4gICAgICBjZmUuaW5zdGFuY2VbY2lkXS5vbignZmluaXNoZWQnLCBmdW5jdGlvbigpe1xyXG4gICAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcImNvbXBsZXRlXCIscGFyYW1zOnt0eXBlOlwiY29tcGxldGVcIixjb21wbGV0ZTp0cnVlLGlkOmNpZH19KVxyXG4gICAgICAgIGlmKGNmZS5pbnN0YW5jZVtjaWRdKXtcclxuICAgICAgICAgIGNmZS5pbnN0YW5jZVtjaWRdLm9mZignZmluaXNoZWQnKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvL+S/ruWkjWluaXTliJ3lp4vljJblrp7kvovojrflj5blrr3pq5jkuI3mraPnoa7pl67pophcclxuICAgICAgaWYoXHJcbiAgICAgICAgdHlwZW9mIHRoYXRbY2lkXS4kZWwuY2hpbGRyZW5bMF0uY2xpZW50V2lkdGggIT0gJ3VuZGVmaW5lZCcgJiZcclxuICAgICAgICAgIChcclxuICAgICAgICAgICAgTWF0aC5hYnMoIHRoYXRbY2lkXS4kZWwuY2hpbGRyZW5bMF0uY2xpZW50V2lkdGggLSBjZmUuaW5zdGFuY2VbY2lkXS5nZXRXaWR0aCgpICk+MyB8fFxyXG4gICAgICAgICAgICBNYXRoLmFicyggdGhhdFtjaWRdLiRlbC5jaGlsZHJlblswXS5jbGllbnRIZWlnaHQgLSBjZmUuaW5zdGFuY2VbY2lkXS5nZXRIZWlnaHQoKSApPjNcclxuICAgICAgICAgIClcclxuICAgICAgKXt0aGlzLmVjcmVzaXplKCk7fVxyXG4gICAgfSxcclxuICAgIHRvb2x0aXBQb3NpdGlvbigpe1xyXG4gICAgICByZXR1cm4gKHBvaW50LCBwYXJhbXMsIGRvbSwgcmVjdCwgc2l6ZSkgPT4ge1xyXG4gICAgICBcdGxldCB4ID0gcG9pbnRbMF1cclxuICAgICAgXHRsZXQgeSA9IHBvaW50WzFdXHJcbiAgICAgIFx0bGV0IHZpZXdXaWR0aCA9IHNpemUudmlld1NpemVbMF1cclxuICAgICAgXHRsZXQgdmlld0hlaWdodCA9IHNpemUudmlld1NpemVbMV1cclxuICAgICAgXHRsZXQgYm94V2lkdGggPSBzaXplLmNvbnRlbnRTaXplWzBdXHJcbiAgICAgIFx0bGV0IGJveEhlaWdodCA9IHNpemUuY29udGVudFNpemVbMV1cclxuICAgICAgXHRsZXQgcG9zWCA9IHggKyAzMCBcclxuICAgICAgXHRsZXQgcG9zWSA9IHkgKyAzMCBcclxuICAgICAgXHRpZiAocG9zWCArIGJveFdpZHRoID4gdmlld1dpZHRoKSB7IFxyXG4gICAgICBcdFx0cG9zWCA9IHggLSBib3hXaWR0aCAtIDMwXHJcbiAgICAgIFx0fVxyXG4gICAgICBcdGlmIChwb3NZICsgYm94SGVpZ2h0ID4gdmlld0hlaWdodCkge1xyXG4gICAgICBcdFx0cG9zWSA9IHkgLSBib3hIZWlnaHQgLSAzMFxyXG4gICAgICBcdH1cclxuICAgICAgXHRyZXR1cm4gW3Bvc1gsIHBvc1ldXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLz09PT09PT09PT09PT095Lul5LiL5pivdUNoYXJ0c+eahOaWueazlT09PT09PT09PT09PT09PT09PT09XHJcbiAgICB1Y2luaXQobmV3VmFsLCBvbGRWYWwsIG93bmVyLCBpbnN0YW5jZSl7XHJcbiAgICAgIGlmKEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkgPT0gSlNPTi5zdHJpbmdpZnkob2xkVmFsKSl7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKCFuZXdWYWwuY2FudmFzSWQpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgY2lkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdWYWwuY2FudmFzSWQpKVxyXG4gICAgICB0aGlzLnJpZCA9IGNpZFxyXG4gICAgICB0aGF0W2NpZF0gPSB0aGlzLiRvd25lckluc3RhbmNlIHx8IGluc3RhbmNlXHJcbiAgICAgIGNmdS5vcHRpb25bY2lkXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmV3VmFsKSlcclxuICAgICAgY2Z1Lm9wdGlvbltjaWRdID0gcmRmb3JtYXR0ZXJBc3NpZ24oY2Z1Lm9wdGlvbltjaWRdLGNmdS5mb3JtYXR0ZXIpXHJcbiAgICAgIGxldCBjYW52YXNkb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjaWQpXHJcbiAgICAgIGlmKGNhbnZhc2RvbSAmJiBjYW52YXNkb20uY2hpbGRyZW5bMF0pe1xyXG4gICAgICAgIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0ID0gY2FudmFzZG9tLmNoaWxkcmVuWzBdLmdldENvbnRleHQoXCIyZFwiKVxyXG4gICAgICAgIGlmKGNmdS5pbnN0YW5jZVtjaWRdICYmIGNmdS5vcHRpb25bY2lkXSAmJiBjZnUub3B0aW9uW2NpZF0udXBkYXRlID09PSB0cnVlKXtcclxuICAgICAgICAgIHRoaXMudXBkYXRhVUNoYXJ0KClcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQucmVzdG9yZSgpO1xyXG4gICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dC5zYXZlKCk7XHJcbiAgICAgICAgICAgIHRoaXMubmV3VUNoYXJ0KClcclxuICAgICAgICAgIH0sMTAwKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIG5ld1VDaGFydCgpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMucmlkXHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdID0gbmV3IHVDaGFydHNSRChjZnUub3B0aW9uW2NpZF0pXHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmFkZEV2ZW50TGlzdGVuZXIoJ3JlbmRlckNvbXBsZXRlJywgKCkgPT4ge1xyXG4gICAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcImNvbXBsZXRlXCIscGFyYW1zOnt0eXBlOlwiY29tcGxldGVcIixjb21wbGV0ZTp0cnVlLGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KVxyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmRlbEV2ZW50TGlzdGVuZXIoJ3JlbmRlckNvbXBsZXRlJylcclxuICAgICAgfSk7XHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbExlZnQnLCAoKSA9PiB7XHJcbiAgICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwic2Nyb2xsTGVmdFwiLHBhcmFtczp7dHlwZTpcInNjcm9sbExlZnRcIixzY3JvbGxMZWZ0OnRydWUsaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICAgIH0pO1xyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGxSaWdodCcsICgpID0+IHtcclxuICAgICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJzY3JvbGxSaWdodFwiLHBhcmFtczp7dHlwZTpcInNjcm9sbFJpZ2h0XCIsc2Nyb2xsUmlnaHQ6dHJ1ZSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgdXBkYXRhVUNoYXJ0KCkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0udXBkYXRlRGF0YShjZnUub3B0aW9uW2NpZF0pXHJcbiAgICB9LFxyXG4gICAgdG9vbHRpcERlZmF1bHQoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKSB7XHJcbiAgICAgIGlmIChjYXRlZ29yeSkge1xyXG4gICAgICAgIGxldCBkYXRhID0gaXRlbS5kYXRhXHJcbiAgICAgICAgaWYodHlwZW9mIGl0ZW0uZGF0YSA9PT0gXCJvYmplY3RcIil7XHJcbiAgICAgICAgICBkYXRhID0gaXRlbS5kYXRhLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjYXRlZ29yeSArICcgJyArIGl0ZW0ubmFtZSArICc6JyArIGRhdGE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGl0ZW0ucHJvcGVydGllcyAmJiBpdGVtLnByb3BlcnRpZXMubmFtZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ucHJvcGVydGllcy5uYW1lIDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZSArICc6JyArIGl0ZW0uZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzaG93VG9vbHRpcChlLGNpZCkge1xyXG4gICAgICBsZXQgdGMgPSBjZnUub3B0aW9uW2NpZF0udG9vbHRpcEN1c3RvbVxyXG4gICAgICBpZiAodGMgJiYgdGMgIT09IHVuZGVmaW5lZCAmJiB0YyAhPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRjLnggPj0gMCAmJiB0Yy55ID49IDApIHtcclxuICAgICAgICAgIG9mZnNldCA9IHsgeDogdGMueCwgeTogdGMueSArIDEwIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNob3dUb29sVGlwKGUsIHtcclxuICAgICAgICAgIGluZGV4OiB0Yy5pbmRleCxcclxuICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxyXG4gICAgICAgICAgdGV4dExpc3Q6IHRjLnRleHRMaXN0LFxyXG4gICAgICAgICAgZm9ybWF0dGVyOiAoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXQgPT09ICdzdHJpbmcnICYmIGNmdS5mb3JtYXR0ZXJbY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXRdKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNmdS5mb3JtYXR0ZXJbY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXRdKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcERlZmF1bHQoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNob3dUb29sVGlwKGUsIHtcclxuICAgICAgICAgIGZvcm1hdHRlcjogKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cykgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0ID09PSAnc3RyaW5nJyAmJiBjZnUuZm9ybWF0dGVyW2NmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0XSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBjZnUuZm9ybWF0dGVyW2NmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0XShpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBEZWZhdWx0KGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHRhcChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBsZXQgb250YXAgPSBjZnUub3B0aW9uW2NpZF0ub250YXBcclxuICAgICAgbGV0IHRvb2x0aXBTaG93ID0gY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBTaG93XHJcbiAgICAgIGxldCB0YXBMZWdlbmQgPSBjZnUub3B0aW9uW2NpZF0udGFwTGVnZW5kXHJcbiAgICAgIGlmKG9udGFwID09IGZhbHNlKSByZXR1cm47XHJcbiAgICAgIGxldCBjdXJyZW50SW5kZXg9bnVsbFxyXG4gICAgICBsZXQgbGVnZW5kSW5kZXg9bnVsbFxyXG4gICAgICBsZXQgcmNoYXJ0ZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1VDJytjaWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgIGxldCB0bXBlID0ge31cclxuICAgICAgaWYoZS5kZXRhaWwueCl7Ly90YXDmiJbogIVjbGlja+eahOS6i+S7tlxyXG4gICAgICAgIHRtcGUgPSB7IHg6IGUuZGV0YWlsLnggLSByY2hhcnRkb20ubGVmdCwgeTplLmRldGFpbC55IC0gcmNoYXJ0ZG9tLnRvcCArIHJvb3Rkb20udG9wfVxyXG4gICAgICB9ZWxzZXsvL21vdXNl55qE5LqL5Lu2XHJcbiAgICAgICAgdG1wZSA9IHsgeDogZS5jbGllbnRYIC0gcmNoYXJ0ZG9tLmxlZnQsIHk6ZS5jbGllbnRZIC0gcmNoYXJ0ZG9tLnRvcCArIHJvb3Rkb20udG9wfVxyXG4gICAgICB9XHJcbiAgICAgIGUuY2hhbmdlZFRvdWNoZXMgPSBbXTtcclxuICAgICAgZS5jaGFuZ2VkVG91Y2hlcy51bnNoaWZ0KHRtcGUpXHJcbiAgICAgIGN1cnJlbnRJbmRleD1jZnUuaW5zdGFuY2VbY2lkXS5nZXRDdXJyZW50RGF0YUluZGV4KGUpXHJcbiAgICAgIGxlZ2VuZEluZGV4PWNmdS5pbnN0YW5jZVtjaWRdLmdldExlZ2VuZERhdGFJbmRleChlKVxyXG4gICAgICBpZih0YXBMZWdlbmQgPT09IHRydWUpe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnRvdWNoTGVnZW5kKGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHRvb2x0aXBTaG93PT10cnVlKXtcclxuICAgICAgICB0aGlzLnNob3dUb29sdGlwKGUsY2lkKVxyXG4gICAgICB9XHJcbiAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcImdldEluZGV4XCIscGFyYW1zOnt0eXBlOlwiZ2V0SW5kZXhcIixldmVudDp0bXBlLGN1cnJlbnRJbmRleDpjdXJyZW50SW5kZXgsbGVnZW5kSW5kZXg6bGVnZW5kSW5kZXgsaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICB9LFxyXG4gICAgdG91Y2hTdGFydChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBsZXQgb250b3VjaCA9IGNmdS5vcHRpb25bY2lkXS5vbnRvdWNoXHJcbiAgICAgIGlmKG9udG91Y2ggPT0gZmFsc2UpIHJldHVybjtcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBlLnRvdWNoZXMubGVuZ3RoID09IDEpe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbFN0YXJ0KGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcImdldFRvdWNoU3RhcnRcIixwYXJhbXM6e3R5cGU6XCJ0b3VjaFN0YXJ0XCIsZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgIH0sXHJcbiAgICB0b3VjaE1vdmUoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgbGV0IG9udG91Y2ggPSBjZnUub3B0aW9uW2NpZF0ub250b3VjaFxyXG4gICAgICBpZihvbnRvdWNoID09IGZhbHNlKSByZXR1cm47XHJcbiAgICAgIGlmKGNmdS5vcHRpb25bY2lkXS5lbmFibGVTY3JvbGwgPT09IHRydWUgJiYgZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggPT0gMSl7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uc2Nyb2xsKGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKGNmdS5vcHRpb25bY2lkXS5vbnRhcCA9PT0gdHJ1ZSAmJiBjZnUub3B0aW9uW2NpZF0uZW5hYmxlU2Nyb2xsID09PSBmYWxzZSAmJiBjZnUub3B0aW9uW2NpZF0ub25tb3ZldGlwID09PSB0cnVlKXtcclxuICAgICAgICBsZXQgcmNoYXJ0ZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1VDJytjaWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgICAgbGV0IHRtcGUgPSB7IHg6IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCAtIHJjaGFydGRvbS5sZWZ0LCB5OmUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgICBlLmNoYW5nZWRUb3VjaGVzLnVuc2hpZnQodG1wZSlcclxuICAgICAgICBpZihjZnUub3B0aW9uW2NpZF0udG9vbHRpcFNob3cgPT09IHRydWUpe1xyXG4gICAgICAgICAgdGhpcy5zaG93VG9vbHRpcChlLGNpZClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYob250b3VjaCA9PT0gdHJ1ZSAmJiBjZnUub3B0aW9uW2NpZF0uZW5hYmxlU2Nyb2xsID09PSB0cnVlICYmIGNmdS5vcHRpb25bY2lkXS5vbnpvb20gPT09IHRydWUgJiYgZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggPT0gMil7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uZG9idWxlWm9vbShlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRUb3VjaE1vdmVcIixwYXJhbXM6e3R5cGU6XCJ0b3VjaE1vdmVcIixldmVudDplLmNoYW5nZWRUb3VjaGVzWzBdLGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KVxyXG4gICAgfSxcclxuICAgIHRvdWNoRW5kKGUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMucmlkXHJcbiAgICAgIGxldCBvbnRvdWNoID0gY2Z1Lm9wdGlvbltjaWRdLm9udG91Y2hcclxuICAgICAgaWYob250b3VjaCA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICBpZihjZnUub3B0aW9uW2NpZF0uZW5hYmxlU2Nyb2xsID09PSB0cnVlICYmIGUudG91Y2hlcy5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uc2Nyb2xsRW5kKGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcImdldFRvdWNoRW5kXCIscGFyYW1zOnt0eXBlOlwidG91Y2hFbmRcIixldmVudDplLmNoYW5nZWRUb3VjaGVzWzBdLGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KVxyXG4gICAgfSxcclxuICAgIG1vdXNlRG93bihlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBsZXQgb25tb3VzZSA9IGNmdS5vcHRpb25bY2lkXS5vbm1vdXNlXHJcbiAgICAgIGlmKG9ubW91c2UgPT0gZmFsc2UpIHJldHVybjtcclxuICAgICAgbGV0IHJjaGFydGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdVQycrY2lkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICBsZXQgdG1wZSA9IHt9XHJcbiAgICAgIHRtcGUgPSB7IHg6IGUuY2xpZW50WCAtIHJjaGFydGRvbS5sZWZ0LCB5OmUuY2xpZW50WSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgZS5jaGFuZ2VkVG91Y2hlcyA9IFtdO1xyXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzLnVuc2hpZnQodG1wZSlcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uc2Nyb2xsU3RhcnQoZSlcclxuICAgICAgY2Z1Lm9wdGlvbltjaWRdLm1vdXNlZG93bj10cnVlO1xyXG4gICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRUb3VjaFN0YXJ0XCIscGFyYW1zOnt0eXBlOlwibW91c2VEb3duXCIsZXZlbnQ6dG1wZSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgIH0sXHJcbiAgICBtb3VzZU1vdmUoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgbGV0IG9ubW91c2UgPSBjZnUub3B0aW9uW2NpZF0ub25tb3VzZVxyXG4gICAgICBsZXQgdG9vbHRpcFNob3cgPSBjZnUub3B0aW9uW2NpZF0udG9vbHRpcFNob3dcclxuICAgICAgaWYob25tb3VzZSA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICBsZXQgcmNoYXJ0ZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1VDJytjaWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgIGxldCB0bXBlID0ge31cclxuICAgICAgdG1wZSA9IHsgeDogZS5jbGllbnRYIC0gcmNoYXJ0ZG9tLmxlZnQsIHk6ZS5jbGllbnRZIC0gcmNoYXJ0ZG9tLnRvcCArIHJvb3Rkb20udG9wfVxyXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzID0gW107XHJcbiAgICAgIGUuY2hhbmdlZFRvdWNoZXMudW5zaGlmdCh0bXBlKVxyXG4gICAgICBpZihjZnUub3B0aW9uW2NpZF0ubW91c2Vkb3duKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zY3JvbGwoZSlcclxuICAgICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRUb3VjaE1vdmVcIixwYXJhbXM6e3R5cGU6XCJtb3VzZU1vdmVcIixldmVudDp0bXBlLGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KVxyXG4gICAgICB9ZWxzZSBpZihjZnUuaW5zdGFuY2VbY2lkXSl7XHJcbiAgICAgICAgaWYodG9vbHRpcFNob3c9PXRydWUpe1xyXG4gICAgICAgICAgdGhpcy5zaG93VG9vbHRpcChlLGNpZClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBtb3VzZVVwKGUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMucmlkXHJcbiAgICAgIGxldCBvbm1vdXNlID0gY2Z1Lm9wdGlvbltjaWRdLm9ubW91c2VcclxuICAgICAgaWYob25tb3VzZSA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICBsZXQgcmNoYXJ0ZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1VDJytjaWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgIGxldCB0bXBlID0ge31cclxuICAgICAgdG1wZSA9IHsgeDogZS5jbGllbnRYIC0gcmNoYXJ0ZG9tLmxlZnQsIHk6ZS5jbGllbnRZIC0gcmNoYXJ0ZG9tLnRvcCArIHJvb3Rkb20udG9wfVxyXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzID0gW107XHJcbiAgICAgIGUuY2hhbmdlZFRvdWNoZXMudW5zaGlmdCh0bXBlKVxyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zY3JvbGxFbmQoZSlcclxuICAgICAgY2Z1Lm9wdGlvbltjaWRdLm1vdXNlZG93bj1mYWxzZTtcclxuICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwiZ2V0VG91Y2hFbmRcIixwYXJhbXM6e3R5cGU6XCJtb3VzZVVwXCIsZXZlbnQ6dG1wZSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgIH0sXHJcbiAgfVxyXG59XHJcbjwvc2NyaXB0PlxyXG48IS0tICNlbmRpZiAtLT5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbi5jaGFydHN2aWV3IHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4OiAxO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///108\n");
 
/***/ }),
/* 109 */
/*!************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js ***!
  \************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
/* WEBPACK VAR INJECTION */(function(global, wx) {
 
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 112));
var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 114));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 44));
var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));
var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 16));
var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 115));
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));
var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 116));
var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 118));
var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 119));
var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/wrapNativeSuper */ 120));
var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));
var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));
var _uniI18n = __webpack_require__(/*! @dcloudio/uni-i18n */ 42);
var _pages = _interopRequireDefault(__webpack_require__(/*! @/pages.json */ 124));
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (>= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e35) { throw _e35; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e36) { didErr = true; err = _e36; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (=== "Object" && o.constructor) n = o.constructor.name; if (=== "Map" || n === "Set") return Array.from(o); if (=== "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
"undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self && self;
function n(e) {
  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
function s(e, t, n) {
  return e(= {
    path: t,
    exports: {},
    require: function require(e, t) {
      return function () {
        throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs");
      }(null == t && n.path);
    }
  }, n.exports), n.exports;
}
var r = s(function (e, t) {
    var n;
    e.exports = (= n || function (e, t) {
      var n = Object.create || function () {
          function e() {}
          return function (t) {
            var n;
            return e.prototype = t, n = new e(), e.prototype = null, n;
          };
        }(),
        s = {},
        r = s.lib = {},
        i = r.Base = {
          extend: function extend(e) {
            var t = n(this);
            return e && t.mixIn(e), t.hasOwnProperty("init") && this.init !== t.init || (t.init = function () {
              t.$super.init.apply(this, arguments);
            }), t.init.prototype = t, t.$super = this, t;
          },
          create: function create() {
            var e = this.extend();
            return e.init.apply(e, arguments), e;
          },
          init: function init() {},
          mixIn: function mixIn(e) {
            for (var t in e) {
              e.hasOwnProperty(t) && (this[t] = e[t]);
            }
            e.hasOwnProperty("toString") && (this.toString = e.toString);
          },
          clone: function clone() {
            return this.init.prototype.extend(this);
          }
        },
        o = r.WordArray = i.extend({
          init: function init(e, n) {
            e = this.words = e || [], this.sigBytes = n != t ? n : 4 * e.length;
          },
          toString: function toString(e) {
            return (|| c).stringify(this);
          },
          concat: function concat(e) {
            var t = this.words,
              n = e.words,
              s = this.sigBytes,
              r = e.sigBytes;
            if (this.clamp(), s % 4) for (var i = 0; i < r; i++) {
              var o = n[>>> 2] >>> 24 - i % 4 * 8 & 255;
              t[+ i >>> 2] |= o << 24 - (+ i) % 4 * 8;
            } else for (= 0; i < r; i += 4) {
              t[+ i >>> 2] = n[>>> 2];
            }
            return this.sigBytes += r, this;
          },
          clamp: function clamp() {
            var t = this.words,
              n = this.sigBytes;
            t[>>> 2] &= 4294967295 << 32 - n % 4 * 8, t.length = e.ceil(/ 4);
          },
          clone: function clone() {
            var e = i.clone.call(this);
            return e.words = this.words.slice(0), e;
          },
          random: function random(t) {
            for (var n, s = [], r = function r(t) {
                t = t;
                var n = 987654321,
                  s = 4294967295;
                return function () {
                  var r = ((= 36969 * (65535 & n) + (>> 16) & s) << 16) + (= 18e3 * (65535 & t) + (>> 16) & s) & s;
                  return r /= 4294967296, (+= .5) * (e.random() > .5 ? 1 : -1);
                };
              }, i = 0; i < t; i += 4) {
              var a = r(4294967296 * (|| e.random()));
              n = 987654071 * a(), s.push(4294967296 * a() | 0);
            }
            return new o.init(s, t);
          }
        }),
        a = s.enc = {},
        c = a.Hex = {
          stringify: function stringify(e) {
            for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) {
              var i = t[>>> 2] >>> 24 - r % 4 * 8 & 255;
              s.push((>>> 4).toString(16)), s.push((15 & i).toString(16));
            }
            return s.join("");
          },
          parse: function parse(e) {
            for (var t = e.length, n = [], s = 0; s < t; s += 2) {
              n[>>> 3] |= parseInt(e.substr(s, 2), 16) << 24 - s % 8 * 4;
            }
            return new o.init(n, t / 2);
          }
        },
        u = a.Latin1 = {
          stringify: function stringify(e) {
            for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) {
              var i = t[>>> 2] >>> 24 - r % 4 * 8 & 255;
              s.push(String.fromCharCode(i));
            }
            return s.join("");
          },
          parse: function parse(e) {
            for (var t = e.length, n = [], s = 0; s < t; s++) {
              n[>>> 2] |= (255 & e.charCodeAt(s)) << 24 - s % 4 * 8;
            }
            return new o.init(n, t);
          }
        },
        h = a.Utf8 = {
          stringify: function stringify(e) {
            try {
              return decodeURIComponent(escape(u.stringify(e)));
            } catch (e) {
              throw new Error("Malformed UTF-8 data");
            }
          },
          parse: function parse(e) {
            return u.parse(unescape(encodeURIComponent(e)));
          }
        },
        l = r.BufferedBlockAlgorithm = i.extend({
          reset: function reset() {
            this._data = new o.init(), this._nDataBytes = 0;
          },
          _append: function _append(e) {
            "string" == typeof e && (= h.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes;
          },
          _process: function _process(t) {
            var n = this._data,
              s = n.words,
              r = n.sigBytes,
              i = this.blockSize,
              a = r / (4 * i),
              c = (= t ? e.ceil(a) : e.max((0 | a) - this._minBufferSize, 0)) * i,
              u = e.min(4 * c, r);
            if (c) {
              for (var h = 0; h < c; h += i) {
                this._doProcessBlock(s, h);
              }
              var l = s.splice(0, c);
              n.sigBytes -= u;
            }
            return new o.init(l, u);
          },
          clone: function clone() {
            var e = i.clone.call(this);
            return e._data = this._data.clone(), e;
          },
          _minBufferSize: 0
        });
      r.Hasher = l.extend({
        cfg: i.extend(),
        init: function init(e) {
          this.cfg = this.cfg.extend(e), this.reset();
        },
        reset: function reset() {
          l.reset.call(this), this._doReset();
        },
        update: function update(e) {
          return this._append(e), this._process(), this;
        },
        finalize: function finalize(e) {
          return e && this._append(e), this._doFinalize();
        },
        blockSize: 16,
        _createHelper: function _createHelper(e) {
          return function (t, n) {
            return new e.init(n).finalize(t);
          };
        },
        _createHmacHelper: function _createHmacHelper(e) {
          return function (t, n) {
            return new d.HMAC.init(e, n).finalize(t);
          };
        }
      });
      var d = s.algo = {};
      return s;
    }(Math), n);
  }),
  i = r,
  o = (s(function (e, t) {
    var n;
    e.exports = (= i, function (e) {
      var t = n,
        s = t.lib,
        r = s.WordArray,
        i = s.Hasher,
        o = t.algo,
        a = [];
      !function () {
        for (var t = 0; t < 64; t++) {
          a[t] = 4294967296 * e.abs(e.sin(+ 1)) | 0;
        }
      }();
      var c = o.MD5 = i.extend({
        _doReset: function _doReset() {
          this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878]);
        },
        _doProcessBlock: function _doProcessBlock(e, t) {
          for (var n = 0; n < 16; n++) {
            var s = t + n,
              r = e[s];
            e[s] = 16711935 & (<< 8 | r >>> 24) | 4278255360 & (<< 24 | r >>> 8);
          }
          var i = this._hash.words,
            o = e[+ 0],
            c = e[+ 1],
            p = e[+ 2],
            f = e[+ 3],
            g = e[+ 4],
            m = e[+ 5],
            y = e[+ 6],
            _ = e[+ 7],
            w = e[+ 8],
            v = e[+ 9],
            I = e[+ 10],
            S = e[+ 11],
            b = e[+ 12],
            k = e[+ 13],
            C = e[+ 14],
            T = e[+ 15],
            P = i[0],
            A = i[1],
            E = i[2],
            O = i[3];
          P = u(P, A, E, O, o, 7, a[0]), O = u(O, P, A, E, c, 12, a[1]), E = u(E, O, P, A, p, 17, a[2]), A = u(A, E, O, P, f, 22, a[3]), P = u(P, A, E, O, g, 7, a[4]), O = u(O, P, A, E, m, 12, a[5]), E = u(E, O, P, A, y, 17, a[6]), A = u(A, E, O, P, _, 22, a[7]), P = u(P, A, E, O, w, 7, a[8]), O = u(O, P, A, E, v, 12, a[9]), E = u(E, O, P, A, I, 17, a[10]), A = u(A, E, O, P, S, 22, a[11]), P = u(P, A, E, O, b, 7, a[12]), O = u(O, P, A, E, k, 12, a[13]), E = u(E, O, P, A, C, 17, a[14]), P = h(P, A = u(A, E, O, P, T, 22, a[15]), E, O, c, 5, a[16]), O = h(O, P, A, E, y, 9, a[17]), E = h(E, O, P, A, S, 14, a[18]), A = h(A, E, O, P, o, 20, a[19]), P = h(P, A, E, O, m, 5, a[20]), O = h(O, P, A, E, I, 9, a[21]), E = h(E, O, P, A, T, 14, a[22]), A = h(A, E, O, P, g, 20, a[23]), P = h(P, A, E, O, v, 5, a[24]), O = h(O, P, A, E, C, 9, a[25]), E = h(E, O, P, A, f, 14, a[26]), A = h(A, E, O, P, w, 20, a[27]), P = h(P, A, E, O, k, 5, a[28]), O = h(O, P, A, E, p, 9, a[29]), E = h(E, O, P, A, _, 14, a[30]), P = l(P, A = h(A, E, O, P, b, 20, a[31]), E, O, m, 4, a[32]), O = l(O, P, A, E, w, 11, a[33]), E = l(E, O, P, A, S, 16, a[34]), A = l(A, E, O, P, C, 23, a[35]), P = l(P, A, E, O, c, 4, a[36]), O = l(O, P, A, E, g, 11, a[37]), E = l(E, O, P, A, _, 16, a[38]), A = l(A, E, O, P, I, 23, a[39]), P = l(P, A, E, O, k, 4, a[40]), O = l(O, P, A, E, o, 11, a[41]), E = l(E, O, P, A, f, 16, a[42]), A = l(A, E, O, P, y, 23, a[43]), P = l(P, A, E, O, v, 4, a[44]), O = l(O, P, A, E, b, 11, a[45]), E = l(E, O, P, A, T, 16, a[46]), P = d(P, A = l(A, E, O, P, p, 23, a[47]), E, O, o, 6, a[48]), O = d(O, P, A, E, _, 10, a[49]), E = d(E, O, P, A, C, 15, a[50]), A = d(A, E, O, P, m, 21, a[51]), P = d(P, A, E, O, b, 6, a[52]), O = d(O, P, A, E, f, 10, a[53]), E = d(E, O, P, A, I, 15, a[54]), A = d(A, E, O, P, c, 21, a[55]), P = d(P, A, E, O, w, 6, a[56]), O = d(O, P, A, E, T, 10, a[57]), E = d(E, O, P, A, y, 15, a[58]), A = d(A, E, O, P, k, 21, a[59]), P = d(P, A, E, O, g, 6, a[60]), O = d(O, P, A, E, S, 10, a[61]), E = d(E, O, P, A, p, 15, a[62]), A = d(A, E, O, P, v, 21, a[63]), i[0] = i[0] + P | 0, i[1] = i[1] + A | 0, i[2] = i[2] + E | 0, i[3] = i[3] + O | 0;
        },
        _doFinalize: function _doFinalize() {
          var t = this._data,
            n = t.words,
            s = 8 * this._nDataBytes,
            r = 8 * t.sigBytes;
          n[>>> 5] |= 128 << 24 - r % 32;
          var i = e.floor(/ 4294967296),
            o = s;
          n[15 + (+ 64 >>> 9 << 4)] = 16711935 & (<< 8 | i >>> 24) | 4278255360 & (<< 24 | i >>> 8), n[14 + (+ 64 >>> 9 << 4)] = 16711935 & (<< 8 | o >>> 24) | 4278255360 & (<< 24 | o >>> 8), t.sigBytes = 4 * (n.length + 1), this._process();
          for (var a = this._hash, c = a.words, u = 0; u < 4; u++) {
            var h = c[u];
            c[u] = 16711935 & (<< 8 | h >>> 24) | 4278255360 & (<< 24 | h >>> 8);
          }
          return a;
        },
        clone: function clone() {
          var e = i.clone.call(this);
          return e._hash = this._hash.clone(), e;
        }
      });
      function u(e, t, n, s, r, i, o) {
        var a = e + (& n | ~& s) + r + o;
        return (<< i | a >>> 32 - i) + t;
      }
      function h(e, t, n, s, r, i, o) {
        var a = e + (& s | n & ~s) + r + o;
        return (<< i | a >>> 32 - i) + t;
      }
      function l(e, t, n, s, r, i, o) {
        var a = e + (^ n ^ s) + r + o;
        return (<< i | a >>> 32 - i) + t;
      }
      function d(e, t, n, s, r, i, o) {
        var a = e + (^ (| ~s)) + r + o;
        return (<< i | a >>> 32 - i) + t;
      }
      t.MD5 = i._createHelper(c), t.HmacMD5 = i._createHmacHelper(c);
    }(Math), n.MD5);
  }), s(function (e, t) {
    var n;
    e.exports = (= i, void function () {
      var e = n,
        t = e.lib.Base,
        s = e.enc.Utf8;
      e.algo.HMAC = t.extend({
        init: function init(e, t) {
          e = this._hasher = new e.init(), "string" == typeof t && (= s.parse(t));
          var n = e.blockSize,
            r = 4 * n;
          t.sigBytes > r && (= e.finalize(t)), t.clamp();
          for (var i = this._oKey = t.clone(), o = this._iKey = t.clone(), a = i.words, c = o.words, u = 0; u < n; u++) {
            a[u] ^= 1549556828, c[u] ^= 909522486;
          }
          i.sigBytes = o.sigBytes = r, this.reset();
        },
        reset: function reset() {
          var e = this._hasher;
          e.reset(), e.update(this._iKey);
        },
        update: function update(e) {
          return this._hasher.update(e), this;
        },
        finalize: function finalize(e) {
          var t = this._hasher,
            n = t.finalize(e);
          return t.reset(), t.finalize(this._oKey.clone().concat(n));
        }
      });
    }());
  }), s(function (e, t) {
    e.exports = i.HmacMD5;
  })),
  a = s(function (e, t) {
    e.exports = i.enc.Utf8;
  }),
  c = s(function (e, t) {
    var n;
    e.exports = (= i, function () {
      var e = n,
        t = e.lib.WordArray;
      function s(e, n, s) {
        for (var r = [], i = 0, o = 0; o < n; o++) {
          if (% 4) {
            var a = s[e.charCodeAt(- 1)] << o % 4 * 2,
              c = s[e.charCodeAt(o)] >>> 6 - o % 4 * 2;
            r[>>> 2] |= (| c) << 24 - i % 4 * 8, i++;
          }
        }
        return t.create(r, i);
      }
      e.enc.Base64 = {
        stringify: function stringify(e) {
          var t = e.words,
            n = e.sigBytes,
            s = this._map;
          e.clamp();
          for (var r = [], i = 0; i < n; i += 3) {
            for (var o = (t[>>> 2] >>> 24 - i % 4 * 8 & 255) << 16 | (t[+ 1 >>> 2] >>> 24 - (+ 1) % 4 * 8 & 255) << 8 | t[+ 2 >>> 2] >>> 24 - (+ 2) % 4 * 8 & 255, a = 0; a < 4 && i + .75 * a < n; a++) {
              r.push(s.charAt(>>> 6 * (3 - a) & 63));
            }
          }
          var c = s.charAt(64);
          if (c) for (; r.length % 4;) {
            r.push(c);
          }
          return r.join("");
        },
        parse: function parse(e) {
          var t = e.length,
            n = this._map,
            r = this._reverseMap;
          if (!r) {
            r = this._reverseMap = [];
            for (var i = 0; i < n.length; i++) {
              r[n.charCodeAt(i)] = i;
            }
          }
          var o = n.charAt(64);
          if (o) {
            var a = e.indexOf(o);
            -1 !== a && (= a);
          }
          return s(e, t, r);
        },
        _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
      };
    }(), n.enc.Base64);
  });
var u = "FUNCTION",
  h = "OBJECT",
  l = "CLIENT_DB",
  d = "pending",
  p = "fullfilled",
  f = "rejected";
function g(e) {
  return Object.prototype.toString.call(e).slice(8, -1).toLowerCase();
}
function m(e) {
  return "object" === g(e);
}
function y(e) {
  return "function" == typeof e;
}
function _(e) {
  return function () {
    try {
      return e.apply(e, arguments);
    } catch (e) {
      console.error(e);
    }
  };
}
var w = "REJECTED",
  v = "NOT_PENDING";
var I = /*#__PURE__*/function () {
  function I() {
    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
      e = _ref.createPromise,
      _ref$retryRule = _ref.retryRule,
      t = _ref$retryRule === void 0 ? w : _ref$retryRule;
    (0, _classCallCheck2.default)(this, I);
    this.createPromise = e, this.status = null, this.promise = null, this.retryRule = t;
  }
  (0, _createClass2.default)(I, [{
    key: "needRetry",
    get: function get() {
      if (!this.status) return !0;
      switch (this.retryRule) {
        case w:
          return this.status === f;
        case v:
          return this.status !== d;
      }
    }
  }, {
    key: "exec",
    value: function exec() {
      var _this = this;
      return this.needRetry ? (this.status = d, this.promise = this.createPromise().then(function (e) {
        return _this.status = p, Promise.resolve(e);
      }, function (e) {
        return _this.status = f, Promise.reject(e);
      }), this.promise) : this.promise;
    }
  }]);
  return I;
}();
function S(e) {
  return e && "string" == typeof e ? JSON.parse(e) : e;
}
var b = "development" === "development",
  k = "app-plus",
  C = "true" === false || !0 === false,
  T = S([]),
  P = "h5" === k ? "web" : "app-plus" === k ? "app" : k,
  A = S(undefined),
  E = S([]) || [],
  O = true;
var x = "";
try {
  x = (__webpack_require__(/*! uni-stat-config */ 125).default || __webpack_require__(/*! uni-stat-config */ 125)).appid;
} catch (e) {}
var R = {};
function U(e) {
  var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  var n, s;
  return n = R, s = e, Object.prototype.hasOwnProperty.call(n, s) || (R[e] = t), R[e];
}
"app" === P && (= uni._globalUniCloudObj ? uni._globalUniCloudObj : uni._globalUniCloudObj = {});
var L = ["invoke", "success", "fail", "complete"],
  N = U("_globalUniCloudInterceptor");
function D(e, t) {
  N[e] || (N[e] = {}), m(t) && Object.keys(t).forEach(function (n) {
    L.indexOf(n) > -1 && function (e, t, n) {
      var s = N[e][t];
      s || (= N[e][t] = []), -1 === s.indexOf(n) && y(n) && s.push(n);
    }(e, n, t[n]);
  });
}
function F(e, t) {
  N[e] || (N[e] = {}), m(t) ? Object.keys(t).forEach(function (n) {
    L.indexOf(n) > -1 && function (e, t, n) {
      var s = N[e][t];
      if (!s) return;
      var r = s.indexOf(n);
      r > -1 && s.splice(r, 1);
    }(e, n, t[n]);
  }) : delete N[e];
}
function q(e, t) {
  return e && 0 !== e.length ? e.reduce(function (e, n) {
    return e.then(function () {
      return n(t);
    });
  }, Promise.resolve()) : Promise.resolve();
}
function M(e, t) {
  return N[e] && N[e][t] || [];
}
function K(e) {
  D("callObject", e);
}
var j = U("_globalUniCloudListener"),
  B = "response",
  $ = "needLogin",
  W = "refreshToken",
  z = "clientdb",
  J = "cloudfunction",
  H = "cloudobject";
function G(e) {
  return j[e] || (j[e] = []), j[e];
}
function V(e, t) {
  var n = G(e);
  n.includes(t) || n.push(t);
}
function Y(e, t) {
  var n = G(e),
    s = n.indexOf(t);
  -1 !== s && n.splice(s, 1);
}
function Q(e, t) {
  var n = G(e);
  for (var _e2 = 0; _e2 < n.length; _e2++) {
    (0, n[_e2])(t);
  }
}
var X,
  Z = !1;
function ee() {
  return X || (= new Promise(function (e) {
    Z && e(), function t() {
      if ("function" == typeof getCurrentPages) {
        var _t2 = getCurrentPages();
        _t2 && _t2[0] && (= !0, e());
      }
      Z || setTimeout(function () {
        t();
      }, 30);
    }();
  }), X);
}
function te(e) {
  var t = {};
  for (var _n2 in e) {
    var _s2 = e[_n2];
    y(_s2) && (t[_n2] = _(_s2));
  }
  return t;
}
var ne = /*#__PURE__*/function (_Error) {
  (0, _inherits2.default)(ne, _Error);
  var _super = _createSuper(ne);
  function ne(e) {
    var _this2;
    (0, _classCallCheck2.default)(this, ne);
    _this2 = _super.call(this, e.message), _this2.errMsg = e.message || e.errMsg || "unknown system error", _this2.code = _this2.errCode = e.code || e.errCode || "SYSTEM_ERROR", _this2.errSubject = _this2.subject = e.subject || e.errSubject, _this2.cause = e.cause, _this2.requestId = e.requestId;
    return _this2;
  }
  (0, _createClass2.default)(ne, [{
    key: "toJson",
    value: function toJson() {
      var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
      if (!(>= 10)) return e++, {
        errCode: this.errCode,
        errMsg: this.errMsg,
        errSubject: this.errSubject,
        cause: this.cause && this.cause.toJson ? this.cause.toJson(e) : this.cause
      };
    }
  }]);
  return ne;
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
var se = {
  request: function request(e) {
    return uni.request(e);
  },
  uploadFile: function uploadFile(e) {
    return uni.uploadFile(e);
  },
  setStorageSync: function setStorageSync(e, t) {
    return uni.setStorageSync(e, t);
  },
  getStorageSync: function getStorageSync(e) {
    return uni.getStorageSync(e);
  },
  removeStorageSync: function removeStorageSync(e) {
    return uni.removeStorageSync(e);
  },
  clearStorageSync: function clearStorageSync() {
    return uni.clearStorageSync();
  }
};
function re() {
  return {
    token: se.getStorageSync("uni_id_token") || se.getStorageSync("uniIdToken"),
    tokenExpired: se.getStorageSync("uni_id_token_expired")
  };
}
function ie() {
  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
    e = _ref2.token,
    t = _ref2.tokenExpired;
  e && se.setStorageSync("uni_id_token", e), t && se.setStorageSync("uni_id_token_expired", t);
}
var oe, ae;
function ce() {
  return oe || (oe = uni.getSystemInfoSync()), oe;
}
function ue() {
  var e, t;
  try {
    if (uni.getLaunchOptionsSync) {
      if (uni.getLaunchOptionsSync.toString().indexOf("not yet implemented") > -1) return;
      var _uni$getLaunchOptions = uni.getLaunchOptionsSync(),
        _n3 = _uni$getLaunchOptions.scene,
        _s3 = _uni$getLaunchOptions.channel;
      e = _s3, t = _n3;
    }
  } catch (e) {}
  return {
    channel: e,
    scene: t
  };
}
function he() {
  var e = uni.getLocale && uni.getLocale() || "en";
  if (ae) return _objectSpread(_objectSpread({}, ae), {}, {
    locale: e,
    LOCALE: e
  });
  var t = ce(),
    n = t.deviceId,
    s = t.osName,
    r = t.uniPlatform,
    i = t.appId,
    o = ["pixelRatio", "brand", "model", "system", "language", "version", "platform", "host", "SDKVersion", "swanNativeVersion", "app", "AppPlatform", "fontSizeSetting"];
  for (var _e3 = 0; _e3 < o.length; _e3++) {
    delete t[o[_e3]];
  }
  return ae = _objectSpread(_objectSpread({
    PLATFORM: r,
    OS: s,
    APPID: i,
    DEVICEID: n
  }, ue()), t), _objectSpread(_objectSpread({}, ae), {}, {
    locale: e,
    LOCALE: e
  });
}
var le = {
    sign: function sign(e, t) {
      var n = "";
      return Object.keys(e).sort().forEach(function (t) {
        e[t] && (= n + "&" + t + "=" + e[t]);
      }), n = n.slice(1), o(n, t).toString();
    },
    wrappedRequest: function wrappedRequest(e, t) {
      return new Promise(function (n, s) {
        t(Object.assign(e, {
          complete: function complete(e) {
            e || (= {}), b && "web" === P && e.errMsg && 0 === e.errMsg.indexOf("request:fail") && console.warn("发布H5,需要在uniCloud后台操作,绑定安全域名,否则会因为跨域问题而无法访问。教程参考:https://uniapp.dcloud.io/uniCloud/quickstart?id=useinh5");
            var t = e.data && e.data.header && e.data.header["x-serverless-request-id"] || e.header && e.header["request-id"];
            if (!e.statusCode || e.statusCode >= 400) return s(new ne({
              code: "SYS_ERR",
              message: e.errMsg || "request:fail",
              requestId: t
            }));
            var r = e.data;
            if (r.error) return s(new ne({
              code: r.error.code,
              message: r.error.message,
              requestId: t
            }));
            r.result = r.data, r.requestId = t, delete r.data, n(r);
          }
        }));
      });
    },
    toBase64: function toBase64(e) {
      return c.stringify(a.parse(e));
    }
  },
  de = {
    "uniCloud.init.paramRequired": "{param} required",
    "uniCloud.uploadFile.fileError": "filePath should be instance of File"
  };
var _e4 = (0, _uniI18n.initVueI18n)({
    "zh-Hans": {
      "uniCloud.init.paramRequired": "缺少参数:{param}",
      "uniCloud.uploadFile.fileError": "filePath应为File对象"
    },
    "zh-Hant": {
      "uniCloud.init.paramRequired": "缺少参数:{param}",
      "uniCloud.uploadFile.fileError": "filePath应为File对象"
    },
    en: de,
    fr: {
      "uniCloud.init.paramRequired": "{param} required",
      "uniCloud.uploadFile.fileError": "filePath should be instance of File"
    },
    es: {
      "uniCloud.init.paramRequired": "{param} required",
      "uniCloud.uploadFile.fileError": "filePath should be instance of File"
    },
    ja: de
  }, "zh-Hans"),
  pe = _e4.t;
var fe = /*#__PURE__*/function () {
  function fe(e) {
    var _this3 = this;
    (0, _classCallCheck2.default)(this, fe);
    ["spaceId", "clientSecret"].forEach(function (t) {
      if (!Object.prototype.hasOwnProperty.call(e, t)) throw new Error(pe("uniCloud.init.paramRequired", {
        param: t
      }));
    }), this.config = Object.assign({}, {
      endpoint: 0 === e.spaceId.indexOf("mp-") ? "https://api.next.bspapp.com" : "https://api.bspapp.com"
    }, e), this.config.provider = "aliyun", this.config.requestUrl = this.config.endpoint + "/client", this.config.envType = this.config.envType || "public", this.config.accessTokenKey = "access_token_" + this.config.spaceId, this.adapter = se, this._getAccessTokenPromiseHub = new I({
      createPromise: function createPromise() {
        return _this3.requestAuth(_this3.setupRequest({
          method: "serverless.auth.user.anonymousAuthorize",
          params: "{}"
        }, "auth")).then(function (e) {
          if (!e.result || !e.result.accessToken) throw new ne({
            code: "AUTH_FAILED",
            message: "获取accessToken失败"
          });
          _this3.setAccessToken(e.result.accessToken);
        });
      },
      retryRule: v
    });
  }
  (0, _createClass2.default)(fe, [{
    key: "hasAccessToken",
    get: function get() {
      return !!this.accessToken;
    }
  }, {
    key: "setAccessToken",
    value: function setAccessToken(e) {
      this.accessToken = e;
    }
  }, {
    key: "requestWrapped",
    value: function requestWrapped(e) {
      return le.wrappedRequest(e, this.adapter.request);
    }
  }, {
    key: "requestAuth",
    value: function requestAuth(e) {
      return this.requestWrapped(e);
    }
  }, {
    key: "request",
    value: function request(e, t) {
      var _this4 = this;
      return Promise.resolve().then(function () {
        return _this4.hasAccessToken ? t ? _this4.requestWrapped(e) : _this4.requestWrapped(e).catch(function (t) {
          return new Promise(function (e, n) {
            !|| "GATEWAY_INVALID_TOKEN" !== t.code && "InvalidParameter.InvalidToken" !== t.code ? n(t) : e();
          }).then(function () {
            return _this4.getAccessToken();
          }).then(function () {
            var t = _this4.rebuildRequest(e);
            return _this4.request(t, !0);
          });
        }) : _this4.getAccessToken().then(function () {
          var t = _this4.rebuildRequest(e);
          return _this4.request(t, !0);
        });
      });
    }
  }, {
    key: "rebuildRequest",
    value: function rebuildRequest(e) {
      var t = Object.assign({}, e);
      return t.data.token = this.accessToken, t.header["x-basement-token"] = this.accessToken, t.header["x-serverless-sign"] = le.sign(t.data, this.config.clientSecret), t;
    }
  }, {
    key: "setupRequest",
    value: function setupRequest(e, t) {
      var n = Object.assign({}, e, {
          spaceId: this.config.spaceId,
          timestamp: Date.now()
        }),
        s = {
          "Content-Type": "application/json"
        };
      return "auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = le.sign(n, this.config.clientSecret), {
        url: this.config.requestUrl,
        method: "POST",
        data: n,
        dataType: "json",
        header: s
      };
    }
  }, {
    key: "getAccessToken",
    value: function getAccessToken() {
      return this._getAccessTokenPromiseHub.exec();
    }
  }, {
    key: "authorize",
    value: function () {
      var _authorize = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
        return _regenerator.default.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.next = 2;
                return this.getAccessToken();
              case 2:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));
      function authorize() {
        return _authorize.apply(this, arguments);
      }
      return authorize;
    }()
  }, {
    key: "callFunction",
    value: function callFunction(e) {
      var t = {
        method: "serverless.function.runtime.invoke",
        params: JSON.stringify({
          functionTarget: e.name,
          functionArgs: e.data || {}
        })
      };
      return this.request(this.setupRequest(t));
    }
  }, {
    key: "getOSSUploadOptionsFromPath",
    value: function getOSSUploadOptionsFromPath(e) {
      var t = {
        method: "serverless.file.resource.generateProximalSign",
        params: JSON.stringify(e)
      };
      return this.request(this.setupRequest(t));
    }
  }, {
    key: "uploadFileToOSS",
    value: function uploadFileToOSS(_ref3) {
      var _this5 = this;
      var e = _ref3.url,
        t = _ref3.formData,
        n = _ref3.name,
        s = _ref3.filePath,
        r = _ref3.fileType,
        i = _ref3.onUploadProgress;
      return new Promise(function (o, a) {
        var c = _this5.adapter.uploadFile({
          url: e,
          formData: t,
          name: n,
          filePath: s,
          fileType: r,
          header: {
            "X-OSS-server-side-encrpytion": "AES256"
          },
          success: function success(e) {
            e && e.statusCode < 400 ? o(e) : a(new ne({
              code: "UPLOAD_FAILED",
              message: "文件上传失败"
            }));
          },
          fail: function fail(e) {
            a(new ne({
              code: e.code || "UPLOAD_FAILED",
              message: e.message || e.errMsg || "文件上传失败"
            }));
          }
        });
        "function" == typeof i && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) {
          i({
            loaded: e.totalBytesSent,
            total: e.totalBytesExpectedToSend
          });
        });
      });
    }
  }, {
    key: "reportOSSUpload",
    value: function reportOSSUpload(e) {
      var t = {
        method: "serverless.file.resource.report",
        params: JSON.stringify(e)
      };
      return this.request(this.setupRequest(t));
    }
  }, {
    key: "uploadFile",
    value: function () {
      var _uploadFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref4) {
        var e, t, _ref4$fileType, n, _ref4$cloudPathAsReal, s, r, i, o, a, c, u, h, l, d, p, f, m, y, _, _e5, w;
        return _regenerator.default.wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                e = _ref4.filePath, t = _ref4.cloudPath, _ref4$fileType = _ref4.fileType, n = _ref4$fileType === void 0 ? "image" : _ref4$fileType, _ref4$cloudPathAsReal = _ref4.cloudPathAsRealPath, s = _ref4$cloudPathAsReal === void 0 ? !1 : _ref4$cloudPathAsReal, r = _ref4.onUploadProgress, i = _ref4.config;
                if (!("string" !== g(t))) {
                  _context2.next = 3;
                  break;
                }
                throw new ne({
                  code: "INVALID_PARAM",
                  message: "cloudPath必须为字符串类型"
                });
              case 3:
                if (= t.trim()) {
                  _context2.next = 5;
                  break;
                }
                throw new ne({
                  code: "INVALID_PARAM",
                  message: "cloudPath不可为空"
                });
              case 5:
                if (!/:\/\//.test(t)) {
                  _context2.next = 7;
                  break;
                }
                throw new ne({
                  code: "INVALID_PARAM",
                  message: "cloudPath不合法"
                });
              case 7:
                o = i && i.envType || this.config.envType;
                if (!(&& ("/" !== t[0] && (= "/" + t), t.indexOf("\\") > -1))) {
                  _context2.next = 10;
                  break;
                }
                throw new ne({
                  code: "INVALID_PARAM",
                  message: "使用cloudPath作为路径时,cloudPath不可包含“\\”"
                });
              case 10:
                _context2.next = 12;
                return this.getOSSUploadOptionsFromPath({
                  env: o,
                  filename: s ? t.split("/").pop() : t,
                  fileId: s ? t : void 0
                });
              case 12:
                a = _context2.sent.result;
                c = "https://" + a.cdnDomain + "/" + a.ossPath;
                u = a.securityToken;
                h = a.accessKeyId;
                l = a.signature;
                d = a.host;
                p = a.ossPath;
                f = a.id;
                m = a.policy;
                y = a.ossCallbackUrl;
                _ = {
                  "Cache-Control": "max-age=2592000",
                  "Content-Disposition": "attachment",
                  OSSAccessKeyId: h,
                  Signature: l,
                  host: d,
                  id: f,
                  key: p,
                  policy: m,
                  success_action_status: 200
                };
                if (&& (_["x-oss-security-token"] = u), y) {
                  _e5 = JSON.stringify({
                    callbackUrl: y,
                    callbackBody: JSON.stringify({
                      fileId: f,
                      spaceId: this.config.spaceId
                    }),
                    callbackBodyType: "application/json"
                  });
                  _.callback = le.toBase64(_e5);
                }
                w = {
                  url: "https://" + a.host,
                  formData: _,
                  fileName: "file",
                  name: "file",
                  filePath: e,
                  fileType: n
                };
                _context2.next = 27;
                return this.uploadFileToOSS(Object.assign({}, w, {
                  onUploadProgress: r
                }));
              case 27:
                if (!y) {
                  _context2.next = 29;
                  break;
                }
                return _context2.abrupt("return", {
                  success: !0,
                  filePath: e,
                  fileID: c
                });
              case 29:
                _context2.next = 31;
                return this.reportOSSUpload({
                  id: f
                });
              case 31:
                if (!_context2.sent.success) {
                  _context2.next = 33;
                  break;
                }
                return _context2.abrupt("return", {
                  success: !0,
                  filePath: e,
                  fileID: c
                });
              case 33:
                throw new ne({
                  code: "UPLOAD_FAILED",
                  message: "文件上传失败"
                });
              case 34:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2, this);
      }));
      function uploadFile(_x) {
        return _uploadFile.apply(this, arguments);
      }
      return uploadFile;
    }()
  }, {
    key: "getTempFileURL",
    value: function getTempFileURL() {
      var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
        e = _ref5.fileList;
      return new Promise(function (t, n) {
        Array.isArray(e) && 0 !== e.length || n(new ne({
          code: "INVALID_PARAM",
          message: "fileList的元素必须是非空的字符串"
        })), t({
          fileList: e.map(function (e) {
            return {
              fileID: e,
              tempFileURL: e
            };
          })
        });
      });
    }
  }, {
    key: "getFileInfo",
    value: function () {
      var _getFileInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
        var _ref6,
          e,
          t,
          _args3 = arguments;
        return _regenerator.default.wrap(function _callee3$(_context3) {
          while (1) {
            switch (_context3.prev = _context3.next) {
              case 0:
                _ref6 = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}, e = _ref6.fileList;
                if (!(!Array.isArray(e) || 0 === e.length)) {
                  _context3.next = 3;
                  break;
                }
                throw new ne({
                  code: "INVALID_PARAM",
                  message: "fileList的元素必须是非空的字符串"
                });
              case 3:
                t = {
                  method: "serverless.file.resource.info",
                  params: JSON.stringify({
                    id: e.map(function (e) {
                      return e.split("?")[0];
                    }).join(",")
                  })
                };
                _context3.next = 6;
                return this.request(this.setupRequest(t));
              case 6:
                _context3.t0 = _context3.sent.result;
                return _context3.abrupt("return", {
                  fileList: _context3.t0
                });
              case 8:
              case "end":
                return _context3.stop();
            }
          }
        }, _callee3, this);
      }));
      function getFileInfo() {
        return _getFileInfo.apply(this, arguments);
      }
      return getFileInfo;
    }()
  }]);
  return fe;
}();
var ge = {
  init: function init(e) {
    var t = new fe(e),
      n = {
        signInAnonymously: function signInAnonymously() {
          return t.authorize();
        },
        getLoginState: function getLoginState() {
          return Promise.resolve(!1);
        }
      };
    return t.auth = function () {
      return n;
    }, t.customAuth = t.auth, t;
  }
};
var me = "undefined" != typeof location && "http:" === location.protocol ? "http:" : "https:";
var ye;
!function (e) {
  e.local = "local", e.none = "none", e.session = "session";
}(ye || (ye = {}));
var _e = function _e() {};
var we = function we() {
  var e;
  if (!Promise) {
    e = function e() {}, e.promise = {};
    var _t3 = function _t3() {
      throw new ne({
        message: 'Your Node runtime does support ES6 Promises. Set "global.Promise" to your preferred implementation of promises.'
      });
    };
    return Object.defineProperty(e.promise, "then", {
      get: _t3
    }), Object.defineProperty(e.promise, "catch", {
      get: _t3
    }), e;
  }
  var t = new Promise(function (t, n) {
    e = function e(_e6, s) {
      return _e6 ? n(_e6) : t(s);
    };
  });
  return e.promise = t, e;
};
function ve(e) {
  return void 0 === e;
}
function Ie(e) {
  return "[object Null]" === Object.prototype.toString.call(e);
}
var Se;
function be(e) {
  var t = (= e, "[object Array]" === Object.prototype.toString.call(n) ? e : [e]);
  var n;
  var _iterator = _createForOfIteratorHelper(t),
    _step;
  try {
    for (_iterator.s(); !(_step = _iterator.n()).done;) {
      var _e7 = _step.value;
      var _t4 = _e7.isMatch,
        _n4 = _e7.genAdapter,
        _s4 = _e7.runtime;
      if (_t4()) return {
        adapter: _n4(),
        runtime: _s4
      };
    }
  } catch (err) {
    _iterator.e(err);
  } finally {
    _iterator.f();
  }
}
!function (e) {
  e.WEB = "web", e.WX_MP = "wx_mp";
}(Se || (Se = {}));
var ke = {
    adapter: null,
    runtime: void 0
  },
  Ce = ["anonymousUuidKey"];
var Te = /*#__PURE__*/function (_e8) {
  (0, _inherits2.default)(Te, _e8);
  var _super2 = _createSuper(Te);
  function Te() {
    var _this6;
    (0, _classCallCheck2.default)(this, Te);
    _this6 = _super2.call(this), ke.adapter.root.tcbObject || (ke.adapter.root.tcbObject = {});
    return _this6;
  }
  (0, _createClass2.default)(Te, [{
    key: "setItem",
    value: function setItem(e, t) {
      ke.adapter.root.tcbObject[e] = t;
    }
  }, {
    key: "getItem",
    value: function getItem(e) {
      return ke.adapter.root.tcbObject[e];
    }
  }, {
    key: "removeItem",
    value: function removeItem(e) {
      delete ke.adapter.root.tcbObject[e];
    }
  }, {
    key: "clear",
    value: function clear() {
      delete ke.adapter.root.tcbObject;
    }
  }]);
  return Te;
}(_e);
function Pe(e, t) {
  switch (e) {
    case "local":
      return t.localStorage || new Te();
    case "none":
      return new Te();
    default:
      return t.sessionStorage || new Te();
  }
}
var Ae = /*#__PURE__*/function () {
  function Ae(e) {
    (0, _classCallCheck2.default)(this, Ae);
    if (!this._storage) {
      this._persistence = ke.adapter.primaryStorage || e.persistence, this._storage = Pe(this._persistence, ke.adapter);
      var _t5 = "access_token_".concat(e.env),
        _n5 = "access_token_expire_".concat(e.env),
        _s5 = "refresh_token_".concat(e.env),
        _r = "anonymous_uuid_".concat(e.env),
        _i = "login_type_".concat(e.env),
        _o = "user_info_".concat(e.env);
      this.keys = {
        accessTokenKey: _t5,
        accessTokenExpireKey: _n5,
        refreshTokenKey: _s5,
        anonymousUuidKey: _r,
        loginTypeKey: _i,
        userInfoKey: _o
      };
    }
  }
  (0, _createClass2.default)(Ae, [{
    key: "updatePersistence",
    value: function updatePersistence(e) {
      if (=== this._persistence) return;
      var t = "local" === this._persistence;
      this._persistence = e;
      var n = Pe(e, ke.adapter);
      for (var _e9 in this.keys) {
        var _s6 = this.keys[_e9];
        if (&& Ce.includes(_e9)) continue;
        var _r2 = this._storage.getItem(_s6);
        ve(_r2) || Ie(_r2) || (n.setItem(_s6, _r2), this._storage.removeItem(_s6));
      }
      this._storage = n;
    }
  }, {
    key: "setStore",
    value: function setStore(e, t, n) {
      if (!this._storage) return;
      var s = {
          version: n || "localCachev1",
          content: t
        },
        r = JSON.stringify(s);
      try {
        this._storage.setItem(e, r);
      } catch (e) {
        throw e;
      }
    }
  }, {
    key: "getStore",
    value: function getStore(e, t) {
      try {
        if (!this._storage) return;
      } catch (e) {
        return "";
      }
      t = t || "localCachev1";
      var n = this._storage.getItem(e);
      if (!n) return "";
      if (n.indexOf(t) >= 0) {
        return JSON.parse(n).content;
      }
      return "";
    }
  }, {
    key: "removeStore",
    value: function removeStore(e) {
      this._storage.removeItem(e);
    }
  }]);
  return Ae;
}();
var Ee = {},
  Oe = {};
function xe(e) {
  return Ee[e];
}
var Re = /*#__PURE__*/(0, _createClass2.default)(function Re(e, t) {
  (0, _classCallCheck2.default)(this, Re);
  this.data = t || null, this.name = e;
});
var Ue = /*#__PURE__*/function (_Re) {
  (0, _inherits2.default)(Ue, _Re);
  var _super3 = _createSuper(Ue);
  function Ue(e, t) {
    var _this7;
    (0, _classCallCheck2.default)(this, Ue);
    _this7 = _super3.call(this, "error", {
      error: e,
      data: t
    }), _this7.error = e;
    return _this7;
  }
  return (0, _createClass2.default)(Ue);
}(Re);
var Le = new ( /*#__PURE__*/function () {
  function _class() {
    (0, _classCallCheck2.default)(this, _class);
    this._listeners = {};
  }
  (0, _createClass2.default)(_class, [{
    key: "on",
    value: function on(e, t) {
      return function (e, t, n) {
        n[e] = n[e] || [], n[e].push(t);
      }(e, t, this._listeners), this;
    }
  }, {
    key: "off",
    value: function off(e, t) {
      return function (e, t, n) {
        if (&& n[e]) {
          var _s7 = n[e].indexOf(t);
          -1 !== _s7 && n[e].splice(_s7, 1);
        }
      }(e, t, this._listeners), this;
    }
  }, {
    key: "fire",
    value: function fire(e, t) {
      if (e instanceof Ue) return console.error(e.error), this;
      var n = "string" == typeof e ? new Re(e, t || {}) : e;
      var s = n.name;
      if (this._listens(s)) {
        n.target = this;
        var _e10 = this._listeners[s] ? (0, _toConsumableArray2.default)(this._listeners[s]) : [];
        var _iterator2 = _createForOfIteratorHelper(_e10),
          _step2;
        try {
          for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
            var _t6 = _step2.value;
            _t6.call(this, n);
          }
        } catch (err) {
          _iterator2.e(err);
        } finally {
          _iterator2.f();
        }
      }
      return this;
    }
  }, {
    key: "_listens",
    value: function _listens(e) {
      return this._listeners[e] && this._listeners[e].length > 0;
    }
  }]);
  return _class;
}())();
function Ne(e, t) {
  Le.on(e, t);
}
function De(e) {
  var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  Le.fire(e, t);
}
function Fe(e, t) {
  Le.off(e, t);
}
var qe = "loginStateChanged",
  Me = "loginStateExpire",
  Ke = "loginTypeChanged",
  je = "anonymousConverted",
  Be = "refreshAccessToken";
var $e;
!function (e) {
  e.ANONYMOUS = "ANONYMOUS", e.WECHAT = "WECHAT", e.WECHAT_PUBLIC = "WECHAT-PUBLIC", e.WECHAT_OPEN = "WECHAT-OPEN", e.CUSTOM = "CUSTOM", e.EMAIL = "EMAIL", e.USERNAME = "USERNAME", e.NULL = "NULL";
}($e || ($e = {}));
var We = ["auth.getJwt", "auth.logout", "auth.signInWithTicket", "auth.signInAnonymously", "auth.signIn", "auth.fetchAccessTokenWithRefreshToken", "auth.signUpWithEmailAndPassword", "auth.activateEndUserMail", "auth.sendPasswordResetEmail", "auth.resetPasswordWithToken", "auth.isUsernameRegistered"],
  ze = {
    "X-SDK-Version": "1.3.5"
  };
function Je(e, t, n) {
  var s = e[t];
  e[t] = function (t) {
    var r = {},
      i = {};
    n.forEach(function (n) {
      var _n$call = n.call(e, t),
        s = _n$call.data,
        o = _n$call.headers;
      Object.assign(r, s), Object.assign(i, o);
    });
    var o = t.data;
    return o && function () {
      var e;
      if (= o, "[object FormData]" !== Object.prototype.toString.call(e)) t.data = _objectSpread(_objectSpread({}, o), r);else for (var _e11 in r) {
        o.append(_e11, r[_e11]);
      }
    }(), t.headers = _objectSpread(_objectSpread({}, t.headers || {}), i), s.call(e, t);
  };
}
function He() {
  var e = Math.random().toString(16).slice(2);
  return {
    data: {
      seqId: e
    },
    headers: _objectSpread(_objectSpread({}, ze), {}, {
      "x-seqid": e
    })
  };
}
var Ge = /*#__PURE__*/function () {
  function Ge() {
    var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    (0, _classCallCheck2.default)(this, Ge);
    var t;
    this.config = e, this._reqClass = new ke.adapter.reqClass({
      timeout: this.config.timeout,
      timeoutMsg: "\u8BF7\u6C42\u5728".concat(this.config.timeout / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD"),
      restrictedMethods: ["post"]
    }), this._cache = xe(this.config.env), this._localCache = (= this.config.env, Oe[t]), Je(this._reqClass, "post", [He]), Je(this._reqClass, "upload", [He]), Je(this._reqClass, "download", [He]);
  }
  (0, _createClass2.default)(Ge, [{
    key: "post",
    value: function () {
      var _post = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(e) {
        return _regenerator.default.wrap(function _callee4$(_context4) {
          while (1) {
            switch (_context4.prev = _context4.next) {
              case 0:
                _context4.next = 2;
                return this._reqClass.post(e);
              case 2:
                return _context4.abrupt("return", _context4.sent);
              case 3:
              case "end":
                return _context4.stop();
            }
          }
        }, _callee4, this);
      }));
      function post(_x2) {
        return _post.apply(this, arguments);
      }
      return post;
    }()
  }, {
    key: "upload",
    value: function () {
      var _upload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(e) {
        return _regenerator.default.wrap(function _callee5$(_context5) {
          while (1) {
            switch (_context5.prev = _context5.next) {
              case 0:
                _context5.next = 2;
                return this._reqClass.upload(e);
              case 2:
                return _context5.abrupt("return", _context5.sent);
              case 3:
              case "end":
                return _context5.stop();
            }
          }
        }, _callee5, this);
      }));
      function upload(_x3) {
        return _upload.apply(this, arguments);
      }
      return upload;
    }()
  }, {
    key: "download",
    value: function () {
      var _download = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(e) {
        return _regenerator.default.wrap(function _callee6$(_context6) {
          while (1) {
            switch (_context6.prev = _context6.next) {
              case 0:
                _context6.next = 2;
                return this._reqClass.download(e);
              case 2:
                return _context6.abrupt("return", _context6.sent);
              case 3:
              case "end":
                return _context6.stop();
            }
          }
        }, _callee6, this);
      }));
      function download(_x4) {
        return _download.apply(this, arguments);
      }
      return download;
    }()
  }, {
    key: "refreshAccessToken",
    value: function () {
      var _refreshAccessToken2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
        var e, t;
        return _regenerator.default.wrap(function _callee7$(_context7) {
          while (1) {
            switch (_context7.prev = _context7.next) {
              case 0:
                this._refreshAccessTokenPromise || (this._refreshAccessTokenPromise = this._refreshAccessToken());
                _context7.prev = 1;
                _context7.next = 4;
                return this._refreshAccessTokenPromise;
              case 4:
                e = _context7.sent;
                _context7.next = 10;
                break;
              case 7:
                _context7.prev = 7;
                _context7.t0 = _context7["catch"](1);
                t = _context7.t0;
              case 10:
                if (!(this._refreshAccessTokenPromise = null, this._shouldRefreshAccessTokenHook = null, t)) {
                  _context7.next = 12;
                  break;
                }
                throw t;
              case 12:
                return _context7.abrupt("return", e);
              case 13:
              case "end":
                return _context7.stop();
            }
          }
        }, _callee7, this, [[1, 7]]);
      }));
      function refreshAccessToken() {
        return _refreshAccessToken2.apply(this, arguments);
      }
      return refreshAccessToken;
    }()
  }, {
    key: "_refreshAccessToken",
    value: function () {
      var _refreshAccessToken3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
        var _this$_cache$keys, e, t, n, s, r, i, o, a, _e12, _e13, _t7, _s8;
        return _regenerator.default.wrap(function _callee8$(_context8) {
          while (1) {
            switch (_context8.prev = _context8.next) {
              case 0:
                _this$_cache$keys = this._cache.keys, e = _this$_cache$keys.accessTokenKey, t = _this$_cache$keys.accessTokenExpireKey, n = _this$_cache$keys.refreshTokenKey, s = _this$_cache$keys.loginTypeKey, r = _this$_cache$keys.anonymousUuidKey;
                this._cache.removeStore(e), this._cache.removeStore(t);
                i = this._cache.getStore(n);
                if (i) {
                  _context8.next = 5;
                  break;
                }
                throw new ne({
                  message: "未登录CloudBase"
                });
              case 5:
                o = {
                  refresh_token: i
                };
                _context8.next = 8;
                return this.request("auth.fetchAccessTokenWithRefreshToken", o);
              case 8:
                a = _context8.sent;
                if (!a.data.code) {
                  _context8.next = 21;
                  break;
                }
                _e12 = a.data.code;
                if (!("SIGN_PARAM_INVALID" === _e12 || "REFRESH_TOKEN_EXPIRED" === _e12 || "INVALID_REFRESH_TOKEN" === _e12)) {
                  _context8.next = 20;
                  break;
                }
                if (!(this._cache.getStore(s) === $e.ANONYMOUS && "INVALID_REFRESH_TOKEN" === _e12)) {
                  _context8.next = 19;
                  break;
                }
                _e13 = this._cache.getStore(r);
                _t7 = this._cache.getStore(n);
                _context8.next = 17;
                return this.send("auth.signInAnonymously", {
                  anonymous_uuid: _e13,
                  refresh_token: _t7
                });
              case 17:
                _s8 = _context8.sent;
                return _context8.abrupt("return", (this.setRefreshToken(_s8.refresh_token), this._refreshAccessToken()));
              case 19:
                De(Me), this._cache.removeStore(n);
              case 20:
                throw new ne({
                  code: a.data.code,
                  message: "\u5237\u65B0access token\u5931\u8D25\uFF1A".concat(a.data.code)
                });
              case 21:
                if (!a.data.access_token) {
                  _context8.next = 23;
                  break;
                }
                return _context8.abrupt("return", (De(Be), this._cache.setStore(e, a.data.access_token), this._cache.setStore(t, a.data.access_token_expire + Date.now()), {
                  accessToken: a.data.access_token,
                  accessTokenExpire: a.data.access_token_expire
                }));
              case 23:
                a.data.refresh_token && (this._cache.removeStore(n), this._cache.setStore(n, a.data.refresh_token), this._refreshAccessToken());
              case 24:
              case "end":
                return _context8.stop();
            }
          }
        }, _callee8, this);
      }));
      function _refreshAccessToken() {
        return _refreshAccessToken3.apply(this, arguments);
      }
      return _refreshAccessToken;
    }()
  }, {
    key: "getAccessToken",
    value: function () {
      var _getAccessToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
        var _this$_cache$keys2, e, t, n, s, r, i;
        return _regenerator.default.wrap(function _callee9$(_context9) {
          while (1) {
            switch (_context9.prev = _context9.next) {
              case 0:
                _this$_cache$keys2 = this._cache.keys, e = _this$_cache$keys2.accessTokenKey, t = _this$_cache$keys2.accessTokenExpireKey, n = _this$_cache$keys2.refreshTokenKey;
                if (this._cache.getStore(n)) {
                  _context9.next = 3;
                  break;
                }
                throw new ne({
                  message: "refresh token不存在,登录状态异常"
                });
              case 3:
                s = this._cache.getStore(e), r = this._cache.getStore(t), i = !0;
                _context9.t0 = this._shouldRefreshAccessTokenHook;
                if (!_context9.t0) {
                  _context9.next = 9;
                  break;
                }
                _context9.next = 8;
                return this._shouldRefreshAccessTokenHook(s, r);
              case 8:
                _context9.t0 = !_context9.sent;
              case 9:
                _context9.t1 = _context9.t0;
                if (!_context9.t1) {
                  _context9.next = 12;
                  break;
                }
                i = !1;
              case 12:
                return _context9.abrupt("return", (!|| !|| r < Date.now()) && i ? this.refreshAccessToken() : {
                  accessToken: s,
                  accessTokenExpire: r
                });
              case 13:
              case "end":
                return _context9.stop();
            }
          }
        }, _callee9, this);
      }));
      function getAccessToken() {
        return _getAccessToken.apply(this, arguments);
      }
      return getAccessToken;
    }()
  }, {
    key: "request",
    value: function () {
      var _request = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(e, t, n) {
        var s, r, i, _e14, o, _e15, _e16, a, c, u, h, l, d, p, f, g;
        return _regenerator.default.wrap(function _callee10$(_context10) {
          while (1) {
            switch (_context10.prev = _context10.next) {
              case 0:
                s = "x-tcb-trace_".concat(this.config.env);
                r = "application/x-www-form-urlencoded";
                i = _objectSpread({
                  action: e,
                  env: this.config.env,
                  dataVersion: "2019-08-16"
                }, t);
                if (!(-1 === We.indexOf(e))) {
                  _context10.next = 10;
                  break;
                }
                _e14 = this._cache.keys.refreshTokenKey;
                _context10.t0 = this._cache.getStore(_e14);
                if (!_context10.t0) {
                  _context10.next = 10;
                  break;
                }
                _context10.next = 9;
                return this.getAccessToken();
              case 9:
                i.access_token = _context10.sent.accessToken;
              case 10:
                if ("storage.uploadFile" === e) {
                  o = new FormData();
                  for (_e15 in o) {
                    o.hasOwnProperty(_e15) && void 0 !== o[_e15] && o.append(_e15, i[_e15]);
                  }
                  r = "multipart/form-data";
                } else {
                  r = "application/json", o = {};
                  for (_e16 in i) {
                    void 0 !== i[_e16] && (o[_e16] = i[_e16]);
                  }
                }
                a = {
                  headers: {
                    "content-type": r
                  }
                };
                n && n.onUploadProgress && (a.onUploadProgress = n.onUploadProgress);
                c = this._localCache.getStore(s);
                c && (a.headers["X-TCB-Trace"] = c);
                u = t.parse, h = t.inQuery, l = t.search;
                d = {
                  env: this.config.env
                };
                u && (d.parse = !0), h && (= _objectSpread(_objectSpread({}, h), d));
                p = function (e, t) {
                  var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
                  var s = /\?/.test(t);
                  var r = "";
                  for (var _e17 in n) {
                    "" === r ? !&& (+= "?") : r += "&", r += "".concat(_e17, "=").concat(encodeURIComponent(n[_e17]));
                  }
                  return /^http(s)?\:\/\//.test(+= r) ? t : "".concat(e).concat(t);
                }(me, "//tcb-api.tencentcloudapi.com/web", d);
                l && (+= l);
                _context10.next = 22;
                return this.post(_objectSpread({
                  url: p,
                  data: o
                }, a));
              case 22:
                f = _context10.sent;
                g = f.header && f.header["x-tcb-trace"];
                if (!(&& this._localCache.setStore(s, g), 200 !== Number(f.status) && 200 !== Number(f.statusCode) || !f.data)) {
                  _context10.next = 26;
                  break;
                }
                throw new ne({
                  code: "NETWORK_ERROR",
                  message: "network request error"
                });
              case 26:
                return _context10.abrupt("return", f);
              case 27:
              case "end":
                return _context10.stop();
            }
          }
        }, _callee10, this);
      }));
      function request(_x5, _x6, _x7) {
        return _request.apply(this, arguments);
      }
      return request;
    }()
  }, {
    key: "send",
    value: function () {
      var _send = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(e) {
        var t,
          n,
          _n6,
          _args11 = arguments;
        return _regenerator.default.wrap(function _callee11$(_context11) {
          while (1) {
            switch (_context11.prev = _context11.next) {
              case 0:
                t = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : {};
                _context11.next = 3;
                return this.request(e, t, {
                  onUploadProgress: t.onUploadProgress
                });
              case 3:
                n = _context11.sent;
                if (!("ACCESS_TOKEN_EXPIRED" === n.data.code && -1 === We.indexOf(e))) {
                  _context11.next = 13;
                  break;
                }
                _context11.next = 7;
                return this.refreshAccessToken();
              case 7:
                _context11.next = 9;
                return this.request(e, t, {
                  onUploadProgress: t.onUploadProgress
                });
              case 9:
                _n6 = _context11.sent;
                if (!_n6.data.code) {
                  _context11.next = 12;
                  break;
                }
                throw new ne({
                  code: _n6.data.code,
                  message: _n6.data.message
                });
              case 12:
                return _context11.abrupt("return", _n6.data);
              case 13:
                if (!n.data.code) {
                  _context11.next = 15;
                  break;
                }
                throw new ne({
                  code: n.data.code,
                  message: n.data.message
                });
              case 15:
                return _context11.abrupt("return", n.data);
              case 16:
              case "end":
                return _context11.stop();
            }
          }
        }, _callee11, this);
      }));
      function send(_x8) {
        return _send.apply(this, arguments);
      }
      return send;
    }()
  }, {
    key: "setRefreshToken",
    value: function setRefreshToken(e) {
      var _this$_cache$keys3 = this._cache.keys,
        t = _this$_cache$keys3.accessTokenKey,
        n = _this$_cache$keys3.accessTokenExpireKey,
        s = _this$_cache$keys3.refreshTokenKey;
      this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e);
    }
  }]);
  return Ge;
}();
var Ve = {};
function Ye(e) {
  return Ve[e];
}
var Qe = /*#__PURE__*/function () {
  function Qe(e) {
    (0, _classCallCheck2.default)(this, Qe);
    this.config = e, this._cache = xe(e.env), this._request = Ye(e.env);
  }
  (0, _createClass2.default)(Qe, [{
    key: "setRefreshToken",
    value: function setRefreshToken(e) {
      var _this$_cache$keys4 = this._cache.keys,
        t = _this$_cache$keys4.accessTokenKey,
        n = _this$_cache$keys4.accessTokenExpireKey,
        s = _this$_cache$keys4.refreshTokenKey;
      this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e);
    }
  }, {
    key: "setAccessToken",
    value: function setAccessToken(e, t) {
      var _this$_cache$keys5 = this._cache.keys,
        n = _this$_cache$keys5.accessTokenKey,
        s = _this$_cache$keys5.accessTokenExpireKey;
      this._cache.setStore(n, e), this._cache.setStore(s, t);
    }
  }, {
    key: "refreshUserInfo",
    value: function () {
      var _refreshUserInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {
        var _yield$this$_request$, e;
        return _regenerator.default.wrap(function _callee12$(_context12) {
          while (1) {
            switch (_context12.prev = _context12.next) {
              case 0:
                _context12.next = 2;
                return this._request.send("auth.getUserInfo", {});
              case 2:
                _yield$this$_request$ = _context12.sent;
                e = _yield$this$_request$.data;
                return _context12.abrupt("return", (this.setLocalUserInfo(e), e));
              case 5:
              case "end":
                return _context12.stop();
            }
          }
        }, _callee12, this);
      }));
      function refreshUserInfo() {
        return _refreshUserInfo.apply(this, arguments);
      }
      return refreshUserInfo;
    }()
  }, {
    key: "setLocalUserInfo",
    value: function setLocalUserInfo(e) {
      var t = this._cache.keys.userInfoKey;
      this._cache.setStore(t, e);
    }
  }]);
  return Qe;
}();
var Xe = /*#__PURE__*/function () {
  function Xe(e) {
    (0, _classCallCheck2.default)(this, Xe);
    if (!e) throw new ne({
      code: "PARAM_ERROR",
      message: "envId is not defined"
    });
    this._envId = e, this._cache = xe(this._envId), this._request = Ye(this._envId), this.setUserInfo();
  }
  (0, _createClass2.default)(Xe, [{
    key: "linkWithTicket",
    value: function linkWithTicket(e) {
      if ("string" != typeof e) throw new ne({
        code: "PARAM_ERROR",
        message: "ticket must be string"
      });
      return this._request.send("auth.linkWithTicket", {
        ticket: e
      });
    }
  }, {
    key: "linkWithRedirect",
    value: function linkWithRedirect(e) {
      e.signInWithRedirect();
    }
  }, {
    key: "updatePassword",
    value: function updatePassword(e, t) {
      return this._request.send("auth.updatePassword", {
        oldPassword: t,
        newPassword: e
      });
    }
  }, {
    key: "updateEmail",
    value: function updateEmail(e) {
      return this._request.send("auth.updateEmail", {
        newEmail: e
      });
    }
  }, {
    key: "updateUsername",
    value: function updateUsername(e) {
      if ("string" != typeof e) throw new ne({
        code: "PARAM_ERROR",
        message: "username must be a string"
      });
      return this._request.send("auth.updateUsername", {
        username: e
      });
    }
  }, {
    key: "getLinkedUidList",
    value: function () {
      var _getLinkedUidList = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {
        var _yield$this$_request$2, e, t, n;
        return _regenerator.default.wrap(function _callee13$(_context13) {
          while (1) {
            switch (_context13.prev = _context13.next) {
              case 0:
                _context13.next = 2;
                return this._request.send("auth.getLinkedUidList", {});
              case 2:
                _yield$this$_request$2 = _context13.sent;
                e = _yield$this$_request$2.data;
                t = !1;
                n = e.users;
                return _context13.abrupt("return", (n.forEach(function (e) {
                  e.wxOpenId && e.wxPublicId && (= !0);
                }), {
                  users: n,
                  hasPrimaryUid: t
                }));
              case 7:
              case "end":
                return _context13.stop();
            }
          }
        }, _callee13, this);
      }));
      function getLinkedUidList() {
        return _getLinkedUidList.apply(this, arguments);
      }
      return getLinkedUidList;
    }()
  }, {
    key: "setPrimaryUid",
    value: function setPrimaryUid(e) {
      return this._request.send("auth.setPrimaryUid", {
        uid: e
      });
    }
  }, {
    key: "unlink",
    value: function unlink(e) {
      return this._request.send("auth.unlink", {
        platform: e
      });
    }
  }, {
    key: "update",
    value: function () {
      var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(e) {
        var t, n, s, r, i, o, _yield$this$_request$3, a;
        return _regenerator.default.wrap(function _callee14$(_context14) {
          while (1) {
            switch (_context14.prev = _context14.next) {
              case 0:
                t = e.nickName;
                n = e.gender;
                s = e.avatarUrl;
                r = e.province;
                i = e.country;
                o = e.city;
                _context14.next = 8;
                return this._request.send("auth.updateUserInfo", {
                  nickName: t,
                  gender: n,
                  avatarUrl: s,
                  province: r,
                  country: i,
                  city: o
                });
              case 8:
                _yield$this$_request$3 = _context14.sent;
                a = _yield$this$_request$3.data;
                this.setLocalUserInfo(a);
              case 11:
              case "end":
                return _context14.stop();
            }
          }
        }, _callee14, this);
      }));
      function update(_x9) {
        return _update.apply(this, arguments);
      }
      return update;
    }()
  }, {
    key: "refresh",
    value: function () {
      var _refresh = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
        var _yield$this$_request$4, e;
        return _regenerator.default.wrap(function _callee15$(_context15) {
          while (1) {
            switch (_context15.prev = _context15.next) {
              case 0:
                _context15.next = 2;
                return this._request.send("auth.getUserInfo", {});
              case 2:
                _yield$this$_request$4 = _context15.sent;
                e = _yield$this$_request$4.data;
                return _context15.abrupt("return", (this.setLocalUserInfo(e), e));
              case 5:
              case "end":
                return _context15.stop();
            }
          }
        }, _callee15, this);
      }));
      function refresh() {
        return _refresh.apply(this, arguments);
      }
      return refresh;
    }()
  }, {
    key: "setUserInfo",
    value: function setUserInfo() {
      var _this8 = this;
      var e = this._cache.keys.userInfoKey,
        t = this._cache.getStore(e);
      ["uid", "loginType", "openid", "wxOpenId", "wxPublicId", "unionId", "qqMiniOpenId", "email", "hasPassword", "customUserId", "nickName", "gender", "avatarUrl"].forEach(function (e) {
        _this8[e] = t[e];
      }), this.location = {
        country: t.country,
        province: t.province,
        city: t.city
      };
    }
  }, {
    key: "setLocalUserInfo",
    value: function setLocalUserInfo(e) {
      var t = this._cache.keys.userInfoKey;
      this._cache.setStore(t, e), this.setUserInfo();
    }
  }]);
  return Xe;
}();
var Ze = /*#__PURE__*/function () {
  function Ze(e) {
    (0, _classCallCheck2.default)(this, Ze);
    if (!e) throw new ne({
      code: "PARAM_ERROR",
      message: "envId is not defined"
    });
    this._cache = xe(e);
    var _this$_cache$keys6 = this._cache.keys,
      t = _this$_cache$keys6.refreshTokenKey,
      n = _this$_cache$keys6.accessTokenKey,
      s = _this$_cache$keys6.accessTokenExpireKey,
      r = this._cache.getStore(t),
      i = this._cache.getStore(n),
      o = this._cache.getStore(s);
    this.credential = {
      refreshToken: r,
      accessToken: i,
      accessTokenExpire: o
    }, this.user = new Xe(e);
  }
  (0, _createClass2.default)(Ze, [{
    key: "isAnonymousAuth",
    get: function get() {
      return this.loginType === $e.ANONYMOUS;
    }
  }, {
    key: "isCustomAuth",
    get: function get() {
      return this.loginType === $e.CUSTOM;
    }
  }, {
    key: "isWeixinAuth",
    get: function get() {
      return this.loginType === $e.WECHAT || this.loginType === $e.WECHAT_OPEN || this.loginType === $e.WECHAT_PUBLIC;
    }
  }, {
    key: "loginType",
    get: function get() {
      return this._cache.getStore(this._cache.keys.loginTypeKey);
    }
  }]);
  return Ze;
}();
var et = /*#__PURE__*/function (_Qe) {
  (0, _inherits2.default)(et, _Qe);
  var _super4 = _createSuper(et);
  function et() {
    (0, _classCallCheck2.default)(this, et);
    return _super4.apply(this, arguments);
  }
  (0, _createClass2.default)(et, [{
    key: "signIn",
    value: function () {
      var _signIn = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
        var _this$_cache$keys7, e, t, n, s, r, _e18;
        return _regenerator.default.wrap(function _callee16$(_context16) {
          while (1) {
            switch (_context16.prev = _context16.next) {
              case 0:
                this._cache.updatePersistence("local");
                _this$_cache$keys7 = this._cache.keys;
                e = _this$_cache$keys7.anonymousUuidKey;
                t = _this$_cache$keys7.refreshTokenKey;
                n = this._cache.getStore(e) || void 0;
                s = this._cache.getStore(t) || void 0;
                _context16.next = 8;
                return this._request.send("auth.signInAnonymously", {
                  anonymous_uuid: n,
                  refresh_token: s
                });
              case 8:
                r = _context16.sent;
                if (!(r.uuid && r.refresh_token)) {
                  _context16.next = 20;
                  break;
                }
                this._setAnonymousUUID(r.uuid);
                this.setRefreshToken(r.refresh_token);
                _context16.next = 14;
                return this._request.refreshAccessToken();
              case 14:
                De(qe);
                De(Ke, {
                  env: this.config.env,
                  loginType: $e.ANONYMOUS,
                  persistence: "local"
                });
                _e18 = new Ze(this.config.env);
                _context16.next = 19;
                return _e18.user.refresh();
              case 19:
                return _context16.abrupt("return", _e18);
              case 20:
                throw new ne({
                  message: "匿名登录失败"
                });
              case 21:
              case "end":
                return _context16.stop();
            }
          }
        }, _callee16, this);
      }));
      function signIn() {
        return _signIn.apply(this, arguments);
      }
      return signIn;
    }()
  }, {
    key: "linkAndRetrieveDataWithTicket",
    value: function () {
      var _linkAndRetrieveDataWithTicket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(e) {
        var _this$_cache$keys8, t, n, s, r, i;
        return _regenerator.default.wrap(function _callee17$(_context17) {
          while (1) {
            switch (_context17.prev = _context17.next) {
              case 0:
                _this$_cache$keys8 = this._cache.keys;
                t = _this$_cache$keys8.anonymousUuidKey;
                n = _this$_cache$keys8.refreshTokenKey;
                s = this._cache.getStore(t);
                r = this._cache.getStore(n);
                _context17.next = 7;
                return this._request.send("auth.linkAndRetrieveDataWithTicket", {
                  anonymous_uuid: s,
                  refresh_token: r,
                  ticket: e
                });
              case 7:
                i = _context17.sent;
                if (!i.refresh_token) {
                  _context17.next = 16;
                  break;
                }
                this._clearAnonymousUUID();
                this.setRefreshToken(i.refresh_token);
                _context17.next = 13;
                return this._request.refreshAccessToken();
              case 13:
                De(je, {
                  env: this.config.env
                });
                De(Ke, {
                  loginType: $e.CUSTOM,
                  persistence: "local"
                });
                return _context17.abrupt("return", {
                  credential: {
                    refreshToken: i.refresh_token
                  }
                });
              case 16:
                throw new ne({
                  message: "匿名转化失败"
                });
              case 17:
              case "end":
                return _context17.stop();
            }
          }
        }, _callee17, this);
      }));
      function linkAndRetrieveDataWithTicket(_x10) {
        return _linkAndRetrieveDataWithTicket.apply(this, arguments);
      }
      return linkAndRetrieveDataWithTicket;
    }()
  }, {
    key: "_setAnonymousUUID",
    value: function _setAnonymousUUID(e) {
      var _this$_cache$keys9 = this._cache.keys,
        t = _this$_cache$keys9.anonymousUuidKey,
        n = _this$_cache$keys9.loginTypeKey;
      this._cache.removeStore(t), this._cache.setStore(t, e), this._cache.setStore(n, $e.ANONYMOUS);
    }
  }, {
    key: "_clearAnonymousUUID",
    value: function _clearAnonymousUUID() {
      this._cache.removeStore(this._cache.keys.anonymousUuidKey);
    }
  }]);
  return et;
}(Qe);
var tt = /*#__PURE__*/function (_Qe2) {
  (0, _inherits2.default)(tt, _Qe2);
  var _super5 = _createSuper(tt);
  function tt() {
    (0, _classCallCheck2.default)(this, tt);
    return _super5.apply(this, arguments);
  }
  (0, _createClass2.default)(tt, [{
    key: "signIn",
    value: function () {
      var _signIn2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(e) {
        var t, n;
        return _regenerator.default.wrap(function _callee18$(_context18) {
          while (1) {
            switch (_context18.prev = _context18.next) {
              case 0:
                if (!("string" != typeof e)) {
                  _context18.next = 2;
                  break;
                }
                throw new ne({
                  code: "PARAM_ERROR",
                  message: "ticket must be a string"
                });
              case 2:
                t = this._cache.keys.refreshTokenKey;
                _context18.next = 5;
                return this._request.send("auth.signInWithTicket", {
                  ticket: e,
                  refresh_token: this._cache.getStore(t) || ""
                });
              case 5:
                n = _context18.sent;
                if (!n.refresh_token) {
                  _context18.next = 15;
                  break;
                }
                this.setRefreshToken(n.refresh_token);
                _context18.next = 10;
                return this._request.refreshAccessToken();
              case 10:
                De(qe);
                De(Ke, {
                  env: this.config.env,
                  loginType: $e.CUSTOM,
                  persistence: this.config.persistence
                });
                _context18.next = 14;
                return this.refreshUserInfo();
              case 14:
                return _context18.abrupt("return", new Ze(this.config.env));
              case 15:
                throw new ne({
                  message: "自定义登录失败"
                });
              case 16:
              case "end":
                return _context18.stop();
            }
          }
        }, _callee18, this);
      }));
      function signIn(_x11) {
        return _signIn2.apply(this, arguments);
      }
      return signIn;
    }()
  }]);
  return tt;
}(Qe);
var nt = /*#__PURE__*/function (_Qe3) {
  (0, _inherits2.default)(nt, _Qe3);
  var _super6 = _createSuper(nt);
  function nt() {
    (0, _classCallCheck2.default)(this, nt);
    return _super6.apply(this, arguments);
  }
  (0, _createClass2.default)(nt, [{
    key: "signIn",
    value: function () {
      var _signIn3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(e, t) {
        var n, s, r, i, o;
        return _regenerator.default.wrap(function _callee19$(_context19) {
          while (1) {
            switch (_context19.prev = _context19.next) {
              case 0:
                if (!("string" != typeof e)) {
                  _context19.next = 2;
                  break;
                }
                throw new ne({
                  code: "PARAM_ERROR",
                  message: "email must be a string"
                });
              case 2:
                n = this._cache.keys.refreshTokenKey;
                _context19.next = 5;
                return this._request.send("auth.signIn", {
                  loginType: "EMAIL",
                  email: e,
                  password: t,
                  refresh_token: this._cache.getStore(n) || ""
                });
              case 5:
                s = _context19.sent;
                r = s.refresh_token;
                i = s.access_token;
                o = s.access_token_expire;
                if (!r) {
                  _context19.next = 22;
                  break;
                }
                this.setRefreshToken(r);
                if (!(&& o)) {
                  _context19.next = 15;
                  break;
                }
                this.setAccessToken(i, o);
                _context19.next = 17;
                break;
              case 15:
                _context19.next = 17;
                return this._request.refreshAccessToken();
              case 17:
                _context19.next = 19;
                return this.refreshUserInfo();
              case 19:
                De(qe);
                De(Ke, {
                  env: this.config.env,
                  loginType: $e.EMAIL,
                  persistence: this.config.persistence
                });
                return _context19.abrupt("return", new Ze(this.config.env));
              case 22:
                throw s.code ? new ne({
                  code: s.code,
                  message: "\u90AE\u7BB1\u767B\u5F55\u5931\u8D25: ".concat(s.message)
                }) : new ne({
                  message: "邮箱登录失败"
                });
              case 23:
              case "end":
                return _context19.stop();
            }
          }
        }, _callee19, this);
      }));
      function signIn(_x12, _x13) {
        return _signIn3.apply(this, arguments);
      }
      return signIn;
    }()
  }, {
    key: "activate",
    value: function () {
      var _activate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(e) {
        return _regenerator.default.wrap(function _callee20$(_context20) {
          while (1) {
            switch (_context20.prev = _context20.next) {
              case 0:
                return _context20.abrupt("return", this._request.send("auth.activateEndUserMail", {
                  token: e
                }));
              case 1:
              case "end":
                return _context20.stop();
            }
          }
        }, _callee20, this);
      }));
      function activate(_x14) {
        return _activate.apply(this, arguments);
      }
      return activate;
    }()
  }, {
    key: "resetPasswordWithToken",
    value: function () {
      var _resetPasswordWithToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(e, t) {
        return _regenerator.default.wrap(function _callee21$(_context21) {
          while (1) {
            switch (_context21.prev = _context21.next) {
              case 0:
                return _context21.abrupt("return", this._request.send("auth.resetPasswordWithToken", {
                  token: e,
                  newPassword: t
                }));
              case 1:
              case "end":
                return _context21.stop();
            }
          }
        }, _callee21, this);
      }));
      function resetPasswordWithToken(_x15, _x16) {
        return _resetPasswordWithToken.apply(this, arguments);
      }
      return resetPasswordWithToken;
    }()
  }]);
  return nt;
}(Qe);
var st = /*#__PURE__*/function (_Qe4) {
  (0, _inherits2.default)(st, _Qe4);
  var _super7 = _createSuper(st);
  function st() {
    (0, _classCallCheck2.default)(this, st);
    return _super7.apply(this, arguments);
  }
  (0, _createClass2.default)(st, [{
    key: "signIn",
    value: function () {
      var _signIn4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22(e, t) {
        var n, s, r, i, o;
        return _regenerator.default.wrap(function _callee22$(_context22) {
          while (1) {
            switch (_context22.prev = _context22.next) {
              case 0:
                if (!("string" != typeof e)) {
                  _context22.next = 2;
                  break;
                }
                throw new ne({
                  code: "PARAM_ERROR",
                  message: "username must be a string"
                });
              case 2:
                "string" != typeof t && (= "", console.warn("password is empty"));
                n = this._cache.keys.refreshTokenKey;
                _context22.next = 6;
                return this._request.send("auth.signIn", {
                  loginType: $e.USERNAME,
                  username: e,
                  password: t,
                  refresh_token: this._cache.getStore(n) || ""
                });
              case 6:
                s = _context22.sent;
                r = s.refresh_token;
                i = s.access_token_expire;
                o = s.access_token;
                if (!r) {
                  _context22.next = 23;
                  break;
                }
                this.setRefreshToken(r);
                if (!(&& i)) {
                  _context22.next = 16;
                  break;
                }
                this.setAccessToken(o, i);
                _context22.next = 18;
                break;
              case 16:
                _context22.next = 18;
                return this._request.refreshAccessToken();
              case 18:
                _context22.next = 20;
                return this.refreshUserInfo();
              case 20:
                De(qe);
                De(Ke, {
                  env: this.config.env,
                  loginType: $e.USERNAME,
                  persistence: this.config.persistence
                });
                return _context22.abrupt("return", new Ze(this.config.env));
              case 23:
                throw s.code ? new ne({
                  code: s.code,
                  message: "\u7528\u6237\u540D\u5BC6\u7801\u767B\u5F55\u5931\u8D25: ".concat(s.message)
                }) : new ne({
                  message: "用户名密码登录失败"
                });
              case 24:
              case "end":
                return _context22.stop();
            }
          }
        }, _callee22, this);
      }));
      function signIn(_x17, _x18) {
        return _signIn4.apply(this, arguments);
      }
      return signIn;
    }()
  }]);
  return st;
}(Qe);
var rt = /*#__PURE__*/function () {
  function rt(e) {
    (0, _classCallCheck2.default)(this, rt);
    this.config = e, this._cache = xe(e.env), this._request = Ye(e.env), this._onAnonymousConverted = this._onAnonymousConverted.bind(this), this._onLoginTypeChanged = this._onLoginTypeChanged.bind(this), Ne(Ke, this._onLoginTypeChanged);
  }
  (0, _createClass2.default)(rt, [{
    key: "currentUser",
    get: function get() {
      var e = this.hasLoginState();
      return e && e.user || null;
    }
  }, {
    key: "loginType",
    get: function get() {
      return this._cache.getStore(this._cache.keys.loginTypeKey);
    }
  }, {
    key: "anonymousAuthProvider",
    value: function anonymousAuthProvider() {
      return new et(this.config);
    }
  }, {
    key: "customAuthProvider",
    value: function customAuthProvider() {
      return new tt(this.config);
    }
  }, {
    key: "emailAuthProvider",
    value: function emailAuthProvider() {
      return new nt(this.config);
    }
  }, {
    key: "usernameAuthProvider",
    value: function usernameAuthProvider() {
      return new st(this.config);
    }
  }, {
    key: "signInAnonymously",
    value: function () {
      var _signInAnonymously = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
        return _regenerator.default.wrap(function _callee23$(_context23) {
          while (1) {
            switch (_context23.prev = _context23.next) {
              case 0:
                return _context23.abrupt("return", new et(this.config).signIn());
              case 1:
              case "end":
                return _context23.stop();
            }
          }
        }, _callee23, this);
      }));
      function signInAnonymously() {
        return _signInAnonymously.apply(this, arguments);
      }
      return signInAnonymously;
    }()
  }, {
    key: "signInWithEmailAndPassword",
    value: function () {
      var _signInWithEmailAndPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(e, t) {
        return _regenerator.default.wrap(function _callee24$(_context24) {
          while (1) {
            switch (_context24.prev = _context24.next) {
              case 0:
                return _context24.abrupt("return", new nt(this.config).signIn(e, t));
              case 1:
              case "end":
                return _context24.stop();
            }
          }
        }, _callee24, this);
      }));
      function signInWithEmailAndPassword(_x19, _x20) {
        return _signInWithEmailAndPassword.apply(this, arguments);
      }
      return signInWithEmailAndPassword;
    }()
  }, {
    key: "signInWithUsernameAndPassword",
    value: function signInWithUsernameAndPassword(e, t) {
      return new st(this.config).signIn(e, t);
    }
  }, {
    key: "linkAndRetrieveDataWithTicket",
    value: function () {
      var _linkAndRetrieveDataWithTicket2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(e) {
        return _regenerator.default.wrap(function _callee25$(_context25) {
          while (1) {
            switch (_context25.prev = _context25.next) {
              case 0:
                this._anonymousAuthProvider || (this._anonymousAuthProvider = new et(this.config)), Ne(je, this._onAnonymousConverted);
                _context25.next = 3;
                return this._anonymousAuthProvider.linkAndRetrieveDataWithTicket(e);
              case 3:
                return _context25.abrupt("return", _context25.sent);
              case 4:
              case "end":
                return _context25.stop();
            }
          }
        }, _callee25, this);
      }));
      function linkAndRetrieveDataWithTicket(_x21) {
        return _linkAndRetrieveDataWithTicket2.apply(this, arguments);
      }
      return linkAndRetrieveDataWithTicket;
    }()
  }, {
    key: "signOut",
    value: function () {
      var _signOut = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26() {
        var _this$_cache$keys10, e, t, n, s, r;
        return _regenerator.default.wrap(function _callee26$(_context26) {
          while (1) {
            switch (_context26.prev = _context26.next) {
              case 0:
                if (!(this.loginType === $e.ANONYMOUS)) {
                  _context26.next = 2;
                  break;
                }
                throw new ne({
                  message: "匿名用户不支持登出操作"
                });
              case 2:
                _this$_cache$keys10 = this._cache.keys, e = _this$_cache$keys10.refreshTokenKey, t = _this$_cache$keys10.accessTokenKey, n = _this$_cache$keys10.accessTokenExpireKey, s = this._cache.getStore(e);
                if (s) {
                  _context26.next = 5;
                  break;
                }
                return _context26.abrupt("return");
              case 5:
                _context26.next = 7;
                return this._request.send("auth.logout", {
                  refresh_token: s
                });
              case 7:
                r = _context26.sent;
                return _context26.abrupt("return", (this._cache.removeStore(e), this._cache.removeStore(t), this._cache.removeStore(n), De(qe), De(Ke, {
                  env: this.config.env,
                  loginType: $e.NULL,
                  persistence: this.config.persistence
                }), r));
              case 9:
              case "end":
                return _context26.stop();
            }
          }
        }, _callee26, this);
      }));
      function signOut() {
        return _signOut.apply(this, arguments);
      }
      return signOut;
    }()
  }, {
    key: "signUpWithEmailAndPassword",
    value: function () {
      var _signUpWithEmailAndPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(e, t) {
        return _regenerator.default.wrap(function _callee27$(_context27) {
          while (1) {
            switch (_context27.prev = _context27.next) {
              case 0:
                return _context27.abrupt("return", this._request.send("auth.signUpWithEmailAndPassword", {
                  email: e,
                  password: t
                }));
              case 1:
              case "end":
                return _context27.stop();
            }
          }
        }, _callee27, this);
      }));
      function signUpWithEmailAndPassword(_x22, _x23) {
        return _signUpWithEmailAndPassword.apply(this, arguments);
      }
      return signUpWithEmailAndPassword;
    }()
  }, {
    key: "sendPasswordResetEmail",
    value: function () {
      var _sendPasswordResetEmail = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(e) {
        return _regenerator.default.wrap(function _callee28$(_context28) {
          while (1) {
            switch (_context28.prev = _context28.next) {
              case 0:
                return _context28.abrupt("return", this._request.send("auth.sendPasswordResetEmail", {
                  email: e
                }));
              case 1:
              case "end":
                return _context28.stop();
            }
          }
        }, _callee28, this);
      }));
      function sendPasswordResetEmail(_x24) {
        return _sendPasswordResetEmail.apply(this, arguments);
      }
      return sendPasswordResetEmail;
    }()
  }, {
    key: "onLoginStateChanged",
    value: function onLoginStateChanged(e) {
      var _this9 = this;
      Ne(qe, function () {
        var t = _this9.hasLoginState();
        e.call(_this9, t);
      });
      var t = this.hasLoginState();
      e.call(this, t);
    }
  }, {
    key: "onLoginStateExpired",
    value: function onLoginStateExpired(e) {
      Ne(Me, e.bind(this));
    }
  }, {
    key: "onAccessTokenRefreshed",
    value: function onAccessTokenRefreshed(e) {
      Ne(Be, e.bind(this));
    }
  }, {
    key: "onAnonymousConverted",
    value: function onAnonymousConverted(e) {
      Ne(je, e.bind(this));
    }
  }, {
    key: "onLoginTypeChanged",
    value: function onLoginTypeChanged(e) {
      var _this10 = this;
      Ne(Ke, function () {
        var t = _this10.hasLoginState();
        e.call(_this10, t);
      });
    }
  }, {
    key: "getAccessToken",
    value: function () {
      var _getAccessToken2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29() {
        return _regenerator.default.wrap(function _callee29$(_context29) {
          while (1) {
            switch (_context29.prev = _context29.next) {
              case 0:
                _context29.next = 2;
                return this._request.getAccessToken();
              case 2:
                _context29.t0 = _context29.sent.accessToken;
                _context29.t1 = this.config.env;
                return _context29.abrupt("return", {
                  accessToken: _context29.t0,
                  env: _context29.t1
                });
              case 5:
              case "end":
                return _context29.stop();
            }
          }
        }, _callee29, this);
      }));
      function getAccessToken() {
        return _getAccessToken2.apply(this, arguments);
      }
      return getAccessToken;
    }()
  }, {
    key: "hasLoginState",
    value: function hasLoginState() {
      var e = this._cache.keys.refreshTokenKey;
      return this._cache.getStore(e) ? new Ze(this.config.env) : null;
    }
  }, {
    key: "isUsernameRegistered",
    value: function () {
      var _isUsernameRegistered = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30(e) {
        var _yield$this$_request$5, t;
        return _regenerator.default.wrap(function _callee30$(_context30) {
          while (1) {
            switch (_context30.prev = _context30.next) {
              case 0:
                if (!("string" != typeof e)) {
                  _context30.next = 2;
                  break;
                }
                throw new ne({
                  code: "PARAM_ERROR",
                  message: "username must be a string"
                });
              case 2:
                _context30.next = 4;
                return this._request.send("auth.isUsernameRegistered", {
                  username: e
                });
              case 4:
                _yield$this$_request$5 = _context30.sent;
                t = _yield$this$_request$5.data;
                return _context30.abrupt("return", t && t.isRegistered);
              case 7:
              case "end":
                return _context30.stop();
            }
          }
        }, _callee30, this);
      }));
      function isUsernameRegistered(_x25) {
        return _isUsernameRegistered.apply(this, arguments);
      }
      return isUsernameRegistered;
    }()
  }, {
    key: "getLoginState",
    value: function getLoginState() {
      return Promise.resolve(this.hasLoginState());
    }
  }, {
    key: "signInWithTicket",
    value: function () {
      var _signInWithTicket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31(e) {
        return _regenerator.default.wrap(function _callee31$(_context31) {
          while (1) {
            switch (_context31.prev = _context31.next) {
              case 0:
                return _context31.abrupt("return", new tt(this.config).signIn(e));
              case 1:
              case "end":
                return _context31.stop();
            }
          }
        }, _callee31, this);
      }));
      function signInWithTicket(_x26) {
        return _signInWithTicket.apply(this, arguments);
      }
      return signInWithTicket;
    }()
  }, {
    key: "shouldRefreshAccessToken",
    value: function shouldRefreshAccessToken(e) {
      this._request._shouldRefreshAccessTokenHook = e.bind(this);
    }
  }, {
    key: "getUserInfo",
    value: function getUserInfo() {
      return this._request.send("auth.getUserInfo", {}).then(function (e) {
        return e.code ? e : _objectSpread(_objectSpread({}, e.data), {}, {
          requestId: e.seqId
        });
      });
    }
  }, {
    key: "getAuthHeader",
    value: function getAuthHeader() {
      var _this$_cache$keys11 = this._cache.keys,
        e = _this$_cache$keys11.refreshTokenKey,
        t = _this$_cache$keys11.accessTokenKey,
        n = this._cache.getStore(e);
      return {
        "x-cloudbase-credentials": this._cache.getStore(t) + "/@@/" + n
      };
    }
  }, {
    key: "_onAnonymousConverted",
    value: function _onAnonymousConverted(e) {
      var t = e.data.env;
      t === this.config.env && this._cache.updatePersistence(this.config.persistence);
    }
  }, {
    key: "_onLoginTypeChanged",
    value: function _onLoginTypeChanged(e) {
      var _e$data = e.data,
        t = _e$data.loginType,
        n = _e$data.persistence,
        s = _e$data.env;
      s === this.config.env && (this._cache.updatePersistence(n), this._cache.setStore(this._cache.keys.loginTypeKey, t));
    }
  }]);
  return rt;
}();
var it = function it(e, t) {
    t = t || we();
    var n = Ye(this.config.env),
      s = e.cloudPath,
      r = e.filePath,
      i = e.onUploadProgress,
      _e$fileType = e.fileType,
      o = _e$fileType === void 0 ? "image" : _e$fileType;
    return n.send("storage.getUploadMetadata", {
      path: s
    }).then(function (e) {
      var _e$data2 = e.data,
        a = _e$data2.url,
        c = _e$data2.authorization,
        u = _e$data2.token,
        h = _e$data2.fileId,
        l = _e$data2.cosFileId,
        d = e.requestId,
        p = {
          key: s,
          signature: c,
          "x-cos-meta-fileid": l,
          success_action_status: "201",
          "x-cos-security-token": u
        };
      n.upload({
        url: a,
        data: p,
        file: r,
        name: s,
        fileType: o,
        onUploadProgress: i
      }).then(function (e) {
        201 === e.statusCode ? t(null, {
          fileID: h,
          requestId: d
        }) : t(new ne({
          code: "STORAGE_REQUEST_FAIL",
          message: "STORAGE_REQUEST_FAIL: ".concat(e.data)
        }));
      }).catch(function (e) {
        t(e);
      });
    }).catch(function (e) {
      t(e);
    }), t.promise;
  },
  ot = function ot(e, t) {
    t = t || we();
    var n = Ye(this.config.env),
      s = e.cloudPath;
    return n.send("storage.getUploadMetadata", {
      path: s
    }).then(function (e) {
      t(null, e);
    }).catch(function (e) {
      t(e);
    }), t.promise;
  },
  at = function at(_ref7, t) {
    var e = _ref7.fileList;
    if (= t || we(), !|| !Array.isArray(e)) return {
      code: "INVALID_PARAM",
      message: "fileList必须是非空的数组"
    };
    var _iterator3 = _createForOfIteratorHelper(e),
      _step3;
    try {
      for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
        var _t8 = _step3.value;
        if (!_t8 || "string" != typeof _t8) return {
          code: "INVALID_PARAM",
          message: "fileList的元素必须是非空的字符串"
        };
      }
    } catch (err) {
      _iterator3.e(err);
    } finally {
      _iterator3.f();
    }
    var n = {
      fileid_list: e
    };
    return Ye(this.config.env).send("storage.batchDeleteFile", n).then(function (e) {
      e.code ? t(null, e) : t(null, {
        fileList: e.data.delete_list,
        requestId: e.requestId
      });
    }).catch(function (e) {
      t(e);
    }), t.promise;
  },
  ct = function ct(_ref8, t) {
    var e = _ref8.fileList;
    t = t || we(), e && Array.isArray(e) || t(null, {
      code: "INVALID_PARAM",
      message: "fileList必须是非空的数组"
    });
    var n = [];
    var _iterator4 = _createForOfIteratorHelper(e),
      _step4;
    try {
      for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
        var _s9 = _step4.value;
        "object" == (0, _typeof2.default)(_s9) ? (_s9.hasOwnProperty("fileID") && _s9.hasOwnProperty("maxAge") || t(null, {
          code: "INVALID_PARAM",
          message: "fileList的元素必须是包含fileID和maxAge的对象"
        }), n.push({
          fileid: _s9.fileID,
          max_age: _s9.maxAge
        })) : "string" == typeof _s9 ? n.push({
          fileid: _s9
        }) : t(null, {
          code: "INVALID_PARAM",
          message: "fileList的元素必须是字符串"
        });
      }
    } catch (err) {
      _iterator4.e(err);
    } finally {
      _iterator4.f();
    }
    var s = {
      file_list: n
    };
    return Ye(this.config.env).send("storage.batchGetDownloadUrl", s).then(function (e) {
      e.code ? t(null, e) : t(null, {
        fileList: e.data.download_list,
        requestId: e.requestId
      });
    }).catch(function (e) {
      t(e);
    }), t.promise;
  },
  ut = /*#__PURE__*/function () {
    var _ref10 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(_ref9, t) {
      var e, n, s, r;
      return _regenerator.default.wrap(function _callee32$(_context32) {
        while (1) {
          switch (_context32.prev = _context32.next) {
            case 0:
              e = _ref9.fileID;
              _context32.next = 3;
              return ct.call(this, {
                fileList: [{
                  fileID: e,
                  maxAge: 600
                }]
              });
            case 3:
              n = _context32.sent.fileList[0];
              if (!("SUCCESS" !== n.code)) {
                _context32.next = 6;
                break;
              }
              return _context32.abrupt("return", t ? t(n) : new Promise(function (e) {
                e(n);
              }));
            case 6:
              s = Ye(this.config.env);
              r = n.download_url;
              if (!(= encodeURI(r), !t)) {
                _context32.next = 10;
                break;
              }
              return _context32.abrupt("return", s.download({
                url: r
              }));
            case 10:
              _context32.t0 = t;
              _context32.next = 13;
              return s.download({
                url: r
              });
            case 13:
              _context32.t1 = _context32.sent;
              (0, _context32.t0)(_context32.t1);
            case 15:
            case "end":
              return _context32.stop();
          }
        }
      }, _callee32, this);
    }));
    return function ut(_x27, _x28) {
      return _ref10.apply(this, arguments);
    };
  }(),
  ht = function ht(_ref11, i) {
    var e = _ref11.name,
      t = _ref11.data,
      n = _ref11.query,
      s = _ref11.parse,
      r = _ref11.search;
    var o = i || we();
    var a;
    try {
      a = t ? JSON.stringify(t) : "";
    } catch (e) {
      return Promise.reject(e);
    }
    if (!e) return Promise.reject(new ne({
      code: "PARAM_ERROR",
      message: "函数名不能为空"
    }));
    var c = {
      inQuery: n,
      parse: s,
      search: r,
      function_name: e,
      request_data: a
    };
    return Ye(this.config.env).send("functions.invokeFunction", c).then(function (e) {
      if (e.code) o(null, e);else {
        var _t9 = e.data.response_data;
        if (s) o(null, {
          result: _t9,
          requestId: e.requestId
        });else try {
          _t9 = JSON.parse(e.data.response_data), o(null, {
            result: _t9,
            requestId: e.requestId
          });
        } catch (e) {
          o(new ne({
            message: "response data must be json"
          }));
        }
      }
      return o.promise;
    }).catch(function (e) {
      o(e);
    }), o.promise;
  },
  lt = {
    timeout: 15e3,
    persistence: "session"
  },
  dt = {};
var pt = /*#__PURE__*/function () {
  function pt(e) {
    (0, _classCallCheck2.default)(this, pt);
    this.config = e || this.config, this.authObj = void 0;
  }
  (0, _createClass2.default)(pt, [{
    key: "init",
    value: function init(e) {
      switch (ke.adapter || (this.requestClient = new ke.adapter.reqClass({
        timeout: e.timeout || 5e3,
        timeoutMsg: "\u8BF7\u6C42\u5728".concat((e.timeout || 5e3) / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD")
      })), this.config = _objectSpread(_objectSpread({}, lt), e), !0) {
        case this.config.timeout > 6e5:
          console.warn("timeout大于可配置上限[10分钟],已重置为上限数值"), this.config.timeout = 6e5;
          break;
        case this.config.timeout < 100:
          console.warn("timeout小于可配置下限[100ms],已重置为下限数值"), this.config.timeout = 100;
      }
      return new pt(this.config);
    }
  }, {
    key: "auth",
    value: function auth() {
      var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
        e = _ref12.persistence;
      if (this.authObj) return this.authObj;
      var t = e || ke.adapter.primaryStorage || lt.persistence;
      var n;
      return t !== this.config.persistence && (this.config.persistence = t), function (e) {
        var t = e.env;
        Ee[t] = new Ae(e), Oe[t] = new Ae(_objectSpread(_objectSpread({}, e), {}, {
          persistence: "local"
        }));
      }(this.config), n = this.config, Ve[n.env] = new Ge(n), this.authObj = new rt(this.config), this.authObj;
    }
  }, {
    key: "on",
    value: function on(e, t) {
      return Ne.apply(this, [e, t]);
    }
  }, {
    key: "off",
    value: function off(e, t) {
      return Fe.apply(this, [e, t]);
    }
  }, {
    key: "callFunction",
    value: function callFunction(e, t) {
      return ht.apply(this, [e, t]);
    }
  }, {
    key: "deleteFile",
    value: function deleteFile(e, t) {
      return at.apply(this, [e, t]);
    }
  }, {
    key: "getTempFileURL",
    value: function getTempFileURL(e, t) {
      return ct.apply(this, [e, t]);
    }
  }, {
    key: "downloadFile",
    value: function downloadFile(e, t) {
      return ut.apply(this, [e, t]);
    }
  }, {
    key: "uploadFile",
    value: function uploadFile(e, t) {
      return it.apply(this, [e, t]);
    }
  }, {
    key: "getUploadMetadata",
    value: function getUploadMetadata(e, t) {
      return ot.apply(this, [e, t]);
    }
  }, {
    key: "registerExtension",
    value: function registerExtension(e) {
      dt[e.name] = e;
    }
  }, {
    key: "invokeExtension",
    value: function () {
      var _invokeExtension = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(e, t) {
        var n;
        return _regenerator.default.wrap(function _callee33$(_context33) {
          while (1) {
            switch (_context33.prev = _context33.next) {
              case 0:
                n = dt[e];
                if (n) {
                  _context33.next = 3;
                  break;
                }
                throw new ne({
                  message: "\u6269\u5C55".concat(e, " \u5FC5\u987B\u5148\u6CE8\u518C")
                });
              case 3:
                _context33.next = 5;
                return n.invoke(t, this);
              case 5:
                return _context33.abrupt("return", _context33.sent);
              case 6:
              case "end":
                return _context33.stop();
            }
          }
        }, _callee33, this);
      }));
      function invokeExtension(_x29, _x30) {
        return _invokeExtension.apply(this, arguments);
      }
      return invokeExtension;
    }()
  }, {
    key: "useAdapters",
    value: function useAdapters(e) {
      var _ref13 = be(e) || {},
        t = _ref13.adapter,
        n = _ref13.runtime;
      t && (ke.adapter = t), n && (ke.runtime = n);
    }
  }]);
  return pt;
}();
var ft = new pt();
function gt(e, t, n) {
  void 0 === n && (= {});
  var s = /\?/.test(t),
    r = "";
  for (var i in n) {
    "" === r ? !&& (+= "?") : r += "&", r += i + "=" + encodeURIComponent(n[i]);
  }
  return /^http(s)?:\/\//.test(+= r) ? t : "" + e + t;
}
var mt = /*#__PURE__*/function () {
  function mt() {
    (0, _classCallCheck2.default)(this, mt);
  }
  (0, _createClass2.default)(mt, [{
    key: "post",
    value: function post(e) {
      var t = e.url,
        n = e.data,
        s = e.headers;
      return new Promise(function (e, r) {
        se.request({
          url: gt("https:", t),
          data: n,
          method: "POST",
          header: s,
          success: function success(t) {
            e(t);
          },
          fail: function fail(e) {
            r(e);
          }
        });
      });
    }
  }, {
    key: "upload",
    value: function upload(e) {
      return new Promise(function (t, n) {
        var s = e.url,
          r = e.file,
          i = e.data,
          o = e.headers,
          a = e.fileType,
          c = se.uploadFile({
            url: gt("https:", s),
            name: "file",
            formData: Object.assign({}, i),
            filePath: r,
            fileType: a,
            header: o,
            success: function success(e) {
              var n = {
                statusCode: e.statusCode,
                data: e.data || {}
              };
              200 === e.statusCode && i.success_action_status && (n.statusCode = parseInt(i.success_action_status, 10)), t(n);
            },
            fail: function fail(e) {
              n(new Error(e.errMsg || "uploadFile:fail"));
            }
          });
        "function" == typeof e.onUploadProgress && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (t) {
          e.onUploadProgress({
            loaded: t.totalBytesSent,
            total: t.totalBytesExpectedToSend
          });
        });
      });
    }
  }]);
  return mt;
}();
var yt = {
  setItem: function setItem(e, t) {
    se.setStorageSync(e, t);
  },
  getItem: function getItem(e) {
    return se.getStorageSync(e);
  },
  removeItem: function removeItem(e) {
    se.removeStorageSync(e);
  },
  clear: function clear() {
    se.clearStorageSync();
  }
};
var _t = {
  genAdapter: function genAdapter() {
    return {
      root: {},
      reqClass: mt,
      localStorage: yt,
      primaryStorage: "local"
    };
  },
  isMatch: function isMatch() {
    return !0;
  },
  runtime: "uni_app"
};
ft.useAdapters(_t);
var wt = ft,
  vt = wt.init;
wt.init = function (e) {
  e.env = e.spaceId;
  var t = vt.call(this, e);
  t.config.provider = "tencent", t.config.spaceId = e.spaceId;
  var n = t.auth;
  return t.auth = function (e) {
    var t = n.call(this, e);
    return ["linkAndRetrieveDataWithTicket", "signInAnonymously", "signOut", "getAccessToken", "getLoginState", "signInWithTicket", "getUserInfo"].forEach(function (e) {
      var n;
      t[e] = (= t[e], function (e) {
        e = e || {};
        var _te = te(e),
          t = _te.success,
          s = _te.fail,
          r = _te.complete;
        if (!(|| s || r)) return n.call(this, e);
        n.call(this, e).then(function (e) {
          t && t(e), r && r(e);
        }, function (e) {
          s && s(e), r && r(e);
        });
      }).bind(t);
    }), t;
  }, t.customAuth = t.auth, t;
};
var It = wt;
var St = /*#__PURE__*/function (_fe) {
  (0, _inherits2.default)(St, _fe);
  var _super8 = _createSuper(St);
  function St() {
    (0, _classCallCheck2.default)(this, St);
    return _super8.apply(this, arguments);
  }
  (0, _createClass2.default)(St, [{
    key: "getAccessToken",
    value: function getAccessToken() {
      var _this11 = this;
      return new Promise(function (e, t) {
        var n = "Anonymous_Access_token";
        _this11.setAccessToken(n), e(n);
      });
    }
  }, {
    key: "setupRequest",
    value: function setupRequest(e, t) {
      var n = Object.assign({}, e, {
          spaceId: this.config.spaceId,
          timestamp: Date.now()
        }),
        s = {
          "Content-Type": "application/json"
        };
      "auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = le.sign(n, this.config.clientSecret);
      var r = he();
      s["x-client-info"] = encodeURIComponent(JSON.stringify(r));
      var _re = re(),
        i = _re.token;
      return s["x-client-token"] = i, {
        url: this.config.requestUrl,
        method: "POST",
        data: n,
        dataType: "json",
        header: JSON.parse(JSON.stringify(s))
      };
    }
  }, {
    key: "uploadFileToOSS",
    value: function uploadFileToOSS(_ref14) {
      var _this12 = this;
      var e = _ref14.url,
        t = _ref14.formData,
        n = _ref14.name,
        s = _ref14.filePath,
        r = _ref14.fileType,
        i = _ref14.onUploadProgress;
      return new Promise(function (o, a) {
        var c = _this12.adapter.uploadFile({
          url: e,
          formData: t,
          name: n,
          filePath: s,
          fileType: r,
          success: function success(e) {
            e && e.statusCode < 400 ? o(e) : a(new ne({
              code: "UPLOAD_FAILED",
              message: "文件上传失败"
            }));
          },
          fail: function fail(e) {
            a(new ne({
              code: e.code || "UPLOAD_FAILED",
              message: e.message || e.errMsg || "文件上传失败"
            }));
          }
        });
        "function" == typeof i && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) {
          i({
            loaded: e.totalBytesSent,
            total: e.totalBytesExpectedToSend
          });
        });
      });
    }
  }, {
    key: "uploadFile",
    value: function uploadFile(_ref15) {
      var _this13 = this;
      var e = _ref15.filePath,
        t = _ref15.cloudPath,
        _ref15$fileType = _ref15.fileType,
        n = _ref15$fileType === void 0 ? "image" : _ref15$fileType,
        s = _ref15.onUploadProgress;
      if (!t) throw new ne({
        code: "CLOUDPATH_REQUIRED",
        message: "cloudPath不可为空"
      });
      var r;
      return this.getOSSUploadOptionsFromPath({
        cloudPath: t
      }).then(function (t) {
        var _t$result = t.result,
          i = _t$result.url,
          o = _t$result.formData,
          a = _t$result.name;
        r = t.result.fileUrl;
        var c = {
          url: i,
          formData: o,
          name: a,
          filePath: e,
          fileType: n
        };
        return _this13.uploadFileToOSS(Object.assign({}, c, {
          onUploadProgress: s
        }));
      }).then(function () {
        return _this13.reportOSSUpload({
          cloudPath: t
        });
      }).then(function (t) {
        return new Promise(function (n, s) {
          t.success ? n({
            success: !0,
            filePath: e,
            fileID: r
          }) : s(new ne({
            code: "UPLOAD_FAILED",
            message: "文件上传失败"
          }));
        });
      });
    }
  }, {
    key: "deleteFile",
    value: function deleteFile(_ref16) {
      var e = _ref16.fileList;
      var t = {
        method: "serverless.file.resource.delete",
        params: JSON.stringify({
          fileList: e
        })
      };
      return this.request(this.setupRequest(t)).then(function (e) {
        if (e.success) return e.result;
        throw new ne({
          code: "DELETE_FILE_FAILED",
          message: "删除文件失败"
        });
      });
    }
  }, {
    key: "getTempFileURL",
    value: function getTempFileURL() {
      var _ref17 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
        e = _ref17.fileList;
      if (!Array.isArray(e) || 0 === e.length) throw new ne({
        code: "INVALID_PARAM",
        message: "fileList的元素必须是非空的字符串"
      });
      var t = {
        method: "serverless.file.resource.getTempFileURL",
        params: JSON.stringify({
          fileList: e
        })
      };
      return this.request(this.setupRequest(t)).then(function (e) {
        if (e.success) return {
          fileList: e.result.fileList.map(function (e) {
            return {
              fileID: e.fileID,
              tempFileURL: e.tempFileURL
            };
          })
        };
        throw new ne({
          code: "GET_TEMP_FILE_URL_FAILED",
          message: "获取临时文件链接失败"
        });
      });
    }
  }]);
  return St;
}(fe);
var bt = {
  init: function init(e) {
    var t = new St(e),
      n = {
        signInAnonymously: function signInAnonymously() {
          return t.authorize();
        },
        getLoginState: function getLoginState() {
          return Promise.resolve(!1);
        }
      };
    return t.auth = function () {
      return n;
    }, t.customAuth = t.auth, t;
  }
};
function kt(_ref18) {
  var e = _ref18.data;
  var t;
  t = he();
  var n = JSON.parse(JSON.stringify(|| {}));
  if (Object.assign(n, {
    clientInfo: t
  }), !n.uniIdToken) {
    var _re2 = re(),
      _e19 = _re2.token;
    _e19 && (n.uniIdToken = _e19);
  }
  return n;
}
function Ct() {
  return _Ct.apply(this, arguments);
}
function _Ct() {
  _Ct = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee54() {
    var _this26 = this;
    var _ref60,
      e,
      t,
      _this$__dev__,
      n,
      s,
      r,
      i,
      o,
      a,
      _args6 = arguments;
    return _regenerator.default.wrap(function _callee54$(_context54) {
      while (1) {
        switch (_context54.prev = _context54.next) {
          case 0:
            _ref60 = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : {}, e = _ref60.name, t = _ref60.data;
            _context54.next = 3;
            return this.__dev__.initLocalNetwork();
          case 3:
            _this$__dev__ = this.__dev__, n = _this$__dev__.localAddress, s = _this$__dev__.localPort, r = {
              aliyun: "aliyun",
              tencent: "tcb"
            }[this.config.provider], i = this.config.spaceId, o = "http://".concat(n, ":").concat(s, "/system/check-function"), a = "http://".concat(n, ":").concat(s, "/cloudfunctions/").concat(e);
            return _context54.abrupt("return", new Promise(function (t, n) {
              se.request({
                method: "POST",
                url: o,
                data: {
                  name: e,
                  platform: P,
                  provider: r,
                  spaceId: i
                },
                timeout: 3e3,
                success: function success(e) {
                  t(e);
                },
                fail: function fail() {
                  t({
                    data: {
                      code: "NETWORK_ERROR",
                      message: "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下,自动切换为已部署的云函数。"
                    }
                  });
                }
              });
            }).then(function () {
              var _ref61 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
                e = _ref61.data;
              var _ref62 = e || {},
                t = _ref62.code,
                n = _ref62.message;
              return {
                code: 0 === t ? 0 : t || "SYS_ERR",
                message: n || "SYS_ERR"
              };
            }).then(function (_ref63) {
              var n = _ref63.code,
                s = _ref63.message;
              if (0 !== n) {
                switch (n) {
                  case "MODULE_ENCRYPTED":
                    console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u4F9D\u8D56\u52A0\u5BC6\u516C\u5171\u6A21\u5757\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570"));
                    break;
                  case "FUNCTION_ENCRYPTED":
                    console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u5DF2\u52A0\u5BC6\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570"));
                    break;
                  case "ACTION_ENCRYPTED":
                    console.error(|| "需要访问加密的uni-clientDB-action,自动切换为云端环境");
                    break;
                  case "NETWORK_ERROR":
                    {
                      var _e31 = "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下";
                      throw console.error(_e31), new Error(_e31);
                    }
                  case "SWITCH_TO_CLOUD":
                    break;
                  default:
                    {
                      var _e32 = "\u68C0\u6D4B\u672C\u5730\u8C03\u8BD5\u670D\u52A1\u51FA\u73B0\u9519\u8BEF\uFF1A".concat(s, "\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u73AF\u5883\u6216\u91CD\u542F\u5BA2\u6237\u7AEF\u518D\u8BD5");
                      throw console.error(_e32), new Error(_e32);
                    }
                }
                return _this26._callCloudFunction({
                  name: e,
                  data: t
                });
              }
              return new Promise(function (e, n) {
                var s = kt.call(_this26, {
                  data: t
                });
                se.request({
                  method: "POST",
                  url: a,
                  data: {
                    provider: r,
                    platform: P,
                    param: s
                  },
                  success: function success() {
                    var _ref64 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
                      t = _ref64.statusCode,
                      s = _ref64.data;
                    return !|| t >= 400 ? n(new ne({
                      code: s.code || "SYS_ERR",
                      message: s.message || "request:fail"
                    })) : e({
                      result: s
                    });
                  },
                  fail: function fail(e) {
                    n(new ne({
                      code: e.code || e.errCode || "SYS_ERR",
                      message: e.message || e.errMsg || "request:fail"
                    }));
                  }
                });
              });
            }));
          case 5:
          case "end":
            return _context54.stop();
        }
      }
    }, _callee54, this);
  }));
  return _Ct.apply(this, arguments);
}
var Tt = [{
  rule: /fc_function_not_found|FUNCTION_NOT_FOUND/,
  content: ",云函数[{functionName}]在云端不存在,请检查此云函数名称是否正确以及该云函数是否已上传到服务空间",
  mode: "append"
}];
var Pt = /[\\^$.*+?()[\]{}|]/g,
  At = RegExp(Pt.source);
function Et(e, t, n) {
  return e.replace(new RegExp((= t) && At.test(s) ? s.replace(Pt, "\\$&") : s, "g"), n);
  var s;
}
var Ot = "none",
  xt = "request",
  Rt = "response",
  Ut = "both";
var Lt = /*#__PURE__*/function () {
  function Lt() {
    var _ref19 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
      e = _ref19.secretType,
      t = _ref19.uniCloudIns;
    (0, _classCallCheck2.default)(this, Lt);
    this.clientType = "", this.secretType = e || Ot, this.uniCloudIns = t;
    var _this$uniCloudIns$con = this.uniCloudIns.config,
      n = _this$uniCloudIns$con.provider,
      s = _this$uniCloudIns$con.spaceId;
    var r;
    this.provider = n, this.spaceId = s, this.scopedGlobalCache = (= this.uniCloudIns, U("_globalUniCloudSecureNetworkCache__{spaceId}".replace("{spaceId}", r.config.spaceId)));
  }
  (0, _createClass2.default)(Lt, [{
    key: "getSystemInfo",
    value: function getSystemInfo() {
      return this._systemInfo || (this._systemInfo = ce()), this._systemInfo;
    }
  }, {
    key: "appId",
    get: function get() {
      return this.getSystemInfo().appId;
    }
  }, {
    key: "deviceId",
    get: function get() {
      return this.getSystemInfo().deviceId;
    }
  }, {
    key: "encryptData",
    value: function () {
      var _encryptData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(e) {
        return _regenerator.default.wrap(function _callee34$(_context34) {
          while (1) {
            switch (_context34.prev = _context34.next) {
              case 0:
                return _context34.abrupt("return", this.secretType === Ot ? e : this.platformEncryptData(e));
              case 1:
              case "end":
                return _context34.stop();
            }
          }
        }, _callee34, this);
      }));
      function encryptData(_x31) {
        return _encryptData.apply(this, arguments);
      }
      return encryptData;
    }()
  }, {
    key: "decryptResult",
    value: function () {
      var _decryptResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(e) {
        var _ref20, t, n;
        return _regenerator.default.wrap(function _callee35$(_context35) {
          while (1) {
            switch (_context35.prev = _context35.next) {
              case 0:
                if (!(this.secretType === Ot)) {
                  _context35.next = 2;
                  break;
                }
                return _context35.abrupt("return", e);
              case 2:
                _ref20 = e || {}, t = _ref20.errCode, n = _ref20.content;
                return _context35.abrupt("return", t || !? e : this.secretType === xt ? n : this.platformDecryptResult(e));
              case 4:
              case "end":
                return _context35.stop();
            }
          }
        }, _callee35, this);
      }));
      function decryptResult(_x32) {
        return _decryptResult.apply(this, arguments);
      }
      return decryptResult;
    }()
  }, {
    key: "wrapVerifyClientCallFunction",
    value: function wrapVerifyClientCallFunction(e) {
      var t = this;
      return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36() {
        var _ref22,
          n,
          _ref22$data,
          s,
          r,
          _args36 = arguments;
        return _regenerator.default.wrap(function _callee36$(_context36) {
          while (1) {
            switch (_context36.prev = _context36.next) {
              case 0:
                _ref22 = _args36.length > 0 && _args36[0] !== undefined ? _args36[0] : {}, n = _ref22.name, _ref22$data = _ref22.data, s = _ref22$data === void 0 ? {} : _ref22$data;
                _context36.next = 3;
                return t.prepare();
              case 3:
                _context36.next = 5;
                return t.platformGetSignOption();
              case 5:
                (= JSON.parse(JSON.stringify(s)))._uniCloudOptions = _context36.sent;
                _context36.next = 8;
                return e({
                  name: n,
                  data: s
                });
              case 8:
                r = _context36.sent;
                _context36.t0 = t.isClientKeyNotFound(r);
                if (!_context36.t0) {
                  _context36.next = 19;
                  break;
                }
                _context36.next = 13;
                return t.prepare({
                  forceUpdate: !0
                });
              case 13:
                _context36.next = 15;
                return t.platformGetSignOption();
              case 15:
                s._uniCloudOptions = _context36.sent;
                _context36.next = 18;
                return e({
                  name: n,
                  data: s
                });
              case 18:
                r = _context36.sent;
              case 19:
                return _context36.abrupt("return", r);
              case 20:
              case "end":
                return _context36.stop();
            }
          }
        }, _callee36);
      }));
    }
  }, {
    key: "wrapEncryptDataCallFunction",
    value: function wrapEncryptDataCallFunction(e) {
      var t = this;
      return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37() {
        var _ref24,
          n,
          _ref24$data,
          s,
          r,
          i,
          _r3,
          _args37 = arguments;
        return _regenerator.default.wrap(function _callee37$(_context37) {
          while (1) {
            switch (_context37.prev = _context37.next) {
              case 0:
                _ref24 = _args37.length > 0 && _args37[0] !== undefined ? _args37[0] : {}, n = _ref24.name, _ref24$data = _ref24.data, s = _ref24$data === void 0 ? {} : _ref24$data;
                _context37.next = 3;
                return t.prepare();
              case 3:
                _context37.next = 5;
                return t.encryptData(s);
              case 5:
                r = _context37.sent;
                _context37.next = 8;
                return e({
                  name: n,
                  data: r
                });
              case 8:
                i = _context37.sent;
                if (!t.isClientKeyNotFound(i)) {
                  _context37.next = 21;
                  break;
                }
                _context37.next = 12;
                return t.prepare({
                  forceUpdate: !0
                });
              case 12:
                _context37.next = 14;
                return t.encryptData(s);
              case 14:
                _r3 = _context37.sent;
                _context37.next = 17;
                return t.platformGetSignOption();
              case 17:
                s._uniCloudOptions = _context37.sent;
                _context37.next = 20;
                return e({
                  name: n,
                  data: _r3
                });
              case 20:
                i = _context37.sent;
              case 21:
                _context37.next = 23;
                return t.decryptResult(i.result);
              case 23:
                i.result = _context37.sent;
                return _context37.abrupt("return", i);
              case 25:
              case "end":
                return _context37.stop();
            }
          }
        }, _callee37);
      }));
    }
  }]);
  return Lt;
}();
/*! MIT License. Copyright 2015-2018 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */
function Nt(e) {
  return parseInt(e) === e;
}
function Dt(e) {
  if (!Nt(e.length)) return !1;
  for (var t = 0; t < e.length; t++) {
    if (!Nt(e[t]) || e[t] < 0 || e[t] > 255) return !1;
  }
  return !0;
}
function Ft(e, t) {
  if (e.buffer && "Uint8Array" === e.name) return t && (= e.slice ? e.slice() : Array.prototype.slice.call(e)), e;
  if (Array.isArray(e)) {
    if (!Dt(e)) throw new Error("Array contains invalid value: " + e);
    return new Uint8Array(e);
  }
  if (Nt(e.length) && Dt(e)) return new Uint8Array(e);
  throw new Error("unsupported array-like object");
}
function qt(e) {
  return new Uint8Array(e);
}
function Mt(e, t, n, s, r) {
  null == s && null == r || (= e.slice ? e.slice(s, r) : Array.prototype.slice.call(e, s, r)), t.set(e, n);
}
var Kt,
  jt = {
    toBytes: function toBytes(e) {
      var t = [],
        n = 0;
      for (= encodeURI(e); n < e.length;) {
        var s = e.charCodeAt(n++);
        37 === s ? (t.push(parseInt(e.substr(n, 2), 16)), n += 2) : t.push(s);
      }
      return Ft(t);
    },
    fromBytes: function fromBytes(e) {
      for (var t = [], n = 0; n < e.length;) {
        var s = e[n];
        s < 128 ? (t.push(String.fromCharCode(s)), n++) : s > 191 && s < 224 ? (t.push(String.fromCharCode((31 & s) << 6 | 63 & e[+ 1])), n += 2) : (t.push(String.fromCharCode((15 & s) << 12 | (63 & e[+ 1]) << 6 | 63 & e[+ 2])), n += 3);
      }
      return t.join("");
    }
  },
  Bt = (Kt = "0123456789abcdef", {
    toBytes: function toBytes(e) {
      for (var t = [], n = 0; n < e.length; n += 2) {
        t.push(parseInt(e.substr(n, 2), 16));
      }
      return t;
    },
    fromBytes: function fromBytes(e) {
      for (var t = [], n = 0; n < e.length; n++) {
        var s = e[n];
        t.push(Kt[(240 & s) >> 4] + Kt[15 & s]);
      }
      return t.join("");
    }
  }),
  $t = {
    16: 10,
    24: 12,
    32: 14
  },
  Wt = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145],
  zt = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22],
  Jt = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125],
  Ht = [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986],
  Gt = [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766],
  Vt = [1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126],
  Yt = [1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436],
  Qt = [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890],
  Xt = [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935],
  Zt = [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600],
  en = [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480],
  tn = [0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795],
  nn = [0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576, 1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459, 2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614, 2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537, 3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543, 1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535, 77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207, 3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884, 3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975, 3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824, 3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461, 1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933, 355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630, 2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349, 3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048, 3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120, 213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296, 1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347, 3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022, 2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781, 1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101, 870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558, 2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875, 3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675, 560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035, 2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597, 486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021, 1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122, 2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703, 3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796, 2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698, 1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410, 325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122, 4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461, 2827177882, 2743944855],
  sn = [0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376, 1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639, 3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174, 4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557, 2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663, 2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032, 3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033, 2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201, 344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180, 2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772, 313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932, 2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135, 3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085, 3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354, 3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963, 2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195, 621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571, 1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177, 4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592, 2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3, 861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576, 1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228, 1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836, 1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260, 2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885, 3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539, 2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018, 3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005, 1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572, 1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868, 752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663, 793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415, 1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124, 4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285, 2377486676, 2594734927, 2544078150],
  rn = [0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925];
function on(e) {
  for (var t = [], n = 0; n < e.length; n += 4) {
    t.push(e[n] << 24 | e[+ 1] << 16 | e[+ 2] << 8 | e[+ 3]);
  }
  return t;
}
var an = /*#__PURE__*/function () {
  function an(e) {
    (0, _classCallCheck2.default)(this, an);
    if (!(this instanceof an)) throw Error("AES must be instanitated with `new`");
    Object.defineProperty(this, "key", {
      value: Ft(e, !0)
    }), this._prepare();
  }
  (0, _createClass2.default)(an, [{
    key: "_prepare",
    value: function _prepare() {
      var e = $t[this.key.length];
      if (null == e) throw new Error("invalid key size (must be 16, 24 or 32 bytes)");
      this._Ke = [], this._Kd = [];
      for (var t = 0; t <= e; t++) {
        this._Ke.push([0, 0, 0, 0]), this._Kd.push([0, 0, 0, 0]);
      }
      var n,
        s = 4 * (+ 1),
        r = this.key.length / 4,
        i = on(this.key);
      for (= 0; t < r; t++) {
        n = t >> 2, this._Ke[n][% 4] = i[t], this._Kd[- n][% 4] = i[t];
      }
      for (var o, a = 0, c = r; c < s;) {
        if (= i[- 1], i[0] ^= zt[>> 16 & 255] << 24 ^ zt[>> 8 & 255] << 16 ^ zt[255 & o] << 8 ^ zt[>> 24 & 255] ^ Wt[a] << 24, a += 1, 8 != r) for (= 1; t < r; t++) {
          i[t] ^= i[- 1];
        } else {
          for (= 1; t < r / 2; t++) {
            i[t] ^= i[- 1];
          }
          o = i[/ 2 - 1], i[/ 2] ^= zt[255 & o] ^ zt[>> 8 & 255] << 8 ^ zt[>> 16 & 255] << 16 ^ zt[>> 24 & 255] << 24;
          for (= r / 2 + 1; t < r; t++) {
            i[t] ^= i[- 1];
          }
        }
        for (= 0; t < r && c < s;) {
          u = c >> 2, h = c % 4, this._Ke[u][h] = i[t], this._Kd[- u][h] = i[t++], c++;
        }
      }
      for (var u = 1; u < e; u++) {
        for (var h = 0; h < 4; h++) {
          o = this._Kd[u][h], this._Kd[u][h] = tn[>> 24 & 255] ^ nn[>> 16 & 255] ^ sn[>> 8 & 255] ^ rn[255 & o];
        }
      }
    }
  }, {
    key: "encrypt",
    value: function encrypt(e) {
      if (16 != e.length) throw new Error("invalid plaintext size (must be 16 bytes)");
      for (var t = this._Ke.length - 1, n = [0, 0, 0, 0], s = on(e), r = 0; r < 4; r++) {
        s[r] ^= this._Ke[0][r];
      }
      for (var i = 1; i < t; i++) {
        for (= 0; r < 4; r++) {
          n[r] = Ht[s[r] >> 24 & 255] ^ Gt[s[(+ 1) % 4] >> 16 & 255] ^ Vt[s[(+ 2) % 4] >> 8 & 255] ^ Yt[255 & s[(+ 3) % 4]] ^ this._Ke[i][r];
        }
        s = n.slice();
      }
      var o,
        a = qt(16);
      for (= 0; r < 4; r++) {
        o = this._Ke[t][r], a[4 * r] = 255 & (zt[s[r] >> 24 & 255] ^ o >> 24), a[4 * r + 1] = 255 & (zt[s[(+ 1) % 4] >> 16 & 255] ^ o >> 16), a[4 * r + 2] = 255 & (zt[s[(+ 2) % 4] >> 8 & 255] ^ o >> 8), a[4 * r + 3] = 255 & (zt[255 & s[(+ 3) % 4]] ^ o);
      }
      return a;
    }
  }, {
    key: "decrypt",
    value: function decrypt(e) {
      if (16 != e.length) throw new Error("invalid ciphertext size (must be 16 bytes)");
      for (var t = this._Kd.length - 1, n = [0, 0, 0, 0], s = on(e), r = 0; r < 4; r++) {
        s[r] ^= this._Kd[0][r];
      }
      for (var i = 1; i < t; i++) {
        for (= 0; r < 4; r++) {
          n[r] = Qt[s[r] >> 24 & 255] ^ Xt[s[(+ 3) % 4] >> 16 & 255] ^ Zt[s[(+ 2) % 4] >> 8 & 255] ^ en[255 & s[(+ 1) % 4]] ^ this._Kd[i][r];
        }
        s = n.slice();
      }
      var o,
        a = qt(16);
      for (= 0; r < 4; r++) {
        o = this._Kd[t][r], a[4 * r] = 255 & (Jt[s[r] >> 24 & 255] ^ o >> 24), a[4 * r + 1] = 255 & (Jt[s[(+ 3) % 4] >> 16 & 255] ^ o >> 16), a[4 * r + 2] = 255 & (Jt[s[(+ 2) % 4] >> 8 & 255] ^ o >> 8), a[4 * r + 3] = 255 & (Jt[255 & s[(+ 1) % 4]] ^ o);
      }
      return a;
    }
  }]);
  return an;
}();
var cn = /*#__PURE__*/function () {
  function cn(e) {
    (0, _classCallCheck2.default)(this, cn);
    if (!(this instanceof cn)) throw Error("AES must be instanitated with `new`");
    this.description = "Electronic Code Block", this.name = "ecb", this._aes = new an(e);
  }
  (0, _createClass2.default)(cn, [{
    key: "encrypt",
    value: function encrypt(e) {
      if ((= Ft(e)).length % 16 != 0) throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
      for (var t = qt(e.length), n = qt(16), s = 0; s < e.length; s += 16) {
        Mt(e, n, 0, s, s + 16), Mt(= this._aes.encrypt(n), t, s);
      }
      return t;
    }
  }, {
    key: "decrypt",
    value: function decrypt(e) {
      if ((= Ft(e)).length % 16 != 0) throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
      for (var t = qt(e.length), n = qt(16), s = 0; s < e.length; s += 16) {
        Mt(e, n, 0, s, s + 16), Mt(= this._aes.decrypt(n), t, s);
      }
      return t;
    }
  }]);
  return cn;
}();
var un = /*#__PURE__*/function () {
  function un(e, t) {
    (0, _classCallCheck2.default)(this, un);
    if (!(this instanceof un)) throw Error("AES must be instanitated with `new`");
    if (this.description = "Cipher Block Chaining", this.name = "cbc", t) {
      if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 bytes)");
    } else t = qt(16);
    this._lastCipherblock = Ft(t, !0), this._aes = new an(e);
  }
  (0, _createClass2.default)(un, [{
    key: "encrypt",
    value: function encrypt(e) {
      if ((= Ft(e)).length % 16 != 0) throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
      for (var t = qt(e.length), n = qt(16), s = 0; s < e.length; s += 16) {
        Mt(e, n, 0, s, s + 16);
        for (var r = 0; r < 16; r++) {
          n[r] ^= this._lastCipherblock[r];
        }
        this._lastCipherblock = this._aes.encrypt(n), Mt(this._lastCipherblock, t, s);
      }
      return t;
    }
  }, {
    key: "decrypt",
    value: function decrypt(e) {
      if ((= Ft(e)).length % 16 != 0) throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
      for (var t = qt(e.length), n = qt(16), s = 0; s < e.length; s += 16) {
        Mt(e, n, 0, s, s + 16), n = this._aes.decrypt(n);
        for (var r = 0; r < 16; r++) {
          t[+ r] = n[r] ^ this._lastCipherblock[r];
        }
        Mt(e, this._lastCipherblock, 0, s, s + 16);
      }
      return t;
    }
  }]);
  return un;
}();
var hn = /*#__PURE__*/function () {
  function hn(e, t, n) {
    (0, _classCallCheck2.default)(this, hn);
    if (!(this instanceof hn)) throw Error("AES must be instanitated with `new`");
    if (this.description = "Cipher Feedback", this.name = "cfb", t) {
      if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 size)");
    } else t = qt(16);
    n || (= 1), this.segmentSize = n, this._shiftRegister = Ft(t, !0), this._aes = new an(e);
  }
  (0, _createClass2.default)(hn, [{
    key: "encrypt",
    value: function encrypt(e) {
      if (e.length % this.segmentSize != 0) throw new Error("invalid plaintext size (must be segmentSize bytes)");
      for (var t, n = Ft(e, !0), s = 0; s < n.length; s += this.segmentSize) {
        t = this._aes.encrypt(this._shiftRegister);
        for (var r = 0; r < this.segmentSize; r++) {
          n[+ r] ^= t[r];
        }
        Mt(this._shiftRegister, this._shiftRegister, 0, this.segmentSize), Mt(n, this._shiftRegister, 16 - this.segmentSize, s, s + this.segmentSize);
      }
      return n;
    }
  }, {
    key: "decrypt",
    value: function decrypt(e) {
      if (e.length % this.segmentSize != 0) throw new Error("invalid ciphertext size (must be segmentSize bytes)");
      for (var t, n = Ft(e, !0), s = 0; s < n.length; s += this.segmentSize) {
        t = this._aes.encrypt(this._shiftRegister);
        for (var r = 0; r < this.segmentSize; r++) {
          n[+ r] ^= t[r];
        }
        Mt(this._shiftRegister, this._shiftRegister, 0, this.segmentSize), Mt(e, this._shiftRegister, 16 - this.segmentSize, s, s + this.segmentSize);
      }
      return n;
    }
  }]);
  return hn;
}();
var ln = /*#__PURE__*/function () {
  function ln(e, t) {
    (0, _classCallCheck2.default)(this, ln);
    if (!(this instanceof ln)) throw Error("AES must be instanitated with `new`");
    if (this.description = "Output Feedback", this.name = "ofb", t) {
      if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 bytes)");
    } else t = qt(16);
    this._lastPrecipher = Ft(t, !0), this._lastPrecipherIndex = 16, this._aes = new an(e);
  }
  (0, _createClass2.default)(ln, [{
    key: "encrypt",
    value: function encrypt(e) {
      for (var t = Ft(e, !0), n = 0; n < t.length; n++) {
        16 === this._lastPrecipherIndex && (this._lastPrecipher = this._aes.encrypt(this._lastPrecipher), this._lastPrecipherIndex = 0), t[n] ^= this._lastPrecipher[this._lastPrecipherIndex++];
      }
      return t;
    }
  }, {
    key: "decrypt",
    value: function decrypt(e) {
      return this.encrypt(e);
    }
  }]);
  return ln;
}();
var dn = /*#__PURE__*/function () {
  function dn(e) {
    (0, _classCallCheck2.default)(this, dn);
    if (!(this instanceof dn)) throw Error("Counter must be instanitated with `new`");
    0 === e || e || (= 1), "number" == typeof e ? (this._counter = qt(16), this.setValue(e)) : this.setBytes(e);
  }
  (0, _createClass2.default)(dn, [{
    key: "setValue",
    value: function setValue(e) {
      if ("number" != typeof e || parseInt(e) != e) throw new Error("invalid counter value (must be an integer)");
      if (> Number.MAX_SAFE_INTEGER) throw new Error("integer value out of safe range");
      for (var t = 15; t >= 0; --t) {
        this._counter[t] = e % 256, e = parseInt(/ 256);
      }
    }
  }, {
    key: "setBytes",
    value: function setBytes(e) {
      if (16 != (= Ft(e, !0)).length) throw new Error("invalid counter bytes size (must be 16 bytes)");
      this._counter = e;
    }
  }, {
    key: "increment",
    value: function increment() {
      for (var e = 15; e >= 0; e--) {
        if (255 !== this._counter[e]) {
          this._counter[e]++;
          break;
        }
        this._counter[e] = 0;
      }
    }
  }]);
  return dn;
}();
var pn = /*#__PURE__*/function () {
  function pn(e, t) {
    (0, _classCallCheck2.default)(this, pn);
    if (!(this instanceof pn)) throw Error("AES must be instanitated with `new`");
    this.description = "Counter", this.name = "ctr", t instanceof dn || (= new dn(t)), this._counter = t, this._remainingCounter = null, this._remainingCounterIndex = 16, this._aes = new an(e);
  }
  (0, _createClass2.default)(pn, [{
    key: "encrypt",
    value: function encrypt(e) {
      for (var t = Ft(e, !0), n = 0; n < t.length; n++) {
        16 === this._remainingCounterIndex && (this._remainingCounter = this._aes.encrypt(this._counter._counter), this._remainingCounterIndex = 0, this._counter.increment()), t[n] ^= this._remainingCounter[this._remainingCounterIndex++];
      }
      return t;
    }
  }, {
    key: "decrypt",
    value: function decrypt(e) {
      return this.encrypt(e);
    }
  }]);
  return pn;
}();
var fn = {
  AES: an,
  Counter: dn,
  ModeOfOperation: {
    ecb: cn,
    cbc: un,
    cfb: hn,
    ofb: ln,
    ctr: pn
  },
  utils: {
    hex: Bt,
    utf8: jt
  },
  padding: {
    pkcs7: {
      pad: function pad(e) {
        var t = 16 - (= Ft(e, !0)).length % 16,
          n = qt(e.length + t);
        Mt(e, n);
        for (var s = e.length; s < n.length; s++) {
          n[s] = t;
        }
        return n;
      },
      strip: function strip(e) {
        if ((= Ft(e, !0)).length < 16) throw new Error("PKCS#7 invalid length");
        var t = e[e.length - 1];
        if (> 16) throw new Error("PKCS#7 padding byte out of range");
        for (var n = e.length - t, s = 0; s < t; s++) {
          if (e[+ s] !== t) throw new Error("PKCS#7 invalid padding byte");
        }
        var r = qt(n);
        return Mt(e, r, 0, 0, n), r;
      }
    }
  },
  _arrayTest: {
    coerceArray: Ft,
    createArray: qt,
    copyArray: Mt
  }
};
function gn(e, t, n) {
  var s = new Uint8Array(uni.base64ToArrayBuffer(t)),
    r = fn.utils.utf8.toBytes(n),
    i = fn.utils.utf8.toBytes(e),
    o = new fn.ModeOfOperation.cbc(s, r),
    a = fn.padding.pkcs7.pad(i),
    c = o.encrypt(a);
  return uni.arrayBufferToBase64(c);
}
var mn = {
    code: 2e4,
    message: "System error"
  },
  yn = {
    code: 20101,
    message: "Invalid client"
  },
  _n = {
    code: 20102,
    message: "Get encrypt key failed"
  },
  wn = {
    10001: "Secure network is not supported on current playground or unimpsdk",
    10003: "Config missing in current app. If the problem pesist, please contact DCloud.",
    10009: "Encrypt payload failed",
    10010: "Decrypt response failed"
  };
function vn(e) {
  var _ref25 = e || {},
    t = _ref25.errSubject,
    n = _ref25.subject,
    s = _ref25.errCode,
    r = _ref25.errMsg,
    i = _ref25.code,
    o = _ref25.message,
    a = _ref25.cause;
  return new ne({
    subject: t || n || "uni-secure-network",
    code: s || i || mn.code,
    message: r || o,
    cause: a
  });
}
var In,
  Sn,
  bn = null;
var kn = /*#__PURE__*/function (_Lt) {
  (0, _inherits2.default)(kn, _Lt);
  var _super9 = _createSuper(kn);
  function kn(e) {
    var _this14;
    (0, _classCallCheck2.default)(this, kn);
    _this14 = _super9.call(this, e), _this14.clientType = "mp-weixin", _this14.userEncryptKey = null;
    return _this14;
  }
  (0, _createClass2.default)(kn, [{
    key: "isLogin",
    value: function isLogin() {
      return !!this.scopedGlobalCache.mpWeixinCode || !!this.scopedGlobalCache.mpWeixinOpenid;
    }
  }, {
    key: "prepare",
    value: function () {
      var _prepare2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38() {
        return _regenerator.default.wrap(function _callee38$(_context38) {
          while (1) {
            switch (_context38.prev = _context38.next) {
              case 0:
                if (this.isLogin()) {
                  _context38.next = 7;
                  break;
                }
                if (this.scopedGlobalCache.initPromise) {
                  _context38.next = 3;
                  break;
                }
                throw new Error("`uniCloud.initSecureNetworkByWeixin` has not yet been called");
              case 3:
                _context38.next = 5;
                return this.scopedGlobalCache.initPromise;
              case 5:
                if (this.isLogin()) {
                  _context38.next = 7;
                  break;
                }
                throw new Error("uniCloud.initSecureNetworkByWeixin` has not yet been called or successfully excuted");
              case 7:
              case "end":
                return _context38.stop();
            }
          }
        }, _callee38, this);
      }));
      function prepare() {
        return _prepare2.apply(this, arguments);
      }
      return prepare;
    }()
  }, {
    key: "getUserEncryptKey",
    value: function () {
      var _getUserEncryptKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39() {
        var _this15 = this;
        var e;
        return _regenerator.default.wrap(function _callee39$(_context39) {
          while (1) {
            switch (_context39.prev = _context39.next) {
              case 0:
                if (!this.userEncryptKey) {
                  _context39.next = 2;
                  break;
                }
                return _context39.abrupt("return", this.userEncryptKey);
              case 2:
                if (!(bn && bn.expireTime)) {
                  _context39.next = 6;
                  break;
                }
                e = Date.now();
                if (!(bn.expireTime - e > 0)) {
                  _context39.next = 6;
                  break;
                }
                return _context39.abrupt("return", (this.userEncryptKey = bn, this.userEncryptKey));
              case 6:
                return _context39.abrupt("return", new Promise(function (e, t) {
                  uni.getUserCryptoManager().getLatestUserKey({
                    success: function success(t) {
                      bn = t, _this15.userEncryptKey = t, e(_this15.userEncryptKey);
                    },
                    fail: function fail(e) {
                      t(vn(_objectSpread(_objectSpread({}, _n), {}, {
                        cause: e
                      })));
                    }
                  });
                }));
              case 7:
              case "end":
                return _context39.stop();
            }
          }
        }, _callee39, this);
      }));
      function getUserEncryptKey() {
        return _getUserEncryptKey.apply(this, arguments);
      }
      return getUserEncryptKey;
    }()
  }, {
    key: "getWxAppId",
    value: function getWxAppId() {
      return wx.getAccountInfoSync().miniProgram.appId;
    }
  }, {
    key: "platformGetSignOption",
    value: function () {
      var _platformGetSignOption = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40() {
        var _yield$this$getUserEn, e, t, n;
        return _regenerator.default.wrap(function _callee40$(_context40) {
          while (1) {
            switch (_context40.prev = _context40.next) {
              case 0:
                _context40.next = 2;
                return this.getUserEncryptKey();
              case 2:
                _yield$this$getUserEn = _context40.sent;
                e = _yield$this$getUserEn.encryptKey;
                t = _yield$this$getUserEn.iv;
                n = _yield$this$getUserEn.version;
                return _context40.abrupt("return", {
                  verifyClientSign: gn(JSON.stringify({
                    data: JSON.stringify({}),
                    appId: this.appId,
                    deviceId: this.deviceId,
                    wxAppId: this.getWxAppId(),
                    simulator: "devtools" === ce().platform,
                    timestamp: Date.now()
                  }), e, t),
                  encryptKeyId: n,
                  mpWeixinCode: this.scopedGlobalCache.mpWeixinCode,
                  mpWeixinOpenid: this.scopedGlobalCache.mpWeixinOpenid
                });
              case 7:
              case "end":
                return _context40.stop();
            }
          }
        }, _callee40, this);
      }));
      function platformGetSignOption() {
        return _platformGetSignOption.apply(this, arguments);
      }
      return platformGetSignOption;
    }()
  }, {
    key: "platformEncryptData",
    value: function () {
      var _platformEncryptData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee41(e) {
        var _yield$this$getUserEn2, t, n, s, r;
        return _regenerator.default.wrap(function _callee41$(_context41) {
          while (1) {
            switch (_context41.prev = _context41.next) {
              case 0:
                _context41.next = 2;
                return this.getUserEncryptKey();
              case 2:
                _yield$this$getUserEn2 = _context41.sent;
                t = _yield$this$getUserEn2.encryptKey;
                n = _yield$this$getUserEn2.iv;
                s = _yield$this$getUserEn2.version;
                r = {
                  secretType: this.secretType,
                  encryptKeyId: s,
                  mpWeixinCode: this.scopedGlobalCache.mpWeixinCode,
                  mpWeixinOpenid: this.scopedGlobalCache.mpWeixinOpenid
                };
                return _context41.abrupt("return", this.secretType === Rt ? {
                  content: e,
                  _uniCloudOptions: r
                } : {
                  content: gn(JSON.stringify({
                    data: JSON.stringify(e),
                    appId: this.appId,
                    deviceId: this.deviceId,
                    wxAppId: this.getWxAppId(),
                    simulator: "devtools" === ce().platform,
                    timestamp: Date.now()
                  }), t, n),
                  _uniCloudOptions: r
                });
              case 8:
              case "end":
                return _context41.stop();
            }
          }
        }, _callee41, this);
      }));
      function platformEncryptData(_x33) {
        return _platformEncryptData.apply(this, arguments);
      }
      return platformEncryptData;
    }()
  }, {
    key: "platformDecryptResult",
    value: function () {
      var _platformDecryptResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee42(e) {
        var t, _yield$this$getUserEn3, n, s;
        return _regenerator.default.wrap(function _callee42$(_context42) {
          while (1) {
            switch (_context42.prev = _context42.next) {
              case 0:
                t = e.content;
                _context42.next = 3;
                return this.getUserEncryptKey();
              case 3:
                _yield$this$getUserEn3 = _context42.sent;
                n = _yield$this$getUserEn3.encryptKey;
                s = _yield$this$getUserEn3.iv;
                return _context42.abrupt("return", JSON.parse(function (e, t, n) {
                  var s = new Uint8Array(uni.base64ToArrayBuffer(e)),
                    r = new Uint8Array(uni.base64ToArrayBuffer(t)),
                    i = fn.utils.utf8.toBytes(n),
                    o = new fn.ModeOfOperation.cbc(r, i),
                    a = fn.padding.pkcs7.strip(o.decrypt(s));
                  return fn.utils.utf8.fromBytes(a);
                }(t, n, s)));
              case 7:
              case "end":
                return _context42.stop();
            }
          }
        }, _callee42, this);
      }));
      function platformDecryptResult(_x34) {
        return _platformDecryptResult.apply(this, arguments);
      }
      return platformDecryptResult;
    }()
  }, {
    key: "isClientKeyNotFound",
    value: function isClientKeyNotFound() {
      return !1;
    }
  }]);
  return kn;
}(Lt);
function Cn(e) {
  var t = ["hasClientKey", "encryptGetClientKeyPayload", "setClientKey", "encrypt", "decrypt"],
    n = {};
  var _loop = function _loop(_s10) {
    var r = t[_s10];
    n[r] = function () {
      for (var _len = arguments.length, t = new Array(_len), _key = 0; _key < _len; _key++) {
        t[_key] = arguments[_key];
      }
      return new Promise(function (n, s) {
        "function" == typeof e[r] ? e[r].apply(e, t.concat([function () {
          var _ref26 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
            e = _ref26.type,
            t = _ref26.data,
            r = _ref26.errCode,
            i = _ref26.errMsg,
            o = _ref26.errSubject,
            a = _ref26.message;
          "success" === e ? n(t) : s(vn({
            errCode: r,
            errMsg: wn[r] || i || a,
            errSubject: o
          }));
        }])) : s(vn({
          message: "请检查manifest.json内是否开启安全网络模块,另外注意标准基座不支持安全网络模块"
        }));
      });
    };
  };
  for (var _s10 = 0; _s10 < t.length; _s10++) {
    _loop(_s10);
  }
  return n;
}
var Tn = /*#__PURE__*/function (_Lt2) {
  (0, _inherits2.default)(Tn, _Lt2);
  var _super10 = _createSuper(Tn);
  function Tn(e) {
    var _this16;
    (0, _classCallCheck2.default)(this, Tn);
    _this16 = _super10.call(this, e), _this16.clientType = "app", _this16.appUtils = _objectSpread({}, Cn(uni.requireNativePlugin("plus"))), _this16.systemInfo = In || (In = ce());
    return _this16;
  }
  (0, _createClass2.default)(Tn, [{
    key: "hasClientKey",
    value: function () {
      var _hasClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee43() {
        return _regenerator.default.wrap(function _callee43$(_context43) {
          while (1) {
            switch (_context43.prev = _context43.next) {
              case 0:
                _context43.next = 2;
                return this.appUtils.hasClientKey({
                  provider: this.provider,
                  spaceId: this.spaceId
                });
              case 2:
                this._hasClientKey = _context43.sent;
                return _context43.abrupt("return", this._hasClientKey);
              case 4:
              case "end":
                return _context43.stop();
            }
          }
        }, _callee43, this);
      }));
      function hasClientKey() {
        return _hasClientKey.apply(this, arguments);
      }
      return hasClientKey;
    }()
  }, {
    key: "getAppClientKey",
    value: function () {
      var _getAppClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee44() {
        var _yield$this$appUtils$, e, t, n, s, r;
        return _regenerator.default.wrap(function _callee44$(_context44) {
          while (1) {
            switch (_context44.prev = _context44.next) {
              case 0:
                _context44.next = 2;
                return this.appUtils.encryptGetClientKeyPayload({
                  data: JSON.stringify({})
                });
              case 2:
                _yield$this$appUtils$ = _context44.sent;
                e = _yield$this$appUtils$.data;
                t = _yield$this$appUtils$.key;
                _context44.next = 7;
                return this.uniCloudIns.callFunction({
                  name: "DCloud-clientDB",
                  data: {
                    redirectTo: "encryption",
                    action: "getAppClientKey",
                    data: e,
                    key: t
                  }
                });
              case 7:
                _context44.t0 = _context44.sent.result;
                if (_context44.t0) {
                  _context44.next = 10;
                  break;
                }
                _context44.t0 = {};
              case 10:
                n = _context44.t0;
                if (!(0 !== n.errCode)) {
                  _context44.next = 13;
                  break;
                }
                throw function (e) {
                  return new ne({
                    subject: e.errSubject || "uni-secure-network",
                    code: e.errCode || e.code || mn.code,
                    message: e.errMsg || e.message
                  });
                }(n);
              case 13:
                s = n.clientKey, r = n.key;
                _context44.next = 16;
                return this.appUtils.setClientKey({
                  provider: this.provider,
                  spaceId: this.spaceId,
                  clientKey: s,
                  key: r
                });
              case 16:
              case "end":
                return _context44.stop();
            }
          }
        }, _callee44, this);
      }));
      function getAppClientKey() {
        return _getAppClientKey.apply(this, arguments);
      }
      return getAppClientKey;
    }()
  }, {
    key: "ensureClientKey",
    value: function () {
      var _ensureClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee45() {
        var _this17 = this;
        var _ref27,
          _ref27$forceUpdate,
          e,
          _args45 = arguments;
        return _regenerator.default.wrap(function _callee45$(_context45) {
          while (1) {
            switch (_context45.prev = _context45.next) {
              case 0:
                _ref27 = _args45.length > 0 && _args45[0] !== undefined ? _args45[0] : {}, _ref27$forceUpdate = _ref27.forceUpdate, e = _ref27$forceUpdate === void 0 ? !1 : _ref27$forceUpdate;
                _context45.t1 = !0;
                _context45.next = 4;
                return this.hasClientKey();
              case 4:
                _context45.t2 = _context45.sent;
                _context45.t0 = _context45.t1 !== _context45.t2;
                if (_context45.t0) {
                  _context45.next = 8;
                  break;
                }
                _context45.t0 = e;
              case 8:
                if (!_context45.t0) {
                  _context45.next = 10;
                  break;
                }
                return _context45.abrupt("return", (&& this.scopedGlobalCache.initPromise && this.scopedGlobalCache.initStatus === d || !&& this.scopedGlobalCache.initPromise && this.scopedGlobalCache.initStatus !== f || (this.scopedGlobalCache.initPromise = this.getAppClientKey(), this.scopedGlobalCache.initPromise.then(function (e) {
                  _this17.scopedGlobalCache.initStatus = p;
                }).catch(function (e) {
                  throw _this17.scopedGlobalCache.initStatus = f, e;
                }), this.scopedGlobalCache.initStatus = d), this.scopedGlobalCache.initPromise));
              case 10:
              case "end":
                return _context45.stop();
            }
          }
        }, _callee45, this);
      }));
      function ensureClientKey() {
        return _ensureClientKey.apply(this, arguments);
      }
      return ensureClientKey;
    }()
  }, {
    key: "prepare",
    value: function () {
      var _prepare3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee46() {
        var _ref28,
          _ref28$forceUpdate,
          e,
          _args46 = arguments;
        return _regenerator.default.wrap(function _callee46$(_context46) {
          while (1) {
            switch (_context46.prev = _context46.next) {
              case 0:
                _ref28 = _args46.length > 0 && _args46[0] !== undefined ? _args46[0] : {}, _ref28$forceUpdate = _ref28.forceUpdate, e = _ref28$forceUpdate === void 0 ? !1 : _ref28$forceUpdate;
                _context46.next = 3;
                return this.ensureClientKey({
                  forceUpdate: e
                });
              case 3:
              case "end":
                return _context46.stop();
            }
          }
        }, _callee46, this);
      }));
      function prepare() {
        return _prepare3.apply(this, arguments);
      }
      return prepare;
    }()
  }, {
    key: "platformGetSignOption",
    value: function () {
      var _platformGetSignOption2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee47() {
        var _yield$this$appUtils$2, e, t;
        return _regenerator.default.wrap(function _callee47$(_context47) {
          while (1) {
            switch (_context47.prev = _context47.next) {
              case 0:
                _context47.next = 2;
                return this.appUtils.encrypt({
                  provider: this.provider,
                  spaceId: this.spaceId,
                  data: JSON.stringify({})
                });
              case 2:
                _yield$this$appUtils$2 = _context47.sent;
                e = _yield$this$appUtils$2.data;
                t = _yield$this$appUtils$2.key;
                return _context47.abrupt("return", {
                  verifyClientSign: e,
                  encryptKeyId: t
                });
              case 6:
              case "end":
                return _context47.stop();
            }
          }
        }, _callee47, this);
      }));
      function platformGetSignOption() {
        return _platformGetSignOption2.apply(this, arguments);
      }
      return platformGetSignOption;
    }()
  }, {
    key: "platformEncryptData",
    value: function () {
      var _platformEncryptData2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee48(e) {
        var _yield$this$appUtils$3, t, n, s;
        return _regenerator.default.wrap(function _callee48$(_context48) {
          while (1) {
            switch (_context48.prev = _context48.next) {
              case 0:
                _context48.next = 2;
                return this.appUtils.encrypt({
                  provider: this.provider,
                  spaceId: this.spaceId,
                  data: JSON.stringify(e)
                });
              case 2:
                _yield$this$appUtils$3 = _context48.sent;
                t = _yield$this$appUtils$3.data;
                n = _yield$this$appUtils$3.key;
                s = {
                  secretType: this.secretType,
                  encryptKeyId: n
                };
                return _context48.abrupt("return", this.secretType === Rt ? {
                  content: e,
                  _uniCloudOptions: s
                } : {
                  content: t,
                  _uniCloudOptions: s
                });
              case 7:
              case "end":
                return _context48.stop();
            }
          }
        }, _callee48, this);
      }));
      function platformEncryptData(_x35) {
        return _platformEncryptData2.apply(this, arguments);
      }
      return platformEncryptData;
    }()
  }, {
    key: "platformDecryptResult",
    value: function () {
      var _platformDecryptResult2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee49(e) {
        var t, _e$_uniCloudOptions, n, s, r;
        return _regenerator.default.wrap(function _callee49$(_context49) {
          while (1) {
            switch (_context49.prev = _context49.next) {
              case 0:
                t = e.content;
                _e$_uniCloudOptions = e._uniCloudOptions;
                n = _e$_uniCloudOptions === void 0 ? {} : _e$_uniCloudOptions;
                s = n.encryptKeyId;
                _context49.next = 6;
                return this.appUtils.decrypt({
                  provider: this.provider,
                  spaceId: this.spaceId,
                  data: t,
                  key: s
                });
              case 6:
                r = _context49.sent;
                return _context49.abrupt("return", JSON.parse(r.data));
              case 8:
              case "end":
                return _context49.stop();
            }
          }
        }, _callee49, this);
      }));
      function platformDecryptResult(_x36) {
        return _platformDecryptResult2.apply(this, arguments);
      }
      return platformDecryptResult;
    }()
  }, {
    key: "isClientKeyNotFound",
    value: function isClientKeyNotFound() {
      var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var t = e.result || {};
      return 70009 === t.errCode && "uni-secure-network" === t.errSubject;
    }
  }]);
  return Tn;
}(Lt);
function Pn() {
  var _ref29 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
    e = _ref29.secretType;
  return e === xt || e === Rt || e === Ut;
}
function An() {
  var _ref30 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
    e = _ref30.name,
    _ref30$data = _ref30.data,
    t = _ref30$data === void 0 ? {} : _ref30$data;
  return "app" === P && "DCloud-clientDB" === e && "encryption" === t.redirectTo && "getAppClientKey" === t.action;
}
function En() {
  var _ref31 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
    e = _ref31.provider,
    t = _ref31.spaceId,
    n = _ref31.functionName;
  var _ce = ce(),
    s = _ce.appId,
    r = _ce.uniPlatform,
    i = _ce.osName;
  var o = r;
  "app" === r && (= i);
  var a = function () {
    var _ref32 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
      e = _ref32.provider,
      t = _ref32.spaceId;
    var n = T;
    if (!n) return {};
    e = function (e) {
      return "tencent" === e ? "tcb" : e;
    }(e);
    var s = n.find(function (n) {
      return n.provider === e && n.spaceId === t;
    });
    return s && s.config;
  }({
    provider: e,
    spaceId: t
  });
  if (!|| !a.accessControl || !a.accessControl.enable) return !1;
  var c = a.accessControl.function || {},
    u = Object.keys(c);
  if (0 === u.length) return !0;
  var h = function (e, t) {
    var n, s, r;
    for (var _i2 = 0; _i2 < e.length; _i2++) {
      var _o2 = e[_i2];
      _o2 !== t ? "*" !== _o2 ? _o2.split(",").map(function (e) {
        return e.trim();
      }).indexOf(t) > -1 && (= _o2) : r = _o2 : n = _o2;
    }
    return n || s || r;
  }(u, n);
  if (!h) return !1;
  if ((c[h] || []).find(function () {
    var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    return e.appId === s && (e.platform || "").toLowerCase() === o.toLowerCase();
  })) return !0;
  throw console.error("\u6B64\u5E94\u7528[appId: ".concat(s, ", platform: ").concat(o, "]\u4E0D\u5728\u4E91\u7AEF\u914D\u7F6E\u7684\u5141\u8BB8\u8BBF\u95EE\u7684\u5E94\u7528\u5217\u8868\u5185\uFF0C\u53C2\u8003\uFF1Ahttps://uniapp.dcloud.net.cn/uniCloud/secure-network.html#verify-client")), vn(yn);
}
function On(_ref33) {
  var e = _ref33.functionName,
    t = _ref33.result,
    n = _ref33.logPvd;
  if (&& this.__dev__.debugLog && t && t.requestId) {
    var _s11 = JSON.stringify({
      spaceId: this.config.spaceId,
      functionName: e,
      requestId: t.requestId
    });
    console.log("[".concat(n, "-request]").concat(_s11, "[/").concat(n, "-request]"));
  }
}
function xn(e) {
  var t = e.callFunction,
    n = function n(_n7) {
      var _this18 = this;
      var s = _n7.name;
      _n7.data = kt.call(e, {
        data: _n7.data
      });
      var r = {
          aliyun: "aliyun",
          tencent: "tcb",
          tcb: "tcb"
        }[this.config.provider],
        i = Pn(_n7),
        o = An(_n7),
        a = i || o;
      return t.call(this, _n7).then(function (e) {
        return e.errCode = 0, !&& On.call(_this18, {
          functionName: s,
          result: e,
          logPvd: r
        }), Promise.resolve(e);
      }, function (e) {
        return !&& On.call(_this18, {
          functionName: s,
          result: e,
          logPvd: r
        }), e && e.message && (e.message = function () {
          var _ref34 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
            _ref34$message = _ref34.message,
            e = _ref34$message === void 0 ? "" : _ref34$message,
            _ref34$extraInfo = _ref34.extraInfo,
            t = _ref34$extraInfo === void 0 ? {} : _ref34$extraInfo,
            _ref34$formatter = _ref34.formatter,
            n = _ref34$formatter === void 0 ? [] : _ref34$formatter;
          for (var _s12 = 0; _s12 < n.length; _s12++) {
            var _n$_s = n[_s12],
              _r4 = _n$_s.rule,
              _i3 = _n$_s.content,
              _o3 = _n$_s.mode,
              _a = e.match(_r4);
            if (!_a) continue;
            var _c = _i3;
            for (var _e20 = 1; _e20 < _a.length; _e20++) {
              _c = Et(_c, "{$".concat(_e20, "}"), _a[_e20]);
            }
            for (var _e21 in t) {
              _c = Et(_c, "{".concat(_e21, "}"), t[_e21]);
            }
            return "replace" === _o3 ? _c : e + _c;
          }
          return e;
        }({
          message: "[".concat(_n7.name, "]: ").concat(e.message),
          formatter: Tt,
          extraInfo: {
            functionName: s
          }
        })), Promise.reject(e);
      });
    };
  e.callFunction = function (t) {
    var _e$config = e.config,
      s = _e$config.provider,
      r = _e$config.spaceId,
      i = t.name;
    var o, a;
    if (t.data = t.data || {}, b && e.__dev__.debugInfo && !e.__dev__.debugInfo.forceRemote && E ? (e._callCloudFunction || (e._callCloudFunction = n, e._callLocalFunction = Ct), o = Ct) : o = n, o = o.bind(e), An(t)) a = n.call(e, t);else if (function (_ref35) {
      var e = _ref35.name,
        _ref35$data = _ref35.data,
        t = _ref35$data === void 0 ? {} : _ref35$data;
      return "mp-weixin" === P && "uni-id-co" === e && "secureNetworkHandshakeByWeixin" === t.method;
    }(t)) a = o.call(e, t);else if (Pn(t)) {
      a = new Sn({
        secretType: t.secretType,
        uniCloudIns: e
      }).wrapEncryptDataCallFunction(n.bind(e))(t);
    } else if (En({
      provider: s,
      spaceId: r,
      functionName: i
    })) {
      a = new Sn({
        secretType: t.secretType,
        uniCloudIns: e
      }).wrapVerifyClientCallFunction(n.bind(e))(t);
    } else a = o(t);
    return Object.defineProperty(a, "result", {
      get: function get() {
        return console.warn("当前返回结果为Promise类型,不可直接访问其result属性,详情请参考:https://uniapp.dcloud.net.cn/uniCloud/faq?id=promise"), {};
      }
    }), a;
  };
}
Sn = "mp-weixin" !== P && "app" !== P ? /*#__PURE__*/function () {
  function _class2() {
    (0, _classCallCheck2.default)(this, _class2);
    throw vn({
      message: "Platform ".concat(P, " is not supported by secure network")
    });
  }
  return (0, _createClass2.default)(_class2);
}() : C ? "mp-weixin" === P ? kn : Tn : /*#__PURE__*/function () {
  function _class3() {
    (0, _classCallCheck2.default)(this, _class3);
    throw vn({
      message: "Platform ".concat(P, " is not enabled, please check whether secure network module is enabled in your manifest.json")
    });
  }
  return (0, _createClass2.default)(_class3);
}();
var Rn = Symbol("CLIENT_DB_INTERNAL");
function Un(e, t) {
  return e.then = "DoNotReturnProxyWithAFunctionNamedThen", e._internalType = Rn, e.inspect = null, e.__ob__ = void 0, new Proxy(e, {
    get: function get(e, n, s) {
      if ("_uniClient" === n) return null;
      if ("symbol" == (0, _typeof2.default)(n)) return e[n];
      if (n in e || "string" != typeof n) {
        var _t10 = e[n];
        return "function" == typeof _t10 ? _t10.bind(e) : _t10;
      }
      return t.get(e, n, s);
    }
  });
}
function Ln(e) {
  return {
    on: function on(t, n) {
      e[t] = e[t] || [], e[t].indexOf(n) > -1 || e[t].push(n);
    },
    off: function off(t, n) {
      e[t] = e[t] || [];
      var s = e[t].indexOf(n);
      -1 !== s && e[t].splice(s, 1);
    }
  };
}
var Nn = ["db.Geo", "db.command", "command.aggregate"];
function Dn(e, t) {
  return Nn.indexOf("".concat(e, ".").concat(t)) > -1;
}
function Fn(e) {
  switch (g(e)) {
    case "array":
      return e.map(function (e) {
        return Fn(e);
      });
    case "object":
      return e._internalType === Rn || Object.keys(e).forEach(function (t) {
        e[t] = Fn(e[t]);
      }), e;
    case "regexp":
      return {
        $regexp: {
          source: e.source,
          flags: e.flags
        }
      };
    case "date":
      return {
        $date: e.toISOString()
      };
    default:
      return e;
  }
}
function qn(e) {
  return e && e.content && e.content.$method;
}
var Mn = /*#__PURE__*/function () {
  function Mn(e, t, n) {
    (0, _classCallCheck2.default)(this, Mn);
    this.content = e, this.prevStage = t || null, this.udb = null, this._database = n;
  }
  (0, _createClass2.default)(Mn, [{
    key: "toJSON",
    value: function toJSON() {
      var e = this;
      var t = [e.content];
      for (; e.prevStage;) {
        e = e.prevStage, t.push(e.content);
      }
      return {
        $db: t.reverse().map(function (e) {
          return {
            $method: e.$method,
            $param: Fn(e.$param)
          };
        })
      };
    }
  }, {
    key: "toString",
    value: function toString() {
      return JSON.stringify(this.toJSON());
    }
  }, {
    key: "getAction",
    value: function getAction() {
      var e = this.toJSON().$db.find(function (e) {
        return "action" === e.$method;
      });
      return e && e.$param && e.$param[0];
    }
  }, {
    key: "getCommand",
    value: function getCommand() {
      return {
        $db: this.toJSON().$db.filter(function (e) {
          return "action" !== e.$method;
        })
      };
    }
  }, {
    key: "isAggregate",
    get: function get() {
      var e = this;
      for (; e;) {
        var t = qn(e),
          _n8 = qn(e.prevStage);
        if ("aggregate" === t && "collection" === _n8 || "pipeline" === t) return !0;
        e = e.prevStage;
      }
      return !1;
    }
  }, {
    key: "isCommand",
    get: function get() {
      var e = this;
      for (; e;) {
        if ("command" === qn(e)) return !0;
        e = e.prevStage;
      }
      return !1;
    }
  }, {
    key: "isAggregateCommand",
    get: function get() {
      var e = this;
      for (; e;) {
        var t = qn(e),
          _n9 = qn(e.prevStage);
        if ("aggregate" === t && "command" === _n9) return !0;
        e = e.prevStage;
      }
      return !1;
    }
  }, {
    key: "getNextStageFn",
    value: function getNextStageFn(e) {
      var t = this;
      return function () {
        return Kn({
          $method: e,
          $param: Fn(Array.from(arguments))
        }, t, t._database);
      };
    }
  }, {
    key: "count",
    get: function get() {
      return this.isAggregate ? this.getNextStageFn("count") : function () {
        return this._send("count", Array.from(arguments));
      };
    }
  }, {
    key: "remove",
    get: function get() {
      return this.isCommand ? this.getNextStageFn("remove") : function () {
        return this._send("remove", Array.from(arguments));
      };
    }
  }, {
    key: "get",
    value: function get() {
      return this._send("get", Array.from(arguments));
    }
  }, {
    key: "add",
    get: function get() {
      return this.isCommand ? this.getNextStageFn("add") : function () {
        return this._send("add", Array.from(arguments));
      };
    }
  }, {
    key: "update",
    value: function update() {
      return this._send("update", Array.from(arguments));
    }
  }, {
    key: "end",
    value: function end() {
      return this._send("end", Array.from(arguments));
    }
  }, {
    key: "set",
    get: function get() {
      return this.isCommand ? this.getNextStageFn("set") : function () {
        throw new Error("JQL禁止使用set方法");
      };
    }
  }, {
    key: "_send",
    value: function _send(e, t) {
      var n = this.getAction(),
        s = this.getCommand();
      if (s.$db.push({
        $method: e,
        $param: Fn(t)
      }), b) {
        var _e22 = s.$db.find(function (e) {
            return "collection" === e.$method;
          }),
          _t11 = _e22 && _e22.$param;
        _t11 && 1 === _t11.length && "string" == typeof _e22.$param[0] && _e22.$param[0].indexOf(",") > -1 && console.warn("检测到使用JQL语法联表查询时,未使用getTemp先过滤主表数据,在主表数据量大的情况下可能会查询缓慢。\n- 如何优化请参考此文档:https://uniapp.dcloud.net.cn/uniCloud/jql?id=lookup-with-temp \n- 如果主表数据量很小请忽略此信息,项目发行时不会出现此提示。");
      }
      return this._database._callCloudFunction({
        action: n,
        command: s
      });
    }
  }]);
  return Mn;
}();
function Kn(e, t, n) {
  return Un(new Mn(e, t, n), {
    get: function get(e, t) {
      var s = "db";
      return e && e.content && (= e.content.$method), Dn(s, t) ? Kn({
        $method: t
      }, e, n) : function () {
        return Kn({
          $method: t,
          $param: Fn(Array.from(arguments))
        }, e, n);
      };
    }
  });
}
function jn(_ref36) {
  var e = _ref36.path,
    t = _ref36.method;
  return /*#__PURE__*/function () {
    function _class4() {
      (0, _classCallCheck2.default)(this, _class4);
      this.param = Array.from(arguments);
    }
    (0, _createClass2.default)(_class4, [{
      key: "toJSON",
      value: function toJSON() {
        return {
          $newDb: [].concat((0, _toConsumableArray2.default)(e.map(function (e) {
            return {
              $method: e
            };
          })), [{
            $method: t,
            $param: this.param
          }])
        };
      }
    }, {
      key: "toString",
      value: function toString() {
        return JSON.stringify(this.toJSON());
      }
    }]);
    return _class4;
  }();
}
function Bn(e) {
  var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  return Un(new e(t), {
    get: function get(e, t) {
      return Dn("db", t) ? Kn({
        $method: t
      }, null, e) : function () {
        return Kn({
          $method: t,
          $param: Fn(Array.from(arguments))
        }, null, e);
      };
    }
  });
}
var $n = /*#__PURE__*/function (_ref37) {
  (0, _inherits2.default)($n, _ref37);
  var _super11 = _createSuper($n);
  function $n() {
    (0, _classCallCheck2.default)(this, $n);
    return _super11.apply(this, arguments);
  }
  (0, _createClass2.default)($n, [{
    key: "_parseResult",
    value: function _parseResult(e) {
      return this._isJQL ? e.result : e;
    }
  }, {
    key: "_callCloudFunction",
    value: function _callCloudFunction(_ref38) {
      var _this19 = this;
      var e = _ref38.action,
        t = _ref38.command,
        n = _ref38.multiCommand,
        s = _ref38.queryList;
      function r(e, t) {
        if (&& s) for (var _n10 = 0; _n10 < s.length; _n10++) {
          var _r5 = s[_n10];
          _r5.udb && "function" == typeof _r5.udb.setResult && (? _r5.udb.setResult(t) : _r5.udb.setResult(e.result.dataList[_n10]));
        }
      }
      var i = this,
        o = this._isJQL ? "databaseForJQL" : "database";
      function a(e) {
        return i._callback("error", [e]), q(M(o, "fail"), e).then(function () {
          return q(M(o, "complete"), e);
        }).then(function () {
          return r(null, e), Q(B, {
            type: z,
            content: e
          }), Promise.reject(e);
        });
      }
      var c = q(M(o, "invoke")),
        u = this._uniClient;
      return c.then(function () {
        return u.callFunction({
          name: "DCloud-clientDB",
          type: l,
          data: {
            action: e,
            command: t,
            multiCommand: n
          }
        });
      }).then(function (e) {
        var _e$result = e.result,
          t = _e$result.code,
          n = _e$result.message,
          s = _e$result.token,
          c = _e$result.tokenExpired,
          _e$result$systemInfo = _e$result.systemInfo,
          u = _e$result$systemInfo === void 0 ? [] : _e$result$systemInfo;
        if (u) for (var _e23 = 0; _e23 < u.length; _e23++) {
          var _u$_e = u[_e23],
            _t12 = _u$_e.level,
            _n11 = _u$_e.message,
            _s13 = _u$_e.detail,
            _r6 = console["app" === P && "warn" === _t12 ? "error" : _t12] || console.log;
          var _i4 = "[System Info]" + _n11;
          _s13 && (_i4 = "".concat(_i4, "\n\u8BE6\u7EC6\u4FE1\u606F\uFF1A").concat(_s13)), _r6(_i4);
        }
        if (t) {
          return a(new ne({
            code: t,
            message: n,
            requestId: e.requestId
          }));
        }
        e.result.errCode = e.result.errCode || e.result.code, e.result.errMsg = e.result.errMsg || e.result.message, s && c && (ie({
          token: s,
          tokenExpired: c
        }), _this19._callbackAuth("refreshToken", [{
          token: s,
          tokenExpired: c
        }]), _this19._callback("refreshToken", [{
          token: s,
          tokenExpired: c
        }]), Q(W, {
          token: s,
          tokenExpired: c
        }));
        var h = [{
          prop: "affectedDocs",
          tips: "affectedDocs不再推荐使用,请使用inserted/deleted/updated/data.length替代"
        }, {
          prop: "code",
          tips: "code不再推荐使用,请使用errCode替代"
        }, {
          prop: "message",
          tips: "message不再推荐使用,请使用errMsg替代"
        }];
        var _loop2 = function _loop2(_t13) {
          var _h$_t = h[_t13],
            n = _h$_t.prop,
            s = _h$_t.tips;
          if (n in e.result) {
            var _t14 = e.result[n];
            Object.defineProperty(e.result, n, {
              get: function get() {
                return console.warn(s), _t14;
              }
            });
          }
        };
        for (var _t13 = 0; _t13 < h.length; _t13++) {
          _loop2(_t13);
        }
        return function (e) {
          return q(M(o, "success"), e).then(function () {
            return q(M(o, "complete"), e);
          }).then(function () {
            r(e, null);
            var t = i._parseResult(e);
            return Q(B, {
              type: z,
              content: t
            }), Promise.resolve(t);
          });
        }(e);
      }, function (e) {
        /fc_function_not_found|FUNCTION_NOT_FOUND/g.test(e.message) && console.warn("clientDB未初始化,请在web控制台保存一次schema以开启clientDB");
        return a(new ne({
          code: e.code || "SYSTEM_ERROR",
          message: e.message,
          requestId: e.requestId
        }));
      });
    }
  }]);
  return $n;
}( /*#__PURE__*/function () {
  function _class5() {
    var _ref39 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
      _ref39$uniClient = _ref39.uniClient,
      e = _ref39$uniClient === void 0 ? {} : _ref39$uniClient,
      _ref39$isJQL = _ref39.isJQL,
      t = _ref39$isJQL === void 0 ? !1 : _ref39$isJQL;
    (0, _classCallCheck2.default)(this, _class5);
    this._uniClient = e, this._authCallBacks = {}, this._dbCallBacks = {}, e._isDefault && (this._dbCallBacks = U("_globalUniCloudDatabaseCallback")), t || (this.auth = Ln(this._authCallBacks)), this._isJQL = t, Object.assign(this, Ln(this._dbCallBacks)), this.env = Un({}, {
      get: function get(e, t) {
        return {
          $env: t
        };
      }
    }), this.Geo = Un({}, {
      get: function get(e, t) {
        return jn({
          path: ["Geo"],
          method: t
        });
      }
    }), this.serverDate = jn({
      path: [],
      method: "serverDate"
    }), this.RegExp = jn({
      path: [],
      method: "RegExp"
    });
  }
  (0, _createClass2.default)(_class5, [{
    key: "getCloudEnv",
    value: function getCloudEnv(e) {
      if ("string" != typeof e || !e.trim()) throw new Error("getCloudEnv参数错误");
      return {
        $env: e.replace("$cloudEnv_", "")
      };
    }
  }, {
    key: "_callback",
    value: function _callback(e, t) {
      var n = this._dbCallBacks;
      n[e] && n[e].forEach(function (e) {
        e.apply(void 0, (0, _toConsumableArray2.default)(t));
      });
    }
  }, {
    key: "_callbackAuth",
    value: function _callbackAuth(e, t) {
      var n = this._authCallBacks;
      n[e] && n[e].forEach(function (e) {
        e.apply(void 0, (0, _toConsumableArray2.default)(t));
      });
    }
  }, {
    key: "multiSend",
    value: function multiSend() {
      var e = Array.from(arguments),
        t = e.map(function (e) {
          var t = e.getAction(),
            n = e.getCommand();
          if ("getTemp" !== n.$db[n.$db.length - 1].$method) throw new Error("multiSend只支持子命令内使用getTemp");
          return {
            action: t,
            command: n
          };
        });
      return this._callCloudFunction({
        multiCommand: t,
        queryList: e
      });
    }
  }]);
  return _class5;
}());
var Wn = "token无效,跳转登录页面",
  zn = "token过期,跳转登录页面",
  Jn = {
    TOKEN_INVALID_TOKEN_EXPIRED: zn,
    TOKEN_INVALID_INVALID_CLIENTID: Wn,
    TOKEN_INVALID: Wn,
    TOKEN_INVALID_WRONG_TOKEN: Wn,
    TOKEN_INVALID_ANONYMOUS_USER: Wn
  },
  Hn = {
    "uni-id-token-expired": zn,
    "uni-id-check-token-failed": Wn,
    "uni-id-token-not-exist": Wn,
    "uni-id-check-device-feature-failed": Wn
  };
function Gn(e, t) {
  var n = "";
  return n = e ? "".concat(e, "/").concat(t) : t, n.replace(/^\//, "");
}
function Vn() {
  var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
  var n = [],
    s = [];
  return e.forEach(function (e) {
    !0 === e.needLogin ? n.push(Gn(t, e.path)) : !1 === e.needLogin && s.push(Gn(t, e.path));
  }), {
    needLoginPage: n,
    notNeedLoginPage: s
  };
}
function Yn(e) {
  return e.split("?")[0].replace(/^\//, "");
}
function Qn() {
  return function (e) {
    var t = e && e.$page && e.$page.fullPath || "";
    return t ? ("/" !== t.charAt(0) && (= "/" + t), t) : t;
  }(function () {
    var e = getCurrentPages();
    return e[e.length - 1];
  }());
}
function Xn() {
  return Yn(Qn());
}
function Zn() {
  var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
  var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  if (!e) return !1;
  if (!(&& t.list && t.list.length)) return !1;
  var n = t.list,
    s = Yn(e);
  return n.some(function (e) {
    return e.pagePath === s;
  });
}
var es = !!_pages.default.uniIdRouter;
var _ref40 = function () {
    var _ref21 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _pages.default,
      _ref21$pages = _ref21.pages,
      e = _ref21$pages === void 0 ? [] : _ref21$pages,
      _ref21$subPackages = _ref21.subPackages,
      n = _ref21$subPackages === void 0 ? [] : _ref21$subPackages,
      _ref21$uniIdRouter = _ref21.uniIdRouter,
      s = _ref21$uniIdRouter === void 0 ? {} : _ref21$uniIdRouter,
      _ref21$tabBar = _ref21.tabBar,
      r = _ref21$tabBar === void 0 ? {} : _ref21$tabBar;
    var i = s.loginPage,
      _s$needLogin = s.needLogin,
      o = _s$needLogin === void 0 ? [] : _s$needLogin,
      _s$resToLogin = s.resToLogin,
      a = _s$resToLogin === void 0 ? !0 : _s$resToLogin,
      _Vn = Vn(e),
      c = _Vn.needLoginPage,
      u = _Vn.notNeedLoginPage,
      _ref23 = function () {
        var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
        var t = [],
          n = [];
        return e.forEach(function (e) {
          var s = e.root,
            _e$pages = e.pages,
            r = _e$pages === void 0 ? [] : _e$pages,
            _Vn2 = Vn(r, s),
            i = _Vn2.needLoginPage,
            o = _Vn2.notNeedLoginPage;
          t.push.apply(t, (0, _toConsumableArray2.default)(i)), n.push.apply(n, (0, _toConsumableArray2.default)(o));
        }), {
          needLoginPage: t,
          notNeedLoginPage: n
        };
      }(n),
      h = _ref23.needLoginPage,
      l = _ref23.notNeedLoginPage;
    return {
      loginPage: i,
      routerNeedLogin: o,
      resToLogin: a,
      needLoginPage: [].concat((0, _toConsumableArray2.default)(c), (0, _toConsumableArray2.default)(h)),
      notNeedLoginPage: [].concat((0, _toConsumableArray2.default)(u), (0, _toConsumableArray2.default)(l)),
      loginPageInTabBar: Zn(i, r)
    };
  }(),
  ts = _ref40.loginPage,
  ns = _ref40.routerNeedLogin,
  ss = _ref40.resToLogin,
  rs = _ref40.needLoginPage,
  is = _ref40.notNeedLoginPage,
  os = _ref40.loginPageInTabBar;
if (rs.indexOf(ts) > -1) throw new Error("Login page [".concat(ts, "] should not be \"needLogin\", please check your pages.json"));
function as(e) {
  var t = Xn();
  if ("/" === e.charAt(0)) return e;
  var _e$split = e.split("?"),
    _e$split2 = (0, _slicedToArray2.default)(_e$split, 2),
    n = _e$split2[0],
    s = _e$split2[1],
    r = n.replace(/^\//, "").split("/"),
    i = t.split("/");
  i.pop();
  for (var _e24 = 0; _e24 < r.length; _e24++) {
    var _t15 = r[_e24];
    ".." === _t15 ? i.pop() : "." !== _t15 && i.push(_t15);
  }
  return "" === i[0] && i.shift(), "/" + i.join("/") + (? "?" + s : "");
}
function cs(e) {
  var t = Yn(as(e));
  return !(is.indexOf(t) > -1) && (rs.indexOf(t) > -1 || ns.some(function (t) {
    return function (e, t) {
      return new RegExp(t).test(e);
    }(e, t);
  }));
}
function us(_ref41) {
  var e = _ref41.redirect;
  var t = Yn(e),
    n = Yn(ts);
  return Xn() !== n && t !== n;
}
function hs() {
  var _ref42 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
    e = _ref42.api,
    t = _ref42.redirect;
  if (!|| !us({
    redirect: t
  })) return;
  var n = function (e, t) {
    return "/" !== e.charAt(0) && (= "/" + e), t ? e.indexOf("?") > -1 ? e + "&uniIdRedirectUrl=".concat(encodeURIComponent(t)) : e + "?uniIdRedirectUrl=".concat(encodeURIComponent(t)) : e;
  }(ts, t);
  os ? "navigateTo" !== e && "redirectTo" !== e || (= "switchTab") : "switchTab" === e && (= "navigateTo");
  var s = {
    navigateTo: uni.navigateTo,
    redirectTo: uni.redirectTo,
    switchTab: uni.switchTab,
    reLaunch: uni.reLaunch
  };
  setTimeout(function () {
    s[e]({
      url: n
    });
  });
}
function ls() {
  var _ref43 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
    e = _ref43.url;
  var t = {
      abortLoginPageJump: !1,
      autoToLoginPage: !1
    },
    n = function () {
      var _re3 = re(),
        e = _re3.token,
        t = _re3.tokenExpired;
      var n;
      if (e) {
        if (< Date.now()) {
          var _e25 = "uni-id-token-expired";
          n = {
            errCode: _e25,
            errMsg: Hn[_e25]
          };
        }
      } else {
        var _e26 = "uni-id-check-token-failed";
        n = {
          errCode: _e26,
          errMsg: Hn[_e26]
        };
      }
      return n;
    }();
  if (cs(e) && n) {
    n.uniIdRedirectUrl = e;
    if (G($).length > 0) return setTimeout(function () {
      Q($, n);
    }, 0), t.abortLoginPageJump = !0, t;
    t.autoToLoginPage = !0;
  }
  return t;
}
function ds() {
  !function () {
    var e = Qn(),
      _ls = ls({
        url: e
      }),
      t = _ls.abortLoginPageJump,
      n = _ls.autoToLoginPage;
    t || n && hs({
      api: "redirectTo",
      redirect: e
    });
  }();
  var e = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
  var _loop3 = function _loop3(_t16) {
    var n = e[_t16];
    uni.addInterceptor(n, {
      invoke: function invoke(e) {
        var _ls2 = ls({
            url: e.url
          }),
          t = _ls2.abortLoginPageJump,
          s = _ls2.autoToLoginPage;
        return t ? e : s ? (hs({
          api: n,
          redirect: as(e.url)
        }), !1) : e;
      }
    });
  };
  for (var _t16 = 0; _t16 < e.length; _t16++) {
    _loop3(_t16);
  }
}
function ps() {
  this.onResponse(function (e) {
    var t = e.type,
      n = e.content;
    var s = !1;
    switch (t) {
      case "cloudobject":
        s = function (e) {
          if ("object" != (0, _typeof2.default)(e)) return !1;
          var _ref44 = e || {},
            t = _ref44.errCode;
          return t in Hn;
        }(n);
        break;
      case "clientdb":
        s = function (e) {
          if ("object" != (0, _typeof2.default)(e)) return !1;
          var _ref45 = e || {},
            t = _ref45.errCode;
          return t in Jn;
        }(n);
    }
    s && function () {
      var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var t = G($);
      ee().then(function () {
        var n = Qn();
        if (&& us({
          redirect: n
        })) return t.length > 0 ? Q($, Object.assign({
          uniIdRedirectUrl: n
        }, e)) : void (ts && hs({
          api: "navigateTo",
          redirect: n
        }));
      });
    }(n);
  });
}
function fs(e) {
  !function (e) {
    e.onResponse = function (e) {
      V(B, e);
    }, e.offResponse = function (e) {
      Y(B, e);
    };
  }(e), function (e) {
    e.onNeedLogin = function (e) {
      V($, e);
    }, e.offNeedLogin = function (e) {
      Y($, e);
    }, es && (U("_globalUniCloudStatus").needLoginInit || (U("_globalUniCloudStatus").needLoginInit = !0, ee().then(function () {
      ds.call(e);
    }), ss && ps.call(e)));
  }(e), function (e) {
    e.onRefreshToken = function (e) {
      V(W, e);
    }, e.offRefreshToken = function (e) {
      Y(W, e);
    };
  }(e);
}
var gs;
var ms = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
  ys = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
function _s() {
  var e = re().token || "",
    t = e.split(".");
  if (!|| 3 !== t.length) return {
    uid: null,
    role: [],
    permission: [],
    tokenExpired: 0
  };
  var n;
  try {
    n = JSON.parse((= t[1], decodeURIComponent(gs(s).split("").map(function (e) {
      return "%" + ("00" + e.charCodeAt(0).toString(16)).slice(-2);
    }).join(""))));
  } catch (e) {
    throw new Error("获取当前用户信息出错,详细错误信息为:" + e.message);
  }
  var s;
  return n.tokenExpired = 1e3 * n.exp, delete n.exp, delete n.iat, n;
}
gs = "function" != typeof atob ? function (e) {
  if (= String(e).replace(/[\t\n\f\r ]+/g, ""), !ys.test(e)) throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
  var t;
  e += "==".slice(2 - (3 & e.length));
  for (var n, s, r = "", i = 0; i < e.length;) {
    t = ms.indexOf(e.charAt(i++)) << 18 | ms.indexOf(e.charAt(i++)) << 12 | (= ms.indexOf(e.charAt(i++))) << 6 | (= ms.indexOf(e.charAt(i++))), r += 64 === n ? String.fromCharCode(>> 16 & 255) : 64 === s ? String.fromCharCode(>> 16 & 255, t >> 8 & 255) : String.fromCharCode(>> 16 & 255, t >> 8 & 255, 255 & t);
  }
  return r;
} : atob;
var ws = s(function (e, t) {
    Object.defineProperty(t, "__esModule", {
      value: !0
    });
    var n = "chooseAndUploadFile:ok",
      s = "chooseAndUploadFile:fail";
    function r(e, t) {
      return e.tempFiles.forEach(function (e, n) {
        e.name || (e.name = e.path.substring(e.path.lastIndexOf("/") + 1)), t && (e.fileType = t), e.cloudPath = Date.now() + "_" + n + e.name.substring(e.name.lastIndexOf("."));
      }), e.tempFilePaths || (e.tempFilePaths = e.tempFiles.map(function (e) {
        return e.path;
      })), e;
    }
    function i(e, t, _ref46) {
      var s = _ref46.onChooseFile,
        r = _ref46.onUploadProgress;
      return t.then(function (e) {
        if (s) {
          var _t17 = s(e);
          if (void 0 !== _t17) return Promise.resolve(_t17).then(function (t) {
            return void 0 === t ? e : t;
          });
        }
        return e;
      }).then(function (t) {
        return !1 === t ? {
          errMsg: n,
          tempFilePaths: [],
          tempFiles: []
        } : function (e, t) {
          var s = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;
          var r = arguments.length > 3 ? arguments[3] : undefined;
          (= Object.assign({}, t)).errMsg = n;
          var i = t.tempFiles,
            o = i.length;
          var a = 0;
          return new Promise(function (n) {
            for (; a < s;) {
              c();
            }
            function c() {
              var s = a++;
              if (>= o) return void (!i.find(function (e) {
                return !e.url && !e.errMsg;
              }) && n(t));
              var u = i[s];
              e.uploadFile({
                filePath: u.path,
                cloudPath: u.cloudPath,
                fileType: u.fileType,
                onUploadProgress: function onUploadProgress(e) {
                  e.index = s, e.tempFile = u, e.tempFilePath = u.path, r && r(e);
                }
              }).then(function (e) {
                u.url = e.fileID, s < o && c();
              }).catch(function (e) {
                u.errMsg = e.errMsg || e.message, s < o && c();
              });
            }
          });
        }(e, t, 5, r);
      });
    }
    t.initChooseAndUploadFile = function (e) {
      return function () {
        var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
          type: "all"
        };
        return "image" === t.type ? i(e, function (e) {
          var t = e.count,
            n = e.sizeType,
            _e$sourceType = e.sourceType,
            i = _e$sourceType === void 0 ? ["album", "camera"] : _e$sourceType,
            o = e.extension;
          return new Promise(function (e, a) {
            uni.chooseImage({
              count: t,
              sizeType: n,
              sourceType: i,
              extension: o,
              success: function success(t) {
                e(r(t, "image"));
              },
              fail: function fail(e) {
                a({
                  errMsg: e.errMsg.replace("chooseImage:fail", s)
                });
              }
            });
          });
        }(t), t) : "video" === t.type ? i(e, function (e) {
          var t = e.camera,
            n = e.compressed,
            i = e.maxDuration,
            _e$sourceType2 = e.sourceType,
            o = _e$sourceType2 === void 0 ? ["album", "camera"] : _e$sourceType2,
            a = e.extension;
          return new Promise(function (e, c) {
            uni.chooseVideo({
              camera: t,
              compressed: n,
              maxDuration: i,
              sourceType: o,
              extension: a,
              success: function success(t) {
                var n = t.tempFilePath,
                  s = t.duration,
                  i = t.size,
                  o = t.height,
                  a = t.width;
                e(r({
                  errMsg: "chooseVideo:ok",
                  tempFilePaths: [n],
                  tempFiles: [{
                    name: t.tempFile && t.tempFile.name || "",
                    path: n,
                    size: i,
                    type: t.tempFile && t.tempFile.type || "",
                    width: a,
                    height: o,
                    duration: s,
                    fileType: "video",
                    cloudPath: ""
                  }]
                }, "video"));
              },
              fail: function fail(e) {
                c({
                  errMsg: e.errMsg.replace("chooseVideo:fail", s)
                });
              }
            });
          });
        }(t), t) : i(e, function (e) {
          var t = e.count,
            n = e.extension;
          return new Promise(function (e, i) {
            var o = uni.chooseFile;
            if ("undefined" != typeof wx && "function" == typeof wx.chooseMessageFile && (= wx.chooseMessageFile), "function" != typeof o) return i({
              errMsg: s + " 请指定 type 类型,该平台仅支持选择 image 或 video。"
            });
            o({
              type: "all",
              count: t,
              extension: n,
              success: function success(t) {
                e(r(t));
              },
              fail: function fail(e) {
                i({
                  errMsg: e.errMsg.replace("chooseFile:fail", s)
                });
              }
            });
          });
        }(t), t);
      };
    };
  }),
  vs = n(ws);
var Is = "manual";
function Ss(e) {
  return {
    props: {
      localdata: {
        type: Array,
        default: function _default() {
          return [];
        }
      },
      options: {
        type: [Object, Array],
        default: function _default() {
          return {};
        }
      },
      spaceInfo: {
        type: Object,
        default: function _default() {
          return {};
        }
      },
      collection: {
        type: [String, Array],
        default: ""
      },
      action: {
        type: String,
        default: ""
      },
      field: {
        type: String,
        default: ""
      },
      orderby: {
        type: String,
        default: ""
      },
      where: {
        type: [String, Object],
        default: ""
      },
      pageData: {
        type: String,
        default: "add"
      },
      pageCurrent: {
        type: Number,
        default: 1
      },
      pageSize: {
        type: Number,
        default: 20
      },
      getcount: {
        type: [Boolean, String],
        default: !1
      },
      gettree: {
        type: [Boolean, String],
        default: !1
      },
      gettreepath: {
        type: [Boolean, String],
        default: !1
      },
      startwith: {
        type: String,
        default: ""
      },
      limitlevel: {
        type: Number,
        default: 10
      },
      groupby: {
        type: String,
        default: ""
      },
      groupField: {
        type: String,
        default: ""
      },
      distinct: {
        type: [Boolean, String],
        default: !1
      },
      foreignKey: {
        type: String,
        default: ""
      },
      loadtime: {
        type: String,
        default: "auto"
      },
      manual: {
        type: Boolean,
        default: !1
      }
    },
    data: function data() {
      return {
        mixinDatacomLoading: !1,
        mixinDatacomHasMore: !1,
        mixinDatacomResData: [],
        mixinDatacomErrorMessage: "",
        mixinDatacomPage: {}
      };
    },
    created: function created() {
      var _this20 = this;
      this.mixinDatacomPage = {
        current: this.pageCurrent,
        size: this.pageSize,
        count: 0
      }, this.$watch(function () {
        var e = [];
        return ["pageCurrent", "pageSize", "localdata", "collection", "action", "field", "orderby", "where", "getont", "getcount", "gettree", "groupby", "groupField", "distinct"].forEach(function (t) {
          e.push(_this20[t]);
        }), e;
      }, function (e, t) {
        if (_this20.loadtime === Is) return;
        var n = !1;
        var s = [];
        for (var _r7 = 2; _r7 < e.length; _r7++) {
          e[_r7] !== t[_r7] && (s.push(e[_r7]), n = !0);
        }
        e[0] !== t[0] && (_this20.mixinDatacomPage.current = _this20.pageCurrent), _this20.mixinDatacomPage.size = _this20.pageSize, _this20.onMixinDatacomPropsChange(n, s);
      });
    },
    methods: {
      onMixinDatacomPropsChange: function onMixinDatacomPropsChange(e, t) {},
      mixinDatacomEasyGet: function mixinDatacomEasyGet() {
        var _this21 = this;
        var _ref47 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
          _ref47$getone = _ref47.getone,
          e = _ref47$getone === void 0 ? !1 : _ref47$getone,
          t = _ref47.success,
          n = _ref47.fail;
        this.mixinDatacomLoading || (this.mixinDatacomLoading = !0, this.mixinDatacomErrorMessage = "", this.mixinDatacomGet().then(function (n) {
          _this21.mixinDatacomLoading = !1;
          var _n$result = n.result,
            s = _n$result.data,
            r = _n$result.count;
          _this21.getcount && (_this21.mixinDatacomPage.count = r), _this21.mixinDatacomHasMore = s.length < _this21.pageSize;
          var i = e ? s.length ? s[0] : void 0 : s;
          _this21.mixinDatacomResData = i, t && t(i);
        }).catch(function (e) {
          _this21.mixinDatacomLoading = !1, _this21.mixinDatacomErrorMessage = e, n && n(e);
        }));
      },
      mixinDatacomGet: function mixinDatacomGet() {
        var _n12;
        var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
        var n = e.database(this.spaceInfo);
        var s = t.action || this.action;
        s && (= n.action(s));
        var r = t.collection || this.collection;
        n = Array.isArray(r) ? (_n12 = n).collection.apply(_n12, (0, _toConsumableArray2.default)(r)) : n.collection(r);
        var i = t.where || this.where;
        i && Object.keys(i).length && (= n.where(i));
        var o = t.field || this.field;
        o && (= n.field(o));
        var a = t.foreignKey || this.foreignKey;
        a && (= n.foreignKey(a));
        var c = t.groupby || this.groupby;
        c && (= n.groupBy(c));
        var u = t.groupField || this.groupField;
        u && (= n.groupField(u));
        !0 === (void 0 !== t.distinct ? t.distinct : this.distinct) && (= n.distinct());
        var h = t.orderby || this.orderby;
        h && (= n.orderBy(h));
        var l = void 0 !== t.pageCurrent ? t.pageCurrent : this.mixinDatacomPage.current,
          d = void 0 !== t.pageSize ? t.pageSize : this.mixinDatacomPage.size,
          p = void 0 !== t.getcount ? t.getcount : this.getcount,
          f = void 0 !== t.gettree ? t.gettree : this.gettree,
          g = void 0 !== t.gettreepath ? t.gettreepath : this.gettreepath,
          m = {
            getCount: p
          },
          y = {
            limitLevel: void 0 !== t.limitlevel ? t.limitlevel : this.limitlevel,
            startWith: void 0 !== t.startwith ? t.startwith : this.startwith
          };
        return f && (m.getTree = y), g && (m.getTreePath = y), n = n.skip(* (- 1)).limit(d).get(m), n;
      }
    }
  };
}
function bs(e) {
  return function (t) {
    var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
    n = function (e) {
      var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
      return e.customUI = t.customUI || e.customUI, e.parseSystemError = t.parseSystemError || e.parseSystemError, Object.assign(e.loadingOptions, t.loadingOptions), Object.assign(e.errorOptions, t.errorOptions), "object" == (0, _typeof2.default)(t.secretMethods) && (e.secretMethods = t.secretMethods), e;
    }({
      customUI: !1,
      loadingOptions: {
        title: "加载中...",
        mask: !0
      },
      errorOptions: {
        type: "modal",
        retry: !1
      }
    }, n);
    var _n13 = n,
      s = _n13.customUI,
      r = _n13.loadingOptions,
      i = _n13.errorOptions,
      o = _n13.parseSystemError,
      a = !s;
    return new Proxy({}, {
      get: function get(s, c) {
        return function () {
          var _ref48 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
            e = _ref48.fn,
            t = _ref48.interceptorName,
            n = _ref48.getCallbackArgs;
          return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee50() {
            var _len2,
              s,
              _key2,
              r,
              i,
              o,
              _args = arguments;
            return _regenerator.default.wrap(function _callee50$(_context50) {
              while (1) {
                switch (_context50.prev = _context50.next) {
                  case 0:
                    for (_len2 = _args.length, s = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                      s[_key2] = _args[_key2];
                    }
                    r = n ? n({
                      params: s
                    }) : {};
                    _context50.prev = 2;
                    _context50.next = 5;
                    return q(M(t, "invoke"), _objectSpread({}, r));
                  case 5:
                    _context50.next = 7;
                    return e.apply(void 0, s);
                  case 7:
                    i = _context50.sent;
                    _context50.next = 10;
                    return q(M(t, "success"), _objectSpread(_objectSpread({}, r), {}, {
                      result: i
                    }));
                  case 10:
                    return _context50.abrupt("return", i);
                  case 13:
                    _context50.prev = 13;
                    _context50.t0 = _context50["catch"](2);
                    o = _context50.t0;
                    _context50.next = 18;
                    return q(M(t, "fail"), _objectSpread(_objectSpread({}, r), {}, {
                      error: o
                    }));
                  case 18:
                    throw o;
                  case 19:
                    _context50.prev = 19;
                    _context50.next = 22;
                    return q(M(t, "complete"), o ? _objectSpread(_objectSpread({}, r), {}, {
                      error: o
                    }) : _objectSpread(_objectSpread({}, r), {}, {
                      result: i
                    }));
                  case 22:
                    return _context50.finish(19);
                  case 23:
                  case "end":
                    return _context50.stop();
                }
              }
            }, _callee50, null, [[2, 13, 19, 23]]);
          }));
        }({
          fn: function () {
            var _s14 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee52() {
              var l,
                _len3,
                u,
                _key3,
                d,
                p,
                _ref50,
                f,
                g,
                m,
                y,
                _e27,
                _yield,
                _t18,
                _n14,
                _args4 = arguments;
              return _regenerator.default.wrap(function _callee52$(_context52) {
                while (1) {
                  switch (_context52.prev = _context52.next) {
                    case 0:
                      a && uni.showLoading({
                        title: r.title,
                        mask: r.mask
                      });
                      for (_len3 = _args4.length, u = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
                        u[_key3] = _args4[_key3];
                      }
                      d = {
                        name: t,
                        type: h,
                        data: {
                          method: c,
                          params: u
                        }
                      };
                      "object" == (0, _typeof2.default)(n.secretMethods) && function (e, t) {
                        var n = t.data.method,
                          s = e.secretMethods || {},
                          r = s[n] || s["*"];
                        r && (t.secretType = r);
                      }(n, d);
                      p = !1;
                      _context52.prev = 5;
                      _context52.next = 8;
                      return e.callFunction(d);
                    case 8:
                      l = _context52.sent;
                      _context52.next = 14;
                      break;
                    case 11:
                      _context52.prev = 11;
                      _context52.t0 = _context52["catch"](5);
                      p = !0, l = {
                        result: new ne(_context52.t0)
                      };
                    case 14:
                      _ref50 = l.result || {}, f = _ref50.errSubject, g = _ref50.errCode, m = _ref50.errMsg, y = _ref50.newToken;
                      if (!(&& uni.hideLoading(), y && y.token && y.tokenExpired && (ie(y), Q(W, _objectSpread({}, y))), g)) {
                        _context52.next = 39;
                        break;
                      }
                      _e27 = m;
                      if (!(&& o)) {
                        _context52.next = 24;
                        break;
                      }
                      _context52.next = 20;
                      return o({
                        objectName: t,
                        methodName: c,
                        params: u,
                        errSubject: f,
                        errCode: g,
                        errMsg: m
                      });
                    case 20:
                      _context52.t1 = _context52.sent.errMsg;
                      if (_context52.t1) {
                        _context52.next = 23;
                        break;
                      }
                      _context52.t1 = m;
                    case 23:
                      _e27 = _context52.t1;
                    case 24:
                      if (!a) {
                        _context52.next = 37;
                        break;
                      }
                      if (!("toast" === i.type)) {
                        _context52.next = 29;
                        break;
                      }
                      uni.showToast({
                        title: _e27,
                        icon: "none"
                      });
                      _context52.next = 37;
                      break;
                    case 29:
                      if (!("modal" !== i.type)) {
                        _context52.next = 31;
                        break;
                      }
                      throw new Error("Invalid errorOptions.type: ".concat(i.type));
                    case 31:
                      _context52.next = 33;
                      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee51() {
                        var _ref52,
                          e,
                          t,
                          n,
                          s,
                          r,
                          _args2 = arguments;
                        return _regenerator.default.wrap(function _callee51$(_context51) {
                          while (1) {
                            switch (_context51.prev = _context51.next) {
                              case 0:
                                _ref52 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, e = _ref52.title, t = _ref52.content, n = _ref52.showCancel, s = _ref52.cancelText, r = _ref52.confirmText;
                                return _context51.abrupt("return", new Promise(function (i, o) {
                                  uni.showModal({
                                    title: e,
                                    content: t,
                                    showCancel: n,
                                    cancelText: s,
                                    confirmText: r,
                                    success: function success(e) {
                                      i(e);
                                    },
                                    fail: function fail() {
                                      i({
                                        confirm: !1,
                                        cancel: !0
                                      });
                                    }
                                  });
                                }));
                              case 2:
                              case "end":
                                return _context51.stop();
                            }
                          }
                        }, _callee51);
                      }))({
                        title: "提示",
                        content: _e27,
                        showCancel: i.retry,
                        cancelText: "取消",
                        confirmText: i.retry ? "重试" : "确定"
                      });
                    case 33:
                      _yield = _context52.sent;
                      _t18 = _yield.confirm;
                      if (!(i.retry && _t18)) {
                        _context52.next = 37;
                        break;
                      }
                      return _context52.abrupt("return", s.apply(void 0, u));
                    case 37:
                      _n14 = new ne({
                        subject: f,
                        code: g,
                        message: m,
                        requestId: l.requestId
                      });
                      throw _n14.detail = l.result, Q(B, {
                        type: H,
                        content: _n14
                      }), _n14;
                    case 39:
                      return _context52.abrupt("return", (Q(B, {
                        type: H,
                        content: l.result
                      }), l.result));
                    case 40:
                    case "end":
                      return _context52.stop();
                  }
                }
              }, _callee52, null, [[5, 11]]);
            }));
            function s() {
              return _s14.apply(this, arguments);
            }
            return s;
          }(),
          interceptorName: "callObject",
          getCallbackArgs: function getCallbackArgs() {
            var _ref53 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
              e = _ref53.params;
            return {
              objectName: t,
              methodName: c,
              params: e
            };
          }
        });
      }
    });
  };
}
function ks(e) {
  return U("_globalUniCloudSecureNetworkCache__{spaceId}".replace("{spaceId}", e.config.spaceId));
}
function Cs() {
  return _Cs.apply(this, arguments);
}
function _Cs() {
  _Cs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee55() {
    var _ref65,
      e,
      _ref65$callLoginByWei,
      t,
      n,
      s,
      r,
      _args7 = arguments;
    return _regenerator.default.wrap(function _callee55$(_context55) {
      while (1) {
        switch (_context55.prev = _context55.next) {
          case 0:
            _ref65 = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : {}, e = _ref65.openid, _ref65$callLoginByWei = _ref65.callLoginByWeixin, t = _ref65$callLoginByWei === void 0 ? !1 : _ref65$callLoginByWei;
            n = ks(this);
            if (!("mp-weixin" !== P)) {
              _context55.next = 4;
              break;
            }
            throw new Error("[SecureNetwork] API `initSecureNetworkByWeixin` is not supported on platform `".concat(P, "`"));
          case 4:
            if (!(&& t)) {
              _context55.next = 6;
              break;
            }
            throw new Error("[SecureNetwork] openid and callLoginByWeixin cannot be passed at the same time");
          case 6:
            if (!e) {
              _context55.next = 8;
              break;
            }
            return _context55.abrupt("return", (n.mpWeixinOpenid = e, {}));
          case 8:
            _context55.next = 10;
            return new Promise(function (e, t) {
              uni.login({
                success: function success(t) {
                  e(t.code);
                },
                fail: function fail(e) {
                  t(new Error(e.errMsg));
                }
              });
            });
          case 10:
            s = _context55.sent;
            r = this.importObject("uni-id-co", {
              customUI: !0
            });
            _context55.next = 14;
            return r.secureNetworkHandshakeByWeixin({
              code: s,
              callLoginByWeixin: t
            });
          case 14:
            n.mpWeixinCode = s;
            return _context55.abrupt("return", {
              code: s
            });
          case 16:
          case "end":
            return _context55.stop();
        }
      }
    }, _callee55, this);
  }));
  return _Cs.apply(this, arguments);
}
function Ts(_x37) {
  return _Ts.apply(this, arguments);
}
function _Ts() {
  _Ts = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee56(e) {
    var t;
    return _regenerator.default.wrap(function _callee56$(_context56) {
      while (1) {
        switch (_context56.prev = _context56.next) {
          case 0:
            t = ks(this);
            return _context56.abrupt("return", (t.initPromise || (t.initPromise = Cs.call(this, e)), t.initPromise));
          case 2:
          case "end":
            return _context56.stop();
        }
      }
    }, _callee56, this);
  }));
  return _Ts.apply(this, arguments);
}
function Ps(e) {
  return function () {
    var _ref54 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
      t = _ref54.openid,
      _ref54$callLoginByWei = _ref54.callLoginByWeixin,
      n = _ref54$callLoginByWei === void 0 ? !1 : _ref54$callLoginByWei;
    return Ts.call(e, {
      openid: t,
      callLoginByWeixin: n
    });
  };
}
function As(e) {
  var t = {
    getSystemInfo: uni.getSystemInfo,
    getPushClientId: uni.getPushClientId
  };
  return function (n) {
    return new Promise(function (s, r) {
      t[e](_objectSpread(_objectSpread({}, n), {}, {
        success: function success(e) {
          s(e);
        },
        fail: function fail(e) {
          r(e);
        }
      }));
    });
  };
}
var Es = /*#__PURE__*/function (_ref55) {
  (0, _inherits2.default)(Es, _ref55);
  var _super12 = _createSuper(Es);
  function Es() {
    var _this22;
    (0, _classCallCheck2.default)(this, Es);
    _this22 = _super12.call(this), _this22._uniPushMessageCallback = _this22._receivePushMessage.bind((0, _assertThisInitialized2.default)(_this22)), _this22._currentMessageId = -1, _this22._payloadQueue = [];
    return _this22;
  }
  (0, _createClass2.default)(Es, [{
    key: "init",
    value: function init() {
      var _this23 = this;
      return Promise.all([As("getSystemInfo")(), As("getPushClientId")()]).then(function () {
        var _ref56 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [],
          _ref57 = (0, _slicedToArray2.default)(_ref56, 2),
          _ref57$ = _ref57[0];
        _ref57$ = _ref57$ === void 0 ? {} : _ref57$;
        var e = _ref57$.appId,
          _ref57$2 = _ref57[1];
        _ref57$2 = _ref57$2 === void 0 ? {} : _ref57$2;
        var t = _ref57$2.cid;
        if (!e) throw new Error("Invalid appId, please check the manifest.json file");
        if (!t) throw new Error("Invalid push client id");
        _this23._appId = e, _this23._pushClientId = t, _this23._seqId = Date.now() + "-" + Math.floor(9e5 * Math.random() + 1e5), _this23.emit("open"), _this23._initMessageListener();
      }, function (e) {
        throw _this23.emit("error", e), _this23.close(), e;
      });
    }
  }, {
    key: "open",
    value: function () {
      var _open = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee53() {
        return _regenerator.default.wrap(function _callee53$(_context53) {
          while (1) {
            switch (_context53.prev = _context53.next) {
              case 0:
                return _context53.abrupt("return", this.init());
              case 1:
              case "end":
                return _context53.stop();
            }
          }
        }, _callee53, this);
      }));
      function open() {
        return _open.apply(this, arguments);
      }
      return open;
    }()
  }, {
    key: "_isUniCloudSSE",
    value: function _isUniCloudSSE(e) {
      if ("receive" !== e.type) return !1;
      var t = e && e.data && e.data.payload;
      return !(!|| "UNI_CLOUD_SSE" !== t.channel || t.seqId !== this._seqId);
    }
  }, {
    key: "_receivePushMessage",
    value: function _receivePushMessage(e) {
      if (!this._isUniCloudSSE(e)) return;
      var t = e && e.data && e.data.payload,
        n = t.action,
        s = t.messageId,
        r = t.message;
      this._payloadQueue.push({
        action: n,
        messageId: s,
        message: r
      }), this._consumMessage();
    }
  }, {
    key: "_consumMessage",
    value: function _consumMessage() {
      var _this24 = this;
      for (;;) {
        var _e28 = this._payloadQueue.find(function (e) {
          return e.messageId === _this24._currentMessageId + 1;
        });
        if (!_e28) break;
        this._currentMessageId++, this._parseMessagePayload(_e28);
      }
    }
  }, {
    key: "_parseMessagePayload",
    value: function _parseMessagePayload(e) {
      var t = e.action,
        n = e.messageId,
        s = e.message;
      "end" === t ? this._end({
        messageId: n,
        message: s
      }) : "message" === t && this._appendMessage({
        messageId: n,
        message: s
      });
    }
  }, {
    key: "_appendMessage",
    value: function _appendMessage() {
      var _ref58 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
        e = _ref58.messageId,
        t = _ref58.message;
      this.emit("message", t);
    }
  }, {
    key: "_end",
    value: function _end() {
      var _ref59 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
        e = _ref59.messageId,
        t = _ref59.message;
      this.emit("end", t), this.close();
    }
  }, {
    key: "_initMessageListener",
    value: function _initMessageListener() {
      uni.onPushMessage(this._uniPushMessageCallback);
    }
  }, {
    key: "_destroy",
    value: function _destroy() {
      uni.offPushMessage(this._uniPushMessageCallback);
    }
  }, {
    key: "toJSON",
    value: function toJSON() {
      return {
        appId: this._appId,
        pushClientId: this._pushClientId,
        seqId: this._seqId
      };
    }
  }, {
    key: "close",
    value: function close() {
      this._destroy(), this.emit("close");
    }
  }]);
  return Es;
}( /*#__PURE__*/function () {
  function _class6() {
    (0, _classCallCheck2.default)(this, _class6);
    this._callback = {};
  }
  (0, _createClass2.default)(_class6, [{
    key: "addListener",
    value: function addListener(e, t) {
      this._callback[e] || (this._callback[e] = []), this._callback[e].push(t);
    }
  }, {
    key: "on",
    value: function on(e, t) {
      return this.addListener(e, t);
    }
  }, {
    key: "removeListener",
    value: function removeListener(e, t) {
      if (!t) throw new Error('The "listener" argument must be of type function. Received undefined');
      var n = this._callback[e];
      if (!n) return;
      var s = function (e, t) {
        for (var _n15 = e.length - 1; _n15 >= 0; _n15--) {
          if (e[_n15] === t) return _n15;
        }
        return -1;
      }(n, t);
      n.splice(s, 1);
    }
  }, {
    key: "off",
    value: function off(e, t) {
      return this.removeListener(e, t);
    }
  }, {
    key: "removeAllListener",
    value: function removeAllListener(e) {
      delete this._callback[e];
    }
  }, {
    key: "emit",
    value: function emit(e) {
      var n = this._callback[e];
      for (var _len4 = arguments.length, t = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
        t[_key4 - 1] = arguments[_key4];
      }
      if (n) for (var _e29 = 0; _e29 < n.length; _e29++) {
        n[_e29].apply(n, t);
      }
    }
  }]);
  return _class6;
}());
function Os(_x38, _x39) {
  return _Os.apply(this, arguments);
}
function _Os() {
  _Os = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee57(e, t) {
    var n, _e33, s;
    return _regenerator.default.wrap(function _callee57$(_context57) {
      while (1) {
        switch (_context57.prev = _context57.next) {
          case 0:
            n = "http://".concat(e, ":").concat(t, "/system/ping");
            _context57.prev = 1;
            _context57.next = 4;
            return s = {
              url: n,
              timeout: 500
            }, new Promise(function (e, t) {
              se.request(_objectSpread(_objectSpread({}, s), {}, {
                success: function success(t) {
                  e(t);
                },
                fail: function fail(e) {
                  t(e);
                }
              }));
            });
          case 4:
            _e33 = _context57.sent;
            return _context57.abrupt("return", !(!_e33.data || 0 !== _e33.data.code));
          case 8:
            _context57.prev = 8;
            _context57.t0 = _context57["catch"](1);
            return _context57.abrupt("return", !1);
          case 11:
          case "end":
            return _context57.stop();
        }
      }
    }, _callee57, null, [[1, 8]]);
  }));
  return _Os.apply(this, arguments);
}
function xs(_x40) {
  return _xs.apply(this, arguments);
}
function _xs() {
  _xs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee59(e) {
    var _ce2, _e34, _t20, t, _t$debugInfo, n, s, _yield2, r, i, o;
    return _regenerator.default.wrap(function _callee59$(_context59) {
      while (1) {
        switch (_context59.prev = _context59.next) {
          case 0:
            if (b) {
              _context59.next = 2;
              break;
            }
            return _context59.abrupt("return", Promise.resolve());
          case 2:
            if ("app" === P) {
              _ce2 = ce(), _e34 = _ce2.osName, _t20 = _ce2.osVersion;
              "ios" === _e34 && function (e) {
                if (!|| "string" != typeof e) return 0;
                var t = e.match(/^(\d+)./);
                return t && t[1] ? parseInt(t[1]) : 0;
              }(_t20) >= 14 && console.warn("iOS 14及以上版本连接uniCloud本地调试服务需要允许客户端查找并连接到本地网络上的设备(仅开发模式生效,发行模式会连接uniCloud云端服务)");
            }
            t = e.__dev__;
            if (t.debugInfo) {
              _context59.next = 6;
              break;
            }
            return _context59.abrupt("return");
          case 6:
            _t$debugInfo = t.debugInfo;
            n = _t$debugInfo.address;
            s = _t$debugInfo.servePort;
            _context59.next = 11;
            return function () {
              var _ref66 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee58(e, t) {
                var n, _s15, _r8;
                return _regenerator.default.wrap(function _callee58$(_context58) {
                  while (1) {
                    switch (_context58.prev = _context58.next) {
                      case 0:
                        _s15 = 0;
                      case 1:
                        if (!(_s15 < e.length)) {
                          _context58.next = 11;
                          break;
                        }
                        _r8 = e[_s15];
                        _context58.next = 5;
                        return Os(_r8, t);
                      case 5:
                        if (!_context58.sent) {
                          _context58.next = 8;
                          break;
                        }
                        n = _r8;
                        return _context58.abrupt("break", 11);
                      case 8:
                        _s15++;
                        _context58.next = 1;
                        break;
                      case 11:
                        return _context58.abrupt("return", {
                          address: n,
                          port: t
                        });
                      case 12:
                      case "end":
                        return _context58.stop();
                    }
                  }
                }, _callee58);
              }));
              return function (_x41, _x42) {
                return _ref66.apply(this, arguments);
              };
            }()(n, s);
          case 11:
            _yield2 = _context59.sent;
            r = _yield2.address;
            if (!r) {
              _context59.next = 15;
              break;
            }
            return _context59.abrupt("return", (t.localAddress = r, void (t.localPort = s)));
          case 15:
            i = console["app" === P ? "error" : "warn"];
            o = "";
            if (!("remote" === t.debugInfo.initialLaunchType ? (t.debugInfo.forceRemote = !0, o = "当前客户端和HBuilderX不在同一局域网下(或其他网络原因无法连接HBuilderX),uniCloud本地调试服务不对当前客户端生效。\n- 如果不使用uniCloud本地调试服务,请直接忽略此信息。\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。") : o = "无法连接uniCloud本地调试服务,请检查当前客户端是否与主机在同一局域网下。\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。", o += "\n- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs\n- 检查是否错误的使用拦截器修改uni.request方法的参数", "web" === P && (+= "\n- 部分浏览器开启节流模式之后访问本地地址受限,请检查是否启用了节流模式"), 0 === P.indexOf("mp-") && (+= "\n- 小程序中如何使用uniCloud,请参考:https://uniapp.dcloud.net.cn/uniCloud/publish.html#useinmp"), !t.debugInfo.forceRemote)) {
              _context59.next = 19;
              break;
            }
            throw new Error(o);
          case 19:
            i(o);
          case 20:
          case "end":
            return _context59.stop();
        }
      }
    }, _callee59);
  }));
  return _xs.apply(this, arguments);
}
function Rs(e) {
  e._initPromiseHub || (e._initPromiseHub = new I({
    createPromise: function createPromise() {
      var t = Promise.resolve();
      var n;
      n = 1, t = new Promise(function (e) {
        setTimeout(function () {
          e();
        }, n);
      });
      var s = e.auth();
      return t.then(function () {
        return s.getLoginState();
      }).then(function (e) {
        return e ? Promise.resolve() : s.signInAnonymously();
      });
    }
  }));
}
var Us = {
  tcb: It,
  tencent: It,
  aliyun: ge,
  private: bt
};
var Ls = new ( /*#__PURE__*/function () {
  function _class7() {
    (0, _classCallCheck2.default)(this, _class7);
  }
  (0, _createClass2.default)(_class7, [{
    key: "init",
    value: function init(e) {
      var t = {};
      var n = Us[e.provider];
      if (!n) throw new Error("未提供正确的provider参数");
      t = n.init(e), b && function (e) {
        if (!b) return;
        var t = {};
        e.__dev__ = t, t.debugLog = b && ("web" === P && navigator.userAgent.indexOf("HBuilderX") > 0 || "app" === P);
        var n = A;
        n && !n.code && (t.debugInfo = n);
        var s = new I({
          createPromise: function createPromise() {
            return xs(e);
          }
        });
        t.initLocalNetwork = function () {
          return s.exec();
        };
      }(t), Rs(t), xn(t), function (e) {
        var t = e.uploadFile;
        e.uploadFile = function (e) {
          return t.call(this, e);
        };
      }(t), function (e) {
        e.database = function (t) {
          if (&& Object.keys(t).length > 0) return e.init(t).database();
          if (this._database) return this._database;
          var n = Bn($n, {
            uniClient: e
          });
          return this._database = n, n;
        }, e.databaseForJQL = function (t) {
          if (&& Object.keys(t).length > 0) return e.init(t).databaseForJQL();
          if (this._databaseForJQL) return this._databaseForJQL;
          var n = Bn($n, {
            uniClient: e,
            isJQL: !0
          });
          return this._databaseForJQL = n, n;
        };
      }(t), function (e) {
        e.getCurrentUserInfo = _s, e.chooseAndUploadFile = vs.initChooseAndUploadFile(e), Object.assign(e, {
          get mixinDatacom() {
            return Ss(e);
          }
        }), e.SSEChannel = Es, e.initSecureNetworkByWeixin = Ps(e), e.importObject = bs(e);
      }(t);
      return ["callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "chooseAndUploadFile"].forEach(function (e) {
        if (!t[e]) return;
        var n = t[e];
        t[e] = function () {
          return n.apply(t, Array.from(arguments));
        }, t[e] = function (e, t) {
          return function (n) {
            var _this25 = this;
            var s = !1;
            if ("callFunction" === t) {
              var _e30 = n && n.type || u;
              s = _e30 !== u;
            }
            var r = "callFunction" === t && !s,
              i = this._initPromiseHub.exec();
            n = n || {};
            var _te2 = te(n),
              o = _te2.success,
              a = _te2.fail,
              c = _te2.complete,
              h = i.then(function () {
                return s ? Promise.resolve() : q(M(t, "invoke"), n);
              }).then(function () {
                return e.call(_this25, n);
              }).then(function (e) {
                return s ? Promise.resolve(e) : q(M(t, "success"), e).then(function () {
                  return q(M(t, "complete"), e);
                }).then(function () {
                  return r && Q(B, {
                    type: J,
                    content: e
                  }), Promise.resolve(e);
                });
              }, function (e) {
                return s ? Promise.reject(e) : q(M(t, "fail"), e).then(function () {
                  return q(M(t, "complete"), e);
                }).then(function () {
                  return Q(B, {
                    type: J,
                    content: e
                  }), Promise.reject(e);
                });
              });
            if (!(|| a || c)) return h;
            h.then(function (e) {
              o && o(e), c && c(e), r && Q(B, {
                type: J,
                content: e
              });
            }, function (e) {
              a && a(e), c && c(e), r && Q(B, {
                type: J,
                content: e
              });
            });
          };
        }(t[e], e).bind(t);
      }), t.init = this.init, t;
    }
  }]);
  return _class7;
}())();
(function () {
  var e = E;
  var t = {};
  if (&& 1 === e.length) t = e[0], Ls = Ls.init(t), Ls._isDefault = !0;else {
    var _t19 = ["auth", "callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "database", "getCurrentUSerInfo", "importObject"];
    var _n16;
    _n16 = e && e.length > 0 ? "应用有多个服务空间,请通过uniCloud.init方法指定要使用的服务空间" : O ? "应用未关联服务空间,请在uniCloud目录右键关联服务空间" : "uni-app cli项目内使用uniCloud需要使用HBuilderX的运行菜单运行项目,且需要在uniCloud目录关联服务空间", _t19.forEach(function (e) {
      Ls[e] = function () {
        return console.error(_n16), Promise.reject(new ne({
          code: "SYS_ERR",
          message: _n16
        }));
      };
    });
  }
  Object.assign(Ls, {
    get mixinDatacom() {
      return Ss(Ls);
    }
  }), fs(Ls), Ls.addInterceptor = D, Ls.removeInterceptor = F, Ls.interceptObject = K, b && "web" === P && (window.uniCloud = Ls);
})();
var Ns = Ls;
exports.default = Ns;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 43), __webpack_require__(/*! @dcloudio/uni-mp-weixin/dist/mp.js */ 110)["default"]))
 
/***/ }),
/* 110 */
/*!*********************************************************!*\
  !*** ./node_modules/@dcloudio/uni-mp-weixin/dist/mp.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
/* WEBPACK VAR INJECTION */(function(global) {
 
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.Behavior = Behavior;
exports.Component = Component;
exports.Page = Page;
exports.nextTick = exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 44));
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 111));
var _PROP_DEFAULT_VALUES;
function parseData(data, vueComponentOptions) {
  if (!data) {
    return;
  }
  vueComponentOptions.mpOptions.data = data;
}
function parseComponents(vueComponentOptions) {
  vueComponentOptions.components = global.__wxVueOptions.components;
}
var _toString = Object.prototype.toString;
var hasOwnProperty = Object.prototype.hasOwnProperty;
function isFn(fn) {
  return typeof fn === 'function';
}
function isPlainObject(obj) {
  return _toString.call(obj) === '[object Object]';
}
function hasOwn(obj, key) {
  return hasOwnProperty.call(obj, key);
}
function noop() {}
 
/**
 * Create a cached version of a pure function.
 */
function cached(fn) {
  var cache = Object.create(null);
  return function cachedFn(str) {
    var hit = cache[str];
    return hit || (cache[str] = fn(str));
  };
}
 
/**
 * Camelize a hyphen-delimited string.
 */
var camelizeRE = /-(\w)/g;
var camelize = cached(function (str) {
  return str.replace(camelizeRE, function (_, c) {
    return c ? c.toUpperCase() : '';
  });
});
var SOURCE_KEY = '__data__';
var COMPONENT_LIFECYCLE = {
  created: 'onServiceCreated',
  attached: 'onServiceAttached',
  ready: 'mounted',
  moved: 'moved',
  detached: 'destroyed'
};
var COMPONENT_LIFECYCLE_KEYS = Object.keys(COMPONENT_LIFECYCLE);
var PAGE_LIFETIMES = {
  show: 'onPageShow',
  hide: 'onPageHide',
  resize: 'onPageResize'
};
var PAGE_LIFETIMES_KEYS = Object.keys(PAGE_LIFETIMES);
var PAGE_LIFECYCLE = ['onLoad', 'onShow', 'onReady', 'onHide', 'onUnload', 'onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onPageScroll', 'onResize', 'onTabItemTap'];
function parsePageMethods(mpComponentOptions, vueComponentOptions) {
  var methods = Object.create(null);
  Object.keys(mpComponentOptions).forEach(function (key) {
    var value = mpComponentOptions[key];
    if (isFn(value) && PAGE_LIFECYCLE.indexOf(key) === -1) {
      methods[key] = value;
    }
  });
  vueComponentOptions.methods = methods;
}
function parsePageLifecycle(mpComponentOptions, vueComponentOptions) {
  Object.keys(mpComponentOptions).forEach(function (key) {
    if (PAGE_LIFECYCLE.indexOf(key) !== -1) {
      vueComponentOptions[key] = mpComponentOptions[key];
    }
  });
}
function parsePage(mpComponentOptions) {
  var vueComponentOptions = {
    mixins: [],
    mpOptions: {}
  };
  parseComponents(vueComponentOptions);
  parseData(mpComponentOptions.data, vueComponentOptions);
  parsePageMethods(mpComponentOptions, vueComponentOptions);
  parsePageLifecycle(mpComponentOptions, vueComponentOptions);
  return vueComponentOptions;
}
function parseProperties(properties, vueComponentOptions) {
  if (!properties) {
    return;
  }
  vueComponentOptions.mpOptions.properties = properties;
}
function parseOptions(options, vueComponentOptions) {
  if (!options) {
    return;
  }
  vueComponentOptions.mpOptions.options = options;
}
function parseMethods(methods, vueComponentOptions) {
  if (!methods) {
    return;
  }
  if (methods.$emit) {
    console.warn('Method "$emit" conflicts with an existing Vue instance method');
    delete methods.$emit;
  }
  vueComponentOptions.methods = methods;
}
function parseLifecycle(mpComponentOptions, vueComponentOptions) {
  COMPONENT_LIFECYCLE_KEYS.forEach(function (name) {
    if (hasOwn(mpComponentOptions, name)) {
      (vueComponentOptions[COMPONENT_LIFECYCLE[name]] || (vueComponentOptions[COMPONENT_LIFECYCLE[name]] = [])).push(mpComponentOptions[name]);
    }
  });
}
var mpBehaviors = {
  'wx://form-field': {},
  'wx://component-export': {}
};
function callDefinitionFilter(mpComponentOptions) {
  var behaviors = mpComponentOptions.behaviors,
    definitionFilter = mpComponentOptions.definitionFilter;
  var behaviorDefinitionFilters = [];
  if (Array.isArray(behaviors)) {
    behaviors.forEach(function (behavior) {
      behavior = typeof behavior === 'string' ? mpBehaviors[behavior] : behavior;
      if (behavior.definitionFilter) {
        behaviorDefinitionFilters.push(behavior.definitionFilter);
        behavior.definitionFilter.call(null, mpComponentOptions, []);
      }
    });
  }
  if (isFn(definitionFilter)) {
    return function (defFields) {
      definitionFilter(defFields, behaviorDefinitionFilters);
    };
  }
}
function parseDefinitionFilter(mpComponentOptions, vueComponentOptions) {
  callDefinitionFilter(mpComponentOptions);
}
function parseBehavior(behavior) {
  var data = behavior.data,
    methods = behavior.methods,
    behaviors = behavior.behaviors,
    properties = behavior.properties;
  var vueComponentOptions = {
    watch: {},
    mpOptions: {
      mpObservers: []
    }
  };
  parseData(data, vueComponentOptions);
  parseMethods(methods, vueComponentOptions);
  parseBehaviors(behaviors, vueComponentOptions);
  parseProperties(properties, vueComponentOptions);
  parseLifecycle(behavior, vueComponentOptions);
  parseDefinitionFilter(behavior);
  return vueComponentOptions;
}
var BEHAVIORS = {
  'wx://form-field': {
    beforeCreate: function beforeCreate() {
      var mpOptions = this.$options.mpOptions;
      if (!mpOptions.properties) {
        mpOptions.properties = Object.create(null);
      }
      var props = mpOptions.properties;
      // TODO form submit,reset
      if (!hasOwn(props, 'name')) {
        props.name = {
          type: String
        };
      }
      if (!hasOwn(props, 'value')) {
        props.value = {
          type: String // 默认类型调整为 String,否则默认值为 null,导致一些自定义 input 显示不正确
        };
      }
    }
  }
};
 
function parseBehaviors(behaviors, vueComponentOptions) {
  if (!behaviors) {
    return;
  }
  behaviors.forEach(function (behavior) {
    if (typeof behavior === 'string') {
      BEHAVIORS[behavior] && vueComponentOptions.mixins.push(BEHAVIORS[behavior]);
    } else {
      vueComponentOptions.mixins.push(parseBehavior(behavior));
    }
  });
}
function parseSinglePath(path) {
  return path.split('.');
}
function parseMultiPaths(paths) {
  return paths.split(',').map(function (path) {
    return parseSinglePath(path);
  });
}
function parseObservers(observers, vueComponentOptions) {
  if (!observers) {
    return;
  }
  var mpObservers = vueComponentOptions.mpOptions.mpObservers;
  Object.keys(observers).forEach(function (path) {
    mpObservers.push({
      paths: parseMultiPaths(path),
      observer: observers[path]
    });
  });
}
function relative(from, to) {
  if (to.indexOf('/') === 0) {
    from = '';
  }
  var fromArr = from.split('/');
  var toArr = to.split('/');
  fromArr.pop();
  while (toArr.length) {
    var part = toArr.shift();
    if (part !== '' && part !== '.') {
      if (part !== '..') {
        fromArr.push(part);
      } else {
        fromArr.pop();
      }
    }
  }
  return fromArr.join('/');
}
function parseRelations(relations, vueComponentOptions) {
  if (!relations) {
    return;
  }
  Object.keys(relations).forEach(function (name) {
    var relation = relations[name];
    relation.name = name;
    relation.target = relation.target ? String(relation.target) : relative(global.__wxRoute, name);
  });
  vueComponentOptions.mpOptions.relations = relations;
}
function parseExternalClasses(externalClasses, vueComponentOptions) {
  if (!externalClasses) {
    return;
  }
  if (!Array.isArray(externalClasses)) {
    externalClasses = [externalClasses];
  }
  vueComponentOptions.mpOptions.externalClasses = externalClasses;
  if (!vueComponentOptions.mpOptions.properties) {
    vueComponentOptions.mpOptions.properties = Object.create(null);
  }
  externalClasses.forEach(function (externalClass) {
    vueComponentOptions.mpOptions.properties[camelize(externalClass)] = {
      type: String,
      value: ''
    };
  });
}
function parseLifetimes(lifetimes, vueComponentOptions) {
  if (!lifetimes) {
    return;
  }
  parseLifecycle(lifetimes, vueComponentOptions);
}
function parsePageLifetimes(pageLifetimes, vueComponentOptions) {
  if (!pageLifetimes) {
    return;
  }
  PAGE_LIFETIMES_KEYS.forEach(function (key) {
    var lifetimeFn = pageLifetimes[key];
    isFn(lifetimeFn) && (vueComponentOptions[PAGE_LIFETIMES[key]] = lifetimeFn);
  });
}
function parseComponent(mpComponentOptions) {
  var data = mpComponentOptions.data,
    options = mpComponentOptions.options,
    methods = mpComponentOptions.methods,
    behaviors = mpComponentOptions.behaviors,
    lifetimes = mpComponentOptions.lifetimes,
    observers = mpComponentOptions.observers,
    relations = mpComponentOptions.relations,
    properties = mpComponentOptions.properties,
    pageLifetimes = mpComponentOptions.pageLifetimes,
    externalClasses = mpComponentOptions.externalClasses;
  var vueComponentOptions = {
    mixins: [],
    props: {},
    watch: {},
    mpOptions: {
      mpObservers: []
    }
  };
  parseComponents(vueComponentOptions);
  parseData(data, vueComponentOptions);
  parseOptions(options, vueComponentOptions);
  parseMethods(methods, vueComponentOptions);
  parseBehaviors(behaviors, vueComponentOptions);
  parseLifetimes(lifetimes, vueComponentOptions);
  parseObservers(observers, vueComponentOptions);
  parseRelations(relations, vueComponentOptions);
  parseProperties(properties, vueComponentOptions);
  parsePageLifetimes(pageLifetimes, vueComponentOptions);
  parseExternalClasses(externalClasses, vueComponentOptions);
  parseLifecycle(mpComponentOptions, vueComponentOptions);
  parseDefinitionFilter(mpComponentOptions);
  return vueComponentOptions;
}
function initRelationHandlers(type, handler, target, ctx) {
  if (!handler) {
    return;
  }
  var name = "_$".concat(type, "Handlers");
  (ctx[name] || (ctx[name] = [])).push(function () {
    handler.call(ctx, target);
  });
}
function initLinkedHandlers(relation, target, ctx) {
  var type = 'linked';
  var name = relation.name;
  var relationNodes = ctx._$relationNodes || (ctx._$relationNodes = Object.create(null));
  (relationNodes[name] || (relationNodes[name] = [])).push(target);
  initRelationHandlers(type, relation[type], target, ctx);
}
function initUnlinkedHandlers(relation, target, ctx) {
  var type = 'unlinked';
  initRelationHandlers(type, relation[type], target, ctx);
}
function findParentRelation(parentVm, target, type) {
  var relations = parentVm && parentVm.$options.mpOptions && parentVm.$options.mpOptions.relations;
  if (!relations) {
    return [];
  }
  var name = Object.keys(relations).find(function (name) {
    var relation = relations[name];
    return relation.target === target && relation.type === type;
  });
  if (!name) {
    return [];
  }
  return [relations[name], parentVm];
}
function initParentRelation(vm, childRelation, match) {
  var _match = match(vm, vm.$options.mpOptions.path),
    _match2 = (0, _slicedToArray2.default)(_match, 2),
    parentRelation = _match2[0],
    parentVm = _match2[1];
  if (!parentRelation) {
    return;
  }
  initLinkedHandlers(parentRelation, vm, parentVm);
  initLinkedHandlers(childRelation, parentVm, vm);
  initUnlinkedHandlers(parentRelation, vm, parentVm);
  initUnlinkedHandlers(childRelation, parentVm, vm);
}
function initRelation(relation, vm) {
  var type = relation.type;
  if (type === 'parent') {
    initParentRelation(vm, relation, function matchParent(vm, target) {
      return findParentRelation(vm.$parent, target, 'child');
    });
  } else if (type === 'ancestor') {
    initParentRelation(vm, relation, function matchAncestor(vm, target) {
      var $parent = vm.$parent;
      while ($parent) {
        var ret = findParentRelation($parent, target, 'descendant');
        if (ret.length) {
          return ret;
        }
        $parent = $parent.$parent;
      }
      return [];
    });
  }
}
function initRelations(vm) {
  var _ref = vm.$options.mpOptions || {},
    relations = _ref.relations;
  if (!relations) {
    return;
  }
  Object.keys(relations).forEach(function (name) {
    initRelation(relations[name], vm);
  });
}
function handleRelations(vm, type) {
  // TODO 需要移除 relationNodes
  var handlers = vm["_$".concat(type, "Handlers")];
  if (!handlers) {
    return;
  }
  handlers.forEach(function (handler) {
    return handler();
  });
}
var sharedPropertyDefinition = {
  enumerable: true,
  configurable: true,
  get: noop,
  set: noop
};
function proxy(target, sourceKey, key) {
  sharedPropertyDefinition.get = function proxyGetter() {
    return this[sourceKey][key];
  };
  sharedPropertyDefinition.set = function proxySetter(val) {
    this[sourceKey][key] = val;
  };
  Object.defineProperty(target, key, sharedPropertyDefinition);
}
function setDataByExprPath(exprPath, value, data) {
  var keys = exprPath.replace(/\[(\d+?)\]/g, '.$1').split('.');
  keys.reduce(function (obj, key, idx) {
    if (idx === keys.length - 1) {
      obj[key] = value;
    } else {
      if (typeof obj[key] === 'undefined') {
        obj[key] = {};
      }
      return obj[key];
    }
  }, data);
  return keys.length === 1;
}
function setData(data, callback) {
  var _this = this;
  if (!isPlainObject(data)) {
    return;
  }
  Object.keys(data).forEach(function (key) {
    if (setDataByExprPath(key, data[key], _this.data)) {
      !hasOwn(_this, key) && proxy(_this, SOURCE_KEY, key);
    }
  });
  this.$forceUpdate();
  isFn(callback) && this.$nextTick(callback);
}
 
/**
 * https://github.com/swan-team/swan-js/blob/61e2a63f7aa576b5daafbe77fdfa7c65b977060c/src/utils/index.js
 */
 
var _toString$1 = Object.prototype.toString;
/**
 * 深度assign的函数
 * @param {Object} targetObject 要被拷贝的目标对象
 * @param {Object} originObject 拷贝的源对象
 * @return {Object} merge后的对象
 */
var deepAssign = function deepAssign() {
  var targetObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  var originObject = arguments.length > 1 ? arguments[1] : undefined;
  var originType = _toString$1.call(originObject);
  if (originType === '[object Array]') {
    targetObject = originObject.slice(0);
    return targetObject;
  } else if (originType === '[object Object]') {
    for (var key in originObject) {
      targetObject[key] = deepAssign(targetObject[key], originObject[key]);
    }
    return targetObject;
  } else if (originType === '[object Date]') {
    return new Date(originObject.getTime());
  } else if (originType === '[object RegExp]') {
    var target = String(originObject);
    var lastIndex = target.lastIndexOf('/');
    return new RegExp(target.slice(1, lastIndex), target.slice(lastIndex + 1));
  }
  return originObject;
};
 
/**
 * 深度拷贝逻辑,不同于lodash等库,但是与微信一致
 * @param {*} [originObj] 原对象
 * @return {Object|Array} 拷贝结果
 */
var deepClone = function deepClone(originObj) {
  return deepAssign(_toString$1.call(originObj) === '[object Array]' ? [] : {}, originObj);
};
var PROP_DEFAULT_VALUES = (_PROP_DEFAULT_VALUES = {}, (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, String, ''), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Number, 0), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Boolean, false), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Object, null), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Array, []), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, null, null), _PROP_DEFAULT_VALUES);
function getDefaultVal(propType) {
  return PROP_DEFAULT_VALUES[propType];
}
function getPropertyVal(options) {
  if (isPlainObject(options)) {
    if (hasOwn(options, 'value')) {
      return options.value;
    }
    return getDefaultVal(options.type);
  }
  return getDefaultVal(options);
}
function getType(propOptions) {
  return isPlainObject(propOptions) ? propOptions.type : propOptions;
}
function validateProp(key, propsOptions, propsData, vm) {
  var value = propsData[key];
  if (value !== undefined) {
    var propOptions = propsOptions[key];
    var type = getType(propOptions);
    value = formatVal(value, type);
    var observer = propOptions && propOptions.observer;
    if (observer) {
      // 初始化时,异步触发 observer,否则 observer 中无法访问 methods 或其他
      setTimeout(function () {
        observe(observer, vm, value);
      }, 4);
    }
    return value;
  }
  return getPropertyVal(propsOptions[key]);
}
function formatVal(val, type) {
  if (type === Boolean) {
    return !!val;
  } else if (type === String) {
    return String(val);
  }
  return val;
}
function observe(observer, vm, newVal, oldVal) {
  try {
    if (typeof observer === 'function') {
      observer.call(vm, newVal, oldVal);
    } else if (typeof observer === 'string' && typeof vm[observer] === 'function') {
      vm[observer](newVal, oldVal);
    }
  } catch (err) {
    console.error("execute observer ".concat(observer, " callback fail! err: ").concat(err));
  }
}
function initProperties(vm, instanceData) {
  var properties = vm.$options.mpOptions.properties;
  if (!properties) {
    return;
  }
  var propsData = deepClone(vm.$options.propsData) || {};
  var _loop = function _loop(key) {
    var observer = isPlainObject(properties[key]) ? properties[key].observer : false;
    var value = validateProp(key, properties, propsData, vm);
    Object.defineProperty(instanceData, key, {
      enumerable: true,
      configurable: true,
      get: function get() {
        return value;
      },
      set: function set(newVal) {
        var oldVal = value;
        /* eslint-disable no-self-compare */
        if (newVal === value || newVal !== newVal && value !== value) {
          return;
        }
        // TODO 临时方案,clone array
        value = Array.isArray(newVal) ? newVal.slice(0) : newVal;
        if (observer) {
          observe(observer, vm, newVal, oldVal);
        }
        // 触发渲染
        vm.$forceUpdate();
      }
    });
  };
  for (var key in properties) {
    _loop(key);
  }
}
function updateProperties(vm) {
  var properties = vm.$options.mpOptions && vm.$options.mpOptions.properties;
  var propsData = vm.$options.propsData;
  if (propsData && properties) {
    Object.keys(properties).forEach(function (key) {
      if (hasOwn(propsData, key)) {
        vm[key] = formatVal(propsData[key], getType(properties[key]));
      }
    });
  }
}
function initState(vm) {
  var instanceData = JSON.parse(JSON.stringify(vm.$options.mpOptions.data || {}));
  vm[SOURCE_KEY] = instanceData;
  var propertyDefinition = {
    get: function get() {
      return vm[SOURCE_KEY];
    },
    set: function set(value) {
      vm[SOURCE_KEY] = value;
    }
  };
  Object.defineProperties(vm, {
    data: propertyDefinition,
    properties: propertyDefinition
  });
  vm.setData = setData;
  initProperties(vm, instanceData);
  Object.keys(instanceData).forEach(function (key) {
    proxy(vm, SOURCE_KEY, key);
  });
}
function initMethods(vm) {
  var oldEmit = vm.$emit;
  vm.triggerEvent = function (eventName, detail, options) {
    var target = {
      dataset: vm.$el.dataset
    };
    var event = {
      target: target,
      currentTarget: target,
      detail: detail,
      preventDefault: noop,
      stopPropagation: noop
    };
    oldEmit.call(vm, eventName, event);
  };
  // 主要是Vant 自己封装了 $emit,放到 methods 中会触发 Vue 的警告,索性,框架直接重写该方法
  vm.$emit = function () {
    vm.triggerEvent.apply(vm, arguments);
  };
  vm.getRelationNodes = function (relationKey) {
    // 需要过滤已被销毁的vm
    /* eslint-disable  no-mixed-operators */
    return (vm._$relationNodes && vm._$relationNodes[relationKey] || []).filter(function (vm) {
      return !vm._isDestroyed;
    });
  };
  vm._$updateProperties = updateProperties;
}
function handleObservers(vm) {
  var watch = vm.$options.watch;
  if (!watch) {
    return;
  }
  Object.keys(watch).forEach(function (name) {
    var observer = watch[name];
    if (observer.mounted) {
      var val = vm[name];
      var handler = observer.handler;
      if (typeof handler === 'string') {
        handler = vm[handler];
      }
      handler && handler.call(vm, val, val);
    }
  });
}
var polyfill = {
  beforeCreate: function beforeCreate() {
    // 取消 development 时的 Proxy,避免小程序组件模板中使用尚未定义的属性告警
    this._renderProxy = this;
    this._$self = this;
    this._$noop = noop;
  },
  created: function created() {
    // properties 中可能会访问 methods,故需要在 created 中初始化
    initState(this);
    initMethods(this);
    initRelations(this);
  },
  mounted: function mounted() {
    handleObservers(this);
  },
  destroyed: function destroyed() {
    handleRelations(this, 'unlinked');
  }
};
global.__wxRoute = '';
global.__wxComponents = Object.create(null);
global.__wxVueOptions = Object.create(null);
function Page(options) {
  var pageOptions = parsePage(options);
  pageOptions.mixins.unshift(polyfill);
  pageOptions.mpOptions.path = global.__wxRoute;
  global.__wxComponents[global.__wxRoute] = pageOptions;
}
function initRelationsHandler(vueComponentOptions) {
  // linked 需要在当前组件 attached 之后再执行
  if (!vueComponentOptions.onServiceAttached) {
    vueComponentOptions.onServiceAttached = [];
  }
  vueComponentOptions.onServiceAttached.push(function onServiceAttached() {
    handleRelations(this, 'linked');
  });
}
function Component(options) {
  var componentOptions = parseComponent(options);
  componentOptions.mixins.unshift(polyfill);
  componentOptions.mpOptions.path = global.__wxRoute;
  initRelationsHandler(componentOptions);
  global.__wxComponents[global.__wxRoute] = componentOptions;
}
function Behavior(options) {
  return options;
}
var nextTick = _vue.default.nextTick;
exports.nextTick = nextTick;
var index = uni.__$wx__;
var _default = index;
exports.default = _default;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 43)))
 
/***/ }),
/* 111 */
/*!**********************!*\
  !*** external "Vue" ***!
  \**********************/
/*! no static exports found */
/***/ (function(module, exports) {
 
module.exports = Vue;
 
/***/ }),
/* 112 */
/*!**********************************************************!*\
  !*** ./node_modules/@babel/runtime/regenerator/index.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);
// TODO(Babel 8): Remove this file.
 
var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ 113)();
module.exports = runtime;
 
// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
try {
  regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
  if ((typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) === "object") {
    globalThis.regeneratorRuntime = runtime;
  } else {
    Function("r", "regeneratorRuntime = r")(runtime);
  }
}
 
/***/ }),
/* 113 */
/*!*******************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***!
  \*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
function _regeneratorRuntime() {
  "use strict";
 
  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
    return exports;
  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  var exports = {},
    Op = Object.prototype,
    hasOwn = Op.hasOwnProperty,
    defineProperty = Object.defineProperty || function (obj, key, desc) {
      obj[key] = desc.value;
    },
    $Symbol = "function" == typeof Symbol ? Symbol : {},
    iteratorSymbol = $Symbol.iterator || "@@iterator",
    asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
    toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
  function define(obj, key, value) {
    return Object.defineProperty(obj, key, {
      value: value,
      enumerable: !0,
      configurable: !0,
      writable: !0
    }), obj[key];
  }
  try {
    define({}, "");
  } catch (err) {
    define = function define(obj, key, value) {
      return obj[key] = value;
    };
  }
  function wrap(innerFn, outerFn, self, tryLocsList) {
    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
      generator = Object.create(protoGenerator.prototype),
      context = new Context(tryLocsList || []);
    return defineProperty(generator, "_invoke", {
      value: makeInvokeMethod(innerFn, self, context)
    }), generator;
  }
  function tryCatch(fn, obj, arg) {
    try {
      return {
        type: "normal",
        arg: fn.call(obj, arg)
      };
    } catch (err) {
      return {
        type: "throw",
        arg: err
      };
    }
  }
  exports.wrap = wrap;
  var ContinueSentinel = {};
  function Generator() {}
  function GeneratorFunction() {}
  function GeneratorFunctionPrototype() {}
  var IteratorPrototype = {};
  define(IteratorPrototype, iteratorSymbol, function () {
    return this;
  });
  var getProto = Object.getPrototypeOf,
    NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
  function defineIteratorMethods(prototype) {
    ["next", "throw", "return"].forEach(function (method) {
      define(prototype, method, function (arg) {
        return this._invoke(method, arg);
      });
    });
  }
  function AsyncIterator(generator, PromiseImpl) {
    function invoke(method, arg, resolve, reject) {
      var record = tryCatch(generator[method], generator, arg);
      if ("throw" !== record.type) {
        var result = record.arg,
          value = result.value;
        return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
          invoke("next", value, resolve, reject);
        }, function (err) {
          invoke("throw", err, resolve, reject);
        }) : PromiseImpl.resolve(value).then(function (unwrapped) {
          result.value = unwrapped, resolve(result);
        }, function (error) {
          return invoke("throw", error, resolve, reject);
        });
      }
      reject(record.arg);
    }
    var previousPromise;
    defineProperty(this, "_invoke", {
      value: function value(method, arg) {
        function callInvokeWithMethodAndArg() {
          return new PromiseImpl(function (resolve, reject) {
            invoke(method, arg, resolve, reject);
          });
        }
        return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
      }
    });
  }
  function makeInvokeMethod(innerFn, self, context) {
    var state = "suspendedStart";
    return function (method, arg) {
      if ("executing" === state) throw new Error("Generator is already running");
      if ("completed" === state) {
        if ("throw" === method) throw arg;
        return doneResult();
      }
      for (context.method = method, context.arg = arg;;) {
        var delegate = context.delegate;
        if (delegate) {
          var delegateResult = maybeInvokeDelegate(delegate, context);
          if (delegateResult) {
            if (delegateResult === ContinueSentinel) continue;
            return delegateResult;
          }
        }
        if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
          if ("suspendedStart" === state) throw state = "completed", context.arg;
          context.dispatchException(context.arg);
        } else "return" === context.method && context.abrupt("return", context.arg);
        state = "executing";
        var record = tryCatch(innerFn, self, context);
        if ("normal" === record.type) {
          if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
          return {
            value: record.arg,
            done: context.done
          };
        }
        "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
      }
    };
  }
  function maybeInvokeDelegate(delegate, context) {
    var methodName = context.method,
      method = delegate.iterator[methodName];
    if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel;
    var record = tryCatch(method, delegate.iterator, context.arg);
    if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
    var info = record.arg;
    return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
  }
  function pushTryEntry(locs) {
    var entry = {
      tryLoc: locs[0]
    };
    1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
  }
  function resetTryEntry(entry) {
    var record = entry.completion || {};
    record.type = "normal", delete record.arg, entry.completion = record;
  }
  function Context(tryLocsList) {
    this.tryEntries = [{
      tryLoc: "root"
    }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
  }
  function values(iterable) {
    if (iterable) {
      var iteratorMethod = iterable[iteratorSymbol];
      if (iteratorMethod) return iteratorMethod.call(iterable);
      if ("function" == typeof iterable.next) return iterable;
      if (!isNaN(iterable.length)) {
        var i = -1,
          next = function next() {
            for (; ++< iterable.length;) {
              if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
            }
            return next.value = undefined, next.done = !0, next;
          };
        return next.next = next;
      }
    }
    return {
      next: doneResult
    };
  }
  function doneResult() {
    return {
      value: undefined,
      done: !0
    };
  }
  return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", {
    value: GeneratorFunctionPrototype,
    configurable: !0
  }), defineProperty(GeneratorFunctionPrototype, "constructor", {
    value: GeneratorFunction,
    configurable: !0
  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
    var ctor = "function" == typeof genFun && genFun.constructor;
    return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
  }, exports.mark = function (genFun) {
    return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
  }, exports.awrap = function (arg) {
    return {
      __await: arg
    };
  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
    return this;
  }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
    void 0 === PromiseImpl && (PromiseImpl = Promise);
    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
    return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
      return result.done ? result.value : iter.next();
    });
  }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
    return this;
  }), define(Gp, "toString", function () {
    return "[object Generator]";
  }), exports.keys = function (val) {
    var object = Object(val),
      keys = [];
    for (var key in object) {
      keys.push(key);
    }
    return keys.reverse(), function next() {
      for (; keys.length;) {
        var key = keys.pop();
        if (key in object) return next.value = key, next.done = !1, next;
      }
      return next.done = !0, next;
    };
  }, exports.values = values, Context.prototype = {
    constructor: Context,
    reset: function reset(skipTempReset) {
      if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {
        "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
      }
    },
    stop: function stop() {
      this.done = !0;
      var rootRecord = this.tryEntries[0].completion;
      if ("throw" === rootRecord.type) throw rootRecord.arg;
      return this.rval;
    },
    dispatchException: function dispatchException(exception) {
      if (this.done) throw exception;
      var context = this;
      function handle(loc, caught) {
        return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
      }
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i],
          record = entry.completion;
        if ("root" === entry.tryLoc) return handle("end");
        if (entry.tryLoc <= this.prev) {
          var hasCatch = hasOwn.call(entry, "catchLoc"),
            hasFinally = hasOwn.call(entry, "finallyLoc");
          if (hasCatch && hasFinally) {
            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
          } else if (hasCatch) {
            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
          } else {
            if (!hasFinally) throw new Error("try statement without catch or finally");
            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
          }
        }
      }
    },
    abrupt: function abrupt(type, arg) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
          var finallyEntry = entry;
          break;
        }
      }
      finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
      var record = finallyEntry ? finallyEntry.completion : {};
      return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
    },
    complete: function complete(record, afterLoc) {
      if ("throw" === record.type) throw record.arg;
      return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
    },
    finish: function finish(finallyLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
      }
    },
    "catch": function _catch(tryLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc === tryLoc) {
          var record = entry.completion;
          if ("throw" === record.type) {
            var thrown = record.arg;
            resetTryEntry(entry);
          }
          return thrown;
        }
      }
      throw new Error("illegal catch attempt");
    },
    delegateYield: function delegateYield(iterable, resultName, nextLoc) {
      return this.delegate = {
        iterator: values(iterable),
        resultName: resultName,
        nextLoc: nextLoc
      }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
    }
  }, exports;
}
module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 114 */
/*!**********************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _assertThisInitialized(self) {
  if (self === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }
  return self;
}
module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 115 */
/*!*****************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg);
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }
  if (info.done) {
    resolve(value);
  } else {
    Promise.resolve(value).then(_next, _throw);
  }
}
function _asyncToGenerator(fn) {
  return function () {
    var self = this,
      args = arguments;
    return new Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);
      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }
      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }
      _next(undefined);
    });
  };
}
module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 116 */
/*!*********************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/inherits.js ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 117);
function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }
  subClass.prototype = Object.create(superClass && superClass.prototype, {
    constructor: {
      value: subClass,
      writable: true,
      configurable: true
    }
  });
  Object.defineProperty(subClass, "prototype", {
    writable: false
  });
  if (superClass) setPrototypeOf(subClass, superClass);
}
module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 117 */
/*!***************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _setPrototypeOf(o, p) {
  module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  return _setPrototypeOf(o, p);
}
module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 118 */
/*!**************************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ 114);
function _possibleConstructorReturn(self, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  } else if (call !== void 0) {
    throw new TypeError("Derived constructors may only return object or undefined");
  }
  return assertThisInitialized(self);
}
module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 119 */
/*!***************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _getPrototypeOf(o) {
  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
    return o.__proto__ || Object.getPrototypeOf(o);
  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  return _getPrototypeOf(o);
}
module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 120 */
/*!****************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ 119);
var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 117);
var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ 121);
var construct = __webpack_require__(/*! ./construct.js */ 122);
function _wrapNativeSuper(Class) {
  var _cache = typeof Map === "function" ? new Map() : undefined;
  module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {
    if (Class === null || !isNativeFunction(Class)) return Class;
    if (typeof Class !== "function") {
      throw new TypeError("Super expression must either be null or a function");
    }
    if (typeof _cache !== "undefined") {
      if (_cache.has(Class)) return _cache.get(Class);
      _cache.set(Class, Wrapper);
    }
    function Wrapper() {
      return construct(Class, arguments, getPrototypeOf(this).constructor);
    }
    Wrapper.prototype = Object.create(Class.prototype, {
      constructor: {
        value: Wrapper,
        enumerable: false,
        writable: true,
        configurable: true
      }
    });
    return setPrototypeOf(Wrapper, Class);
  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  return _wrapNativeSuper(Class);
}
module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 121 */
/*!*****************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***!
  \*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _isNativeFunction(fn) {
  return Function.toString.call(fn).indexOf("[native code]") !== -1;
}
module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 122 */
/*!**********************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/construct.js ***!
  \**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 117);
var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ 123);
function _construct(Parent, args, Class) {
  if (isNativeReflectConstruct()) {
    module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
  } else {
    module.exports = _construct = function _construct(Parent, args, Class) {
      var a = [null];
      a.push.apply(a, args);
      var Constructor = Function.bind.apply(Parent, a);
      var instance = new Constructor();
      if (Class) setPrototypeOf(instance, Class.prototype);
      return instance;
    }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  }
  return _construct.apply(null, arguments);
}
module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 123 */
/*!*************************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***!
  \*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
  if (Reflect.construct.sham) return false;
  if (typeof Proxy === "function") return true;
  try {
    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}
module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
 
/***/ }),
/* 124 */
/*!***********************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages.json?{"type":"origin-pages-json"} ***!
  \***********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
 
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;
var _default = {
  "pages": [{
    "path": "pages/home/home",
    "style": {
      "navigationStyle": "custom",
      "app-plus": {
        "titleNView": false
      }
    }
  }, {
    "path": "pages/index",
    "style": {
      "navigationStyle": "custom",
      "app-plus": {
        "titleNView": false
      }
    }
  }, {
    "path": "pages/index/index",
    "style": {
      "navigationStyle": "custom",
      "app-plus": {
        "titleNView": false
      }
    }
  }, {
    "path": "pages/index/monitor",
    "style": {
      "navigationStyle": "custom"
    }
  }],
  "globalStyle": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "uni-app",
    "navigationBarBackgroundColor": "#F8F8F8",
    "backgroundColor": "#F8F8F8",
    "pageOrientation": "landscape"
  }
};
exports.default = _default;
 
/***/ }),
/* 125 */
/*!**********************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages.json?{"type":"stat"} ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
 
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;
var _default = {
  "appid": "__UNI__CA903B7"
};
exports.default = _default;
 
/***/ }),
/* 126 */
/*!****************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js ***!
  \****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {/*\r\n * uCharts (R)\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts (R) 官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 44));\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar config = {\n  version: 'v2.4.4-20221102',\n  yAxisWidth: 15,\n  xAxisHeight: 22,\n  xAxisTextPadding: 3,\n  padding: [10, 10, 10, 10],\n  pixelRatio: 1,\n  rotate: false,\n  fontSize: 13,\n  fontColor: '#666666',\n  dataPointShape: ['circle', 'circle', 'circle', 'circle'],\n  color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],\n  linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'],\n  pieChartLinePadding: 15,\n  pieChartTextPadding: 5,\n  titleFontSize: 20,\n  subtitleFontSize: 15,\n  toolTipPadding: 3,\n  toolTipBackground: '#000000',\n  toolTipOpacity: 0.7,\n  toolTipLineHeight: 20,\n  radarLabelTextMargin: 13\n};\nvar assign = function assign(target) {\n  for (var _len2 = arguments.length, varArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    varArgs[_key2 - 1] = arguments[_key2];\n  }\n  if (target == null) {\n    throw new TypeError('[uCharts] Cannot convert undefined or null to object');\n  }\n  if (!varArgs || varArgs.length <= 0) {\n    return target;\n  }\n  // 深度合并对象\n  function deepAssign(obj1, obj2) {\n    for (var key in obj2) {\n      obj1[key] = obj1[key] && obj1[key].toString() === \"[object Object]\" ? deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];\n    }\n    return obj1;\n  }\n  varArgs.forEach(function (val) {\n    target = deepAssign(target, val);\n  });\n  return target;\n};\nvar util = {\n  toFixed: function toFixed(num, limit) {\n    limit = limit || 2;\n    if (this.isFloat(num)) {\n      num = num.toFixed(limit);\n    }\n    return num;\n  },\n  isFloat: function isFloat(num) {\n    return num % 1 !== 0;\n  },\n  approximatelyEqual: function approximatelyEqual(num1, num2) {\n    return Math.abs(num1 - num2) < 1e-10;\n  },\n  isSameSign: function isSameSign(num1, num2) {\n    return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;\n  },\n  isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {\n    return this.isSameSign(p1.x, p2.x);\n  },\n  isCollision: function isCollision(obj1, obj2) {\n    obj1.end = {};\n    obj1.end.x = obj1.start.x + obj1.width;\n    obj1.end.y = obj1.start.y - obj1.height;\n    obj2.end = {};\n    obj2.end.x = obj2.start.x + obj2.width;\n    obj2.end.y = obj2.start.y - obj2.height;\n    var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;\n    return !flag;\n  }\n};\n\n//兼容H5点击事件\nfunction getH5Offset(e) {\n  e.mp = {\n    changedTouches: []\n  };\n  e.mp.changedTouches.push({\n    x: e.offsetX,\n    y: e.offsetY\n  });\n  return e;\n}\n\n// hex 转 rgba\nfunction hexToRgb(hexValue, opc) {\n  var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n  var hex = hexValue.replace(rgx, function (m, r, g, b) {\n    return r + r + g + g + b + b;\n  });\n  var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n  var r = parseInt(rgb[1], 16);\n  var g = parseInt(rgb[2], 16);\n  var b = parseInt(rgb[3], 16);\n  return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';\n}\nfunction findRange(num, type, limit) {\n  if (isNaN(num)) {\n    throw new Error('[uCharts] series数据需为Number格式');\n  }\n  limit = limit || 10;\n  type = type ? type : 'upper';\n  var multiple = 1;\n  while (limit < 1) {\n    limit *= 10;\n    multiple *= 10;\n  }\n  if (type === 'upper') {\n    num = Math.ceil(num * multiple);\n  } else {\n    num = Math.floor(num * multiple);\n  }\n  while (num % limit !== 0) {\n    if (type === 'upper') {\n      if (num == num + 1) {\n        //修复数据值过大num++无效的bug by 向日葵 @xrk_jy\n        break;\n      }\n      num++;\n    } else {\n      num--;\n    }\n  }\n  return num / multiple;\n}\nfunction calCandleMA(dayArr, nameArr, colorArr, kdata) {\n  var seriesTemp = [];\n  for (var k = 0; k < dayArr.length; k++) {\n    var seriesItem = {\n      data: [],\n      name: nameArr[k],\n      color: colorArr[k]\n    };\n    for (var i = 0, len = kdata.length; i < len; i++) {\n      if (i < dayArr[k]) {\n        seriesItem.data.push(null);\n        continue;\n      }\n      var sum = 0;\n      for (var j = 0; j < dayArr[k]; j++) {\n        sum += kdata[i - j][1];\n      }\n      seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));\n    }\n    seriesTemp.push(seriesItem);\n  }\n  return seriesTemp;\n}\nfunction calValidDistance(self, distance, chartData, config, opts) {\n  var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];\n  var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1);\n  if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n    if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n    dataChartWidth += (opts.extra.mount.widthRatio - 1) * chartData.eachSpacing;\n  }\n  var validDistance = distance;\n  if (distance >= 0) {\n    validDistance = 0;\n    self.uevent.trigger('scrollLeft');\n    self.scrollOption.position = 'left';\n    opts.xAxis.scrollPosition = 'left';\n  } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {\n    validDistance = dataChartAreaWidth - dataChartWidth;\n    self.uevent.trigger('scrollRight');\n    self.scrollOption.position = 'right';\n    opts.xAxis.scrollPosition = 'right';\n  } else {\n    self.scrollOption.position = distance;\n    opts.xAxis.scrollPosition = distance;\n  }\n  return validDistance;\n}\nfunction isInAngleRange(angle, startAngle, endAngle) {\n  function adjust(angle) {\n    while (angle < 0) {\n      angle += 2 * Math.PI;\n    }\n    while (angle > 2 * Math.PI) {\n      angle -= 2 * Math.PI;\n    }\n    return angle;\n  }\n  angle = adjust(angle);\n  startAngle = adjust(startAngle);\n  endAngle = adjust(endAngle);\n  if (startAngle > endAngle) {\n    endAngle += 2 * Math.PI;\n    if (angle < startAngle) {\n      angle += 2 * Math.PI;\n    }\n  }\n  return angle >= startAngle && angle <= endAngle;\n}\nfunction createCurveControlPoints(points, i) {\n  function isNotMiddlePoint(points, i) {\n    if (points[i - 1] && points[i + 1]) {\n      return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, points[i + 1].y);\n    } else {\n      return false;\n    }\n  }\n  function isNotMiddlePointX(points, i) {\n    if (points[i - 1] && points[i + 1]) {\n      return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, points[i + 1].x);\n    } else {\n      return false;\n    }\n  }\n  var a = 0.2;\n  var b = 0.2;\n  var pAx = null;\n  var pAy = null;\n  var pBx = null;\n  var pBy = null;\n  if (i < 1) {\n    pAx = points[0].x + (points[1].x - points[0].x) * a;\n    pAy = points[0].y + (points[1].y - points[0].y) * a;\n  } else {\n    pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;\n    pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;\n  }\n  if (i > points.length - 3) {\n    var last = points.length - 1;\n    pBx = points[last].x - (points[last].x - points[last - 1].x) * b;\n    pBy = points[last].y - (points[last].y - points[last - 1].y) * b;\n  } else {\n    pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;\n    pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;\n  }\n  if (isNotMiddlePoint(points, i + 1)) {\n    pBy = points[i + 1].y;\n  }\n  if (isNotMiddlePoint(points, i)) {\n    pAy = points[i].y;\n  }\n  if (isNotMiddlePointX(points, i + 1)) {\n    pBx = points[i + 1].x;\n  }\n  if (isNotMiddlePointX(points, i)) {\n    pAx = points[i].x;\n  }\n  if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {\n    pAy = points[i].y;\n  }\n  if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {\n    pBy = points[i + 1].y;\n  }\n  if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {\n    pAx = points[i].x;\n  }\n  if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {\n    pBx = points[i + 1].x;\n  }\n  return {\n    ctrA: {\n      x: pAx,\n      y: pAy\n    },\n    ctrB: {\n      x: pBx,\n      y: pBy\n    }\n  };\n}\nfunction convertCoordinateOrigin(x, y, center) {\n  return {\n    x: center.x + x,\n    y: center.y - y\n  };\n}\nfunction avoidCollision(obj, target) {\n  if (target) {\n    // is collision test\n    while (util.isCollision(obj, target)) {\n      if (obj.start.x > 0) {\n        obj.start.y--;\n      } else if (obj.start.x < 0) {\n        obj.start.y++;\n      } else {\n        if (obj.start.y > 0) {\n          obj.start.y++;\n        } else {\n          obj.start.y--;\n        }\n      }\n    }\n  }\n  return obj;\n}\nfunction fixPieSeries(series, opts, config) {\n  var pieSeriesArr = [];\n  if (series.length > 0 && series[0].data.constructor.toString().indexOf('Array') > -1) {\n    opts._pieSeries_ = series;\n    var oldseries = series[0].data;\n    for (var i = 0; i < oldseries.length; i++) {\n      oldseries[i].formatter = series[0].formatter;\n      oldseries[i].data = oldseries[i].value;\n      pieSeriesArr.push(oldseries[i]);\n    }\n    opts.series = pieSeriesArr;\n  } else {\n    pieSeriesArr = series;\n  }\n  return pieSeriesArr;\n}\nfunction fillSeries(series, opts, config) {\n  var index = 0;\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    if (!item.color) {\n      item.color = config.color[index];\n      index = (index + 1) % config.color.length;\n    }\n    if (!item.linearIndex) {\n      item.linearIndex = i;\n    }\n    if (!item.index) {\n      item.index = 0;\n    }\n    if (!item.type) {\n      item.type = opts.type;\n    }\n    if (typeof item.show == \"undefined\") {\n      item.show = true;\n    }\n    if (!item.type) {\n      item.type = opts.type;\n    }\n    if (!item.pointShape) {\n      item.pointShape = \"circle\";\n    }\n    if (!item.legendShape) {\n      switch (item.type) {\n        case 'line':\n          item.legendShape = \"line\";\n          break;\n        case 'column':\n        case 'bar':\n          item.legendShape = \"rect\";\n          break;\n        case 'area':\n        case 'mount':\n          item.legendShape = \"triangle\";\n          break;\n        default:\n          item.legendShape = \"circle\";\n      }\n    }\n  }\n  return series;\n}\nfunction fillCustomColor(linearType, customColor, series, config) {\n  var newcolor = customColor || [];\n  if (linearType == 'custom' && newcolor.length == 0) {\n    newcolor = config.linearColor;\n  }\n  if (linearType == 'custom' && newcolor.length < series.length) {\n    var chazhi = series.length - newcolor.length;\n    for (var i = 0; i < chazhi; i++) {\n      newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]);\n    }\n  }\n  return newcolor;\n}\nfunction getDataRange(minData, maxData) {\n  var limit = 0;\n  var range = maxData - minData;\n  if (range >= 10000) {\n    limit = 1000;\n  } else if (range >= 1000) {\n    limit = 100;\n  } else if (range >= 100) {\n    limit = 10;\n  } else if (range >= 10) {\n    limit = 5;\n  } else if (range >= 1) {\n    limit = 1;\n  } else if (range >= 0.1) {\n    limit = 0.1;\n  } else if (range >= 0.01) {\n    limit = 0.01;\n  } else if (range >= 0.001) {\n    limit = 0.001;\n  } else if (range >= 0.0001) {\n    limit = 0.0001;\n  } else if (range >= 0.00001) {\n    limit = 0.00001;\n  } else {\n    limit = 0.000001;\n  }\n  return {\n    minRange: findRange(minData, 'lower', limit),\n    maxRange: findRange(maxData, 'upper', limit)\n  };\n}\nfunction measureText(text, fontSize, context) {\n  var width = 0;\n  text = String(text);\n  if (context !== false && context !== undefined && context.setFontSize && context.measureText) {\n    context.setFontSize(fontSize);\n    return context.measureText(text).width;\n  } else {\n    var text = text.split('');\n    for (var i = 0; i < text.length; i++) {\n      var item = text[i];\n      if (/[a-zA-Z]/.test(item)) {\n        width += 7;\n      } else if (/[0-9]/.test(item)) {\n        width += 5.5;\n      } else if (/\\./.test(item)) {\n        width += 2.7;\n      } else if (/-/.test(item)) {\n        width += 3.25;\n      } else if (/:/.test(item)) {\n        width += 2.5;\n      } else if (/[\\u4e00-\\u9fa5]/.test(item)) {\n        width += 10;\n      } else if (/\\(|\\)/.test(item)) {\n        width += 3.73;\n      } else if (/\\s/.test(item)) {\n        width += 2.5;\n      } else if (/%/.test(item)) {\n        width += 8;\n      } else {\n        width += 10;\n      }\n    }\n    return width * fontSize / 10;\n  }\n}\nfunction dataCombine(series) {\n  return series.reduce(function (a, b) {\n    return (a.data ? a.data : a).concat(b.data);\n  }, []);\n}\nfunction dataCombineStack(series, len) {\n  var sum = new Array(len);\n  for (var j = 0; j < sum.length; j++) {\n    sum[j] = 0;\n  }\n  for (var i = 0; i < series.length; i++) {\n    for (var j = 0; j < sum.length; j++) {\n      sum[j] += series[i].data[j];\n    }\n  }\n  return series.reduce(function (a, b) {\n    return (a.data ? a.data : a).concat(b.data).concat(sum);\n  }, []);\n}\nfunction getTouches(touches, opts, e) {\n  var x, y;\n  if (touches.clientX) {\n    if (opts.rotate) {\n      y = opts.height - touches.clientX * opts.pix;\n      x = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;\n    } else {\n      x = touches.clientX * opts.pix;\n      y = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;\n    }\n  } else {\n    if (opts.rotate) {\n      y = opts.height - touches.x * opts.pix;\n      x = touches.y * opts.pix;\n    } else {\n      x = touches.x * opts.pix;\n      y = touches.y * opts.pix;\n    }\n  }\n  return {\n    x: x,\n    y: y\n  };\n}\nfunction getSeriesDataItem(series, index, group) {\n  var data = [];\n  var newSeries = [];\n  var indexIsArr = index.constructor.toString().indexOf('Array') > -1;\n  if (indexIsArr) {\n    var tempSeries = filterSeries(series);\n    for (var i = 0; i < group.length; i++) {\n      newSeries.push(tempSeries[group[i]]);\n    }\n  } else {\n    newSeries = series;\n  }\n  ;\n  for (var _i = 0; _i < newSeries.length; _i++) {\n    var item = newSeries[_i];\n    var tmpindex = -1;\n    if (indexIsArr) {\n      tmpindex = index[_i];\n    } else {\n      tmpindex = index;\n    }\n    if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) {\n      var seriesItem = {};\n      seriesItem.color = item.color;\n      seriesItem.type = item.type;\n      seriesItem.style = item.style;\n      seriesItem.pointShape = item.pointShape;\n      seriesItem.disableLegend = item.disableLegend;\n      seriesItem.name = item.name;\n      seriesItem.show = item.show;\n      seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex];\n      data.push(seriesItem);\n    }\n  }\n  return data;\n}\nfunction getMaxTextListLength(list, fontSize, context) {\n  var lengthList = list.map(function (item) {\n    return measureText(item, fontSize, context);\n  });\n  return Math.max.apply(null, lengthList);\n}\nfunction getRadarCoordinateSeries(length) {\n  var eachAngle = 2 * Math.PI / length;\n  var CoordinateSeries = [];\n  for (var i = 0; i < length; i++) {\n    CoordinateSeries.push(eachAngle * i);\n  }\n  return CoordinateSeries.map(function (item) {\n    return -1 * item + Math.PI / 2;\n  });\n}\nfunction getToolTipData(seriesData, opts, index, group, categories) {\n  var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n  var calPoints = opts.chartData.calPoints ? opts.chartData.calPoints : [];\n  var points = {};\n  if (group.length > 0) {\n    var filterPoints = [];\n    for (var i = 0; i < group.length; i++) {\n      filterPoints.push(calPoints[group[i]]);\n    }\n    points = filterPoints[0][index[0]];\n  } else {\n    for (var _i2 = 0; _i2 < calPoints.length; _i2++) {\n      if (calPoints[_i2][index]) {\n        points = calPoints[_i2][index];\n        break;\n      }\n    }\n  }\n  ;\n  var textList = seriesData.map(function (item) {\n    var titleText = null;\n    if (opts.categories && opts.categories.length > 0) {\n      titleText = categories[index];\n    }\n    ;\n    return {\n      text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data,\n      color: item.color\n    };\n  });\n  var offset = {\n    x: Math.round(points.x),\n    y: Math.round(points.y)\n  };\n  return {\n    textList: textList,\n    offset: offset\n  };\n}\nfunction getMixToolTipData(seriesData, opts, index, categories) {\n  var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n  var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2;\n  var textList = seriesData.map(function (item) {\n    return {\n      text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data,\n      color: item.color,\n      disableLegend: item.disableLegend ? true : false\n    };\n  });\n  textList = textList.filter(function (item) {\n    if (item.disableLegend !== true) {\n      return item;\n    }\n  });\n  var offset = {\n    x: Math.round(points),\n    y: 0\n  };\n  return {\n    textList: textList,\n    offset: offset\n  };\n}\nfunction getCandleToolTipData(series, seriesData, opts, index, categories, extra) {\n  var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\n  var calPoints = opts.chartData.calPoints;\n  var upColor = extra.color.upFill;\n  var downColor = extra.color.downFill;\n  //颜色顺序为开盘,收盘,最低,最高\n  var color = [upColor, upColor, downColor, upColor];\n  var textList = [];\n  seriesData.map(function (item) {\n    if (index == 0) {\n      if (item.data[1] - item.data[0] < 0) {\n        color[1] = downColor;\n      } else {\n        color[1] = upColor;\n      }\n    } else {\n      if (item.data[0] < series[index - 1][1]) {\n        color[0] = downColor;\n      }\n      if (item.data[1] < item.data[0]) {\n        color[1] = downColor;\n      }\n      if (item.data[2] > series[index - 1][1]) {\n        color[2] = upColor;\n      }\n      if (item.data[3] < series[index - 1][1]) {\n        color[3] = downColor;\n      }\n    }\n    var text1 = {\n      text: '开盘:' + item.data[0],\n      color: color[0]\n    };\n    var text2 = {\n      text: '收盘:' + item.data[1],\n      color: color[1]\n    };\n    var text3 = {\n      text: '最低:' + item.data[2],\n      color: color[2]\n    };\n    var text4 = {\n      text: '最高:' + item.data[3],\n      color: color[3]\n    };\n    textList.push(text1, text2, text3, text4);\n  });\n  var validCalPoints = [];\n  var offset = {\n    x: 0,\n    y: 0\n  };\n  for (var i = 0; i < calPoints.length; i++) {\n    var points = calPoints[i];\n    if (typeof points[index] !== 'undefined' && points[index] !== null) {\n      validCalPoints.push(points[index]);\n    }\n  }\n  offset.x = Math.round(validCalPoints[0][0].x);\n  return {\n    textList: textList,\n    offset: offset\n  };\n}\nfunction filterSeries(series) {\n  var tempSeries = [];\n  for (var i = 0; i < series.length; i++) {\n    if (series[i].show == true) {\n      tempSeries.push(series[i]);\n    }\n  }\n  return tempSeries;\n}\nfunction findCurrentIndex(currentPoints, calPoints, opts, config) {\n  var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n  var current = {\n    index: -1,\n    group: []\n  };\n  var spacing = opts.chartData.eachSpacing / 2;\n  var xAxisPoints = [];\n  if (calPoints && calPoints.length > 0) {\n    if (!opts.categories) {\n      spacing = 0;\n    } else {\n      for (var i = 1; i < opts.chartData.xAxisPoints.length; i++) {\n        xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing);\n      }\n      if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {\n        xAxisPoints = opts.chartData.xAxisPoints;\n      }\n    }\n    if (isInExactChartArea(currentPoints, opts, config)) {\n      if (!opts.categories) {\n        var timePoints = Array(calPoints.length);\n        for (var _i3 = 0; _i3 < calPoints.length; _i3++) {\n          timePoints[_i3] = Array(calPoints[_i3].length);\n          for (var j = 0; j < calPoints[_i3].length; j++) {\n            timePoints[_i3][j] = Math.abs(calPoints[_i3][j].x - currentPoints.x);\n          }\n        }\n        ;\n        var pointValue = Array(timePoints.length);\n        var pointIndex = Array(timePoints.length);\n        for (var _i4 = 0; _i4 < timePoints.length; _i4++) {\n          pointValue[_i4] = Math.min.apply(null, timePoints[_i4]);\n          pointIndex[_i4] = timePoints[_i4].indexOf(pointValue[_i4]);\n        }\n        var minValue = Math.min.apply(null, pointValue);\n        current.index = [];\n        for (var _i5 = 0; _i5 < pointValue.length; _i5++) {\n          if (pointValue[_i5] == minValue) {\n            current.group.push(_i5);\n            current.index.push(pointIndex[_i5]);\n          }\n        }\n        ;\n      } else {\n        xAxisPoints.forEach(function (item, index) {\n          if (currentPoints.x + offset + spacing > item) {\n            current.index = index;\n          }\n        });\n      }\n    }\n  }\n  return current;\n}\nfunction findBarChartCurrentIndex(currentPoints, calPoints, opts, config) {\n  var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n  var current = {\n    index: -1,\n    group: []\n  };\n  var spacing = opts.chartData.eachSpacing / 2;\n  var yAxisPoints = opts.chartData.yAxisPoints;\n  if (calPoints && calPoints.length > 0) {\n    if (isInExactChartArea(currentPoints, opts, config)) {\n      yAxisPoints.forEach(function (item, index) {\n        if (currentPoints.y + offset + spacing > item) {\n          current.index = index;\n        }\n      });\n    }\n  }\n  return current;\n}\nfunction findLegendIndex(currentPoints, legendData, opts) {\n  var currentIndex = -1;\n  var gap = 0;\n  if (isInExactLegendArea(currentPoints, legendData.area)) {\n    var points = legendData.points;\n    var index = -1;\n    for (var i = 0, len = points.length; i < len; i++) {\n      var item = points[i];\n      for (var j = 0; j < item.length; j++) {\n        index += 1;\n        var area = item[j]['area'];\n        if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) {\n          currentIndex = index;\n          break;\n        }\n      }\n    }\n    return currentIndex;\n  }\n  return currentIndex;\n}\nfunction isInExactLegendArea(currentPoints, area) {\n  return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y;\n}\nfunction isInExactChartArea(currentPoints, opts, config) {\n  return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];\n}\nfunction findRadarChartCurrentIndex(currentPoints, radarData, count) {\n  var eachAngleArea = 2 * Math.PI / count;\n  var currentIndex = -1;\n  if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {\n    var fixAngle = function fixAngle(angle) {\n      if (angle < 0) {\n        angle += 2 * Math.PI;\n      }\n      if (angle > 2 * Math.PI) {\n        angle -= 2 * Math.PI;\n      }\n      return angle;\n    };\n    var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);\n    angle = -1 * angle;\n    if (angle < 0) {\n      angle += 2 * Math.PI;\n    }\n    var angleList = radarData.angleList.map(function (item) {\n      item = fixAngle(-1 * item);\n      return item;\n    });\n    angleList.forEach(function (item, index) {\n      var rangeStart = fixAngle(item - eachAngleArea / 2);\n      var rangeEnd = fixAngle(item + eachAngleArea / 2);\n      if (rangeEnd < rangeStart) {\n        rangeEnd += 2 * Math.PI;\n      }\n      if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) {\n        currentIndex = index;\n      }\n    });\n  }\n  return currentIndex;\n}\nfunction findFunnelChartCurrentIndex(currentPoints, funnelData) {\n  var currentIndex = -1;\n  for (var i = 0, len = funnelData.series.length; i < len; i++) {\n    var item = funnelData.series[i];\n    if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {\n      currentIndex = i;\n      break;\n    }\n  }\n  return currentIndex;\n}\nfunction findWordChartCurrentIndex(currentPoints, wordData) {\n  var currentIndex = -1;\n  for (var i = 0, len = wordData.length; i < len; i++) {\n    var item = wordData[i];\n    if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {\n      currentIndex = i;\n      break;\n    }\n  }\n  return currentIndex;\n}\nfunction findMapChartCurrentIndex(currentPoints, opts) {\n  var currentIndex = -1;\n  var cData = opts.chartData.mapData;\n  var data = opts.series;\n  var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset);\n  var poi = [tmp.x, tmp.y];\n  for (var i = 0, len = data.length; i < len; i++) {\n    var item = data[i].geometry.coordinates;\n    if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) {\n      currentIndex = i;\n      break;\n    }\n  }\n  return currentIndex;\n}\nfunction findRoseChartCurrentIndex(currentPoints, pieData, opts) {\n  var currentIndex = -1;\n  var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius);\n  if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\n    var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\n    angle = -angle;\n    if (opts.extra.rose && opts.extra.rose.offsetAngle) {\n      angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180;\n    }\n    for (var i = 0, len = series.length; i < len; i++) {\n      if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) {\n        currentIndex = i;\n        break;\n      }\n    }\n  }\n  return currentIndex;\n}\nfunction findPieChartCurrentIndex(currentPoints, pieData, opts) {\n  var currentIndex = -1;\n  var series = getPieDataPoints(pieData.series);\n  if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\n    var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\n    angle = -angle;\n    if (opts.extra.pie && opts.extra.pie.offsetAngle) {\n      angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180;\n    }\n    if (opts.extra.ring && opts.extra.ring.offsetAngle) {\n      angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180;\n    }\n    for (var i = 0, len = series.length; i < len; i++) {\n      if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) {\n        currentIndex = i;\n        break;\n      }\n    }\n  }\n  return currentIndex;\n}\nfunction isInExactPieChartArea(currentPoints, center, radius) {\n  return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);\n}\nfunction splitPoints(points, eachSeries) {\n  var newPoints = [];\n  var items = [];\n  points.forEach(function (item, index) {\n    if (eachSeries.connectNulls) {\n      if (item !== null) {\n        items.push(item);\n      }\n    } else {\n      if (item !== null) {\n        items.push(item);\n      } else {\n        if (items.length) {\n          newPoints.push(items);\n        }\n        items = [];\n      }\n    }\n  });\n  if (items.length) {\n    newPoints.push(items);\n  }\n  return newPoints;\n}\nfunction calLegendData(series, opts, config, chartData, context) {\n  var legendData = {\n    area: {\n      start: {\n        x: 0,\n        y: 0\n      },\n      end: {\n        x: 0,\n        y: 0\n      },\n      width: 0,\n      height: 0,\n      wholeWidth: 0,\n      wholeHeight: 0\n    },\n    points: [],\n    widthArr: [],\n    heightArr: []\n  };\n  if (opts.legend.show === false) {\n    chartData.legendData = legendData;\n    return legendData;\n  }\n  var padding = opts.legend.padding * opts.pix;\n  var margin = opts.legend.margin * opts.pix;\n  var fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize;\n  var shapeWidth = 15 * opts.pix;\n  var shapeRight = 5 * opts.pix;\n  var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\n  if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n    var legendList = [];\n    var widthCount = 0;\n    var widthCountArr = [];\n    var currentRow = [];\n    for (var i = 0; i < series.length; i++) {\n      var item = series[i];\n      var legendText = item.legendText ? item.legendText : item.name;\n      var itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\n      if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) {\n        legendList.push(currentRow);\n        widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\n        widthCount = itemWidth;\n        currentRow = [item];\n      } else {\n        widthCount += itemWidth;\n        currentRow.push(item);\n      }\n    }\n    if (currentRow.length) {\n      legendList.push(currentRow);\n      widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\n      legendData.widthArr = widthCountArr;\n      var legendWidth = Math.max.apply(null, widthCountArr);\n      switch (opts.legend.float) {\n        case 'left':\n          legendData.area.start.x = opts.area[3];\n          legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding;\n          break;\n        case 'right':\n          legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding;\n          legendData.area.end.x = opts.width - opts.area[1];\n          break;\n        default:\n          legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;\n          legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;\n      }\n      legendData.area.width = legendWidth + 2 * padding;\n      legendData.area.wholeWidth = legendWidth + 2 * padding;\n      legendData.area.height = legendList.length * lineHeight + 2 * padding;\n      legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;\n      legendData.points = legendList;\n    }\n  } else {\n    var len = series.length;\n    var maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding;\n    var maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);\n    legendData.area.height = maxLength * lineHeight + padding * 2;\n    legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;\n    switch (opts.legend.float) {\n      case 'top':\n        legendData.area.start.y = opts.area[0] + margin;\n        legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\n        break;\n      case 'bottom':\n        legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height;\n        legendData.area.end.y = opts.height - opts.area[2] - margin;\n        break;\n      default:\n        legendData.area.start.y = (opts.height - legendData.area.height) / 2;\n        legendData.area.end.y = (opts.height + legendData.area.height) / 2;\n    }\n    var lineNum = len % maxLength === 0 ? len / maxLength : Math.floor(len / maxLength + 1);\n    var _currentRow = [];\n    for (var _i6 = 0; _i6 < lineNum; _i6++) {\n      var temp = series.slice(_i6 * maxLength, _i6 * maxLength + maxLength);\n      _currentRow.push(temp);\n    }\n    legendData.points = _currentRow;\n    if (_currentRow.length) {\n      for (var _i7 = 0; _i7 < _currentRow.length; _i7++) {\n        var _item = _currentRow[_i7];\n        var maxWidth = 0;\n        for (var j = 0; j < _item.length; j++) {\n          var _itemWidth = shapeWidth + shapeRight + measureText(_item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\n          if (_itemWidth > maxWidth) {\n            maxWidth = _itemWidth;\n          }\n        }\n        legendData.widthArr.push(maxWidth);\n        legendData.heightArr.push(_item.length * lineHeight + padding * 2);\n      }\n      var _legendWidth = 0;\n      for (var _i8 = 0; _i8 < legendData.widthArr.length; _i8++) {\n        _legendWidth += legendData.widthArr[_i8];\n      }\n      legendData.area.width = _legendWidth - opts.legend.itemGap * opts.pix + 2 * padding;\n      legendData.area.wholeWidth = legendData.area.width + padding;\n    }\n  }\n  switch (opts.legend.position) {\n    case 'top':\n      legendData.area.start.y = opts.area[0] + margin;\n      legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\n      break;\n    case 'bottom':\n      legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin;\n      legendData.area.end.y = opts.height - opts.area[2] - margin;\n      break;\n    case 'left':\n      legendData.area.start.x = opts.area[3];\n      legendData.area.end.x = opts.area[3] + legendData.area.width;\n      break;\n    case 'right':\n      legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width;\n      legendData.area.end.x = opts.width - opts.area[1];\n      break;\n  }\n  chartData.legendData = legendData;\n  return legendData;\n}\nfunction calCategoriesData(categories, opts, config, eachSpacing, context) {\n  var result = {\n    angle: 0,\n    xAxisHeight: config.xAxisHeight\n  };\n  var fontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;\n  var categoriesTextLenth = categories.map(function (item, index) {\n    var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;\n    return measureText(String(xitem), fontSize, context);\n  });\n  var maxTextLength = Math.max.apply(this, categoriesTextLenth);\n  if (opts.xAxis.rotateLabel == true) {\n    result.angle = opts.xAxis.rotateAngle * Math.PI / 180;\n    var tempHeight = 2 * config.xAxisTextPadding + Math.abs(maxTextLength * Math.sin(result.angle));\n    tempHeight = tempHeight < fontSize + 2 * config.xAxisTextPadding ? tempHeight + 2 * config.xAxisTextPadding : tempHeight;\n    if (opts.enableScroll == true && opts.xAxis.scrollShow == true) {\n      tempHeight += 12 * opts.pix;\n    }\n    result.xAxisHeight = tempHeight;\n  }\n  if (opts.xAxis.disabled) {\n    result.xAxisHeight = 0;\n  }\n  return result;\n}\nfunction getXAxisTextList(series, opts, config, stack) {\n  var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n  var data;\n  if (stack == 'stack') {\n    data = dataCombineStack(series, opts.categories.length);\n  } else {\n    data = dataCombine(series);\n  }\n  var sorted = [];\n  // remove null from data\n  data = data.filter(function (item) {\n    //return item !== null;\n    if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n      if (item.constructor.toString().indexOf('Array') > -1) {\n        return item !== null;\n      } else {\n        return item.value !== null;\n      }\n    } else {\n      return item !== null;\n    }\n  });\n  data.map(function (item) {\n    if ((0, _typeof2.default)(item) === 'object') {\n      if (item.constructor.toString().indexOf('Array') > -1) {\n        if (opts.type == 'candle') {\n          item.map(function (subitem) {\n            sorted.push(subitem);\n          });\n        } else {\n          sorted.push(item[0]);\n        }\n      } else {\n        sorted.push(item.value);\n      }\n    } else {\n      sorted.push(item);\n    }\n  });\n  var minData = 0;\n  var maxData = 0;\n  if (sorted.length > 0) {\n    minData = Math.min.apply(this, sorted);\n    maxData = Math.max.apply(this, sorted);\n  }\n  //为了兼容v1.9.0之前的项目\n  if (index > -1) {\n    if (typeof opts.xAxis.data[index].min === 'number') {\n      minData = Math.min(opts.xAxis.data[index].min, minData);\n    }\n    if (typeof opts.xAxis.data[index].max === 'number') {\n      maxData = Math.max(opts.xAxis.data[index].max, maxData);\n    }\n  } else {\n    if (typeof opts.xAxis.min === 'number') {\n      minData = Math.min(opts.xAxis.min, minData);\n    }\n    if (typeof opts.xAxis.max === 'number') {\n      maxData = Math.max(opts.xAxis.max, maxData);\n    }\n  }\n  if (minData === maxData) {\n    var rangeSpan = maxData || 10;\n    maxData += rangeSpan;\n  }\n  //var dataRange = getDataRange(minData, maxData);\n  var minRange = minData;\n  var maxRange = maxData;\n  var range = [];\n  var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;\n  for (var i = 0; i <= opts.xAxis.splitNumber; i++) {\n    range.push(minRange + eachRange * i);\n  }\n  return range;\n}\nfunction calXAxisData(series, opts, config, context) {\n  //堆叠图重算Y轴\n  var columnstyle = assign({}, {\n    type: \"\"\n  }, opts.extra.bar);\n  var result = {\n    angle: 0,\n    xAxisHeight: config.xAxisHeight\n  };\n  result.ranges = getXAxisTextList(series, opts, config, columnstyle.type);\n  result.rangesFormat = result.ranges.map(function (item) {\n    //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2);\n    item = util.toFixed(item, 2);\n    return item;\n  });\n  var xAxisScaleValues = result.ranges.map(function (item) {\n    // 如果刻度值是浮点数,则保留两位小数\n    item = util.toFixed(item, 2);\n    // 若有自定义格式则调用自定义的格式化函数\n    //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item;\n    return item;\n  });\n  result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));\n  // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\\结束点以及总长\n  var eachSpacing = result.eachSpacing;\n  var textLength = xAxisScaleValues.map(function (item) {\n    return measureText(item, opts.xAxis.fontSize * opts.pix || config.fontSize, context);\n  });\n  // get max length of categories text\n  var maxTextLength = Math.max.apply(this, textLength);\n  // 如果刻度值文本内容过长,则将其逆时针旋转45°\n  if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {\n    result.angle = 45 * Math.PI / 180;\n    result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);\n  }\n  if (opts.xAxis.disabled === true) {\n    result.xAxisHeight = 0;\n  }\n  return result;\n}\nfunction getRadarDataPoints(angleList, center, radius, series, opts) {\n  var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n  var radarOption = opts.extra.radar || {};\n  radarOption.max = radarOption.max || 0;\n  var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\n  var data = [];\n  var _loop2 = function _loop2(i) {\n    var each = series[i];\n    var listItem = {};\n    listItem.color = each.color;\n    listItem.legendShape = each.legendShape;\n    listItem.pointShape = each.pointShape;\n    listItem.data = [];\n    each.data.forEach(function (item, index) {\n      var tmp = {};\n      tmp.angle = angleList[index];\n      tmp.proportion = item / maxData;\n      tmp.value = item;\n      tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);\n      listItem.data.push(tmp);\n    });\n    data.push(listItem);\n  };\n  for (var i = 0; i < series.length; i++) {\n    _loop2(i);\n  }\n  return data;\n}\nfunction getPieDataPoints(series, radius) {\n  var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n  var count = 0;\n  var _start_ = 0;\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    item.data = item.data === null ? 0 : item.data;\n    count += item.data;\n  }\n  for (var _i9 = 0; _i9 < series.length; _i9++) {\n    var _item2 = series[_i9];\n    _item2.data = _item2.data === null ? 0 : _item2.data;\n    if (count === 0) {\n      _item2._proportion_ = 1 / series.length * process;\n    } else {\n      _item2._proportion_ = _item2.data / count * process;\n    }\n    _item2._radius_ = radius;\n  }\n  for (var _i10 = 0; _i10 < series.length; _i10++) {\n    var _item3 = series[_i10];\n    _item3._start_ = _start_;\n    _start_ += 2 * _item3._proportion_ * Math.PI;\n  }\n  return series;\n}\nfunction getFunnelDataPoints(series, radius, option, eachSpacing) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  for (var i = 0; i < series.length; i++) {\n    if (option.type == 'funnel') {\n      series[i].radius = series[i].data / series[0].data * radius * process;\n    } else {\n      series[i].radius = eachSpacing * (series.length - i) / (eachSpacing * series.length) * radius * process;\n    }\n    series[i]._proportion_ = series[i].data / series[0].data;\n  }\n  // if(option.type !== 'pyramid'){\n  //   series.reverse();\n  // }\n  return series;\n}\nfunction getRoseDataPoints(series, type, minRadius, radius) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var count = 0;\n  var _start_ = 0;\n  var dataArr = [];\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    item.data = item.data === null ? 0 : item.data;\n    count += item.data;\n    dataArr.push(item.data);\n  }\n  var minData = Math.min.apply(null, dataArr);\n  var maxData = Math.max.apply(null, dataArr);\n  var radiusLength = radius - minRadius;\n  for (var _i11 = 0; _i11 < series.length; _i11++) {\n    var _item4 = series[_i11];\n    _item4.data = _item4.data === null ? 0 : _item4.data;\n    if (count === 0) {\n      _item4._proportion_ = 1 / series.length * process;\n      _item4._rose_proportion_ = 1 / series.length * process;\n    } else {\n      _item4._proportion_ = _item4.data / count * process;\n      if (type == 'area') {\n        _item4._rose_proportion_ = 1 / series.length * process;\n      } else {\n        _item4._rose_proportion_ = _item4.data / count * process;\n      }\n    }\n    _item4._radius_ = minRadius + radiusLength * ((_item4.data - minData) / (maxData - minData)) || radius;\n  }\n  for (var _i12 = 0; _i12 < series.length; _i12++) {\n    var _item5 = series[_i12];\n    _item5._start_ = _start_;\n    _start_ += 2 * _item5._rose_proportion_ * Math.PI;\n  }\n  return series;\n}\nfunction getArcbarDataPoints(series, arcbarOption) {\n  var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n  if (process == 1) {\n    process = 0.999999;\n  }\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    item.data = item.data === null ? 0 : item.data;\n    var totalAngle = void 0;\n    if (arcbarOption.type == 'circle') {\n      totalAngle = 2;\n    } else {\n      if (arcbarOption.direction == 'ccw') {\n        if (arcbarOption.startAngle < arcbarOption.endAngle) {\n          totalAngle = 2 + arcbarOption.startAngle - arcbarOption.endAngle;\n        } else {\n          totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n        }\n      } else {\n        if (arcbarOption.endAngle < arcbarOption.startAngle) {\n          totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\n        } else {\n          totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n        }\n      }\n    }\n    item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\n    if (arcbarOption.direction == 'ccw') {\n      item._proportion_ = arcbarOption.startAngle - totalAngle * item.data * process;\n    }\n    if (item._proportion_ >= 2) {\n      item._proportion_ = item._proportion_ % 2;\n    }\n  }\n  return series;\n}\nfunction getGaugeArcbarDataPoints(series, arcbarOption) {\n  var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n  if (process == 1) {\n    process = 0.999999;\n  }\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    item.data = item.data === null ? 0 : item.data;\n    var totalAngle = void 0;\n    if (arcbarOption.type == 'circle') {\n      totalAngle = 2;\n    } else {\n      if (arcbarOption.endAngle < arcbarOption.startAngle) {\n        totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\n      } else {\n        totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n      }\n    }\n    item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\n    if (item._proportion_ >= 2) {\n      item._proportion_ = item._proportion_ % 2;\n    }\n  }\n  return series;\n}\nfunction getGaugeAxisPoints(categories, startAngle, endAngle) {\n  var totalAngle = startAngle - endAngle + 1;\n  var tempStartAngle = startAngle;\n  for (var i = 0; i < categories.length; i++) {\n    categories[i].value = categories[i].value === null ? 0 : categories[i].value;\n    categories[i]._startAngle_ = tempStartAngle;\n    categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;\n    if (categories[i]._endAngle_ >= 2) {\n      categories[i]._endAngle_ = categories[i]._endAngle_ % 2;\n    }\n    tempStartAngle = categories[i]._endAngle_;\n  }\n  return categories;\n}\nfunction getGaugeDataPoints(series, categories, gaugeOption) {\n  var process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    item.data = item.data === null ? 0 : item.data;\n    if (gaugeOption.pointer.color == 'auto') {\n      for (var _i13 = 0; _i13 < categories.length; _i13++) {\n        if (item.data <= categories[_i13].value) {\n          item.color = categories[_i13].color;\n          break;\n        }\n      }\n    } else {\n      item.color = gaugeOption.pointer.color;\n    }\n    var totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\n    item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;\n    item._oldAngle_ = gaugeOption.oldAngle;\n    if (gaugeOption.oldAngle < gaugeOption.endAngle) {\n      item._oldAngle_ += 2;\n    }\n    if (item.data >= gaugeOption.oldData) {\n      item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;\n    } else {\n      item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;\n    }\n    if (item._proportion_ >= 2) {\n      item._proportion_ = item._proportion_ % 2;\n    }\n  }\n  return series;\n}\nfunction getPieTextMaxLength(series, config, context, opts) {\n  series = getPieDataPoints(series);\n  var maxLength = 0;\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    var text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';\n    maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context));\n  }\n  return maxLength;\n}\nfunction fixColumeData(points, eachSpacing, columnLen, index, config, opts) {\n  return points.map(function (item) {\n    if (item === null) {\n      return null;\n    }\n    var seriesGap = 0;\n    var categoryGap = 0;\n    if (opts.type == 'mix') {\n      seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0;\n      categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0;\n    } else {\n      seriesGap = opts.extra.column.seriesGap * opts.pix || 0;\n      categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n    }\n    seriesGap = Math.min(seriesGap, eachSpacing / columnLen);\n    categoryGap = Math.min(categoryGap, eachSpacing / columnLen);\n    item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\n    if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix);\n    }\n    if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n    }\n    if (item.width <= 0) {\n      item.width = 1;\n    }\n    item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\n    return item;\n  });\n}\nfunction fixBarData(points, eachSpacing, columnLen, index, config, opts) {\n  return points.map(function (item) {\n    if (item === null) {\n      return null;\n    }\n    var seriesGap = 0;\n    var categoryGap = 0;\n    seriesGap = opts.extra.bar.seriesGap * opts.pix || 0;\n    categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\n    seriesGap = Math.min(seriesGap, eachSpacing / columnLen);\n    categoryGap = Math.min(categoryGap, eachSpacing / columnLen);\n    item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\n    if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\n    }\n    if (item.width <= 0) {\n      item.width = 1;\n    }\n    item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\n    return item;\n  });\n}\nfunction fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {\n  var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n  return points.map(function (item) {\n    if (item === null) {\n      return null;\n    }\n    item.width = eachSpacing - 2 * categoryGap;\n    if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n    }\n    if (index > 0) {\n      item.width -= border;\n    }\n    return item;\n  });\n}\nfunction fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {\n  var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n  return points.map(function (item, indexn) {\n    if (item === null) {\n      return null;\n    }\n    item.width = Math.ceil(eachSpacing - 2 * categoryGap);\n    if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n    }\n    if (item.width <= 0) {\n      item.width = 1;\n    }\n    return item;\n  });\n}\nfunction fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) {\n  var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\n  return points.map(function (item, indexn) {\n    if (item === null) {\n      return null;\n    }\n    item.width = Math.ceil(eachSpacing - 2 * categoryGap);\n    if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\n      item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\n    }\n    if (item.width <= 0) {\n      item.width = 1;\n    }\n    return item;\n  });\n}\nfunction getXAxisPoints(categories, opts, config) {\n  var spacingValid = opts.width - opts.area[1] - opts.area[3];\n  var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;\n  if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {\n    dataCount -= 1;\n  }\n  var widthRatio = 0;\n  if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n    if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n    widthRatio = opts.extra.mount.widthRatio - 1;\n    dataCount += widthRatio;\n  }\n  var eachSpacing = spacingValid / dataCount;\n  var xAxisPoints = [];\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  categories.forEach(function (item, index) {\n    xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing);\n  });\n  if (opts.xAxis.boundaryGap !== 'justify') {\n    if (opts.enableScroll === true) {\n      xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing);\n    } else {\n      xAxisPoints.push(endX);\n    }\n  }\n  return {\n    xAxisPoints: xAxisPoints,\n    startX: startX,\n    endX: endX,\n    eachSpacing: eachSpacing\n  };\n}\nfunction getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\n  var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n  var points = [];\n  var validHeight = opts.height - opts.area[0] - opts.area[2];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var cPoints = [];\n      item.forEach(function (items, indexs) {\n        var point = {};\n        point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\n        var value = items.value || items;\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        height *= process;\n        point.y = opts.height - Math.round(height) - opts.area[2];\n        cPoints.push(point);\n      });\n      points.push(cPoints);\n    }\n  });\n  return points;\n}\nfunction getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\n  var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n  var boundaryGap = 'center';\n  if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {\n    boundaryGap = opts.xAxis.boundaryGap;\n  }\n  var points = [];\n  var validHeight = opts.height - opts.area[0] - opts.area[2];\n  var validWidth = opts.width - opts.area[1] - opts.area[3];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var point = {};\n      point.color = item.color;\n      point.x = xAxisPoints[index];\n      var value = item;\n      if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n        if (item.constructor.toString().indexOf('Array') > -1) {\n          var xranges, xminRange, xmaxRange;\n          xranges = [].concat(opts.chartData.xAxisData.ranges);\n          xminRange = xranges.shift();\n          xmaxRange = xranges.pop();\n          value = item[1];\n          point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\n          if (opts.type == 'bubble') {\n            point.r = item[2];\n            point.t = item[3];\n          }\n        } else {\n          value = item.value;\n        }\n      }\n      if (boundaryGap == 'center') {\n        point.x += eachSpacing / 2;\n      }\n      var height = validHeight * (value - minRange) / (maxRange - minRange);\n      height *= process;\n      point.y = opts.height - height - opts.area[2];\n      points.push(point);\n    }\n  });\n  return points;\n}\nfunction getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption) {\n  var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n  var points = [];\n  var validHeight = opts.height - opts.area[0] - opts.area[2];\n  var validWidth = opts.width - opts.area[1] - opts.area[3];\n  var mountWidth = eachSpacing * mountOption.widthRatio;\n  series.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var point = {};\n      point.color = item.color;\n      point.x = xAxisPoints[index];\n      point.x += eachSpacing / 2;\n      var value = item.data;\n      var height = validHeight * (value - minRange) / (maxRange - minRange);\n      height *= process;\n      point.y = opts.height - height - opts.area[2];\n      point.value = value;\n      point.width = mountWidth;\n      points.push(point);\n    }\n  });\n  return points;\n}\nfunction getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) {\n  var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n  var points = [];\n  var validHeight = opts.height - opts.area[0] - opts.area[2];\n  var validWidth = opts.width - opts.area[1] - opts.area[3];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var point = {};\n      point.color = item.color;\n      point.y = yAxisPoints[index];\n      var value = item;\n      if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n        value = item.value;\n      }\n      var height = validWidth * (value - minRange) / (maxRange - minRange);\n      height *= process;\n      point.height = height;\n      point.value = value;\n      point.x = height + opts.area[3];\n      points.push(point);\n    }\n  });\n  return points;\n}\nfunction getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\n  var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\n  var points = [];\n  var validHeight = opts.height - opts.area[0] - opts.area[2];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var point = {};\n      point.color = item.color;\n      point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\n      if (seriesIndex > 0) {\n        var value = 0;\n        for (var i = 0; i <= seriesIndex; i++) {\n          value += stackSeries[i].data[index];\n        }\n        var value0 = value - item;\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\n      } else {\n        var value = item;\n        if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n          value = item.value;\n        }\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        var height0 = 0;\n      }\n      var heightc = height0;\n      height *= process;\n      heightc *= process;\n      point.y = opts.height - Math.round(height) - opts.area[2];\n      point.y0 = opts.height - Math.round(heightc) - opts.area[2];\n      points.push(point);\n    }\n  });\n  return points;\n}\nfunction getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\n  var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\n  var points = [];\n  var validHeight = opts.width - opts.area[1] - opts.area[3];\n  data.forEach(function (item, index) {\n    if (item === null) {\n      points.push(null);\n    } else {\n      var point = {};\n      point.color = item.color;\n      point.y = yAxisPoints[index];\n      if (seriesIndex > 0) {\n        var value = 0;\n        for (var i = 0; i <= seriesIndex; i++) {\n          value += stackSeries[i].data[index];\n        }\n        var value0 = value - item;\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\n      } else {\n        var value = item;\n        if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n          value = item.value;\n        }\n        var height = validHeight * (value - minRange) / (maxRange - minRange);\n        var height0 = 0;\n      }\n      var heightc = height0;\n      height *= process;\n      heightc *= process;\n      point.height = height - heightc;\n      point.x = opts.area[3] + height;\n      point.x0 = opts.area[3] + heightc;\n      points.push(point);\n    }\n  });\n  return points;\n}\nfunction getYAxisTextList(series, opts, config, stack, yData) {\n  var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1;\n  var data;\n  if (stack == 'stack') {\n    data = dataCombineStack(series, opts.categories.length);\n  } else {\n    data = dataCombine(series);\n  }\n  var sorted = [];\n  // remove null from data\n  data = data.filter(function (item) {\n    //return item !== null;\n    if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n      if (item.constructor.toString().indexOf('Array') > -1) {\n        return item !== null;\n      } else {\n        return item.value !== null;\n      }\n    } else {\n      return item !== null;\n    }\n  });\n  data.map(function (item) {\n    if ((0, _typeof2.default)(item) === 'object') {\n      if (item.constructor.toString().indexOf('Array') > -1) {\n        if (opts.type == 'candle') {\n          item.map(function (subitem) {\n            sorted.push(subitem);\n          });\n        } else {\n          sorted.push(item[1]);\n        }\n      } else {\n        sorted.push(item.value);\n      }\n    } else {\n      sorted.push(item);\n    }\n  });\n  var minData = yData.min || 0;\n  var maxData = yData.max || 0;\n  if (sorted.length > 0) {\n    minData = Math.min.apply(this, sorted);\n    maxData = Math.max.apply(this, sorted);\n  }\n  if (minData === maxData) {\n    if (maxData == 0) {\n      maxData = 10;\n    } else {\n      minData = 0;\n    }\n  }\n  var dataRange = getDataRange(minData, maxData);\n  var minRange = yData.min === undefined || yData.min === null ? dataRange.minRange : yData.min;\n  var maxRange = yData.max === undefined || yData.max === null ? dataRange.maxRange : yData.max;\n  var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;\n  var range = [];\n  for (var i = 0; i <= opts.yAxis.splitNumber; i++) {\n    range.push(minRange + eachRange * i);\n  }\n  return range.reverse();\n}\nfunction calYAxisData(series, opts, config, context) {\n  //堆叠图重算Y轴\n  var columnstyle = assign({}, {\n    type: \"\"\n  }, opts.extra.column);\n  //如果是多Y轴,重新计算\n  var YLength = opts.yAxis.data.length;\n  var newSeries = new Array(YLength);\n  if (YLength > 0) {\n    for (var i = 0; i < YLength; i++) {\n      newSeries[i] = [];\n      for (var j = 0; j < series.length; j++) {\n        if (series[j].index == i) {\n          newSeries[i].push(series[j]);\n        }\n      }\n    }\n    var rangesArr = new Array(YLength);\n    var rangesFormatArr = new Array(YLength);\n    var yAxisWidthArr = new Array(YLength);\n    var _loop3 = function _loop3(_i14) {\n      var yData = opts.yAxis.data[_i14];\n      //如果总开关不显示,强制每个Y轴为不显示\n      if (opts.yAxis.disabled == true) {\n        yData.disabled = true;\n      }\n      if (yData.type === 'categories') {\n        if (!yData.formatter) {\n          yData.formatter = function (val, index, opts) {\n            return val + (yData.unit || '');\n          };\n        }\n        yData.categories = yData.categories || opts.categories;\n        rangesArr[_i14] = yData.categories;\n      } else {\n        if (!yData.formatter) {\n          yData.formatter = function (val, index, opts) {\n            return util.toFixed(val, yData.tofix || 0) + (yData.unit || '');\n          };\n        }\n        rangesArr[_i14] = getYAxisTextList(newSeries[_i14], opts, config, columnstyle.type, yData, _i14);\n      }\n      var yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize;\n      yAxisWidthArr[_i14] = {\n        position: yData.position ? yData.position : 'left',\n        width: 0\n      };\n      rangesFormatArr[_i14] = rangesArr[_i14].map(function (items, index) {\n        items = yData.formatter(items, index, opts);\n        yAxisWidthArr[_i14].width = Math.max(yAxisWidthArr[_i14].width, measureText(items, yAxisFontSizes, context) + 5);\n        return items;\n      });\n      var calibration = yData.calibration ? 4 * opts.pix : 0;\n      yAxisWidthArr[_i14].width += calibration + 3 * opts.pix;\n      if (yData.disabled === true) {\n        yAxisWidthArr[_i14].width = 0;\n      }\n    };\n    for (var _i14 = 0; _i14 < YLength; _i14++) {\n      _loop3(_i14);\n    }\n  } else {\n    var rangesArr = new Array(1);\n    var rangesFormatArr = new Array(1);\n    var yAxisWidthArr = new Array(1);\n    if (opts.type === 'bar') {\n      rangesArr[0] = opts.categories;\n    } else {\n      rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {});\n    }\n    yAxisWidthArr[0] = {\n      position: 'left',\n      width: 0\n    };\n    if (opts.yAxis.disabled === true) {\n      yAxisWidthArr[0] = {\n        position: 'left',\n        width: 0\n      };\n      opts.yAxis.data[0] = {\n        disabled: true\n      };\n    } else {\n      opts.yAxis.data[0] = {\n        disabled: false,\n        position: 'left',\n        max: opts.yAxis.max,\n        min: opts.yAxis.min,\n        formatter: function formatter(val, index, opts) {\n          return val;\n        }\n      };\n      if (opts.type === 'bar') {\n        opts.yAxis.data[0].categories = opts.categories;\n        opts.yAxis.data[0].type = 'categories';\n      }\n    }\n    var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize;\n    rangesFormatArr[0] = rangesArr[0].map(function (item, index) {\n      item = opts.yAxis.data[0].formatter(item, index, opts);\n      yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5);\n      return item;\n    });\n    yAxisWidthArr[0].width += 3 * opts.pix;\n  }\n  return {\n    rangesFormat: rangesFormatArr,\n    ranges: rangesArr,\n    yAxisWidth: yAxisWidthArr\n  };\n}\nfunction calTooltipYAxisData(point, series, opts, config, eachSpacing) {\n  var ranges = [].concat(opts.chartData.yAxisData.ranges);\n  var spacingValid = opts.height - opts.area[0] - opts.area[2];\n  var minAxis = opts.area[0];\n  var items = [];\n  for (var i = 0; i < ranges.length; i++) {\n    var maxVal = Math.max.apply(this, ranges[i]);\n    var minVal = Math.min.apply(this, ranges[i]);\n    var item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;\n    item = opts.yAxis.data && opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item, i, opts) : item.toFixed(0);\n    items.push(String(item));\n  }\n  return items;\n}\nfunction calMarkLineData(points, opts) {\n  var minRange, maxRange;\n  var spacingValid = opts.height - opts.area[0] - opts.area[2];\n  for (var i = 0; i < points.length; i++) {\n    points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0;\n    var range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);\n    minRange = range.pop();\n    maxRange = range.shift();\n    var height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);\n    points[i].y = opts.height - Math.round(height) - opts.area[2];\n  }\n  return points;\n}\nfunction contextRotate(context, opts) {\n  if (opts.rotateLock !== true) {\n    context.translate(opts.height, 0);\n    context.rotate(90 * Math.PI / 180);\n  } else if (opts._rotate_ !== true) {\n    context.translate(opts.height, 0);\n    context.rotate(90 * Math.PI / 180);\n    opts._rotate_ = true;\n  }\n}\nfunction drawPointShape(points, color, shape, context, opts) {\n  context.beginPath();\n  if (opts.dataPointShapeType == 'hollow') {\n    context.setStrokeStyle(color);\n    context.setFillStyle(opts.background);\n    context.setLineWidth(2 * opts.pix);\n  } else {\n    context.setStrokeStyle(\"#ffffff\");\n    context.setFillStyle(color);\n    context.setLineWidth(1 * opts.pix);\n  }\n  if (shape === 'diamond') {\n    points.forEach(function (item, index) {\n      if (item !== null) {\n        context.moveTo(item.x, item.y - 4.5);\n        context.lineTo(item.x - 4.5, item.y);\n        context.lineTo(item.x, item.y + 4.5);\n        context.lineTo(item.x + 4.5, item.y);\n        context.lineTo(item.x, item.y - 4.5);\n      }\n    });\n  } else if (shape === 'circle') {\n    points.forEach(function (item, index) {\n      if (item !== null) {\n        context.moveTo(item.x + 2.5 * opts.pix, item.y);\n        context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n      }\n    });\n  } else if (shape === 'square') {\n    points.forEach(function (item, index) {\n      if (item !== null) {\n        context.moveTo(item.x - 3.5, item.y - 3.5);\n        context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n      }\n    });\n  } else if (shape === 'triangle') {\n    points.forEach(function (item, index) {\n      if (item !== null) {\n        context.moveTo(item.x, item.y - 4.5);\n        context.lineTo(item.x - 4.5, item.y + 4.5);\n        context.lineTo(item.x + 4.5, item.y + 4.5);\n        context.lineTo(item.x, item.y - 4.5);\n      }\n    });\n  } else if (shape === 'none') {\n    return;\n  }\n  context.closePath();\n  context.fill();\n  context.stroke();\n}\nfunction drawRingTitle(opts, config, context, center) {\n  var titlefontSize = opts.title.fontSize || config.titleFontSize;\n  var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;\n  var title = opts.title.name || '';\n  var subtitle = opts.subtitle.name || '';\n  var titleFontColor = opts.title.color || opts.fontColor;\n  var subtitleFontColor = opts.subtitle.color || opts.fontColor;\n  var titleHeight = title ? titlefontSize : 0;\n  var subtitleHeight = subtitle ? subtitlefontSize : 0;\n  var margin = 5;\n  if (subtitle) {\n    var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context);\n    var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0) * opts.pix;\n    var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix;\n    if (title) {\n      startY += (titleHeight * opts.pix + margin) / 2;\n    }\n    context.beginPath();\n    context.setFontSize(subtitlefontSize * opts.pix);\n    context.setFillStyle(subtitleFontColor);\n    context.fillText(subtitle, startX, startY);\n    context.closePath();\n    context.stroke();\n  }\n  if (title) {\n    var _textWidth = measureText(title, titlefontSize * opts.pix, context);\n    var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);\n    var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix;\n    if (subtitle) {\n      _startY -= (subtitleHeight * opts.pix + margin) / 2;\n    }\n    context.beginPath();\n    context.setFontSize(titlefontSize * opts.pix);\n    context.setFillStyle(titleFontColor);\n    context.fillText(title, _startX, _startY);\n    context.closePath();\n    context.stroke();\n  }\n}\nfunction drawPointText(points, series, config, context, opts) {\n  // 绘制数据文案\n  var data = series.data;\n  var textOffset = series.textOffset ? series.textOffset : 0;\n  points.forEach(function (item, index) {\n    if (item !== null) {\n      context.beginPath();\n      var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n      context.setFontSize(fontSize);\n      context.setFillStyle(series.textColor || opts.fontColor);\n      var value = data[index];\n      if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {\n        if (data[index].constructor.toString().indexOf('Array') > -1) {\n          value = data[index][1];\n        } else {\n          value = data[index].value;\n        }\n      }\n      var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;\n      context.setTextAlign('center');\n      context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);\n      context.closePath();\n      context.stroke();\n      context.setTextAlign('left');\n    }\n  });\n}\nfunction drawMountPointText(points, series, config, context, opts) {\n  // 绘制数据文案\n  var data = series.data;\n  var textOffset = series.textOffset ? series.textOffset : 0;\n  points.forEach(function (item, index) {\n    if (item !== null) {\n      context.beginPath();\n      var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize;\n      context.setFontSize(fontSize);\n      context.setFillStyle(series[index].textColor || opts.fontColor);\n      var value = item.value;\n      var formatVal = series[index].formatter ? series[index].formatter(value, index, series, opts) : value;\n      context.setTextAlign('center');\n      context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);\n      context.closePath();\n      context.stroke();\n      context.setTextAlign('left');\n    }\n  });\n}\nfunction drawBarPointText(points, series, config, context, opts) {\n  // 绘制数据文案\n  var data = series.data;\n  var textOffset = series.textOffset ? series.textOffset : 0;\n  points.forEach(function (item, index) {\n    if (item !== null) {\n      context.beginPath();\n      var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n      context.setFontSize(fontSize);\n      context.setFillStyle(series.textColor || opts.fontColor);\n      var value = data[index];\n      if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {\n        value = data[index].value;\n      }\n      var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;\n      context.setTextAlign('left');\n      context.fillText(String(formatVal), item.x + 4 * opts.pix, item.y + fontSize / 2 - 3);\n      context.closePath();\n      context.stroke();\n    }\n  });\n}\nfunction drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {\n  radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix;\n  radius = radius < 10 ? 10 : radius;\n  var totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\n  var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n  var totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;\n  var splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;\n  var nowAngle = gaugeOption.startAngle;\n  var nowNumber = gaugeOption.startNumber;\n  for (var i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {\n    var pos = {\n      x: radius * Math.cos(nowAngle * Math.PI),\n      y: radius * Math.sin(nowAngle * Math.PI)\n    };\n    var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber, i, opts) : nowNumber;\n    pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2;\n    pos.y += centerPosition.y;\n    var startX = pos.x;\n    var startY = pos.y;\n    context.beginPath();\n    context.setFontSize(config.fontSize);\n    context.setFillStyle(gaugeOption.labelColor || opts.fontColor);\n    context.fillText(labelText, startX, startY + config.fontSize / 2);\n    context.closePath();\n    context.stroke();\n    nowAngle += splitAngle;\n    if (nowAngle >= 2) {\n      nowAngle = nowAngle % 2;\n    }\n    nowNumber += splitNumber;\n  }\n}\nfunction drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {\n  var radarOption = opts.extra.radar || {};\n  angleList.forEach(function (angle, index) {\n    if (radarOption.labelPointShow === true && opts.categories[index] !== '') {\n      var posPoint = {\n        x: radius * Math.cos(angle),\n        y: radius * Math.sin(angle)\n      };\n      var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition);\n      context.setFillStyle(radarOption.labelPointColor);\n      context.beginPath();\n      context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false);\n      context.closePath();\n      context.fill();\n    }\n    var pos = {\n      x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle),\n      y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle)\n    };\n    var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);\n    var startX = posRelativeCanvas.x;\n    var startY = posRelativeCanvas.y;\n    if (util.approximatelyEqual(pos.x, 0)) {\n      startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2;\n    } else if (pos.x < 0) {\n      startX -= measureText(opts.categories[index] || '', config.fontSize, context);\n    }\n    context.beginPath();\n    context.setFontSize(config.fontSize);\n    context.setFillStyle(radarOption.labelColor || opts.fontColor);\n    context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);\n    context.closePath();\n    context.stroke();\n  });\n}\nfunction drawPieText(series, opts, config, context, radius, center) {\n  var lineRadius = config.pieChartLinePadding;\n  var textObjectCollection = [];\n  var lastTextObject = null;\n  var seriesConvert = series.map(function (item, index) {\n    var text = item.formatter ? item.formatter(item, index, series, opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';\n    text = item.labelText ? item.labelText : text;\n    var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);\n    if (item._rose_proportion_) {\n      arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2);\n    }\n    var color = item.color;\n    var radius = item._radius_;\n    return {\n      arc: arc,\n      text: text,\n      color: color,\n      radius: radius,\n      textColor: item.textColor,\n      textSize: item.textSize,\n      labelShow: item.labelShow\n    };\n  });\n  for (var i = 0; i < seriesConvert.length; i++) {\n    var item = seriesConvert[i];\n    // line end\n    var orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);\n    var orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);\n    // line start\n    var orginX2 = Math.cos(item.arc) * item.radius;\n    var orginY2 = Math.sin(item.arc) * item.radius;\n    // text start\n    var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;\n    var orginY3 = orginY1;\n    var textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context);\n    var startY = orginY3;\n    if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {\n      x: orginX3\n    })) {\n      if (orginX3 > 0) {\n        startY = Math.min(orginY3, lastTextObject.start.y);\n      } else if (orginX1 < 0) {\n        startY = Math.max(orginY3, lastTextObject.start.y);\n      } else {\n        if (orginY3 > 0) {\n          startY = Math.max(orginY3, lastTextObject.start.y);\n        } else {\n          startY = Math.min(orginY3, lastTextObject.start.y);\n        }\n      }\n    }\n    if (orginX3 < 0) {\n      orginX3 -= textWidth;\n    }\n    var textObject = {\n      lineStart: {\n        x: orginX2,\n        y: orginY2\n      },\n      lineEnd: {\n        x: orginX1,\n        y: orginY1\n      },\n      start: {\n        x: orginX3,\n        y: startY\n      },\n      width: textWidth,\n      height: config.fontSize,\n      text: item.text,\n      color: item.color,\n      textColor: item.textColor,\n      textSize: item.textSize\n    };\n    lastTextObject = avoidCollision(textObject, lastTextObject);\n    textObjectCollection.push(lastTextObject);\n  }\n  for (var _i15 = 0; _i15 < textObjectCollection.length; _i15++) {\n    if (seriesConvert[_i15].labelShow === false) {\n      continue;\n    }\n    var _item6 = textObjectCollection[_i15];\n    var lineStartPoistion = convertCoordinateOrigin(_item6.lineStart.x, _item6.lineStart.y, center);\n    var lineEndPoistion = convertCoordinateOrigin(_item6.lineEnd.x, _item6.lineEnd.y, center);\n    var textPosition = convertCoordinateOrigin(_item6.start.x, _item6.start.y, center);\n    context.setLineWidth(1 * opts.pix);\n    context.setFontSize(_item6.textSize * opts.pix || config.fontSize);\n    context.beginPath();\n    context.setStrokeStyle(_item6.color);\n    context.setFillStyle(_item6.color);\n    context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\n    var curveStartX = _item6.start.x < 0 ? textPosition.x + _item6.width : textPosition.x;\n    var textStartX = _item6.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;\n    context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);\n    context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\n    context.stroke();\n    context.closePath();\n    context.beginPath();\n    context.moveTo(textPosition.x + _item6.width, textPosition.y);\n    context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI);\n    context.closePath();\n    context.fill();\n    context.beginPath();\n    context.setFontSize(_item6.textSize * opts.pix || config.fontSize);\n    context.setFillStyle(_item6.textColor || opts.fontColor);\n    context.fillText(_item6.text, textStartX, textPosition.y + 3);\n    context.closePath();\n    context.stroke();\n    context.closePath();\n  }\n}\nfunction drawToolTipSplitLine(offsetX, opts, config, context) {\n  var toolTipOption = opts.extra.tooltip || {};\n  toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;\n  toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;\n  var startY = opts.area[0];\n  var endY = opts.height - opts.area[2];\n  if (toolTipOption.gridType == 'dash') {\n    context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\n  }\n  context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\n  context.setLineWidth(1 * opts.pix);\n  context.beginPath();\n  context.moveTo(offsetX, startY);\n  context.lineTo(offsetX, endY);\n  context.stroke();\n  context.setLineDash([]);\n  if (toolTipOption.xAxisLabel) {\n    var labelText = opts.categories[opts.tooltip.index];\n    context.setFontSize(config.fontSize);\n    var textWidth = measureText(labelText, config.fontSize, context);\n    var textX = offsetX - 0.5 * textWidth;\n    var textY = endY + 2 * opts.pix;\n    context.beginPath();\n    context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\n    context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\n    context.setLineWidth(1 * opts.pix);\n    context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding);\n    context.closePath();\n    context.stroke();\n    context.fill();\n    context.beginPath();\n    context.setFontSize(config.fontSize);\n    context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\n    context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize);\n    context.closePath();\n    context.stroke();\n  }\n}\nfunction drawMarkLine(opts, config, context) {\n  var markLineOption = assign({}, {\n    type: 'solid',\n    dashLength: 4,\n    data: []\n  }, opts.extra.markLine);\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  var points = calMarkLineData(markLineOption.data, opts);\n  for (var i = 0; i < points.length; i++) {\n    var item = assign({}, {\n      lineColor: '#DE4A42',\n      showLabel: false,\n      labelFontColor: '#666666',\n      labelBgColor: '#DFE8FF',\n      labelBgOpacity: 0.8,\n      labelAlign: 'left',\n      labelOffsetX: 0,\n      labelOffsetY: 0\n    }, points[i]);\n    if (markLineOption.type == 'dash') {\n      context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);\n    }\n    context.setStrokeStyle(item.lineColor);\n    context.setLineWidth(1 * opts.pix);\n    context.beginPath();\n    context.moveTo(startX, item.y);\n    context.lineTo(endX, item.y);\n    context.stroke();\n    context.setLineDash([]);\n    if (item.showLabel) {\n      var labelText = item.labelText ? item.labelText : item.value;\n      context.setFontSize(config.fontSize);\n      var textWidth = measureText(labelText, config.fontSize, context);\n      var bgWidth = textWidth + config.toolTipPadding * 2;\n      var bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1];\n      bgStartX += item.labelOffsetX;\n      var bgStartY = item.y - 0.5 * config.fontSize - config.toolTipPadding;\n      bgStartY += item.labelOffsetY;\n      var textX = bgStartX + config.toolTipPadding;\n      var textY = item.y;\n      context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));\n      context.setStrokeStyle(item.labelBgColor);\n      context.setLineWidth(1 * opts.pix);\n      context.beginPath();\n      context.rect(bgStartX, bgStartY, bgWidth, config.fontSize + 2 * config.toolTipPadding);\n      context.closePath();\n      context.stroke();\n      context.fill();\n      context.setFontSize(config.fontSize);\n      context.setTextAlign('left');\n      context.setFillStyle(item.labelFontColor);\n      context.fillText(String(labelText), textX, bgStartY + config.fontSize + config.toolTipPadding / 2);\n      context.stroke();\n      context.setTextAlign('left');\n    }\n  }\n}\nfunction drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {\n  var toolTipOption = assign({}, {\n    gridType: 'solid',\n    dashLength: 4\n  }, opts.extra.tooltip);\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  if (toolTipOption.gridType == 'dash') {\n    context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\n  }\n  context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\n  context.setLineWidth(1 * opts.pix);\n  context.beginPath();\n  context.moveTo(startX, opts.tooltip.offset.y);\n  context.lineTo(endX, opts.tooltip.offset.y);\n  context.stroke();\n  context.setLineDash([]);\n  if (toolTipOption.yAxisLabel) {\n    var labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);\n    var widthArr = opts.chartData.yAxisData.yAxisWidth;\n    var tStartLeft = opts.area[3];\n    var tStartRight = opts.width - opts.area[1];\n    for (var i = 0; i < labelText.length; i++) {\n      context.setFontSize(config.fontSize);\n      var textWidth = measureText(labelText[i], config.fontSize, context);\n      var bgStartX = void 0,\n        bgEndX = void 0,\n        bgWidth = void 0;\n      if (widthArr[i].position == 'left') {\n        bgStartX = tStartLeft - (textWidth + config.toolTipPadding * 2) - 2 * opts.pix;\n        bgEndX = Math.max(bgStartX, bgStartX + textWidth + config.toolTipPadding * 2);\n      } else {\n        bgStartX = tStartRight + 2 * opts.pix;\n        bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + config.toolTipPadding * 2);\n      }\n      bgWidth = bgEndX - bgStartX;\n      var textX = bgStartX + (bgWidth - textWidth) / 2;\n      var textY = opts.tooltip.offset.y;\n      context.beginPath();\n      context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\n      context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\n      context.setLineWidth(1 * opts.pix);\n      context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);\n      context.closePath();\n      context.stroke();\n      context.fill();\n      context.beginPath();\n      context.setFontSize(config.fontSize);\n      context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\n      context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);\n      context.closePath();\n      context.stroke();\n      if (widthArr[i].position == 'left') {\n        tStartLeft -= widthArr[i].width + opts.yAxis.padding * opts.pix;\n      } else {\n        tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix;\n      }\n    }\n  }\n}\nfunction drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\n  var toolTipOption = assign({}, {\n    activeBgColor: '#000000',\n    activeBgOpacity: 0.08,\n    activeWidth: eachSpacing\n  }, opts.extra.column);\n  toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth;\n  var startY = opts.area[0];\n  var endY = opts.height - opts.area[2];\n  context.beginPath();\n  context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\n  context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY);\n  context.closePath();\n  context.fill();\n  context.setFillStyle(\"#FFFFFF\");\n}\nfunction drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\n  var toolTipOption = assign({}, {\n    activeBgColor: '#000000',\n    activeBgOpacity: 0.08\n  }, opts.extra.bar);\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  context.beginPath();\n  context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\n  context.rect(startX, offsetX - eachSpacing / 2, endX - startX, eachSpacing);\n  context.closePath();\n  context.fill();\n  context.setFillStyle(\"#FFFFFF\");\n}\nfunction drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {\n  var toolTipOption = assign({}, {\n    showBox: true,\n    showArrow: true,\n    showCategory: false,\n    bgColor: '#000000',\n    bgOpacity: 0.7,\n    borderColor: '#000000',\n    borderWidth: 0,\n    borderRadius: 0,\n    borderOpacity: 0.7,\n    fontColor: '#FFFFFF',\n    splitLine: true\n  }, opts.extra.tooltip);\n  if (toolTipOption.showCategory == true && opts.categories) {\n    textList.unshift({\n      text: opts.categories[opts.tooltip.index],\n      color: null\n    });\n  }\n  var legendWidth = 4 * opts.pix;\n  var legendMarginRight = 5 * opts.pix;\n  var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0;\n  var isOverRightBorder = false;\n  if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {\n    if (toolTipOption.splitLine == true) {\n      drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);\n    }\n  }\n  offset = assign({\n    x: 0,\n    y: 0\n  }, offset);\n  offset.y -= 8 * opts.pix;\n  var textWidth = textList.map(function (item) {\n    return measureText(item.text, config.fontSize, context);\n  });\n  var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth);\n  var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight;\n  if (toolTipOption.showBox == false) {\n    return;\n  }\n  // if beyond the right border\n  if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) {\n    isOverRightBorder = true;\n  }\n  if (toolTipHeight + offset.y > opts.height) {\n    offset.y = opts.height - toolTipHeight;\n  }\n  // draw background rect\n  context.beginPath();\n  context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity));\n  context.setLineWidth(toolTipOption.borderWidth * opts.pix);\n  context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity));\n  var radius = toolTipOption.borderRadius;\n  if (isOverRightBorder) {\n    // 增加左侧仍然超出的判断\n    if (toolTipWidth + arrowWidth > opts.width) {\n      offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width);\n    }\n    if (toolTipOption.showArrow) {\n      context.moveTo(offset.x, offset.y + 10 * opts.pix);\n      context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\n    }\n    context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);\n    context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);\n    context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\n    context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);\n    if (toolTipOption.showArrow) {\n      context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\n      context.lineTo(offset.x, offset.y + 10 * opts.pix);\n    }\n  } else {\n    if (toolTipOption.showArrow) {\n      context.moveTo(offset.x, offset.y + 10 * opts.pix);\n      context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\n    }\n    context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\n    context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);\n    context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);\n    context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);\n    if (toolTipOption.showArrow) {\n      context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\n      context.lineTo(offset.x, offset.y + 10 * opts.pix);\n    }\n  }\n  context.closePath();\n  context.fill();\n  if (toolTipOption.borderWidth > 0) {\n    context.stroke();\n  }\n  // draw legend\n  textList.forEach(function (item, index) {\n    if (item.color !== null) {\n      context.beginPath();\n      context.setFillStyle(item.color);\n      var startX = offset.x + arrowWidth + 2 * config.toolTipPadding;\n      var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding + 1;\n      if (isOverRightBorder) {\n        startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding;\n      }\n      context.fillRect(startX, startY, legendWidth, config.fontSize);\n      // 圆形图例请注释上行,并把下行取消注释\n      // context.arc(startX + legendWidth / 2 , startY + opts.fontSize / 2, 4 * opts.pix, 0, 2 * Math.PI);\n      context.closePath();\n      context.fill();\n    }\n  });\n  // draw text list\n  textList.forEach(function (item, index) {\n    var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight;\n    if (isOverRightBorder) {\n      startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight;\n    }\n    var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding;\n    context.beginPath();\n    context.setFontSize(config.fontSize);\n    context.setFillStyle(toolTipOption.fontColor);\n    context.fillText(item.text, startX, startY + config.fontSize);\n    context.closePath();\n    context.stroke();\n  });\n}\nfunction drawColumnDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var xAxisData = opts.chartData.xAxisData,\n    xAxisPoints = xAxisData.xAxisPoints,\n    eachSpacing = xAxisData.eachSpacing;\n  var columnOption = assign({}, {\n    type: 'group',\n    width: eachSpacing / 2,\n    meterBorder: 4,\n    meterFillColor: '#FFFFFF',\n    barBorderCircle: false,\n    barBorderRadius: [],\n    seriesGap: 2,\n    linearType: 'none',\n    linearOpacity: 1,\n    customColor: [],\n    colorStop: 0\n  }, opts.extra.column);\n  var calPoints = [];\n  context.save();\n  var leftNum = -2;\n  var rightNum = xAxisPoints.length + 2;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n    rightNum = leftNum + opts.xAxis.itemCount + 4;\n  }\n  if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n    drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);\n  }\n  columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    switch (columnOption.type) {\n      case 'group':\n        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n        var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n        calPoints.push(tooltipPoints);\n        points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\n        for (var i = 0; i < points.length; i++) {\n          var item = points[i];\n          //fix issues/I27B1N yyoinge & Joeshu\n          if (item !== null && i > leftNum && i < rightNum) {\n            var startX = item.x - item.width / 2;\n            var height = opts.height - item.y - opts.area[2];\n            context.beginPath();\n            var fillColor = item.color || eachSeries.color;\n            var strokeColor = item.color || eachSeries.color;\n            if (columnOption.linearType !== 'none') {\n              var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\n              //透明渐变\n              if (columnOption.linearType == 'opacity') {\n                grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n                grd.addColorStop(1, hexToRgb(fillColor, 1));\n              } else {\n                grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n                grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n                grd.addColorStop(1, hexToRgb(fillColor, 1));\n              }\n              fillColor = grd;\n            }\n            // 圆角边框\n            if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n              var left = startX;\n              var top = item.y;\n              var width = item.width;\n              var _height = opts.height - opts.area[2] - item.y;\n              if (columnOption.barBorderCircle) {\n                columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n              }\n              var _columnOption$barBord = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n                r0 = _columnOption$barBord[0],\n                r1 = _columnOption$barBord[1],\n                r2 = _columnOption$barBord[2],\n                r3 = _columnOption$barBord[3];\n              var minRadius = Math.min(width / 2, _height / 2);\n              r0 = r0 > minRadius ? minRadius : r0;\n              r1 = r1 > minRadius ? minRadius : r1;\n              r2 = r2 > minRadius ? minRadius : r2;\n              r3 = r3 > minRadius ? minRadius : r3;\n              r0 = r0 < 0 ? 0 : r0;\n              r1 = r1 < 0 ? 0 : r1;\n              r2 = r2 < 0 ? 0 : r2;\n              r3 = r3 < 0 ? 0 : r3;\n              context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n              context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n              context.arc(left + width - r2, top + _height - r2, r2, 0, Math.PI / 2);\n              context.arc(left + r3, top + _height - r3, r3, Math.PI / 2, Math.PI);\n            } else {\n              context.moveTo(startX, item.y);\n              context.lineTo(startX + item.width, item.y);\n              context.lineTo(startX + item.width, opts.height - opts.area[2]);\n              context.lineTo(startX, opts.height - opts.area[2]);\n              context.lineTo(startX, item.y);\n              context.setLineWidth(1);\n              context.setStrokeStyle(strokeColor);\n            }\n            context.setFillStyle(fillColor);\n            context.closePath();\n            //context.stroke();\n            context.fill();\n          }\n        }\n        ;\n        break;\n      case 'stack':\n        // 绘制堆叠数据图\n        var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n        calPoints.push(points);\n        points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\n        for (var _i16 = 0; _i16 < points.length; _i16++) {\n          var _item7 = points[_i16];\n          if (_item7 !== null && _i16 > leftNum && _i16 < rightNum) {\n            context.beginPath();\n            var fillColor = _item7.color || eachSeries.color;\n            var startX = _item7.x - _item7.width / 2 + 1;\n            var height = opts.height - _item7.y - opts.area[2];\n            var height0 = opts.height - _item7.y0 - opts.area[2];\n            if (seriesIndex > 0) {\n              height -= height0;\n            }\n            context.setFillStyle(fillColor);\n            context.moveTo(startX, _item7.y);\n            context.fillRect(startX, _item7.y, _item7.width, height);\n            context.closePath();\n            context.fill();\n          }\n        }\n        ;\n        break;\n      case 'meter':\n        // 绘制温度计数据图\n        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n        calPoints.push(points);\n        points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder);\n        for (var _i17 = 0; _i17 < points.length; _i17++) {\n          var _item8 = points[_i17];\n          if (_item8 !== null && _i17 > leftNum && _i17 < rightNum) {\n            //画背景颜色\n            context.beginPath();\n            if (seriesIndex == 0 && columnOption.meterBorder > 0) {\n              context.setStrokeStyle(eachSeries.color);\n              context.setLineWidth(columnOption.meterBorder * opts.pix);\n            }\n            if (seriesIndex == 0) {\n              context.setFillStyle(columnOption.meterFillColor);\n            } else {\n              context.setFillStyle(_item8.color || eachSeries.color);\n            }\n            var startX = _item8.x - _item8.width / 2;\n            var height = opts.height - _item8.y - opts.area[2];\n            if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n              var _left = startX;\n              var _top = _item8.y;\n              var _width = _item8.width;\n              var _height2 = opts.height - opts.area[2] - _item8.y;\n              if (columnOption.barBorderCircle) {\n                columnOption.barBorderRadius = [_width / 2, _width / 2, 0, 0];\n              }\n              var _columnOption$barBord2 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n                _r = _columnOption$barBord2[0],\n                _r2 = _columnOption$barBord2[1],\n                _r3 = _columnOption$barBord2[2],\n                _r4 = _columnOption$barBord2[3];\n              var _minRadius = Math.min(_width / 2, _height2 / 2);\n              _r = _r > _minRadius ? _minRadius : _r;\n              _r2 = _r2 > _minRadius ? _minRadius : _r2;\n              _r3 = _r3 > _minRadius ? _minRadius : _r3;\n              _r4 = _r4 > _minRadius ? _minRadius : _r4;\n              _r = _r < 0 ? 0 : _r;\n              _r2 = _r2 < 0 ? 0 : _r2;\n              _r3 = _r3 < 0 ? 0 : _r3;\n              _r4 = _r4 < 0 ? 0 : _r4;\n              context.arc(_left + _r, _top + _r, _r, -Math.PI, -Math.PI / 2);\n              context.arc(_left + _width - _r2, _top + _r2, _r2, -Math.PI / 2, 0);\n              context.arc(_left + _width - _r3, _top + _height2 - _r3, _r3, 0, Math.PI / 2);\n              context.arc(_left + _r4, _top + _height2 - _r4, _r4, Math.PI / 2, Math.PI);\n              context.fill();\n            } else {\n              context.moveTo(startX, _item8.y);\n              context.lineTo(startX + _item8.width, _item8.y);\n              context.lineTo(startX + _item8.width, opts.height - opts.area[2]);\n              context.lineTo(startX, opts.height - opts.area[2]);\n              context.lineTo(startX, _item8.y);\n              context.fill();\n            }\n            if (seriesIndex == 0 && columnOption.meterBorder > 0) {\n              context.closePath();\n              context.stroke();\n            }\n          }\n        }\n        break;\n    }\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      switch (columnOption.type) {\n        case 'group':\n          var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n          points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\n          drawPointText(points, eachSeries, config, context, opts);\n          break;\n        case 'stack':\n          var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n          drawPointText(points, eachSeries, config, context, opts);\n          break;\n        case 'meter':\n          var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n          drawPointText(points, eachSeries, config, context, opts);\n          break;\n      }\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing\n  };\n}\nfunction drawMountDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var xAxisData = opts.chartData.xAxisData,\n    xAxisPoints = xAxisData.xAxisPoints,\n    eachSpacing = xAxisData.eachSpacing;\n  var mountOption = assign({}, {\n    type: 'mount',\n    widthRatio: 1,\n    borderWidth: 1,\n    barBorderCircle: false,\n    barBorderRadius: [],\n    linearType: 'none',\n    linearOpacity: 1,\n    customColor: [],\n    colorStop: 0\n  }, opts.extra.mount);\n  mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio;\n  mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio;\n  var calPoints = [];\n  context.save();\n  var leftNum = -2;\n  var rightNum = xAxisPoints.length + 2;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n    rightNum = leftNum + opts.xAxis.itemCount + 4;\n  }\n  mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config);\n  var ranges, minRange, maxRange;\n  ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\n  minRange = ranges.pop();\n  maxRange = ranges.shift();\n  var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, process);\n  switch (mountOption.type) {\n    case 'bar':\n      for (var i = 0; i < points.length; i++) {\n        var item = points[i];\n        if (item !== null && i > leftNum && i < rightNum) {\n          var startX = item.x - eachSpacing * mountOption.widthRatio / 2;\n          var height = opts.height - item.y - opts.area[2];\n          context.beginPath();\n          var fillColor = item.color || series[i].color;\n          var strokeColor = item.color || series[i].color;\n          if (mountOption.linearType !== 'none') {\n            var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\n            //透明渐变\n            if (mountOption.linearType == 'opacity') {\n              grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            } else {\n              grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\n              grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            }\n            fillColor = grd;\n          }\n          // 圆角边框\n          if (mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4 || mountOption.barBorderCircle === true) {\n            var left = startX;\n            var top = item.y;\n            var width = item.width;\n            var _height3 = opts.height - opts.area[2] - item.y - mountOption.borderWidth * opts.pix / 2;\n            if (mountOption.barBorderCircle) {\n              mountOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n            }\n            var _mountOption$barBorde = (0, _slicedToArray2.default)(mountOption.barBorderRadius, 4),\n              r0 = _mountOption$barBorde[0],\n              r1 = _mountOption$barBorde[1],\n              r2 = _mountOption$barBorde[2],\n              r3 = _mountOption$barBorde[3];\n            var minRadius = Math.min(width / 2, _height3 / 2);\n            r0 = r0 > minRadius ? minRadius : r0;\n            r1 = r1 > minRadius ? minRadius : r1;\n            r2 = r2 > minRadius ? minRadius : r2;\n            r3 = r3 > minRadius ? minRadius : r3;\n            r0 = r0 < 0 ? 0 : r0;\n            r1 = r1 < 0 ? 0 : r1;\n            r2 = r2 < 0 ? 0 : r2;\n            r3 = r3 < 0 ? 0 : r3;\n            context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n            context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n            context.arc(left + width - r2, top + _height3 - r2, r2, 0, Math.PI / 2);\n            context.arc(left + r3, top + _height3 - r3, r3, Math.PI / 2, Math.PI);\n          } else {\n            context.moveTo(startX, item.y);\n            context.lineTo(startX + item.width, item.y);\n            context.lineTo(startX + item.width, opts.height - opts.area[2]);\n            context.lineTo(startX, opts.height - opts.area[2]);\n            context.lineTo(startX, item.y);\n          }\n          context.setStrokeStyle(strokeColor);\n          context.setFillStyle(fillColor);\n          if (mountOption.borderWidth > 0) {\n            context.setLineWidth(mountOption.borderWidth * opts.pix);\n            context.closePath();\n            context.stroke();\n          }\n          context.fill();\n        }\n      }\n      ;\n      break;\n    case 'triangle':\n      for (var _i18 = 0; _i18 < points.length; _i18++) {\n        var _item9 = points[_i18];\n        if (_item9 !== null && _i18 > leftNum && _i18 < rightNum) {\n          var startX = _item9.x - eachSpacing * mountOption.widthRatio / 2;\n          var height = opts.height - _item9.y - opts.area[2];\n          context.beginPath();\n          var fillColor = _item9.color || series[_i18].color;\n          var strokeColor = _item9.color || series[_i18].color;\n          if (mountOption.linearType !== 'none') {\n            var grd = context.createLinearGradient(startX, _item9.y, startX, opts.height - opts.area[2]);\n            //透明渐变\n            if (mountOption.linearType == 'opacity') {\n              grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            } else {\n              grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));\n              grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            }\n            fillColor = grd;\n          }\n          context.moveTo(startX, opts.height - opts.area[2]);\n          context.lineTo(_item9.x, _item9.y);\n          context.lineTo(startX + _item9.width, opts.height - opts.area[2]);\n          context.setStrokeStyle(strokeColor);\n          context.setFillStyle(fillColor);\n          if (mountOption.borderWidth > 0) {\n            context.setLineWidth(mountOption.borderWidth * opts.pix);\n            context.stroke();\n          }\n          context.fill();\n        }\n      }\n      ;\n      break;\n    case 'mount':\n      for (var _i19 = 0; _i19 < points.length; _i19++) {\n        var _item10 = points[_i19];\n        if (_item10 !== null && _i19 > leftNum && _i19 < rightNum) {\n          var startX = _item10.x - eachSpacing * mountOption.widthRatio / 2;\n          var height = opts.height - _item10.y - opts.area[2];\n          context.beginPath();\n          var fillColor = _item10.color || series[_i19].color;\n          var strokeColor = _item10.color || series[_i19].color;\n          if (mountOption.linearType !== 'none') {\n            var grd = context.createLinearGradient(startX, _item10.y, startX, opts.height - opts.area[2]);\n            //透明渐变\n            if (mountOption.linearType == 'opacity') {\n              grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            } else {\n              grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));\n              grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            }\n            fillColor = grd;\n          }\n          context.moveTo(startX, opts.height - opts.area[2]);\n          context.bezierCurveTo(_item10.x - _item10.width / 4, opts.height - opts.area[2], _item10.x - _item10.width / 4, _item10.y, _item10.x, _item10.y);\n          context.bezierCurveTo(_item10.x + _item10.width / 4, _item10.y, _item10.x + _item10.width / 4, opts.height - opts.area[2], startX + _item10.width, opts.height - opts.area[2]);\n          context.setStrokeStyle(strokeColor);\n          context.setFillStyle(fillColor);\n          if (mountOption.borderWidth > 0) {\n            context.setLineWidth(mountOption.borderWidth * opts.pix);\n            context.stroke();\n          }\n          context.fill();\n        }\n      }\n      ;\n      break;\n    case 'sharp':\n      for (var _i20 = 0; _i20 < points.length; _i20++) {\n        var _item11 = points[_i20];\n        if (_item11 !== null && _i20 > leftNum && _i20 < rightNum) {\n          var startX = _item11.x - eachSpacing * mountOption.widthRatio / 2;\n          var height = opts.height - _item11.y - opts.area[2];\n          context.beginPath();\n          var fillColor = _item11.color || series[_i20].color;\n          var strokeColor = _item11.color || series[_i20].color;\n          if (mountOption.linearType !== 'none') {\n            var grd = context.createLinearGradient(startX, _item11.y, startX, opts.height - opts.area[2]);\n            //透明渐变\n            if (mountOption.linearType == 'opacity') {\n              grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            } else {\n              grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));\n              grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            }\n            fillColor = grd;\n          }\n          context.moveTo(startX, opts.height - opts.area[2]);\n          context.quadraticCurveTo(_item11.x - 0, opts.height - opts.area[2] - height / 4, _item11.x, _item11.y);\n          context.quadraticCurveTo(_item11.x + 0, opts.height - opts.area[2] - height / 4, startX + _item11.width, opts.height - opts.area[2]);\n          context.setStrokeStyle(strokeColor);\n          context.setFillStyle(fillColor);\n          if (mountOption.borderWidth > 0) {\n            context.setLineWidth(mountOption.borderWidth * opts.pix);\n            context.stroke();\n          }\n          context.fill();\n        }\n      }\n      ;\n      break;\n  }\n  if (opts.dataLabel !== false && process === 1) {\n    var _ranges, _minRange, _maxRange;\n    _ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\n    _minRange = _ranges.pop();\n    _maxRange = _ranges.shift();\n    var points = getMountDataPoints(series, _minRange, _maxRange, xAxisPoints, eachSpacing, opts, mountOption, process);\n    drawMountPointText(points, series, config, context, opts);\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: points,\n    eachSpacing: eachSpacing\n  };\n}\nfunction drawBarDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var yAxisPoints = [];\n  var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / opts.categories.length;\n  for (var i = 0; i < opts.categories.length; i++) {\n    yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i);\n  }\n  var columnOption = assign({}, {\n    type: 'group',\n    width: eachSpacing / 2,\n    meterBorder: 4,\n    meterFillColor: '#FFFFFF',\n    barBorderCircle: false,\n    barBorderRadius: [],\n    seriesGap: 2,\n    linearType: 'none',\n    linearOpacity: 1,\n    customColor: [],\n    colorStop: 0\n  }, opts.extra.bar);\n  var calPoints = [];\n  context.save();\n  var leftNum = -2;\n  var rightNum = yAxisPoints.length + 2;\n  if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n    drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing);\n  }\n  columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.xAxisData.ranges);\n    maxRange = ranges.pop();\n    minRange = ranges.shift();\n    var data = eachSeries.data;\n    switch (columnOption.type) {\n      case 'group':\n        var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\n        var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n        calPoints.push(tooltipPoints);\n        points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\n        for (var _i21 = 0; _i21 < points.length; _i21++) {\n          var item = points[_i21];\n          //fix issues/I27B1N yyoinge & Joeshu\n          if (item !== null && _i21 > leftNum && _i21 < rightNum) {\n            //var startX = item.x - item.width / 2;\n            var startX = opts.area[3];\n            var startY = item.y - item.width / 2;\n            var height = item.height;\n            context.beginPath();\n            var fillColor = item.color || eachSeries.color;\n            var strokeColor = item.color || eachSeries.color;\n            if (columnOption.linearType !== 'none') {\n              var grd = context.createLinearGradient(startX, item.y, item.x, item.y);\n              //透明渐变\n              if (columnOption.linearType == 'opacity') {\n                grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n                grd.addColorStop(1, hexToRgb(fillColor, 1));\n              } else {\n                grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n                grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n                grd.addColorStop(1, hexToRgb(fillColor, 1));\n              }\n              fillColor = grd;\n            }\n            // 圆角边框\n            if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n              var left = startX;\n              var width = item.width;\n              var top = item.y - item.width / 2;\n              var _height4 = item.height;\n              if (columnOption.barBorderCircle) {\n                columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n              }\n              var _columnOption$barBord3 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n                r0 = _columnOption$barBord3[0],\n                r1 = _columnOption$barBord3[1],\n                r2 = _columnOption$barBord3[2],\n                r3 = _columnOption$barBord3[3];\n              var minRadius = Math.min(width / 2, _height4 / 2);\n              r0 = r0 > minRadius ? minRadius : r0;\n              r1 = r1 > minRadius ? minRadius : r1;\n              r2 = r2 > minRadius ? minRadius : r2;\n              r3 = r3 > minRadius ? minRadius : r3;\n              r0 = r0 < 0 ? 0 : r0;\n              r1 = r1 < 0 ? 0 : r1;\n              r2 = r2 < 0 ? 0 : r2;\n              r3 = r3 < 0 ? 0 : r3;\n              context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2);\n              context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0);\n              context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2);\n              context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI);\n            } else {\n              context.moveTo(startX, startY);\n              context.lineTo(item.x, startY);\n              context.lineTo(item.x, startY + item.width);\n              context.lineTo(startX, startY + item.width);\n              context.lineTo(startX, startY);\n              context.setLineWidth(1);\n              context.setStrokeStyle(strokeColor);\n            }\n            context.setFillStyle(fillColor);\n            context.closePath();\n            //context.stroke();\n            context.fill();\n          }\n        }\n        ;\n        break;\n      case 'stack':\n        // 绘制堆叠数据图\n        var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n        calPoints.push(points);\n        points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\n        for (var _i22 = 0; _i22 < points.length; _i22++) {\n          var _item12 = points[_i22];\n          if (_item12 !== null && _i22 > leftNum && _i22 < rightNum) {\n            context.beginPath();\n            var fillColor = _item12.color || eachSeries.color;\n            var startX = _item12.x0;\n            context.setFillStyle(fillColor);\n            context.moveTo(startX, _item12.y - _item12.width / 2);\n            context.fillRect(startX, _item12.y - _item12.width / 2, _item12.height, _item12.width);\n            context.closePath();\n            context.fill();\n          }\n        }\n        ;\n        break;\n    }\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.xAxisData.ranges);\n      maxRange = ranges.pop();\n      minRange = ranges.shift();\n      var data = eachSeries.data;\n      switch (columnOption.type) {\n        case 'group':\n          var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\n          points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\n          drawBarPointText(points, eachSeries, config, context, opts);\n          break;\n        case 'stack':\n          var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n          drawBarPointText(points, eachSeries, config, context, opts);\n          break;\n      }\n    });\n  }\n  return {\n    yAxisPoints: yAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing\n  };\n}\nfunction drawCandleDataPoints(series, seriesMA, opts, config, context) {\n  var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n  var candleOption = assign({}, {\n    color: {},\n    average: {}\n  }, opts.extra.candle);\n  candleOption.color = assign({}, {\n    upLine: '#f04864',\n    upFill: '#f04864',\n    downLine: '#2fc25b',\n    downFill: '#2fc25b'\n  }, candleOption.color);\n  candleOption.average = assign({}, {\n    show: false,\n    name: [],\n    day: [],\n    color: config.color\n  }, candleOption.average);\n  opts.extra.candle = candleOption;\n  var xAxisData = opts.chartData.xAxisData,\n    xAxisPoints = xAxisData.xAxisPoints,\n    eachSpacing = xAxisData.eachSpacing;\n  var calPoints = [];\n  context.save();\n  var leftNum = -2;\n  var rightNum = xAxisPoints.length + 2;\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n    rightNum = leftNum + opts.xAxis.itemCount + 4;\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  //画均线\n  if (candleOption.average.show || seriesMA) {\n    //Merge pull request !12 from 邱贵翔\n    seriesMA.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      var splitPointList = splitPoints(points, eachSeries);\n      for (var i = 0; i < splitPointList.length; i++) {\n        var _points = splitPointList[i];\n        context.beginPath();\n        context.setStrokeStyle(eachSeries.color);\n        context.setLineWidth(1);\n        if (_points.length === 1) {\n          context.moveTo(_points[0].x, _points[0].y);\n          context.arc(_points[0].x, _points[0].y, 1, 0, 2 * Math.PI);\n        } else {\n          context.moveTo(_points[0].x, _points[0].y);\n          var startPoint = 0;\n          for (var j = 0; j < _points.length; j++) {\n            var item = _points[j];\n            if (startPoint == 0 && item.x > leftSpace) {\n              context.moveTo(item.x, item.y);\n              startPoint = 1;\n            }\n            if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n              var ctrlPoint = createCurveControlPoints(_points, j - 1);\n              context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n            }\n          }\n          context.moveTo(_points[0].x, _points[0].y);\n        }\n        context.closePath();\n        context.stroke();\n      }\n    });\n  }\n  //画K线\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    calPoints.push(points);\n    var splitPointList = splitPoints(points, eachSeries);\n    for (var i = 0; i < splitPointList[0].length; i++) {\n      if (i > leftNum && i < rightNum) {\n        var item = splitPointList[0][i];\n        context.beginPath();\n        //如果上涨\n        if (data[i][1] - data[i][0] > 0) {\n          context.setStrokeStyle(candleOption.color.upLine);\n          context.setFillStyle(candleOption.color.upFill);\n          context.setLineWidth(1 * opts.pix);\n          context.moveTo(item[3].x, item[3].y); //顶点\n          context.lineTo(item[1].x, item[1].y); //收盘中间点\n          context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\n          context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\n          context.lineTo(item[0].x, item[0].y); //开盘中间点\n          context.lineTo(item[2].x, item[2].y); //底点\n          context.lineTo(item[0].x, item[0].y); //开盘中间点\n          context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\n          context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\n          context.lineTo(item[1].x, item[1].y); //收盘中间点\n          context.moveTo(item[3].x, item[3].y); //顶点\n        } else {\n          context.setStrokeStyle(candleOption.color.downLine);\n          context.setFillStyle(candleOption.color.downFill);\n          context.setLineWidth(1 * opts.pix);\n          context.moveTo(item[3].x, item[3].y); //顶点\n          context.lineTo(item[0].x, item[0].y); //开盘中间点\n          context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\n          context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\n          context.lineTo(item[1].x, item[1].y); //收盘中间点\n          context.lineTo(item[2].x, item[2].y); //底点\n          context.lineTo(item[1].x, item[1].y); //收盘中间点\n          context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\n          context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\n          context.lineTo(item[0].x, item[0].y); //开盘中间点\n          context.moveTo(item[3].x, item[3].y); //顶点\n        }\n\n        context.closePath();\n        context.fill();\n        context.stroke();\n      }\n    }\n  });\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing\n  };\n}\nfunction drawAreaDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var areaOption = assign({}, {\n    type: 'straight',\n    opacity: 0.2,\n    addLine: false,\n    width: 2,\n    gradient: false\n  }, opts.extra.area);\n  var xAxisData = opts.chartData.xAxisData,\n    xAxisPoints = xAxisData.xAxisPoints,\n    eachSpacing = xAxisData.eachSpacing;\n  var endY = opts.height - opts.area[2];\n  var calPoints = [];\n  context.save();\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    calPoints.push(points);\n    var splitPointList = splitPoints(points, eachSeries);\n    for (var i = 0; i < splitPointList.length; i++) {\n      var _points2 = splitPointList[i];\n      // 绘制区域数\n      context.beginPath();\n      context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n      if (areaOption.gradient) {\n        var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\n        gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\n        gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n        context.setFillStyle(gradient);\n      } else {\n        context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n      }\n      context.setLineWidth(areaOption.width * opts.pix);\n      if (_points2.length > 1) {\n        var firstPoint = _points2[0];\n        var lastPoint = _points2[_points2.length - 1];\n        context.moveTo(firstPoint.x, firstPoint.y);\n        var startPoint = 0;\n        if (areaOption.type === 'curve') {\n          for (var j = 0; j < _points2.length; j++) {\n            var item = _points2[j];\n            if (startPoint == 0 && item.x > leftSpace) {\n              context.moveTo(item.x, item.y);\n              startPoint = 1;\n            }\n            if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n              var ctrlPoint = createCurveControlPoints(_points2, j - 1);\n              context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n            }\n          }\n          ;\n        }\n        if (areaOption.type === 'straight') {\n          for (var _j = 0; _j < _points2.length; _j++) {\n            var _item13 = _points2[_j];\n            if (startPoint == 0 && _item13.x > leftSpace) {\n              context.moveTo(_item13.x, _item13.y);\n              startPoint = 1;\n            }\n            if (_j > 0 && _item13.x > leftSpace && _item13.x < rightSpace) {\n              context.lineTo(_item13.x, _item13.y);\n            }\n          }\n          ;\n        }\n        if (areaOption.type === 'step') {\n          for (var _j2 = 0; _j2 < _points2.length; _j2++) {\n            var _item14 = _points2[_j2];\n            if (startPoint == 0 && _item14.x > leftSpace) {\n              context.moveTo(_item14.x, _item14.y);\n              startPoint = 1;\n            }\n            if (_j2 > 0 && _item14.x > leftSpace && _item14.x < rightSpace) {\n              context.lineTo(_item14.x, _points2[_j2 - 1].y);\n              context.lineTo(_item14.x, _item14.y);\n            }\n          }\n          ;\n        }\n        context.lineTo(lastPoint.x, endY);\n        context.lineTo(firstPoint.x, endY);\n        context.lineTo(firstPoint.x, firstPoint.y);\n      } else {\n        var _item15 = _points2[0];\n        context.moveTo(_item15.x - eachSpacing / 2, _item15.y);\n        context.lineTo(_item15.x + eachSpacing / 2, _item15.y);\n        context.lineTo(_item15.x + eachSpacing / 2, endY);\n        context.lineTo(_item15.x - eachSpacing / 2, endY);\n        context.moveTo(_item15.x - eachSpacing / 2, _item15.y);\n      }\n      context.closePath();\n      context.fill();\n      //画连线\n      if (areaOption.addLine) {\n        if (eachSeries.lineType == 'dash') {\n          var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n          dashLength *= opts.pix;\n          context.setLineDash([dashLength, dashLength]);\n        }\n        context.beginPath();\n        context.setStrokeStyle(eachSeries.color);\n        context.setLineWidth(areaOption.width * opts.pix);\n        if (_points2.length === 1) {\n          context.moveTo(_points2[0].x, _points2[0].y);\n          context.arc(_points2[0].x, _points2[0].y, 1, 0, 2 * Math.PI);\n        } else {\n          context.moveTo(_points2[0].x, _points2[0].y);\n          var _startPoint = 0;\n          if (areaOption.type === 'curve') {\n            for (var _j3 = 0; _j3 < _points2.length; _j3++) {\n              var _item16 = _points2[_j3];\n              if (_startPoint == 0 && _item16.x > leftSpace) {\n                context.moveTo(_item16.x, _item16.y);\n                _startPoint = 1;\n              }\n              if (_j3 > 0 && _item16.x > leftSpace && _item16.x < rightSpace) {\n                var _ctrlPoint = createCurveControlPoints(_points2, _j3 - 1);\n                context.bezierCurveTo(_ctrlPoint.ctrA.x, _ctrlPoint.ctrA.y, _ctrlPoint.ctrB.x, _ctrlPoint.ctrB.y, _item16.x, _item16.y);\n              }\n            }\n            ;\n          }\n          if (areaOption.type === 'straight') {\n            for (var _j4 = 0; _j4 < _points2.length; _j4++) {\n              var _item17 = _points2[_j4];\n              if (_startPoint == 0 && _item17.x > leftSpace) {\n                context.moveTo(_item17.x, _item17.y);\n                _startPoint = 1;\n              }\n              if (_j4 > 0 && _item17.x > leftSpace && _item17.x < rightSpace) {\n                context.lineTo(_item17.x, _item17.y);\n              }\n            }\n            ;\n          }\n          if (areaOption.type === 'step') {\n            for (var _j5 = 0; _j5 < _points2.length; _j5++) {\n              var _item18 = _points2[_j5];\n              if (_startPoint == 0 && _item18.x > leftSpace) {\n                context.moveTo(_item18.x, _item18.y);\n                _startPoint = 1;\n              }\n              if (_j5 > 0 && _item18.x > leftSpace && _item18.x < rightSpace) {\n                context.lineTo(_item18.x, _points2[_j5 - 1].y);\n                context.lineTo(_item18.x, _item18.y);\n              }\n            }\n            ;\n          }\n          context.moveTo(_points2[0].x, _points2[0].y);\n        }\n        context.stroke();\n        context.setLineDash([]);\n      }\n    }\n    //画点\n    if (opts.dataPointShape !== false) {\n      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n    }\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      drawPointText(points, eachSeries, config, context, opts);\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing\n  };\n}\nfunction drawScatterDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var scatterOption = assign({}, {\n    type: 'circle'\n  }, opts.extra.scatter);\n  var xAxisData = opts.chartData.xAxisData,\n    xAxisPoints = xAxisData.xAxisPoints,\n    eachSpacing = xAxisData.eachSpacing;\n  var calPoints = [];\n  context.save();\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    context.beginPath();\n    context.setStrokeStyle(eachSeries.color);\n    context.setFillStyle(eachSeries.color);\n    context.setLineWidth(1 * opts.pix);\n    var shape = eachSeries.pointShape;\n    if (shape === 'diamond') {\n      points.forEach(function (item, index) {\n        if (item !== null) {\n          context.moveTo(item.x, item.y - 4.5);\n          context.lineTo(item.x - 4.5, item.y);\n          context.lineTo(item.x, item.y + 4.5);\n          context.lineTo(item.x + 4.5, item.y);\n          context.lineTo(item.x, item.y - 4.5);\n        }\n      });\n    } else if (shape === 'circle') {\n      points.forEach(function (item, index) {\n        if (item !== null) {\n          context.moveTo(item.x + 2.5 * opts.pix, item.y);\n          context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n        }\n      });\n    } else if (shape === 'square') {\n      points.forEach(function (item, index) {\n        if (item !== null) {\n          context.moveTo(item.x - 3.5, item.y - 3.5);\n          context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n        }\n      });\n    } else if (shape === 'triangle') {\n      points.forEach(function (item, index) {\n        if (item !== null) {\n          context.moveTo(item.x, item.y - 4.5);\n          context.lineTo(item.x - 4.5, item.y + 4.5);\n          context.lineTo(item.x + 4.5, item.y + 4.5);\n          context.lineTo(item.x, item.y - 4.5);\n        }\n      });\n    } else if (shape === 'triangle') {\n      return;\n    }\n    context.closePath();\n    context.fill();\n    context.stroke();\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      drawPointText(points, eachSeries, config, context, opts);\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing\n  };\n}\nfunction drawBubbleDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var bubbleOption = assign({}, {\n    opacity: 1,\n    border: 2\n  }, opts.extra.bubble);\n  var xAxisData = opts.chartData.xAxisData,\n    xAxisPoints = xAxisData.xAxisPoints,\n    eachSpacing = xAxisData.eachSpacing;\n  var calPoints = [];\n  context.save();\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    context.beginPath();\n    context.setStrokeStyle(eachSeries.color);\n    context.setLineWidth(bubbleOption.border * opts.pix);\n    context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity));\n    points.forEach(function (item, index) {\n      context.moveTo(item.x + item.r, item.y);\n      context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false);\n    });\n    context.closePath();\n    context.fill();\n    context.stroke();\n    if (opts.dataLabel !== false && process === 1) {\n      points.forEach(function (item, index) {\n        context.beginPath();\n        var fontSize = eachSeries.textSize * opts.pix || config.fontSize;\n        context.setFontSize(fontSize);\n        context.setFillStyle(eachSeries.textColor || \"#FFFFFF\");\n        context.setTextAlign('center');\n        context.fillText(String(item.t), item.x, item.y + fontSize / 2);\n        context.closePath();\n        context.stroke();\n        context.setTextAlign('left');\n      });\n    }\n  });\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing\n  };\n}\nfunction drawLineDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var lineOption = assign({}, {\n    type: 'straight',\n    width: 2\n  }, opts.extra.line);\n  lineOption.width *= opts.pix;\n  var xAxisData = opts.chartData.xAxisData,\n    xAxisPoints = xAxisData.xAxisPoints,\n    eachSpacing = xAxisData.eachSpacing;\n  var calPoints = [];\n  context.save();\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    calPoints.push(points);\n    var splitPointList = splitPoints(points, eachSeries);\n    if (eachSeries.lineType == 'dash') {\n      var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n      dashLength *= opts.pix;\n      context.setLineDash([dashLength, dashLength]);\n    }\n    context.beginPath();\n    context.setStrokeStyle(eachSeries.color);\n    context.setLineWidth(lineOption.width);\n    splitPointList.forEach(function (points, index) {\n      if (points.length === 1) {\n        context.moveTo(points[0].x, points[0].y);\n        context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n      } else {\n        context.moveTo(points[0].x, points[0].y);\n        var startPoint = 0;\n        if (lineOption.type === 'curve') {\n          for (var j = 0; j < points.length; j++) {\n            var item = points[j];\n            if (startPoint == 0 && item.x > leftSpace) {\n              context.moveTo(item.x, item.y);\n              startPoint = 1;\n            }\n            if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n              var ctrlPoint = createCurveControlPoints(points, j - 1);\n              context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n            }\n          }\n          ;\n        }\n        if (lineOption.type === 'straight') {\n          for (var _j6 = 0; _j6 < points.length; _j6++) {\n            var _item19 = points[_j6];\n            if (startPoint == 0 && _item19.x > leftSpace) {\n              context.moveTo(_item19.x, _item19.y);\n              startPoint = 1;\n            }\n            if (_j6 > 0 && _item19.x > leftSpace && _item19.x < rightSpace) {\n              context.lineTo(_item19.x, _item19.y);\n            }\n          }\n          ;\n        }\n        if (lineOption.type === 'step') {\n          for (var _j7 = 0; _j7 < points.length; _j7++) {\n            var _item20 = points[_j7];\n            if (startPoint == 0 && _item20.x > leftSpace) {\n              context.moveTo(_item20.x, _item20.y);\n              startPoint = 1;\n            }\n            if (_j7 > 0 && _item20.x > leftSpace && _item20.x < rightSpace) {\n              context.lineTo(_item20.x, points[_j7 - 1].y);\n              context.lineTo(_item20.x, _item20.y);\n            }\n          }\n          ;\n        }\n        context.moveTo(points[0].x, points[0].y);\n      }\n    });\n    context.stroke();\n    context.setLineDash([]);\n    if (opts.dataPointShape !== false) {\n      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n    }\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      drawPointText(points, eachSeries, config, context, opts);\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing\n  };\n}\nfunction drawMixDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var xAxisData = opts.chartData.xAxisData,\n    xAxisPoints = xAxisData.xAxisPoints,\n    eachSpacing = xAxisData.eachSpacing;\n  var columnOption = assign({}, {\n    width: eachSpacing / 2,\n    barBorderCircle: false,\n    barBorderRadius: [],\n    seriesGap: 2,\n    linearType: 'none',\n    linearOpacity: 1,\n    customColor: [],\n    colorStop: 0\n  }, opts.extra.mix.column);\n  var areaOption = assign({}, {\n    opacity: 0.2,\n    gradient: false\n  }, opts.extra.mix.area);\n  var lineOption = assign({}, {\n    width: 2\n  }, opts.extra.mix.line);\n  var endY = opts.height - opts.area[2];\n  var calPoints = [];\n  var columnIndex = 0;\n  var columnLength = 0;\n  series.forEach(function (eachSeries, seriesIndex) {\n    if (eachSeries.type == 'column') {\n      columnLength += 1;\n    }\n  });\n  context.save();\n  var leftNum = -2;\n  var rightNum = xAxisPoints.length + 2;\n  var leftSpace = 0;\n  var rightSpace = opts.width + eachSpacing;\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n    leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n    rightNum = leftNum + opts.xAxis.itemCount + 4;\n    leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n    rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n  }\n  columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n  series.forEach(function (eachSeries, seriesIndex) {\n    var ranges, minRange, maxRange;\n    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n    minRange = ranges.pop();\n    maxRange = ranges.shift();\n    var data = eachSeries.data;\n    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n    calPoints.push(points);\n    // 绘制柱状数据图\n    if (eachSeries.type == 'column') {\n      points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\n      for (var i = 0; i < points.length; i++) {\n        var item = points[i];\n        if (item !== null && i > leftNum && i < rightNum) {\n          var startX = item.x - item.width / 2;\n          var height = opts.height - item.y - opts.area[2];\n          context.beginPath();\n          var fillColor = item.color || eachSeries.color;\n          var strokeColor = item.color || eachSeries.color;\n          if (columnOption.linearType !== 'none') {\n            var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\n            //透明渐变\n            if (columnOption.linearType == 'opacity') {\n              grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            } else {\n              grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n              grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n              grd.addColorStop(1, hexToRgb(fillColor, 1));\n            }\n            fillColor = grd;\n          }\n          // 圆角边框\n          if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle) {\n            var left = startX;\n            var top = item.y;\n            var width = item.width;\n            var _height5 = opts.height - opts.area[2] - item.y;\n            if (columnOption.barBorderCircle) {\n              columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n            }\n            var _columnOption$barBord4 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n              r0 = _columnOption$barBord4[0],\n              r1 = _columnOption$barBord4[1],\n              r2 = _columnOption$barBord4[2],\n              r3 = _columnOption$barBord4[3];\n            var minRadius = Math.min(width / 2, _height5 / 2);\n            r0 = r0 > minRadius ? minRadius : r0;\n            r1 = r1 > minRadius ? minRadius : r1;\n            r2 = r2 > minRadius ? minRadius : r2;\n            r3 = r3 > minRadius ? minRadius : r3;\n            r0 = r0 < 0 ? 0 : r0;\n            r1 = r1 < 0 ? 0 : r1;\n            r2 = r2 < 0 ? 0 : r2;\n            r3 = r3 < 0 ? 0 : r3;\n            context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n            context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n            context.arc(left + width - r2, top + _height5 - r2, r2, 0, Math.PI / 2);\n            context.arc(left + r3, top + _height5 - r3, r3, Math.PI / 2, Math.PI);\n          } else {\n            context.moveTo(startX, item.y);\n            context.lineTo(startX + item.width, item.y);\n            context.lineTo(startX + item.width, opts.height - opts.area[2]);\n            context.lineTo(startX, opts.height - opts.area[2]);\n            context.lineTo(startX, item.y);\n            context.setLineWidth(1);\n            context.setStrokeStyle(strokeColor);\n          }\n          context.setFillStyle(fillColor);\n          context.closePath();\n          context.fill();\n        }\n      }\n      columnIndex += 1;\n    }\n    //绘制区域图数据\n    if (eachSeries.type == 'area') {\n      var _splitPointList = splitPoints(points, eachSeries);\n      for (var _i23 = 0; _i23 < _splitPointList.length; _i23++) {\n        var _points3 = _splitPointList[_i23];\n        // 绘制区域数据\n        context.beginPath();\n        context.setStrokeStyle(eachSeries.color);\n        context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n        if (areaOption.gradient) {\n          var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\n          gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\n          gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n          context.setFillStyle(gradient);\n        } else {\n          context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n        }\n        context.setLineWidth(2 * opts.pix);\n        if (_points3.length > 1) {\n          var firstPoint = _points3[0];\n          var lastPoint = _points3[_points3.length - 1];\n          context.moveTo(firstPoint.x, firstPoint.y);\n          var startPoint = 0;\n          if (eachSeries.style === 'curve') {\n            for (var j = 0; j < _points3.length; j++) {\n              var _item21 = _points3[j];\n              if (startPoint == 0 && _item21.x > leftSpace) {\n                context.moveTo(_item21.x, _item21.y);\n                startPoint = 1;\n              }\n              if (j > 0 && _item21.x > leftSpace && _item21.x < rightSpace) {\n                var ctrlPoint = createCurveControlPoints(_points3, j - 1);\n                context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item21.x, _item21.y);\n              }\n            }\n            ;\n          } else {\n            for (var _j8 = 0; _j8 < _points3.length; _j8++) {\n              var _item22 = _points3[_j8];\n              if (startPoint == 0 && _item22.x > leftSpace) {\n                context.moveTo(_item22.x, _item22.y);\n                startPoint = 1;\n              }\n              if (_j8 > 0 && _item22.x > leftSpace && _item22.x < rightSpace) {\n                context.lineTo(_item22.x, _item22.y);\n              }\n            }\n            ;\n          }\n          context.lineTo(lastPoint.x, endY);\n          context.lineTo(firstPoint.x, endY);\n          context.lineTo(firstPoint.x, firstPoint.y);\n        } else {\n          var _item23 = _points3[0];\n          context.moveTo(_item23.x - eachSpacing / 2, _item23.y);\n          context.lineTo(_item23.x + eachSpacing / 2, _item23.y);\n          context.lineTo(_item23.x + eachSpacing / 2, endY);\n          context.lineTo(_item23.x - eachSpacing / 2, endY);\n          context.moveTo(_item23.x - eachSpacing / 2, _item23.y);\n        }\n        context.closePath();\n        context.fill();\n      }\n    }\n    // 绘制折线数据图\n    if (eachSeries.type == 'line') {\n      var splitPointList = splitPoints(points, eachSeries);\n      splitPointList.forEach(function (points, index) {\n        if (eachSeries.lineType == 'dash') {\n          var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n          dashLength *= opts.pix;\n          context.setLineDash([dashLength, dashLength]);\n        }\n        context.beginPath();\n        context.setStrokeStyle(eachSeries.color);\n        context.setLineWidth(lineOption.width * opts.pix);\n        if (points.length === 1) {\n          context.moveTo(points[0].x, points[0].y);\n          context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n        } else {\n          context.moveTo(points[0].x, points[0].y);\n          var _startPoint2 = 0;\n          if (eachSeries.style == 'curve') {\n            for (var _j9 = 0; _j9 < points.length; _j9++) {\n              var _item24 = points[_j9];\n              if (_startPoint2 == 0 && _item24.x > leftSpace) {\n                context.moveTo(_item24.x, _item24.y);\n                _startPoint2 = 1;\n              }\n              if (_j9 > 0 && _item24.x > leftSpace && _item24.x < rightSpace) {\n                var ctrlPoint = createCurveControlPoints(points, _j9 - 1);\n                context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item24.x, _item24.y);\n              }\n            }\n          } else {\n            for (var _j10 = 0; _j10 < points.length; _j10++) {\n              var _item25 = points[_j10];\n              if (_startPoint2 == 0 && _item25.x > leftSpace) {\n                context.moveTo(_item25.x, _item25.y);\n                _startPoint2 = 1;\n              }\n              if (_j10 > 0 && _item25.x > leftSpace && _item25.x < rightSpace) {\n                context.lineTo(_item25.x, _item25.y);\n              }\n            }\n          }\n          context.moveTo(points[0].x, points[0].y);\n        }\n        context.stroke();\n        context.setLineDash([]);\n      });\n    }\n    // 绘制点数据图\n    if (eachSeries.type == 'point') {\n      eachSeries.addPoint = true;\n    }\n    if (eachSeries.addPoint == true && eachSeries.type !== 'column') {\n      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n    }\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    var columnIndex = 0;\n    series.forEach(function (eachSeries, seriesIndex) {\n      var ranges, minRange, maxRange;\n      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n      minRange = ranges.pop();\n      maxRange = ranges.shift();\n      var data = eachSeries.data;\n      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n      if (eachSeries.type !== 'column') {\n        drawPointText(points, eachSeries, config, context, opts);\n      } else {\n        points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\n        drawPointText(points, eachSeries, config, context, opts);\n        columnIndex += 1;\n      }\n    });\n  }\n  context.restore();\n  return {\n    xAxisPoints: xAxisPoints,\n    calPoints: calPoints,\n    eachSpacing: eachSpacing\n  };\n}\nfunction drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {\n  var toolTipOption = opts.extra.tooltip || {};\n  if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'mount' || opts.type == 'candle' || opts.type == 'mix')) {\n    drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints);\n  }\n  context.save();\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n    context.translate(opts._scrollDistance_, 0);\n  }\n  if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n    drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);\n  }\n  context.restore();\n}\nfunction drawXAxis(categories, opts, config, context) {\n  var xAxisData = opts.chartData.xAxisData,\n    xAxisPoints = xAxisData.xAxisPoints,\n    startX = xAxisData.startX,\n    endX = xAxisData.endX,\n    eachSpacing = xAxisData.eachSpacing;\n  var boundaryGap = 'center';\n  if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {\n    boundaryGap = opts.xAxis.boundaryGap;\n  }\n  var startY = opts.height - opts.area[2];\n  var endY = opts.area[0];\n\n  //绘制滚动条\n  if (opts.enableScroll && opts.xAxis.scrollShow) {\n    var scrollY = opts.height - opts.area[2] + config.xAxisHeight;\n    var scrollScreenWidth = endX - startX;\n    var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);\n    if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n      if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n      scrollTotalWidth += (opts.extra.mount.widthRatio - 1) * eachSpacing;\n    }\n    var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;\n    var scrollLeft = 0;\n    if (opts._scrollDistance_) {\n      scrollLeft = -opts._scrollDistance_ * scrollScreenWidth / scrollTotalWidth;\n    }\n    context.beginPath();\n    context.setLineCap('round');\n    context.setLineWidth(6 * opts.pix);\n    context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || \"#EFEBEF\");\n    context.moveTo(startX, scrollY);\n    context.lineTo(endX, scrollY);\n    context.stroke();\n    context.closePath();\n    context.beginPath();\n    context.setLineCap('round');\n    context.setLineWidth(6 * opts.pix);\n    context.setStrokeStyle(opts.xAxis.scrollColor || \"#A6A6A6\");\n    context.moveTo(startX + scrollLeft, scrollY);\n    context.lineTo(startX + scrollLeft + scrollWidth, scrollY);\n    context.stroke();\n    context.closePath();\n    context.setLineCap('butt');\n  }\n  context.save();\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\n    context.translate(opts._scrollDistance_, 0);\n  }\n  //绘制X轴刻度线\n  if (opts.xAxis.calibration === true) {\n    context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\n    context.setLineCap('butt');\n    context.setLineWidth(1 * opts.pix);\n    xAxisPoints.forEach(function (item, index) {\n      if (index > 0) {\n        context.beginPath();\n        context.moveTo(item - eachSpacing / 2, startY);\n        context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix);\n        context.closePath();\n        context.stroke();\n      }\n    });\n  }\n  //绘制X轴网格\n  if (opts.xAxis.disableGrid !== true) {\n    context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\n    context.setLineCap('butt');\n    context.setLineWidth(1 * opts.pix);\n    if (opts.xAxis.gridType == 'dash') {\n      context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]);\n    }\n    opts.xAxis.gridEval = opts.xAxis.gridEval || 1;\n    xAxisPoints.forEach(function (item, index) {\n      if (index % opts.xAxis.gridEval == 0) {\n        context.beginPath();\n        context.moveTo(item, startY);\n        context.lineTo(item, endY);\n        context.stroke();\n      }\n    });\n    context.setLineDash([]);\n  }\n  //绘制X轴文案\n  if (opts.xAxis.disabled !== true) {\n    // 对X轴列表做抽稀处理\n    //默认全部显示X轴标签\n    var maxXAxisListLength = categories.length;\n    //如果设置了X轴单屏数量\n    if (opts.xAxis.labelCount) {\n      //如果设置X轴密度\n      if (opts.xAxis.itemCount) {\n        maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);\n      } else {\n        maxXAxisListLength = opts.xAxis.labelCount;\n      }\n      maxXAxisListLength -= 1;\n    }\n    var ratio = Math.ceil(categories.length / maxXAxisListLength);\n    var newCategories = [];\n    var cgLength = categories.length;\n    for (var i = 0; i < cgLength; i++) {\n      if (i % ratio !== 0) {\n        newCategories.push(\"\");\n      } else {\n        newCategories.push(categories[i]);\n      }\n    }\n    newCategories[cgLength - 1] = categories[cgLength - 1];\n    var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;\n    if (config._xAxisTextAngle_ === 0) {\n      newCategories.forEach(function (item, index) {\n        var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;\n        var offset = -measureText(String(xitem), xAxisFontSize, context) / 2;\n        if (boundaryGap == 'center') {\n          offset += eachSpacing / 2;\n        }\n        var scrollHeight = 0;\n        if (opts.xAxis.scrollShow) {\n          scrollHeight = 6 * opts.pix;\n        }\n        // 如果在主视图区域内\n        var _scrollDistance_ = opts._scrollDistance_ || 0;\n        var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];\n        if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1]) {\n          context.beginPath();\n          context.setFontSize(xAxisFontSize);\n          context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\n          context.fillText(String(xitem), xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - scrollHeight - xAxisFontSize) / 2);\n          context.closePath();\n          context.stroke();\n        }\n      });\n    } else {\n      newCategories.forEach(function (item, index) {\n        var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;\n        // 如果在主视图区域内\n        var _scrollDistance_ = opts._scrollDistance_ || 0;\n        var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];\n        if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1]) {\n          context.save();\n          context.beginPath();\n          context.setFontSize(xAxisFontSize);\n          context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\n          var textWidth = measureText(String(xitem), xAxisFontSize, context);\n          var offsetX = xAxisPoints[index];\n          if (boundaryGap == 'center') {\n            offsetX = xAxisPoints[index] + eachSpacing / 2;\n          }\n          var scrollHeight = 0;\n          if (opts.xAxis.scrollShow) {\n            scrollHeight = 6 * opts.pix;\n          }\n          var offsetY = startY + 6 * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_));\n          if (opts.xAxis.rotateAngle < 0) {\n            offsetX -= xAxisFontSize / 2;\n            textWidth = 0;\n          } else {\n            offsetX += xAxisFontSize / 2;\n            textWidth = -textWidth;\n          }\n          context.translate(offsetX, offsetY);\n          context.rotate(-1 * config._xAxisTextAngle_);\n          context.fillText(String(xitem), textWidth, 0);\n          context.closePath();\n          context.stroke();\n          context.restore();\n        }\n      });\n    }\n  }\n  context.restore();\n  //绘制X轴轴线\n  if (opts.xAxis.axisLine) {\n    context.beginPath();\n    context.setStrokeStyle(opts.xAxis.axisLineColor);\n    context.setLineWidth(1 * opts.pix);\n    context.moveTo(startX, opts.height - opts.area[2]);\n    context.lineTo(endX, opts.height - opts.area[2]);\n    context.stroke();\n  }\n}\nfunction drawYAxisGrid(categories, opts, config, context) {\n  if (opts.yAxis.disableGrid === true) {\n    return;\n  }\n  var spacingValid = opts.height - opts.area[0] - opts.area[2];\n  var eachSpacing = spacingValid / opts.yAxis.splitNumber;\n  var startX = opts.area[3];\n  var xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\n    xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;\n  var TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);\n  if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n    if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n    TotalWidth += (opts.extra.mount.widthRatio - 1) * xAxiseachSpacing;\n  }\n  var endX = startX + TotalWidth;\n  var points = [];\n  var startY = 1;\n  if (opts.xAxis.axisLine === false) {\n    startY = 0;\n  }\n  for (var i = startY; i < opts.yAxis.splitNumber + 1; i++) {\n    points.push(opts.height - opts.area[2] - eachSpacing * i);\n  }\n  context.save();\n  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\n    context.translate(opts._scrollDistance_, 0);\n  }\n  if (opts.yAxis.gridType == 'dash') {\n    context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]);\n  }\n  context.setStrokeStyle(opts.yAxis.gridColor);\n  context.setLineWidth(1 * opts.pix);\n  points.forEach(function (item, index) {\n    context.beginPath();\n    context.moveTo(startX, item);\n    context.lineTo(endX, item);\n    context.stroke();\n  });\n  context.setLineDash([]);\n  context.restore();\n}\nfunction drawYAxis(series, opts, config, context) {\n  if (opts.yAxis.disabled === true) {\n    return;\n  }\n  var spacingValid = opts.height - opts.area[0] - opts.area[2];\n  var eachSpacing = spacingValid / opts.yAxis.splitNumber;\n  var startX = opts.area[3];\n  var endX = opts.width - opts.area[1];\n  var endY = opts.height - opts.area[2];\n  // set YAxis background\n  context.beginPath();\n  context.setFillStyle(opts.background);\n  if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') {\n    context.fillRect(0, 0, startX, endY + 2 * opts.pix);\n  }\n  if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') {\n    context.fillRect(endX, 0, opts.width, endY + 2 * opts.pix);\n  }\n  context.closePath();\n  context.stroke();\n  var tStartLeft = opts.area[3];\n  var tStartRight = opts.width - opts.area[1];\n  var tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2;\n  if (opts.yAxis.data) {\n    var _loop4 = function _loop4(i) {\n      var yData = opts.yAxis.data[i];\n      points = [];\n      if (yData.type === 'categories') {\n        for (var _i24 = 0; _i24 <= yData.categories.length; _i24++) {\n          points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * _i24);\n        }\n      } else {\n        for (var _i25 = 0; _i25 <= opts.yAxis.splitNumber; _i25++) {\n          points.push(opts.area[0] + eachSpacing * _i25);\n        }\n      }\n      if (yData.disabled !== true) {\n        var rangesFormat = opts.chartData.yAxisData.rangesFormat[i];\n        var yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize;\n        var yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];\n        var textAlign = yData.textAlign || \"right\";\n        //画Y轴刻度及文案\n        rangesFormat.forEach(function (item, index) {\n          var pos = points[index];\n          context.beginPath();\n          context.setFontSize(yAxisFontSize);\n          context.setLineWidth(1 * opts.pix);\n          context.setStrokeStyle(yData.axisLineColor || '#cccccc');\n          context.setFillStyle(yData.fontColor || opts.fontColor);\n          var tmpstrat = 0;\n          var gapwidth = 4 * opts.pix;\n          if (yAxisWidth.position == 'left') {\n            //画刻度线\n            if (yData.calibration == true) {\n              context.moveTo(tStartLeft, pos);\n              context.lineTo(tStartLeft - 3 * opts.pix, pos);\n              gapwidth += 3 * opts.pix;\n            }\n            //画文字\n            switch (textAlign) {\n              case \"left\":\n                context.setTextAlign('left');\n                tmpstrat = tStartLeft - yAxisWidth.width;\n                break;\n              case \"right\":\n                context.setTextAlign('right');\n                tmpstrat = tStartLeft - gapwidth;\n                break;\n              default:\n                context.setTextAlign('center');\n                tmpstrat = tStartLeft - yAxisWidth.width / 2;\n            }\n            context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n          } else if (yAxisWidth.position == 'right') {\n            //画刻度线\n            if (yData.calibration == true) {\n              context.moveTo(tStartRight, pos);\n              context.lineTo(tStartRight + 3 * opts.pix, pos);\n              gapwidth += 3 * opts.pix;\n            }\n            switch (textAlign) {\n              case \"left\":\n                context.setTextAlign('left');\n                tmpstrat = tStartRight + gapwidth;\n                break;\n              case \"right\":\n                context.setTextAlign('right');\n                tmpstrat = tStartRight + yAxisWidth.width;\n                break;\n              default:\n                context.setTextAlign('center');\n                tmpstrat = tStartRight + yAxisWidth.width / 2;\n            }\n            context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n          } else if (yAxisWidth.position == 'center') {\n            //画刻度线\n            if (yData.calibration == true) {\n              context.moveTo(tStartCenter, pos);\n              context.lineTo(tStartCenter - 3 * opts.pix, pos);\n              gapwidth += 3 * opts.pix;\n            }\n            //画文字\n            switch (textAlign) {\n              case \"left\":\n                context.setTextAlign('left');\n                tmpstrat = tStartCenter - yAxisWidth.width;\n                break;\n              case \"right\":\n                context.setTextAlign('right');\n                tmpstrat = tStartCenter - gapwidth;\n                break;\n              default:\n                context.setTextAlign('center');\n                tmpstrat = tStartCenter - yAxisWidth.width / 2;\n            }\n            context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n          }\n          context.closePath();\n          context.stroke();\n          context.setTextAlign('left');\n        });\n        //画Y轴轴线\n        if (yData.axisLine !== false) {\n          context.beginPath();\n          context.setStrokeStyle(yData.axisLineColor || '#cccccc');\n          context.setLineWidth(1 * opts.pix);\n          if (yAxisWidth.position == 'left') {\n            context.moveTo(tStartLeft, opts.height - opts.area[2]);\n            context.lineTo(tStartLeft, opts.area[0]);\n          } else if (yAxisWidth.position == 'right') {\n            context.moveTo(tStartRight, opts.height - opts.area[2]);\n            context.lineTo(tStartRight, opts.area[0]);\n          } else if (yAxisWidth.position == 'center') {\n            context.moveTo(tStartCenter, opts.height - opts.area[2]);\n            context.lineTo(tStartCenter, opts.area[0]);\n          }\n          context.stroke();\n        }\n        //画Y轴标题\n        if (opts.yAxis.showTitle) {\n          var titleFontSize = yData.titleFontSize * opts.pix || config.fontSize;\n          var title = yData.title;\n          context.beginPath();\n          context.setFontSize(titleFontSize);\n          context.setFillStyle(yData.titleFontColor || opts.fontColor);\n          if (yAxisWidth.position == 'left') {\n            context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n          } else if (yAxisWidth.position == 'right') {\n            context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n          } else if (yAxisWidth.position == 'center') {\n            context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n          }\n          context.closePath();\n          context.stroke();\n        }\n        if (yAxisWidth.position == 'left') {\n          tStartLeft -= yAxisWidth.width + opts.yAxis.padding * opts.pix;\n        } else {\n          tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix;\n        }\n      }\n    };\n    for (var i = 0; i < opts.yAxis.data.length; i++) {\n      var points;\n      _loop4(i);\n    }\n  }\n}\nfunction drawLegend(series, opts, config, context, chartData) {\n  if (opts.legend.show === false) {\n    return;\n  }\n  var legendData = chartData.legendData;\n  var legendList = legendData.points;\n  var legendArea = legendData.area;\n  var padding = opts.legend.padding * opts.pix;\n  var fontSize = opts.legend.fontSize * opts.pix;\n  var shapeWidth = 15 * opts.pix;\n  var shapeRight = 5 * opts.pix;\n  var itemGap = opts.legend.itemGap * opts.pix;\n  var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\n  //画背景及边框\n  context.beginPath();\n  context.setLineWidth(opts.legend.borderWidth * opts.pix);\n  context.setStrokeStyle(opts.legend.borderColor);\n  context.setFillStyle(opts.legend.backgroundColor);\n  context.moveTo(legendArea.start.x, legendArea.start.y);\n  context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);\n  context.closePath();\n  context.fill();\n  context.stroke();\n  legendList.forEach(function (itemList, listIndex) {\n    var width = 0;\n    var height = 0;\n    width = legendData.widthArr[listIndex];\n    height = legendData.heightArr[listIndex];\n    var startX = 0;\n    var startY = 0;\n    if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n      switch (opts.legend.float) {\n        case 'left':\n          startX = legendArea.start.x + padding;\n          break;\n        case 'right':\n          startX = legendArea.start.x + legendArea.width - width;\n          break;\n        default:\n          startX = legendArea.start.x + (legendArea.width - width) / 2;\n      }\n      startY = legendArea.start.y + padding + listIndex * lineHeight;\n    } else {\n      if (listIndex == 0) {\n        width = 0;\n      } else {\n        width = legendData.widthArr[listIndex - 1];\n      }\n      startX = legendArea.start.x + padding + width;\n      startY = legendArea.start.y + padding + (legendArea.height - height) / 2;\n    }\n    context.setFontSize(config.fontSize);\n    for (var i = 0; i < itemList.length; i++) {\n      var item = itemList[i];\n      item.area = [0, 0, 0, 0];\n      item.area[0] = startX;\n      item.area[1] = startY;\n      item.area[3] = startY + lineHeight;\n      context.beginPath();\n      context.setLineWidth(1 * opts.pix);\n      context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);\n      context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);\n      switch (item.legendShape) {\n        case 'line':\n          context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix);\n          context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix);\n          break;\n        case 'triangle':\n          context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n          context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n          context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          break;\n        case 'diamond':\n          context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight);\n          context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n          context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight);\n          context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          break;\n        case 'circle':\n          context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight);\n          context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI);\n          break;\n        case 'rect':\n          context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n          break;\n        case 'square':\n          context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);\n          break;\n        case 'none':\n          break;\n        default:\n          context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\n          context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n      }\n      context.closePath();\n      context.fill();\n      context.stroke();\n      startX += shapeWidth + shapeRight;\n      var fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;\n      var legendText = item.legendText ? item.legendText : item.name;\n      context.beginPath();\n      context.setFontSize(fontSize);\n      context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);\n      context.fillText(legendText, startX, startY + fontTrans);\n      context.closePath();\n      context.stroke();\n      if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n        startX += measureText(legendText, fontSize, context) + itemGap;\n        item.area[2] = startX;\n      } else {\n        item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;\n        ;\n        startX -= shapeWidth + shapeRight;\n        startY += lineHeight;\n      }\n    }\n  });\n}\nfunction drawPieDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var pieOption = assign({}, {\n    activeOpacity: 0.5,\n    activeRadius: 10,\n    offsetAngle: 0,\n    labelWidth: 15,\n    ringWidth: 30,\n    customRadius: 0,\n    border: false,\n    borderWidth: 2,\n    borderColor: '#FFFFFF',\n    centerColor: '#FFFFFF',\n    linearType: 'none',\n    customColor: []\n  }, opts.type == \"pie\" ? opts.extra.pie : opts.extra.ring);\n  var centerPosition = {\n    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n    y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\n  };\n  if (config.pieChartLinePadding == 0) {\n    config.pieChartLinePadding = pieOption.activeRadius * opts.pix;\n  }\n  var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\n  radius = radius < 10 ? 10 : radius;\n  if (pieOption.customRadius > 0) {\n    radius = pieOption.customRadius * opts.pix;\n  }\n  series = getPieDataPoints(series, radius, process);\n  var activeRadius = pieOption.activeRadius * opts.pix;\n  pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config);\n  series = series.map(function (eachSeries) {\n    eachSeries._start_ += pieOption.offsetAngle * Math.PI / 180;\n    return eachSeries;\n  });\n  series.forEach(function (eachSeries, seriesIndex) {\n    if (opts.tooltip) {\n      if (opts.tooltip.index == seriesIndex) {\n        context.beginPath();\n        context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5));\n        context.moveTo(centerPosition.x, centerPosition.y);\n        context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\n        context.closePath();\n        context.fill();\n      }\n    }\n    context.beginPath();\n    context.setLineWidth(pieOption.borderWidth * opts.pix);\n    context.lineJoin = \"round\";\n    context.setStrokeStyle(pieOption.borderColor);\n    var fillcolor = eachSeries.color;\n    if (pieOption.linearType == 'custom') {\n      var grd;\n      if (context.createCircularGradient) {\n        grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);\n      } else {\n        grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);\n      }\n      grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1));\n      grd.addColorStop(1, hexToRgb(eachSeries.color, 1));\n      fillcolor = grd;\n    }\n    context.setFillStyle(fillcolor);\n    context.moveTo(centerPosition.x, centerPosition.y);\n    context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\n    context.closePath();\n    context.fill();\n    if (pieOption.border == true) {\n      context.stroke();\n    }\n  });\n  if (opts.type === 'ring') {\n    var innerPieWidth = radius * 0.6;\n    if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) {\n      innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix);\n    }\n    context.beginPath();\n    context.setFillStyle(pieOption.centerColor);\n    context.moveTo(centerPosition.x, centerPosition.y);\n    context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);\n    context.closePath();\n    context.fill();\n  }\n  if (opts.dataLabel !== false && process === 1) {\n    drawPieText(series, opts, config, context, radius, centerPosition);\n  }\n  if (process === 1 && opts.type === 'ring') {\n    drawRingTitle(opts, config, context, centerPosition);\n  }\n  return {\n    center: centerPosition,\n    radius: radius,\n    series: series\n  };\n}\nfunction drawRoseDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var roseOption = assign({}, {\n    type: 'area',\n    activeOpacity: 0.5,\n    activeRadius: 10,\n    offsetAngle: 0,\n    labelWidth: 15,\n    border: false,\n    borderWidth: 2,\n    borderColor: '#FFFFFF',\n    linearType: 'none',\n    customColor: []\n  }, opts.extra.rose);\n  if (config.pieChartLinePadding == 0) {\n    config.pieChartLinePadding = roseOption.activeRadius * opts.pix;\n  }\n  var centerPosition = {\n    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n    y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\n  };\n  var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\n  radius = radius < 10 ? 10 : radius;\n  var minRadius = roseOption.minRadius || radius * 0.5;\n  series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);\n  var activeRadius = roseOption.activeRadius * opts.pix;\n  roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config);\n  series = series.map(function (eachSeries) {\n    eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;\n    return eachSeries;\n  });\n  series.forEach(function (eachSeries, seriesIndex) {\n    if (opts.tooltip) {\n      if (opts.tooltip.index == seriesIndex) {\n        context.beginPath();\n        context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));\n        context.moveTo(centerPosition.x, centerPosition.y);\n        context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\n        context.closePath();\n        context.fill();\n      }\n    }\n    context.beginPath();\n    context.setLineWidth(roseOption.borderWidth * opts.pix);\n    context.lineJoin = \"round\";\n    context.setStrokeStyle(roseOption.borderColor);\n    var fillcolor = eachSeries.color;\n    if (roseOption.linearType == 'custom') {\n      var grd;\n      if (context.createCircularGradient) {\n        grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);\n      } else {\n        grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);\n      }\n      grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1));\n      grd.addColorStop(1, hexToRgb(eachSeries.color, 1));\n      fillcolor = grd;\n    }\n    context.setFillStyle(fillcolor);\n    context.moveTo(centerPosition.x, centerPosition.y);\n    context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\n    context.closePath();\n    context.fill();\n    if (roseOption.border == true) {\n      context.stroke();\n    }\n  });\n  if (opts.dataLabel !== false && process === 1) {\n    drawPieText(series, opts, config, context, radius, centerPosition);\n  }\n  return {\n    center: centerPosition,\n    radius: radius,\n    series: series\n  };\n}\nfunction drawArcbarDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var arcbarOption = assign({}, {\n    startAngle: 0.75,\n    endAngle: 0.25,\n    type: 'default',\n    direction: 'cw',\n    lineCap: 'round',\n    width: 12,\n    gap: 2,\n    linearType: 'none',\n    customColor: []\n  }, opts.extra.arcbar);\n  series = getArcbarDataPoints(series, arcbarOption, process);\n  var centerPosition;\n  if (arcbarOption.centerX || arcbarOption.centerY) {\n    centerPosition = {\n      x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2,\n      y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2\n    };\n  } else {\n    centerPosition = {\n      x: opts.width / 2,\n      y: opts.height / 2\n    };\n  }\n  var radius;\n  if (arcbarOption.radius) {\n    radius = arcbarOption.radius;\n  } else {\n    radius = Math.min(centerPosition.x, centerPosition.y);\n    radius -= 5 * opts.pix;\n    radius -= arcbarOption.width / 2;\n  }\n  radius = radius < 10 ? 10 : radius;\n  arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config);\n  for (var i = 0; i < series.length; i++) {\n    var eachSeries = series[i];\n    //背景颜色\n    context.setLineWidth(arcbarOption.width * opts.pix);\n    context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');\n    context.setLineCap(arcbarOption.lineCap);\n    context.beginPath();\n    if (arcbarOption.type == 'default') {\n      context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, arcbarOption.direction == 'ccw');\n    } else {\n      context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, arcbarOption.direction == 'ccw');\n    }\n    context.stroke();\n    //进度条\n    var fillColor = eachSeries.color;\n    if (arcbarOption.linearType == 'custom') {\n      var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y);\n      grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1));\n      grd.addColorStop(0, hexToRgb(eachSeries.color, 1));\n      fillColor = grd;\n    }\n    context.setLineWidth(arcbarOption.width * opts.pix);\n    context.setStrokeStyle(fillColor);\n    context.setLineCap(arcbarOption.lineCap);\n    context.beginPath();\n    context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, arcbarOption.direction == 'ccw');\n    context.stroke();\n  }\n  drawRingTitle(opts, config, context, centerPosition);\n  return {\n    center: centerPosition,\n    radius: radius,\n    series: series\n  };\n}\nfunction drawGaugeDataPoints(categories, series, opts, config, context) {\n  var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n  var gaugeOption = assign({}, {\n    type: 'default',\n    startAngle: 0.75,\n    endAngle: 0.25,\n    width: 15,\n    labelOffset: 13,\n    splitLine: {\n      fixRadius: 0,\n      splitNumber: 10,\n      width: 15,\n      color: '#FFFFFF',\n      childNumber: 5,\n      childWidth: 5\n    },\n    pointer: {\n      width: 15,\n      color: 'auto'\n    }\n  }, opts.extra.gauge);\n  if (gaugeOption.oldAngle == undefined) {\n    gaugeOption.oldAngle = gaugeOption.startAngle;\n  }\n  if (gaugeOption.oldData == undefined) {\n    gaugeOption.oldData = 0;\n  }\n  categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);\n  var centerPosition = {\n    x: opts.width / 2,\n    y: opts.height / 2\n  };\n  var radius = Math.min(centerPosition.x, centerPosition.y);\n  radius -= 5 * opts.pix;\n  radius -= gaugeOption.width / 2;\n  radius = radius < 10 ? 10 : radius;\n  var innerRadius = radius - gaugeOption.width;\n  var totalAngle = 0;\n  //判断仪表盘的样式:default百度样式,progress新样式\n  if (gaugeOption.type == 'progress') {\n    //## 第一步画中心圆形背景和进度条背景\n    //中心圆形背景\n    var pieRadius = radius - gaugeOption.width * 3;\n    context.beginPath();\n    var gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);\n    //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)\n    gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));\n    gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n    context.setFillStyle(gradient);\n    context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);\n    context.fill();\n    //画进度条背景\n    context.setLineWidth(gaugeOption.width);\n    context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\n    context.setLineCap('round');\n    context.beginPath();\n    context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);\n    context.stroke();\n    //## 第二步画刻度线\n    totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\n    var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n    var childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\n    var startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\n    var endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\n    context.save();\n    context.translate(centerPosition.x, centerPosition.y);\n    context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n    var len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;\n    var proc = series[0].data * process;\n    for (var i = 0; i < len; i++) {\n      context.beginPath();\n      //刻度线随进度变色\n      if (proc > i / len) {\n        context.setStrokeStyle(hexToRgb(series[0].color, 1));\n      } else {\n        context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\n      }\n      context.setLineWidth(3 * opts.pix);\n      context.moveTo(startX, 0);\n      context.lineTo(endX, 0);\n      context.stroke();\n      context.rotate(childAngle * Math.PI);\n    }\n    context.restore();\n    //## 第三步画进度条\n    series = getGaugeArcbarDataPoints(series, gaugeOption, process);\n    context.setLineWidth(gaugeOption.width);\n    context.setStrokeStyle(series[0].color);\n    context.setLineCap('round');\n    context.beginPath();\n    context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);\n    context.stroke();\n    //## 第四步画指针\n    var pointerRadius = radius - gaugeOption.width * 2.5;\n    context.save();\n    context.translate(centerPosition.x, centerPosition.y);\n    context.rotate((series[0]._proportion_ - 1) * Math.PI);\n    context.beginPath();\n    context.setLineWidth(gaugeOption.width / 3);\n    var gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);\n    gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));\n    gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));\n    gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));\n    context.setStrokeStyle(gradient3);\n    context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);\n    context.stroke();\n    context.beginPath();\n    context.setLineWidth(1);\n    context.setStrokeStyle(series[0].color);\n    context.setFillStyle(series[0].color);\n    context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\n    context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);\n    context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);\n    context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\n    context.stroke();\n    context.fill();\n    context.restore();\n    //default百度样式\n  } else {\n    //画背景\n    context.setLineWidth(gaugeOption.width);\n    context.setLineCap('butt');\n    for (var _i26 = 0; _i26 < categories.length; _i26++) {\n      var eachCategories = categories[_i26];\n      context.beginPath();\n      context.setStrokeStyle(eachCategories.color);\n      context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);\n      context.stroke();\n    }\n    context.save();\n    //画刻度线\n    totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\n    var _splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n    var _childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\n    var _startX2 = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\n    var _endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\n    var childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;\n    context.translate(centerPosition.x, centerPosition.y);\n    context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n    for (var _i27 = 0; _i27 < gaugeOption.splitLine.splitNumber + 1; _i27++) {\n      context.beginPath();\n      context.setStrokeStyle(gaugeOption.splitLine.color);\n      context.setLineWidth(2 * opts.pix);\n      context.moveTo(_startX2, 0);\n      context.lineTo(_endX, 0);\n      context.stroke();\n      context.rotate(_splitAngle * Math.PI);\n    }\n    context.restore();\n    context.save();\n    context.translate(centerPosition.x, centerPosition.y);\n    context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n    for (var _i28 = 0; _i28 < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; _i28++) {\n      context.beginPath();\n      context.setStrokeStyle(gaugeOption.splitLine.color);\n      context.setLineWidth(1 * opts.pix);\n      context.moveTo(_startX2, 0);\n      context.lineTo(childendX, 0);\n      context.stroke();\n      context.rotate(_childAngle * Math.PI);\n    }\n    context.restore();\n    //画指针\n    series = getGaugeDataPoints(series, categories, gaugeOption, process);\n    for (var _i29 = 0; _i29 < series.length; _i29++) {\n      var eachSeries = series[_i29];\n      context.save();\n      context.translate(centerPosition.x, centerPosition.y);\n      context.rotate((eachSeries._proportion_ - 1) * Math.PI);\n      context.beginPath();\n      context.setFillStyle(eachSeries.color);\n      context.moveTo(gaugeOption.pointer.width, 0);\n      context.lineTo(0, -gaugeOption.pointer.width / 2);\n      context.lineTo(-innerRadius, 0);\n      context.lineTo(0, gaugeOption.pointer.width / 2);\n      context.lineTo(gaugeOption.pointer.width, 0);\n      context.closePath();\n      context.fill();\n      context.beginPath();\n      context.setFillStyle('#FFFFFF');\n      context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);\n      context.fill();\n      context.restore();\n    }\n    if (opts.dataLabel !== false) {\n      drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);\n    }\n  }\n  //画仪表盘标题,副标题\n  drawRingTitle(opts, config, context, centerPosition);\n  if (process === 1 && opts.type === 'gauge') {\n    opts.extra.gauge.oldAngle = series[0]._proportion_;\n    opts.extra.gauge.oldData = series[0].data;\n  }\n  return {\n    center: centerPosition,\n    radius: radius,\n    innerRadius: innerRadius,\n    categories: categories,\n    totalAngle: totalAngle\n  };\n}\nfunction drawRadarDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var radarOption = assign({}, {\n    gridColor: '#cccccc',\n    gridType: 'radar',\n    gridEval: 1,\n    axisLabel: false,\n    axisLabelTofix: 0,\n    labelColor: '#666666',\n    labelPointShow: false,\n    labelPointRadius: 3,\n    labelPointColor: '#cccccc',\n    opacity: 0.2,\n    gridCount: 3,\n    border: false,\n    borderWidth: 2,\n    linearType: 'none',\n    customColor: []\n  }, opts.extra.radar);\n  var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);\n  var centerPosition = {\n    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n    y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\n  };\n  var xr = (opts.width - opts.area[1] - opts.area[3]) / 2;\n  var yr = (opts.height - opts.area[0] - opts.area[2]) / 2;\n  var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin);\n  radius -= config.radarLabelTextMargin * opts.pix;\n  radius = radius < 10 ? 10 : radius;\n  // 画分割线\n  context.beginPath();\n  context.setLineWidth(1 * opts.pix);\n  context.setStrokeStyle(radarOption.gridColor);\n  coordinateAngle.forEach(function (angle, index) {\n    var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);\n    context.moveTo(centerPosition.x, centerPosition.y);\n    if (index % radarOption.gridEval == 0) {\n      context.lineTo(pos.x, pos.y);\n    }\n  });\n  context.stroke();\n  context.closePath();\n\n  // 画背景网格\n  var _loop = function _loop(i) {\n    var startPos = {};\n    context.beginPath();\n    context.setLineWidth(1 * opts.pix);\n    context.setStrokeStyle(radarOption.gridColor);\n    if (radarOption.gridType == 'radar') {\n      coordinateAngle.forEach(function (angle, index) {\n        var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / radarOption.gridCount * i * Math.sin(angle), centerPosition);\n        if (index === 0) {\n          startPos = pos;\n          context.moveTo(pos.x, pos.y);\n        } else {\n          context.lineTo(pos.x, pos.y);\n        }\n      });\n      context.lineTo(startPos.x, startPos.y);\n    } else {\n      var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);\n      context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);\n    }\n    context.stroke();\n    context.closePath();\n  };\n  for (var i = 1; i <= radarOption.gridCount; i++) {\n    _loop(i);\n  }\n  radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config);\n  var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);\n  radarDataPoints.forEach(function (eachSeries, seriesIndex) {\n    // 绘制区域数据\n    context.beginPath();\n    context.setLineWidth(radarOption.borderWidth * opts.pix);\n    context.setStrokeStyle(eachSeries.color);\n    var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity);\n    if (radarOption.linearType == 'custom') {\n      var grd;\n      if (context.createCircularGradient) {\n        grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius);\n      } else {\n        grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, radius);\n      }\n      grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity));\n      grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity));\n      fillcolor = grd;\n    }\n    context.setFillStyle(fillcolor);\n    eachSeries.data.forEach(function (item, index) {\n      if (index === 0) {\n        context.moveTo(item.position.x, item.position.y);\n      } else {\n        context.lineTo(item.position.x, item.position.y);\n      }\n    });\n    context.closePath();\n    context.fill();\n    if (radarOption.border === true) {\n      context.stroke();\n    }\n    context.closePath();\n    if (opts.dataPointShape !== false) {\n      var points = eachSeries.data.map(function (item) {\n        return item.position;\n      });\n      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n    }\n  });\n  // 画刻度值\n  if (radarOption.axisLabel === true) {\n    var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\n    var stepLength = radius / radarOption.gridCount;\n    var fontSize = opts.fontSize * opts.pix;\n    context.setFontSize(fontSize);\n    context.setFillStyle(opts.fontColor);\n    context.setTextAlign('left');\n    for (var i = 0; i < radarOption.gridCount + 1; i++) {\n      var label = i * maxData / radarOption.gridCount;\n      label = label.toFixed(radarOption.axisLabelTofix);\n      context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2);\n    }\n  }\n\n  // draw label text\n  drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);\n\n  // draw dataLabel\n  if (opts.dataLabel !== false && process === 1) {\n    radarDataPoints.forEach(function (eachSeries, seriesIndex) {\n      context.beginPath();\n      var fontSize = eachSeries.textSize * opts.pix || config.fontSize;\n      context.setFontSize(fontSize);\n      context.setFillStyle(eachSeries.textColor || opts.fontColor);\n      eachSeries.data.forEach(function (item, index) {\n        //如果是中心点垂直的上下点位\n        if (Math.abs(item.position.x - centerPosition.x) < 2) {\n          //如果在上面\n          if (item.position.y < centerPosition.y) {\n            context.setTextAlign('center');\n            context.fillText(item.value, item.position.x, item.position.y - 4);\n          } else {\n            context.setTextAlign('center');\n            context.fillText(item.value, item.position.x, item.position.y + fontSize + 2);\n          }\n        } else {\n          //如果在左侧\n          if (item.position.x < centerPosition.x) {\n            context.setTextAlign('right');\n            context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2);\n          } else {\n            context.setTextAlign('left');\n            context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2);\n          }\n        }\n      });\n      context.closePath();\n      context.stroke();\n    });\n    context.setTextAlign('left');\n  }\n  return {\n    center: centerPosition,\n    radius: radius,\n    angleList: coordinateAngle\n  };\n}\n\n// 经纬度转墨卡托\nfunction lonlat2mercator(longitude, latitude) {\n  var mercator = Array(2);\n  var x = longitude * 20037508.34 / 180;\n  var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);\n  y = y * 20037508.34 / 180;\n  mercator[0] = x;\n  mercator[1] = y;\n  return mercator;\n}\n\n// 墨卡托转经纬度\nfunction mercator2lonlat(longitude, latitude) {\n  var lonlat = Array(2);\n  var x = longitude / 20037508.34 * 180;\n  var y = latitude / 20037508.34 * 180;\n  y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);\n  lonlat[0] = x;\n  lonlat[1] = y;\n  return lonlat;\n}\nfunction getBoundingBox(data) {\n  var bounds = {},\n    coords;\n  bounds.xMin = 180;\n  bounds.xMax = 0;\n  bounds.yMin = 90;\n  bounds.yMax = 0;\n  for (var i = 0; i < data.length; i++) {\n    var coorda = data[i].geometry.coordinates;\n    for (var k = 0; k < coorda.length; k++) {\n      coords = coorda[k];\n      if (coords.length == 1) {\n        coords = coords[0];\n      }\n      for (var j = 0; j < coords.length; j++) {\n        var longitude = coords[j][0];\n        var latitude = coords[j][1];\n        var point = {\n          x: longitude,\n          y: latitude\n        };\n        bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;\n        bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;\n        bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;\n        bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;\n      }\n    }\n  }\n  return bounds;\n}\nfunction coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) {\n  return {\n    x: (longitude - bounds.xMin) * scale + xoffset,\n    y: (bounds.yMax - latitude) * scale + yoffset\n  };\n}\nfunction pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) {\n  return {\n    x: (pointX - xoffset) / scale + bounds.xMin,\n    y: bounds.yMax - (pointY - yoffset) / scale\n  };\n}\nfunction isRayIntersectsSegment(poi, s_poi, e_poi) {\n  if (s_poi[1] == e_poi[1]) {\n    return false;\n  }\n  if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {\n    return false;\n  }\n  if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {\n    return false;\n  }\n  if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {\n    return false;\n  }\n  if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {\n    return false;\n  }\n  if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {\n    return false;\n  }\n  var xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]);\n  if (xseg < poi[0]) {\n    return false;\n  } else {\n    return true;\n  }\n}\nfunction isPoiWithinPoly(poi, poly, mercator) {\n  var sinsc = 0;\n  for (var i = 0; i < poly.length; i++) {\n    var epoly = poly[i][0];\n    if (poly.length == 1) {\n      epoly = poly[i][0];\n    }\n    for (var j = 0; j < epoly.length - 1; j++) {\n      var s_poi = epoly[j];\n      var e_poi = epoly[j + 1];\n      if (mercator) {\n        s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]);\n        e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]);\n      }\n      if (isRayIntersectsSegment(poi, s_poi, e_poi)) {\n        sinsc += 1;\n      }\n    }\n  }\n  if (sinsc % 2 == 1) {\n    return true;\n  } else {\n    return false;\n  }\n}\nfunction drawMapDataPoints(series, opts, config, context) {\n  var mapOption = assign({}, {\n    border: true,\n    mercator: false,\n    borderWidth: 1,\n    active: true,\n    borderColor: '#666666',\n    fillOpacity: 0.6,\n    activeBorderColor: '#f04864',\n    activeFillColor: '#facc14',\n    activeFillOpacity: 1\n  }, opts.extra.map);\n  var coords, point;\n  var data = series;\n  var bounds = getBoundingBox(data);\n  if (mapOption.mercator) {\n    var max = lonlat2mercator(bounds.xMax, bounds.yMax);\n    var min = lonlat2mercator(bounds.xMin, bounds.yMin);\n    bounds.xMax = max[0];\n    bounds.yMax = max[1];\n    bounds.xMin = min[0];\n    bounds.yMin = min[1];\n  }\n  var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);\n  var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);\n  var scale = xScale < yScale ? xScale : yScale;\n  var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale;\n  var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale;\n  for (var i = 0; i < data.length; i++) {\n    context.beginPath();\n    context.setLineWidth(mapOption.borderWidth * opts.pix);\n    context.setStrokeStyle(mapOption.borderColor);\n    context.setFillStyle(hexToRgb(series[i].color, series[i].fillOpacity || mapOption.fillOpacity));\n    if (mapOption.active == true && opts.tooltip) {\n      if (opts.tooltip.index == i) {\n        context.setStrokeStyle(mapOption.activeBorderColor);\n        context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));\n      }\n    }\n    var coorda = data[i].geometry.coordinates;\n    for (var k = 0; k < coorda.length; k++) {\n      coords = coorda[k];\n      if (coords.length == 1) {\n        coords = coords[0];\n      }\n      for (var j = 0; j < coords.length; j++) {\n        var gaosi = Array(2);\n        if (mapOption.mercator) {\n          gaosi = lonlat2mercator(coords[j][0], coords[j][1]);\n        } else {\n          gaosi = coords[j];\n        }\n        point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset);\n        if (j === 0) {\n          context.beginPath();\n          context.moveTo(point.x, point.y);\n        } else {\n          context.lineTo(point.x, point.y);\n        }\n      }\n      context.fill();\n      if (mapOption.border == true) {\n        context.stroke();\n      }\n    }\n  }\n  if (opts.dataLabel == true) {\n    for (var i = 0; i < data.length; i++) {\n      var centerPoint = data[i].properties.centroid;\n      if (centerPoint) {\n        if (mapOption.mercator) {\n          centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]);\n        }\n        point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);\n        var fontSize = data[i].textSize * opts.pix || config.fontSize;\n        var fontColor = data[i].textColor || opts.fontColor;\n        if (mapOption.active && mapOption.activeTextColor && opts.tooltip && opts.tooltip.index == i) {\n          fontColor = mapOption.activeTextColor;\n        }\n        var text = data[i].properties.name;\n        context.beginPath();\n        context.setFontSize(fontSize);\n        context.setFillStyle(fontColor);\n        context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2);\n        context.closePath();\n        context.stroke();\n      }\n    }\n  }\n  opts.chartData.mapData = {\n    bounds: bounds,\n    scale: scale,\n    xoffset: xoffset,\n    yoffset: yoffset,\n    mercator: mapOption.mercator\n  };\n  drawToolTipBridge(opts, config, context, 1);\n  context.draw();\n}\nfunction normalInt(min, max, iter) {\n  iter = iter == 0 ? 1 : iter;\n  var arr = [];\n  for (var i = 0; i < iter; i++) {\n    arr[i] = Math.random();\n  }\n  ;\n  return Math.floor(arr.reduce(function (i, j) {\n    return i + j;\n  }) / iter * (max - min)) + min;\n}\n;\nfunction collisionNew(area, points, width, height) {\n  var isIn = false;\n  for (var i = 0; i < points.length; i++) {\n    if (points[i].area) {\n      if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) {\n        if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) {\n          isIn = true;\n          break;\n        } else {\n          isIn = false;\n        }\n      } else {\n        isIn = true;\n        break;\n      }\n    }\n  }\n  return isIn;\n}\n;\nfunction getWordCloudPoint(opts, type, context) {\n  var points = opts.series;\n  switch (type) {\n    case 'normal':\n      for (var i = 0; i < points.length; i++) {\n        var text = points[i].name;\n        var tHeight = points[i].textSize * opts.pix;\n        var tWidth = measureText(text, tHeight, context);\n        var x = void 0,\n          y = void 0;\n        var area = void 0;\n        var breaknum = 0;\n        while (true) {\n          breaknum++;\n          x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;\n          y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;\n          area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2];\n          var isCollision = collisionNew(area, points, opts.width, opts.height);\n          if (!isCollision) break;\n          if (breaknum == 1000) {\n            area = [-100, -100, -100, -100];\n            break;\n          }\n        }\n        ;\n        points[i].area = area;\n      }\n      break;\n    case 'vertical':\n      var Spin = function Spin() {\n        //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)\n        if (Math.random() > 0.7) {\n          return true;\n        } else {\n          return false;\n        }\n        ;\n      };\n      ;\n      for (var _i30 = 0; _i30 < points.length; _i30++) {\n        var _text = points[_i30].name;\n        var _tHeight = points[_i30].textSize * opts.pix;\n        var _tWidth = measureText(_text, _tHeight, context);\n        var isSpin = Spin();\n        var _x = void 0,\n          _y = void 0,\n          _area = void 0,\n          areav = void 0;\n        var _breaknum = 0;\n        while (true) {\n          _breaknum++;\n          var _isCollision = void 0;\n          if (isSpin) {\n            _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;\n            _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;\n            _area = [_y - 5 - _tWidth + opts.width / 2, -_x - 5 + opts.height / 2, _y + 5 + opts.width / 2, -_x + _tHeight + 5 + opts.height / 2];\n            areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) - 5, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) + _tHeight, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) + _tWidth + 5];\n            _isCollision = collisionNew(areav, points, opts.height, opts.width);\n          } else {\n            _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;\n            _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;\n            _area = [_x - 5 + opts.width / 2, _y - 5 - _tHeight + opts.height / 2, _x + _tWidth + 5 + opts.width / 2, _y + 5 + opts.height / 2];\n            _isCollision = collisionNew(_area, points, opts.width, opts.height);\n          }\n          if (!_isCollision) break;\n          if (_breaknum == 1000) {\n            _area = [-1000, -1000, -1000, -1000];\n            break;\n          }\n        }\n        ;\n        if (isSpin) {\n          points[_i30].area = areav;\n          points[_i30].areav = _area;\n        } else {\n          points[_i30].area = _area;\n        }\n        points[_i30].rotate = isSpin;\n      }\n      ;\n      break;\n  }\n  return points;\n}\nfunction drawWordCloudDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var wordOption = assign({}, {\n    type: 'normal',\n    autoColors: true\n  }, opts.extra.word);\n  if (!opts.chartData.wordCloudData) {\n    opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context);\n  }\n  context.beginPath();\n  context.setFillStyle(opts.background);\n  context.rect(0, 0, opts.width, opts.height);\n  context.fill();\n  context.save();\n  var points = opts.chartData.wordCloudData;\n  context.translate(opts.width / 2, opts.height / 2);\n  for (var i = 0; i < points.length; i++) {\n    context.save();\n    if (points[i].rotate) {\n      context.rotate(90 * Math.PI / 180);\n    }\n    var text = points[i].name;\n    var tHeight = points[i].textSize * opts.pix;\n    var tWidth = measureText(text, tHeight, context);\n    context.beginPath();\n    context.setStrokeStyle(points[i].color);\n    context.setFillStyle(points[i].color);\n    context.setFontSize(tHeight);\n    if (points[i].rotate) {\n      if (points[i].areav[0] > 0) {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == i) {\n            context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n          } else {\n            context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n          }\n        } else {\n          context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n        }\n      }\n    } else {\n      if (points[i].area[0] > 0) {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == i) {\n            context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n          } else {\n            context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n          }\n        } else {\n          context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n        }\n      }\n    }\n    context.stroke();\n    context.restore();\n  }\n  context.restore();\n}\nfunction drawFunnelDataPoints(series, opts, config, context) {\n  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n  var funnelOption = assign({}, {\n    type: 'funnel',\n    activeWidth: 10,\n    activeOpacity: 0.3,\n    border: false,\n    borderWidth: 2,\n    borderColor: '#FFFFFF',\n    fillOpacity: 1,\n    minSize: 0,\n    labelAlign: 'right',\n    linearType: 'none',\n    customColor: []\n  }, opts.extra.funnel);\n  var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length;\n  var centerPosition = {\n    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n    y: opts.height - opts.area[2]\n  };\n  var activeWidth = funnelOption.activeWidth * opts.pix;\n  var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);\n  var seriesNew = getFunnelDataPoints(series, radius, funnelOption, eachSpacing, process);\n  context.save();\n  context.translate(centerPosition.x, centerPosition.y);\n  funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config);\n  if (funnelOption.type == 'pyramid') {\n    for (var i = 0; i < seriesNew.length; i++) {\n      if (i == seriesNew.length - 1) {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == i) {\n            context.beginPath();\n            context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));\n            context.moveTo(-activeWidth, -eachSpacing);\n            context.lineTo(-seriesNew[i].radius - activeWidth, 0);\n            context.lineTo(seriesNew[i].radius + activeWidth, 0);\n            context.lineTo(activeWidth, -eachSpacing);\n            context.lineTo(-activeWidth, -eachSpacing);\n            context.closePath();\n            context.fill();\n          }\n        }\n        seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];\n        context.beginPath();\n        context.setLineWidth(funnelOption.borderWidth * opts.pix);\n        context.setStrokeStyle(funnelOption.borderColor);\n        var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);\n        if (funnelOption.linearType == 'custom') {\n          var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);\n          grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n          grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));\n          grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n          fillColor = grd;\n        }\n        context.setFillStyle(fillColor);\n        context.moveTo(0, -eachSpacing);\n        context.lineTo(-seriesNew[i].radius, 0);\n        context.lineTo(seriesNew[i].radius, 0);\n        context.lineTo(0, -eachSpacing);\n        context.closePath();\n        context.fill();\n        if (funnelOption.border == true) {\n          context.stroke();\n        }\n      } else {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == i) {\n            context.beginPath();\n            context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));\n            context.moveTo(0, 0);\n            context.lineTo(-seriesNew[i].radius - activeWidth, 0);\n            context.lineTo(-seriesNew[i + 1].radius - activeWidth, -eachSpacing);\n            context.lineTo(seriesNew[i + 1].radius + activeWidth, -eachSpacing);\n            context.lineTo(seriesNew[i].radius + activeWidth, 0);\n            context.lineTo(0, 0);\n            context.closePath();\n            context.fill();\n          }\n        }\n        seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];\n        context.beginPath();\n        context.setLineWidth(funnelOption.borderWidth * opts.pix);\n        context.setStrokeStyle(funnelOption.borderColor);\n        var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);\n        if (funnelOption.linearType == 'custom') {\n          var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);\n          grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n          grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));\n          grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n          fillColor = grd;\n        }\n        context.setFillStyle(fillColor);\n        context.moveTo(0, 0);\n        context.lineTo(-seriesNew[i].radius, 0);\n        context.lineTo(-seriesNew[i + 1].radius, -eachSpacing);\n        context.lineTo(seriesNew[i + 1].radius, -eachSpacing);\n        context.lineTo(seriesNew[i].radius, 0);\n        context.lineTo(0, 0);\n        context.closePath();\n        context.fill();\n        if (funnelOption.border == true) {\n          context.stroke();\n        }\n      }\n      context.translate(0, -eachSpacing);\n    }\n  } else {\n    context.translate(0, -(seriesNew.length - 1) * eachSpacing);\n    for (var _i31 = 0; _i31 < seriesNew.length; _i31++) {\n      if (_i31 == seriesNew.length - 1) {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == _i31) {\n            context.beginPath();\n            context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));\n            context.moveTo(-activeWidth - funnelOption.minSize / 2, 0);\n            context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);\n            context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);\n            context.lineTo(activeWidth + funnelOption.minSize / 2, 0);\n            context.lineTo(-activeWidth - funnelOption.minSize / 2, 0);\n            context.closePath();\n            context.fill();\n          }\n        }\n        seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing, centerPosition.x + seriesNew[_i31].radius, centerPosition.y];\n        context.beginPath();\n        context.setLineWidth(funnelOption.borderWidth * opts.pix);\n        context.setStrokeStyle(funnelOption.borderColor);\n        var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);\n        if (funnelOption.linearType == 'custom') {\n          var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);\n          grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n          grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));\n          grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n          fillColor = grd;\n        }\n        context.setFillStyle(fillColor);\n        context.moveTo(0, 0);\n        context.lineTo(-funnelOption.minSize / 2, 0);\n        context.lineTo(-seriesNew[_i31].radius, -eachSpacing);\n        context.lineTo(seriesNew[_i31].radius, -eachSpacing);\n        context.lineTo(funnelOption.minSize / 2, 0);\n        context.lineTo(0, 0);\n        context.closePath();\n        context.fill();\n        if (funnelOption.border == true) {\n          context.stroke();\n        }\n      } else {\n        if (opts.tooltip) {\n          if (opts.tooltip.index == _i31) {\n            context.beginPath();\n            context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));\n            context.moveTo(0, 0);\n            context.lineTo(-seriesNew[_i31 + 1].radius - activeWidth, 0);\n            context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);\n            context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);\n            context.lineTo(seriesNew[_i31 + 1].radius + activeWidth, 0);\n            context.lineTo(0, 0);\n            context.closePath();\n            context.fill();\n          }\n        }\n        seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31), centerPosition.x + seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31 - 1)];\n        context.beginPath();\n        context.setLineWidth(funnelOption.borderWidth * opts.pix);\n        context.setStrokeStyle(funnelOption.borderColor);\n        var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);\n        if (funnelOption.linearType == 'custom') {\n          var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);\n          grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n          grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));\n          grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n          fillColor = grd;\n        }\n        context.setFillStyle(fillColor);\n        context.moveTo(0, 0);\n        context.lineTo(-seriesNew[_i31 + 1].radius, 0);\n        context.lineTo(-seriesNew[_i31].radius, -eachSpacing);\n        context.lineTo(seriesNew[_i31].radius, -eachSpacing);\n        context.lineTo(seriesNew[_i31 + 1].radius, 0);\n        context.lineTo(0, 0);\n        context.closePath();\n        context.fill();\n        if (funnelOption.border == true) {\n          context.stroke();\n        }\n      }\n      context.translate(0, eachSpacing);\n    }\n  }\n  context.restore();\n  if (opts.dataLabel !== false && process === 1) {\n    drawFunnelText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);\n  }\n  if (process === 1) {\n    drawFunnelCenterText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);\n  }\n  return {\n    center: centerPosition,\n    radius: radius,\n    series: seriesNew\n  };\n}\nfunction drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    if (item.labelShow === false) {\n      continue;\n    }\n    var startX = void 0,\n      endX = void 0,\n      startY = void 0,\n      fontSize = void 0;\n    var text = item.formatter ? item.formatter(item, i, series, opts) : util.toFixed(item._proportion_ * 100) + '%';\n    text = item.labelText ? item.labelText : text;\n    if (labelAlign == 'right') {\n      if (i == series.length - 1) {\n        startX = (item.funnelArea[2] + centerPosition.x) / 2;\n      } else {\n        startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2;\n      }\n      endX = startX + activeWidth * 2;\n      startY = item.funnelArea[1] + eachSpacing / 2;\n      fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\n      context.setLineWidth(1 * opts.pix);\n      context.setStrokeStyle(item.color);\n      context.setFillStyle(item.color);\n      context.beginPath();\n      context.moveTo(startX, startY);\n      context.lineTo(endX, startY);\n      context.stroke();\n      context.closePath();\n      context.beginPath();\n      context.moveTo(endX, startY);\n      context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI);\n      context.closePath();\n      context.fill();\n      context.beginPath();\n      context.setFontSize(fontSize);\n      context.setFillStyle(item.textColor || opts.fontColor);\n      context.fillText(text, endX + 5, startY + fontSize / 2 - 2);\n      context.closePath();\n      context.stroke();\n      context.closePath();\n    }\n    if (labelAlign == 'left') {\n      if (i == series.length - 1) {\n        startX = (item.funnelArea[0] + centerPosition.x) / 2;\n      } else {\n        startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2;\n      }\n      endX = startX - activeWidth * 2;\n      startY = item.funnelArea[1] + eachSpacing / 2;\n      fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\n      context.setLineWidth(1 * opts.pix);\n      context.setStrokeStyle(item.color);\n      context.setFillStyle(item.color);\n      context.beginPath();\n      context.moveTo(startX, startY);\n      context.lineTo(endX, startY);\n      context.stroke();\n      context.closePath();\n      context.beginPath();\n      context.moveTo(endX, startY);\n      context.arc(endX, startY, 2, 0, 2 * Math.PI);\n      context.closePath();\n      context.fill();\n      context.beginPath();\n      context.setFontSize(fontSize);\n      context.setFillStyle(item.textColor || opts.fontColor);\n      context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2);\n      context.closePath();\n      context.stroke();\n      context.closePath();\n    }\n  }\n}\nfunction drawFunnelCenterText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {\n  for (var i = 0; i < series.length; i++) {\n    var item = series[i];\n    var startY = void 0,\n      fontSize = void 0;\n    if (item.centerText) {\n      startY = item.funnelArea[1] + eachSpacing / 2;\n      fontSize = item.centerTextSize * opts.pix || opts.fontSize * opts.pix;\n      context.beginPath();\n      context.setFontSize(fontSize);\n      context.setFillStyle(item.centerTextColor || \"#FFFFFF\");\n      context.fillText(item.centerText, centerPosition.x - measureText(item.centerText, fontSize, context) / 2, startY + fontSize / 2 - 2);\n      context.closePath();\n      context.stroke();\n      context.closePath();\n    }\n  }\n}\nfunction drawCanvas(opts, context) {\n  context.draw();\n}\nvar Timing = {\n  easeIn: function easeIn(pos) {\n    return Math.pow(pos, 3);\n  },\n  easeOut: function easeOut(pos) {\n    return Math.pow(pos - 1, 3) + 1;\n  },\n  easeInOut: function easeInOut(pos) {\n    if ((pos /= 0.5) < 1) {\n      return 0.5 * Math.pow(pos, 3);\n    } else {\n      return 0.5 * (Math.pow(pos - 2, 3) + 2);\n    }\n  },\n  linear: function linear(pos) {\n    return pos;\n  }\n};\nfunction Animation(opts) {\n  this.isStop = false;\n  opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;\n  opts.timing = opts.timing || 'easeInOut';\n  var delay = 17;\n  function createAnimationFrame() {\n    if (typeof setTimeout !== 'undefined') {\n      return function (step, delay) {\n        setTimeout(function () {\n          var timeStamp = +new Date();\n          step(timeStamp);\n        }, delay);\n      };\n    } else if (typeof requestAnimationFrame !== 'undefined') {\n      return requestAnimationFrame;\n    } else {\n      return function (step) {\n        step(null);\n      };\n    }\n  }\n  ;\n  var animationFrame = createAnimationFrame();\n  var startTimeStamp = null;\n  var _step = function step(timestamp) {\n    if (timestamp === null || this.isStop === true) {\n      opts.onProcess && opts.onProcess(1);\n      opts.onAnimationFinish && opts.onAnimationFinish();\n      return;\n    }\n    if (startTimeStamp === null) {\n      startTimeStamp = timestamp;\n    }\n    if (timestamp - startTimeStamp < opts.duration) {\n      var process = (timestamp - startTimeStamp) / opts.duration;\n      var timingFunction = Timing[opts.timing];\n      process = timingFunction(process);\n      opts.onProcess && opts.onProcess(process);\n      animationFrame(_step, delay);\n    } else {\n      opts.onProcess && opts.onProcess(1);\n      opts.onAnimationFinish && opts.onAnimationFinish();\n    }\n  };\n  _step = _step.bind(this);\n  animationFrame(_step, delay);\n}\nAnimation.prototype.stop = function () {\n  this.isStop = true;\n};\nfunction drawCharts(type, opts, config, context) {\n  var _this2 = this;\n  var _this = this;\n  var series = opts.series;\n  //兼容ECharts饼图类数据格式\n  if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') {\n    series = fixPieSeries(series, opts, config);\n  }\n  var categories = opts.categories;\n  if (type === 'mount') {\n    categories = [];\n    for (var j = 0; j < series.length; j++) {\n      if (series[j].show !== false) categories.push(series[j].name);\n    }\n    opts.categories = categories;\n  }\n  series = fillSeries(series, opts, config);\n  var duration = opts.animation ? opts.duration : 0;\n  _this.animationInstance && _this.animationInstance.stop();\n  var seriesMA = null;\n  if (type == 'candle') {\n    var average = assign({}, opts.extra.candle.average);\n    if (average.show) {\n      seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);\n      seriesMA = fillSeries(seriesMA, opts, config);\n      opts.seriesMA = seriesMA;\n    } else if (opts.seriesMA) {\n      seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);\n    } else {\n      seriesMA = series;\n    }\n  } else {\n    seriesMA = series;\n  }\n  /* 过滤掉show=false的series */\n  opts._series_ = series = filterSeries(series);\n  //重新计算图表区域\n  opts.area = new Array(4);\n  //复位绘图区域\n  for (var _j11 = 0; _j11 < 4; _j11++) {\n    opts.area[_j11] = opts.padding[_j11] * opts.pix;\n  }\n  //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域\n  var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context),\n    legendHeight = _calLegendData.area.wholeHeight,\n    legendWidth = _calLegendData.area.wholeWidth;\n  switch (opts.legend.position) {\n    case 'top':\n      opts.area[0] += legendHeight;\n      break;\n    case 'bottom':\n      opts.area[2] += legendHeight;\n      break;\n    case 'left':\n      opts.area[3] += legendWidth;\n      break;\n    case 'right':\n      opts.area[1] += legendWidth;\n      break;\n  }\n  var _calYAxisData = {},\n    yAxisWidth = 0;\n  if (opts.type === 'line' || opts.type === 'column' || opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\n    _calYAxisData = calYAxisData(series, opts, config, context);\n    yAxisWidth = _calYAxisData.yAxisWidth;\n    //如果显示Y轴标题\n    if (opts.yAxis.showTitle) {\n      var maxTitleHeight = 0;\n      for (var i = 0; i < opts.yAxis.data.length; i++) {\n        maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize);\n      }\n      opts.area[0] += maxTitleHeight;\n    }\n    var rightIndex = 0,\n      leftIndex = 0;\n    //计算主绘图区域左右位置\n    for (var _i32 = 0; _i32 < yAxisWidth.length; _i32++) {\n      if (yAxisWidth[_i32].position == 'left') {\n        if (leftIndex > 0) {\n          opts.area[3] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;\n        } else {\n          opts.area[3] += yAxisWidth[_i32].width;\n        }\n        leftIndex += 1;\n      } else if (yAxisWidth[_i32].position == 'right') {\n        if (rightIndex > 0) {\n          opts.area[1] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;\n        } else {\n          opts.area[1] += yAxisWidth[_i32].width;\n        }\n        rightIndex += 1;\n      }\n    }\n  } else {\n    config.yAxisWidth = yAxisWidth;\n  }\n  opts.chartData.yAxisData = _calYAxisData;\n  if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') {\n    opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);\n    var _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\n      xAxisHeight = _calCategoriesData.xAxisHeight,\n      angle = _calCategoriesData.angle;\n    config.xAxisHeight = xAxisHeight;\n    config._xAxisTextAngle_ = angle;\n    opts.area[2] += xAxisHeight;\n    opts.chartData.categoriesData = _calCategoriesData;\n  } else {\n    if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\n      opts.chartData.xAxisData = calXAxisData(series, opts, config, context);\n      categories = opts.chartData.xAxisData.rangesFormat;\n      var _calCategoriesData2 = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\n        _xAxisHeight = _calCategoriesData2.xAxisHeight,\n        _angle = _calCategoriesData2.angle;\n      config.xAxisHeight = _xAxisHeight;\n      config._xAxisTextAngle_ = _angle;\n      opts.area[2] += _xAxisHeight;\n      opts.chartData.categoriesData = _calCategoriesData2;\n    } else {\n      opts.chartData.xAxisData = {\n        xAxisPoints: []\n      };\n    }\n  }\n\n  //计算右对齐偏移距离\n  if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {\n    var offsetLeft = 0,\n      xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\n      startX = opts.chartData.xAxisData.startX,\n      endX = opts.chartData.xAxisData.endX,\n      eachSpacing = opts.chartData.xAxisData.eachSpacing;\n    var totalWidth = eachSpacing * (xAxisPoints.length - 1);\n    var screenWidth = endX - startX;\n    offsetLeft = screenWidth - totalWidth;\n    _this.scrollOption.currentOffset = offsetLeft;\n    _this.scrollOption.startTouchX = offsetLeft;\n    _this.scrollOption.distance = 0;\n    _this.scrollOption.lastMoveTime = 0;\n    opts._scrollDistance_ = offsetLeft;\n  }\n  if (type === 'pie' || type === 'ring' || type === 'rose') {\n    config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts);\n  }\n  switch (type) {\n    case 'word':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawWordCloudDataPoints(series, opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'map':\n      context.clearRect(0, 0, opts.width, opts.height);\n      drawMapDataPoints(series, opts, config, context);\n      setTimeout(function () {\n        _this2.uevent.trigger('renderComplete');\n      }, 50);\n      break;\n    case 'funnel':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'line':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),\n            xAxisPoints = _drawLineDataPoints.xAxisPoints,\n            calPoints = _drawLineDataPoints.calPoints,\n            eachSpacing = _drawLineDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'scatter':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process),\n            xAxisPoints = _drawScatterDataPoints.xAxisPoints,\n            calPoints = _drawScatterDataPoints.calPoints,\n            eachSpacing = _drawScatterDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'bubble':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process),\n            xAxisPoints = _drawBubbleDataPoints.xAxisPoints,\n            calPoints = _drawBubbleDataPoints.calPoints,\n            eachSpacing = _drawBubbleDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'mix':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),\n            xAxisPoints = _drawMixDataPoints.xAxisPoints,\n            calPoints = _drawMixDataPoints.calPoints,\n            eachSpacing = _drawMixDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'column':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),\n            xAxisPoints = _drawColumnDataPoints.xAxisPoints,\n            calPoints = _drawColumnDataPoints.calPoints,\n            eachSpacing = _drawColumnDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'mount':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process),\n            xAxisPoints = _drawMountDataPoints.xAxisPoints,\n            calPoints = _drawMountDataPoints.calPoints,\n            eachSpacing = _drawMountDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'bar':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawXAxis(categories, opts, config, context);\n          var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process),\n            yAxisPoints = _drawBarDataPoints.yAxisPoints,\n            calPoints = _drawBarDataPoints.calPoints,\n            eachSpacing = _drawBarDataPoints.eachSpacing;\n          opts.chartData.yAxisPoints = yAxisPoints;\n          opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'area':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),\n            xAxisPoints = _drawAreaDataPoints.xAxisPoints,\n            calPoints = _drawAreaDataPoints.calPoints,\n            eachSpacing = _drawAreaDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'ring':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'pie':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'rose':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'radar':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);\n          drawLegend(opts.series, opts, config, context, opts.chartData);\n          drawToolTipBridge(opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'arcbar':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'gauge':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n    case 'candle':\n      this.animationInstance = new Animation({\n        timing: opts.timing,\n        duration: duration,\n        onProcess: function onProcess(process) {\n          context.clearRect(0, 0, opts.width, opts.height);\n          if (opts.rotate) {\n            contextRotate(context, opts);\n          }\n          drawYAxisGrid(categories, opts, config, context);\n          drawXAxis(categories, opts, config, context);\n          var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),\n            xAxisPoints = _drawCandleDataPoints.xAxisPoints,\n            calPoints = _drawCandleDataPoints.calPoints,\n            eachSpacing = _drawCandleDataPoints.eachSpacing;\n          opts.chartData.xAxisPoints = xAxisPoints;\n          opts.chartData.calPoints = calPoints;\n          opts.chartData.eachSpacing = eachSpacing;\n          drawYAxis(series, opts, config, context);\n          if (opts.enableMarkLine !== false && process === 1) {\n            drawMarkLine(opts, config, context);\n          }\n          if (seriesMA) {\n            drawLegend(seriesMA, opts, config, context, opts.chartData);\n          } else {\n            drawLegend(opts.series, opts, config, context, opts.chartData);\n          }\n          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n          drawCanvas(opts, context);\n        },\n        onAnimationFinish: function onAnimationFinish() {\n          _this.uevent.trigger('renderComplete');\n        }\n      });\n      break;\n  }\n}\nfunction uChartsEvent() {\n  this.events = {};\n}\nuChartsEvent.prototype.addEventListener = function (type, listener) {\n  this.events[type] = this.events[type] || [];\n  this.events[type].push(listener);\n};\nuChartsEvent.prototype.delEventListener = function (type) {\n  this.events[type] = [];\n};\nuChartsEvent.prototype.trigger = function () {\n  for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  var type = args[0];\n  var params = args.slice(1);\n  if (!!this.events[type]) {\n    this.events[type].forEach(function (listener) {\n      try {\n        listener.apply(null, params);\n      } catch (e) {\n        //console.log('[uCharts] '+e);\n      }\n    });\n  }\n};\nvar uCharts = function uCharts(opts) {\n  opts.pix = opts.pixelRatio ? opts.pixelRatio : 1;\n  opts.fontSize = opts.fontSize ? opts.fontSize : 13;\n  opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor;\n  if (opts.background == \"\" || opts.background == \"none\") {\n    opts.background = \"#FFFFFF\";\n  }\n  opts.title = assign({}, opts.title);\n  opts.subtitle = assign({}, opts.subtitle);\n  opts.duration = opts.duration ? opts.duration : 1000;\n  opts.yAxis = assign({}, {\n    data: [],\n    showTitle: false,\n    disabled: false,\n    disableGrid: false,\n    gridSet: 'number',\n    splitNumber: 5,\n    gridType: 'solid',\n    dashLength: 4 * opts.pix,\n    gridColor: '#cccccc',\n    padding: 10,\n    fontColor: '#666666'\n  }, opts.yAxis);\n  opts.xAxis = assign({}, {\n    rotateLabel: false,\n    rotateAngle: 45,\n    disabled: false,\n    disableGrid: false,\n    splitNumber: 5,\n    calibration: false,\n    gridType: 'solid',\n    dashLength: 4,\n    scrollAlign: 'left',\n    boundaryGap: 'center',\n    axisLine: true,\n    axisLineColor: '#cccccc'\n  }, opts.xAxis);\n  opts.xAxis.scrollPosition = opts.xAxis.scrollAlign;\n  opts.legend = assign({}, {\n    show: true,\n    position: 'bottom',\n    float: 'center',\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    padding: 5,\n    margin: 5,\n    itemGap: 10,\n    fontSize: opts.fontSize,\n    lineHeight: opts.fontSize,\n    fontColor: opts.fontColor,\n    formatter: {},\n    hiddenColor: '#CECECE'\n  }, opts.legend);\n  opts.extra = assign({}, opts.extra);\n  opts.rotate = opts.rotate ? true : false;\n  opts.animation = opts.animation ? true : false;\n  opts.rotate = opts.rotate ? true : false;\n  opts.canvas2d = opts.canvas2d ? true : false;\n  var config$$1 = assign({}, config);\n  config$$1.color = opts.color ? opts.color : config$$1.color;\n  if (opts.type == 'pie') {\n    config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n  }\n  if (opts.type == 'ring') {\n    config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n  }\n  if (opts.type == 'rose') {\n    config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n  }\n  config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix;\n\n  //屏幕旋转\n  config$$1.rotate = opts.rotate;\n  if (opts.rotate) {\n    var tempWidth = opts.width;\n    var tempHeight = opts.height;\n    opts.width = tempHeight;\n    opts.height = tempWidth;\n  }\n\n  //适配高分屏\n  opts.padding = opts.padding ? opts.padding : config$$1.padding;\n  config$$1.yAxisWidth = config.yAxisWidth * opts.pix;\n  config$$1.xAxisHeight = config.xAxisHeight * opts.pix;\n  if (opts.enableScroll && opts.xAxis.scrollShow) {\n    config$$1.xAxisHeight += 6 * opts.pix;\n  }\n  config$$1.fontSize = opts.fontSize * opts.pix;\n  config$$1.titleFontSize = config.titleFontSize * opts.pix;\n  config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix;\n  config$$1.toolTipPadding = config.toolTipPadding * opts.pix;\n  config$$1.toolTipLineHeight = config.toolTipLineHeight * opts.pix;\n  if (!opts.context) {\n    throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!');\n  }\n  this.context = opts.context;\n  if (!this.context.setTextAlign) {\n    this.context.setStrokeStyle = function (e) {\n      return this.strokeStyle = e;\n    };\n    this.context.setLineWidth = function (e) {\n      return this.lineWidth = e;\n    };\n    this.context.setLineCap = function (e) {\n      return this.lineCap = e;\n    };\n    this.context.setFontSize = function (e) {\n      return this.font = e + \"px sans-serif\";\n    };\n    this.context.setFillStyle = function (e) {\n      return this.fillStyle = e;\n    };\n    this.context.setTextAlign = function (e) {\n      return this.textAlign = e;\n    };\n    this.context.draw = function () {};\n  }\n  //兼容NVUEsetLineDash\n  if (!this.context.setLineDash) {\n    this.context.setLineDash = function (e) {};\n  }\n  opts.chartData = {};\n  this.uevent = new uChartsEvent();\n  this.scrollOption = {\n    currentOffset: 0,\n    startTouchX: 0,\n    distance: 0,\n    lastMoveTime: 0\n  };\n  this.opts = opts;\n  this.config = config$$1;\n  drawCharts.call(this, opts.type, opts, config$$1, this.context);\n};\nuCharts.prototype.updateData = function () {\n  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  this.opts = assign({}, this.opts, data);\n  this.opts.updateData = true;\n  var scrollPosition = data.scrollPosition || 'current';\n  switch (scrollPosition) {\n    case 'current':\n      this.opts._scrollDistance_ = this.scrollOption.currentOffset;\n      break;\n    case 'left':\n      this.opts._scrollDistance_ = 0;\n      this.scrollOption = {\n        currentOffset: 0,\n        startTouchX: 0,\n        distance: 0,\n        lastMoveTime: 0\n      };\n      break;\n    case 'right':\n      var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),\n        yAxisWidth = _calYAxisData.yAxisWidth;\n      this.config.yAxisWidth = yAxisWidth;\n      var offsetLeft = 0;\n      var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n        xAxisPoints = _getXAxisPoints0.xAxisPoints,\n        startX = _getXAxisPoints0.startX,\n        endX = _getXAxisPoints0.endX,\n        eachSpacing = _getXAxisPoints0.eachSpacing;\n      var totalWidth = eachSpacing * (xAxisPoints.length - 1);\n      var screenWidth = endX - startX;\n      offsetLeft = screenWidth - totalWidth;\n      this.scrollOption = {\n        currentOffset: offsetLeft,\n        startTouchX: offsetLeft,\n        distance: 0,\n        lastMoveTime: 0\n      };\n      this.opts._scrollDistance_ = offsetLeft;\n      break;\n  }\n  drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\nuCharts.prototype.zoom = function () {\n  var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;\n  if (this.opts.enableScroll !== true) {\n    __f__(\"log\", '[uCharts] 请启用滚动条后使用', \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:6828\");\n    return;\n  }\n  //当前屏幕中间点\n  var centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2);\n  this.opts.animation = false;\n  this.opts.xAxis.itemCount = val.itemCount;\n  //重新计算x轴偏移距离\n  var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),\n    yAxisWidth = _calYAxisData.yAxisWidth;\n  this.config.yAxisWidth = yAxisWidth;\n  var offsetLeft = 0;\n  var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n    xAxisPoints = _getXAxisPoints0.xAxisPoints,\n    startX = _getXAxisPoints0.startX,\n    endX = _getXAxisPoints0.endX,\n    eachSpacing = _getXAxisPoints0.eachSpacing;\n  var centerLeft = eachSpacing * centerPoint;\n  var screenWidth = endX - startX;\n  var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\n  offsetLeft = screenWidth / 2 - centerLeft;\n  if (offsetLeft > 0) {\n    offsetLeft = 0;\n  }\n  if (offsetLeft < MaxLeft) {\n    offsetLeft = MaxLeft;\n  }\n  this.scrollOption = {\n    currentOffset: offsetLeft,\n    startTouchX: 0,\n    distance: 0,\n    lastMoveTime: 0\n  };\n  calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\n  this.opts._scrollDistance_ = offsetLeft;\n  drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\nuCharts.prototype.dobuleZoom = function (e) {\n  if (this.opts.enableScroll !== true) {\n    __f__(\"log\", '[uCharts] 请启用滚动条后使用', \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:6868\");\n    return;\n  }\n  var tcs = e.changedTouches;\n  if (tcs.length < 2) {\n    return;\n  }\n  for (var i = 0; i < tcs.length; i++) {\n    tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX;\n    tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY;\n  }\n  var ntcs = [getTouches(tcs[0], this.opts, e), getTouches(tcs[1], this.opts, e)];\n  var xlength = Math.abs(ntcs[0].x - ntcs[1].x);\n  // 记录初始的两指之间的数据\n  if (!this.scrollOption.moveCount) {\n    var cts0 = {\n      changedTouches: [{\n        x: tcs[0].x,\n        y: this.opts.area[0] / this.opts.pix + 2\n      }]\n    };\n    var cts1 = {\n      changedTouches: [{\n        x: tcs[1].x,\n        y: this.opts.area[0] / this.opts.pix + 2\n      }]\n    };\n    if (this.opts.rotate) {\n      cts0 = {\n        changedTouches: [{\n          x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,\n          y: tcs[0].y\n        }]\n      };\n      cts1 = {\n        changedTouches: [{\n          x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,\n          y: tcs[1].y\n        }]\n      };\n    }\n    var moveCurrent1 = this.getCurrentDataIndex(cts0).index;\n    var moveCurrent2 = this.getCurrentDataIndex(cts1).index;\n    var moveCount = Math.abs(moveCurrent1 - moveCurrent2);\n    this.scrollOption.moveCount = moveCount;\n    this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2);\n    this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2);\n    return;\n  }\n  var currentEachSpacing = xlength / this.scrollOption.moveCount;\n  var itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing;\n  itemCount = itemCount <= 2 ? 2 : itemCount;\n  itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount;\n  this.opts.animation = false;\n  this.opts.xAxis.itemCount = itemCount;\n  // 重新计算滚动条偏移距离\n  var offsetLeft = 0;\n  var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n    xAxisPoints = _getXAxisPoints0.xAxisPoints,\n    startX = _getXAxisPoints0.startX,\n    endX = _getXAxisPoints0.endX,\n    eachSpacing = _getXAxisPoints0.eachSpacing;\n  var currentLeft = eachSpacing * this.scrollOption.moveCurrent1;\n  var screenWidth = endX - startX;\n  var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\n  offsetLeft = -currentLeft + Math.min(ntcs[0].x, ntcs[1].x) - this.opts.area[3] - eachSpacing;\n  if (offsetLeft > 0) {\n    offsetLeft = 0;\n  }\n  if (offsetLeft < MaxLeft) {\n    offsetLeft = MaxLeft;\n  }\n  this.scrollOption.currentOffset = offsetLeft;\n  this.scrollOption.startTouchX = 0;\n  this.scrollOption.distance = 0;\n  calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\n  this.opts._scrollDistance_ = offsetLeft;\n  drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\nuCharts.prototype.stopAnimation = function () {\n  this.animationInstance && this.animationInstance.stop();\n};\nuCharts.prototype.addEventListener = function (type, listener) {\n  this.uevent.addEventListener(type, listener);\n};\nuCharts.prototype.delEventListener = function (type) {\n  this.uevent.delEventListener(type);\n};\nuCharts.prototype.getCurrentDataIndex = function (e) {\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (touches) {\n    var _touches$ = getTouches(touches, this.opts, e);\n    if (this.opts.type === 'pie' || this.opts.type === 'ring') {\n      return findPieChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y\n      }, this.opts.chartData.pieData, this.opts);\n    } else if (this.opts.type === 'rose') {\n      return findRoseChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y\n      }, this.opts.chartData.pieData, this.opts);\n    } else if (this.opts.type === 'radar') {\n      return findRadarChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y\n      }, this.opts.chartData.radarData, this.opts.categories.length);\n    } else if (this.opts.type === 'funnel') {\n      return findFunnelChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y\n      }, this.opts.chartData.funnelData);\n    } else if (this.opts.type === 'map') {\n      return findMapChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y\n      }, this.opts);\n    } else if (this.opts.type === 'word') {\n      return findWordChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y\n      }, this.opts.chartData.wordCloudData);\n    } else if (this.opts.type === 'bar') {\n      return findBarChartCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y\n      }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\n    } else {\n      return findCurrentIndex({\n        x: _touches$.x,\n        y: _touches$.y\n      }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\n    }\n  }\n  return -1;\n};\nuCharts.prototype.getLegendDataIndex = function (e) {\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (touches) {\n    var _touches$ = getTouches(touches, this.opts, e);\n    return findLegendIndex({\n      x: _touches$.x,\n      y: _touches$.y\n    }, this.opts.chartData.legendData);\n  }\n  return -1;\n};\nuCharts.prototype.touchLegend = function (e) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (touches) {\n    var _touches$ = getTouches(touches, this.opts, e);\n    var index = this.getLegendDataIndex(e);\n    if (index >= 0) {\n      if (this.opts.type == 'candle') {\n        this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show;\n      } else {\n        this.opts.series[index].show = !this.opts.series[index].show;\n      }\n      this.opts.animation = option.animation ? true : false;\n      this.opts._scrollDistance_ = this.scrollOption.currentOffset;\n      drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n    }\n  }\n};\nuCharts.prototype.showToolTip = function (e) {\n  var _this3 = this;\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (!touches) {\n    __f__(\"log\", \"[uCharts] 未获取到event坐标信息\", \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:7046\");\n  }\n  var _touches$ = getTouches(touches, this.opts, e);\n  var currentOffset = this.scrollOption.currentOffset;\n  var opts = assign({}, this.opts, {\n    _scrollDistance_: currentOffset,\n    animation: false\n  });\n  if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') {\n    var current = this.getCurrentDataIndex(e);\n    var index = option.index == undefined ? current.index : option.index;\n    if (index > -1 || index.length > 0) {\n      var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\n      if (seriesData.length !== 0) {\n        var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\n          textList = _getToolTipData.textList,\n          offset = _getToolTipData.offset;\n        offset.y = _touches$.y;\n        opts.tooltip = {\n          textList: option.textList !== undefined ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index\n        };\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'mount') {\n    var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index;\n    if (index > -1) {\n      var opts = assign({}, this.opts, {\n        animation: false\n      });\n      var seriesData = assign({}, opts._series_[index]);\n      var textList = [{\n        text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\n        color: seriesData.color\n      }];\n      var offset = {\n        x: opts.chartData.calPoints[index].x,\n        y: _touches$.y\n      };\n      opts.tooltip = {\n        textList: option.textList ? option.textList : textList,\n        offset: option.offset !== undefined ? option.offset : offset,\n        option: option,\n        index: index\n      };\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'bar') {\n    var current = this.getCurrentDataIndex(e);\n    var index = option.index == undefined ? current.index : option.index;\n    if (index > -1 || index.length > 0) {\n      var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\n      if (seriesData.length !== 0) {\n        var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\n          textList = _getToolTipData.textList,\n          offset = _getToolTipData.offset;\n        offset.x = _touches$.x;\n        opts.tooltip = {\n          textList: option.textList !== undefined ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index\n        };\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'mix') {\n    var current = this.getCurrentDataIndex(e);\n    var index = option.index == undefined ? current.index : option.index;\n    if (index > -1) {\n      var currentOffset = this.scrollOption.currentOffset;\n      var opts = assign({}, this.opts, {\n        _scrollDistance_: currentOffset,\n        animation: false\n      });\n      var seriesData = getSeriesDataItem(this.opts.series, index);\n      if (seriesData.length !== 0) {\n        var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option),\n          textList = _getMixToolTipData.textList,\n          offset = _getMixToolTipData.offset;\n        offset.y = _touches$.y;\n        opts.tooltip = {\n          textList: option.textList ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index\n        };\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'candle') {\n    var current = this.getCurrentDataIndex(e);\n    var index = option.index == undefined ? current.index : option.index;\n    if (index > -1) {\n      var currentOffset = this.scrollOption.currentOffset;\n      var opts = assign({}, this.opts, {\n        _scrollDistance_: currentOffset,\n        animation: false\n      });\n      var seriesData = getSeriesDataItem(this.opts.series, index);\n      if (seriesData.length !== 0) {\n        var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option),\n          textList = _getToolTipData.textList,\n          offset = _getToolTipData.offset;\n        offset.y = _touches$.y;\n        opts.tooltip = {\n          textList: option.textList ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index\n        };\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') {\n    var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n    if (index > -1) {\n      var opts = assign({}, this.opts, {\n        animation: false\n      });\n      var seriesData = assign({}, opts._series_[index]);\n      var textList = [{\n        text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\n        color: seriesData.color\n      }];\n      var offset = {\n        x: _touches$.x,\n        y: _touches$.y\n      };\n      opts.tooltip = {\n        textList: option.textList ? option.textList : textList,\n        offset: option.offset !== undefined ? option.offset : offset,\n        option: option,\n        index: index\n      };\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'map') {\n    var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n    if (index > -1) {\n      var opts = assign({}, this.opts, {\n        animation: false\n      });\n      var seriesData = assign({}, this.opts.series[index]);\n      seriesData.name = seriesData.properties.name;\n      var textList = [{\n        text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\n        color: seriesData.color\n      }];\n      var offset = {\n        x: _touches$.x,\n        y: _touches$.y\n      };\n      opts.tooltip = {\n        textList: option.textList ? option.textList : textList,\n        offset: option.offset !== undefined ? option.offset : offset,\n        option: option,\n        index: index\n      };\n    }\n    opts.updateData = false;\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'word') {\n    var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n    if (index > -1) {\n      var opts = assign({}, this.opts, {\n        animation: false\n      });\n      var seriesData = assign({}, this.opts.series[index]);\n      var textList = [{\n        text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\n        color: seriesData.color\n      }];\n      var offset = {\n        x: _touches$.x,\n        y: _touches$.y\n      };\n      opts.tooltip = {\n        textList: option.textList ? option.textList : textList,\n        offset: option.offset !== undefined ? option.offset : offset,\n        option: option,\n        index: index\n      };\n    }\n    opts.updateData = false;\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n  if (this.opts.type === 'radar') {\n    var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n    if (index > -1) {\n      var opts = assign({}, this.opts, {\n        animation: false\n      });\n      var seriesData = getSeriesDataItem(this.opts.series, index);\n      if (seriesData.length !== 0) {\n        var textList = seriesData.map(function (item) {\n          return {\n            text: option.formatter ? option.formatter(item, _this3.opts.categories[index], index, _this3.opts) : item.name + ': ' + item.data,\n            color: item.color\n          };\n        });\n        var offset = {\n          x: _touches$.x,\n          y: _touches$.y\n        };\n        opts.tooltip = {\n          textList: option.textList ? option.textList : textList,\n          offset: option.offset !== undefined ? option.offset : offset,\n          option: option,\n          index: index\n        };\n      }\n    }\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n  }\n};\nuCharts.prototype.translate = function (distance) {\n  this.scrollOption = {\n    currentOffset: distance,\n    startTouchX: distance,\n    distance: 0,\n    lastMoveTime: 0\n  };\n  var opts = assign({}, this.opts, {\n    _scrollDistance_: distance,\n    animation: false\n  });\n  drawCharts.call(this, this.opts.type, opts, this.config, this.context);\n};\nuCharts.prototype.scrollStart = function (e) {\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  var _touches$ = getTouches(touches, this.opts, e);\n  if (touches && this.opts.enableScroll === true) {\n    this.scrollOption.startTouchX = _touches$.x;\n  }\n};\nuCharts.prototype.scroll = function (e) {\n  if (this.scrollOption.lastMoveTime === 0) {\n    this.scrollOption.lastMoveTime = Date.now();\n  }\n  var Limit = this.opts.touchMoveLimit || 60;\n  var currMoveTime = Date.now();\n  var duration = currMoveTime - this.scrollOption.lastMoveTime;\n  if (duration < Math.floor(1000 / Limit)) return;\n  if (this.scrollOption.startTouchX == 0) return;\n  this.scrollOption.lastMoveTime = currMoveTime;\n  var touches = null;\n  if (e.changedTouches) {\n    touches = e.changedTouches[0];\n  } else {\n    touches = e.mp.changedTouches[0];\n  }\n  if (touches && this.opts.enableScroll === true) {\n    var _touches$ = getTouches(touches, this.opts, e);\n    var _distance;\n    _distance = _touches$.x - this.scrollOption.startTouchX;\n    var currentOffset = this.scrollOption.currentOffset;\n    var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts);\n    this.scrollOption.distance = _distance = validDistance - currentOffset;\n    var opts = assign({}, this.opts, {\n      _scrollDistance_: currentOffset + _distance,\n      animation: false\n    });\n    this.opts = opts;\n    drawCharts.call(this, opts.type, opts, this.config, this.context);\n    return currentOffset + _distance;\n  }\n};\nuCharts.prototype.scrollEnd = function (e) {\n  if (this.opts.enableScroll === true) {\n    var _scrollOption = this.scrollOption,\n      currentOffset = _scrollOption.currentOffset,\n      distance = _scrollOption.distance;\n    this.scrollOption.currentOffset = currentOffset + distance;\n    this.scrollOption.distance = 0;\n    this.scrollOption.moveCount = 0;\n  }\n};\nvar _default = uCharts;\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvdS1jaGFydHMuanMiXSwibmFtZXMiOlsiY29uZmlnIiwidmVyc2lvbiIsInlBeGlzV2lkdGgiLCJ4QXhpc0hlaWdodCIsInhBeGlzVGV4dFBhZGRpbmciLCJwYWRkaW5nIiwicGl4ZWxSYXRpbyIsInJvdGF0ZSIsImZvbnRTaXplIiwiZm9udENvbG9yIiwiZGF0YVBvaW50U2hhcGUiLCJjb2xvciIsImxpbmVhckNvbG9yIiwicGllQ2hhcnRMaW5lUGFkZGluZyIsInBpZUNoYXJ0VGV4dFBhZGRpbmciLCJ0aXRsZUZvbnRTaXplIiwic3VidGl0bGVGb250U2l6ZSIsInRvb2xUaXBQYWRkaW5nIiwidG9vbFRpcEJhY2tncm91bmQiLCJ0b29sVGlwT3BhY2l0eSIsInRvb2xUaXBMaW5lSGVpZ2h0IiwicmFkYXJMYWJlbFRleHRNYXJnaW4iLCJhc3NpZ24iLCJ0YXJnZXQiLCJ2YXJBcmdzIiwiVHlwZUVycm9yIiwibGVuZ3RoIiwiZGVlcEFzc2lnbiIsIm9iajEiLCJvYmoyIiwia2V5IiwidG9TdHJpbmciLCJmb3JFYWNoIiwidmFsIiwidXRpbCIsInRvRml4ZWQiLCJudW0iLCJsaW1pdCIsImlzRmxvYXQiLCJhcHByb3hpbWF0ZWx5RXF1YWwiLCJudW0xIiwibnVtMiIsIk1hdGgiLCJhYnMiLCJpc1NhbWVTaWduIiwiaXNTYW1lWENvb3JkaW5hdGVBcmVhIiwicDEiLCJwMiIsIngiLCJpc0NvbGxpc2lvbiIsImVuZCIsInN0YXJ0Iiwid2lkdGgiLCJ5IiwiaGVpZ2h0IiwiZmxhZyIsImdldEg1T2Zmc2V0IiwiZSIsIm1wIiwiY2hhbmdlZFRvdWNoZXMiLCJwdXNoIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJoZXhUb1JnYiIsImhleFZhbHVlIiwib3BjIiwicmd4IiwiaGV4IiwicmVwbGFjZSIsIm0iLCJyIiwiZyIsImIiLCJyZ2IiLCJleGVjIiwicGFyc2VJbnQiLCJmaW5kUmFuZ2UiLCJ0eXBlIiwiaXNOYU4iLCJFcnJvciIsIm11bHRpcGxlIiwiY2VpbCIsImZsb29yIiwiY2FsQ2FuZGxlTUEiLCJkYXlBcnIiLCJuYW1lQXJyIiwiY29sb3JBcnIiLCJrZGF0YSIsInNlcmllc1RlbXAiLCJrIiwic2VyaWVzSXRlbSIsImRhdGEiLCJuYW1lIiwiaSIsImxlbiIsInN1bSIsImoiLCJjYWxWYWxpZERpc3RhbmNlIiwic2VsZiIsImRpc3RhbmNlIiwiY2hhcnREYXRhIiwib3B0cyIsImRhdGFDaGFydEFyZWFXaWR0aCIsImFyZWEiLCJkYXRhQ2hhcnRXaWR0aCIsImVhY2hTcGFjaW5nIiwieEF4aXNEYXRhIiwieEF4aXNQb2ludHMiLCJleHRyYSIsIm1vdW50Iiwid2lkdGhSYXRpbyIsInZhbGlkRGlzdGFuY2UiLCJ1ZXZlbnQiLCJ0cmlnZ2VyIiwic2Nyb2xsT3B0aW9uIiwicG9zaXRpb24iLCJ4QXhpcyIsInNjcm9sbFBvc2l0aW9uIiwiaXNJbkFuZ2xlUmFuZ2UiLCJhbmdsZSIsInN0YXJ0QW5nbGUiLCJlbmRBbmdsZSIsImFkanVzdCIsIlBJIiwiY3JlYXRlQ3VydmVDb250cm9sUG9pbnRzIiwicG9pbnRzIiwiaXNOb3RNaWRkbGVQb2ludCIsIm1heCIsIm1pbiIsImlzTm90TWlkZGxlUG9pbnRYIiwiYSIsInBBeCIsInBBeSIsInBCeCIsInBCeSIsImxhc3QiLCJjdHJBIiwiY3RyQiIsImNvbnZlcnRDb29yZGluYXRlT3JpZ2luIiwiY2VudGVyIiwiYXZvaWRDb2xsaXNpb24iLCJvYmoiLCJmaXhQaWVTZXJpZXMiLCJzZXJpZXMiLCJwaWVTZXJpZXNBcnIiLCJjb25zdHJ1Y3RvciIsImluZGV4T2YiLCJfcGllU2VyaWVzXyIsIm9sZHNlcmllcyIsImZvcm1hdHRlciIsInZhbHVlIiwiZmlsbFNlcmllcyIsImluZGV4IiwiaXRlbSIsImxpbmVhckluZGV4Iiwic2hvdyIsInBvaW50U2hhcGUiLCJsZWdlbmRTaGFwZSIsImZpbGxDdXN0b21Db2xvciIsImxpbmVhclR5cGUiLCJjdXN0b21Db2xvciIsIm5ld2NvbG9yIiwiY2hhemhpIiwiZ2V0RGF0YVJhbmdlIiwibWluRGF0YSIsIm1heERhdGEiLCJyYW5nZSIsIm1pblJhbmdlIiwibWF4UmFuZ2UiLCJtZWFzdXJlVGV4dCIsInRleHQiLCJjb250ZXh0IiwiU3RyaW5nIiwidW5kZWZpbmVkIiwic2V0Rm9udFNpemUiLCJzcGxpdCIsInRlc3QiLCJkYXRhQ29tYmluZSIsInJlZHVjZSIsImNvbmNhdCIsImRhdGFDb21iaW5lU3RhY2siLCJBcnJheSIsImdldFRvdWNoZXMiLCJ0b3VjaGVzIiwiY2xpZW50WCIsInBpeCIsInBhZ2VZIiwiY3VycmVudFRhcmdldCIsIm9mZnNldFRvcCIsImdldFNlcmllc0RhdGFJdGVtIiwiZ3JvdXAiLCJuZXdTZXJpZXMiLCJpbmRleElzQXJyIiwidGVtcFNlcmllcyIsImZpbHRlclNlcmllcyIsInRtcGluZGV4Iiwic3R5bGUiLCJkaXNhYmxlTGVnZW5kIiwiZ2V0TWF4VGV4dExpc3RMZW5ndGgiLCJsaXN0IiwibGVuZ3RoTGlzdCIsIm1hcCIsImFwcGx5IiwiZ2V0UmFkYXJDb29yZGluYXRlU2VyaWVzIiwiZWFjaEFuZ2xlIiwiQ29vcmRpbmF0ZVNlcmllcyIsImdldFRvb2xUaXBEYXRhIiwic2VyaWVzRGF0YSIsImNhdGVnb3JpZXMiLCJvcHRpb24iLCJhcmd1bWVudHMiLCJjYWxQb2ludHMiLCJmaWx0ZXJQb2ludHMiLCJ0ZXh0TGlzdCIsInRpdGxlVGV4dCIsIm9mZnNldCIsInJvdW5kIiwiZ2V0TWl4VG9vbFRpcERhdGEiLCJmaWx0ZXIiLCJnZXRDYW5kbGVUb29sVGlwRGF0YSIsInVwQ29sb3IiLCJ1cEZpbGwiLCJkb3duQ29sb3IiLCJkb3duRmlsbCIsInRleHQxIiwidGV4dDIiLCJ0ZXh0MyIsInRleHQ0IiwidmFsaWRDYWxQb2ludHMiLCJmaW5kQ3VycmVudEluZGV4IiwiY3VycmVudFBvaW50cyIsImN1cnJlbnQiLCJzcGFjaW5nIiwiYm91bmRhcnlHYXAiLCJpc0luRXhhY3RDaGFydEFyZWEiLCJ0aW1lUG9pbnRzIiwicG9pbnRWYWx1ZSIsInBvaW50SW5kZXgiLCJtaW5WYWx1ZSIsImZpbmRCYXJDaGFydEN1cnJlbnRJbmRleCIsInlBeGlzUG9pbnRzIiwiZmluZExlZ2VuZEluZGV4IiwibGVnZW5kRGF0YSIsImN1cnJlbnRJbmRleCIsImdhcCIsImlzSW5FeGFjdExlZ2VuZEFyZWEiLCJmaW5kUmFkYXJDaGFydEN1cnJlbnRJbmRleCIsInJhZGFyRGF0YSIsImNvdW50IiwiZWFjaEFuZ2xlQXJlYSIsImlzSW5FeGFjdFBpZUNoYXJ0QXJlYSIsInJhZGl1cyIsImZpeEFuZ2xlIiwiYXRhbjIiLCJhbmdsZUxpc3QiLCJyYW5nZVN0YXJ0IiwicmFuZ2VFbmQiLCJmaW5kRnVubmVsQ2hhcnRDdXJyZW50SW5kZXgiLCJmdW5uZWxEYXRhIiwiZnVubmVsQXJlYSIsImZpbmRXb3JkQ2hhcnRDdXJyZW50SW5kZXgiLCJ3b3JkRGF0YSIsImZpbmRNYXBDaGFydEN1cnJlbnRJbmRleCIsImNEYXRhIiwibWFwRGF0YSIsInRtcCIsInBvaW50VG9Db29yZGluYXRlIiwiYm91bmRzIiwic2NhbGUiLCJ4b2Zmc2V0IiwieW9mZnNldCIsInBvaSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJpc1BvaVdpdGhpblBvbHkiLCJtZXJjYXRvciIsImZpbmRSb3NlQ2hhcnRDdXJyZW50SW5kZXgiLCJwaWVEYXRhIiwiZ2V0Um9zZURhdGFQb2ludHMiLCJfc2VyaWVzXyIsInJvc2UiLCJvZmZzZXRBbmdsZSIsIl9zdGFydF8iLCJfcm9zZV9wcm9wb3J0aW9uXyIsImZpbmRQaWVDaGFydEN1cnJlbnRJbmRleCIsImdldFBpZURhdGFQb2ludHMiLCJwaWUiLCJyaW5nIiwiX3Byb3BvcnRpb25fIiwicG93Iiwic3BsaXRQb2ludHMiLCJlYWNoU2VyaWVzIiwibmV3UG9pbnRzIiwiaXRlbXMiLCJjb25uZWN0TnVsbHMiLCJjYWxMZWdlbmREYXRhIiwid2hvbGVXaWR0aCIsIndob2xlSGVpZ2h0Iiwid2lkdGhBcnIiLCJoZWlnaHRBcnIiLCJsZWdlbmQiLCJtYXJnaW4iLCJzaGFwZVdpZHRoIiwic2hhcGVSaWdodCIsImxpbmVIZWlnaHQiLCJsZWdlbmRMaXN0Iiwid2lkdGhDb3VudCIsIndpZHRoQ291bnRBcnIiLCJjdXJyZW50Um93IiwibGVnZW5kVGV4dCIsIml0ZW1XaWR0aCIsIml0ZW1HYXAiLCJsZWdlbmRXaWR0aCIsImZsb2F0IiwibWF4SGVpZ2h0IiwibWF4TGVuZ3RoIiwibGluZU51bSIsInRlbXAiLCJzbGljZSIsIm1heFdpZHRoIiwiY2FsQ2F0ZWdvcmllc0RhdGEiLCJyZXN1bHQiLCJjYXRlZ29yaWVzVGV4dExlbnRoIiwieGl0ZW0iLCJtYXhUZXh0TGVuZ3RoIiwicm90YXRlTGFiZWwiLCJyb3RhdGVBbmdsZSIsInRlbXBIZWlnaHQiLCJzaW4iLCJlbmFibGVTY3JvbGwiLCJzY3JvbGxTaG93IiwiZGlzYWJsZWQiLCJnZXRYQXhpc1RleHRMaXN0Iiwic3RhY2siLCJzb3J0ZWQiLCJzdWJpdGVtIiwicmFuZ2VTcGFuIiwiZWFjaFJhbmdlIiwic3BsaXROdW1iZXIiLCJjYWxYQXhpc0RhdGEiLCJjb2x1bW5zdHlsZSIsImJhciIsInJhbmdlcyIsInJhbmdlc0Zvcm1hdCIsInhBeGlzU2NhbGVWYWx1ZXMiLCJPYmplY3QiLCJnZXRYQXhpc1BvaW50cyIsInRleHRMZW5ndGgiLCJnZXRSYWRhckRhdGFQb2ludHMiLCJwcm9jZXNzIiwicmFkYXJPcHRpb24iLCJyYWRhciIsImVhY2giLCJsaXN0SXRlbSIsInByb3BvcnRpb24iLCJjb3MiLCJfcmFkaXVzXyIsImdldEZ1bm5lbERhdGFQb2ludHMiLCJtaW5SYWRpdXMiLCJkYXRhQXJyIiwicmFkaXVzTGVuZ3RoIiwiZ2V0QXJjYmFyRGF0YVBvaW50cyIsImFyY2Jhck9wdGlvbiIsInRvdGFsQW5nbGUiLCJkaXJlY3Rpb24iLCJnZXRHYXVnZUFyY2JhckRhdGFQb2ludHMiLCJnZXRHYXVnZUF4aXNQb2ludHMiLCJ0ZW1wU3RhcnRBbmdsZSIsIl9zdGFydEFuZ2xlXyIsIl9lbmRBbmdsZV8iLCJnZXRHYXVnZURhdGFQb2ludHMiLCJnYXVnZU9wdGlvbiIsInBvaW50ZXIiLCJfb2xkQW5nbGVfIiwib2xkQW5nbGUiLCJvbGREYXRhIiwiZ2V0UGllVGV4dE1heExlbmd0aCIsInRleHRTaXplIiwiZml4Q29sdW1lRGF0YSIsImNvbHVtbkxlbiIsInNlcmllc0dhcCIsImNhdGVnb3J5R2FwIiwibWl4IiwiY29sdW1uIiwiZml4QmFyRGF0YSIsImZpeENvbHVtZU1ldGVyRGF0YSIsImJvcmRlciIsImZpeENvbHVtZVN0YWNrRGF0YSIsImluZGV4biIsImZpeEJhclN0YWNrRGF0YSIsInNwYWNpbmdWYWxpZCIsImRhdGFDb3VudCIsIml0ZW1Db3VudCIsInN0YXJ0WCIsImVuZFgiLCJnZXRDYW5kbGVEYXRhUG9pbnRzIiwidmFsaWRIZWlnaHQiLCJjUG9pbnRzIiwiaW5kZXhzIiwicG9pbnQiLCJnZXREYXRhUG9pbnRzIiwidmFsaWRXaWR0aCIsInhyYW5nZXMiLCJ4bWluUmFuZ2UiLCJ4bWF4UmFuZ2UiLCJzaGlmdCIsInBvcCIsInQiLCJnZXRNb3VudERhdGFQb2ludHMiLCJtb3VudE9wdGlvbiIsIm1vdW50V2lkdGgiLCJnZXRCYXJEYXRhUG9pbnRzIiwiZ2V0U3RhY2tEYXRhUG9pbnRzIiwic2VyaWVzSW5kZXgiLCJzdGFja1NlcmllcyIsInZhbHVlMCIsImhlaWdodDAiLCJoZWlnaHRjIiwieTAiLCJnZXRCYXJTdGFja0RhdGFQb2ludHMiLCJ4MCIsImdldFlBeGlzVGV4dExpc3QiLCJ5RGF0YSIsImRhdGFSYW5nZSIsInlBeGlzIiwicmV2ZXJzZSIsImNhbFlBeGlzRGF0YSIsIllMZW5ndGgiLCJyYW5nZXNBcnIiLCJyYW5nZXNGb3JtYXRBcnIiLCJ5QXhpc1dpZHRoQXJyIiwidW5pdCIsInRvZml4IiwieUF4aXNGb250U2l6ZXMiLCJjYWxpYnJhdGlvbiIsInlBeGlzRm9udFNpemUiLCJjYWxUb29sdGlwWUF4aXNEYXRhIiwieUF4aXNEYXRhIiwibWluQXhpcyIsIm1heFZhbCIsIm1pblZhbCIsImNhbE1hcmtMaW5lRGF0YSIsInlBeGlzSW5kZXgiLCJjb250ZXh0Um90YXRlIiwicm90YXRlTG9jayIsInRyYW5zbGF0ZSIsIl9yb3RhdGVfIiwiZHJhd1BvaW50U2hhcGUiLCJzaGFwZSIsImJlZ2luUGF0aCIsImRhdGFQb2ludFNoYXBlVHlwZSIsInNldFN0cm9rZVN0eWxlIiwic2V0RmlsbFN0eWxlIiwiYmFja2dyb3VuZCIsInNldExpbmVXaWR0aCIsIm1vdmVUbyIsImxpbmVUbyIsImFyYyIsInJlY3QiLCJjbG9zZVBhdGgiLCJmaWxsIiwic3Ryb2tlIiwiZHJhd1JpbmdUaXRsZSIsInRpdGxlZm9udFNpemUiLCJ0aXRsZSIsInN1YnRpdGxlZm9udFNpemUiLCJzdWJ0aXRsZSIsInRpdGxlRm9udENvbG9yIiwic3VidGl0bGVGb250Q29sb3IiLCJ0aXRsZUhlaWdodCIsInN1YnRpdGxlSGVpZ2h0IiwidGV4dFdpZHRoIiwic3RhcnRZIiwiZmlsbFRleHQiLCJfdGV4dFdpZHRoIiwiX3N0YXJ0WCIsIl9zdGFydFkiLCJkcmF3UG9pbnRUZXh0IiwidGV4dE9mZnNldCIsInRleHRDb2xvciIsImZvcm1hdFZhbCIsInNldFRleHRBbGlnbiIsImRyYXdNb3VudFBvaW50VGV4dCIsImRyYXdCYXJQb2ludFRleHQiLCJkcmF3R2F1Z2VMYWJlbCIsImNlbnRlclBvc2l0aW9uIiwibGFiZWxPZmZzZXQiLCJzcGxpdEFuZ2xlIiwic3BsaXRMaW5lIiwidG90YWxOdW1iZXIiLCJlbmROdW1iZXIiLCJzdGFydE51bWJlciIsIm5vd0FuZ2xlIiwibm93TnVtYmVyIiwicG9zIiwibGFiZWxUZXh0IiwibGFiZWxDb2xvciIsImRyYXdSYWRhckxhYmVsIiwibGFiZWxQb2ludFNob3ciLCJwb3NQb2ludCIsInBvc1BvaW50QXhpcyIsImxhYmVsUG9pbnRDb2xvciIsImxhYmVsUG9pbnRSYWRpdXMiLCJwb3NSZWxhdGl2ZUNhbnZhcyIsImRyYXdQaWVUZXh0IiwibGluZVJhZGl1cyIsInRleHRPYmplY3RDb2xsZWN0aW9uIiwibGFzdFRleHRPYmplY3QiLCJzZXJpZXNDb252ZXJ0IiwibGFiZWxTaG93Iiwib3JnaW5YMSIsIm9yZ2luWTEiLCJvcmdpblgyIiwib3JnaW5ZMiIsIm9yZ2luWDMiLCJvcmdpblkzIiwidGV4dE9iamVjdCIsImxpbmVTdGFydCIsImxpbmVFbmQiLCJsaW5lU3RhcnRQb2lzdGlvbiIsImxpbmVFbmRQb2lzdGlvbiIsInRleHRQb3NpdGlvbiIsImN1cnZlU3RhcnRYIiwidGV4dFN0YXJ0WCIsInF1YWRyYXRpY0N1cnZlVG8iLCJkcmF3VG9vbFRpcFNwbGl0TGluZSIsInRvb2xUaXBPcHRpb24iLCJ0b29sdGlwIiwiZ3JpZFR5cGUiLCJkYXNoTGVuZ3RoIiwiZW5kWSIsInNldExpbmVEYXNoIiwiZ3JpZENvbG9yIiwieEF4aXNMYWJlbCIsInRleHRYIiwidGV4dFkiLCJsYWJlbEJnQ29sb3IiLCJsYWJlbEJnT3BhY2l0eSIsImxhYmVsRm9udENvbG9yIiwiZHJhd01hcmtMaW5lIiwibWFya0xpbmVPcHRpb24iLCJtYXJrTGluZSIsImxpbmVDb2xvciIsInNob3dMYWJlbCIsImxhYmVsQWxpZ24iLCJsYWJlbE9mZnNldFgiLCJsYWJlbE9mZnNldFkiLCJiZ1dpZHRoIiwiYmdTdGFydFgiLCJiZ1N0YXJ0WSIsImRyYXdUb29sVGlwSG9yaXplbnRhbExpbmUiLCJ5QXhpc0xhYmVsIiwidFN0YXJ0TGVmdCIsInRTdGFydFJpZ2h0IiwiYmdFbmRYIiwiZHJhd1Rvb2xUaXBTcGxpdEFyZWEiLCJhY3RpdmVCZ0NvbG9yIiwiYWN0aXZlQmdPcGFjaXR5IiwiYWN0aXZlV2lkdGgiLCJkcmF3QmFyVG9vbFRpcFNwbGl0QXJlYSIsImRyYXdUb29sVGlwIiwic2hvd0JveCIsInNob3dBcnJvdyIsInNob3dDYXRlZ29yeSIsImJnQ29sb3IiLCJiZ09wYWNpdHkiLCJib3JkZXJDb2xvciIsImJvcmRlcldpZHRoIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyT3BhY2l0eSIsInVuc2hpZnQiLCJsZWdlbmRNYXJnaW5SaWdodCIsImFycm93V2lkdGgiLCJpc092ZXJSaWdodEJvcmRlciIsInRvb2xUaXBXaWR0aCIsInRvb2xUaXBIZWlnaHQiLCJfc2Nyb2xsRGlzdGFuY2VfIiwiZmlsbFJlY3QiLCJkcmF3Q29sdW1uRGF0YVBvaW50cyIsImNvbHVtbk9wdGlvbiIsIm1ldGVyQm9yZGVyIiwibWV0ZXJGaWxsQ29sb3IiLCJiYXJCb3JkZXJDaXJjbGUiLCJiYXJCb3JkZXJSYWRpdXMiLCJsaW5lYXJPcGFjaXR5IiwiY29sb3JTdG9wIiwic2F2ZSIsImxlZnROdW0iLCJyaWdodE51bSIsInRvb2x0aXBQb2ludHMiLCJmaWxsQ29sb3IiLCJzdHJva2VDb2xvciIsImdyZCIsImNyZWF0ZUxpbmVhckdyYWRpZW50IiwiYWRkQ29sb3JTdG9wIiwibGVmdCIsInRvcCIsInIwIiwicjEiLCJyMiIsInIzIiwiZGF0YUxhYmVsIiwicmVzdG9yZSIsImRyYXdNb3VudERhdGFQb2ludHMiLCJiZXppZXJDdXJ2ZVRvIiwiZHJhd0JhckRhdGFQb2ludHMiLCJkcmF3Q2FuZGxlRGF0YVBvaW50cyIsInNlcmllc01BIiwiY2FuZGxlT3B0aW9uIiwiYXZlcmFnZSIsImNhbmRsZSIsInVwTGluZSIsImRvd25MaW5lIiwiZGF5IiwibGVmdFNwYWNlIiwicmlnaHRTcGFjZSIsInNwbGl0UG9pbnRMaXN0Iiwic3RhcnRQb2ludCIsImN0cmxQb2ludCIsImRyYXdBcmVhRGF0YVBvaW50cyIsImFyZWFPcHRpb24iLCJvcGFjaXR5IiwiYWRkTGluZSIsImdyYWRpZW50IiwiZmlyc3RQb2ludCIsImxhc3RQb2ludCIsImxpbmVUeXBlIiwiZHJhd1NjYXR0ZXJEYXRhUG9pbnRzIiwic2NhdHRlck9wdGlvbiIsInNjYXR0ZXIiLCJkcmF3QnViYmxlRGF0YVBvaW50cyIsImJ1YmJsZU9wdGlvbiIsImJ1YmJsZSIsImRyYXdMaW5lRGF0YVBvaW50cyIsImxpbmVPcHRpb24iLCJsaW5lIiwiZHJhd01peERhdGFQb2ludHMiLCJjb2x1bW5JbmRleCIsImNvbHVtbkxlbmd0aCIsImFkZFBvaW50IiwiZHJhd1Rvb2xUaXBCcmlkZ2UiLCJob3JpemVudGFsTGluZSIsImRyYXdYQXhpcyIsInNjcm9sbFkiLCJzY3JvbGxTY3JlZW5XaWR0aCIsInNjcm9sbFRvdGFsV2lkdGgiLCJzY3JvbGxXaWR0aCIsInNjcm9sbExlZnQiLCJzZXRMaW5lQ2FwIiwic2Nyb2xsQmFja2dyb3VuZENvbG9yIiwic2Nyb2xsQ29sb3IiLCJkaXNhYmxlR3JpZCIsImdyaWRFdmFsIiwibWF4WEF4aXNMaXN0TGVuZ3RoIiwibGFiZWxDb3VudCIsInJhdGlvIiwibmV3Q2F0ZWdvcmllcyIsImNnTGVuZ3RoIiwieEF4aXNGb250U2l6ZSIsIl94QXhpc1RleHRBbmdsZV8iLCJzY3JvbGxIZWlnaHQiLCJ0cnVlUG9pbnRzIiwiYXhpc0xpbmUiLCJheGlzTGluZUNvbG9yIiwiZHJhd1lBeGlzR3JpZCIsInhBeGlzZWFjaFNwYWNpbmciLCJUb3RhbFdpZHRoIiwiZHJhd1lBeGlzIiwidFN0YXJ0Q2VudGVyIiwidGV4dEFsaWduIiwidG1wc3RyYXQiLCJnYXB3aWR0aCIsInNob3dUaXRsZSIsInRpdGxlT2Zmc2V0WCIsInRpdGxlT2Zmc2V0WSIsImRyYXdMZWdlbmQiLCJsZWdlbmRBcmVhIiwiYmFja2dyb3VuZENvbG9yIiwiaXRlbUxpc3QiLCJsaXN0SW5kZXgiLCJoaWRkZW5Db2xvciIsImZvbnRUcmFucyIsImRyYXdQaWVEYXRhUG9pbnRzIiwicGllT3B0aW9uIiwiYWN0aXZlT3BhY2l0eSIsImFjdGl2ZVJhZGl1cyIsImxhYmVsV2lkdGgiLCJyaW5nV2lkdGgiLCJjdXN0b21SYWRpdXMiLCJjZW50ZXJDb2xvciIsIl9waWVUZXh0TWF4TGVuZ3RoXyIsImxpbmVKb2luIiwiZmlsbGNvbG9yIiwiY3JlYXRlQ2lyY3VsYXJHcmFkaWVudCIsImNyZWF0ZVJhZGlhbEdyYWRpZW50IiwiaW5uZXJQaWVXaWR0aCIsImRyYXdSb3NlRGF0YVBvaW50cyIsInJvc2VPcHRpb24iLCJkcmF3QXJjYmFyRGF0YVBvaW50cyIsImxpbmVDYXAiLCJhcmNiYXIiLCJjZW50ZXJYIiwiY2VudGVyWSIsImRyYXdHYXVnZURhdGFQb2ludHMiLCJmaXhSYWRpdXMiLCJjaGlsZE51bWJlciIsImNoaWxkV2lkdGgiLCJnYXVnZSIsImlubmVyUmFkaXVzIiwicGllUmFkaXVzIiwiY2hpbGRBbmdsZSIsInByb2MiLCJwb2ludGVyUmFkaXVzIiwiZ3JhZGllbnQzIiwiZWFjaENhdGVnb3JpZXMiLCJjaGlsZGVuZFgiLCJkcmF3UmFkYXJEYXRhUG9pbnRzIiwiYXhpc0xhYmVsIiwiYXhpc0xhYmVsVG9maXgiLCJncmlkQ291bnQiLCJjb29yZGluYXRlQW5nbGUiLCJ4ciIsInlyIiwiX2xvb3AiLCJzdGFydFBvcyIsInJhZGFyRGF0YVBvaW50cyIsInN0ZXBMZW5ndGgiLCJsYWJlbCIsImxvbmxhdDJtZXJjYXRvciIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwibG9nIiwidGFuIiwibWVyY2F0b3IybG9ubGF0IiwibG9ubGF0IiwiYXRhbiIsImV4cCIsImdldEJvdW5kaW5nQm94IiwiY29vcmRzIiwieE1pbiIsInhNYXgiLCJ5TWluIiwieU1heCIsImNvb3JkYSIsImNvb3JkaW5hdGVUb1BvaW50IiwicG9pbnRZIiwicG9pbnRYIiwiaXNSYXlJbnRlcnNlY3RzU2VnbWVudCIsInNfcG9pIiwiZV9wb2kiLCJ4c2VnIiwicG9seSIsInNpbnNjIiwiZXBvbHkiLCJkcmF3TWFwRGF0YVBvaW50cyIsIm1hcE9wdGlvbiIsImFjdGl2ZSIsImZpbGxPcGFjaXR5IiwiYWN0aXZlQm9yZGVyQ29sb3IiLCJhY3RpdmVGaWxsQ29sb3IiLCJhY3RpdmVGaWxsT3BhY2l0eSIsInhTY2FsZSIsInlTY2FsZSIsImdhb3NpIiwiY2VudGVyUG9pbnQiLCJwcm9wZXJ0aWVzIiwiY2VudHJvaWQiLCJhY3RpdmVUZXh0Q29sb3IiLCJkcmF3Iiwibm9ybWFsSW50IiwiaXRlciIsImFyciIsInJhbmRvbSIsImNvbGxpc2lvbk5ldyIsImlzSW4iLCJnZXRXb3JkQ2xvdWRQb2ludCIsInRIZWlnaHQiLCJ0V2lkdGgiLCJicmVha251bSIsIlNwaW4iLCJpc1NwaW4iLCJhcmVhdiIsImRyYXdXb3JkQ2xvdWREYXRhUG9pbnRzIiwid29yZE9wdGlvbiIsImF1dG9Db2xvcnMiLCJ3b3JkIiwid29yZENsb3VkRGF0YSIsInN0cm9rZVRleHQiLCJkcmF3RnVubmVsRGF0YVBvaW50cyIsImZ1bm5lbE9wdGlvbiIsIm1pblNpemUiLCJmdW5uZWwiLCJzZXJpZXNOZXciLCJkcmF3RnVubmVsVGV4dCIsImRyYXdGdW5uZWxDZW50ZXJUZXh0IiwiY2VudGVyVGV4dCIsImNlbnRlclRleHRTaXplIiwiY2VudGVyVGV4dENvbG9yIiwiZHJhd0NhbnZhcyIsIlRpbWluZyIsImVhc2VJbiIsImVhc2VPdXQiLCJlYXNlSW5PdXQiLCJsaW5lYXIiLCJBbmltYXRpb24iLCJpc1N0b3AiLCJkdXJhdGlvbiIsInRpbWluZyIsImRlbGF5IiwiY3JlYXRlQW5pbWF0aW9uRnJhbWUiLCJzZXRUaW1lb3V0Iiwic3RlcCIsInRpbWVTdGFtcCIsIkRhdGUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJhbmltYXRpb25GcmFtZSIsInN0YXJ0VGltZVN0YW1wIiwiX3N0ZXAiLCJ0aW1lc3RhbXAiLCJvblByb2Nlc3MiLCJvbkFuaW1hdGlvbkZpbmlzaCIsInRpbWluZ0Z1bmN0aW9uIiwiYmluZCIsInByb3RvdHlwZSIsInN0b3AiLCJkcmF3Q2hhcnRzIiwiX3RoaXMiLCJhbmltYXRpb24iLCJhbmltYXRpb25JbnN0YW5jZSIsIl9jYWxMZWdlbmREYXRhIiwibGVnZW5kSGVpZ2h0IiwiX2NhbFlBeGlzRGF0YSIsIm1heFRpdGxlSGVpZ2h0IiwicmlnaHRJbmRleCIsImxlZnRJbmRleCIsIl9jYWxDYXRlZ29yaWVzRGF0YSIsImNhdGVnb3JpZXNEYXRhIiwic2Nyb2xsQWxpZ24iLCJvZmZzZXRMZWZ0IiwidG90YWxXaWR0aCIsInNjcmVlbldpZHRoIiwiY3VycmVudE9mZnNldCIsInN0YXJ0VG91Y2hYIiwibGFzdE1vdmVUaW1lIiwiY2xlYXJSZWN0IiwiX2RyYXdMaW5lRGF0YVBvaW50cyIsImVuYWJsZU1hcmtMaW5lIiwiX2RyYXdTY2F0dGVyRGF0YVBvaW50cyIsIl9kcmF3QnViYmxlRGF0YVBvaW50cyIsIl9kcmF3TWl4RGF0YVBvaW50cyIsIl9kcmF3Q29sdW1uRGF0YVBvaW50cyIsIl9kcmF3TW91bnREYXRhUG9pbnRzIiwiX2RyYXdCYXJEYXRhUG9pbnRzIiwiX2RyYXdBcmVhRGF0YVBvaW50cyIsImFyY2JhckRhdGEiLCJnYXVnZURhdGEiLCJfZHJhd0NhbmRsZURhdGFQb2ludHMiLCJ1Q2hhcnRzRXZlbnQiLCJldmVudHMiLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuZXIiLCJkZWxFdmVudExpc3RlbmVyIiwiX2xlbiIsImFyZ3MiLCJfa2V5IiwicGFyYW1zIiwidUNoYXJ0cyIsImdyaWRTZXQiLCJjYW52YXMyZCIsImNvbmZpZyQkMSIsInRlbXBXaWR0aCIsInN0cm9rZVN0eWxlIiwibGluZVdpZHRoIiwiZm9udCIsImZpbGxTdHlsZSIsImNhbGwiLCJ1cGRhdGVEYXRhIiwiX2dldFhBeGlzUG9pbnRzMCIsInpvb20iLCJjZW50ZXJMZWZ0IiwiTWF4TGVmdCIsImRvYnVsZVpvb20iLCJ0Y3MiLCJjbGllbnRZIiwibnRjcyIsInhsZW5ndGgiLCJtb3ZlQ291bnQiLCJjdHMwIiwiY3RzMSIsIm1vdmVDdXJyZW50MSIsImdldEN1cnJlbnREYXRhSW5kZXgiLCJtb3ZlQ3VycmVudDIiLCJjdXJyZW50RWFjaFNwYWNpbmciLCJjdXJyZW50TGVmdCIsInN0b3BBbmltYXRpb24iLCJfdG91Y2hlcyQiLCJnZXRMZWdlbmREYXRhSW5kZXgiLCJ0b3VjaExlZ2VuZCIsInNob3dUb29sVGlwIiwiX2dldFRvb2xUaXBEYXRhIiwiX2dldE1peFRvb2xUaXBEYXRhIiwic2Nyb2xsU3RhcnQiLCJzY3JvbGwiLCJub3ciLCJMaW1pdCIsInRvdWNoTW92ZUxpbWl0IiwiY3Vyck1vdmVUaW1lIiwiX2Rpc3RhbmNlIiwic2Nyb2xsRW5kIiwiX3Njcm9sbE9wdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFYTs7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUViLElBQUlBLE1BQU0sR0FBRztFQUNYQyxPQUFPLEVBQUUsaUJBQWlCO0VBQzFCQyxVQUFVLEVBQUUsRUFBRTtFQUNkQyxXQUFXLEVBQUUsRUFBRTtFQUNmQyxnQkFBZ0IsRUFBRSxDQUFDO0VBQ25CQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7RUFDekJDLFVBQVUsRUFBRSxDQUFDO0VBQ2JDLE1BQU0sRUFBRSxLQUFLO0VBQ2JDLFFBQVEsRUFBRSxFQUFFO0VBQ1pDLFNBQVMsRUFBRSxTQUFTO0VBQ3BCQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7RUFDeERDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0VBQzFHQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztFQUNoSEMsbUJBQW1CLEVBQUUsRUFBRTtFQUN2QkMsbUJBQW1CLEVBQUUsQ0FBQztFQUN0QkMsYUFBYSxFQUFFLEVBQUU7RUFDakJDLGdCQUFnQixFQUFFLEVBQUU7RUFDcEJDLGNBQWMsRUFBRSxDQUFDO0VBQ2pCQyxpQkFBaUIsRUFBRSxTQUFTO0VBQzVCQyxjQUFjLEVB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LElBQUksQ0FBQ2UsWUFBWSxDQUFDb3dCLFNBQVMsR0FBRyxDQUFDO0VBQ2pDO0FBQ0YsQ0FBQztBQUFDLGVBRWFwQixPQUFPO0FBQUEsMkIiLCJmaWxlIjoiMTI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogdUNoYXJ0cyAoUilcclxuICog6auY5oCn6IO96Leo5bmz5Y+w5Zu+6KGo5bqT77yM5pSv5oyBSDXjgIFBUFDjgIHlsI/nqIvluo/vvIjlvq7kv6Ev5pSv5LuY5a6dL+eZvuW6pi/lpLTmnaEvUVEvMzYwL+W/q+aJi++8ieOAgVZ1ZeOAgVRhcm/nrYnmlK/mjIFjYW52YXPnmoTmoYbmnrblubPlj7BcclxuICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgUUlVTiAoUikg56eL5LqRIGh0dHBzOi8vd3d3LnVjaGFydHMuY24gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgKCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgKVxyXG4gKiDlpI3liLbkvb/nlKjor7fkv53nlZnmnKzmrrXms6jph4rvvIzmhJ/osKLmlK/mjIHlvIDmupDvvIFcclxuICogXHJcbiAqIHVDaGFydHMgKFIpIOWumOaWuee9keermVxyXG4gKiBodHRwczovL3d3dy51Q2hhcnRzLmNuXHJcbiAqIFxyXG4gKiDlvIDmupDlnLDlnYA6XHJcbiAqIGh0dHBzOi8vZ2l0ZWUuY29tL3VDaGFydHMvdUNoYXJ0c1xyXG4gKiBcclxuICogdW5pLWFwcOaPkuS7tuW4guWcuuWcsOWdgO+8mlxyXG4gKiBodHRwOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTI3MVxyXG4gKiBcclxuICovXHJcblxyXG4ndXNlIHN0cmljdCc7XHJcblxyXG52YXIgY29uZmlnID0ge1xyXG4gIHZlcnNpb246ICd2Mi40LjQtMjAyMjExMDInLFxyXG4gIHlBeGlzV2lkdGg6IDE1LFxyXG4gIHhBeGlzSGVpZ2h0OiAyMixcclxuICB4QXhpc1RleHRQYWRkaW5nOiAzLFxyXG4gIHBhZGRpbmc6IFsxMCwgMTAsIDEwLCAxMF0sXHJcbiAgcGl4ZWxSYXRpbzogMSxcclxuICByb3RhdGU6IGZhbHNlLFxyXG4gIGZvbnRTaXplOiAxMyxcclxuICBmb250Q29sb3I6ICcjNjY2NjY2JyxcclxuICBkYXRhUG9pbnRTaGFwZTogWydjaXJjbGUnLCAnY2lyY2xlJywgJ2NpcmNsZScsICdjaXJjbGUnXSxcclxuICBjb2xvcjogWycjMTg5MEZGJywgJyM5MUNCNzQnLCAnI0ZBQzg1OCcsICcjRUU2NjY2JywgJyM3M0MwREUnLCAnIzNDQTI3MicsICcjRkM4NDUyJywgJyM5QTYwQjQnLCAnI2VhN2NjYyddLFxyXG4gIGxpbmVhckNvbG9yOiBbJyMwRUUyRjgnLCAnIzJCRENBOCcsICcjRkE3RDhEJywgJyNFQjg4RTInLCAnIzJBRTNBMCcsICcjMEVFMkY4JywgJyNFQjg4RTInLCAnIzY3NzNFMycsICcjRjc4QTg1J10sXHJcbiAgcGllQ2hhcnRMaW5lUGFkZGluZzogMTUsXHJcbiAgcGllQ2hhcnRUZXh0UGFkZGluZzogNSxcclxuICB0aXRsZUZvbnRTaXplOiAyMCxcclxuICBzdWJ0aXRsZUZvbnRTaXplOiAxNSxcclxuICB0b29sVGlwUGFkZGluZzogMyxcclxuICB0b29sVGlwQmFja2dyb3VuZDogJyMwMDAwMDAnLFxyXG4gIHRvb2xUaXBPcGFjaXR5OiAwLjcsXHJcbiAgdG9vbFRpcExpbmVIZWlnaHQ6IDIwLFxyXG4gIHJhZGFyTGFiZWxUZXh0TWFyZ2luOiAxMyxcclxufTtcclxuXHJcbnZhciBhc3NpZ24gPSBmdW5jdGlvbih0YXJnZXQsIC4uLnZhckFyZ3MpIHtcclxuICBpZiAodGFyZ2V0ID09IG51bGwpIHtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1t1Q2hhcnRzXSBDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKTtcclxuICB9XHJcbiAgaWYgKCF2YXJBcmdzIHx8IHZhckFyZ3MubGVuZ3RoIDw9IDApIHtcclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgfVxyXG4gIC8vIOa3seW6puWQiOW5tuWvueixoVxyXG4gIGZ1bmN0aW9uIGRlZXBBc3NpZ24ob2JqMSwgb2JqMikge1xyXG4gICAgZm9yIChsZXQga2V5IGluIG9iajIpIHtcclxuICAgICAgb2JqMVtrZXldID0gb2JqMVtrZXldICYmIG9iajFba2V5XS50b1N0cmluZygpID09PSBcIltvYmplY3QgT2JqZWN0XVwiID9cclxuICAgICAgICBkZWVwQXNzaWduKG9iajFba2V5XSwgb2JqMltrZXldKSA6IG9iajFba2V5XSA9IG9iajJba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmoxO1xyXG4gIH1cclxuICB2YXJBcmdzLmZvckVhY2godmFsID0+IHtcclxuICAgIHRhcmdldCA9IGRlZXBBc3NpZ24odGFyZ2V0LCB2YWwpO1xyXG4gIH0pO1xyXG4gIHJldHVybiB0YXJnZXQ7XHJcbn07XHJcblxyXG52YXIgdXRpbCA9IHtcclxuICB0b0ZpeGVkOiBmdW5jdGlvbiB0b0ZpeGVkKG51bSwgbGltaXQpIHtcclxuICAgIGxpbWl0ID0gbGltaXQgfHwgMjtcclxuICAgIGlmICh0aGlzLmlzRmxvYXQobnVtKSkge1xyXG4gICAgICBudW0gPSBudW0udG9GaXhlZChsaW1pdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVtO1xyXG4gIH0sXHJcbiAgaXNGbG9hdDogZnVuY3Rpb24gaXNGbG9hdChudW0pIHtcclxuICAgIHJldHVybiBudW0gJSAxICE9PSAwO1xyXG4gIH0sXHJcbiAgYXBwcm94aW1hdGVseUVxdWFsOiBmdW5jdGlvbiBhcHByb3hpbWF0ZWx5RXF1YWwobnVtMSwgbnVtMikge1xyXG4gICAgcmV0dXJuIE1hdGguYWJzKG51bTEgLSBudW0yKSA8IDFlLTEwO1xyXG4gIH0sXHJcbiAgaXNTYW1lU2lnbjogZnVuY3Rpb24gaXNTYW1lU2lnbihudW0xLCBudW0yKSB7XHJcbiAgICByZXR1cm4gTWF0aC5hYnMobnVtMSkgPT09IG51bTEgJiYgTWF0aC5hYnMobnVtMikgPT09IG51bTIgfHwgTWF0aC5hYnMobnVtMSkgIT09IG51bTEgJiYgTWF0aC5hYnMobnVtMikgIT09IG51bTI7XHJcbiAgfSxcclxuICBpc1NhbWVYQ29vcmRpbmF0ZUFyZWE6IGZ1bmN0aW9uIGlzU2FtZVhDb29yZGluYXRlQXJlYShwMSwgcDIpIHtcclxuICAgIHJldHVybiB0aGlzLmlzU2FtZVNpZ24ocDEueCwgcDIueCk7XHJcbiAgfSxcclxuICBpc0NvbGxpc2lvbjogZnVuY3Rpb24gaXNDb2xsaXNpb24ob2JqMSwgb2JqMikge1xyXG4gICAgb2JqMS5lbmQgPSB7fTtcclxuICAgIG9iajEuZW5kLnggPSBvYmoxLnN0YXJ0LnggKyBvYmoxLndpZHRoO1xyXG4gICAgb2JqMS5lbmQueSA9IG9iajEuc3RhcnQueSAtIG9iajEuaGVpZ2h0O1xyXG4gICAgb2JqMi5lbmQgPSB7fTtcclxuICAgIG9iajIuZW5kLnggPSBvYmoyLnN0YXJ0LnggKyBvYmoyLndpZHRoO1xyXG4gICAgb2JqMi5lbmQueSA9IG9iajIuc3RhcnQueSAtIG9iajIuaGVpZ2h0O1xyXG4gICAgdmFyIGZsYWcgPSBvYmoyLnN0YXJ0LnggPiBvYmoxLmVuZC54IHx8IG9iajIuZW5kLnggPCBvYmoxLnN0YXJ0LnggfHwgb2JqMi5lbmQueSA+IG9iajEuc3RhcnQueSB8fCBvYmoyLnN0YXJ0LnkgPCBvYmoxLmVuZC55O1xyXG4gICAgcmV0dXJuICFmbGFnO1xyXG4gIH1cclxufTtcclxuXHJcbi8v5YW85a65SDXngrnlh7vkuovku7ZcclxuZnVuY3Rpb24gZ2V0SDVPZmZzZXQoZSkge1xyXG4gIGUubXAgPSB7XHJcbiAgICBjaGFuZ2VkVG91Y2hlczogW11cclxuICB9O1xyXG4gIGUubXAuY2hhbmdlZFRvdWNoZXMucHVzaCh7XHJcbiAgICB4OiBlLm9mZnNldFgsXHJcbiAgICB5OiBlLm9mZnNldFlcclxuICB9KTtcclxuICByZXR1cm4gZTtcclxufVxyXG5cclxuLy8gaGV4IOi9rCByZ2JhXHJcbmZ1bmN0aW9uIGhleFRvUmdiKGhleFZhbHVlLCBvcGMpIHtcclxuICB2YXIgcmd4ID0gL14jPyhbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaTtcclxuICB2YXIgaGV4ID0gaGV4VmFsdWUucmVwbGFjZShyZ3gsIGZ1bmN0aW9uKG0sIHIsIGcsIGIpIHtcclxuICAgIHJldHVybiByICsgciArIGcgKyBnICsgYiArIGI7XHJcbiAgfSk7XHJcbiAgdmFyIHJnYiA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xyXG4gIHZhciByID0gcGFyc2VJbnQocmdiWzFdLCAxNik7XHJcbiAgdmFyIGcgPSBwYXJzZUludChyZ2JbMl0sIDE2KTtcclxuICB2YXIgYiA9IHBhcnNlSW50KHJnYlszXSwgMTYpO1xyXG4gIHJldHVybiAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgb3BjICsgJyknO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kUmFuZ2UobnVtLCB0eXBlLCBsaW1pdCkge1xyXG4gIGlmIChpc05hTihudW0pKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1t1Q2hhcnRzXSBzZXJpZXPmlbDmja7pnIDkuLpOdW1iZXLmoLzlvI8nKTtcclxuICB9XHJcbiAgbGltaXQgPSBsaW1pdCB8fCAxMDtcclxuICB0eXBlID0gdHlwZSA/IHR5cGUgOiAndXBwZXInO1xyXG4gIHZhciBtdWx0aXBsZSA9IDE7XHJcbiAgd2hpbGUgKGxpbWl0IDwgMSkge1xyXG4gICAgbGltaXQgKj0gMTA7XHJcbiAgICBtdWx0aXBsZSAqPSAxMDtcclxuICB9XHJcbiAgaWYgKHR5cGUgPT09ICd1cHBlcicpIHtcclxuICAgIG51bSA9IE1hdGguY2VpbChudW0gKiBtdWx0aXBsZSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIG51bSA9IE1hdGguZmxvb3IobnVtICogbXVsdGlwbGUpO1xyXG4gIH1cclxuICB3aGlsZSAobnVtICUgbGltaXQgIT09IDApIHtcclxuICAgIGlmICh0eXBlID09PSAndXBwZXInKSB7XHJcbiAgICAgIGlmIChudW0gPT0gbnVtICsgMSkgeyAvL+S/ruWkjeaVsOaNruWAvOi/h+Wkp251bSsr5peg5pWI55qEYnVnIGJ5IOWQkeaXpeiRtSBAeHJrX2p5XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgbnVtKys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBudW0tLTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG51bSAvIG11bHRpcGxlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxDYW5kbGVNQShkYXlBcnIsIG5hbWVBcnIsIGNvbG9yQXJyLCBrZGF0YSkge1xyXG4gIGxldCBzZXJpZXNUZW1wID0gW107XHJcbiAgZm9yIChsZXQgayA9IDA7IGsgPCBkYXlBcnIubGVuZ3RoOyBrKyspIHtcclxuICAgIGxldCBzZXJpZXNJdGVtID0ge1xyXG4gICAgICBkYXRhOiBbXSxcclxuICAgICAgbmFtZTogbmFtZUFycltrXSxcclxuICAgICAgY29sb3I6IGNvbG9yQXJyW2tdXHJcbiAgICB9O1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGtkYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGlmIChpIDwgZGF5QXJyW2tdKSB7XHJcbiAgICAgICAgc2VyaWVzSXRlbS5kYXRhLnB1c2gobnVsbCk7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHN1bSA9IDA7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGF5QXJyW2tdOyBqKyspIHtcclxuICAgICAgICBzdW0gKz0ga2RhdGFbaSAtIGpdWzFdO1xyXG4gICAgICB9XHJcbiAgICAgIHNlcmllc0l0ZW0uZGF0YS5wdXNoKCsoc3VtIC8gZGF5QXJyW2tdKS50b0ZpeGVkKDMpKTtcclxuICAgIH1cclxuICAgIHNlcmllc1RlbXAucHVzaChzZXJpZXNJdGVtKTtcclxuICB9XHJcbiAgcmV0dXJuIHNlcmllc1RlbXA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbFZhbGlkRGlzdGFuY2Uoc2VsZiwgZGlzdGFuY2UsIGNoYXJ0RGF0YSwgY29uZmlnLCBvcHRzKSB7XHJcbiAgdmFyIGRhdGFDaGFydEFyZWFXaWR0aCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM107XHJcbiAgdmFyIGRhdGFDaGFydFdpZHRoID0gY2hhcnREYXRhLmVhY2hTcGFjaW5nICogKG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS54QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICBpZihvcHRzLnR5cGUgPT0gJ21vdW50JyAmJiBvcHRzLmV4dHJhICYmIG9wdHMuZXh0cmEubW91bnQgJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvICYmIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA+IDEpe1xyXG4gICAgaWYob3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvPjIpIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA9IDJcclxuICAgIGRhdGFDaGFydFdpZHRoICs9IChvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gLSAxKSpjaGFydERhdGEuZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHZhciB2YWxpZERpc3RhbmNlID0gZGlzdGFuY2U7XHJcbiAgaWYgKGRpc3RhbmNlID49IDApIHtcclxuICAgIHZhbGlkRGlzdGFuY2UgPSAwO1xyXG4gICAgc2VsZi51ZXZlbnQudHJpZ2dlcignc2Nyb2xsTGVmdCcpO1xyXG4gICAgc2VsZi5zY3JvbGxPcHRpb24ucG9zaXRpb24gPSAnbGVmdCdcclxuICAgIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSAnbGVmdCc7XHJcbiAgfSBlbHNlIGlmIChNYXRoLmFicyhkaXN0YW5jZSkgPj0gZGF0YUNoYXJ0V2lkdGggLSBkYXRhQ2hhcnRBcmVhV2lkdGgpIHtcclxuICAgIHZhbGlkRGlzdGFuY2UgPSBkYXRhQ2hhcnRBcmVhV2lkdGggLSBkYXRhQ2hhcnRXaWR0aDtcclxuICAgIHNlbGYudWV2ZW50LnRyaWdnZXIoJ3Njcm9sbFJpZ2h0Jyk7XHJcbiAgICBzZWxmLnNjcm9sbE9wdGlvbi5wb3NpdGlvbiA9ICdyaWdodCdcclxuICAgIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSAncmlnaHQnO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzZWxmLnNjcm9sbE9wdGlvbi5wb3NpdGlvbiA9IGRpc3RhbmNlXHJcbiAgICBvcHRzLnhBeGlzLnNjcm9sbFBvc2l0aW9uID0gZGlzdGFuY2U7XHJcbiAgfVxyXG4gIHJldHVybiB2YWxpZERpc3RhbmNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0luQW5nbGVSYW5nZShhbmdsZSwgc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHtcclxuICBmdW5jdGlvbiBhZGp1c3QoYW5nbGUpIHtcclxuICAgIHdoaWxlIChhbmdsZSA8IDApIHtcclxuICAgICAgYW5nbGUgKz0gMiAqIE1hdGguUEk7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoYW5nbGUgPiAyICogTWF0aC5QSSkge1xyXG4gICAgICBhbmdsZSAtPSAyICogTWF0aC5QSTtcclxuICAgIH1cclxuICAgIHJldHVybiBhbmdsZTtcclxuICB9XHJcbiAgYW5nbGUgPSBhZGp1c3QoYW5nbGUpO1xyXG4gIHN0YXJ0QW5nbGUgPSBhZGp1c3Qoc3RhcnRBbmdsZSk7XHJcbiAgZW5kQW5nbGUgPSBhZGp1c3QoZW5kQW5nbGUpO1xyXG4gIGlmIChzdGFydEFuZ2xlID4gZW5kQW5nbGUpIHtcclxuICAgIGVuZEFuZ2xlICs9IDIgKiBNYXRoLlBJO1xyXG4gICAgaWYgKGFuZ2xlIDwgc3RhcnRBbmdsZSkge1xyXG4gICAgICBhbmdsZSArPSAyICogTWF0aC5QSTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGFuZ2xlID49IHN0YXJ0QW5nbGUgJiYgYW5nbGUgPD0gZW5kQW5nbGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGkpIHtcclxuICBmdW5jdGlvbiBpc05vdE1pZGRsZVBvaW50KHBvaW50cywgaSkge1xyXG4gICAgaWYgKHBvaW50c1tpIC0gMV0gJiYgcG9pbnRzW2kgKyAxXSkge1xyXG4gICAgICByZXR1cm4gcG9pbnRzW2ldLnkgPj0gTWF0aC5tYXgocG9pbnRzW2kgLSAxXS55LCBwb2ludHNbaSArIDFdLnkpIHx8IHBvaW50c1tpXS55IDw9IE1hdGgubWluKHBvaW50c1tpIC0gMV0ueSxcclxuICAgICAgICBwb2ludHNbaSArIDFdLnkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBpc05vdE1pZGRsZVBvaW50WChwb2ludHMsIGkpIHtcclxuICAgIGlmIChwb2ludHNbaSAtIDFdICYmIHBvaW50c1tpICsgMV0pIHtcclxuICAgICAgcmV0dXJuIHBvaW50c1tpXS54ID49IE1hdGgubWF4KHBvaW50c1tpIC0gMV0ueCwgcG9pbnRzW2kgKyAxXS54KSB8fCBwb2ludHNbaV0ueCA8PSBNYXRoLm1pbihwb2ludHNbaSAtIDFdLngsXHJcbiAgICAgICAgcG9pbnRzW2kgKyAxXS54KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgdmFyIGEgPSAwLjI7XHJcbiAgdmFyIGIgPSAwLjI7XHJcbiAgdmFyIHBBeCA9IG51bGw7XHJcbiAgdmFyIHBBeSA9IG51bGw7XHJcbiAgdmFyIHBCeCA9IG51bGw7XHJcbiAgdmFyIHBCeSA9IG51bGw7XHJcbiAgaWYgKGkgPCAxKSB7XHJcbiAgICBwQXggPSBwb2ludHNbMF0ueCArIChwb2ludHNbMV0ueCAtIHBvaW50c1swXS54KSAqIGE7XHJcbiAgICBwQXkgPSBwb2ludHNbMF0ueSArIChwb2ludHNbMV0ueSAtIHBvaW50c1swXS55KSAqIGE7XHJcbiAgfSBlbHNlIHtcclxuICAgIHBBeCA9IHBvaW50c1tpXS54ICsgKHBvaW50c1tpICsgMV0ueCAtIHBvaW50c1tpIC0gMV0ueCkgKiBhO1xyXG4gICAgcEF5ID0gcG9pbnRzW2ldLnkgKyAocG9pbnRzW2kgKyAxXS55IC0gcG9pbnRzW2kgLSAxXS55KSAqIGE7XHJcbiAgfVxyXG5cclxuICBpZiAoaSA+IHBvaW50cy5sZW5ndGggLSAzKSB7XHJcbiAgICB2YXIgbGFzdCA9IHBvaW50cy5sZW5ndGggLSAxO1xyXG4gICAgcEJ4ID0gcG9pbnRzW2xhc3RdLnggLSAocG9pbnRzW2xhc3RdLnggLSBwb2ludHNbbGFzdCAtIDFdLngpICogYjtcclxuICAgIHBCeSA9IHBvaW50c1tsYXN0XS55IC0gKHBvaW50c1tsYXN0XS55IC0gcG9pbnRzW2xhc3QgLSAxXS55KSAqIGI7XHJcbiAgfSBlbHNlIHtcclxuICAgIHBCeCA9IHBvaW50c1tpICsgMV0ueCAtIChwb2ludHNbaSArIDJdLnggLSBwb2ludHNbaV0ueCkgKiBiO1xyXG4gICAgcEJ5ID0gcG9pbnRzW2kgKyAxXS55IC0gKHBvaW50c1tpICsgMl0ueSAtIHBvaW50c1tpXS55KSAqIGI7XHJcbiAgfVxyXG4gIGlmIChpc05vdE1pZGRsZVBvaW50KHBvaW50cywgaSArIDEpKSB7XHJcbiAgICBwQnkgPSBwb2ludHNbaSArIDFdLnk7XHJcbiAgfVxyXG4gIGlmIChpc05vdE1pZGRsZVBvaW50KHBvaW50cywgaSkpIHtcclxuICAgIHBBeSA9IHBvaW50c1tpXS55O1xyXG4gIH1cclxuICBpZiAoaXNOb3RNaWRkbGVQb2ludFgocG9pbnRzLCBpICsgMSkpIHtcclxuICAgIHBCeCA9IHBvaW50c1tpICsgMV0ueDtcclxuICB9XHJcbiAgaWYgKGlzTm90TWlkZGxlUG9pbnRYKHBvaW50cywgaSkpIHtcclxuICAgIHBBeCA9IHBvaW50c1tpXS54O1xyXG4gIH1cclxuICBpZiAocEF5ID49IE1hdGgubWF4KHBvaW50c1tpXS55LCBwb2ludHNbaSArIDFdLnkpIHx8IHBBeSA8PSBNYXRoLm1pbihwb2ludHNbaV0ueSwgcG9pbnRzW2kgKyAxXS55KSkge1xyXG4gICAgcEF5ID0gcG9pbnRzW2ldLnk7XHJcbiAgfVxyXG4gIGlmIChwQnkgPj0gTWF0aC5tYXgocG9pbnRzW2ldLnksIHBvaW50c1tpICsgMV0ueSkgfHwgcEJ5IDw9IE1hdGgubWluKHBvaW50c1tpXS55LCBwb2ludHNbaSArIDFdLnkpKSB7XHJcbiAgICBwQnkgPSBwb2ludHNbaSArIDFdLnk7XHJcbiAgfVxyXG4gIGlmIChwQXggPj0gTWF0aC5tYXgocG9pbnRzW2ldLngsIHBvaW50c1tpICsgMV0ueCkgfHwgcEF4IDw9IE1hdGgubWluKHBvaW50c1tpXS54LCBwb2ludHNbaSArIDFdLngpKSB7XHJcbiAgICBwQXggPSBwb2ludHNbaV0ueDtcclxuICB9XHJcbiAgaWYgKHBCeCA+PSBNYXRoLm1heChwb2ludHNbaV0ueCwgcG9pbnRzW2kgKyAxXS54KSB8fCBwQnggPD0gTWF0aC5taW4ocG9pbnRzW2ldLngsIHBvaW50c1tpICsgMV0ueCkpIHtcclxuICAgIHBCeCA9IHBvaW50c1tpICsgMV0ueDtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIGN0ckE6IHtcclxuICAgICAgeDogcEF4LFxyXG4gICAgICB5OiBwQXlcclxuICAgIH0sXHJcbiAgICBjdHJCOiB7XHJcbiAgICAgIHg6IHBCeCxcclxuICAgICAgeTogcEJ5XHJcbiAgICB9XHJcbiAgfTtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKHgsIHksIGNlbnRlcikge1xyXG4gIHJldHVybiB7XHJcbiAgICB4OiBjZW50ZXIueCArIHgsXHJcbiAgICB5OiBjZW50ZXIueSAtIHlcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBhdm9pZENvbGxpc2lvbihvYmosIHRhcmdldCkge1xyXG4gIGlmICh0YXJnZXQpIHtcclxuICAgIC8vIGlzIGNvbGxpc2lvbiB0ZXN0XHJcbiAgICB3aGlsZSAodXRpbC5pc0NvbGxpc2lvbihvYmosIHRhcmdldCkpIHtcclxuICAgICAgaWYgKG9iai5zdGFydC54ID4gMCkge1xyXG4gICAgICAgIG9iai5zdGFydC55LS07XHJcbiAgICAgIH0gZWxzZSBpZiAob2JqLnN0YXJ0LnggPCAwKSB7XHJcbiAgICAgICAgb2JqLnN0YXJ0LnkrKztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAob2JqLnN0YXJ0LnkgPiAwKSB7XHJcbiAgICAgICAgICBvYmouc3RhcnQueSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYmouc3RhcnQueS0tO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gb2JqO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaXhQaWVTZXJpZXMoc2VyaWVzLCBvcHRzLCBjb25maWcpe1xyXG4gIGxldCBwaWVTZXJpZXNBcnIgPSBbXTtcclxuICBpZihzZXJpZXMubGVuZ3RoPjAgJiYgc2VyaWVzWzBdLmRhdGEuY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpe1xyXG4gICAgb3B0cy5fcGllU2VyaWVzXyA9IHNlcmllcztcclxuICAgIGxldCBvbGRzZXJpZXMgPSBzZXJpZXNbMF0uZGF0YTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2xkc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG9sZHNlcmllc1tpXS5mb3JtYXR0ZXIgPSBzZXJpZXNbMF0uZm9ybWF0dGVyO1xyXG4gICAgICBvbGRzZXJpZXNbaV0uZGF0YSA9IG9sZHNlcmllc1tpXS52YWx1ZTtcclxuICAgICAgcGllU2VyaWVzQXJyLnB1c2gob2xkc2VyaWVzW2ldKTtcclxuICAgIH1cclxuICAgIG9wdHMuc2VyaWVzID0gcGllU2VyaWVzQXJyO1xyXG4gIH1lbHNle1xyXG4gICAgcGllU2VyaWVzQXJyID0gc2VyaWVzO1xyXG4gIH1cclxuICByZXR1cm4gcGllU2VyaWVzQXJyO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxsU2VyaWVzKHNlcmllcywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIGluZGV4ID0gMDtcclxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpZiAoIWl0ZW0uY29sb3IpIHtcclxuICAgICAgaXRlbS5jb2xvciA9IGNvbmZpZy5jb2xvcltpbmRleF07XHJcbiAgICAgIGluZGV4ID0gKGluZGV4ICsgMSkgJSBjb25maWcuY29sb3IubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLmxpbmVhckluZGV4KSB7XHJcbiAgICAgIGl0ZW0ubGluZWFySW5kZXggPSBpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLmluZGV4KSB7XHJcbiAgICAgIGl0ZW0uaW5kZXggPSAwO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLnR5cGUpIHtcclxuICAgICAgaXRlbS50eXBlID0gb3B0cy50eXBlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBpdGVtLnNob3cgPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBpdGVtLnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLnR5cGUpIHtcclxuICAgICAgaXRlbS50eXBlID0gb3B0cy50eXBlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLnBvaW50U2hhcGUpIHtcclxuICAgICAgaXRlbS5wb2ludFNoYXBlID0gXCJjaXJjbGVcIjtcclxuICAgIH1cclxuICAgIGlmICghaXRlbS5sZWdlbmRTaGFwZSkge1xyXG4gICAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2xpbmUnOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwibGluZVwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY29sdW1uJzpcclxuICAgICAgICBjYXNlICdiYXInOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwicmVjdFwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnYXJlYSc6XHJcbiAgICAgICAgY2FzZSAnbW91bnQnOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwidHJpYW5nbGVcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpdGVtLmxlZ2VuZFNoYXBlID0gXCJjaXJjbGVcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxsQ3VzdG9tQ29sb3IobGluZWFyVHlwZSwgY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKSB7XHJcbiAgdmFyIG5ld2NvbG9yID0gY3VzdG9tQ29sb3IgfHwgW107XHJcbiAgaWYgKGxpbmVhclR5cGUgPT0gJ2N1c3RvbScgJiYgbmV3Y29sb3IubGVuZ3RoID09IDAgKSB7XHJcbiAgICBuZXdjb2xvciA9IGNvbmZpZy5saW5lYXJDb2xvcjtcclxuICB9XHJcbiAgaWYgKGxpbmVhclR5cGUgPT0gJ2N1c3RvbScgJiYgbmV3Y29sb3IubGVuZ3RoIDwgc2VyaWVzLmxlbmd0aCkge1xyXG4gICAgbGV0IGNoYXpoaSA9IHNlcmllcy5sZW5ndGggLSBuZXdjb2xvci5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXpoaTsgaSsrKSB7XHJcbiAgICAgIG5ld2NvbG9yLnB1c2goY29uZmlnLmxpbmVhckNvbG9yWyhpICsgMSkgJSBjb25maWcubGluZWFyQ29sb3IubGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBuZXdjb2xvcjtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RGF0YVJhbmdlKG1pbkRhdGEsIG1heERhdGEpIHtcclxuICB2YXIgbGltaXQgPSAwO1xyXG4gIHZhciByYW5nZSA9IG1heERhdGEgLSBtaW5EYXRhO1xyXG4gIGlmIChyYW5nZSA+PSAxMDAwMCkge1xyXG4gICAgbGltaXQgPSAxMDAwO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMTAwMCkge1xyXG4gICAgbGltaXQgPSAxMDA7XHJcbiAgfSBlbHNlIGlmIChyYW5nZSA+PSAxMDApIHtcclxuICAgIGxpbWl0ID0gMTA7XHJcbiAgfSBlbHNlIGlmIChyYW5nZSA+PSAxMCkge1xyXG4gICAgbGltaXQgPSA1O1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMSkge1xyXG4gICAgbGltaXQgPSAxO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMC4xKSB7XHJcbiAgICBsaW1pdCA9IDAuMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDEpIHtcclxuICAgIGxpbWl0ID0gMC4wMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDAxKSB7XHJcbiAgICBsaW1pdCA9IDAuMDAxO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMC4wMDAxKSB7XHJcbiAgICBsaW1pdCA9IDAuMDAwMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDAwMDEpIHtcclxuICAgIGxpbWl0ID0gMC4wMDAwMTtcclxuICB9IGVsc2Uge1xyXG4gICAgbGltaXQgPSAwLjAwMDAwMTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIG1pblJhbmdlOiBmaW5kUmFuZ2UobWluRGF0YSwgJ2xvd2VyJywgbGltaXQpLFxyXG4gICAgbWF4UmFuZ2U6IGZpbmRSYW5nZShtYXhEYXRhLCAndXBwZXInLCBsaW1pdClcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZWFzdXJlVGV4dCh0ZXh0LCBmb250U2l6ZSwgY29udGV4dCkge1xyXG4gIHZhciB3aWR0aCA9IDA7XHJcbiAgdGV4dCA9IFN0cmluZyh0ZXh0KTtcclxuXHJcblxyXG5cclxuICBpZiAoY29udGV4dCAhPT0gZmFsc2UgJiYgY29udGV4dCAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHQuc2V0Rm9udFNpemUgJiYgY29udGV4dC5tZWFzdXJlVGV4dCkge1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICByZXR1cm4gY29udGV4dC5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDtcclxuICB9IGVsc2Uge1xyXG4gICAgdmFyIHRleHQgPSB0ZXh0LnNwbGl0KCcnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IHRleHRbaV07XHJcbiAgICAgIGlmICgvW2EtekEtWl0vLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSA3O1xyXG4gICAgICB9IGVsc2UgaWYgKC9bMC05XS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDUuNTtcclxuICAgICAgfSBlbHNlIGlmICgvXFwuLy50ZXN0KGl0ZW0pKSB7XHJcbiAgICAgICAgd2lkdGggKz0gMi43O1xyXG4gICAgICB9IGVsc2UgaWYgKC8tLy50ZXN0KGl0ZW0pKSB7XHJcbiAgICAgICAgd2lkdGggKz0gMy4yNTtcclxuICAgICAgfSBlbHNlIGlmICgvOi8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDIuNTtcclxuICAgICAgfSBlbHNlIGlmICgvW1xcdTRlMDAtXFx1OWZhNV0vLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSAxMDtcclxuICAgICAgfSBlbHNlIGlmICgvXFwofFxcKS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDMuNzM7XHJcbiAgICAgIH0gZWxzZSBpZiAoL1xccy8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDIuNTtcclxuICAgICAgfSBlbHNlIGlmICgvJS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2lkdGggKz0gMTA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB3aWR0aCAqIGZvbnRTaXplIC8gMTA7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkYXRhQ29tYmluZShzZXJpZXMpIHtcclxuICByZXR1cm4gc2VyaWVzLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7XHJcbiAgICByZXR1cm4gKGEuZGF0YSA/IGEuZGF0YSA6IGEpLmNvbmNhdChiLmRhdGEpO1xyXG4gIH0sIFtdKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGF0YUNvbWJpbmVTdGFjayhzZXJpZXMsIGxlbikge1xyXG4gIHZhciBzdW0gPSBuZXcgQXJyYXkobGVuKTtcclxuICBmb3IgKHZhciBqID0gMDsgaiA8IHN1bS5sZW5ndGg7IGorKykge1xyXG4gICAgc3VtW2pdID0gMDtcclxuICB9XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3VtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgIHN1bVtqXSArPSBzZXJpZXNbaV0uZGF0YVtqXTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSwgYikge1xyXG4gICAgcmV0dXJuIChhLmRhdGEgPyBhLmRhdGEgOiBhKS5jb25jYXQoYi5kYXRhKS5jb25jYXQoc3VtKTtcclxuICB9LCBbXSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFRvdWNoZXModG91Y2hlcywgb3B0cywgZSkge1xyXG4gIGxldCB4LCB5O1xyXG4gIGlmICh0b3VjaGVzLmNsaWVudFgpIHtcclxuICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICB5ID0gb3B0cy5oZWlnaHQgLSB0b3VjaGVzLmNsaWVudFggKiBvcHRzLnBpeDtcclxuICAgICAgeCA9ICh0b3VjaGVzLnBhZ2VZIC0gZS5jdXJyZW50VGFyZ2V0Lm9mZnNldFRvcCAtIChvcHRzLmhlaWdodCAvIG9wdHMucGl4IC8gMikgKiAob3B0cy5waXggLSAxKSkgKiBvcHRzLnBpeDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHggPSB0b3VjaGVzLmNsaWVudFggKiBvcHRzLnBpeDtcclxuICAgICAgeSA9ICh0b3VjaGVzLnBhZ2VZIC0gZS5jdXJyZW50VGFyZ2V0Lm9mZnNldFRvcCAtIChvcHRzLmhlaWdodCAvIG9wdHMucGl4IC8gMikgKiAob3B0cy5waXggLSAxKSkgKiBvcHRzLnBpeDtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgIHkgPSBvcHRzLmhlaWdodCAtIHRvdWNoZXMueCAqIG9wdHMucGl4O1xyXG4gICAgICB4ID0gdG91Y2hlcy55ICogb3B0cy5waXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB4ID0gdG91Y2hlcy54ICogb3B0cy5waXg7XHJcbiAgICAgIHkgPSB0b3VjaGVzLnkgKiBvcHRzLnBpeDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIHg6IHgsXHJcbiAgICB5OiB5XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTZXJpZXNEYXRhSXRlbShzZXJpZXMsIGluZGV4LCBncm91cCkge1xyXG4gIHZhciBkYXRhID0gW107XHJcbiAgdmFyIG5ld1NlcmllcyA9IFtdO1xyXG4gIHZhciBpbmRleElzQXJyID0gaW5kZXguY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTE7XHJcbiAgaWYoaW5kZXhJc0Fycil7XHJcbiAgICBsZXQgdGVtcFNlcmllcyA9IGZpbHRlclNlcmllcyhzZXJpZXMpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBuZXdTZXJpZXMucHVzaCh0ZW1wU2VyaWVzW2dyb3VwW2ldXSk7XHJcbiAgICB9XHJcbiAgfWVsc2V7XHJcbiAgICBuZXdTZXJpZXMgPSBzZXJpZXM7XHJcbiAgfTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld1Nlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBuZXdTZXJpZXNbaV07XHJcbiAgICBsZXQgdG1waW5kZXggPSAtMTtcclxuICAgIGlmKGluZGV4SXNBcnIpe1xyXG4gICAgICB0bXBpbmRleCA9IGluZGV4W2ldO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRtcGluZGV4ID0gaW5kZXg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS5kYXRhW3RtcGluZGV4XSAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlbS5kYXRhW3RtcGluZGV4XSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbS5zaG93KSB7XHJcbiAgICAgIGxldCBzZXJpZXNJdGVtID0ge307XHJcbiAgICAgIHNlcmllc0l0ZW0uY29sb3IgPSBpdGVtLmNvbG9yO1xyXG4gICAgICBzZXJpZXNJdGVtLnR5cGUgPSBpdGVtLnR5cGU7XHJcbiAgICAgIHNlcmllc0l0ZW0uc3R5bGUgPSBpdGVtLnN0eWxlO1xyXG4gICAgICBzZXJpZXNJdGVtLnBvaW50U2hhcGUgPSBpdGVtLnBvaW50U2hhcGU7XHJcbiAgICAgIHNlcmllc0l0ZW0uZGlzYWJsZUxlZ2VuZCA9IGl0ZW0uZGlzYWJsZUxlZ2VuZDtcclxuICAgICAgc2VyaWVzSXRlbS5uYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgICBzZXJpZXNJdGVtLnNob3cgPSBpdGVtLnNob3c7XHJcbiAgICAgIHNlcmllc0l0ZW0uZGF0YSA9IGl0ZW0uZm9ybWF0dGVyID8gaXRlbS5mb3JtYXR0ZXIoaXRlbS5kYXRhW3RtcGluZGV4XSkgOiBpdGVtLmRhdGFbdG1waW5kZXhdO1xyXG4gICAgICBkYXRhLnB1c2goc2VyaWVzSXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBkYXRhO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRNYXhUZXh0TGlzdExlbmd0aChsaXN0LCBmb250U2l6ZSwgY29udGV4dCkge1xyXG4gIHZhciBsZW5ndGhMaXN0ID0gbGlzdC5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgcmV0dXJuIG1lYXN1cmVUZXh0KGl0ZW0sIGZvbnRTaXplLCBjb250ZXh0KTtcclxuICB9KTtcclxuICByZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCwgbGVuZ3RoTGlzdCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFJhZGFyQ29vcmRpbmF0ZVNlcmllcyhsZW5ndGgpIHtcclxuICB2YXIgZWFjaEFuZ2xlID0gMiAqIE1hdGguUEkgLyBsZW5ndGg7XHJcbiAgdmFyIENvb3JkaW5hdGVTZXJpZXMgPSBbXTtcclxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICBDb29yZGluYXRlU2VyaWVzLnB1c2goZWFjaEFuZ2xlICogaSk7XHJcbiAgfVxyXG4gIHJldHVybiBDb29yZGluYXRlU2VyaWVzLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICByZXR1cm4gLTEgKiBpdGVtICsgTWF0aC5QSSAvIDI7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFRvb2xUaXBEYXRhKHNlcmllc0RhdGEsIG9wdHMsIGluZGV4LCBncm91cCwgY2F0ZWdvcmllcykge1xyXG4gIHZhciBvcHRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IHt9O1xyXG4gIHZhciBjYWxQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHM/b3B0cy5jaGFydERhdGEuY2FsUG9pbnRzOltdO1xyXG4gIGxldCBwb2ludHMgPSB7fTtcclxuICBpZihncm91cC5sZW5ndGggPiAwKXtcclxuICAgIGxldCBmaWx0ZXJQb2ludHMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JvdXAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZmlsdGVyUG9pbnRzLnB1c2goY2FsUG9pbnRzW2dyb3VwW2ldXSlcclxuICAgIH1cclxuICAgIHBvaW50cyA9IGZpbHRlclBvaW50c1swXVtpbmRleFswXV07XHJcbiAgfWVsc2V7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbFBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZihjYWxQb2ludHNbaV1baW5kZXhdKXtcclxuICAgICAgICBwb2ludHMgPSBjYWxQb2ludHNbaV1baW5kZXhdO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICB2YXIgdGV4dExpc3QgPSBzZXJpZXNEYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBsZXQgdGl0bGVUZXh0ID0gbnVsbDtcclxuICAgIGlmIChvcHRzLmNhdGVnb3JpZXMgJiYgb3B0cy5jYXRlZ29yaWVzLmxlbmd0aD4wKSB7XHJcbiAgICAgIHRpdGxlVGV4dCA9IGNhdGVnb3JpZXNbaW5kZXhdO1xyXG4gICAgfTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKGl0ZW0sIHRpdGxlVGV4dCwgaW5kZXgsIG9wdHMpIDogaXRlbS5uYW1lICsgJzogJyArIGl0ZW0uZGF0YSxcclxuICAgICAgY29sb3I6IGl0ZW0uY29sb3JcclxuICAgIH07XHJcbiAgfSk7XHJcbiAgdmFyIG9mZnNldCA9IHtcclxuICAgIHg6IE1hdGgucm91bmQocG9pbnRzLngpLFxyXG4gICAgeTogTWF0aC5yb3VuZChwb2ludHMueSlcclxuICB9O1xyXG4gIHJldHVybiB7XHJcbiAgICB0ZXh0TGlzdDogdGV4dExpc3QsXHJcbiAgICBvZmZzZXQ6IG9mZnNldFxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldE1peFRvb2xUaXBEYXRhKHNlcmllc0RhdGEsIG9wdHMsIGluZGV4LCBjYXRlZ29yaWVzKSB7XHJcbiAgdmFyIG9wdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDoge307XHJcbiAgdmFyIHBvaW50cyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzW2luZGV4XSArIG9wdHMuY2hhcnREYXRhLmVhY2hTcGFjaW5nIC8gMjtcclxuICB2YXIgdGV4dExpc3QgPSBzZXJpZXNEYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0ZXh0OiBvcHRpb24uZm9ybWF0dGVyID8gb3B0aW9uLmZvcm1hdHRlcihpdGVtLCBjYXRlZ29yaWVzW2luZGV4XSwgaW5kZXgsIG9wdHMpIDogaXRlbS5uYW1lICsgJzogJyArIGl0ZW0uZGF0YSxcclxuICAgICAgY29sb3I6IGl0ZW0uY29sb3IsXHJcbiAgICAgIGRpc2FibGVMZWdlbmQ6IGl0ZW0uZGlzYWJsZUxlZ2VuZCA/IHRydWUgOiBmYWxzZVxyXG4gICAgfTtcclxuICB9KTtcclxuICB0ZXh0TGlzdCA9IHRleHRMaXN0LmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBpZiAoaXRlbS5kaXNhYmxlTGVnZW5kICE9PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHZhciBvZmZzZXQgPSB7XHJcbiAgICB4OiBNYXRoLnJvdW5kKHBvaW50cyksXHJcbiAgICB5OiAwXHJcbiAgfTtcclxuICByZXR1cm4ge1xyXG4gICAgdGV4dExpc3Q6IHRleHRMaXN0LFxyXG4gICAgb2Zmc2V0OiBvZmZzZXRcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDYW5kbGVUb29sVGlwRGF0YShzZXJpZXMsIHNlcmllc0RhdGEsIG9wdHMsIGluZGV4LCBjYXRlZ29yaWVzLCBleHRyYSkge1xyXG4gIHZhciBvcHRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gNiAmJiBhcmd1bWVudHNbNl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s2XSA6IHt9O1xyXG4gIHZhciBjYWxQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHM7XHJcbiAgbGV0IHVwQ29sb3IgPSBleHRyYS5jb2xvci51cEZpbGw7XHJcbiAgbGV0IGRvd25Db2xvciA9IGV4dHJhLmNvbG9yLmRvd25GaWxsO1xyXG4gIC8v6aKc6Imy6aG65bqP5Li65byA55uY77yM5pS255uY77yM5pyA5L2O77yM5pyA6auYXHJcbiAgbGV0IGNvbG9yID0gW3VwQ29sb3IsIHVwQ29sb3IsIGRvd25Db2xvciwgdXBDb2xvcl07XHJcbiAgdmFyIHRleHRMaXN0ID0gW107XHJcbiAgc2VyaWVzRGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgaWYgKGluZGV4ID09IDApIHtcclxuICAgICAgaWYgKGl0ZW0uZGF0YVsxXSAtIGl0ZW0uZGF0YVswXSA8IDApIHtcclxuICAgICAgICBjb2xvclsxXSA9IGRvd25Db2xvcjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb2xvclsxXSA9IHVwQ29sb3I7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpdGVtLmRhdGFbMF0gPCBzZXJpZXNbaW5kZXggLSAxXVsxXSkge1xyXG4gICAgICAgIGNvbG9yWzBdID0gZG93bkNvbG9yO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLmRhdGFbMV0gPCBpdGVtLmRhdGFbMF0pIHtcclxuICAgICAgICBjb2xvclsxXSA9IGRvd25Db2xvcjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5kYXRhWzJdID4gc2VyaWVzW2luZGV4IC0gMV1bMV0pIHtcclxuICAgICAgICBjb2xvclsyXSA9IHVwQ29sb3I7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0uZGF0YVszXSA8IHNlcmllc1tpbmRleCAtIDFdWzFdKSB7XHJcbiAgICAgICAgY29sb3JbM10gPSBkb3duQ29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCB0ZXh0MSA9IHtcclxuICAgICAgdGV4dDogJ+W8gOebmO+8micgKyBpdGVtLmRhdGFbMF0sXHJcbiAgICAgIGNvbG9yOiBjb2xvclswXVxyXG4gICAgfTtcclxuICAgIGxldCB0ZXh0MiA9IHtcclxuICAgICAgdGV4dDogJ+aUtuebmO+8micgKyBpdGVtLmRhdGFbMV0sXHJcbiAgICAgIGNvbG9yOiBjb2xvclsxXVxyXG4gICAgfTtcclxuICAgIGxldCB0ZXh0MyA9IHtcclxuICAgICAgdGV4dDogJ+acgOS9ju+8micgKyBpdGVtLmRhdGFbMl0sXHJcbiAgICAgIGNvbG9yOiBjb2xvclsyXVxyXG4gICAgfTtcclxuICAgIGxldCB0ZXh0NCA9IHtcclxuICAgICAgdGV4dDogJ+acgOmrmO+8micgKyBpdGVtLmRhdGFbM10sXHJcbiAgICAgIGNvbG9yOiBjb2xvclszXVxyXG4gICAgfTtcclxuICAgIHRleHRMaXN0LnB1c2godGV4dDEsIHRleHQyLCB0ZXh0MywgdGV4dDQpO1xyXG4gIH0pO1xyXG4gIHZhciB2YWxpZENhbFBvaW50cyA9IFtdO1xyXG4gIHZhciBvZmZzZXQgPSB7XHJcbiAgICB4OiAwLFxyXG4gICAgeTogMFxyXG4gIH07XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBwb2ludHMgPSBjYWxQb2ludHNbaV07XHJcbiAgICBpZiAodHlwZW9mIHBvaW50c1tpbmRleF0gIT09ICd1bmRlZmluZWQnICYmIHBvaW50c1tpbmRleF0gIT09IG51bGwpIHtcclxuICAgICAgdmFsaWRDYWxQb2ludHMucHVzaChwb2ludHNbaW5kZXhdKTtcclxuICAgIH1cclxuICB9XHJcbiAgb2Zmc2V0LnggPSBNYXRoLnJvdW5kKHZhbGlkQ2FsUG9pbnRzWzBdWzBdLngpO1xyXG4gIHJldHVybiB7XHJcbiAgICB0ZXh0TGlzdDogdGV4dExpc3QsXHJcbiAgICBvZmZzZXQ6IG9mZnNldFxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbHRlclNlcmllcyhzZXJpZXMpIHtcclxuICBsZXQgdGVtcFNlcmllcyA9IFtdO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc2VyaWVzW2ldLnNob3cgPT0gdHJ1ZSkge1xyXG4gICAgICB0ZW1wU2VyaWVzLnB1c2goc2VyaWVzW2ldKVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdGVtcFNlcmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCBjYWxQb2ludHMsIG9wdHMsIGNvbmZpZykge1xyXG4gIHZhciBvZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDA7XHJcbiAgdmFyIGN1cnJlbnQ9eyBpbmRleDotMSwgZ3JvdXA6W10gfTtcclxuICB2YXIgc3BhY2luZyA9IG9wdHMuY2hhcnREYXRhLmVhY2hTcGFjaW5nIC8gMjtcclxuICBsZXQgeEF4aXNQb2ludHMgPSBbXTtcclxuICBpZiAoY2FsUG9pbnRzICYmIGNhbFBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAoIW9wdHMuY2F0ZWdvcmllcykge1xyXG4gICAgICBzcGFjaW5nID0gMDtcclxuICAgIH1lbHNle1xyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgeEF4aXNQb2ludHMucHVzaChvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50c1tpXSAtIHNwYWNpbmcpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICgob3B0cy50eXBlID09ICdsaW5lJyB8fCBvcHRzLnR5cGUgPT0gJ2FyZWEnKSAmJiBvcHRzLnhBeGlzLmJvdW5kYXJ5R2FwID09ICdqdXN0aWZ5Jykge1xyXG4gICAgICAgIHhBeGlzUG9pbnRzID0gb3B0cy5jaGFydERhdGEueEF4aXNQb2ludHM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpc0luRXhhY3RDaGFydEFyZWEoY3VycmVudFBvaW50cywgb3B0cywgY29uZmlnKSkge1xyXG4gICAgICBpZiAoIW9wdHMuY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGxldCB0aW1lUG9pbnRzID0gQXJyYXkoY2FsUG9pbnRzLmxlbmd0aCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRpbWVQb2ludHNbaV0gPSBBcnJheShjYWxQb2ludHNbaV0ubGVuZ3RoKVxyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjYWxQb2ludHNbaV0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgdGltZVBvaW50c1tpXVtqXSA9IChNYXRoLmFicyhjYWxQb2ludHNbaV1bal0ueCAtIGN1cnJlbnRQb2ludHMueCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IHBvaW50VmFsdWUgPSAgQXJyYXkodGltZVBvaW50cy5sZW5ndGgpO1xyXG4gICAgICAgIGxldCBwb2ludEluZGV4ID0gIEFycmF5KHRpbWVQb2ludHMubGVuZ3RoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbWVQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHBvaW50VmFsdWVbaV0gPSBNYXRoLm1pbi5hcHBseShudWxsLCB0aW1lUG9pbnRzW2ldKTtcclxuICAgICAgICAgIHBvaW50SW5kZXhbaV0gPSB0aW1lUG9pbnRzW2ldLmluZGV4T2YocG9pbnRWYWx1ZVtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBtaW5WYWx1ZSA9IE1hdGgubWluLmFwcGx5KG51bGwsIHBvaW50VmFsdWUpO1xyXG4gICAgICAgIGN1cnJlbnQuaW5kZXggPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50VmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmKHBvaW50VmFsdWVbaV0gPT0gbWluVmFsdWUpe1xyXG4gICAgICAgICAgICBjdXJyZW50Lmdyb3VwLnB1c2goaSk7XHJcbiAgICAgICAgICAgIGN1cnJlbnQuaW5kZXgucHVzaChwb2ludEluZGV4W2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB4QXhpc1BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgICBpZiAoY3VycmVudFBvaW50cy54ICsgb2Zmc2V0ICsgc3BhY2luZyA+IGl0ZW0pIHtcclxuICAgICAgICAgICAgY3VycmVudC5pbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kQmFyQ2hhcnRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgY2FsUG9pbnRzLCBvcHRzLCBjb25maWcpIHtcclxuICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAwO1xyXG4gIHZhciBjdXJyZW50PXsgaW5kZXg6LTEsIGdyb3VwOltdIH07XHJcbiAgdmFyIHNwYWNpbmcgPSBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyAvIDI7XHJcbiAgbGV0IHlBeGlzUG9pbnRzID0gb3B0cy5jaGFydERhdGEueUF4aXNQb2ludHM7XHJcbiAgaWYgKGNhbFBvaW50cyAmJiBjYWxQb2ludHMubGVuZ3RoID4gMCkge1xyXG4gICAgaWYgKGlzSW5FeGFjdENoYXJ0QXJlYShjdXJyZW50UG9pbnRzLCBvcHRzLCBjb25maWcpKSB7XHJcbiAgICAgIHlBeGlzUG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBpZiAoY3VycmVudFBvaW50cy55ICsgb2Zmc2V0ICsgc3BhY2luZyA+IGl0ZW0pIHtcclxuICAgICAgICAgIGN1cnJlbnQuaW5kZXggPSBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZExlZ2VuZEluZGV4KGN1cnJlbnRQb2ludHMsIGxlZ2VuZERhdGEsIG9wdHMpIHtcclxuICBsZXQgY3VycmVudEluZGV4ID0gLTE7XHJcbiAgbGV0IGdhcCA9IDA7XHJcbiAgaWYgKGlzSW5FeGFjdExlZ2VuZEFyZWEoY3VycmVudFBvaW50cywgbGVnZW5kRGF0YS5hcmVhKSkge1xyXG4gICAgbGV0IHBvaW50cyA9IGxlZ2VuZERhdGEucG9pbnRzO1xyXG4gICAgbGV0IGluZGV4ID0gLTE7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gcG9pbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZW0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpbmRleCArPSAxO1xyXG4gICAgICAgIGxldCBhcmVhID0gaXRlbVtqXVsnYXJlYSddO1xyXG4gICAgICAgIGlmIChhcmVhICYmIGN1cnJlbnRQb2ludHMueCA+IGFyZWFbMF0gLSBnYXAgJiYgY3VycmVudFBvaW50cy54IDwgYXJlYVsyXSArIGdhcCAmJiBjdXJyZW50UG9pbnRzLnkgPiBhcmVhWzFdIC0gZ2FwICYmIGN1cnJlbnRQb2ludHMueSA8IGFyZWFbM10gKyBnYXApIHtcclxuICAgICAgICAgIGN1cnJlbnRJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3VycmVudEluZGV4O1xyXG4gIH1cclxuICByZXR1cm4gY3VycmVudEluZGV4O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0luRXhhY3RMZWdlbmRBcmVhKGN1cnJlbnRQb2ludHMsIGFyZWEpIHtcclxuICByZXR1cm4gY3VycmVudFBvaW50cy54ID4gYXJlYS5zdGFydC54ICYmIGN1cnJlbnRQb2ludHMueCA8IGFyZWEuZW5kLnggJiYgY3VycmVudFBvaW50cy55ID4gYXJlYS5zdGFydC55ICYmIGN1cnJlbnRQb2ludHMueSA8IGFyZWEuZW5kLnk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSW5FeGFjdENoYXJ0QXJlYShjdXJyZW50UG9pbnRzLCBvcHRzLCBjb25maWcpIHtcclxuICByZXR1cm4gY3VycmVudFBvaW50cy54IDw9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gKyAxMCAmJiBjdXJyZW50UG9pbnRzLnggPj0gb3B0cy5hcmVhWzNdIC0gMTAgJiYgY3VycmVudFBvaW50cy55ID49IG9wdHMuYXJlYVswXSAmJiBjdXJyZW50UG9pbnRzLnkgPD0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRSYWRhckNoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIHJhZGFyRGF0YSwgY291bnQpIHtcclxuICB2YXIgZWFjaEFuZ2xlQXJlYSA9IDIgKiBNYXRoLlBJIC8gY291bnQ7XHJcbiAgdmFyIGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gIGlmIChpc0luRXhhY3RQaWVDaGFydEFyZWEoY3VycmVudFBvaW50cywgcmFkYXJEYXRhLmNlbnRlciwgcmFkYXJEYXRhLnJhZGl1cykpIHtcclxuICAgIHZhciBmaXhBbmdsZSA9IGZ1bmN0aW9uIGZpeEFuZ2xlKGFuZ2xlKSB7XHJcbiAgICAgIGlmIChhbmdsZSA8IDApIHtcclxuICAgICAgICBhbmdsZSArPSAyICogTWF0aC5QSTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYW5nbGUgPiAyICogTWF0aC5QSSkge1xyXG4gICAgICAgIGFuZ2xlIC09IDIgKiBNYXRoLlBJO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhbmdsZTtcclxuICAgIH07XHJcbiAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHJhZGFyRGF0YS5jZW50ZXIueSAtIGN1cnJlbnRQb2ludHMueSwgY3VycmVudFBvaW50cy54IC0gcmFkYXJEYXRhLmNlbnRlci54KTtcclxuICAgIGFuZ2xlID0gLTEgKiBhbmdsZTtcclxuICAgIGlmIChhbmdsZSA8IDApIHtcclxuICAgICAgYW5nbGUgKz0gMiAqIE1hdGguUEk7XHJcbiAgICB9XHJcbiAgICB2YXIgYW5nbGVMaXN0ID0gcmFkYXJEYXRhLmFuZ2xlTGlzdC5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICBpdGVtID0gZml4QW5nbGUoLTEgKiBpdGVtKTtcclxuICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9KTtcclxuICAgIGFuZ2xlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIHZhciByYW5nZVN0YXJ0ID0gZml4QW5nbGUoaXRlbSAtIGVhY2hBbmdsZUFyZWEgLyAyKTtcclxuICAgICAgdmFyIHJhbmdlRW5kID0gZml4QW5nbGUoaXRlbSArIGVhY2hBbmdsZUFyZWEgLyAyKTtcclxuICAgICAgaWYgKHJhbmdlRW5kIDwgcmFuZ2VTdGFydCkge1xyXG4gICAgICAgIHJhbmdlRW5kICs9IDIgKiBNYXRoLlBJO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChhbmdsZSA+PSByYW5nZVN0YXJ0ICYmIGFuZ2xlIDw9IHJhbmdlRW5kIHx8IGFuZ2xlICsgMiAqIE1hdGguUEkgPj0gcmFuZ2VTdGFydCAmJiBhbmdsZSArIDIgKiBNYXRoLlBJIDw9IHJhbmdlRW5kKSB7XHJcbiAgICAgICAgY3VycmVudEluZGV4ID0gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gY3VycmVudEluZGV4O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kRnVubmVsQ2hhcnRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgZnVubmVsRGF0YSkge1xyXG4gIHZhciBjdXJyZW50SW5kZXggPSAtMTtcclxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZnVubmVsRGF0YS5zZXJpZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgIHZhciBpdGVtID0gZnVubmVsRGF0YS5zZXJpZXNbaV07XHJcbiAgICBpZiAoY3VycmVudFBvaW50cy54ID4gaXRlbS5mdW5uZWxBcmVhWzBdICYmIGN1cnJlbnRQb2ludHMueCA8IGl0ZW0uZnVubmVsQXJlYVsyXSAmJiBjdXJyZW50UG9pbnRzLnkgPiBpdGVtLmZ1bm5lbEFyZWFbMV0gJiYgY3VycmVudFBvaW50cy55IDwgaXRlbS5mdW5uZWxBcmVhWzNdKSB7XHJcbiAgICAgIGN1cnJlbnRJbmRleCA9IGk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudEluZGV4O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kV29yZENoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIHdvcmREYXRhKSB7XHJcbiAgdmFyIGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSB3b3JkRGF0YS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgdmFyIGl0ZW0gPSB3b3JkRGF0YVtpXTtcclxuICAgIGlmIChjdXJyZW50UG9pbnRzLnggPiBpdGVtLmFyZWFbMF0gJiYgY3VycmVudFBvaW50cy54IDwgaXRlbS5hcmVhWzJdICYmIGN1cnJlbnRQb2ludHMueSA+IGl0ZW0uYXJlYVsxXSAmJiBjdXJyZW50UG9pbnRzLnkgPCBpdGVtLmFyZWFbM10pIHtcclxuICAgICAgY3VycmVudEluZGV4ID0gaTtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50SW5kZXg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRNYXBDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCBvcHRzKSB7XHJcbiAgdmFyIGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gIHZhciBjRGF0YSA9IG9wdHMuY2hhcnREYXRhLm1hcERhdGE7XHJcbiAgdmFyIGRhdGEgPSBvcHRzLnNlcmllcztcclxuICB2YXIgdG1wID0gcG9pbnRUb0Nvb3JkaW5hdGUoY3VycmVudFBvaW50cy55LCBjdXJyZW50UG9pbnRzLngsIGNEYXRhLmJvdW5kcywgY0RhdGEuc2NhbGUsIGNEYXRhLnhvZmZzZXQsIGNEYXRhLnlvZmZzZXQpO1xyXG4gIHZhciBwb2kgPSBbdG1wLngsIHRtcC55XTtcclxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZGF0YS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgdmFyIGl0ZW0gPSBkYXRhW2ldLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xyXG4gICAgaWYgKGlzUG9pV2l0aGluUG9seShwb2ksIGl0ZW0sIG9wdHMuY2hhcnREYXRhLm1hcERhdGEubWVyY2F0b3IpKSB7XHJcbiAgICAgIGN1cnJlbnRJbmRleCA9IGk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudEluZGV4O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kUm9zZUNoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIHBpZURhdGEsIG9wdHMpIHtcclxuICB2YXIgY3VycmVudEluZGV4ID0gLTE7XHJcbiAgdmFyIHNlcmllcyA9IGdldFJvc2VEYXRhUG9pbnRzKG9wdHMuX3Nlcmllc18sIG9wdHMuZXh0cmEucm9zZS50eXBlLCBwaWVEYXRhLnJhZGl1cywgcGllRGF0YS5yYWRpdXMpO1xyXG4gIGlmIChwaWVEYXRhICYmIHBpZURhdGEuY2VudGVyICYmIGlzSW5FeGFjdFBpZUNoYXJ0QXJlYShjdXJyZW50UG9pbnRzLCBwaWVEYXRhLmNlbnRlciwgcGllRGF0YS5yYWRpdXMpKSB7XHJcbiAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHBpZURhdGEuY2VudGVyLnkgLSBjdXJyZW50UG9pbnRzLnksIGN1cnJlbnRQb2ludHMueCAtIHBpZURhdGEuY2VudGVyLngpO1xyXG4gICAgYW5nbGUgPSAtYW5nbGU7XHJcbiAgICBpZihvcHRzLmV4dHJhLnJvc2UgJiYgb3B0cy5leHRyYS5yb3NlLm9mZnNldEFuZ2xlKXtcclxuICAgICAgYW5nbGUgPSBhbmdsZSAtIG9wdHMuZXh0cmEucm9zZS5vZmZzZXRBbmdsZSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gc2VyaWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGlmIChpc0luQW5nbGVSYW5nZShhbmdsZSwgc2VyaWVzW2ldLl9zdGFydF8sIHNlcmllc1tpXS5fc3RhcnRfICsgc2VyaWVzW2ldLl9yb3NlX3Byb3BvcnRpb25fICogMiAqIE1hdGguUEkpKSB7XHJcbiAgICAgICAgY3VycmVudEluZGV4ID0gaTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudEluZGV4O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kUGllQ2hhcnRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgcGllRGF0YSwgb3B0cykge1xyXG4gIHZhciBjdXJyZW50SW5kZXggPSAtMTtcclxuICB2YXIgc2VyaWVzID0gZ2V0UGllRGF0YVBvaW50cyhwaWVEYXRhLnNlcmllcyk7XHJcbiAgaWYgKHBpZURhdGEgJiYgcGllRGF0YS5jZW50ZXIgJiYgaXNJbkV4YWN0UGllQ2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIHBpZURhdGEuY2VudGVyLCBwaWVEYXRhLnJhZGl1cykpIHtcclxuICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbjIocGllRGF0YS5jZW50ZXIueSAtIGN1cnJlbnRQb2ludHMueSwgY3VycmVudFBvaW50cy54IC0gcGllRGF0YS5jZW50ZXIueCk7XHJcbiAgICBhbmdsZSA9IC1hbmdsZTtcclxuICAgIGlmKG9wdHMuZXh0cmEucGllICYmIG9wdHMuZXh0cmEucGllLm9mZnNldEFuZ2xlKXtcclxuICAgICAgYW5nbGUgPSBhbmdsZSAtIG9wdHMuZXh0cmEucGllLm9mZnNldEFuZ2xlICogTWF0aC5QSSAvIDE4MDtcclxuICAgIH1cclxuICAgIGlmKG9wdHMuZXh0cmEucmluZyAmJiBvcHRzLmV4dHJhLnJpbmcub2Zmc2V0QW5nbGUpe1xyXG4gICAgICBhbmdsZSA9IGFuZ2xlIC0gb3B0cy5leHRyYS5yaW5nLm9mZnNldEFuZ2xlICogTWF0aC5QSSAvIDE4MDtcclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzZXJpZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgaWYgKGlzSW5BbmdsZVJhbmdlKGFuZ2xlLCBzZXJpZXNbaV0uX3N0YXJ0Xywgc2VyaWVzW2ldLl9zdGFydF8gKyBzZXJpZXNbaV0uX3Byb3BvcnRpb25fICogMiAqIE1hdGguUEkpKSB7XHJcbiAgICAgICAgY3VycmVudEluZGV4ID0gaTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudEluZGV4O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0luRXhhY3RQaWVDaGFydEFyZWEoY3VycmVudFBvaW50cywgY2VudGVyLCByYWRpdXMpIHtcclxuICByZXR1cm4gTWF0aC5wb3coY3VycmVudFBvaW50cy54IC0gY2VudGVyLngsIDIpICsgTWF0aC5wb3coY3VycmVudFBvaW50cy55IC0gY2VudGVyLnksIDIpIDw9IE1hdGgucG93KHJhZGl1cywgMik7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcykge1xyXG4gIHZhciBuZXdQb2ludHMgPSBbXTtcclxuICB2YXIgaXRlbXMgPSBbXTtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYoZWFjaFNlcmllcy5jb25uZWN0TnVsbHMpe1xyXG4gICAgICBpZiAoaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICBpZiAoaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgbmV3UG9pbnRzLnB1c2goaXRlbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpdGVtcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICB9KTtcclxuICBpZiAoaXRlbXMubGVuZ3RoKSB7XHJcbiAgICBuZXdQb2ludHMucHVzaChpdGVtcyk7XHJcbiAgfVxyXG4gIHJldHVybiBuZXdQb2ludHM7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBjYWxMZWdlbmREYXRhKHNlcmllcywgb3B0cywgY29uZmlnLCBjaGFydERhdGEsIGNvbnRleHQpIHtcclxuICBsZXQgbGVnZW5kRGF0YSA9IHtcclxuICAgIGFyZWE6IHtcclxuICAgICAgc3RhcnQ6IHtcclxuICAgICAgICB4OiAwLFxyXG4gICAgICAgIHk6IDBcclxuICAgICAgfSxcclxuICAgICAgZW5kOiB7XHJcbiAgICAgICAgeDogMCxcclxuICAgICAgICB5OiAwXHJcbiAgICAgIH0sXHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgICBoZWlnaHQ6IDAsXHJcbiAgICAgIHdob2xlV2lkdGg6IDAsXHJcbiAgICAgIHdob2xlSGVpZ2h0OiAwXHJcbiAgICB9LFxyXG4gICAgcG9pbnRzOiBbXSxcclxuICAgIHdpZHRoQXJyOiBbXSxcclxuICAgIGhlaWdodEFycjogW11cclxuICB9O1xyXG4gIGlmIChvcHRzLmxlZ2VuZC5zaG93ID09PSBmYWxzZSkge1xyXG4gICAgY2hhcnREYXRhLmxlZ2VuZERhdGEgPSBsZWdlbmREYXRhO1xyXG4gICAgcmV0dXJuIGxlZ2VuZERhdGE7XHJcbiAgfVxyXG4gIGxldCBwYWRkaW5nID0gb3B0cy5sZWdlbmQucGFkZGluZyAqIG9wdHMucGl4O1xyXG4gIGxldCBtYXJnaW4gPSBvcHRzLmxlZ2VuZC5tYXJnaW4gKiBvcHRzLnBpeDtcclxuICBsZXQgZm9udFNpemUgPSBvcHRzLmxlZ2VuZC5mb250U2l6ZSA/IG9wdHMubGVnZW5kLmZvbnRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgbGV0IHNoYXBlV2lkdGggPSAxNSAqIG9wdHMucGl4O1xyXG4gIGxldCBzaGFwZVJpZ2h0ID0gNSAqIG9wdHMucGl4O1xyXG4gIGxldCBsaW5lSGVpZ2h0ID0gTWF0aC5tYXgob3B0cy5sZWdlbmQubGluZUhlaWdodCAqIG9wdHMucGl4LCBmb250U2l6ZSk7XHJcbiAgaWYgKG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICd0b3AnIHx8IG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICdib3R0b20nKSB7XHJcbiAgICBsZXQgbGVnZW5kTGlzdCA9IFtdO1xyXG4gICAgbGV0IHdpZHRoQ291bnQgPSAwO1xyXG4gICAgbGV0IHdpZHRoQ291bnRBcnIgPSBbXTtcclxuICAgIGxldCBjdXJyZW50Um93ID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgICAgY29uc3QgbGVnZW5kVGV4dCA9IGl0ZW0ubGVnZW5kVGV4dCA/IGl0ZW0ubGVnZW5kVGV4dCA6IGl0ZW0ubmFtZTtcclxuICAgICAgbGV0IGl0ZW1XaWR0aCA9IHNoYXBlV2lkdGggKyBzaGFwZVJpZ2h0ICsgbWVhc3VyZVRleHQobGVnZW5kVGV4dCB8fCAndW5kZWZpbmVkJywgZm9udFNpemUsIGNvbnRleHQpICsgb3B0cy5sZWdlbmQuaXRlbUdhcCAqIG9wdHMucGl4O1xyXG4gICAgICBpZiAod2lkdGhDb3VudCArIGl0ZW1XaWR0aCA+IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIHtcclxuICAgICAgICBsZWdlbmRMaXN0LnB1c2goY3VycmVudFJvdyk7XHJcbiAgICAgICAgd2lkdGhDb3VudEFyci5wdXNoKHdpZHRoQ291bnQgLSBvcHRzLmxlZ2VuZC5pdGVtR2FwICogb3B0cy5waXgpO1xyXG4gICAgICAgIHdpZHRoQ291bnQgPSBpdGVtV2lkdGg7XHJcbiAgICAgICAgY3VycmVudFJvdyA9IFtpdGVtXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB3aWR0aENvdW50ICs9IGl0ZW1XaWR0aDtcclxuICAgICAgICBjdXJyZW50Um93LnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjdXJyZW50Um93Lmxlbmd0aCkge1xyXG4gICAgICBsZWdlbmRMaXN0LnB1c2goY3VycmVudFJvdyk7XHJcbiAgICAgIHdpZHRoQ291bnRBcnIucHVzaCh3aWR0aENvdW50IC0gb3B0cy5sZWdlbmQuaXRlbUdhcCAqIG9wdHMucGl4KTtcclxuICAgICAgbGVnZW5kRGF0YS53aWR0aEFyciA9IHdpZHRoQ291bnRBcnI7XHJcbiAgICAgIGxldCBsZWdlbmRXaWR0aCA9IE1hdGgubWF4LmFwcGx5KG51bGwsIHdpZHRoQ291bnRBcnIpO1xyXG4gICAgICBzd2l0Y2ggKG9wdHMubGVnZW5kLmZsb2F0KSB7XHJcbiAgICAgICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueCA9IG9wdHMuYXJlYVszXTtcclxuICAgICAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueCA9IG9wdHMuYXJlYVszXSArIGxlZ2VuZFdpZHRoICsgMiAqIHBhZGRpbmc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBsZWdlbmRXaWR0aCAtIDIgKiBwYWRkaW5nO1xyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC54ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueCA9IChvcHRzLndpZHRoIC0gbGVnZW5kV2lkdGgpIC8gMiAtIHBhZGRpbmc7XHJcbiAgICAgICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnggPSAob3B0cy53aWR0aCArIGxlZ2VuZFdpZHRoKSAvIDIgKyBwYWRkaW5nO1xyXG4gICAgICB9XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS53aWR0aCA9IGxlZ2VuZFdpZHRoICsgMiAqIHBhZGRpbmc7XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS53aG9sZVdpZHRoID0gbGVnZW5kV2lkdGggKyAyICogcGFkZGluZztcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLmhlaWdodCA9IGxlZ2VuZExpc3QubGVuZ3RoICogbGluZUhlaWdodCArIDIgKiBwYWRkaW5nO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEud2hvbGVIZWlnaHQgPSBsZWdlbmRMaXN0Lmxlbmd0aCAqIGxpbmVIZWlnaHQgKyAyICogcGFkZGluZyArIDIgKiBtYXJnaW47XHJcbiAgICAgIGxlZ2VuZERhdGEucG9pbnRzID0gbGVnZW5kTGlzdDtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgbGV0IGxlbiA9IHNlcmllcy5sZW5ndGg7XHJcbiAgICBsZXQgbWF4SGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0gLSAyICogbWFyZ2luIC0gMiAqIHBhZGRpbmc7XHJcbiAgICBsZXQgbWF4TGVuZ3RoID0gTWF0aC5taW4oTWF0aC5mbG9vcihtYXhIZWlnaHQgLyBsaW5lSGVpZ2h0KSwgbGVuKTtcclxuICAgIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQgPSBtYXhMZW5ndGggKiBsaW5lSGVpZ2h0ICsgcGFkZGluZyAqIDI7XHJcbiAgICBsZWdlbmREYXRhLmFyZWEud2hvbGVIZWlnaHQgPSBtYXhMZW5ndGggKiBsaW5lSGVpZ2h0ICsgcGFkZGluZyAqIDI7XHJcbiAgICBzd2l0Y2ggKG9wdHMubGVnZW5kLmZsb2F0KSB7XHJcbiAgICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnkgPSBvcHRzLmFyZWFbMF0gKyBtYXJnaW47XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC55ID0gb3B0cy5hcmVhWzBdICsgbWFyZ2luICsgbGVnZW5kRGF0YS5hcmVhLmhlaWdodDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYm90dG9tJzpcclxuICAgICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gbWFyZ2luIC0gbGVnZW5kRGF0YS5hcmVhLmhlaWdodDtcclxuICAgICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSAtIG1hcmdpbjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueSA9IChvcHRzLmhlaWdodCAtIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQpIC8gMjtcclxuICAgICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnkgPSAob3B0cy5oZWlnaHQgKyBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0KSAvIDI7XHJcbiAgICB9XHJcbiAgICBsZXQgbGluZU51bSA9IGxlbiAlIG1heExlbmd0aCA9PT0gMCA/IGxlbiAvIG1heExlbmd0aCA6IE1hdGguZmxvb3IoKGxlbiAvIG1heExlbmd0aCkgKyAxKTtcclxuICAgIGxldCBjdXJyZW50Um93ID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVOdW07IGkrKykge1xyXG4gICAgICBsZXQgdGVtcCA9IHNlcmllcy5zbGljZShpICogbWF4TGVuZ3RoLCBpICogbWF4TGVuZ3RoICsgbWF4TGVuZ3RoKTtcclxuICAgICAgY3VycmVudFJvdy5wdXNoKHRlbXApO1xyXG4gICAgfVxyXG4gICAgbGVnZW5kRGF0YS5wb2ludHMgPSBjdXJyZW50Um93O1xyXG4gICAgaWYgKGN1cnJlbnRSb3cubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudFJvdy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBpdGVtID0gY3VycmVudFJvd1tpXTtcclxuICAgICAgICBsZXQgbWF4V2lkdGggPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaXRlbS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgbGV0IGl0ZW1XaWR0aCA9IHNoYXBlV2lkdGggKyBzaGFwZVJpZ2h0ICsgbWVhc3VyZVRleHQoaXRlbVtqXS5uYW1lIHx8ICd1bmRlZmluZWQnLCBmb250U2l6ZSwgY29udGV4dCkgKyBvcHRzLmxlZ2VuZC5pdGVtR2FwICogb3B0cy5waXg7XHJcbiAgICAgICAgICBpZiAoaXRlbVdpZHRoID4gbWF4V2lkdGgpIHtcclxuICAgICAgICAgICAgbWF4V2lkdGggPSBpdGVtV2lkdGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxlZ2VuZERhdGEud2lkdGhBcnIucHVzaChtYXhXaWR0aCk7XHJcbiAgICAgICAgbGVnZW5kRGF0YS5oZWlnaHRBcnIucHVzaChpdGVtLmxlbmd0aCAqIGxpbmVIZWlnaHQgKyBwYWRkaW5nICogMik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGxlZ2VuZFdpZHRoID0gMFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlZ2VuZERhdGEud2lkdGhBcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZWdlbmRXaWR0aCArPSBsZWdlbmREYXRhLndpZHRoQXJyW2ldO1xyXG4gICAgICB9XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS53aWR0aCA9IGxlZ2VuZFdpZHRoIC0gb3B0cy5sZWdlbmQuaXRlbUdhcCAqIG9wdHMucGl4ICsgMiAqIHBhZGRpbmc7XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS53aG9sZVdpZHRoID0gbGVnZW5kRGF0YS5hcmVhLndpZHRoICsgcGFkZGluZztcclxuICAgIH1cclxuICB9XHJcbiAgc3dpdGNoIChvcHRzLmxlZ2VuZC5wb3NpdGlvbikge1xyXG4gICAgY2FzZSAndG9wJzpcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnkgPSBvcHRzLmFyZWFbMF0gKyBtYXJnaW47XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueSA9IG9wdHMuYXJlYVswXSArIG1hcmdpbiArIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQ7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYm90dG9tJzpcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSAtIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQgLSBtYXJnaW47XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gbWFyZ2luO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuc3RhcnQueCA9IG9wdHMuYXJlYVszXTtcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC54ID0gb3B0cy5hcmVhWzNdICsgbGVnZW5kRGF0YS5hcmVhLndpZHRoO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gbGVnZW5kRGF0YS5hcmVhLndpZHRoO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdO1xyXG4gICAgICBicmVhaztcclxuICB9XHJcbiAgY2hhcnREYXRhLmxlZ2VuZERhdGEgPSBsZWdlbmREYXRhO1xyXG4gIHJldHVybiBsZWdlbmREYXRhO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxDYXRlZ29yaWVzRGF0YShjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGVhY2hTcGFjaW5nLCBjb250ZXh0KSB7XHJcbiAgdmFyIHJlc3VsdCA9IHtcclxuICAgIGFuZ2xlOiAwLFxyXG4gICAgeEF4aXNIZWlnaHQ6IGNvbmZpZy54QXhpc0hlaWdodFxyXG4gIH07XHJcbiAgdmFyIGZvbnRTaXplID0gb3B0cy54QXhpcy5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICB2YXIgY2F0ZWdvcmllc1RleHRMZW50aCA9IGNhdGVnb3JpZXMubWFwKGZ1bmN0aW9uKGl0ZW0saW5kZXgpIHtcclxuICAgIHZhciB4aXRlbSA9IG9wdHMueEF4aXMuZm9ybWF0dGVyID8gb3B0cy54QXhpcy5mb3JtYXR0ZXIoaXRlbSxpbmRleCxvcHRzKSA6IGl0ZW07XHJcbiAgICByZXR1cm4gbWVhc3VyZVRleHQoU3RyaW5nKHhpdGVtKSwgZm9udFNpemUsIGNvbnRleHQpO1xyXG4gIH0pO1xyXG4gIFxyXG4gIHZhciBtYXhUZXh0TGVuZ3RoID0gTWF0aC5tYXguYXBwbHkodGhpcywgY2F0ZWdvcmllc1RleHRMZW50aCk7XHJcbiAgaWYgKG9wdHMueEF4aXMucm90YXRlTGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgcmVzdWx0LmFuZ2xlID0gb3B0cy54QXhpcy5yb3RhdGVBbmdsZSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICBsZXQgdGVtcEhlaWdodCA9IDIgKiBjb25maWcueEF4aXNUZXh0UGFkZGluZyArICBNYXRoLmFicyhtYXhUZXh0TGVuZ3RoICogTWF0aC5zaW4ocmVzdWx0LmFuZ2xlKSlcclxuICAgIHRlbXBIZWlnaHQgPSB0ZW1wSGVpZ2h0IDwgZm9udFNpemUgKyAyICogY29uZmlnLnhBeGlzVGV4dFBhZGRpbmcgPyB0ZW1wSGVpZ2h0ICsgMiAqIGNvbmZpZy54QXhpc1RleHRQYWRkaW5nIDogdGVtcEhlaWdodDtcclxuICAgIGlmKG9wdHMuZW5hYmxlU2Nyb2xsID09IHRydWUgJiYgb3B0cy54QXhpcy5zY3JvbGxTaG93ID09IHRydWUpe1xyXG4gICAgICB0ZW1wSGVpZ2h0ICs9IDEyICogb3B0cy5waXg7XHJcbiAgICB9XHJcbiAgICByZXN1bHQueEF4aXNIZWlnaHQgPSB0ZW1wSGVpZ2h0O1xyXG4gIH1cclxuICBpZiAob3B0cy54QXhpcy5kaXNhYmxlZCl7XHJcbiAgICByZXN1bHQueEF4aXNIZWlnaHQgPSAwO1xyXG4gIH1cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRYQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBzdGFjaykge1xyXG4gIHZhciBpbmRleCA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogLTE7XHJcbiAgdmFyIGRhdGE7XHJcbiAgaWYgKHN0YWNrID09ICdzdGFjaycpIHtcclxuICAgIGRhdGEgPSBkYXRhQ29tYmluZVN0YWNrKHNlcmllcywgb3B0cy5jYXRlZ29yaWVzLmxlbmd0aCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGRhdGEgPSBkYXRhQ29tYmluZShzZXJpZXMpO1xyXG4gIH1cclxuICB2YXIgc29ydGVkID0gW107XHJcbiAgLy8gcmVtb3ZlIG51bGwgZnJvbSBkYXRhXHJcbiAgZGF0YSA9IGRhdGEuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIC8vcmV0dXJuIGl0ZW0gIT09IG51bGw7XHJcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgaWYgKGl0ZW0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpIHtcclxuICAgICAgICByZXR1cm4gaXRlbSAhPT0gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZSAhPT0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGl0ZW0gIT09IG51bGw7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0Jykge1xyXG4gICAgICBpZiAoaXRlbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpLmluZGV4T2YoJ0FycmF5JykgPiAtMSkge1xyXG4gICAgICAgIGlmIChvcHRzLnR5cGUgPT0gJ2NhbmRsZScpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKGZ1bmN0aW9uKHN1Yml0ZW0pIHtcclxuICAgICAgICAgICAgc29ydGVkLnB1c2goc3ViaXRlbSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzb3J0ZWQucHVzaChpdGVtWzBdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc29ydGVkLnB1c2goaXRlbS52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNvcnRlZC5wdXNoKGl0ZW0pO1xyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIHZhciBtaW5EYXRhID0gMDtcclxuICB2YXIgbWF4RGF0YSA9IDA7XHJcbiAgaWYgKHNvcnRlZC5sZW5ndGggPiAwKSB7XHJcbiAgICBtaW5EYXRhID0gTWF0aC5taW4uYXBwbHkodGhpcywgc29ydGVkKTtcclxuICAgIG1heERhdGEgPSBNYXRoLm1heC5hcHBseSh0aGlzLCBzb3J0ZWQpO1xyXG4gIH1cclxuICAvL+S4uuS6huWFvOWuuXYxLjkuMOS5i+WJjeeahOmhueebrlxyXG4gIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICBpZiAodHlwZW9mIG9wdHMueEF4aXMuZGF0YVtpbmRleF0ubWluID09PSAnbnVtYmVyJykge1xyXG4gICAgICBtaW5EYXRhID0gTWF0aC5taW4ob3B0cy54QXhpcy5kYXRhW2luZGV4XS5taW4sIG1pbkRhdGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBvcHRzLnhBeGlzLmRhdGFbaW5kZXhdLm1heCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgbWF4RGF0YSA9IE1hdGgubWF4KG9wdHMueEF4aXMuZGF0YVtpbmRleF0ubWF4LCBtYXhEYXRhKTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKHR5cGVvZiBvcHRzLnhBeGlzLm1pbiA9PT0gJ251bWJlcicpIHtcclxuICAgICAgbWluRGF0YSA9IE1hdGgubWluKG9wdHMueEF4aXMubWluLCBtaW5EYXRhKTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygb3B0cy54QXhpcy5tYXggPT09ICdudW1iZXInKSB7XHJcbiAgICAgIG1heERhdGEgPSBNYXRoLm1heChvcHRzLnhBeGlzLm1heCwgbWF4RGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChtaW5EYXRhID09PSBtYXhEYXRhKSB7XHJcbiAgICB2YXIgcmFuZ2VTcGFuID0gbWF4RGF0YSB8fCAxMDtcclxuICAgIG1heERhdGEgKz0gcmFuZ2VTcGFuO1xyXG4gIH1cclxuICAvL3ZhciBkYXRhUmFuZ2UgPSBnZXREYXRhUmFuZ2UobWluRGF0YSwgbWF4RGF0YSk7XHJcbiAgdmFyIG1pblJhbmdlID0gbWluRGF0YTtcclxuICB2YXIgbWF4UmFuZ2UgPSBtYXhEYXRhO1xyXG4gIHZhciByYW5nZSA9IFtdO1xyXG4gIHZhciBlYWNoUmFuZ2UgPSAobWF4UmFuZ2UgLSBtaW5SYW5nZSkgLyBvcHRzLnhBeGlzLnNwbGl0TnVtYmVyO1xyXG4gIGZvciAodmFyIGkgPSAwOyBpIDw9IG9wdHMueEF4aXMuc3BsaXROdW1iZXI7IGkrKykge1xyXG4gICAgcmFuZ2UucHVzaChtaW5SYW5nZSArIGVhY2hSYW5nZSAqIGkpO1xyXG4gIH1cclxuICByZXR1cm4gcmFuZ2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbFhBeGlzRGF0YShzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIC8v5aCG5Y+g5Zu+6YeN566XWei9tFxyXG4gIHZhciBjb2x1bW5zdHlsZSA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogXCJcIlxyXG4gIH0sIG9wdHMuZXh0cmEuYmFyKTtcclxuICB2YXIgcmVzdWx0ID0ge1xyXG4gICAgYW5nbGU6IDAsXHJcbiAgICB4QXhpc0hlaWdodDogY29uZmlnLnhBeGlzSGVpZ2h0XHJcbiAgfTtcclxuICByZXN1bHQucmFuZ2VzID0gZ2V0WEF4aXNUZXh0TGlzdChzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29sdW1uc3R5bGUudHlwZSk7XHJcbiAgcmVzdWx0LnJhbmdlc0Zvcm1hdCA9IHJlc3VsdC5yYW5nZXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIC8vaXRlbSA9IG9wdHMueEF4aXMuZm9ybWF0dGVyID8gb3B0cy54QXhpcy5mb3JtYXR0ZXIoaXRlbSkgOiB1dGlsLnRvRml4ZWQoaXRlbSwgMik7XHJcbiAgICBpdGVtID0gdXRpbC50b0ZpeGVkKGl0ZW0sIDIpO1xyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfSk7XHJcbiAgdmFyIHhBeGlzU2NhbGVWYWx1ZXMgPSByZXN1bHQucmFuZ2VzLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICAvLyDlpoLmnpzliLvluqblgLzmmK/mta7ngrnmlbAs5YiZ5L+d55WZ5Lik5L2N5bCP5pWwXHJcbiAgICBpdGVtID0gdXRpbC50b0ZpeGVkKGl0ZW0sIDIpO1xyXG4gICAgLy8g6Iul5pyJ6Ieq5a6a5LmJ5qC85byP5YiZ6LCD55So6Ieq5a6a5LmJ55qE5qC85byP5YyW5Ye95pWwXHJcbiAgICAvL2l0ZW0gPSBvcHRzLnhBeGlzLmZvcm1hdHRlciA/IG9wdHMueEF4aXMuZm9ybWF0dGVyKE51bWJlcihpdGVtKSkgOiBpdGVtO1xyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfSk7XHJcbiAgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbihyZXN1bHQsIGdldFhBeGlzUG9pbnRzKHhBeGlzU2NhbGVWYWx1ZXMsIG9wdHMsIGNvbmZpZykpO1xyXG4gIC8vIOiuoeeul1jovbTliLvluqbnmoTlsZ7mgKforazlpoLmr4/kuKrliLvluqbnmoTpl7TpmpQs5Yi75bqm55qE6LW35aeL54K5XFznu5PmnZ/ngrnku6Xlj4rmgLvplb9cclxuICB2YXIgZWFjaFNwYWNpbmcgPSByZXN1bHQuZWFjaFNwYWNpbmc7XHJcbiAgdmFyIHRleHRMZW5ndGggPSB4QXhpc1NjYWxlVmFsdWVzLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICByZXR1cm4gbWVhc3VyZVRleHQoaXRlbSwgb3B0cy54QXhpcy5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCk7XHJcbiAgfSk7XHJcbiAgLy8gZ2V0IG1heCBsZW5ndGggb2YgY2F0ZWdvcmllcyB0ZXh0XHJcbiAgdmFyIG1heFRleHRMZW5ndGggPSBNYXRoLm1heC5hcHBseSh0aGlzLCB0ZXh0TGVuZ3RoKTtcclxuICAvLyDlpoLmnpzliLvluqblgLzmlofmnKzlhoXlrrnov4fplb8s5YiZ5bCG5YW26YCG5pe26ZKI5peL6L2sNDXCsFxyXG4gIGlmIChtYXhUZXh0TGVuZ3RoICsgMiAqIGNvbmZpZy54QXhpc1RleHRQYWRkaW5nID4gZWFjaFNwYWNpbmcpIHtcclxuICAgIHJlc3VsdC5hbmdsZSA9IDQ1ICogTWF0aC5QSSAvIDE4MDtcclxuICAgIHJlc3VsdC54QXhpc0hlaWdodCA9IDIgKiBjb25maWcueEF4aXNUZXh0UGFkZGluZyArIG1heFRleHRMZW5ndGggKiBNYXRoLnNpbihyZXN1bHQuYW5nbGUpO1xyXG4gIH1cclxuICBpZiAob3B0cy54QXhpcy5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgcmVzdWx0LnhBeGlzSGVpZ2h0ID0gMDtcclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UmFkYXJEYXRhUG9pbnRzKGFuZ2xlTGlzdCwgY2VudGVyLCByYWRpdXMsIHNlcmllcywgb3B0cykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiAxO1xyXG4gIHZhciByYWRhck9wdGlvbiA9IG9wdHMuZXh0cmEucmFkYXIgfHwge307XHJcbiAgcmFkYXJPcHRpb24ubWF4ID0gcmFkYXJPcHRpb24ubWF4IHx8IDA7XHJcbiAgdmFyIG1heERhdGEgPSBNYXRoLm1heChyYWRhck9wdGlvbi5tYXgsIE1hdGgubWF4LmFwcGx5KG51bGwsIGRhdGFDb21iaW5lKHNlcmllcykpKTtcclxuICB2YXIgZGF0YSA9IFtdO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgZWFjaCA9IHNlcmllc1tpXTtcclxuICAgIGxldCBsaXN0SXRlbSA9IHt9O1xyXG4gICAgbGlzdEl0ZW0uY29sb3IgPSBlYWNoLmNvbG9yO1xyXG4gICAgbGlzdEl0ZW0ubGVnZW5kU2hhcGUgPSBlYWNoLmxlZ2VuZFNoYXBlO1xyXG4gICAgbGlzdEl0ZW0ucG9pbnRTaGFwZSA9IGVhY2gucG9pbnRTaGFwZTtcclxuICAgIGxpc3RJdGVtLmRhdGEgPSBbXTtcclxuICAgIGVhY2guZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGxldCB0bXAgPSB7fTtcclxuICAgICAgdG1wLmFuZ2xlID0gYW5nbGVMaXN0W2luZGV4XTtcclxuICAgICAgdG1wLnByb3BvcnRpb24gPSBpdGVtIC8gbWF4RGF0YTtcclxuICAgICAgdG1wLnZhbHVlID0gaXRlbTtcclxuICAgICAgdG1wLnBvc2l0aW9uID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocmFkaXVzICogdG1wLnByb3BvcnRpb24gKiBwcm9jZXNzICogTWF0aC5jb3ModG1wLmFuZ2xlKSwgcmFkaXVzICogdG1wLnByb3BvcnRpb24gKiBwcm9jZXNzICogTWF0aC5zaW4odG1wLmFuZ2xlKSwgY2VudGVyKTtcclxuICAgICAgbGlzdEl0ZW0uZGF0YS5wdXNoKHRtcCk7XHJcbiAgICB9KTtcclxuICAgIGRhdGEucHVzaChsaXN0SXRlbSk7XHJcbiAgfVxyXG4gIHJldHVybiBkYXRhO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRQaWVEYXRhUG9pbnRzKHNlcmllcywgcmFkaXVzKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDE7XHJcbiAgdmFyIGNvdW50ID0gMDtcclxuICB2YXIgX3N0YXJ0XyA9IDA7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gc2VyaWVzW2ldO1xyXG4gICAgaXRlbS5kYXRhID0gaXRlbS5kYXRhID09PSBudWxsID8gMCA6IGl0ZW0uZGF0YTtcclxuICAgIGNvdW50ICs9IGl0ZW0uZGF0YTtcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gc2VyaWVzW2ldO1xyXG4gICAgaXRlbS5kYXRhID0gaXRlbS5kYXRhID09PSBudWxsID8gMCA6IGl0ZW0uZGF0YTtcclxuICAgIGlmIChjb3VudCA9PT0gMCkge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IDEgLyBzZXJpZXMubGVuZ3RoICogcHJvY2VzcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gaXRlbS5kYXRhIC8gY291bnQgKiBwcm9jZXNzO1xyXG4gICAgfVxyXG4gICAgaXRlbS5fcmFkaXVzXyA9IHJhZGl1cztcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gc2VyaWVzW2ldO1xyXG4gICAgaXRlbS5fc3RhcnRfID0gX3N0YXJ0XztcclxuICAgIF9zdGFydF8gKz0gMiAqIGl0ZW0uX3Byb3BvcnRpb25fICogTWF0aC5QSTtcclxuICB9XHJcbiAgcmV0dXJuIHNlcmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RnVubmVsRGF0YVBvaW50cyhzZXJpZXMsIHJhZGl1cywgb3B0aW9uLCBlYWNoU3BhY2luZykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZihvcHRpb24udHlwZSA9PSAnZnVubmVsJyl7XHJcbiAgICAgIHNlcmllc1tpXS5yYWRpdXMgPSBzZXJpZXNbaV0uZGF0YSAvIHNlcmllc1swXS5kYXRhICogcmFkaXVzICogcHJvY2VzcztcclxuICAgIH1lbHNle1xyXG4gICAgICBzZXJpZXNbaV0ucmFkaXVzID0gIChlYWNoU3BhY2luZyAqIChzZXJpZXMubGVuZ3RoIC0gaSkpIC8gKGVhY2hTcGFjaW5nICogc2VyaWVzLmxlbmd0aCkgKiByYWRpdXMgKiBwcm9jZXNzO1xyXG4gICAgfVxyXG4gICAgc2VyaWVzW2ldLl9wcm9wb3J0aW9uXyA9IHNlcmllc1tpXS5kYXRhIC8gc2VyaWVzWzBdLmRhdGE7XHJcbiAgfVxyXG4gIC8vIGlmKG9wdGlvbi50eXBlICE9PSAncHlyYW1pZCcpe1xyXG4gIC8vICAgc2VyaWVzLnJldmVyc2UoKTtcclxuICAvLyB9XHJcbiAgcmV0dXJuIHNlcmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Um9zZURhdGFQb2ludHMoc2VyaWVzLCB0eXBlLCBtaW5SYWRpdXMsIHJhZGl1cykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBjb3VudCA9IDA7XHJcbiAgdmFyIF9zdGFydF8gPSAwO1xyXG4gIHZhciBkYXRhQXJyID0gW107XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gc2VyaWVzW2ldO1xyXG4gICAgaXRlbS5kYXRhID0gaXRlbS5kYXRhID09PSBudWxsID8gMCA6IGl0ZW0uZGF0YTtcclxuICAgIGNvdW50ICs9IGl0ZW0uZGF0YTtcclxuICAgIGRhdGFBcnIucHVzaChpdGVtLmRhdGEpO1xyXG4gIH1cclxuICB2YXIgbWluRGF0YSA9IE1hdGgubWluLmFwcGx5KG51bGwsIGRhdGFBcnIpO1xyXG4gIHZhciBtYXhEYXRhID0gTWF0aC5tYXguYXBwbHkobnVsbCwgZGF0YUFycik7XHJcbiAgdmFyIHJhZGl1c0xlbmd0aCA9IHJhZGl1cyAtIG1pblJhZGl1cztcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgaWYgKGNvdW50ID09PSAwKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gMSAvIHNlcmllcy5sZW5ndGggKiBwcm9jZXNzO1xyXG4gICAgICBpdGVtLl9yb3NlX3Byb3BvcnRpb25fID0gMSAvIHNlcmllcy5sZW5ndGggKiBwcm9jZXNzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSBpdGVtLmRhdGEgLyBjb3VudCAqIHByb2Nlc3M7XHJcbiAgICAgIGlmKHR5cGUgPT0gJ2FyZWEnKXtcclxuICAgICAgICBpdGVtLl9yb3NlX3Byb3BvcnRpb25fID0gMSAvIHNlcmllcy5sZW5ndGggKiBwcm9jZXNzO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpdGVtLl9yb3NlX3Byb3BvcnRpb25fID0gaXRlbS5kYXRhIC8gY291bnQgKiBwcm9jZXNzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpdGVtLl9yYWRpdXNfID0gbWluUmFkaXVzICsgcmFkaXVzTGVuZ3RoICogKChpdGVtLmRhdGEgLSBtaW5EYXRhKSAvIChtYXhEYXRhIC0gbWluRGF0YSkpIHx8IHJhZGl1cztcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gc2VyaWVzW2ldO1xyXG4gICAgaXRlbS5fc3RhcnRfID0gX3N0YXJ0XztcclxuICAgIF9zdGFydF8gKz0gMiAqIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gKiBNYXRoLlBJO1xyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRBcmNiYXJEYXRhUG9pbnRzKHNlcmllcywgYXJjYmFyT3B0aW9uKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDE7XHJcbiAgaWYgKHByb2Nlc3MgPT0gMSkge1xyXG4gICAgcHJvY2VzcyA9IDAuOTk5OTk5O1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgbGV0IHRvdGFsQW5nbGU7XHJcbiAgICBpZiAoYXJjYmFyT3B0aW9uLnR5cGUgPT0gJ2NpcmNsZScpIHtcclxuICAgICAgdG90YWxBbmdsZSA9IDI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZihhcmNiYXJPcHRpb24uZGlyZWN0aW9uID09ICdjY3cnKXtcclxuICAgICAgICBpZiAoYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGUgPCBhcmNiYXJPcHRpb24uZW5kQW5nbGUpIHtcclxuICAgICAgICAgIHRvdGFsQW5nbGUgPSAyICsgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGUgLSBhcmNiYXJPcHRpb24uZW5kQW5nbGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRvdGFsQW5nbGUgPSBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSAtIGFyY2Jhck9wdGlvbi5lbmRBbmdsZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmIChhcmNiYXJPcHRpb24uZW5kQW5nbGUgPCBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSkge1xyXG4gICAgICAgICAgdG90YWxBbmdsZSA9IDIgKyBhcmNiYXJPcHRpb24uZW5kQW5nbGUgLSBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdG90YWxBbmdsZSA9IGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlIC0gYXJjYmFyT3B0aW9uLmVuZEFuZ2xlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaXRlbS5fcHJvcG9ydGlvbl8gPSB0b3RhbEFuZ2xlICogaXRlbS5kYXRhICogcHJvY2VzcyArIGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gICAgaWYoYXJjYmFyT3B0aW9uLmRpcmVjdGlvbiA9PSAnY2N3Jyl7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGUgLSB0b3RhbEFuZ2xlICogaXRlbS5kYXRhICogcHJvY2VzcyA7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS5fcHJvcG9ydGlvbl8gPj0gMikge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uX3Byb3BvcnRpb25fICUgMjtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHNlcmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0R2F1Z2VBcmNiYXJEYXRhUG9pbnRzKHNlcmllcywgYXJjYmFyT3B0aW9uKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDE7XHJcbiAgaWYgKHByb2Nlc3MgPT0gMSkge1xyXG4gICAgcHJvY2VzcyA9IDAuOTk5OTk5O1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgbGV0IHRvdGFsQW5nbGU7XHJcbiAgICBpZiAoYXJjYmFyT3B0aW9uLnR5cGUgPT0gJ2NpcmNsZScpIHtcclxuICAgICAgdG90YWxBbmdsZSA9IDI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoYXJjYmFyT3B0aW9uLmVuZEFuZ2xlIDwgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGUpIHtcclxuICAgICAgICB0b3RhbEFuZ2xlID0gMiArIGFyY2Jhck9wdGlvbi5lbmRBbmdsZSAtIGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRvdGFsQW5nbGUgPSBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSAtIGFyY2Jhck9wdGlvbi5lbmRBbmdsZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaXRlbS5fcHJvcG9ydGlvbl8gPSB0b3RhbEFuZ2xlICogaXRlbS5kYXRhICogcHJvY2VzcyArIGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gICAgaWYgKGl0ZW0uX3Byb3BvcnRpb25fID49IDIpIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSBpdGVtLl9wcm9wb3J0aW9uXyAlIDI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBzZXJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEdhdWdlQXhpc1BvaW50cyhjYXRlZ29yaWVzLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSkge1xyXG4gIGxldCB0b3RhbEFuZ2xlID0gc3RhcnRBbmdsZSAtIGVuZEFuZ2xlICsgMTtcclxuICBsZXQgdGVtcFN0YXJ0QW5nbGUgPSBzdGFydEFuZ2xlO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2F0ZWdvcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgY2F0ZWdvcmllc1tpXS52YWx1ZSA9IGNhdGVnb3JpZXNbaV0udmFsdWUgPT09IG51bGwgPyAwIDogY2F0ZWdvcmllc1tpXS52YWx1ZTtcclxuICAgIGNhdGVnb3JpZXNbaV0uX3N0YXJ0QW5nbGVfID0gdGVtcFN0YXJ0QW5nbGU7XHJcbiAgICBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gPSB0b3RhbEFuZ2xlICogY2F0ZWdvcmllc1tpXS52YWx1ZSArIHN0YXJ0QW5nbGU7XHJcbiAgICBpZiAoY2F0ZWdvcmllc1tpXS5fZW5kQW5nbGVfID49IDIpIHtcclxuICAgICAgY2F0ZWdvcmllc1tpXS5fZW5kQW5nbGVfID0gY2F0ZWdvcmllc1tpXS5fZW5kQW5nbGVfICUgMjtcclxuICAgIH1cclxuICAgIHRlbXBTdGFydEFuZ2xlID0gY2F0ZWdvcmllc1tpXS5fZW5kQW5nbGVfO1xyXG4gIH1cclxuICByZXR1cm4gY2F0ZWdvcmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0R2F1Z2VEYXRhUG9pbnRzKHNlcmllcywgY2F0ZWdvcmllcywgZ2F1Z2VPcHRpb24pIHtcclxuICBsZXQgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogMTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgaWYgKGdhdWdlT3B0aW9uLnBvaW50ZXIuY29sb3IgPT0gJ2F1dG8nKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2F0ZWdvcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChpdGVtLmRhdGEgPD0gY2F0ZWdvcmllc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgaXRlbS5jb2xvciA9IGNhdGVnb3JpZXNbaV0uY29sb3I7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW0uY29sb3IgPSBnYXVnZU9wdGlvbi5wb2ludGVyLmNvbG9yO1xyXG4gICAgfVxyXG4gICAgbGV0IHRvdGFsQW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gZ2F1Z2VPcHRpb24uZW5kQW5nbGUgKyAxO1xyXG4gICAgaXRlbS5fZW5kQW5nbGVfID0gdG90YWxBbmdsZSAqIGl0ZW0uZGF0YSArIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICBpdGVtLl9vbGRBbmdsZV8gPSBnYXVnZU9wdGlvbi5vbGRBbmdsZTtcclxuICAgIGlmIChnYXVnZU9wdGlvbi5vbGRBbmdsZSA8IGdhdWdlT3B0aW9uLmVuZEFuZ2xlKSB7XHJcbiAgICAgIGl0ZW0uX29sZEFuZ2xlXyArPSAyO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uZGF0YSA+PSBnYXVnZU9wdGlvbi5vbGREYXRhKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gKGl0ZW0uX2VuZEFuZ2xlXyAtIGl0ZW0uX29sZEFuZ2xlXykgKiBwcm9jZXNzICsgZ2F1Z2VPcHRpb24ub2xkQW5nbGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uX29sZEFuZ2xlXyAtIChpdGVtLl9vbGRBbmdsZV8gLSBpdGVtLl9lbmRBbmdsZV8pICogcHJvY2VzcztcclxuICAgIH1cclxuICAgIGlmIChpdGVtLl9wcm9wb3J0aW9uXyA+PSAyKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gaXRlbS5fcHJvcG9ydGlvbl8gJSAyO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRQaWVUZXh0TWF4TGVuZ3RoKHNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKSB7XHJcbiAgc2VyaWVzID0gZ2V0UGllRGF0YVBvaW50cyhzZXJpZXMpO1xyXG4gIGxldCBtYXhMZW5ndGggPSAwO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGxldCB0ZXh0ID0gaXRlbS5mb3JtYXR0ZXIgPyBpdGVtLmZvcm1hdHRlcigraXRlbS5fcHJvcG9ydGlvbl8udG9GaXhlZCgyKSkgOiB1dGlsLnRvRml4ZWQoaXRlbS5fcHJvcG9ydGlvbl8gKiAxMDApICsgJyUnO1xyXG4gICAgbWF4TGVuZ3RoID0gTWF0aC5tYXgobWF4TGVuZ3RoLCBtZWFzdXJlVGV4dCh0ZXh0LCBpdGVtLnRleHRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KSk7XHJcbiAgfVxyXG4gIHJldHVybiBtYXhMZW5ndGg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpeENvbHVtZURhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgY29sdW1uTGVuLCBpbmRleCwgY29uZmlnLCBvcHRzKSB7XHJcbiAgcmV0dXJuIHBvaW50cy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2YXIgc2VyaWVzR2FwID0gMDtcclxuICAgIHZhciBjYXRlZ29yeUdhcCA9IDA7XHJcbiAgICBpZiAob3B0cy50eXBlID09ICdtaXgnKSB7XHJcbiAgICAgIHNlcmllc0dhcCA9IG9wdHMuZXh0cmEubWl4LmNvbHVtbi5zZXJpZXNHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgICBjYXRlZ29yeUdhcCA9IG9wdHMuZXh0cmEubWl4LmNvbHVtbi5jYXRlZ29yeUdhcCAqIG9wdHMucGl4IHx8IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXJpZXNHYXAgPSBvcHRzLmV4dHJhLmNvbHVtbi5zZXJpZXNHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgICBjYXRlZ29yeUdhcCA9IG9wdHMuZXh0cmEuY29sdW1uLmNhdGVnb3J5R2FwICogb3B0cy5waXggfHwgMDtcclxuICAgIH1cclxuICAgIHNlcmllc0dhcCA9ICBNYXRoLm1pbihzZXJpZXNHYXAsIGVhY2hTcGFjaW5nIC8gY29sdW1uTGVuKVxyXG4gICAgY2F0ZWdvcnlHYXAgPSAgTWF0aC5taW4oY2F0ZWdvcnlHYXAsIGVhY2hTcGFjaW5nIC8gY29sdW1uTGVuKVxyXG4gICAgaXRlbS53aWR0aCA9IE1hdGguY2VpbCgoZWFjaFNwYWNpbmcgLSAyICogY2F0ZWdvcnlHYXAgLSBzZXJpZXNHYXAgKiAoY29sdW1uTGVuIC0gMSkpIC8gY29sdW1uTGVuKTtcclxuICAgIGlmIChvcHRzLmV4dHJhLm1peCAmJiBvcHRzLmV4dHJhLm1peC5jb2x1bW4ud2lkdGggJiYgK29wdHMuZXh0cmEubWl4LmNvbHVtbi53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLm1peC5jb2x1bW4ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0cy5leHRyYS5jb2x1bW4gJiYgb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggJiYgK29wdHMuZXh0cmEuY29sdW1uLndpZHRoID4gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gTWF0aC5taW4oaXRlbS53aWR0aCwgK29wdHMuZXh0cmEuY29sdW1uLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0ud2lkdGggPD0gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gMTtcclxuICAgIH1cclxuICAgIGl0ZW0ueCArPSAoaW5kZXggKyAwLjUgLSBjb2x1bW5MZW4gLyAyKSAqIChpdGVtLndpZHRoICsgc2VyaWVzR2FwKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaXhCYXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cykge1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmFyIHNlcmllc0dhcCA9IDA7XHJcbiAgICB2YXIgY2F0ZWdvcnlHYXAgPSAwO1xyXG4gICAgc2VyaWVzR2FwID0gb3B0cy5leHRyYS5iYXIuc2VyaWVzR2FwICogb3B0cy5waXggfHwgMDtcclxuICAgIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5iYXIuY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgc2VyaWVzR2FwID0gIE1hdGgubWluKHNlcmllc0dhcCwgZWFjaFNwYWNpbmcgLyBjb2x1bW5MZW4pXHJcbiAgICBjYXRlZ29yeUdhcCA9ICBNYXRoLm1pbihjYXRlZ29yeUdhcCwgZWFjaFNwYWNpbmcgLyBjb2x1bW5MZW4pXHJcbiAgICBpdGVtLndpZHRoID0gTWF0aC5jZWlsKChlYWNoU3BhY2luZyAtIDIgKiBjYXRlZ29yeUdhcCAtIHNlcmllc0dhcCAqIChjb2x1bW5MZW4gLSAxKSkgLyBjb2x1bW5MZW4pO1xyXG4gICAgaWYgKG9wdHMuZXh0cmEuYmFyICYmIG9wdHMuZXh0cmEuYmFyLndpZHRoICYmICtvcHRzLmV4dHJhLmJhci53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLmJhci53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGlmIChpdGVtLndpZHRoIDw9IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IDE7XHJcbiAgICB9XHJcbiAgICBpdGVtLnkgKz0gKGluZGV4ICsgMC41IC0gY29sdW1uTGVuIC8gMikgKiAoaXRlbS53aWR0aCArIHNlcmllc0dhcCk7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZml4Q29sdW1lTWV0ZXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cywgYm9yZGVyKSB7XHJcbiAgdmFyIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5jb2x1bW4uY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaXRlbS53aWR0aCA9IGVhY2hTcGFjaW5nIC0gMiAqIGNhdGVnb3J5R2FwO1xyXG4gICAgaWYgKG9wdHMuZXh0cmEuY29sdW1uICYmIG9wdHMuZXh0cmEuY29sdW1uLndpZHRoICYmICtvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCAtPSBib3JkZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZml4Q29sdW1lU3RhY2tEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cywgc2VyaWVzKSB7XHJcbiAgdmFyIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5jb2x1bW4uY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0sIGluZGV4bikge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpdGVtLndpZHRoID0gTWF0aC5jZWlsKGVhY2hTcGFjaW5nIC0gMiAqIGNhdGVnb3J5R2FwKTtcclxuICAgIGlmIChvcHRzLmV4dHJhLmNvbHVtbiAmJiBvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCAmJiArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggPiAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSBNYXRoLm1pbihpdGVtLndpZHRoLCArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS53aWR0aCA8PSAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpeEJhclN0YWNrRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBjb2x1bW5MZW4sIGluZGV4LCBjb25maWcsIG9wdHMsIHNlcmllcykge1xyXG4gIHZhciBjYXRlZ29yeUdhcCA9IG9wdHMuZXh0cmEuYmFyLmNhdGVnb3J5R2FwICogb3B0cy5waXggfHwgMDtcclxuICByZXR1cm4gcG9pbnRzLm1hcChmdW5jdGlvbihpdGVtLCBpbmRleG4pIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaXRlbS53aWR0aCA9IE1hdGguY2VpbChlYWNoU3BhY2luZyAtIDIgKiBjYXRlZ29yeUdhcCk7XHJcbiAgICBpZiAob3B0cy5leHRyYS5iYXIgJiYgb3B0cy5leHRyYS5iYXIud2lkdGggJiYgK29wdHMuZXh0cmEuYmFyLndpZHRoID4gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gTWF0aC5taW4oaXRlbS53aWR0aCwgK29wdHMuZXh0cmEuYmFyLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0ud2lkdGggPD0gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gMTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRYQXhpc1BvaW50cyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcpIHtcclxuICB2YXIgc3BhY2luZ1ZhbGlkID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICB2YXIgZGF0YUNvdW50ID0gb3B0cy5lbmFibGVTY3JvbGwgPyBNYXRoLm1pbihvcHRzLnhBeGlzLml0ZW1Db3VudCwgY2F0ZWdvcmllcy5sZW5ndGgpIDogY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgaWYgKChvcHRzLnR5cGUgPT0gJ2xpbmUnIHx8IG9wdHMudHlwZSA9PSAnYXJlYScgfHwgb3B0cy50eXBlID09ICdzY2F0dGVyJyB8fCBvcHRzLnR5cGUgPT0gJ2J1YmJsZScgfHwgb3B0cy50eXBlID09ICdiYXInKSAmJiBkYXRhQ291bnQgPiAxICYmIG9wdHMueEF4aXMuYm91bmRhcnlHYXAgPT0gJ2p1c3RpZnknKSB7XHJcbiAgICBkYXRhQ291bnQgLT0gMTtcclxuICB9XHJcbiAgdmFyIHdpZHRoUmF0aW8gPSAwO1xyXG4gIGlmKG9wdHMudHlwZSA9PSAnbW91bnQnICYmIG9wdHMuZXh0cmEgJiYgb3B0cy5leHRyYS5tb3VudCAmJiBvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID4gMSl7XHJcbiAgICBpZihvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8+Mikgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID0gMlxyXG4gICAgd2lkdGhSYXRpbyA9IG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyAtIDE7XHJcbiAgICBkYXRhQ291bnQgKz0gd2lkdGhSYXRpbztcclxuICB9XHJcbiAgdmFyIGVhY2hTcGFjaW5nID0gc3BhY2luZ1ZhbGlkIC8gZGF0YUNvdW50O1xyXG4gIHZhciB4QXhpc1BvaW50cyA9IFtdO1xyXG4gIHZhciBzdGFydFggPSBvcHRzLmFyZWFbM107XHJcbiAgdmFyIGVuZFggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdO1xyXG4gIGNhdGVnb3JpZXMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgeEF4aXNQb2ludHMucHVzaChzdGFydFggKyB3aWR0aFJhdGlvIC8gMiAqIGVhY2hTcGFjaW5nICsgaW5kZXggKiBlYWNoU3BhY2luZyk7XHJcbiAgfSk7XHJcbiAgaWYgKG9wdHMueEF4aXMuYm91bmRhcnlHYXAgIT09ICdqdXN0aWZ5Jykge1xyXG4gICAgaWYgKG9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICAgIHhBeGlzUG9pbnRzLnB1c2goc3RhcnRYICsgd2lkdGhSYXRpbyAqIGVhY2hTcGFjaW5nICsgY2F0ZWdvcmllcy5sZW5ndGggKiBlYWNoU3BhY2luZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB4QXhpc1BvaW50cy5wdXNoKGVuZFgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgc3RhcnRYOiBzdGFydFgsXHJcbiAgICBlbmRYOiBlbmRYLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q2FuZGxlRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcG9pbnRzLnB1c2gobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgY1BvaW50cyA9IFtdO1xyXG4gICAgICBpdGVtLmZvckVhY2goZnVuY3Rpb24oaXRlbXMsIGluZGV4cykge1xyXG4gICAgICAgIHZhciBwb2ludCA9IHt9O1xyXG4gICAgICAgIHBvaW50LnggPSB4QXhpc1BvaW50c1tpbmRleF0gKyBNYXRoLnJvdW5kKGVhY2hTcGFjaW5nIC8gMik7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gaXRlbXMudmFsdWUgfHwgaXRlbXM7XHJcbiAgICAgICAgdmFyIGhlaWdodCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICAgIGhlaWdodCAqPSBwcm9jZXNzO1xyXG4gICAgICAgIHBvaW50LnkgPSBvcHRzLmhlaWdodCAtIE1hdGgucm91bmQoaGVpZ2h0KSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICBjUG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgICB9KTtcclxuICAgICAgcG9pbnRzLnB1c2goY1BvaW50cyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIGJvdW5kYXJ5R2FwID0gJ2NlbnRlcic7XHJcbiAgaWYgKG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJyB8fCBvcHRzLnR5cGUgPT0gJ3NjYXR0ZXInIHx8IG9wdHMudHlwZSA9PSAnYnViYmxlJyApIHtcclxuICAgIGJvdW5kYXJ5R2FwID0gb3B0cy54QXhpcy5ib3VuZGFyeUdhcDtcclxuICB9XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIHZhciB2YWxpZFdpZHRoID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueCA9IHhBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpIHtcclxuICAgICAgICAgIGxldCB4cmFuZ2VzLCB4bWluUmFuZ2UsIHhtYXhSYW5nZTtcclxuICAgICAgICAgIHhyYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnJhbmdlcyk7XHJcbiAgICAgICAgICB4bWluUmFuZ2UgPSB4cmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgICAgICB4bWF4UmFuZ2UgPSB4cmFuZ2VzLnBvcCgpO1xyXG4gICAgICAgICAgdmFsdWUgPSBpdGVtWzFdO1xyXG4gICAgICAgICAgcG9pbnQueCA9IG9wdHMuYXJlYVszXSArIHZhbGlkV2lkdGggKiAoaXRlbVswXSAtIHhtaW5SYW5nZSkgLyAoeG1heFJhbmdlIC0geG1pblJhbmdlKTtcclxuICAgICAgICAgIGlmKG9wdHMudHlwZSA9PSAnYnViYmxlJyl7XHJcbiAgICAgICAgICAgIHBvaW50LnIgPSBpdGVtWzJdO1xyXG4gICAgICAgICAgICBwb2ludC50ID0gaXRlbVszXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoYm91bmRhcnlHYXAgPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICBwb2ludC54ICs9IGVhY2hTcGFjaW5nIC8gMjtcclxuICAgICAgfVxyXG4gICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgIGhlaWdodCAqPSBwcm9jZXNzO1xyXG4gICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBoZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgIHBvaW50cy5wdXNoKHBvaW50KTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gcG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRNb3VudERhdGFQb2ludHMoc2VyaWVzLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgbW91bnRPcHRpb24pIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA3ICYmIGFyZ3VtZW50c1s3XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzddIDogMTtcclxuICB2YXIgcG9pbnRzID0gW107XHJcbiAgdmFyIHZhbGlkSGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgdmFyIHZhbGlkV2lkdGggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdO1xyXG4gIHZhciBtb3VudFdpZHRoID0gZWFjaFNwYWNpbmcgKiBtb3VudE9wdGlvbi53aWR0aFJhdGlvO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICBwb2ludHMucHVzaChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBwb2ludCA9IHt9O1xyXG4gICAgICBwb2ludC5jb2xvciA9IGl0ZW0uY29sb3I7XHJcbiAgICAgIHBvaW50LnggPSB4QXhpc1BvaW50c1tpbmRleF07XHJcbiAgICAgIHBvaW50LnggKz0gZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICB2YXIgdmFsdWUgPSBpdGVtLmRhdGE7XHJcbiAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgaGVpZ2h0ICo9IHByb2Nlc3M7XHJcbiAgICAgIHBvaW50LnkgPSBvcHRzLmhlaWdodCAtIGhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgcG9pbnQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgcG9pbnQud2lkdGggPSBtb3VudFdpZHRoO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QmFyRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIHZhciB2YWxpZFdpZHRoID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueSA9IHlBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBoZWlnaHQgPSB2YWxpZFdpZHRoICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgcG9pbnQuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICBwb2ludC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICBwb2ludC54ID0gaGVpZ2h0ICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0U3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzdGFja1Nlcmllcykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDkgJiYgYXJndW1lbnRzWzldICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbOV0gOiAxO1xyXG4gIHZhciBwb2ludHMgPSBbXTtcclxuICB2YXIgdmFsaWRIZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueCA9IHhBeGlzUG9pbnRzW2luZGV4XSArIE1hdGgucm91bmQoZWFjaFNwYWNpbmcgLyAyKTtcclxuXHJcbiAgICAgIGlmIChzZXJpZXNJbmRleCA+IDApIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNlcmllc0luZGV4OyBpKyspIHtcclxuICAgICAgICAgIHZhbHVlICs9IHN0YWNrU2VyaWVzW2ldLmRhdGFbaW5kZXhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgdmFsdWUwID0gdmFsdWUgLSBpdGVtO1xyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICB2YXIgaGVpZ2h0MCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlMCAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgICAgdmFyIGhlaWdodDAgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBoZWlnaHRjID0gaGVpZ2h0MDtcclxuICAgICAgaGVpZ2h0ICo9IHByb2Nlc3M7XHJcbiAgICAgIGhlaWdodGMgKj0gcHJvY2VzcztcclxuICAgICAgcG9pbnQueSA9IG9wdHMuaGVpZ2h0IC0gTWF0aC5yb3VuZChoZWlnaHQpIC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICBwb2ludC55MCA9IG9wdHMuaGVpZ2h0IC0gTWF0aC5yb3VuZChoZWlnaHRjKSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgcG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBwb2ludHM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEJhclN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc3RhY2tTZXJpZXMpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA5ICYmIGFyZ3VtZW50c1s5XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzldIDogMTtcclxuICB2YXIgcG9pbnRzID0gW107XHJcbiAgdmFyIHZhbGlkSGVpZ2h0ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueSA9IHlBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgaWYgKHNlcmllc0luZGV4ID4gMCkge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2VyaWVzSW5kZXg7IGkrKykge1xyXG4gICAgICAgICAgdmFsdWUgKz0gc3RhY2tTZXJpZXNbaV0uZGF0YVtpbmRleF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciB2YWx1ZTAgPSB2YWx1ZSAtIGl0ZW07XHJcbiAgICAgICAgdmFyIGhlaWdodCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICAgIHZhciBoZWlnaHQwID0gdmFsaWRIZWlnaHQgKiAodmFsdWUwIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IGl0ZW07XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICB2YXIgaGVpZ2h0MCA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGhlaWdodGMgPSBoZWlnaHQwO1xyXG4gICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgaGVpZ2h0YyAqPSBwcm9jZXNzO1xyXG4gICAgICBwb2ludC5oZWlnaHQgPSBoZWlnaHQgLSBoZWlnaHRjO1xyXG4gICAgICBwb2ludC54ID0gb3B0cy5hcmVhWzNdICsgaGVpZ2h0O1xyXG4gICAgICBwb2ludC54MCA9IG9wdHMuYXJlYVszXSArIGhlaWdodGM7XHJcbiAgICAgIHBvaW50cy5wdXNoKHBvaW50KTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gcG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRZQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBzdGFjaywgeURhdGEpIHtcclxuICB2YXIgaW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IC0xO1xyXG4gIHZhciBkYXRhO1xyXG4gIGlmIChzdGFjayA9PSAnc3RhY2snKSB7XHJcbiAgICBkYXRhID0gZGF0YUNvbWJpbmVTdGFjayhzZXJpZXMsIG9wdHMuY2F0ZWdvcmllcy5sZW5ndGgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBkYXRhID0gZGF0YUNvbWJpbmUoc2VyaWVzKTtcclxuICB9XHJcbiAgdmFyIHNvcnRlZCA9IFtdO1xyXG4gIC8vIHJlbW92ZSBudWxsIGZyb20gZGF0YVxyXG4gIGRhdGEgPSBkYXRhLmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XHJcbiAgICAvL3JldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0gIT09IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWUgIT09IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGRhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgaWYgKGl0ZW0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpIHtcclxuICAgICAgICBpZiAob3B0cy50eXBlID09ICdjYW5kbGUnKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcChmdW5jdGlvbihzdWJpdGVtKSB7XHJcbiAgICAgICAgICAgIHNvcnRlZC5wdXNoKHN1Yml0ZW0pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc29ydGVkLnB1c2goaXRlbVsxXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNvcnRlZC5wdXNoKGl0ZW0udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzb3J0ZWQucHVzaChpdGVtKTtcclxuICAgIH1cclxuICB9KVxyXG4gIHZhciBtaW5EYXRhID0geURhdGEubWluIHx8IDA7XHJcbiAgdmFyIG1heERhdGEgPSB5RGF0YS5tYXggfHwgMDtcclxuICBpZiAoc29ydGVkLmxlbmd0aCA+IDApIHtcclxuICAgIG1pbkRhdGEgPSBNYXRoLm1pbi5hcHBseSh0aGlzLCBzb3J0ZWQpO1xyXG4gICAgbWF4RGF0YSA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHNvcnRlZCk7XHJcbiAgfVxyXG4gIGlmIChtaW5EYXRhID09PSBtYXhEYXRhKSB7XHJcbiAgICBpZihtYXhEYXRhID09IDApe1xyXG4gICAgICBtYXhEYXRhID0gMTA7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgbWluRGF0YSA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHZhciBkYXRhUmFuZ2UgPSBnZXREYXRhUmFuZ2UobWluRGF0YSwgbWF4RGF0YSk7XHJcbiAgdmFyIG1pblJhbmdlID0gKHlEYXRhLm1pbiA9PT0gdW5kZWZpbmVkIHx8IHlEYXRhLm1pbiA9PT0gbnVsbCkgPyBkYXRhUmFuZ2UubWluUmFuZ2UgOiB5RGF0YS5taW47XHJcbiAgdmFyIG1heFJhbmdlID0gKHlEYXRhLm1heCA9PT0gdW5kZWZpbmVkIHx8IHlEYXRhLm1heCA9PT0gbnVsbCkgPyBkYXRhUmFuZ2UubWF4UmFuZ2UgOiB5RGF0YS5tYXg7XHJcbiAgdmFyIGVhY2hSYW5nZSA9IChtYXhSYW5nZSAtIG1pblJhbmdlKSAvIG9wdHMueUF4aXMuc3BsaXROdW1iZXI7XHJcbiAgdmFyIHJhbmdlID0gW107XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gb3B0cy55QXhpcy5zcGxpdE51bWJlcjsgaSsrKSB7XHJcbiAgICByYW5nZS5wdXNoKG1pblJhbmdlICsgZWFjaFJhbmdlICogaSk7XHJcbiAgfVxyXG4gIHJldHVybiByYW5nZS5yZXZlcnNlKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbFlBeGlzRGF0YShzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIC8v5aCG5Y+g5Zu+6YeN566XWei9tFxyXG4gIHZhciBjb2x1bW5zdHlsZSA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogXCJcIlxyXG4gIH0sIG9wdHMuZXh0cmEuY29sdW1uKTtcclxuICAvL+WmguaenOaYr+WkmlnovbTvvIzph43mlrDorqHnrpdcclxuICB2YXIgWUxlbmd0aCA9IG9wdHMueUF4aXMuZGF0YS5sZW5ndGg7XHJcbiAgdmFyIG5ld1NlcmllcyA9IG5ldyBBcnJheShZTGVuZ3RoKTtcclxuICBpZiAoWUxlbmd0aCA+IDApIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgWUxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld1Nlcmllc1tpXSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNlcmllcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChzZXJpZXNbal0uaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgbmV3U2VyaWVzW2ldLnB1c2goc2VyaWVzW2pdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciByYW5nZXNBcnIgPSBuZXcgQXJyYXkoWUxlbmd0aCk7XHJcbiAgICB2YXIgcmFuZ2VzRm9ybWF0QXJyID0gbmV3IEFycmF5KFlMZW5ndGgpO1xyXG4gICAgdmFyIHlBeGlzV2lkdGhBcnIgPSBuZXcgQXJyYXkoWUxlbmd0aCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBZTGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHlEYXRhID0gb3B0cy55QXhpcy5kYXRhW2ldO1xyXG4gICAgICAvL+WmguaenOaAu+W8gOWFs+S4jeaYvuekuu+8jOW8uuWItuavj+S4qlnovbTkuLrkuI3mmL7npLpcclxuICAgICAgaWYgKG9wdHMueUF4aXMuZGlzYWJsZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHlEYXRhLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZih5RGF0YS50eXBlID09PSAnY2F0ZWdvcmllcycpe1xyXG4gICAgICAgIGlmKCF5RGF0YS5mb3JtYXR0ZXIpe1xyXG4gICAgICAgICAgeURhdGEuZm9ybWF0dGVyID0gKHZhbCxpbmRleCxvcHRzKSA9PiB7cmV0dXJuIHZhbCArICh5RGF0YS51bml0IHx8ICcnKX07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHlEYXRhLmNhdGVnb3JpZXMgPSB5RGF0YS5jYXRlZ29yaWVzIHx8IG9wdHMuY2F0ZWdvcmllcztcclxuICAgICAgICByYW5nZXNBcnJbaV0gPSB5RGF0YS5jYXRlZ29yaWVzO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZigheURhdGEuZm9ybWF0dGVyKXtcclxuICAgICAgICAgIHlEYXRhLmZvcm1hdHRlciA9ICh2YWwsaW5kZXgsb3B0cykgPT4ge3JldHVybiB1dGlsLnRvRml4ZWQodmFsLCB5RGF0YS50b2ZpeCB8fCAwKSArICh5RGF0YS51bml0IHx8ICcnKX07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJhbmdlc0FycltpXSA9IGdldFlBeGlzVGV4dExpc3QobmV3U2VyaWVzW2ldLCBvcHRzLCBjb25maWcsIGNvbHVtbnN0eWxlLnR5cGUsIHlEYXRhLCBpKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgeUF4aXNGb250U2l6ZXMgPSB5RGF0YS5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgeUF4aXNXaWR0aEFycltpXSA9IHtcclxuICAgICAgICBwb3NpdGlvbjogeURhdGEucG9zaXRpb24gPyB5RGF0YS5wb3NpdGlvbiA6ICdsZWZ0JyxcclxuICAgICAgICB3aWR0aDogMFxyXG4gICAgICB9O1xyXG4gICAgICByYW5nZXNGb3JtYXRBcnJbaV0gPSByYW5nZXNBcnJbaV0ubWFwKGZ1bmN0aW9uKGl0ZW1zLGluZGV4KSB7XHJcbiAgICAgICAgaXRlbXMgPSB5RGF0YS5mb3JtYXR0ZXIoaXRlbXMsaW5kZXgsb3B0cyk7XHJcbiAgICAgICAgeUF4aXNXaWR0aEFycltpXS53aWR0aCA9IE1hdGgubWF4KHlBeGlzV2lkdGhBcnJbaV0ud2lkdGgsIG1lYXN1cmVUZXh0KGl0ZW1zLCB5QXhpc0ZvbnRTaXplcywgY29udGV4dCkgKyA1KTtcclxuICAgICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgY2FsaWJyYXRpb24gPSB5RGF0YS5jYWxpYnJhdGlvbiA/IDQgKiBvcHRzLnBpeCA6IDA7XHJcbiAgICAgIHlBeGlzV2lkdGhBcnJbaV0ud2lkdGggKz0gY2FsaWJyYXRpb24gKyAzICogb3B0cy5waXg7XHJcbiAgICAgIGlmICh5RGF0YS5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHlBeGlzV2lkdGhBcnJbaV0ud2lkdGggPSAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIHZhciByYW5nZXNBcnIgPSBuZXcgQXJyYXkoMSk7XHJcbiAgICB2YXIgcmFuZ2VzRm9ybWF0QXJyID0gbmV3IEFycmF5KDEpO1xyXG4gICAgdmFyIHlBeGlzV2lkdGhBcnIgPSBuZXcgQXJyYXkoMSk7XHJcbiAgICBpZihvcHRzLnR5cGUgPT09ICdiYXInKXtcclxuICAgICAgcmFuZ2VzQXJyWzBdID0gb3B0cy5jYXRlZ29yaWVzO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJhbmdlc0FyclswXSA9IGdldFlBeGlzVGV4dExpc3Qoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbHVtbnN0eWxlLnR5cGUsIHt9KTtcclxuICAgIH1cclxuICAgIHlBeGlzV2lkdGhBcnJbMF0gPSB7XHJcbiAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAwXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICBpZiAob3B0cy55QXhpcy5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICB5QXhpc1dpZHRoQXJyWzBdID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXHJcbiAgICAgICAgd2lkdGg6IDBcclxuICAgICAgfTtcclxuICAgICAgb3B0cy55QXhpcy5kYXRhWzBdID0ge1xyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvcHRzLnlBeGlzLmRhdGFbMF0gPSB7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXHJcbiAgICAgICAgbWF4OiBvcHRzLnlBeGlzLm1heCxcclxuICAgICAgICBtaW46IG9wdHMueUF4aXMubWluLFxyXG4gICAgICAgIGZvcm1hdHRlcjogKHZhbCxpbmRleCxvcHRzKSA9PiB7cmV0dXJuIHZhbH1cclxuICAgICAgfTtcclxuICAgICAgaWYob3B0cy50eXBlID09PSAnYmFyJyl7XHJcbiAgICAgICAgb3B0cy55QXhpcy5kYXRhWzBdLmNhdGVnb3JpZXMgPSBvcHRzLmNhdGVnb3JpZXM7XHJcbiAgICAgICAgb3B0cy55QXhpcy5kYXRhWzBdLnR5cGUgPSAnY2F0ZWdvcmllcyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciB5QXhpc0ZvbnRTaXplID0gb3B0cy55QXhpcy5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgIHJhbmdlc0Zvcm1hdEFyclswXSA9IHJhbmdlc0FyclswXS5tYXAoZnVuY3Rpb24oaXRlbSxpbmRleCkge1xyXG4gICAgICBpdGVtID0gb3B0cy55QXhpcy5kYXRhWzBdLmZvcm1hdHRlcihpdGVtLGluZGV4LG9wdHMpO1xyXG4gICAgICB5QXhpc1dpZHRoQXJyWzBdLndpZHRoID0gTWF0aC5tYXgoeUF4aXNXaWR0aEFyclswXS53aWR0aCwgbWVhc3VyZVRleHQoaXRlbSwgeUF4aXNGb250U2l6ZSwgY29udGV4dCkgKyA1KTtcclxuICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9KTtcclxuICAgIHlBeGlzV2lkdGhBcnJbMF0ud2lkdGggKz0gMyAqIG9wdHMucGl4O1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgcmFuZ2VzRm9ybWF0OiByYW5nZXNGb3JtYXRBcnIsXHJcbiAgICByYW5nZXM6IHJhbmdlc0FycixcclxuICAgIHlBeGlzV2lkdGg6IHlBeGlzV2lkdGhBcnJcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxUb29sdGlwWUF4aXNEYXRhKHBvaW50LCBzZXJpZXMsIG9wdHMsIGNvbmZpZywgZWFjaFNwYWNpbmcpIHtcclxuICBsZXQgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXMpO1xyXG4gIGxldCBzcGFjaW5nVmFsaWQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICBsZXQgbWluQXhpcyA9IG9wdHMuYXJlYVswXTtcclxuICBsZXQgaXRlbXMgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IG1heFZhbCA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHJhbmdlc1tpXSk7XHJcbiAgICBsZXQgbWluVmFsID0gTWF0aC5taW4uYXBwbHkodGhpcywgcmFuZ2VzW2ldKTtcclxuICAgIGxldCBpdGVtID0gbWF4VmFsIC0gKG1heFZhbCAtIG1pblZhbCkgKiAocG9pbnQgLSBtaW5BeGlzKSAvIHNwYWNpbmdWYWxpZDtcclxuICAgIGl0ZW0gPSBvcHRzLnlBeGlzLmRhdGEgJiYgb3B0cy55QXhpcy5kYXRhW2ldLmZvcm1hdHRlciA/IG9wdHMueUF4aXMuZGF0YVtpXS5mb3JtYXR0ZXIoaXRlbSwgaSwgb3B0cykgOiBpdGVtLnRvRml4ZWQoMCk7XHJcbiAgICBpdGVtcy5wdXNoKFN0cmluZyhpdGVtKSlcclxuICB9XHJcbiAgcmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxNYXJrTGluZURhdGEocG9pbnRzLCBvcHRzKSB7XHJcbiAgbGV0IG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICBsZXQgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgIHBvaW50c1tpXS55QXhpc0luZGV4ID0gcG9pbnRzW2ldLnlBeGlzSW5kZXggPyBwb2ludHNbaV0ueUF4aXNJbmRleCA6IDA7XHJcbiAgICBsZXQgcmFuZ2UgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1twb2ludHNbaV0ueUF4aXNJbmRleF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZS5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2Uuc2hpZnQoKTtcclxuICAgIGxldCBoZWlnaHQgPSBzcGFjaW5nVmFsaWQgKiAocG9pbnRzW2ldLnZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgcG9pbnRzW2ldLnkgPSBvcHRzLmhlaWdodCAtIE1hdGgucm91bmQoaGVpZ2h0KSAtIG9wdHMuYXJlYVsyXTtcclxuICB9XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKSB7XHJcbiAgaWYgKG9wdHMucm90YXRlTG9jayAhPT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5oZWlnaHQsIDApO1xyXG4gICAgY29udGV4dC5yb3RhdGUoOTAgKiBNYXRoLlBJIC8gMTgwKTtcclxuICB9IGVsc2UgaWYgKG9wdHMuX3JvdGF0ZV8gIT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuaGVpZ2h0LCAwKTtcclxuICAgIGNvbnRleHQucm90YXRlKDkwICogTWF0aC5QSSAvIDE4MCk7XHJcbiAgICBvcHRzLl9yb3RhdGVfID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdQb2ludFNoYXBlKHBvaW50cywgY29sb3IsIHNoYXBlLCBjb250ZXh0LCBvcHRzKSB7XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZVR5cGUgPT0gJ2hvbGxvdycpIHtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy5iYWNrZ3JvdW5kKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDIgKiBvcHRzLnBpeCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoXCIjZmZmZmZmXCIpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICB9XHJcbiAgaWYgKHNoYXBlID09PSAnZGlhbW9uZCcpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIDQuNSwgaXRlbS55KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgNC41LCBpdGVtLnkpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ2NpcmNsZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54ICsgMi41ICogb3B0cy5waXgsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gMy41LCBpdGVtLnkgLSAzLjUpO1xyXG4gICAgICAgIGNvbnRleHQucmVjdChpdGVtLnggLSAzLjUsIGl0ZW0ueSAtIDMuNSwgNywgNyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSBpZiAoc2hhcGUgPT09ICd0cmlhbmdsZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIDQuNSwgaXRlbS55ICsgNC41KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9IGVsc2UgaWYgKHNoYXBlID09PSAnbm9uZScpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3UmluZ1RpdGxlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgY2VudGVyKSB7XHJcbiAgdmFyIHRpdGxlZm9udFNpemUgPSBvcHRzLnRpdGxlLmZvbnRTaXplIHx8IGNvbmZpZy50aXRsZUZvbnRTaXplO1xyXG4gIHZhciBzdWJ0aXRsZWZvbnRTaXplID0gb3B0cy5zdWJ0aXRsZS5mb250U2l6ZSB8fCBjb25maWcuc3VidGl0bGVGb250U2l6ZTtcclxuICB2YXIgdGl0bGUgPSBvcHRzLnRpdGxlLm5hbWUgfHwgJyc7XHJcbiAgdmFyIHN1YnRpdGxlID0gb3B0cy5zdWJ0aXRsZS5uYW1lIHx8ICcnO1xyXG4gIHZhciB0aXRsZUZvbnRDb2xvciA9IG9wdHMudGl0bGUuY29sb3IgfHwgb3B0cy5mb250Q29sb3I7XHJcbiAgdmFyIHN1YnRpdGxlRm9udENvbG9yID0gb3B0cy5zdWJ0aXRsZS5jb2xvciB8fCBvcHRzLmZvbnRDb2xvcjtcclxuICB2YXIgdGl0bGVIZWlnaHQgPSB0aXRsZSA/IHRpdGxlZm9udFNpemUgOiAwO1xyXG4gIHZhciBzdWJ0aXRsZUhlaWdodCA9IHN1YnRpdGxlID8gc3VidGl0bGVmb250U2l6ZSA6IDA7XHJcbiAgdmFyIG1hcmdpbiA9IDU7XHJcbiAgaWYgKHN1YnRpdGxlKSB7XHJcbiAgICB2YXIgdGV4dFdpZHRoID0gbWVhc3VyZVRleHQoc3VidGl0bGUsIHN1YnRpdGxlZm9udFNpemUgKiBvcHRzLnBpeCwgY29udGV4dCk7XHJcbiAgICB2YXIgc3RhcnRYID0gY2VudGVyLnggLSB0ZXh0V2lkdGggLyAyICsgKG9wdHMuc3VidGl0bGUub2Zmc2V0WHx8IDApICogb3B0cy5waXggO1xyXG4gICAgdmFyIHN0YXJ0WSA9IGNlbnRlci55ICsgc3VidGl0bGVmb250U2l6ZSAqIG9wdHMucGl4IC8gMiArIChvcHRzLnN1YnRpdGxlLm9mZnNldFkgfHwgMCkgKiBvcHRzLnBpeDtcclxuICAgIGlmICh0aXRsZSkge1xyXG4gICAgICBzdGFydFkgKz0gKHRpdGxlSGVpZ2h0ICogb3B0cy5waXggKyBtYXJnaW4pIC8gMjtcclxuICAgIH1cclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKHN1YnRpdGxlZm9udFNpemUgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzdWJ0aXRsZUZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KHN1YnRpdGxlLCBzdGFydFgsIHN0YXJ0WSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9XHJcbiAgaWYgKHRpdGxlKSB7XHJcbiAgICB2YXIgX3RleHRXaWR0aCA9IG1lYXN1cmVUZXh0KHRpdGxlLCB0aXRsZWZvbnRTaXplICogb3B0cy5waXgsIGNvbnRleHQpO1xyXG4gICAgdmFyIF9zdGFydFggPSBjZW50ZXIueCAtIF90ZXh0V2lkdGggLyAyICsgKG9wdHMudGl0bGUub2Zmc2V0WCB8fCAwKTtcclxuICAgIHZhciBfc3RhcnRZID0gY2VudGVyLnkgKyB0aXRsZWZvbnRTaXplICogb3B0cy5waXggLyAyICsgKG9wdHMudGl0bGUub2Zmc2V0WSB8fCAwKSAqIG9wdHMucGl4O1xyXG4gICAgaWYgKHN1YnRpdGxlKSB7XHJcbiAgICAgIF9zdGFydFkgLT0gKHN1YnRpdGxlSGVpZ2h0ICogb3B0cy5waXggKyBtYXJnaW4pIC8gMjtcclxuICAgIH1cclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKHRpdGxlZm9udFNpemUgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZSh0aXRsZUZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KHRpdGxlLCBfc3RhcnRYLCBfc3RhcnRZKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1BvaW50VGV4dChwb2ludHMsIHNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKSB7XHJcbiAgLy8g57uY5Yi25pWw5o2u5paH5qGIXHJcbiAgdmFyIGRhdGEgPSBzZXJpZXMuZGF0YTtcclxuICB2YXIgdGV4dE9mZnNldCA9IHNlcmllcy50ZXh0T2Zmc2V0ID8gc2VyaWVzLnRleHRPZmZzZXQgOiAwO1xyXG4gIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICB2YXIgZm9udFNpemUgPSBzZXJpZXMudGV4dFNpemUgPyBzZXJpZXMudGV4dFNpemUgKiBvcHRzLnBpeCA6IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHNlcmllcy50ZXh0Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgICB2YXIgdmFsdWUgPSBkYXRhW2luZGV4XVxyXG4gICAgICBpZiAodHlwZW9mIGRhdGFbaW5kZXhdID09PSAnb2JqZWN0JyAmJiBkYXRhW2luZGV4XSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChkYXRhW2luZGV4XS5jb25zdHJ1Y3Rvci50b1N0cmluZygpLmluZGV4T2YoJ0FycmF5Jyk+LTEpIHtcclxuICAgICAgICAgIHZhbHVlID0gZGF0YVtpbmRleF1bMV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbHVlID0gZGF0YVtpbmRleF0udmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGZvcm1hdFZhbCA9IHNlcmllcy5mb3JtYXR0ZXIgPyBzZXJpZXMuZm9ybWF0dGVyKHZhbHVlLGluZGV4LHNlcmllcyxvcHRzKSA6IHZhbHVlO1xyXG4gICAgICBjb250ZXh0LnNldFRleHRBbGlnbignY2VudGVyJyk7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKGZvcm1hdFZhbCksIGl0ZW0ueCwgaXRlbS55IC0gNCArIHRleHRPZmZzZXQgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdNb3VudFBvaW50VGV4dChwb2ludHMsIHNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKSB7XHJcbiAgLy8g57uY5Yi25pWw5o2u5paH5qGIXHJcbiAgdmFyIGRhdGEgPSBzZXJpZXMuZGF0YTtcclxuICB2YXIgdGV4dE9mZnNldCA9IHNlcmllcy50ZXh0T2Zmc2V0ID8gc2VyaWVzLnRleHRPZmZzZXQgOiAwO1xyXG4gIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICB2YXIgZm9udFNpemUgPSBzZXJpZXNbaW5kZXhdLnRleHRTaXplID8gc2VyaWVzW2luZGV4XS50ZXh0U2l6ZSAqIG9wdHMucGl4IDogY29uZmlnLmZvbnRTaXplO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoc2VyaWVzW2luZGV4XS50ZXh0Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgICB2YXIgdmFsdWUgPSBpdGVtLnZhbHVlXHJcbiAgICAgIHZhciBmb3JtYXRWYWwgPSBzZXJpZXNbaW5kZXhdLmZvcm1hdHRlciA/IHNlcmllc1tpbmRleF0uZm9ybWF0dGVyKHZhbHVlLGluZGV4LHNlcmllcyxvcHRzKSA6IHZhbHVlO1xyXG4gICAgICBjb250ZXh0LnNldFRleHRBbGlnbignY2VudGVyJyk7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKGZvcm1hdFZhbCksIGl0ZW0ueCwgaXRlbS55IC0gNCArIHRleHRPZmZzZXQgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdCYXJQb2ludFRleHQocG9pbnRzLCBzZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cykge1xyXG4gIC8vIOe7mOWItuaVsOaNruaWh+ahiFxyXG4gIHZhciBkYXRhID0gc2VyaWVzLmRhdGE7XHJcbiAgdmFyIHRleHRPZmZzZXQgPSBzZXJpZXMudGV4dE9mZnNldCA/IHNlcmllcy50ZXh0T2Zmc2V0IDogMDtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzLnRleHRTaXplID8gc2VyaWVzLnRleHRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXMudGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gZGF0YVtpbmRleF1cclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2luZGV4XSA9PT0gJ29iamVjdCcgJiYgZGF0YVtpbmRleF0gIT09IG51bGwpIHtcclxuICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdLnZhbHVlIDtcclxuICAgICAgfVxyXG4gICAgICB2YXIgZm9ybWF0VmFsID0gc2VyaWVzLmZvcm1hdHRlciA/IHNlcmllcy5mb3JtYXR0ZXIodmFsdWUsaW5kZXgsc2VyaWVzLG9wdHMpIDogdmFsdWU7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKGZvcm1hdFZhbCksIGl0ZW0ueCArIDQgKiBvcHRzLnBpeCAsIGl0ZW0ueSArIGZvbnRTaXplIC8gMiAtIDMgKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0dhdWdlTGFiZWwoZ2F1Z2VPcHRpb24sIHJhZGl1cywgY2VudGVyUG9zaXRpb24sIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHJhZGl1cyAtPSBnYXVnZU9wdGlvbi53aWR0aCAvIDIgKyBnYXVnZU9wdGlvbi5sYWJlbE9mZnNldCAqIG9wdHMucGl4O1xyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgbGV0IHRvdGFsQW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gZ2F1Z2VPcHRpb24uZW5kQW5nbGUgKyAxO1xyXG4gIGxldCBzcGxpdEFuZ2xlID0gdG90YWxBbmdsZSAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlcjtcclxuICBsZXQgdG90YWxOdW1iZXIgPSBnYXVnZU9wdGlvbi5lbmROdW1iZXIgLSBnYXVnZU9wdGlvbi5zdGFydE51bWJlcjtcclxuICBsZXQgc3BsaXROdW1iZXIgPSB0b3RhbE51bWJlciAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlcjtcclxuICBsZXQgbm93QW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gIGxldCBub3dOdW1iZXIgPSBnYXVnZU9wdGlvbi5zdGFydE51bWJlcjtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlciArIDE7IGkrKykge1xyXG4gICAgdmFyIHBvcyA9IHtcclxuICAgICAgeDogcmFkaXVzICogTWF0aC5jb3Mobm93QW5nbGUgKiBNYXRoLlBJKSxcclxuICAgICAgeTogcmFkaXVzICogTWF0aC5zaW4obm93QW5nbGUgKiBNYXRoLlBJKVxyXG4gICAgfTtcclxuICAgIHZhciBsYWJlbFRleHQgPSBnYXVnZU9wdGlvbi5mb3JtYXR0ZXIgPyBnYXVnZU9wdGlvbi5mb3JtYXR0ZXIobm93TnVtYmVyLGksb3B0cykgOiBub3dOdW1iZXI7XHJcbiAgICBwb3MueCArPSBjZW50ZXJQb3NpdGlvbi54IC0gbWVhc3VyZVRleHQobGFiZWxUZXh0LCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpIC8gMjtcclxuICAgIHBvcy55ICs9IGNlbnRlclBvc2l0aW9uLnk7XHJcbiAgICB2YXIgc3RhcnRYID0gcG9zLng7XHJcbiAgICB2YXIgc3RhcnRZID0gcG9zLnk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZ2F1Z2VPcHRpb24ubGFiZWxDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KGxhYmVsVGV4dCwgc3RhcnRYLCBzdGFydFkgKyBjb25maWcuZm9udFNpemUgLyAyKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgbm93QW5nbGUgKz0gc3BsaXRBbmdsZTtcclxuICAgIGlmIChub3dBbmdsZSA+PSAyKSB7XHJcbiAgICAgIG5vd0FuZ2xlID0gbm93QW5nbGUgJSAyO1xyXG4gICAgfVxyXG4gICAgbm93TnVtYmVyICs9IHNwbGl0TnVtYmVyO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1JhZGFyTGFiZWwoYW5nbGVMaXN0LCByYWRpdXMsIGNlbnRlclBvc2l0aW9uLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcmFkYXJPcHRpb24gPSBvcHRzLmV4dHJhLnJhZGFyIHx8IHt9O1xyXG4gIGFuZ2xlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGFuZ2xlLCBpbmRleCkge1xyXG4gICAgaWYocmFkYXJPcHRpb24ubGFiZWxQb2ludFNob3cgPT09IHRydWUgJiYgb3B0cy5jYXRlZ29yaWVzW2luZGV4XSAhPT0gJycpe1xyXG4gICAgICB2YXIgcG9zUG9pbnQgPSB7XHJcbiAgICAgICAgeDogcmFkaXVzICogTWF0aC5jb3MoYW5nbGUpLFxyXG4gICAgICAgIHk6IHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKVxyXG4gICAgICB9O1xyXG4gICAgICB2YXIgcG9zUG9pbnRBeGlzID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocG9zUG9pbnQueCwgcG9zUG9pbnQueSwgY2VudGVyUG9zaXRpb24pO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShyYWRhck9wdGlvbi5sYWJlbFBvaW50Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmFyYyhwb3NQb2ludEF4aXMueCwgcG9zUG9pbnRBeGlzLnksIHJhZGFyT3B0aW9uLmxhYmVsUG9pbnRSYWRpdXMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICB9XHJcbiAgICB2YXIgcG9zID0ge1xyXG4gICAgICB4OiAocmFkaXVzICsgY29uZmlnLnJhZGFyTGFiZWxUZXh0TWFyZ2luICogb3B0cy5waXgpICogTWF0aC5jb3MoYW5nbGUpLFxyXG4gICAgICB5OiAocmFkaXVzICsgY29uZmlnLnJhZGFyTGFiZWxUZXh0TWFyZ2luICogb3B0cy5waXgpICogTWF0aC5zaW4oYW5nbGUpXHJcbiAgICB9O1xyXG4gICAgdmFyIHBvc1JlbGF0aXZlQ2FudmFzID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocG9zLngsIHBvcy55LCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgICB2YXIgc3RhcnRYID0gcG9zUmVsYXRpdmVDYW52YXMueDtcclxuICAgIHZhciBzdGFydFkgPSBwb3NSZWxhdGl2ZUNhbnZhcy55O1xyXG4gICAgaWYgKHV0aWwuYXBwcm94aW1hdGVseUVxdWFsKHBvcy54LCAwKSkge1xyXG4gICAgICBzdGFydFggLT0gbWVhc3VyZVRleHQob3B0cy5jYXRlZ29yaWVzW2luZGV4XSB8fCAnJywgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KSAvIDI7XHJcbiAgICB9IGVsc2UgaWYgKHBvcy54IDwgMCkge1xyXG4gICAgICBzdGFydFggLT0gbWVhc3VyZVRleHQob3B0cy5jYXRlZ29yaWVzW2luZGV4XSB8fCAnJywgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShyYWRhck9wdGlvbi5sYWJlbENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgIGNvbnRleHQuZmlsbFRleHQob3B0cy5jYXRlZ29yaWVzW2luZGV4XSB8fCAnJywgc3RhcnRYLCBzdGFydFkgKyBjb25maWcuZm9udFNpemUgLyAyKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH0pO1xyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1BpZVRleHQoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHJhZGl1cywgY2VudGVyKSB7XHJcbiAgdmFyIGxpbmVSYWRpdXMgPSBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZztcclxuICB2YXIgdGV4dE9iamVjdENvbGxlY3Rpb24gPSBbXTtcclxuICB2YXIgbGFzdFRleHRPYmplY3QgPSBudWxsO1xyXG4gIHZhciBzZXJpZXNDb252ZXJ0ID0gc2VyaWVzLm1hcChmdW5jdGlvbihpdGVtLGluZGV4KSB7XHJcbiAgICB2YXIgdGV4dCA9IGl0ZW0uZm9ybWF0dGVyID8gaXRlbS5mb3JtYXR0ZXIoaXRlbSxpbmRleCxzZXJpZXMsb3B0cykgOiB1dGlsLnRvRml4ZWQoaXRlbS5fcHJvcG9ydGlvbl8udG9GaXhlZCg0KSAqIDEwMCkgKyAnJSc7XHJcbiAgICB0ZXh0ID0gaXRlbS5sYWJlbFRleHQgPyBpdGVtLmxhYmVsVGV4dCA6IHRleHQ7XHJcbiAgICB2YXIgYXJjID0gMiAqIE1hdGguUEkgLSAoaXRlbS5fc3RhcnRfICsgMiAqIE1hdGguUEkgKiBpdGVtLl9wcm9wb3J0aW9uXyAvIDIpO1xyXG4gICAgaWYgKGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8pIHtcclxuICAgICAgYXJjID0gMiAqIE1hdGguUEkgLSAoaXRlbS5fc3RhcnRfICsgMiAqIE1hdGguUEkgKiBpdGVtLl9yb3NlX3Byb3BvcnRpb25fIC8gMik7XHJcbiAgICB9XHJcbiAgICB2YXIgY29sb3IgPSBpdGVtLmNvbG9yO1xyXG4gICAgdmFyIHJhZGl1cyA9IGl0ZW0uX3JhZGl1c187XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhcmM6IGFyYyxcclxuICAgICAgdGV4dDogdGV4dCxcclxuICAgICAgY29sb3I6IGNvbG9yLFxyXG4gICAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgICAgdGV4dENvbG9yOiBpdGVtLnRleHRDb2xvcixcclxuICAgICAgdGV4dFNpemU6IGl0ZW0udGV4dFNpemUsXHJcbiAgICAgIGxhYmVsU2hvdzogaXRlbS5sYWJlbFNob3dcclxuICAgIH07XHJcbiAgfSk7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXNDb252ZXJ0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc0NvbnZlcnRbaV07XHJcbiAgICAvLyBsaW5lIGVuZFxyXG4gICAgbGV0IG9yZ2luWDEgPSBNYXRoLmNvcyhpdGVtLmFyYykgKiAoaXRlbS5yYWRpdXMgKyBsaW5lUmFkaXVzKTtcclxuICAgIGxldCBvcmdpblkxID0gTWF0aC5zaW4oaXRlbS5hcmMpICogKGl0ZW0ucmFkaXVzICsgbGluZVJhZGl1cyk7XHJcbiAgICAvLyBsaW5lIHN0YXJ0XHJcbiAgICBsZXQgb3JnaW5YMiA9IE1hdGguY29zKGl0ZW0uYXJjKSAqIGl0ZW0ucmFkaXVzO1xyXG4gICAgbGV0IG9yZ2luWTIgPSBNYXRoLnNpbihpdGVtLmFyYykgKiBpdGVtLnJhZGl1cztcclxuICAgIC8vIHRleHQgc3RhcnRcclxuICAgIGxldCBvcmdpblgzID0gb3JnaW5YMSA+PSAwID8gb3JnaW5YMSArIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nIDogb3JnaW5YMSAtIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nO1xyXG4gICAgbGV0IG9yZ2luWTMgPSBvcmdpblkxO1xyXG4gICAgbGV0IHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KGl0ZW0udGV4dCwgaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCk7XHJcbiAgICBsZXQgc3RhcnRZID0gb3JnaW5ZMztcclxuICAgIGlmIChsYXN0VGV4dE9iamVjdCAmJiB1dGlsLmlzU2FtZVhDb29yZGluYXRlQXJlYShsYXN0VGV4dE9iamVjdC5zdGFydCwge1xyXG4gICAgICAgIHg6IG9yZ2luWDNcclxuICAgICAgfSkpIHtcclxuICAgICAgaWYgKG9yZ2luWDMgPiAwKSB7XHJcbiAgICAgICAgc3RhcnRZID0gTWF0aC5taW4ob3JnaW5ZMywgbGFzdFRleHRPYmplY3Quc3RhcnQueSk7XHJcbiAgICAgIH0gZWxzZSBpZiAob3JnaW5YMSA8IDApIHtcclxuICAgICAgICBzdGFydFkgPSBNYXRoLm1heChvcmdpblkzLCBsYXN0VGV4dE9iamVjdC5zdGFydC55KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAob3JnaW5ZMyA+IDApIHtcclxuICAgICAgICAgIHN0YXJ0WSA9IE1hdGgubWF4KG9yZ2luWTMsIGxhc3RUZXh0T2JqZWN0LnN0YXJ0LnkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzdGFydFkgPSBNYXRoLm1pbihvcmdpblkzLCBsYXN0VGV4dE9iamVjdC5zdGFydC55KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChvcmdpblgzIDwgMCkge1xyXG4gICAgICBvcmdpblgzIC09IHRleHRXaWR0aDtcclxuICAgIH1cclxuICAgIGxldCB0ZXh0T2JqZWN0ID0ge1xyXG4gICAgICBsaW5lU3RhcnQ6IHtcclxuICAgICAgICB4OiBvcmdpblgyLFxyXG4gICAgICAgIHk6IG9yZ2luWTJcclxuICAgICAgfSxcclxuICAgICAgbGluZUVuZDoge1xyXG4gICAgICAgIHg6IG9yZ2luWDEsXHJcbiAgICAgICAgeTogb3JnaW5ZMVxyXG4gICAgICB9LFxyXG4gICAgICBzdGFydDoge1xyXG4gICAgICAgIHg6IG9yZ2luWDMsXHJcbiAgICAgICAgeTogc3RhcnRZXHJcbiAgICAgIH0sXHJcbiAgICAgIHdpZHRoOiB0ZXh0V2lkdGgsXHJcbiAgICAgIGhlaWdodDogY29uZmlnLmZvbnRTaXplLFxyXG4gICAgICB0ZXh0OiBpdGVtLnRleHQsXHJcbiAgICAgIGNvbG9yOiBpdGVtLmNvbG9yLFxyXG4gICAgICB0ZXh0Q29sb3I6IGl0ZW0udGV4dENvbG9yLFxyXG4gICAgICB0ZXh0U2l6ZTogaXRlbS50ZXh0U2l6ZVxyXG4gICAgfTtcclxuICAgIGxhc3RUZXh0T2JqZWN0ID0gYXZvaWRDb2xsaXNpb24odGV4dE9iamVjdCwgbGFzdFRleHRPYmplY3QpO1xyXG4gICAgdGV4dE9iamVjdENvbGxlY3Rpb24ucHVzaChsYXN0VGV4dE9iamVjdCk7XHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dE9iamVjdENvbGxlY3Rpb24ubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmKHNlcmllc0NvbnZlcnRbaV0ubGFiZWxTaG93ID09PSBmYWxzZSl7XHJcbiAgICAgIGNvbnRpbnVlO1xyXG4gICAgfVxyXG4gICAgbGV0IGl0ZW0gPSB0ZXh0T2JqZWN0Q29sbGVjdGlvbltpXTtcclxuICAgIGxldCBsaW5lU3RhcnRQb2lzdGlvbiA9IGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKGl0ZW0ubGluZVN0YXJ0LngsIGl0ZW0ubGluZVN0YXJ0LnksIGNlbnRlcik7XHJcbiAgICBsZXQgbGluZUVuZFBvaXN0aW9uID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4oaXRlbS5saW5lRW5kLngsIGl0ZW0ubGluZUVuZC55LCBjZW50ZXIpO1xyXG4gICAgbGV0IHRleHRQb3NpdGlvbiA9IGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKGl0ZW0uc3RhcnQueCwgaXRlbS5zdGFydC55LCBjZW50ZXIpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0uY29sb3IpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8obGluZVN0YXJ0UG9pc3Rpb24ueCwgbGluZVN0YXJ0UG9pc3Rpb24ueSk7XHJcbiAgICBsZXQgY3VydmVTdGFydFggPSBpdGVtLnN0YXJ0LnggPCAwID8gdGV4dFBvc2l0aW9uLnggKyBpdGVtLndpZHRoIDogdGV4dFBvc2l0aW9uLng7XHJcbiAgICBsZXQgdGV4dFN0YXJ0WCA9IGl0ZW0uc3RhcnQueCA8IDAgPyB0ZXh0UG9zaXRpb24ueCAtIDUgOiB0ZXh0UG9zaXRpb24ueCArIDU7XHJcbiAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8obGluZUVuZFBvaXN0aW9uLngsIGxpbmVFbmRQb2lzdGlvbi55LCBjdXJ2ZVN0YXJ0WCwgdGV4dFBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8obGluZVN0YXJ0UG9pc3Rpb24ueCwgbGluZVN0YXJ0UG9pc3Rpb24ueSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyh0ZXh0UG9zaXRpb24ueCArIGl0ZW0ud2lkdGgsIHRleHRQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQuYXJjKGN1cnZlU3RhcnRYLCB0ZXh0UG9zaXRpb24ueSwgMiAqIG9wdHMucGl4LCAwLCAyICogTWF0aC5QSSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShpdGVtLnRleHRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0udGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgIGNvbnRleHQuZmlsbFRleHQoaXRlbS50ZXh0LCB0ZXh0U3RhcnRYLCB0ZXh0UG9zaXRpb24ueSArIDMpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1Rvb2xUaXBTcGxpdExpbmUob2Zmc2V0WCwgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHRvb2xUaXBPcHRpb24gPSBvcHRzLmV4dHJhLnRvb2x0aXAgfHwge307XHJcbiAgdG9vbFRpcE9wdGlvbi5ncmlkVHlwZSA9IHRvb2xUaXBPcHRpb24uZ3JpZFR5cGUgPT0gdW5kZWZpbmVkID8gJ3NvbGlkJyA6IHRvb2xUaXBPcHRpb24uZ3JpZFR5cGU7XHJcbiAgdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoID0gdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoID09IHVuZGVmaW5lZCA/IDQgOiB0b29sVGlwT3B0aW9uLmRhc2hMZW5ndGg7XHJcbiAgdmFyIHN0YXJ0WSA9IG9wdHMuYXJlYVswXTtcclxuICB2YXIgZW5kWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLmdyaWRUeXBlID09ICdkYXNoJykge1xyXG4gICAgY29udGV4dC5zZXRMaW5lRGFzaChbdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoLCB0b29sVGlwT3B0aW9uLmRhc2hMZW5ndGhdKTtcclxuICB9XHJcbiAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0b29sVGlwT3B0aW9uLmdyaWRDb2xvciB8fCAnI2NjY2NjYycpO1xyXG4gIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0Lm1vdmVUbyhvZmZzZXRYLCBzdGFydFkpO1xyXG4gIGNvbnRleHQubGluZVRvKG9mZnNldFgsIGVuZFkpO1xyXG4gIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24ueEF4aXNMYWJlbCkge1xyXG4gICAgbGV0IGxhYmVsVGV4dCA9IG9wdHMuY2F0ZWdvcmllc1tvcHRzLnRvb2x0aXAuaW5kZXhdO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShjb25maWcuZm9udFNpemUpO1xyXG4gICAgbGV0IHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KGxhYmVsVGV4dCwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KTtcclxuICAgIGxldCB0ZXh0WCA9IG9mZnNldFggLSAwLjUgKiB0ZXh0V2lkdGg7XHJcbiAgICBsZXQgdGV4dFkgPSBlbmRZICsgMiAqIG9wdHMucGl4O1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHRvb2xUaXBPcHRpb24ubGFiZWxCZ0NvbG9yIHx8IGNvbmZpZy50b29sVGlwQmFja2dyb3VuZCwgdG9vbFRpcE9wdGlvbi5sYWJlbEJnT3BhY2l0eSB8fCBjb25maWcudG9vbFRpcE9wYWNpdHkpKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodG9vbFRpcE9wdGlvbi5sYWJlbEJnQ29sb3IgfHwgY29uZmlnLnRvb2xUaXBCYWNrZ3JvdW5kKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnJlY3QodGV4dFggLSBjb25maWcudG9vbFRpcFBhZGRpbmcsIHRleHRZLCB0ZXh0V2lkdGggKyAyICogY29uZmlnLnRvb2xUaXBQYWRkaW5nLCBjb25maWcuZm9udFNpemUgKyAyICogY29uZmlnLnRvb2xUaXBQYWRkaW5nKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUodG9vbFRpcE9wdGlvbi5sYWJlbEZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhsYWJlbFRleHQpLCB0ZXh0WCwgdGV4dFkgKyBjb25maWcudG9vbFRpcFBhZGRpbmcgKyBjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IG1hcmtMaW5lT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNCxcclxuICAgIGRhdGE6IFtdXHJcbiAgfSwgb3B0cy5leHRyYS5tYXJrTGluZSk7XHJcbiAgbGV0IHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICBsZXQgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgbGV0IHBvaW50cyA9IGNhbE1hcmtMaW5lRGF0YShtYXJrTGluZU9wdGlvbi5kYXRhLCBvcHRzKTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBhc3NpZ24oe30sIHtcclxuICAgICAgbGluZUNvbG9yOiAnI0RFNEE0MicsXHJcbiAgICAgIHNob3dMYWJlbDogZmFsc2UsXHJcbiAgICAgIGxhYmVsRm9udENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICAgIGxhYmVsQmdDb2xvcjogJyNERkU4RkYnLFxyXG4gICAgICBsYWJlbEJnT3BhY2l0eTogMC44LFxyXG4gICAgICBsYWJlbEFsaWduOiAnbGVmdCcsXHJcbiAgICAgIGxhYmVsT2Zmc2V0WDogMCxcclxuICAgICAgbGFiZWxPZmZzZXRZOiAwLFxyXG4gICAgfSwgcG9pbnRzW2ldKTtcclxuICAgIGlmIChtYXJrTGluZU9wdGlvbi50eXBlID09ICdkYXNoJykge1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFttYXJrTGluZU9wdGlvbi5kYXNoTGVuZ3RoLCBtYXJrTGluZU9wdGlvbi5kYXNoTGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGl0ZW0ubGluZUNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgaXRlbS55KTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcclxuICAgIGlmIChpdGVtLnNob3dMYWJlbCkge1xyXG4gICAgICBsZXQgbGFiZWxUZXh0ID0gaXRlbS5sYWJlbFRleHQgPyBpdGVtLmxhYmVsVGV4dCA6IGl0ZW0udmFsdWU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgbGV0IHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KGxhYmVsVGV4dCwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KTtcclxuICAgICAgbGV0IGJnV2lkdGggPSB0ZXh0V2lkdGggKyBjb25maWcudG9vbFRpcFBhZGRpbmcgKiAyO1xyXG4gICAgICBsZXQgYmdTdGFydFggPSBpdGVtLmxhYmVsQWxpZ24gPT0gJ2xlZnQnID8gb3B0cy5hcmVhWzNdIC0gYmdXaWR0aCA6IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgICAgIGJnU3RhcnRYICs9IGl0ZW0ubGFiZWxPZmZzZXRYO1xyXG4gICAgICBsZXQgYmdTdGFydFkgPSBpdGVtLnkgLSAwLjUgKiBjb25maWcuZm9udFNpemUgLSBjb25maWcudG9vbFRpcFBhZGRpbmc7XHJcbiAgICAgIGJnU3RhcnRZICs9IGl0ZW0ubGFiZWxPZmZzZXRZO1xyXG4gICAgICBsZXQgdGV4dFggPSBiZ1N0YXJ0WCArIGNvbmZpZy50b29sVGlwUGFkZGluZztcclxuICAgICAgbGV0IHRleHRZID0gaXRlbS55O1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihpdGVtLmxhYmVsQmdDb2xvciwgaXRlbS5sYWJlbEJnT3BhY2l0eSkpO1xyXG4gICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGl0ZW0ubGFiZWxCZ0NvbG9yKTtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5yZWN0KGJnU3RhcnRYLCBiZ1N0YXJ0WSwgYmdXaWR0aCwgY29uZmlnLmZvbnRTaXplICsgMiAqIGNvbmZpZy50b29sVGlwUGFkZGluZyk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0ubGFiZWxGb250Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhsYWJlbFRleHQpLCB0ZXh0WCwgYmdTdGFydFkgKyBjb25maWcuZm9udFNpemUgKyBjb25maWcudG9vbFRpcFBhZGRpbmcvMik7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcEhvcml6ZW50YWxMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKSB7XHJcbiAgdmFyIHRvb2xUaXBPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGdyaWRUeXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNFxyXG4gIH0sIG9wdHMuZXh0cmEudG9vbHRpcCk7XHJcbiAgdmFyIHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICB2YXIgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24uZ3JpZFR5cGUgPT0gJ2Rhc2gnKSB7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFt0b29sVGlwT3B0aW9uLmRhc2hMZW5ndGgsIHRvb2xUaXBPcHRpb24uZGFzaExlbmd0aF0pO1xyXG4gIH1cclxuICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRvb2xUaXBPcHRpb24uZ3JpZENvbG9yIHx8ICcjY2NjY2NjJyk7XHJcbiAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgb3B0cy50b29sdGlwLm9mZnNldC55KTtcclxuICBjb250ZXh0LmxpbmVUbyhlbmRYLCBvcHRzLnRvb2x0aXAub2Zmc2V0LnkpO1xyXG4gIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24ueUF4aXNMYWJlbCkge1xyXG4gICAgbGV0IGxhYmVsVGV4dCA9IGNhbFRvb2x0aXBZQXhpc0RhdGEob3B0cy50b29sdGlwLm9mZnNldC55LCBvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBlYWNoU3BhY2luZyk7XHJcbiAgICBsZXQgd2lkdGhBcnIgPSBvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEueUF4aXNXaWR0aDtcclxuICAgIGxldCB0U3RhcnRMZWZ0ID0gb3B0cy5hcmVhWzNdO1xyXG4gICAgbGV0IHRTdGFydFJpZ2h0ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGFiZWxUZXh0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgbGV0IHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KGxhYmVsVGV4dFtpXSwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KTtcclxuICAgICAgbGV0IGJnU3RhcnRYLCBiZ0VuZFgsIGJnV2lkdGg7XHJcbiAgICAgIGlmICh3aWR0aEFycltpXS5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcclxuICAgICAgICBiZ1N0YXJ0WCA9IHRTdGFydExlZnQgLSAodGV4dFdpZHRoICsgY29uZmlnLnRvb2xUaXBQYWRkaW5nICogMikgLSAyICogb3B0cy5waXg7XHJcbiAgICAgICAgYmdFbmRYID0gTWF0aC5tYXgoYmdTdGFydFgsIGJnU3RhcnRYICsgdGV4dFdpZHRoICsgY29uZmlnLnRvb2xUaXBQYWRkaW5nICogMik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYmdTdGFydFggPSB0U3RhcnRSaWdodCArIDIgKiBvcHRzLnBpeDtcclxuICAgICAgICBiZ0VuZFggPSBNYXRoLm1heChiZ1N0YXJ0WCArIHdpZHRoQXJyW2ldLndpZHRoLCBiZ1N0YXJ0WCArIHRleHRXaWR0aCArIGNvbmZpZy50b29sVGlwUGFkZGluZyAqIDIpO1xyXG4gICAgICB9XHJcbiAgICAgIGJnV2lkdGggPSBiZ0VuZFggLSBiZ1N0YXJ0WDtcclxuICAgICAgbGV0IHRleHRYID0gYmdTdGFydFggKyAoYmdXaWR0aCAtIHRleHRXaWR0aCkgLyAyO1xyXG4gICAgICBsZXQgdGV4dFkgPSBvcHRzLnRvb2x0aXAub2Zmc2V0Lnk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHRvb2xUaXBPcHRpb24ubGFiZWxCZ0NvbG9yIHx8IGNvbmZpZy50b29sVGlwQmFja2dyb3VuZCwgdG9vbFRpcE9wdGlvbi5sYWJlbEJnT3BhY2l0eSB8fCBjb25maWcudG9vbFRpcE9wYWNpdHkpKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0b29sVGlwT3B0aW9uLmxhYmVsQmdDb2xvciB8fCBjb25maWcudG9vbFRpcEJhY2tncm91bmQpO1xyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LnJlY3QoYmdTdGFydFgsIHRleHRZIC0gMC41ICogY29uZmlnLmZvbnRTaXplIC0gY29uZmlnLnRvb2xUaXBQYWRkaW5nLCBiZ1dpZHRoLCBjb25maWcuZm9udFNpemUgKyAyICogY29uZmlnLnRvb2xUaXBQYWRkaW5nKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUodG9vbFRpcE9wdGlvbi5sYWJlbEZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQobGFiZWxUZXh0W2ldLCB0ZXh0WCwgdGV4dFkgKyAwLjUgKiBjb25maWcuZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBpZiAod2lkdGhBcnJbaV0ucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgdFN0YXJ0TGVmdCAtPSAod2lkdGhBcnJbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdFN0YXJ0UmlnaHQgKz0gd2lkdGhBcnJbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1Rvb2xUaXBTcGxpdEFyZWEob2Zmc2V0WCwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBhY3RpdmVCZ0NvbG9yOiAnIzAwMDAwMCcsXHJcbiAgICBhY3RpdmVCZ09wYWNpdHk6IDAuMDgsXHJcbiAgICBhY3RpdmVXaWR0aDogZWFjaFNwYWNpbmdcclxuICB9LCBvcHRzLmV4dHJhLmNvbHVtbik7XHJcbiAgdG9vbFRpcE9wdGlvbi5hY3RpdmVXaWR0aCA9IHRvb2xUaXBPcHRpb24uYWN0aXZlV2lkdGggPiBlYWNoU3BhY2luZyA/IGVhY2hTcGFjaW5nIDogdG9vbFRpcE9wdGlvbi5hY3RpdmVXaWR0aDtcclxuICB2YXIgc3RhcnRZID0gb3B0cy5hcmVhWzBdO1xyXG4gIHZhciBlbmRZID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmFjdGl2ZUJnQ29sb3IsIHRvb2xUaXBPcHRpb24uYWN0aXZlQmdPcGFjaXR5KSk7XHJcbiAgY29udGV4dC5yZWN0KG9mZnNldFggLSB0b29sVGlwT3B0aW9uLmFjdGl2ZVdpZHRoIC8gMiwgc3RhcnRZLCB0b29sVGlwT3B0aW9uLmFjdGl2ZVdpZHRoLCBlbmRZIC0gc3RhcnRZKTtcclxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIGNvbnRleHQuZmlsbCgpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKFwiI0ZGRkZGRlwiKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0JhclRvb2xUaXBTcGxpdEFyZWEob2Zmc2V0WCwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBhY3RpdmVCZ0NvbG9yOiAnIzAwMDAwMCcsXHJcbiAgICBhY3RpdmVCZ09wYWNpdHk6IDAuMDhcclxuICB9LCBvcHRzLmV4dHJhLmJhcik7XHJcbiAgdmFyIHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICB2YXIgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmFjdGl2ZUJnQ29sb3IsIHRvb2xUaXBPcHRpb24uYWN0aXZlQmdPcGFjaXR5KSk7XHJcbiAgY29udGV4dC5yZWN0KCBzdGFydFggLG9mZnNldFggLSBlYWNoU3BhY2luZyAvIDIgLCAgZW5kWCAtIHN0YXJ0WCxlYWNoU3BhY2luZyk7XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShcIiNGRkZGRkZcIik7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcCh0ZXh0TGlzdCwgb2Zmc2V0LCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBzaG93Qm94OiB0cnVlLFxyXG4gICAgc2hvd0Fycm93OiB0cnVlLFxyXG4gICAgc2hvd0NhdGVnb3J5OiBmYWxzZSxcclxuICAgIGJnQ29sb3I6ICcjMDAwMDAwJyxcclxuICAgIGJnT3BhY2l0eTogMC43LFxyXG4gICAgYm9yZGVyQ29sb3I6ICcjMDAwMDAwJyxcclxuICAgIGJvcmRlcldpZHRoOiAwLFxyXG4gICAgYm9yZGVyUmFkaXVzOiAwLFxyXG4gICAgYm9yZGVyT3BhY2l0eTogMC43LFxyXG4gICAgZm9udENvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBzcGxpdExpbmU6IHRydWUsXHJcbiAgfSwgb3B0cy5leHRyYS50b29sdGlwKTtcclxuICBpZih0b29sVGlwT3B0aW9uLnNob3dDYXRlZ29yeT09dHJ1ZSAmJiBvcHRzLmNhdGVnb3JpZXMpe1xyXG4gICAgdGV4dExpc3QudW5zaGlmdCh7dGV4dDpvcHRzLmNhdGVnb3JpZXNbb3B0cy50b29sdGlwLmluZGV4XSxjb2xvcjpudWxsfSlcclxuICB9XHJcbiAgdmFyIGxlZ2VuZFdpZHRoID0gNCAqIG9wdHMucGl4O1xyXG4gIHZhciBsZWdlbmRNYXJnaW5SaWdodCA9IDUgKiBvcHRzLnBpeDtcclxuICB2YXIgYXJyb3dXaWR0aCA9IHRvb2xUaXBPcHRpb24uc2hvd0Fycm93ID8gOCAqIG9wdHMucGl4IDogMDtcclxuICB2YXIgaXNPdmVyUmlnaHRCb3JkZXIgPSBmYWxzZTtcclxuICBpZiAob3B0cy50eXBlID09ICdsaW5lJyB8fCBvcHRzLnR5cGUgPT0gJ21vdW50JyB8fCBvcHRzLnR5cGUgPT0gJ2FyZWEnIHx8IG9wdHMudHlwZSA9PSAnY2FuZGxlJyB8fCBvcHRzLnR5cGUgPT0gJ21peCcpIHtcclxuICAgIGlmICh0b29sVGlwT3B0aW9uLnNwbGl0TGluZSA9PSB0cnVlKSB7XHJcbiAgICAgIGRyYXdUb29sVGlwU3BsaXRMaW5lKG9wdHMudG9vbHRpcC5vZmZzZXQueCwgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcbiAgb2Zmc2V0ID0gYXNzaWduKHtcclxuICAgIHg6IDAsXHJcbiAgICB5OiAwXHJcbiAgfSwgb2Zmc2V0KTtcclxuICBvZmZzZXQueSAtPSA4ICogb3B0cy5waXg7XHJcbiAgdmFyIHRleHRXaWR0aCA9IHRleHRMaXN0Lm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICByZXR1cm4gbWVhc3VyZVRleHQoaXRlbS50ZXh0LCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpO1xyXG4gIH0pO1xyXG4gIHZhciB0b29sVGlwV2lkdGggPSBsZWdlbmRXaWR0aCArIGxlZ2VuZE1hcmdpblJpZ2h0ICsgNCAqIGNvbmZpZy50b29sVGlwUGFkZGluZyArIE1hdGgubWF4LmFwcGx5KG51bGwsIHRleHRXaWR0aCk7XHJcbiAgdmFyIHRvb2xUaXBIZWlnaHQgPSAyICogY29uZmlnLnRvb2xUaXBQYWRkaW5nICsgdGV4dExpc3QubGVuZ3RoICogY29uZmlnLnRvb2xUaXBMaW5lSGVpZ2h0O1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLnNob3dCb3ggPT0gZmFsc2UpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICAvLyBpZiBiZXlvbmQgdGhlIHJpZ2h0IGJvcmRlclxyXG4gIGlmIChvZmZzZXQueCAtIE1hdGguYWJzKG9wdHMuX3Njcm9sbERpc3RhbmNlXyB8fCAwKSArIGFycm93V2lkdGggKyB0b29sVGlwV2lkdGggPiBvcHRzLndpZHRoKSB7XHJcbiAgICBpc092ZXJSaWdodEJvcmRlciA9IHRydWU7XHJcbiAgfVxyXG4gIGlmICh0b29sVGlwSGVpZ2h0ICsgb2Zmc2V0LnkgPiBvcHRzLmhlaWdodCkge1xyXG4gICAgb2Zmc2V0LnkgPSBvcHRzLmhlaWdodCAtIHRvb2xUaXBIZWlnaHQ7XHJcbiAgfVxyXG4gIC8vIGRyYXcgYmFja2dyb3VuZCByZWN0XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmJnQ29sb3IgfHwgY29uZmlnLnRvb2xUaXBCYWNrZ3JvdW5kLCB0b29sVGlwT3B0aW9uLmJnT3BhY2l0eSB8fCBjb25maWcudG9vbFRpcE9wYWNpdHkpKTtcclxuICBjb250ZXh0LnNldExpbmVXaWR0aCh0b29sVGlwT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2IodG9vbFRpcE9wdGlvbi5ib3JkZXJDb2xvciwgdG9vbFRpcE9wdGlvbi5ib3JkZXJPcGFjaXR5KSk7XHJcbiAgdmFyIHJhZGl1cyA9IHRvb2xUaXBPcHRpb24uYm9yZGVyUmFkaXVzO1xyXG4gIGlmIChpc092ZXJSaWdodEJvcmRlcikge1xyXG4gICAgLy8g5aKe5Yqg5bem5L6n5LuN54S26LaF5Ye655qE5Yik5patXHJcbiAgICBpZih0b29sVGlwV2lkdGggKyBhcnJvd1dpZHRoID4gb3B0cy53aWR0aCl7XHJcbiAgICAgIG9mZnNldC54ID0gb3B0cy53aWR0aCArIE1hdGguYWJzKG9wdHMuX3Njcm9sbERpc3RhbmNlXyB8fCAwKSArIGFycm93V2lkdGggKyAodG9vbFRpcFdpZHRoIC0gb3B0cy53aWR0aClcclxuICAgIH1cclxuICAgIGlmICh0b29sVGlwT3B0aW9uLnNob3dBcnJvdykge1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhvZmZzZXQueCwgb2Zmc2V0LnkgKyAxMCAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5saW5lVG8ob2Zmc2V0LnggLSBhcnJvd1dpZHRoLCBvZmZzZXQueSArIDEwICogb3B0cy5waXggKyA1ICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggLSBhcnJvd1dpZHRoIC0gcmFkaXVzLCBvZmZzZXQueSArIHRvb2xUaXBIZWlnaHQgLSByYWRpdXMsIHJhZGl1cywgMCwgTWF0aC5QSSAvIDIsIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54IC0gYXJyb3dXaWR0aCAtIE1hdGgucm91bmQodG9vbFRpcFdpZHRoKSArIHJhZGl1cywgb2Zmc2V0LnkgKyB0b29sVGlwSGVpZ2h0IC0gcmFkaXVzLCByYWRpdXMsXHJcbiAgICAgIE1hdGguUEkgLyAyLCBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCAtIGFycm93V2lkdGggLSBNYXRoLnJvdW5kKHRvb2xUaXBXaWR0aCkgKyByYWRpdXMsIG9mZnNldC55ICsgcmFkaXVzLCByYWRpdXMsIC1NYXRoLlBJLCAtTWF0aC5QSSAvIDIsIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54IC0gYXJyb3dXaWR0aCAtIHJhZGl1cywgb2Zmc2V0LnkgKyByYWRpdXMsIHJhZGl1cywgLU1hdGguUEkgLyAyLCAwLCBmYWxzZSk7XHJcbiAgICBpZiAodG9vbFRpcE9wdGlvbi5zaG93QXJyb3cpIHtcclxuICAgICAgY29udGV4dC5saW5lVG8ob2Zmc2V0LnggLSBhcnJvd1dpZHRoLCBvZmZzZXQueSArIDEwICogb3B0cy5waXggLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCwgb2Zmc2V0LnkgKyAxMCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKHRvb2xUaXBPcHRpb24uc2hvd0Fycm93KSB7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKG9mZnNldC54LCBvZmZzZXQueSArIDEwICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCArIGFycm93V2lkdGgsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCArIGFycm93V2lkdGggKyByYWRpdXMsIG9mZnNldC55ICsgcmFkaXVzLCByYWRpdXMsIC1NYXRoLlBJLCAtTWF0aC5QSSAvIDIsIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54ICsgYXJyb3dXaWR0aCArIE1hdGgucm91bmQodG9vbFRpcFdpZHRoKSAtIHJhZGl1cywgb2Zmc2V0LnkgKyByYWRpdXMsIHJhZGl1cywgLU1hdGguUEkgLyAyLCAwLFxyXG4gICAgICBmYWxzZSk7XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCArIGFycm93V2lkdGggKyBNYXRoLnJvdW5kKHRvb2xUaXBXaWR0aCkgLSByYWRpdXMsIG9mZnNldC55ICsgdG9vbFRpcEhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCAwLFxyXG4gICAgICBNYXRoLlBJIC8gMiwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggKyBhcnJvd1dpZHRoICsgcmFkaXVzLCBvZmZzZXQueSArIHRvb2xUaXBIZWlnaHQgLSByYWRpdXMsIHJhZGl1cywgTWF0aC5QSSAvIDIsIE1hdGguUEksIGZhbHNlKTtcclxuICAgIGlmICh0b29sVGlwT3B0aW9uLnNob3dBcnJvdykge1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCArIGFycm93V2lkdGgsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCArIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKG9mZnNldC54LCBvZmZzZXQueSArIDEwICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIGNvbnRleHQuZmlsbCgpO1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLmJvcmRlcldpZHRoID4gMCkge1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9XHJcbiAgLy8gZHJhdyBsZWdlbmRcclxuICB0ZXh0TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbS5jb2xvciAhPT0gbnVsbCkge1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgdmFyIHN0YXJ0WCA9IG9mZnNldC54ICsgYXJyb3dXaWR0aCArIDIgKiBjb25maWcudG9vbFRpcFBhZGRpbmc7XHJcbiAgICAgIHZhciBzdGFydFkgPSBvZmZzZXQueSArIChjb25maWcudG9vbFRpcExpbmVIZWlnaHQgLSBjb25maWcuZm9udFNpemUpIC8gMiArIGNvbmZpZy50b29sVGlwTGluZUhlaWdodCAqIGluZGV4ICsgY29uZmlnLnRvb2xUaXBQYWRkaW5nICsgMTtcclxuICAgICAgaWYgKGlzT3ZlclJpZ2h0Qm9yZGVyKSB7XHJcbiAgICAgICAgc3RhcnRYID0gb2Zmc2V0LnggLSB0b29sVGlwV2lkdGggLSBhcnJvd1dpZHRoICsgMiAqIGNvbmZpZy50b29sVGlwUGFkZGluZztcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCwgc3RhcnRZLCBsZWdlbmRXaWR0aCwgY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgLy8g5ZyG5b2i5Zu+5L6L6K+35rOo6YeK5LiK6KGM77yM5bm25oqK5LiL6KGM5Y+W5raI5rOo6YeKXHJcbiAgICAgIC8vIGNvbnRleHQuYXJjKHN0YXJ0WCArIGxlZ2VuZFdpZHRoIC8gMiAsIHN0YXJ0WSArIG9wdHMuZm9udFNpemUgLyAyLCA0ICogb3B0cy5waXgsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgLy8gZHJhdyB0ZXh0IGxpc3RcclxuICB0ZXh0TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICB2YXIgc3RhcnRYID0gb2Zmc2V0LnggKyBhcnJvd1dpZHRoICsgMiAqIGNvbmZpZy50b29sVGlwUGFkZGluZyArIGxlZ2VuZFdpZHRoICsgbGVnZW5kTWFyZ2luUmlnaHQ7XHJcbiAgICBpZiAoaXNPdmVyUmlnaHRCb3JkZXIpIHtcclxuICAgICAgc3RhcnRYID0gb2Zmc2V0LnggLSB0b29sVGlwV2lkdGggLSBhcnJvd1dpZHRoICsgMiAqIGNvbmZpZy50b29sVGlwUGFkZGluZyArICtsZWdlbmRXaWR0aCArIGxlZ2VuZE1hcmdpblJpZ2h0O1xyXG4gICAgfVxyXG4gICAgdmFyIHN0YXJ0WSA9IG9mZnNldC55ICsgKGNvbmZpZy50b29sVGlwTGluZUhlaWdodCAtIGNvbmZpZy5mb250U2l6ZSkgLyAyICsgY29uZmlnLnRvb2xUaXBMaW5lSGVpZ2h0ICogaW5kZXggKyBjb25maWcudG9vbFRpcFBhZGRpbmc7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUodG9vbFRpcE9wdGlvbi5mb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dChpdGVtLnRleHQsIHN0YXJ0WCwgc3RhcnRZICsgY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3Q29sdW1uRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIGxldCBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIGxldCB4QXhpc0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEsXHJcbiAgICB4QXhpc1BvaW50cyA9IHhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nID0geEF4aXNEYXRhLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBjb2x1bW5PcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6ICdncm91cCcsXHJcbiAgICB3aWR0aDogZWFjaFNwYWNpbmcgLyAyLFxyXG4gICAgbWV0ZXJCb3JkZXI6IDQsXHJcbiAgICBtZXRlckZpbGxDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgYmFyQm9yZGVyQ2lyY2xlOiBmYWxzZSxcclxuICAgIGJhckJvcmRlclJhZGl1czogW10sXHJcbiAgICBzZXJpZXNHYXA6IDIsXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBsaW5lYXJPcGFjaXR5OiAxLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gICAgY29sb3JTdG9wOiAwLFxyXG4gIH0sIG9wdHMuZXh0cmEuY29sdW1uKTtcclxuICBsZXQgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnROdW0gPSAtMjtcclxuICBsZXQgcmlnaHROdW0gPSB4QXhpc1BvaW50cy5sZW5ndGggKyAyO1xyXG4gIGlmIChvcHRzLl9zY3JvbGxEaXN0YW5jZV8gJiYgb3B0cy5fc2Nyb2xsRGlzdGFuY2VfICE9PSAwICYmIG9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShvcHRzLl9zY3JvbGxEaXN0YW5jZV8sIDApO1xyXG4gICAgbGVmdE51bSA9IE1hdGguZmxvb3IoLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAvIGVhY2hTcGFjaW5nKSAtIDI7XHJcbiAgICByaWdodE51bSA9IGxlZnROdW0gKyBvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQ7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnRvb2x0aXAgJiYgb3B0cy50b29sdGlwLnRleHRMaXN0ICYmIG9wdHMudG9vbHRpcC50ZXh0TGlzdC5sZW5ndGggJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgZHJhd1Rvb2xUaXBTcGxpdEFyZWEob3B0cy50b29sdGlwLm9mZnNldC54LCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGVhY2hTcGFjaW5nKTtcclxuICB9XHJcbiAgY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yID0gZmlsbEN1c3RvbUNvbG9yKGNvbHVtbk9wdGlvbi5saW5lYXJUeXBlLCBjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICBzd2l0Y2ggKGNvbHVtbk9wdGlvbi50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2dyb3VwJzpcclxuICAgICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgICB2YXIgdG9vbHRpcFBvaW50cyA9IGdldFN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc2VyaWVzLCBwcm9jZXNzKTtcclxuICAgICAgICBjYWxQb2ludHMucHVzaCh0b29sdGlwUG9pbnRzKTtcclxuICAgICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tpXTtcclxuICAgICAgICAgIC8vZml4IGlzc3Vlcy9JMjdCMU4geXlvaW5nZSAmIEpvZXNodVxyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBpdGVtLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICB2YXIgZmlsbENvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHN0YXJ0WCwgaXRlbS55LCBzdGFydFgsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZmlsbENvbG9yLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3JbZWFjaFNlcmllcy5saW5lYXJJbmRleF0sIGNvbHVtbk9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKGNvbHVtbk9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSxjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5ZyG6KeS6L655qGGXHJcbiAgICAgICAgICAgIGlmICgoY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyAmJiBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzLmxlbmd0aCA9PT0gNCkgfHwgY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBzdGFydFg7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG9wID0gaXRlbS55O1xyXG4gICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gaXRlbS53aWR0aDtcclxuICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSAtIGl0ZW0ueTtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSkge1xyXG4gICAgICAgICAgICAgICAgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyA9IFt3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMCwgMF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBbcjAsIHIxLCByMiwgcjNdID0gY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cztcclxuICAgICAgICAgICAgICBsZXQgbWluUmFkaXVzID0gTWF0aC5taW4od2lkdGgvMixoZWlnaHQvMik7XHJcbiAgICAgICAgICAgICAgcjAgPSByMCA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjI7XHJcbiAgICAgICAgICAgICAgcjMgPSByMyA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIzO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPCAwID8gMCA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPCAwID8gMCA6IHIxO1xyXG4gICAgICAgICAgICAgIHIyID0gcjIgPCAwID8gMCA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPCAwID8gMCA6IHIzO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMCwgdG9wICsgcjAsIHIwLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgd2lkdGggLSByMSwgdG9wICsgcjEsIHIxLCAtTWF0aC5QSSAvIDIsIDApO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyB3aWR0aCAtIHIyLCB0b3AgKyBoZWlnaHQgLSByMiwgcjIsIDAsIE1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjMsIHRvcCArIGhlaWdodCAtIHIzLCByMywgTWF0aC5QSSAvIDIsIE1hdGguUEkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGgsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSlcclxuICAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHN0cm9rZUNvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICAvL2NvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3N0YWNrJzpcclxuICAgICAgICAvLyDnu5jliLbloIblj6DmlbDmja7lm75cclxuICAgICAgICB2YXIgcG9pbnRzID0gZ2V0U3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4Q29sdW1lU3RhY2tEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMsIHNlcmllcyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIHZhciBmaWxsQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3I7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBpdGVtLndpZHRoIC8gMiArIDE7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgdmFyIGhlaWdodDAgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueTAgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgICAgIGlmIChzZXJpZXNJbmRleCA+IDApIHtcclxuICAgICAgICAgICAgICBoZWlnaHQgLT0gaGVpZ2h0MDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBpdGVtLnksIGl0ZW0ud2lkdGgsIGhlaWdodCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21ldGVyJzpcclxuICAgICAgICAvLyDnu5jliLbmuKnluqborqHmlbDmja7lm75cclxuICAgICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgICBjYWxQb2ludHMucHVzaChwb2ludHMpO1xyXG4gICAgICAgIHBvaW50cyA9IGZpeENvbHVtZU1ldGVyRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBzZXJpZXMubGVuZ3RoLCBzZXJpZXNJbmRleCwgY29uZmlnLCBvcHRzLCBjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIpO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgICAgICAgIC8v55S76IOM5pmv6aKc6ImyXHJcbiAgICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgICBpZiAoc2VyaWVzSW5kZXggPT0gMCAmJiBjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoY29sdW1uT3B0aW9uLm1ldGVyQm9yZGVyICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZihzZXJpZXNJbmRleCA9PSAwKXtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGNvbHVtbk9wdGlvbi5tZXRlckZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgICAgIGlmICgoY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyAmJiBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzLmxlbmd0aCA9PT0gNCkgfHwgY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IHN0YXJ0WDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGl0ZW0ueTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gaXRlbS53aWR0aDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gaXRlbS55O1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJDaXJjbGUpIHtcclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyA9IFt3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMCwgMF07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgW3IwLCByMSwgcjIsIHIzXSA9IGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXM7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWluUmFkaXVzID0gTWF0aC5taW4od2lkdGgvMixoZWlnaHQvMik7XHJcbiAgICAgICAgICAgICAgICByMCA9IHIwID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjA7XHJcbiAgICAgICAgICAgICAgICByMSA9IHIxID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjE7XHJcbiAgICAgICAgICAgICAgICByMiA9IHIyID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjI7XHJcbiAgICAgICAgICAgICAgICByMyA9IHIzID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjM7XHJcbiAgICAgICAgICAgICAgICByMCA9IHIwIDwgMCA/IDAgOiByMDtcclxuICAgICAgICAgICAgICAgIHIxID0gcjEgPCAwID8gMCA6IHIxO1xyXG4gICAgICAgICAgICAgICAgcjIgPSByMiA8IDAgPyAwIDogcjI7XHJcbiAgICAgICAgICAgICAgICByMyA9IHIzIDwgMCA/IDAgOiByMztcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMCwgdG9wICsgcjAsIHIwLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyB3aWR0aCAtIHIxLCB0b3AgKyByMSwgcjEsIC1NYXRoLlBJIC8gMiwgMCk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgd2lkdGggLSByMiwgdG9wICsgaGVpZ2h0IC0gcjIsIHIyLCAwLCBNYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjMsIHRvcCArIGhlaWdodCAtIHIzLCByMywgTWF0aC5QSSAvIDIsIE1hdGguUEkpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgaXRlbS53aWR0aCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHNlcmllc0luZGV4ID09IDAgJiYgY29sdW1uT3B0aW9uLm1ldGVyQm9yZGVyID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgICAgc3dpdGNoIChjb2x1bW5PcHRpb24udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2dyb3VwJzpcclxuICAgICAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgcG9pbnRzID0gZml4Q29sdW1lRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBzZXJpZXMubGVuZ3RoLCBzZXJpZXNJbmRleCwgY29uZmlnLCBvcHRzKTtcclxuICAgICAgICAgIGRyYXdQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3RhY2snOlxyXG4gICAgICAgICAgdmFyIHBvaW50cyA9IGdldFN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc2VyaWVzLCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWV0ZXInOlxyXG4gICAgICAgICAgdmFyIHBvaW50cyA9IGdldERhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3UG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogY2FsUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd01vdW50RGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIGxldCBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIGxldCB4QXhpc0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEsXHJcbiAgICB4QXhpc1BvaW50cyA9IHhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nID0geEF4aXNEYXRhLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBtb3VudE9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ21vdW50JyxcclxuICAgIHdpZHRoUmF0aW86IDEsXHJcbiAgICBib3JkZXJXaWR0aDogMSxcclxuICAgIGJhckJvcmRlckNpcmNsZTogZmFsc2UsXHJcbiAgICBiYXJCb3JkZXJSYWRpdXM6IFtdLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgbGluZWFyT3BhY2l0eTogMSxcclxuICAgIGN1c3RvbUNvbG9yOiBbXSxcclxuICAgIGNvbG9yU3RvcDogMCxcclxuICB9LCBvcHRzLmV4dHJhLm1vdW50KTtcclxuICBtb3VudE9wdGlvbi53aWR0aFJhdGlvID0gbW91bnRPcHRpb24ud2lkdGhSYXRpbyA8PSAwID8gMCA6IG1vdW50T3B0aW9uLndpZHRoUmF0aW87XHJcbiAgbW91bnRPcHRpb24ud2lkdGhSYXRpbyA9IG1vdW50T3B0aW9uLndpZHRoUmF0aW8gPj0gMiA/IDIgOiBtb3VudE9wdGlvbi53aWR0aFJhdGlvO1xyXG4gIGxldCBjYWxQb2ludHMgPSBbXTtcclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBsZXQgbGVmdE51bSA9IC0yO1xyXG4gIGxldCByaWdodE51bSA9IHhBeGlzUG9pbnRzLmxlbmd0aCArIDI7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0TnVtID0gTWF0aC5mbG9vcigtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC8gZWFjaFNwYWNpbmcpIC0gMjtcclxuICAgIHJpZ2h0TnVtID0gbGVmdE51bSArIG9wdHMueEF4aXMuaXRlbUNvdW50ICsgNDtcclxuICB9XHJcbiAgbW91bnRPcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IobW91bnRPcHRpb24ubGluZWFyVHlwZSwgbW91bnRPcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzWzBdKTtcclxuICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgIHZhciBwb2ludHMgPSBnZXRNb3VudERhdGFQb2ludHMoc2VyaWVzLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgbW91bnRPcHRpb24sIHByb2Nlc3MpO1xyXG4gICAgc3dpdGNoIChtb3VudE9wdGlvbi50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2Jhcic6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBlYWNoU3BhY2luZyptb3VudE9wdGlvbi53aWR0aFJhdGlvLzI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgLy/pgI/mmI7muJDlj5hcclxuICAgICAgICAgICAgICBpZiAobW91bnRPcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZmlsbENvbG9yLCBtb3VudE9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKG1vdW50T3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tpXS5saW5lYXJJbmRleF0sIG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AobW91bnRPcHRpb24uY29sb3JTdG9wLCBoZXhUb1JnYihtb3VudE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNbaV0ubGluZWFySW5kZXhdLG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOWchuinkui+ueahhlxyXG4gICAgICAgICAgICBpZiAoKG1vdW50T3B0aW9uLmJhckJvcmRlclJhZGl1cyAmJiBtb3VudE9wdGlvbi5iYXJCb3JkZXJSYWRpdXMubGVuZ3RoID09PSA0KSB8fCBtb3VudE9wdGlvbi5iYXJCb3JkZXJDaXJjbGUgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gc3RhcnRYO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRvcCA9IGl0ZW0ueTtcclxuICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IGl0ZW0ud2lkdGg7XHJcbiAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBpdGVtLnkgLSBtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4IC8gMjsgXHJcbiAgICAgICAgICAgICAgaWYgKG1vdW50T3B0aW9uLmJhckJvcmRlckNpcmNsZSkge1xyXG4gICAgICAgICAgICAgICAgbW91bnRPcHRpb24uYmFyQm9yZGVyUmFkaXVzID0gW3dpZHRoIC8gMiwgd2lkdGggLyAyLCAwLCAwXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbGV0IFtyMCwgcjEsIHIyLCByM10gPSBtb3VudE9wdGlvbi5iYXJCb3JkZXJSYWRpdXM7XHJcbiAgICAgICAgICAgICAgbGV0IG1pblJhZGl1cyA9IE1hdGgubWluKHdpZHRoLzIsaGVpZ2h0LzIpO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjE7XHJcbiAgICAgICAgICAgICAgcjIgPSByMiA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMztcclxuICAgICAgICAgICAgICByMCA9IHIwIDwgMCA/IDAgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxIDwgMCA/IDAgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyIDwgMCA/IDAgOiByMjtcclxuICAgICAgICAgICAgICByMyA9IHIzIDwgMCA/IDAgOiByMztcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjAsIHRvcCArIHIwLCByMCwgLU1hdGguUEksIC1NYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjEsIHRvcCArIHIxLCByMSwgLU1hdGguUEkgLyAyLCAwKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgd2lkdGggLSByMiwgdG9wICsgaGVpZ2h0IC0gcjIsIHIyLCAwLCBNYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHIzLCB0b3AgKyBoZWlnaHQgLSByMywgcjMsIE1hdGguUEkgLyAyLCBNYXRoLlBJKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgaXRlbS53aWR0aCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBpZihtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCA+IDApe1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKG1vdW50T3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0cmlhbmdsZSc6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBlYWNoU3BhY2luZyptb3VudE9wdGlvbi53aWR0aFJhdGlvLzI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgLy/pgI/mmI7muJDlj5hcclxuICAgICAgICAgICAgICBpZiAobW91bnRPcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZmlsbENvbG9yLCBtb3VudE9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKG1vdW50T3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tpXS5saW5lYXJJbmRleF0sIG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AobW91bnRPcHRpb24uY29sb3JTdG9wLCBoZXhUb1JnYihtb3VudE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNbaV0ubGluZWFySW5kZXhdLG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGgsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShzdHJva2VDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgIGlmKG1vdW50T3B0aW9uLmJvcmRlcldpZHRoID4gMCl7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgobW91bnRPcHRpb24uYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb3VudCc6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBlYWNoU3BhY2luZyptb3VudE9wdGlvbi53aWR0aFJhdGlvLzI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgICAgLy/pgI/mmI7muJDlj5hcclxuICAgICAgICAgICAgICBpZiAobW91bnRPcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZmlsbENvbG9yLCBtb3VudE9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKG1vdW50T3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tpXS5saW5lYXJJbmRleF0sIG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AobW91bnRPcHRpb24uY29sb3JTdG9wLCBoZXhUb1JnYihtb3VudE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNbaV0ubGluZWFySW5kZXhdLG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8oaXRlbS54IC0gaXRlbS53aWR0aC80LCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSwgaXRlbS54IC0gaXRlbS53aWR0aC80LCBpdGVtLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGl0ZW0ueCArIGl0ZW0ud2lkdGgvNCwgaXRlbS55LCBpdGVtLnggKyBpdGVtLndpZHRoLzQsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdLCBzdGFydFggKyBpdGVtLndpZHRoLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBpZihtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCA+IDApe1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKG1vdW50T3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc2hhcnAnOlxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tpXTtcclxuICAgICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gZWFjaFNwYWNpbmcqbW91bnRPcHRpb24ud2lkdGhSYXRpby8yO1xyXG4gICAgICAgICAgICB2YXIgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBpdGVtLnkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIHZhciBmaWxsQ29sb3IgPSBpdGVtLmNvbG9yIHx8IHNlcmllc1tpXS5jb2xvclxyXG4gICAgICAgICAgICB2YXIgc3Ryb2tlQ29sb3IgPSBpdGVtLmNvbG9yIHx8IHNlcmllc1tpXS5jb2xvclxyXG4gICAgICAgICAgICBpZiAobW91bnRPcHRpb24ubGluZWFyVHlwZSAhPT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc3RhcnRYLCBpdGVtLnksIHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICAgIC8v6YCP5piO5riQ5Y+YXHJcbiAgICAgICAgICAgICAgaWYgKG1vdW50T3B0aW9uLmxpbmVhclR5cGUgPT0gJ29wYWNpdHknKSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGZpbGxDb2xvciwgbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihtb3VudE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNbaV0ubGluZWFySW5kZXhdLCBtb3VudE9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKG1vdW50T3B0aW9uLmNvbG9yU3RvcCwgaGV4VG9SZ2IobW91bnRPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSxtb3VudE9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKGl0ZW0ueCAtIDAsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gaGVpZ2h0LzQsIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKGl0ZW0ueCArIDAsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gaGVpZ2h0LzQsIHN0YXJ0WCArIGl0ZW0ud2lkdGgsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKVxyXG4gICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHN0cm9rZUNvbG9yKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgICAgaWYobW91bnRPcHRpb24uYm9yZGVyV2lkdGggPiAwKXtcclxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aChtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbMF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgdmFyIHBvaW50cyA9IGdldE1vdW50RGF0YVBvaW50cyhzZXJpZXMsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBtb3VudE9wdGlvbiwgcHJvY2Vzcyk7XHJcbiAgICBkcmF3TW91bnRQb2ludFRleHQocG9pbnRzLCBzZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgfVxyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIHJldHVybiB7XHJcbiAgICB4QXhpc1BvaW50czogeEF4aXNQb2ludHMsXHJcbiAgICBjYWxQb2ludHM6IHBvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZ1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdCYXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHlBeGlzUG9pbnRzID0gW107XHJcbiAgbGV0IGVhY2hTcGFjaW5nID0gKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKS9vcHRzLmNhdGVnb3JpZXMubGVuZ3RoO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0cy5jYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICB5QXhpc1BvaW50cy5wdXNoKG9wdHMuYXJlYVswXSArIGVhY2hTcGFjaW5nIC8gMiArIGVhY2hTcGFjaW5nICogaSk7XHJcbiAgfVxyXG4gIGxldCBjb2x1bW5PcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6ICdncm91cCcsXHJcbiAgICB3aWR0aDogZWFjaFNwYWNpbmcgLyAyLFxyXG4gICAgbWV0ZXJCb3JkZXI6IDQsXHJcbiAgICBtZXRlckZpbGxDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgYmFyQm9yZGVyQ2lyY2xlOiBmYWxzZSxcclxuICAgIGJhckJvcmRlclJhZGl1czogW10sXHJcbiAgICBzZXJpZXNHYXA6IDIsXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBsaW5lYXJPcGFjaXR5OiAxLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gICAgY29sb3JTdG9wOiAwLFxyXG4gIH0sIG9wdHMuZXh0cmEuYmFyKTtcclxuICBsZXQgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnROdW0gPSAtMjtcclxuICBsZXQgcmlnaHROdW0gPSB5QXhpc1BvaW50cy5sZW5ndGggKyAyO1xyXG4gIGlmIChvcHRzLnRvb2x0aXAgJiYgb3B0cy50b29sdGlwLnRleHRMaXN0ICYmIG9wdHMudG9vbHRpcC50ZXh0TGlzdC5sZW5ndGggJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgZHJhd0JhclRvb2xUaXBTcGxpdEFyZWEob3B0cy50b29sdGlwLm9mZnNldC55LCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGVhY2hTcGFjaW5nKTtcclxuICB9XHJcbiAgY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yID0gZmlsbEN1c3RvbUNvbG9yKGNvbHVtbk9wdGlvbi5saW5lYXJUeXBlLCBjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5yYW5nZXMpO1xyXG4gICAgbWF4UmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICBzd2l0Y2ggKGNvbHVtbk9wdGlvbi50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2dyb3VwJzpcclxuICAgICAgICB2YXIgcG9pbnRzID0gZ2V0QmFyRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgICB2YXIgdG9vbHRpcFBvaW50cyA9IGdldEJhclN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc2VyaWVzLCBwcm9jZXNzKTtcclxuICAgICAgICBjYWxQb2ludHMucHVzaCh0b29sdGlwUG9pbnRzKTtcclxuICAgICAgICBwb2ludHMgPSBmaXhCYXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tpXTtcclxuICAgICAgICAgIC8vZml4IGlzc3Vlcy9JMjdCMU4geXlvaW5nZSAmIEpvZXNodVxyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIC8vdmFyIHN0YXJ0WCA9IGl0ZW0ueCAtIGl0ZW0ud2lkdGggLyAyO1xyXG4gICAgICAgICAgICB2YXIgc3RhcnRYID0gb3B0cy5hcmVhWzNdO1xyXG4gICAgICAgICAgICB2YXIgc3RhcnRZID0gaXRlbS55IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBpdGVtLmhlaWdodDtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgICB2YXIgc3Ryb2tlQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3JcclxuICAgICAgICAgICAgaWYgKGNvbHVtbk9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIC8v6YCP5piO5riQ5Y+YXHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbk9wdGlvbi5saW5lYXJUeXBlID09ICdvcGFjaXR5Jykge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihmaWxsQ29sb3IsIGNvbHVtbk9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSwgY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoY29sdW1uT3B0aW9uLmNvbG9yU3RvcCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLGNvbHVtbk9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDlnIbop5LovrnmoYZcclxuICAgICAgICAgICAgaWYgKChjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzICYmIGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMubGVuZ3RoID09PSA0KSB8fCBjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IHN0YXJ0WDtcclxuICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IGl0ZW0ud2lkdGg7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG9wID0gaXRlbS55IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gaXRlbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJDaXJjbGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMgPSBbd2lkdGggLyAyLCB3aWR0aCAvIDIsIDAsIDBdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgW3IwLCByMSwgcjIsIHIzXSA9IGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXM7XHJcbiAgICAgICAgICAgICAgbGV0IG1pblJhZGl1cyA9IE1hdGgubWluKHdpZHRoLzIsaGVpZ2h0LzIpO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjE7XHJcbiAgICAgICAgICAgICAgcjIgPSByMiA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMztcclxuICAgICAgICAgICAgICByMCA9IHIwIDwgMCA/IDAgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxIDwgMCA/IDAgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyIDwgMCA/IDAgOiByMjtcclxuICAgICAgICAgICAgICByMyA9IHIzIDwgMCA/IDAgOiByMztcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjMsIHRvcCArIHIzLCByMywgLU1hdGguUEksIC1NYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMoaXRlbS54IC0gcjAsIHRvcCArIHIwLCByMCwgLU1hdGguUEkgLyAyLCAwKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhpdGVtLnggLSByMSwgdG9wICsgd2lkdGggLSByMSwgcjEsIDAsIE1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjIsIHRvcCArIHdpZHRoIC0gcjIsIHIyLCBNYXRoLlBJIC8gMiwgTWF0aC5QSSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgc3RhcnRZKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIHN0YXJ0WSArIGl0ZW0ud2lkdGgpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgc3RhcnRZICsgaXRlbS53aWR0aCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEpXHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShzdHJva2VDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgLy9jb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzdGFjayc6XHJcbiAgICAgICAgLy8g57uY5Yi25aCG5Y+g5pWw5o2u5Zu+XHJcbiAgICAgICAgdmFyIHBvaW50cyA9IGdldEJhclN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc2VyaWVzLCBwcm9jZXNzKTtcclxuICAgICAgICBjYWxQb2ludHMucHVzaChwb2ludHMpO1xyXG4gICAgICAgIHBvaW50cyA9IGZpeEJhclN0YWNrRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBzZXJpZXMubGVuZ3RoLCBzZXJpZXNJbmRleCwgY29uZmlnLCBvcHRzLCBzZXJpZXMpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tpXTtcclxuICAgICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICB2YXIgZmlsbENvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yO1xyXG4gICAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54MDtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkgLSBpdGVtLndpZHRoLzIpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCwgaXRlbS55IC0gaXRlbS53aWR0aC8yLCBpdGVtLmhlaWdodCAsIGl0ZW0ud2lkdGgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5yYW5nZXMpO1xyXG4gICAgICBtYXhSYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICAgIHN3aXRjaCAoY29sdW1uT3B0aW9uLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdncm91cCc6XHJcbiAgICAgICAgICB2YXIgcG9pbnRzID0gZ2V0QmFyRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgICAgIHBvaW50cyA9IGZpeEJhckRhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgc2VyaWVzLmxlbmd0aCwgc2VyaWVzSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgICAgICBkcmF3QmFyUG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3N0YWNrJzpcclxuICAgICAgICAgIHZhciBwb2ludHMgPSBnZXRCYXJTdGFja0RhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB5QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgc2VyaWVzSW5kZXgsIHNlcmllcywgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3QmFyUG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIHlBeGlzUG9pbnRzOiB5QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogY2FsUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0NhbmRsZURhdGFQb2ludHMoc2VyaWVzLCBzZXJpZXNNQSwgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IDE7XHJcbiAgdmFyIGNhbmRsZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgY29sb3I6IHt9LFxyXG4gICAgYXZlcmFnZToge31cclxuICB9LCBvcHRzLmV4dHJhLmNhbmRsZSk7XHJcbiAgY2FuZGxlT3B0aW9uLmNvbG9yID0gYXNzaWduKHt9LCB7XHJcbiAgICB1cExpbmU6ICcjZjA0ODY0JyxcclxuICAgIHVwRmlsbDogJyNmMDQ4NjQnLFxyXG4gICAgZG93bkxpbmU6ICcjMmZjMjViJyxcclxuICAgIGRvd25GaWxsOiAnIzJmYzI1YidcclxuICB9LCBjYW5kbGVPcHRpb24uY29sb3IpO1xyXG4gIGNhbmRsZU9wdGlvbi5hdmVyYWdlID0gYXNzaWduKHt9LCB7XHJcbiAgICBzaG93OiBmYWxzZSxcclxuICAgIG5hbWU6IFtdLFxyXG4gICAgZGF5OiBbXSxcclxuICAgIGNvbG9yOiBjb25maWcuY29sb3JcclxuICB9LCBjYW5kbGVPcHRpb24uYXZlcmFnZSk7XHJcbiAgb3B0cy5leHRyYS5jYW5kbGUgPSBjYW5kbGVPcHRpb247XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geEF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBsZXQgbGVmdFNwYWNlID0gMDtcclxuICBsZXQgcmlnaHRTcGFjZSA9IG9wdHMud2lkdGggKyBlYWNoU3BhY2luZztcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnROdW0gPSBNYXRoLmZsb29yKC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLyBlYWNoU3BhY2luZykgLSAyO1xyXG4gICAgcmlnaHROdW0gPSBsZWZ0TnVtICsgb3B0cy54QXhpcy5pdGVtQ291bnQgKyA0O1xyXG4gICAgbGVmdFNwYWNlID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAtIGVhY2hTcGFjaW5nICogMiArIG9wdHMuYXJlYVszXTtcclxuICAgIHJpZ2h0U3BhY2UgPSBsZWZ0U3BhY2UgKyAob3B0cy54QXhpcy5pdGVtQ291bnQgKyA0KSAqIGVhY2hTcGFjaW5nO1xyXG4gIH1cclxuICAvL+eUu+Wdh+e6v1xyXG4gIGlmIChjYW5kbGVPcHRpb24uYXZlcmFnZS5zaG93IHx8IHNlcmllc01BKSB7IC8vTWVyZ2UgcHVsbCByZXF1ZXN0ICExMiBmcm9tIOmCsei0tee/lFxyXG4gICAgc2VyaWVzTUEuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgdmFyIHNwbGl0UG9pbnRMaXN0ID0gc3BsaXRQb2ludHMocG9pbnRzLGVhY2hTZXJpZXMpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwbGl0UG9pbnRMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHBvaW50cyA9IHNwbGl0UG9pbnRMaXN0W2ldO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxKTtcclxuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAgIGNvbnRleHQuYXJjKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSwgMSwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSAwO1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIHZhciBjdHJsUG9pbnQgPSBjcmVhdGVDdXJ2ZUNvbnRyb2xQb2ludHMocG9pbnRzLCBqIC0gMSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGN0cmxQb2ludC5jdHJBLngsIGN0cmxQb2ludC5jdHJBLnksIGN0cmxQb2ludC5jdHJCLngsIGN0cmxQb2ludC5jdHJCLnksIGl0ZW0ueCxcclxuICAgICAgICAgICAgICAgIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v55S7S+e6v1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXRDYW5kbGVEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY2FsUG9pbnRzLnB1c2gocG9pbnRzKTtcclxuICAgIHZhciBzcGxpdFBvaW50TGlzdCA9IHNwbGl0UG9pbnRzKHBvaW50cyxlYWNoU2VyaWVzKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3RbMF0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgIGxldCBpdGVtID0gc3BsaXRQb2ludExpc3RbMF1baV07XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAvL+WmguaenOS4iua2qFxyXG4gICAgICAgIGlmIChkYXRhW2ldWzFdIC0gZGF0YVtpXVswXSA+IDApIHtcclxuICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoY2FuZGxlT3B0aW9uLmNvbG9yLnVwTGluZSk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShjYW5kbGVPcHRpb24uY29sb3IudXBGaWxsKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtWzNdLngsIGl0ZW1bM10ueSk7IC8v6aG254K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLngsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLnggLSBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMV0ueSk7IC8v5pS255uY5bem5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLnggLSBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMF0ueSk7IC8v5byA55uY5bem5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLngsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzJdLngsIGl0ZW1bMl0ueSk7IC8v5bqV54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLngsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLnggKyBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Y+z5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLnggKyBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Y+z5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLngsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtWzNdLngsIGl0ZW1bM10ueSk7IC8v6aG254K5XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoY2FuZGxlT3B0aW9uLmNvbG9yLmRvd25MaW5lKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGNhbmRsZU9wdGlvbi5jb2xvci5kb3duRmlsbCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbVszXS54LCBpdGVtWzNdLnkpOyAvL+mhtueCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVswXS54LCBpdGVtWzBdLnkpOyAvL+W8gOebmOS4remXtOeCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVswXS54IC0gZWFjaFNwYWNpbmcgLyA0LCBpdGVtWzBdLnkpOyAvL+W8gOebmOW3puS+p+eCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsxXS54IC0gZWFjaFNwYWNpbmcgLyA0LCBpdGVtWzFdLnkpOyAvL+aUtuebmOW3puS+p+eCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsxXS54LCBpdGVtWzFdLnkpOyAvL+aUtuebmOS4remXtOeCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsyXS54LCBpdGVtWzJdLnkpOyAvL+W6leeCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsxXS54LCBpdGVtWzFdLnkpOyAvL+aUtuebmOS4remXtOeCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVsxXS54ICsgZWFjaFNwYWNpbmcgLyA0LCBpdGVtWzFdLnkpOyAvL+aUtuebmOWPs+S+p+eCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVswXS54ICsgZWFjaFNwYWNpbmcgLyA0LCBpdGVtWzBdLnkpOyAvL+W8gOebmOWPs+S+p+eCuVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbVswXS54LCBpdGVtWzBdLnkpOyAvL+W8gOebmOS4remXtOeCuVxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbVszXS54LCBpdGVtWzNdLnkpOyAvL+mhtueCuVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QXJlYURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgYXJlYU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ3N0cmFpZ2h0JyxcclxuICAgIG9wYWNpdHk6IDAuMixcclxuICAgIGFkZExpbmU6IGZhbHNlLFxyXG4gICAgd2lkdGg6IDIsXHJcbiAgICBncmFkaWVudDogZmFsc2VcclxuICB9LCBvcHRzLmV4dHJhLmFyZWEpO1xyXG4gIGxldCB4QXhpc0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEsXHJcbiAgICB4QXhpc1BvaW50cyA9IHhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nID0geEF4aXNEYXRhLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBlbmRZID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgbGV0IGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0U3BhY2UgPSAwO1xyXG4gIGxldCByaWdodFNwYWNlID0gb3B0cy53aWR0aCArIGVhY2hTcGFjaW5nO1xyXG4gIGlmIChvcHRzLl9zY3JvbGxEaXN0YW5jZV8gJiYgb3B0cy5fc2Nyb2xsRGlzdGFuY2VfICE9PSAwICYmIG9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShvcHRzLl9zY3JvbGxEaXN0YW5jZV8sIDApO1xyXG4gICAgbGVmdFNwYWNlID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAtIGVhY2hTcGFjaW5nICogMiArIG9wdHMuYXJlYVszXTtcclxuICAgIHJpZ2h0U3BhY2UgPSBsZWZ0U3BhY2UgKyAob3B0cy54QXhpcy5pdGVtQ291bnQgKyA0KSAqIGVhY2hTcGFjaW5nO1xyXG4gIH1cclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgbGV0IGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICBsZXQgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICBsZXQgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwbGl0UG9pbnRMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwb2ludHMgPSBzcGxpdFBvaW50TGlzdFtpXTtcclxuICAgICAgLy8g57uY5Yi25Yy65Z+f5pWwXHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYXJlYU9wdGlvbi5vcGFjaXR5KSk7XHJcbiAgICAgIGlmIChhcmVhT3B0aW9uLmdyYWRpZW50KSB7XHJcbiAgICAgICAgbGV0IGdyYWRpZW50ID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCBvcHRzLmFyZWFbMF0sIDAsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoJzAnLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoJzEuMCcsIGhleFRvUmdiKFwiI0ZGRkZGRlwiLCAwLjEpKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShncmFkaWVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYXJlYU9wdGlvbi5vcGFjaXR5KSk7XHJcbiAgICAgIH1cclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoYXJlYU9wdGlvbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgaWYgKHBvaW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgbGV0IGZpcnN0UG9pbnQgPSBwb2ludHNbMF07XHJcbiAgICAgICAgbGV0IGxhc3RQb2ludCA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oZmlyc3RQb2ludC54LCBmaXJzdFBvaW50LnkpO1xyXG4gICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnY3VydmUnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8oY3RybFBvaW50LmN0ckEueCwgY3RybFBvaW50LmN0ckEueSwgY3RybFBvaW50LmN0ckIueCwgY3RybFBvaW50LmN0ckIueSwgaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ3N0cmFpZ2h0Jykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ3N0ZXAnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBwb2ludHNbaiAtIDFdLnkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8obGFzdFBvaW50LngsIGVuZFkpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGZpcnN0UG9pbnQueCwgZW5kWSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oZmlyc3RQb2ludC54LCBmaXJzdFBvaW50LnkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBpdGVtID0gcG9pbnRzWzBdO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgaXRlbS55KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgZWFjaFNwYWNpbmcgLyAyLCBlbmRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSBlYWNoU3BhY2luZyAvIDIsIGVuZFkpO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgaXRlbS55KTtcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgLy/nlLvov57nur9cclxuICAgICAgaWYgKGFyZWFPcHRpb24uYWRkTGluZSkge1xyXG4gICAgICAgIGlmIChlYWNoU2VyaWVzLmxpbmVUeXBlID09ICdkYXNoJykge1xyXG4gICAgICAgICAgbGV0IGRhc2hMZW5ndGggPSBlYWNoU2VyaWVzLmRhc2hMZW5ndGggPyBlYWNoU2VyaWVzLmRhc2hMZW5ndGggOiA4O1xyXG4gICAgICAgICAgZGFzaExlbmd0aCAqPSBvcHRzLnBpeDtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW2Rhc2hMZW5ndGgsIGRhc2hMZW5ndGhdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGFyZWFPcHRpb24ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmFyYyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnksIDEsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICAgIGlmIChhcmVhT3B0aW9uLnR5cGUgPT09ICdjdXJ2ZScpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhjdHJsUG9pbnQuY3RyQS54LCBjdHJsUG9pbnQuY3RyQS55LCBjdHJsUG9pbnQuY3RyQi54LCBjdHJsUG9pbnQuY3RyQi55LCBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ3N0cmFpZ2h0Jykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ3N0ZXAnKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgcG9pbnRzW2ogLSAxXS55KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+eUu+eCuVxyXG4gICAgaWYgKG9wdHMuZGF0YVBvaW50U2hhcGUgIT09IGZhbHNlKSB7XHJcbiAgICAgIGRyYXdQb2ludFNoYXBlKHBvaW50cywgZWFjaFNlcmllcy5jb2xvciwgZWFjaFNlcmllcy5wb2ludFNoYXBlLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogY2FsUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1NjYXR0ZXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIHNjYXR0ZXJPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6ICdjaXJjbGUnXHJcbiAgfSwgb3B0cy5leHRyYS5zY2F0dGVyKTtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICB2YXIgc2hhcGUgPSBlYWNoU2VyaWVzLnBvaW50U2hhcGU7XHJcbiAgICBpZiAoc2hhcGUgPT09ICdkaWFtb25kJykge1xyXG4gICAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICdjaXJjbGUnKSB7XHJcbiAgICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCArIDIuNSAqIG9wdHMucGl4LCBpdGVtLnkpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gMy41LCBpdGVtLnkgLSAzLjUpO1xyXG4gICAgICAgICAgY29udGV4dC5yZWN0KGl0ZW0ueCAtIDMuNSwgaXRlbS55IC0gMy41LCA3LCA3KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3RyaWFuZ2xlJykge1xyXG4gICAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICd0cmlhbmdsZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9KTtcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICBkcmF3UG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QnViYmxlRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBidWJibGVPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIG9wYWNpdHk6IDEsXHJcbiAgICBib3JkZXI6MlxyXG4gIH0sIG9wdHMuZXh0cmEuYnViYmxlKTtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChidWJibGVPcHRpb24uYm9yZGVyICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYnViYmxlT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCArIGl0ZW0uciwgaXRlbS55KTtcclxuICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIGl0ZW0uciAqIG9wdHMucGl4LCAwLCAyICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgXHJcbiAgICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIHZhciBmb250U2l6ZSA9IGVhY2hTZXJpZXMudGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemU7XHJcbiAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZWFjaFNlcmllcy50ZXh0Q29sb3IgfHwgXCIjRkZGRkZGXCIpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdjZW50ZXInKTtcclxuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtLnQpLCBpdGVtLngsIGl0ZW0ueSArIGZvbnRTaXplLzIpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TGluZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgbGluZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ3N0cmFpZ2h0JyxcclxuICAgIHdpZHRoOiAyXHJcbiAgfSwgb3B0cy5leHRyYS5saW5lKTtcclxuICBsaW5lT3B0aW9uLndpZHRoICo9IG9wdHMucGl4O1xyXG4gIGxldCB4QXhpc0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEsXHJcbiAgICB4QXhpc1BvaW50cyA9IHhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nID0geEF4aXNEYXRhLmVhY2hTcGFjaW5nO1xyXG4gIHZhciBjYWxQb2ludHMgPSBbXTtcclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBsZXQgbGVmdFNwYWNlID0gMDtcclxuICBsZXQgcmlnaHRTcGFjZSA9IG9wdHMud2lkdGggKyBlYWNoU3BhY2luZztcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnRTcGFjZSA9IC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLSBlYWNoU3BhY2luZyAqIDIgKyBvcHRzLmFyZWFbM107XHJcbiAgICByaWdodFNwYWNlID0gbGVmdFNwYWNlICsgKG9wdHMueEF4aXMuaXRlbUNvdW50ICsgNCkgKiBlYWNoU3BhY2luZztcclxuICB9XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgdmFyIHBvaW50cyA9IGdldERhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICBjYWxQb2ludHMucHVzaChwb2ludHMpO1xyXG4gICAgdmFyIHNwbGl0UG9pbnRMaXN0ID0gc3BsaXRQb2ludHMocG9pbnRzLGVhY2hTZXJpZXMpO1xyXG4gICAgaWYgKGVhY2hTZXJpZXMubGluZVR5cGUgPT0gJ2Rhc2gnKSB7XHJcbiAgICAgIGxldCBkYXNoTGVuZ3RoID0gZWFjaFNlcmllcy5kYXNoTGVuZ3RoID8gZWFjaFNlcmllcy5kYXNoTGVuZ3RoIDogODtcclxuICAgICAgZGFzaExlbmd0aCAqPSBvcHRzLnBpeDtcclxuICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbZGFzaExlbmd0aCwgZGFzaExlbmd0aF0pO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChsaW5lT3B0aW9uLndpZHRoKTtcclxuICAgIHNwbGl0UG9pbnRMaXN0LmZvckVhY2goZnVuY3Rpb24ocG9pbnRzLCBpbmRleCkge1xyXG4gICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMocG9pbnRzWzBdLngsIHBvaW50c1swXS55LCAxLCAwLCAyICogTWF0aC5QSSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICBsZXQgc3RhcnRQb2ludCA9IDA7XHJcbiAgICAgICAgaWYgKGxpbmVPcHRpb24udHlwZSA9PT0gJ2N1cnZlJykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIHZhciBjdHJsUG9pbnQgPSBjcmVhdGVDdXJ2ZUNvbnRyb2xQb2ludHMocG9pbnRzLCBqIC0gMSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGN0cmxQb2ludC5jdHJBLngsIGN0cmxQb2ludC5jdHJBLnksIGN0cmxQb2ludC5jdHJCLngsIGN0cmxQb2ludC5jdHJCLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxpbmVPcHRpb24udHlwZSA9PT0gJ3N0cmFpZ2h0Jykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxpbmVPcHRpb24udHlwZSA9PT0gJ3N0ZXAnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBwb2ludHNbaiAtIDFdLnkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XHJcbiAgICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZSAhPT0gZmFsc2UpIHtcclxuICAgICAgZHJhd1BvaW50U2hhcGUocG9pbnRzLCBlYWNoU2VyaWVzLmNvbG9yLCBlYWNoU2VyaWVzLnBvaW50U2hhcGUsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgICAgdmFyIHBvaW50cyA9IGdldERhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICAgIGRyYXdQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIHJldHVybiB7XHJcbiAgICB4QXhpc1BvaW50czogeEF4aXNQb2ludHMsXHJcbiAgICBjYWxQb2ludHM6IGNhbFBvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZ1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdNaXhEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNvbHVtbk9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgd2lkdGg6IGVhY2hTcGFjaW5nIC8gMixcclxuICAgIGJhckJvcmRlckNpcmNsZTogZmFsc2UsXHJcbiAgICBiYXJCb3JkZXJSYWRpdXM6IFtdLFxyXG4gICAgc2VyaWVzR2FwOiAyLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgbGluZWFyT3BhY2l0eTogMSxcclxuICAgIGN1c3RvbUNvbG9yOiBbXSxcclxuICAgIGNvbG9yU3RvcDogMCxcclxuICB9LCBvcHRzLmV4dHJhLm1peC5jb2x1bW4pO1xyXG4gIGxldCBhcmVhT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBvcGFjaXR5OiAwLjIsXHJcbiAgICBncmFkaWVudDogZmFsc2VcclxuICB9LCBvcHRzLmV4dHJhLm1peC5hcmVhKTtcclxuICBsZXQgbGluZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgd2lkdGg6IDJcclxuICB9LCBvcHRzLmV4dHJhLm1peC5saW5lKTtcclxuICBsZXQgZW5kWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG4gIGxldCBjYWxQb2ludHMgPSBbXTtcclxuICB2YXIgY29sdW1uSW5kZXggPSAwO1xyXG4gIHZhciBjb2x1bW5MZW5ndGggPSAwO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdjb2x1bW4nKSB7XHJcbiAgICAgIGNvbHVtbkxlbmd0aCArPSAxO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geEF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBsZXQgbGVmdFNwYWNlID0gMDtcclxuICBsZXQgcmlnaHRTcGFjZSA9IG9wdHMud2lkdGggKyBlYWNoU3BhY2luZztcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnROdW0gPSBNYXRoLmZsb29yKC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLyBlYWNoU3BhY2luZykgLSAyO1xyXG4gICAgcmlnaHROdW0gPSBsZWZ0TnVtICsgb3B0cy54QXhpcy5pdGVtQ291bnQgKyA0O1xyXG4gICAgbGVmdFNwYWNlID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAtIGVhY2hTcGFjaW5nICogMiArIG9wdHMuYXJlYVszXTtcclxuICAgIHJpZ2h0U3BhY2UgPSBsZWZ0U3BhY2UgKyAob3B0cy54QXhpcy5pdGVtQ291bnQgKyA0KSAqIGVhY2hTcGFjaW5nO1xyXG4gIH1cclxuICBjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUsIGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY2FsUG9pbnRzLnB1c2gocG9pbnRzKTtcclxuICAgIC8vIOe7mOWItuafseeKtuaVsOaNruWbvlxyXG4gICAgaWYgKGVhY2hTZXJpZXMudHlwZSA9PSAnY29sdW1uJykge1xyXG4gICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbmd0aCwgY29sdW1uSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICB2YXIgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBpdGVtLnkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgdmFyIHN0cm9rZUNvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIC8v6YCP5piO5riQ5Y+YXHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGZpbGxDb2xvciwgY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoY29sdW1uT3B0aW9uLmNvbG9yU3RvcCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyDlnIbop5LovrnmoYZcclxuICAgICAgICAgIGlmICgoY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyAmJiBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzLmxlbmd0aCA9PT0gNCkgfHwgY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gc3RhcnRYO1xyXG4gICAgICAgICAgICBjb25zdCB0b3AgPSBpdGVtLnk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gaXRlbS53aWR0aDtcclxuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBpdGVtLnk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyA9IFt3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMCwgMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IFtyMCwgcjEsIHIyLCByM10gPSBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzO1xyXG4gICAgICAgICAgICBsZXQgbWluUmFkaXVzID0gTWF0aC5taW4od2lkdGgvMixoZWlnaHQvMik7XHJcbiAgICAgICAgICAgIHIwID0gcjAgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMDtcclxuICAgICAgICAgICAgcjEgPSByMSA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIxO1xyXG4gICAgICAgICAgICByMiA9IHIyID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjI7XHJcbiAgICAgICAgICAgIHIzID0gcjMgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMztcclxuICAgICAgICAgICAgcjAgPSByMCA8IDAgPyAwIDogcjA7XHJcbiAgICAgICAgICAgIHIxID0gcjEgPCAwID8gMCA6IHIxO1xyXG4gICAgICAgICAgICByMiA9IHIyIDwgMCA/IDAgOiByMjtcclxuICAgICAgICAgICAgcjMgPSByMyA8IDAgPyAwIDogcjM7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMCwgdG9wICsgcjAsIHIwLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjEsIHRvcCArIHIxLCByMSwgLU1hdGguUEkgLyAyLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjIsIHRvcCArIGhlaWdodCAtIHIyLCByMiwgMCwgTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjMsIHRvcCArIGhlaWdodCAtIHIzLCByMywgTWF0aC5QSSAvIDIsIE1hdGguUEkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEpXHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29sdW1uSW5kZXggKz0gMTtcclxuICAgIH1cclxuICAgIC8v57uY5Yi25Yy65Z+f5Zu+5pWw5o2uXHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdhcmVhJykge1xyXG4gICAgICBsZXQgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9pbnRzID0gc3BsaXRQb2ludExpc3RbaV07XHJcbiAgICAgICAgLy8g57uY5Yi25Yy65Z+f5pWw5o2uXHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYXJlYU9wdGlvbi5vcGFjaXR5KSk7XHJcbiAgICAgICAgaWYgKGFyZWFPcHRpb24uZ3JhZGllbnQpIHtcclxuICAgICAgICAgIGxldCBncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgb3B0cy5hcmVhWzBdLCAwLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoJzAnLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgnMS4wJywgaGV4VG9SZ2IoXCIjRkZGRkZGXCIsIDAuMSkpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZ3JhZGllbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMiAqIG9wdHMucGl4KTtcclxuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHZhciBmaXJzdFBvaW50ID0gcG9pbnRzWzBdO1xyXG4gICAgICAgICAgbGV0IGxhc3RQb2ludCA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueSk7XHJcbiAgICAgICAgICBsZXQgc3RhcnRQb2ludCA9IDA7XHJcbiAgICAgICAgICBpZiAoZWFjaFNlcmllcy5zdHlsZSA9PT0gJ2N1cnZlJykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY3RybFBvaW50ID0gY3JlYXRlQ3VydmVDb250cm9sUG9pbnRzKHBvaW50cywgaiAtIDEpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGN0cmxQb2ludC5jdHJBLngsIGN0cmxQb2ludC5jdHJBLnksIGN0cmxQb2ludC5jdHJCLngsIGN0cmxQb2ludC5jdHJCLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8obGFzdFBvaW50LngsIGVuZFkpO1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oZmlyc3RQb2ludC54LCBlbmRZKTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGZpcnN0UG9pbnQueCwgZmlyc3RQb2ludC55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbMF07XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLnggLSBlYWNoU3BhY2luZyAvIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGVuZFkpO1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54IC0gZWFjaFNwYWNpbmcgLyAyLCBlbmRZKTtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgaXRlbS55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8g57uY5Yi25oqY57q/5pWw5o2u5Zu+XHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdsaW5lJykge1xyXG4gICAgICB2YXIgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICAgIHNwbGl0UG9pbnRMaXN0LmZvckVhY2goZnVuY3Rpb24ocG9pbnRzLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChlYWNoU2VyaWVzLmxpbmVUeXBlID09ICdkYXNoJykge1xyXG4gICAgICAgICAgbGV0IGRhc2hMZW5ndGggPSBlYWNoU2VyaWVzLmRhc2hMZW5ndGggPyBlYWNoU2VyaWVzLmRhc2hMZW5ndGggOiA4O1xyXG4gICAgICAgICAgZGFzaExlbmd0aCAqPSBvcHRzLnBpeDtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW2Rhc2hMZW5ndGgsIGRhc2hMZW5ndGhdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGxpbmVPcHRpb24ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmFyYyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnksIDEsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICAgIGlmIChlYWNoU2VyaWVzLnN0eWxlID09ICdjdXJ2ZScpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhjdHJsUG9pbnQuY3RyQS54LCBjdHJsUG9pbnQuY3RyQS55LCBjdHJsUG9pbnQuY3RyQi54LCBjdHJsUG9pbnQuY3RyQi55LFxyXG4gICAgICAgICAgICAgICAgICBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIOe7mOWItueCueaVsOaNruWbvlxyXG4gICAgaWYgKGVhY2hTZXJpZXMudHlwZSA9PSAncG9pbnQnKSB7XHJcbiAgICAgIGVhY2hTZXJpZXMuYWRkUG9pbnQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGVhY2hTZXJpZXMuYWRkUG9pbnQgPT0gdHJ1ZSAmJiBlYWNoU2VyaWVzLnR5cGUgIT09ICdjb2x1bW4nKSB7XHJcbiAgICAgIGRyYXdQb2ludFNoYXBlKHBvaW50cywgZWFjaFNlcmllcy5jb2xvciwgZWFjaFNlcmllcy5wb2ludFNoYXBlLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH1cclxuICB9KTtcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHZhciBjb2x1bW5JbmRleCA9IDA7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgaWYgKGVhY2hTZXJpZXMudHlwZSAhPT0gJ2NvbHVtbicpIHtcclxuICAgICAgICBkcmF3UG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbmd0aCwgY29sdW1uSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgY29sdW1uSW5kZXggKz0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIHJldHVybiB7XHJcbiAgICB4QXhpc1BvaW50czogeEF4aXNQb2ludHMsXHJcbiAgICBjYWxQb2ludHM6IGNhbFBvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZyxcclxuICB9XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gb3B0cy5leHRyYS50b29sdGlwIHx8IHt9O1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLmhvcml6ZW50YWxMaW5lICYmIG9wdHMudG9vbHRpcCAmJiBwcm9jZXNzID09PSAxICYmIChvcHRzLnR5cGUgPT0gJ2xpbmUnIHx8IG9wdHMudHlwZSA9PSAnYXJlYScgfHwgb3B0cy50eXBlID09ICdjb2x1bW4nIHx8IG9wdHMudHlwZSA9PSAnbW91bnQnIHx8IG9wdHMudHlwZSA9PSAnY2FuZGxlJyB8fCBvcHRzLnR5cGUgPT0gJ21peCcpKSB7XHJcbiAgICBkcmF3VG9vbFRpcEhvcml6ZW50YWxMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKVxyXG4gIH1cclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICB9XHJcbiAgaWYgKG9wdHMudG9vbHRpcCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QgJiYgb3B0cy50b29sdGlwLnRleHRMaXN0Lmxlbmd0aCAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3VG9vbFRpcChvcHRzLnRvb2x0aXAudGV4dExpc3QsIG9wdHMudG9vbHRpcC5vZmZzZXQsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcblxyXG4gIGxldCB4QXhpc0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEsXHJcbiAgICB4QXhpc1BvaW50cyA9IHhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIHN0YXJ0WCA9IHhBeGlzRGF0YS5zdGFydFgsXHJcbiAgICBlbmRYID0geEF4aXNEYXRhLmVuZFgsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgYm91bmRhcnlHYXAgPSAnY2VudGVyJztcclxuICBpZiAob3B0cy50eXBlID09ICdiYXInIHx8IG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJ3x8IG9wdHMudHlwZSA9PSAnc2NhdHRlcicgfHwgb3B0cy50eXBlID09ICdidWJibGUnKSB7XHJcbiAgICBib3VuZGFyeUdhcCA9IG9wdHMueEF4aXMuYm91bmRhcnlHYXA7XHJcbiAgfVxyXG4gIHZhciBzdGFydFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICB2YXIgZW5kWSA9IG9wdHMuYXJlYVswXTtcclxuXHJcbiAgLy/nu5jliLbmu5rliqjmnaFcclxuICBpZiAob3B0cy5lbmFibGVTY3JvbGwgJiYgb3B0cy54QXhpcy5zY3JvbGxTaG93KSB7XHJcbiAgICB2YXIgc2Nyb2xsWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdICsgY29uZmlnLnhBeGlzSGVpZ2h0O1xyXG4gICAgdmFyIHNjcm9sbFNjcmVlbldpZHRoID0gZW5kWCAtIHN0YXJ0WDtcclxuICAgIHZhciBzY3JvbGxUb3RhbFdpZHRoID0gZWFjaFNwYWNpbmcgKiAoeEF4aXNQb2ludHMubGVuZ3RoIC0gMSk7XHJcbiAgICBpZihvcHRzLnR5cGUgPT0gJ21vdW50JyAmJiBvcHRzLmV4dHJhICYmIG9wdHMuZXh0cmEubW91bnQgJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvICYmIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA+IDEpe1xyXG4gICAgICBpZihvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8+Mikgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID0gMlxyXG4gICAgICBzY3JvbGxUb3RhbFdpZHRoICs9IChvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gLSAxKSplYWNoU3BhY2luZztcclxuICAgIH1cclxuICAgIHZhciBzY3JvbGxXaWR0aCA9IHNjcm9sbFNjcmVlbldpZHRoICogc2Nyb2xsU2NyZWVuV2lkdGggLyBzY3JvbGxUb3RhbFdpZHRoO1xyXG4gICAgdmFyIHNjcm9sbExlZnQgPSAwO1xyXG4gICAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXykge1xyXG4gICAgICBzY3JvbGxMZWZ0ID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAqIChzY3JvbGxTY3JlZW5XaWR0aCkgLyBzY3JvbGxUb3RhbFdpZHRoO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgncm91bmQnKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDYgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuc2Nyb2xsQmFja2dyb3VuZENvbG9yIHx8IFwiI0VGRUJFRlwiKTtcclxuICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc2Nyb2xsWSk7XHJcbiAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCBzY3JvbGxZKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgncm91bmQnKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDYgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuc2Nyb2xsQ29sb3IgfHwgXCIjQTZBNkE2XCIpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgc2Nyb2xsTGVmdCwgc2Nyb2xsWSk7XHJcbiAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBzY3JvbGxMZWZ0ICsgc2Nyb2xsV2lkdGgsIHNjcm9sbFkpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ2J1dHQnKTtcclxuICB9XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDApIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgfVxyXG4gIC8v57uY5Yi2WOi9tOWIu+W6pue6v1xyXG4gIGlmIChvcHRzLnhBeGlzLmNhbGlicmF0aW9uID09PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuZ3JpZENvbG9yIHx8IFwiI2NjY2NjY1wiKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgnYnV0dCcpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIHhBeGlzUG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbSAtIGVhY2hTcGFjaW5nIC8gMiwgc3RhcnRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtIC0gZWFjaFNwYWNpbmcgLyAyLCBzdGFydFkgKyAzICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v57uY5Yi2WOi9tOe9keagvFxyXG4gIGlmIChvcHRzLnhBeGlzLmRpc2FibGVHcmlkICE9PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuZ3JpZENvbG9yIHx8IFwiI2NjY2NjY1wiKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgnYnV0dCcpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIGlmIChvcHRzLnhBeGlzLmdyaWRUeXBlID09ICdkYXNoJykge1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtvcHRzLnhBeGlzLmRhc2hMZW5ndGggKiBvcHRzLnBpeCwgb3B0cy54QXhpcy5kYXNoTGVuZ3RoICogb3B0cy5waXhdKTtcclxuICAgIH1cclxuICAgIG9wdHMueEF4aXMuZ3JpZEV2YWwgPSBvcHRzLnhBeGlzLmdyaWRFdmFsIHx8IDE7XHJcbiAgICB4QXhpc1BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpbmRleCAlIG9wdHMueEF4aXMuZ3JpZEV2YWwgPT0gMCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbSwgc3RhcnRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLCBlbmRZKTtcclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIH1cclxuICAvL+e7mOWItljovbTmlofmoYhcclxuICBpZiAob3B0cy54QXhpcy5kaXNhYmxlZCAhPT0gdHJ1ZSkge1xyXG4gICAgLy8g5a+5WOi9tOWIl+ihqOWBmuaKveeogOWkhOeQhlxyXG4gICAgLy/pu5jorqTlhajpg6jmmL7npLpY6L205qCH562+XHJcbiAgICBsZXQgbWF4WEF4aXNMaXN0TGVuZ3RoID0gY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgICAvL+WmguaenOiuvue9ruS6hljovbTljZXlsY/mlbDph49cclxuICAgIGlmIChvcHRzLnhBeGlzLmxhYmVsQ291bnQpIHtcclxuICAgICAgLy/lpoLmnpzorr7nva5Y6L205a+G5bqmXHJcbiAgICAgIGlmIChvcHRzLnhBeGlzLml0ZW1Db3VudCkge1xyXG4gICAgICAgIG1heFhBeGlzTGlzdExlbmd0aCA9IE1hdGguY2VpbChjYXRlZ29yaWVzLmxlbmd0aCAvIG9wdHMueEF4aXMuaXRlbUNvdW50ICogb3B0cy54QXhpcy5sYWJlbENvdW50KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtYXhYQXhpc0xpc3RMZW5ndGggPSBvcHRzLnhBeGlzLmxhYmVsQ291bnQ7XHJcbiAgICAgIH1cclxuICAgICAgbWF4WEF4aXNMaXN0TGVuZ3RoIC09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHJhdGlvID0gTWF0aC5jZWlsKGNhdGVnb3JpZXMubGVuZ3RoIC8gbWF4WEF4aXNMaXN0TGVuZ3RoKTtcclxuXHJcbiAgICBsZXQgbmV3Q2F0ZWdvcmllcyA9IFtdO1xyXG4gICAgbGV0IGNnTGVuZ3RoID0gY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNnTGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGkgJSByYXRpbyAhPT0gMCkge1xyXG4gICAgICAgIG5ld0NhdGVnb3JpZXMucHVzaChcIlwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcmllc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG5ld0NhdGVnb3JpZXNbY2dMZW5ndGggLSAxXSA9IGNhdGVnb3JpZXNbY2dMZW5ndGggLSAxXTtcclxuICAgIHZhciB4QXhpc0ZvbnRTaXplID0gb3B0cy54QXhpcy5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgIGlmIChjb25maWcuX3hBeGlzVGV4dEFuZ2xlXyA9PT0gMCkge1xyXG4gICAgICBuZXdDYXRlZ29yaWVzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgeGl0ZW0gPSBvcHRzLnhBeGlzLmZvcm1hdHRlciA/IG9wdHMueEF4aXMuZm9ybWF0dGVyKGl0ZW0saW5kZXgsb3B0cykgOiBpdGVtO1xyXG4gICAgICAgIHZhciBvZmZzZXQgPSAtbWVhc3VyZVRleHQoU3RyaW5nKHhpdGVtKSwgeEF4aXNGb250U2l6ZSwgY29udGV4dCkgLyAyO1xyXG4gICAgICAgIGlmIChib3VuZGFyeUdhcCA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgb2Zmc2V0ICs9IGVhY2hTcGFjaW5nIC8gMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IDA7XHJcbiAgICAgICAgaWYgKG9wdHMueEF4aXMuc2Nyb2xsU2hvdykge1xyXG4gICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gNiAqIG9wdHMucGl4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzlnKjkuLvop4blm77ljLrln5/lhoVcclxuICAgICAgICB2YXIgX3Njcm9sbERpc3RhbmNlXyA9IG9wdHMuX3Njcm9sbERpc3RhbmNlXyB8fCAwO1xyXG4gICAgICAgIHZhciB0cnVlUG9pbnRzID0gYm91bmRhcnlHYXAgPT0gJ2NlbnRlcicgPyB4QXhpc1BvaW50c1tpbmRleF0gKyBlYWNoU3BhY2luZyAvIDIgOiB4QXhpc1BvaW50c1tpbmRleF07XHJcbiAgICAgICAgaWYoKHRydWVQb2ludHMgLSBNYXRoLmFicyhfc2Nyb2xsRGlzdGFuY2VfKSkgPj0gb3B0cy5hcmVhWzNdICYmICh0cnVlUG9pbnRzIC0gTWF0aC5hYnMoX3Njcm9sbERpc3RhbmNlXykpIDw9IChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdKSl7XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZSh4QXhpc0ZvbnRTaXplKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMueEF4aXMuZm9udENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKHhpdGVtKSwgeEF4aXNQb2ludHNbaW5kZXhdICsgb2Zmc2V0LCBzdGFydFkgKyB4QXhpc0ZvbnRTaXplICsgKGNvbmZpZy54QXhpc0hlaWdodCAtIHNjcm9sbEhlaWdodCAtIHhBeGlzRm9udFNpemUpIC8gMik7XHJcbiAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3Q2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIHhpdGVtID0gb3B0cy54QXhpcy5mb3JtYXR0ZXIgPyBvcHRzLnhBeGlzLmZvcm1hdHRlcihpdGVtKSA6IGl0ZW07XHJcbiAgICAgICAgLy8g5aaC5p6c5Zyo5Li76KeG5Zu+5Yy65Z+f5YaFXHJcbiAgICAgICAgdmFyIF9zY3JvbGxEaXN0YW5jZV8gPSBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gfHwgMDtcclxuICAgICAgICB2YXIgdHJ1ZVBvaW50cyA9IGJvdW5kYXJ5R2FwID09ICdjZW50ZXInID8geEF4aXNQb2ludHNbaW5kZXhdICsgZWFjaFNwYWNpbmcgLyAyIDogeEF4aXNQb2ludHNbaW5kZXhdO1xyXG4gICAgICAgIGlmKCh0cnVlUG9pbnRzIC0gTWF0aC5hYnMoX3Njcm9sbERpc3RhbmNlXykpID49IG9wdHMuYXJlYVszXSAmJiAodHJ1ZVBvaW50cyAtIE1hdGguYWJzKF9zY3JvbGxEaXN0YW5jZV8pKSA8PSAob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSkpe1xyXG4gICAgICAgICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZSh4QXhpc0ZvbnRTaXplKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMueEF4aXMuZm9udENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgICAgIHZhciB0ZXh0V2lkdGggPSBtZWFzdXJlVGV4dChTdHJpbmcoeGl0ZW0pLCB4QXhpc0ZvbnRTaXplLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBvZmZzZXRYID0geEF4aXNQb2ludHNbaW5kZXhdO1xyXG4gICAgICAgICAgaWYgKGJvdW5kYXJ5R2FwID09ICdjZW50ZXInKSB7XHJcbiAgICAgICAgICAgIG9mZnNldFggPSB4QXhpc1BvaW50c1tpbmRleF0gKyBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YXIgc2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgICAgIGlmIChvcHRzLnhBeGlzLnNjcm9sbFNob3cpIHtcclxuICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gNiAqIG9wdHMucGl4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdmFyIG9mZnNldFkgPSBzdGFydFkgKyA2ICogb3B0cy5waXggKyB4QXhpc0ZvbnRTaXplIC0geEF4aXNGb250U2l6ZSAqIE1hdGguYWJzKE1hdGguc2luKGNvbmZpZy5feEF4aXNUZXh0QW5nbGVfKSk7XHJcbiAgICAgICAgICBpZihvcHRzLnhBeGlzLnJvdGF0ZUFuZ2xlIDwgMCl7XHJcbiAgICAgICAgICAgIG9mZnNldFggLT0geEF4aXNGb250U2l6ZSAvIDI7XHJcbiAgICAgICAgICAgIHRleHRXaWR0aCA9IDA7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgb2Zmc2V0WCArPSB4QXhpc0ZvbnRTaXplIC8gMjtcclxuICAgICAgICAgICAgdGV4dFdpZHRoID0gLXRleHRXaWR0aDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKG9mZnNldFgsIG9mZnNldFkpO1xyXG4gICAgICAgICAgY29udGV4dC5yb3RhdGUoLTEgKiBjb25maWcuX3hBeGlzVGV4dEFuZ2xlXyk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyh4aXRlbSksIHRleHRXaWR0aCAsIDAgKTtcclxuICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgLy/nu5jliLZY6L206L2057q/XHJcbiAgaWYgKG9wdHMueEF4aXMuYXhpc0xpbmUpIHtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuYXhpc0xpbmVDb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBpZiAob3B0cy55QXhpcy5kaXNhYmxlR3JpZCA9PT0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBsZXQgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgbGV0IGVhY2hTcGFjaW5nID0gc3BhY2luZ1ZhbGlkIC8gb3B0cy55QXhpcy5zcGxpdE51bWJlcjtcclxuICBsZXQgc3RhcnRYID0gb3B0cy5hcmVhWzNdO1xyXG4gIGxldCB4QXhpc1BvaW50cyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIHhBeGlzZWFjaFNwYWNpbmcgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IFRvdGFsV2lkdGggPSB4QXhpc2VhY2hTcGFjaW5nICogKHhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gIGlmKG9wdHMudHlwZSA9PSAnbW91bnQnICYmIG9wdHMuZXh0cmEgJiYgb3B0cy5leHRyYS5tb3VudCAmJiBvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID4gMSApe1xyXG4gICAgaWYob3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvPjIpIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA9IDJcclxuICAgIFRvdGFsV2lkdGggKz0gKG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyAtIDEpKnhBeGlzZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIGxldCBlbmRYID0gc3RhcnRYICsgVG90YWxXaWR0aDtcclxuICBsZXQgcG9pbnRzID0gW107XHJcbiAgbGV0IHN0YXJ0WSA9IDFcclxuICBpZiAob3B0cy54QXhpcy5heGlzTGluZSA9PT0gZmFsc2UpIHtcclxuICAgIHN0YXJ0WSA9IDBcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IHN0YXJ0WTsgaSA8IG9wdHMueUF4aXMuc3BsaXROdW1iZXIgKyAxOyBpKyspIHtcclxuICAgIHBvaW50cy5wdXNoKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gZWFjaFNwYWNpbmcgKiBpKTtcclxuICB9XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDApIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnlBeGlzLmdyaWRUeXBlID09ICdkYXNoJykge1xyXG4gICAgY29udGV4dC5zZXRMaW5lRGFzaChbb3B0cy55QXhpcy5kYXNoTGVuZ3RoICogb3B0cy5waXgsIG9wdHMueUF4aXMuZGFzaExlbmd0aCAqIG9wdHMucGl4XSk7XHJcbiAgfVxyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUob3B0cy55QXhpcy5ncmlkQ29sb3IpO1xyXG4gIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0pO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgaXRlbSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH0pO1xyXG4gIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3WUF4aXMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBpZiAob3B0cy55QXhpcy5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICB2YXIgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgdmFyIGVhY2hTcGFjaW5nID0gc3BhY2luZ1ZhbGlkIC8gb3B0cy55QXhpcy5zcGxpdE51bWJlcjtcclxuICB2YXIgc3RhcnRYID0gb3B0cy5hcmVhWzNdO1xyXG4gIHZhciBlbmRYID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICB2YXIgZW5kWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG4gIC8vIHNldCBZQXhpcyBiYWNrZ3JvdW5kXHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLmJhY2tncm91bmQpO1xyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCA9PSB0cnVlICYmIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gJiYgb3B0cy54QXhpcy5zY3JvbGxQb3NpdGlvbiAhPT0gJ2xlZnQnKSB7XHJcbiAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHN0YXJ0WCwgZW5kWSArIDIgKiBvcHRzLnBpeCk7XHJcbiAgfVxyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCA9PSB0cnVlICYmIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gJiYgb3B0cy54QXhpcy5zY3JvbGxQb3NpdGlvbiAhPT0gJ3JpZ2h0Jykge1xyXG4gICAgY29udGV4dC5maWxsUmVjdChlbmRYLCAwLCBvcHRzLndpZHRoLCBlbmRZICsgMiAqIG9wdHMucGl4KTtcclxuICB9XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIFxyXG4gIGxldCB0U3RhcnRMZWZ0ID0gb3B0cy5hcmVhWzNdO1xyXG4gIGxldCB0U3RhcnRSaWdodCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgbGV0IHRTdGFydENlbnRlciA9IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDI7XHJcbiAgaWYgKG9wdHMueUF4aXMuZGF0YSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRzLnlBeGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHlEYXRhID0gb3B0cy55QXhpcy5kYXRhW2ldO1xyXG4gICAgICB2YXIgcG9pbnRzID0gW107XHJcbiAgICAgIGlmKHlEYXRhLnR5cGUgPT09ICdjYXRlZ29yaWVzJyl7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0geURhdGEuY2F0ZWdvcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgcG9pbnRzLnB1c2gob3B0cy5hcmVhWzBdICsgc3BhY2luZ1ZhbGlkIC8geURhdGEuY2F0ZWdvcmllcy5sZW5ndGggLyAyICsgc3BhY2luZ1ZhbGlkIC8geURhdGEuY2F0ZWdvcmllcy5sZW5ndGggKiBpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG9wdHMueUF4aXMuc3BsaXROdW1iZXI7IGkrKykge1xyXG4gICAgICAgICAgcG9pbnRzLnB1c2gob3B0cy5hcmVhWzBdICsgZWFjaFNwYWNpbmcgKiBpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHlEYXRhLmRpc2FibGVkICE9PSB0cnVlKSB7XHJcbiAgICAgICAgbGV0IHJhbmdlc0Zvcm1hdCA9IG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNGb3JtYXRbaV07XHJcbiAgICAgICAgbGV0IHlBeGlzRm9udFNpemUgPSB5RGF0YS5mb250U2l6ZSA/IHlEYXRhLmZvbnRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgICAgbGV0IHlBeGlzV2lkdGggPSBvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEueUF4aXNXaWR0aFtpXTtcclxuICAgICAgICBsZXQgdGV4dEFsaWduID0geURhdGEudGV4dEFsaWduIHx8IFwicmlnaHRcIjtcclxuICAgICAgICAvL+eUu1novbTliLvluqblj4rmlofmoYhcclxuICAgICAgICByYW5nZXNGb3JtYXQuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgdmFyIHBvcyA9IHBvaW50c1tpbmRleF07XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZSh5QXhpc0ZvbnRTaXplKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHlEYXRhLmF4aXNMaW5lQ29sb3IgfHwgJyNjY2NjY2MnKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHlEYXRhLmZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgICAgICBsZXQgdG1wc3RyYXQgPSAwO1xyXG4gICAgICAgICAgbGV0IGdhcHdpZHRoID0gNCAqIG9wdHMucGl4O1xyXG4gICAgICAgICAgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgICAgIC8v55S75Yi75bqm57q/XHJcbiAgICAgICAgICAgIGlmICh5RGF0YS5jYWxpYnJhdGlvbiA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0TGVmdCwgcG9zKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRMZWZ0IC0gMyAqIG9wdHMucGl4LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGdhcHdpZHRoICs9IDMgKiBvcHRzLnBpeDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+eUu+aWh+Wtl1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRleHRBbGlnbikge1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRMZWZ0IC0geUF4aXNXaWR0aC53aWR0aFxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSBcInJpZ2h0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbigncmlnaHQnKTtcclxuICAgICAgICAgICAgICAgIHRtcHN0cmF0ID0gdFN0YXJ0TGVmdCAtIGdhcHdpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRMZWZ0IC0geUF4aXNXaWR0aC53aWR0aCAvIDJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtKSwgdG1wc3RyYXQsIHBvcyArIHlBeGlzRm9udFNpemUgLyAyIC0gMyAqIG9wdHMucGl4KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgICAgICAvL+eUu+WIu+W6pue6v1xyXG4gICAgICAgICAgICBpZiAoeURhdGEuY2FsaWJyYXRpb24gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydFJpZ2h0LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHRTdGFydFJpZ2h0ICsgMyAqIG9wdHMucGl4LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGdhcHdpZHRoICs9IDMgKiBvcHRzLnBpeDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzd2l0Y2ggKHRleHRBbGlnbikge1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRSaWdodCArIGdhcHdpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdyaWdodCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRSaWdodCArIHlBeGlzV2lkdGgud2lkdGhcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignY2VudGVyJyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydFJpZ2h0ICsgeUF4aXNXaWR0aC53aWR0aCAvIDJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtKSwgdG1wc3RyYXQsIHBvcyArIHlBeGlzRm9udFNpemUgLyAyIC0gMyAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgICAvL+eUu+WIu+W6pue6v1xyXG4gICAgICAgICAgICBpZiAoeURhdGEuY2FsaWJyYXRpb24gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydENlbnRlciwgcG9zKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRDZW50ZXIgLSAzICogb3B0cy5waXgsIHBvcyk7XHJcbiAgICAgICAgICAgICAgZ2Fwd2lkdGggKz0gMyAqIG9wdHMucGl4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v55S75paH5a2XXHJcbiAgICAgICAgICAgIHN3aXRjaCAodGV4dEFsaWduKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydENlbnRlciAtIHlBeGlzV2lkdGgud2lkdGhcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ3JpZ2h0Jyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydENlbnRlciAtIGdhcHdpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRDZW50ZXIgLSB5QXhpc1dpZHRoLndpZHRoIC8gMlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKGl0ZW0pLCB0bXBzdHJhdCwgcG9zICsgeUF4aXNGb250U2l6ZSAvIDIgLSAzICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v55S7Wei9tOi9tOe6v1xyXG4gICAgICAgIGlmICh5RGF0YS5heGlzTGluZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHlEYXRhLmF4aXNMaW5lQ29sb3IgfHwgJyNjY2NjY2MnKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0TGVmdCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRMZWZ0LCBvcHRzLmFyZWFbMF0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0UmlnaHQsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8odFN0YXJ0UmlnaHQsIG9wdHMuYXJlYVswXSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0Q2VudGVyLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHRTdGFydENlbnRlciwgb3B0cy5hcmVhWzBdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8v55S7Wei9tOagh+mimFxyXG4gICAgICAgIGlmIChvcHRzLnlBeGlzLnNob3dUaXRsZSkge1xyXG4gICAgICAgICAgbGV0IHRpdGxlRm9udFNpemUgPSB5RGF0YS50aXRsZUZvbnRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplO1xyXG4gICAgICAgICAgbGV0IHRpdGxlID0geURhdGEudGl0bGU7XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZSh0aXRsZUZvbnRTaXplKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHlEYXRhLnRpdGxlRm9udENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgICAgIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdsZWZ0Jykge1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRpdGxlLCB0U3RhcnRMZWZ0IC0gbWVhc3VyZVRleHQodGl0bGUsIHRpdGxlRm9udFNpemUsIGNvbnRleHQpIC8gMiArICh5RGF0YS50aXRsZU9mZnNldFggfHwgMCksIG9wdHMuYXJlYVswXSAtICgxMCAtICh5RGF0YS50aXRsZU9mZnNldFkgfHwgMCkpICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgdFN0YXJ0UmlnaHQgLSBtZWFzdXJlVGV4dCh0aXRsZSwgdGl0bGVGb250U2l6ZSwgY29udGV4dCkgLyAyICsgKHlEYXRhLnRpdGxlT2Zmc2V0WCB8fCAwKSwgb3B0cy5hcmVhWzBdIC0gKDEwIC0gKHlEYXRhLnRpdGxlT2Zmc2V0WSB8fCAwKSkgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgdFN0YXJ0Q2VudGVyIC0gbWVhc3VyZVRleHQodGl0bGUsIHRpdGxlRm9udFNpemUsIGNvbnRleHQpIC8gMiArICh5RGF0YS50aXRsZU9mZnNldFggfHwgMCksIG9wdHMuYXJlYVswXSAtICgxMCAtICh5RGF0YS50aXRsZU9mZnNldFkgfHwgMCkpICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdsZWZ0Jykge1xyXG4gICAgICAgICAgdFN0YXJ0TGVmdCAtPSAoeUF4aXNXaWR0aC53aWR0aCArIG9wdHMueUF4aXMucGFkZGluZyAqIG9wdHMucGl4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdFN0YXJ0UmlnaHQgKz0geUF4aXNXaWR0aC53aWR0aCArIG9wdHMueUF4aXMucGFkZGluZyAqIG9wdHMucGl4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdMZWdlbmQoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGNoYXJ0RGF0YSkge1xyXG4gIGlmIChvcHRzLmxlZ2VuZC5zaG93ID09PSBmYWxzZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBsZXQgbGVnZW5kRGF0YSA9IGNoYXJ0RGF0YS5sZWdlbmREYXRhO1xyXG4gIGxldCBsZWdlbmRMaXN0ID0gbGVnZW5kRGF0YS5wb2ludHM7XHJcbiAgbGV0IGxlZ2VuZEFyZWEgPSBsZWdlbmREYXRhLmFyZWE7XHJcbiAgbGV0IHBhZGRpbmcgPSBvcHRzLmxlZ2VuZC5wYWRkaW5nICogb3B0cy5waXg7XHJcbiAgbGV0IGZvbnRTaXplID0gb3B0cy5sZWdlbmQuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICBsZXQgc2hhcGVXaWR0aCA9IDE1ICogb3B0cy5waXg7XHJcbiAgbGV0IHNoYXBlUmlnaHQgPSA1ICogb3B0cy5waXg7XHJcbiAgbGV0IGl0ZW1HYXAgPSBvcHRzLmxlZ2VuZC5pdGVtR2FwICogb3B0cy5waXg7XHJcbiAgbGV0IGxpbmVIZWlnaHQgPSBNYXRoLm1heChvcHRzLmxlZ2VuZC5saW5lSGVpZ2h0ICogb3B0cy5waXgsIGZvbnRTaXplKTtcclxuICAvL+eUu+iDjOaZr+WPiui+ueahhlxyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5zZXRMaW5lV2lkdGgob3B0cy5sZWdlbmQuYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgY29udGV4dC5zZXRTdHJva2VTdHlsZShvcHRzLmxlZ2VuZC5ib3JkZXJDb2xvcik7XHJcbiAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy5sZWdlbmQuYmFja2dyb3VuZENvbG9yKTtcclxuICBjb250ZXh0Lm1vdmVUbyhsZWdlbmRBcmVhLnN0YXJ0LngsIGxlZ2VuZEFyZWEuc3RhcnQueSk7XHJcbiAgY29udGV4dC5yZWN0KGxlZ2VuZEFyZWEuc3RhcnQueCwgbGVnZW5kQXJlYS5zdGFydC55LCBsZWdlbmRBcmVhLndpZHRoLCBsZWdlbmRBcmVhLmhlaWdodCk7XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIGxlZ2VuZExpc3QuZm9yRWFjaChmdW5jdGlvbihpdGVtTGlzdCwgbGlzdEluZGV4KSB7XHJcbiAgICBsZXQgd2lkdGggPSAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDA7XHJcbiAgICB3aWR0aCA9IGxlZ2VuZERhdGEud2lkdGhBcnJbbGlzdEluZGV4XTtcclxuICAgIGhlaWdodCA9IGxlZ2VuZERhdGEuaGVpZ2h0QXJyW2xpc3RJbmRleF07XHJcbiAgICBsZXQgc3RhcnRYID0gMDtcclxuICAgIGxldCBzdGFydFkgPSAwO1xyXG4gICAgaWYgKG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICd0b3AnIHx8IG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICdib3R0b20nKSB7XHJcbiAgICAgIHN3aXRjaCAob3B0cy5sZWdlbmQuZmxvYXQpIHtcclxuICAgICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgICAgIHN0YXJ0WCA9IGxlZ2VuZEFyZWEuc3RhcnQueCArIHBhZGRpbmc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgICAgc3RhcnRYID0gbGVnZW5kQXJlYS5zdGFydC54ICsgbGVnZW5kQXJlYS53aWR0aCAtIHdpZHRoO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgc3RhcnRYID0gbGVnZW5kQXJlYS5zdGFydC54ICsgKGxlZ2VuZEFyZWEud2lkdGggLSB3aWR0aCkgLyAyO1xyXG4gICAgICB9XHJcbiAgICAgIHN0YXJ0WSA9IGxlZ2VuZEFyZWEuc3RhcnQueSArIHBhZGRpbmcgKyBsaXN0SW5kZXggKiBsaW5lSGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGxpc3RJbmRleCA9PSAwKSB7XHJcbiAgICAgICAgd2lkdGggPSAwO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHdpZHRoID0gbGVnZW5kRGF0YS53aWR0aEFycltsaXN0SW5kZXggLSAxXTtcclxuICAgICAgfVxyXG4gICAgICBzdGFydFggPSBsZWdlbmRBcmVhLnN0YXJ0LnggKyBwYWRkaW5nICsgd2lkdGg7XHJcbiAgICAgIHN0YXJ0WSA9IGxlZ2VuZEFyZWEuc3RhcnQueSArIHBhZGRpbmcgKyAobGVnZW5kQXJlYS5oZWlnaHQgLSBoZWlnaHQpIC8gMjtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBpdGVtTGlzdFtpXTtcclxuICAgICAgaXRlbS5hcmVhID0gWzAsIDAsIDAsIDBdO1xyXG4gICAgICBpdGVtLmFyZWFbMF0gPSBzdGFydFg7XHJcbiAgICAgIGl0ZW0uYXJlYVsxXSA9IHN0YXJ0WTtcclxuICAgICAgaXRlbS5hcmVhWzNdID0gc3RhcnRZICsgbGluZUhlaWdodDtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLnNob3cgPyBpdGVtLmNvbG9yIDogb3B0cy5sZWdlbmQuaGlkZGVuQ29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnNob3cgPyBpdGVtLmNvbG9yIDogb3B0cy5sZWdlbmQuaGlkZGVuQ29sb3IpO1xyXG4gICAgICBzd2l0Y2ggKGl0ZW0ubGVnZW5kU2hhcGUpIHtcclxuICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDIgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDIgKiBvcHRzLnBpeCwgMTUgKiBvcHRzLnBpeCwgNCAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3RyaWFuZ2xlJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDIuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0ICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDEyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCArIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdkaWFtb25kJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDIuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0ICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDEyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdjaXJjbGUnOlxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMoc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQsIDUgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncmVjdCc6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgsIDE1ICogb3B0cy5waXgsIDEwICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3F1YXJlJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCArIDUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdub25lJzpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgsIDE1ICogb3B0cy5waXgsIDEwICogb3B0cy5waXgpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBzdGFydFggKz0gc2hhcGVXaWR0aCArIHNoYXBlUmlnaHQ7XHJcbiAgICAgIGxldCBmb250VHJhbnMgPSAwLjUgKiBsaW5lSGVpZ2h0ICsgMC41ICogZm9udFNpemUgLSAyO1xyXG4gICAgICBjb25zdCBsZWdlbmRUZXh0ID0gaXRlbS5sZWdlbmRUZXh0ID8gaXRlbS5sZWdlbmRUZXh0IDogaXRlbS5uYW1lO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS5zaG93ID8gb3B0cy5sZWdlbmQuZm9udENvbG9yIDogb3B0cy5sZWdlbmQuaGlkZGVuQ29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KGxlZ2VuZFRleHQsIHN0YXJ0WCwgc3RhcnRZICsgZm9udFRyYW5zKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgaWYgKG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICd0b3AnIHx8IG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICdib3R0b20nKSB7XHJcbiAgICAgICAgc3RhcnRYICs9IG1lYXN1cmVUZXh0KGxlZ2VuZFRleHQsIGZvbnRTaXplLCBjb250ZXh0KSArIGl0ZW1HYXA7XHJcbiAgICAgICAgaXRlbS5hcmVhWzJdID0gc3RhcnRYO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0uYXJlYVsyXSA9IHN0YXJ0WCArIG1lYXN1cmVUZXh0KGxlZ2VuZFRleHQsIGZvbnRTaXplLCBjb250ZXh0KSArIGl0ZW1HYXA7O1xyXG4gICAgICAgIHN0YXJ0WCAtPSBzaGFwZVdpZHRoICsgc2hhcGVSaWdodDtcclxuICAgICAgICBzdGFydFkgKz0gbGluZUhlaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3UGllRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBwaWVPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGFjdGl2ZU9wYWNpdHk6IDAuNSxcclxuICAgIGFjdGl2ZVJhZGl1czogMTAsXHJcbiAgICBvZmZzZXRBbmdsZTogMCxcclxuICAgIGxhYmVsV2lkdGg6IDE1LFxyXG4gICAgcmluZ1dpZHRoOiAzMCxcclxuICAgIGN1c3RvbVJhZGl1czogMCxcclxuICAgIGJvcmRlcjogZmFsc2UsXHJcbiAgICBib3JkZXJXaWR0aDogMixcclxuICAgIGJvcmRlckNvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBjZW50ZXJDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMudHlwZSA9PSBcInBpZVwiID8gb3B0cy5leHRyYS5waWUgOiBvcHRzLmV4dHJhLnJpbmcpO1xyXG4gIHZhciBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgIHg6IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIsXHJcbiAgICB5OiBvcHRzLmFyZWFbMF0gKyAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMlxyXG4gIH07XHJcbiAgaWYgKGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID09IDApIHtcclxuICAgIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID0gcGllT3B0aW9uLmFjdGl2ZVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIH1cclxuXHJcbiAgdmFyIHJhZGl1cyA9IE1hdGgubWluKChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIgLSBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyAtIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nIC0gY29uZmlnLl9waWVUZXh0TWF4TGVuZ3RoXywgKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDIgLSBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyAtIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nKTtcclxuICByYWRpdXMgPSByYWRpdXMgPCAxMCA/IDEwIDogcmFkaXVzO1xyXG4gIGlmIChwaWVPcHRpb24uY3VzdG9tUmFkaXVzID4gMCkge1xyXG4gICAgcmFkaXVzID0gcGllT3B0aW9uLmN1c3RvbVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIH1cclxuICBzZXJpZXMgPSBnZXRQaWVEYXRhUG9pbnRzKHNlcmllcywgcmFkaXVzLCBwcm9jZXNzKTtcclxuICB2YXIgYWN0aXZlUmFkaXVzID0gcGllT3B0aW9uLmFjdGl2ZVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIHBpZU9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihwaWVPcHRpb24ubGluZWFyVHlwZSwgcGllT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgc2VyaWVzID0gc2VyaWVzLm1hcChmdW5jdGlvbihlYWNoU2VyaWVzKSB7XHJcbiAgICBlYWNoU2VyaWVzLl9zdGFydF8gKz0gKHBpZU9wdGlvbi5vZmZzZXRBbmdsZSkgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgcmV0dXJuIGVhY2hTZXJpZXM7XHJcbiAgfSk7XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBzZXJpZXNJbmRleCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgcGllT3B0aW9uLmFjdGl2ZU9wYWNpdHkgfHwgMC41KSk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgZWFjaFNlcmllcy5fcmFkaXVzXyArIGFjdGl2ZVJhZGl1cywgZWFjaFNlcmllcy5fc3RhcnRfLCBlYWNoU2VyaWVzLl9zdGFydF8gKyAyICogZWFjaFNlcmllcy5fcHJvcG9ydGlvbl8gKiBNYXRoLlBJKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgocGllT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5saW5lSm9pbiA9IFwicm91bmRcIjtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUocGllT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgIHZhciBmaWxsY29sb3IgPSBlYWNoU2VyaWVzLmNvbG9yO1xyXG4gICAgaWYgKHBpZU9wdGlvbi5saW5lYXJUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgIHZhciBncmQ7XHJcbiAgICAgIGlmKGNvbnRleHQuY3JlYXRlQ2lyY3VsYXJHcmFkaWVudCl7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGVhY2hTZXJpZXMuX3JhZGl1c18pXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGdyZCA9IGNvbnRleHQuY3JlYXRlUmFkaWFsR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgMCxjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfKVxyXG4gICAgICB9XHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IocGllT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCAxKSlcclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCAxKSlcclxuICAgICAgZmlsbGNvbG9yID0gZ3JkXHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsY29sb3IpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfLCBlYWNoU2VyaWVzLl9zdGFydF8sIGVhY2hTZXJpZXMuX3N0YXJ0XyArIDIgKiBlYWNoU2VyaWVzLl9wcm9wb3J0aW9uXyAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgaWYgKHBpZU9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGlmIChvcHRzLnR5cGUgPT09ICdyaW5nJykge1xyXG4gICAgdmFyIGlubmVyUGllV2lkdGggPSByYWRpdXMgKiAwLjY7XHJcbiAgICBpZiAodHlwZW9mIHBpZU9wdGlvbi5yaW5nV2lkdGggPT09ICdudW1iZXInICYmIHBpZU9wdGlvbi5yaW5nV2lkdGggPiAwKSB7XHJcbiAgICAgIGlubmVyUGllV2lkdGggPSBNYXRoLm1heCgwLCByYWRpdXMgLSBwaWVPcHRpb24ucmluZ1dpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHBpZU9wdGlvbi5jZW50ZXJDb2xvcik7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGlubmVyUGllV2lkdGgsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LmZpbGwoKTtcclxuICB9XHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3UGllVGV4dChzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcmFkaXVzLCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgfVxyXG4gIGlmIChwcm9jZXNzID09PSAxICYmIG9wdHMudHlwZSA9PT0gJ3JpbmcnKSB7XHJcbiAgICBkcmF3UmluZ1RpdGxlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgY2VudGVyUG9zaXRpb24pO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgc2VyaWVzOiBzZXJpZXNcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3Um9zZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgcm9zZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2FyZWEnLFxyXG4gICAgYWN0aXZlT3BhY2l0eTogMC41LFxyXG4gICAgYWN0aXZlUmFkaXVzOiAxMCxcclxuICAgIG9mZnNldEFuZ2xlOiAwLFxyXG4gICAgbGFiZWxXaWR0aDogMTUsXHJcbiAgICBib3JkZXI6IGZhbHNlLFxyXG4gICAgYm9yZGVyV2lkdGg6IDIsXHJcbiAgICBib3JkZXJDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMuZXh0cmEucm9zZSk7XHJcbiAgaWYgKGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID09IDApIHtcclxuICAgIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID0gcm9zZU9wdGlvbi5hY3RpdmVSYWRpdXMgKiBvcHRzLnBpeDtcclxuICB9XHJcbiAgdmFyIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgeDogb3B0cy5hcmVhWzNdICsgKG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIC8gMixcclxuICAgIHk6IG9wdHMuYXJlYVswXSArIChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyAyXHJcbiAgfTtcclxuICB2YXIgcmFkaXVzID0gTWF0aC5taW4oKG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIC8gMiAtIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nIC0gY29uZmlnLnBpZUNoYXJ0VGV4dFBhZGRpbmcgLSBjb25maWcuX3BpZVRleHRNYXhMZW5ndGhfLCAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMiAtIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nIC0gY29uZmlnLnBpZUNoYXJ0VGV4dFBhZGRpbmcpO1xyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgdmFyIG1pblJhZGl1cyA9IHJvc2VPcHRpb24ubWluUmFkaXVzIHx8IHJhZGl1cyAqIDAuNTtcclxuICBzZXJpZXMgPSBnZXRSb3NlRGF0YVBvaW50cyhzZXJpZXMsIHJvc2VPcHRpb24udHlwZSwgbWluUmFkaXVzLCByYWRpdXMsIHByb2Nlc3MpO1xyXG4gIHZhciBhY3RpdmVSYWRpdXMgPSByb3NlT3B0aW9uLmFjdGl2ZVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIHJvc2VPcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3Iocm9zZU9wdGlvbi5saW5lYXJUeXBlLCByb3NlT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgc2VyaWVzID0gc2VyaWVzLm1hcChmdW5jdGlvbihlYWNoU2VyaWVzKSB7XHJcbiAgICBlYWNoU2VyaWVzLl9zdGFydF8gKz0gKHJvc2VPcHRpb24ub2Zmc2V0QW5nbGUgfHwgMCkgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgcmV0dXJuIGVhY2hTZXJpZXM7XHJcbiAgfSk7XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBzZXJpZXNJbmRleCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgcm9zZU9wdGlvbi5hY3RpdmVPcGFjaXR5IHx8IDAuNSkpO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGFjdGl2ZVJhZGl1cyArIGVhY2hTZXJpZXMuX3JhZGl1c18sIGVhY2hTZXJpZXMuX3N0YXJ0XywgZWFjaFNlcmllcy5fc3RhcnRfICsgMiAqIGVhY2hTZXJpZXMuX3Jvc2VfcHJvcG9ydGlvbl8gKiBNYXRoLlBJKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgocm9zZU9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQubGluZUpvaW4gPSBcInJvdW5kXCI7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHJvc2VPcHRpb24uYm9yZGVyQ29sb3IpO1xyXG4gICAgdmFyIGZpbGxjb2xvciA9IGVhY2hTZXJpZXMuY29sb3I7XHJcbiAgICBpZiAocm9zZU9wdGlvbi5saW5lYXJUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgIHZhciBncmQ7XHJcbiAgICAgIGlmKGNvbnRleHQuY3JlYXRlQ2lyY3VsYXJHcmFkaWVudCl7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGVhY2hTZXJpZXMuX3JhZGl1c18pXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGdyZCA9IGNvbnRleHQuY3JlYXRlUmFkaWFsR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgMCxjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfKVxyXG4gICAgICB9XHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2Iocm9zZU9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSwgMSkpXHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgMSkpXHJcbiAgICAgIGZpbGxjb2xvciA9IGdyZFxyXG4gICAgfVxyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbGNvbG9yKTtcclxuICAgIGNvbnRleHQubW92ZVRvKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgZWFjaFNlcmllcy5fcmFkaXVzXywgZWFjaFNlcmllcy5fc3RhcnRfLCBlYWNoU2VyaWVzLl9zdGFydF8gKyAyICogZWFjaFNlcmllcy5fcm9zZV9wcm9wb3J0aW9uXyAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgaWYgKHJvc2VPcHRpb24uYm9yZGVyID09IHRydWUpIHtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3UGllVGV4dChzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcmFkaXVzLCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgfVxyXG4gIHJldHVybiB7XHJcbiAgICBjZW50ZXI6IGNlbnRlclBvc2l0aW9uLFxyXG4gICAgcmFkaXVzOiByYWRpdXMsXHJcbiAgICBzZXJpZXM6IHNlcmllc1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdBcmNiYXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIGFyY2Jhck9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgc3RhcnRBbmdsZTogMC43NSxcclxuICAgIGVuZEFuZ2xlOiAwLjI1LFxyXG4gICAgdHlwZTogJ2RlZmF1bHQnLFxyXG4gICAgZGlyZWN0aW9uOiAnY3cnLFxyXG4gICAgbGluZUNhcDogJ3JvdW5kJyxcclxuICAgIHdpZHRoOiAxMiAsXHJcbiAgICBnYXA6IDIgLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMuZXh0cmEuYXJjYmFyKTtcclxuICBzZXJpZXMgPSBnZXRBcmNiYXJEYXRhUG9pbnRzKHNlcmllcywgYXJjYmFyT3B0aW9uLCBwcm9jZXNzKTtcclxuICB2YXIgY2VudGVyUG9zaXRpb247XHJcbiAgaWYgKGFyY2Jhck9wdGlvbi5jZW50ZXJYIHx8IGFyY2Jhck9wdGlvbi5jZW50ZXJZKSB7XHJcbiAgICBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgICAgeDogYXJjYmFyT3B0aW9uLmNlbnRlclggPyBhcmNiYXJPcHRpb24uY2VudGVyWCA6IG9wdHMud2lkdGggLyAyLFxyXG4gICAgICB5OiBhcmNiYXJPcHRpb24uY2VudGVyWSA/IGFyY2Jhck9wdGlvbi5jZW50ZXJZIDogb3B0cy5oZWlnaHQgLyAyXHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgICAgeDogb3B0cy53aWR0aCAvIDIsXHJcbiAgICAgIHk6IG9wdHMuaGVpZ2h0IC8gMlxyXG4gICAgfTtcclxuICB9XHJcbiAgdmFyIHJhZGl1cztcclxuICBpZiAoYXJjYmFyT3B0aW9uLnJhZGl1cykge1xyXG4gICAgcmFkaXVzID0gYXJjYmFyT3B0aW9uLnJhZGl1cztcclxuICB9IGVsc2Uge1xyXG4gICAgcmFkaXVzID0gTWF0aC5taW4oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICByYWRpdXMgLT0gNSAqIG9wdHMucGl4O1xyXG4gICAgcmFkaXVzIC09IGFyY2Jhck9wdGlvbi53aWR0aCAvIDI7XHJcbiAgfVxyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgYXJjYmFyT3B0aW9uLmN1c3RvbUNvbG9yID0gZmlsbEN1c3RvbUNvbG9yKGFyY2Jhck9wdGlvbi5saW5lYXJUeXBlLCBhcmNiYXJPcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICBcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGVhY2hTZXJpZXMgPSBzZXJpZXNbaV07XHJcbiAgICAvL+iDjOaZr+minOiJslxyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoYXJjYmFyT3B0aW9uLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShhcmNiYXJPcHRpb24uYmFja2dyb3VuZENvbG9yIHx8ICcjRTlFOUU5Jyk7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoYXJjYmFyT3B0aW9uLmxpbmVDYXApO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGlmIChhcmNiYXJPcHRpb24udHlwZSA9PSAnZGVmYXVsdCcpIHtcclxuICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzIC0gKGFyY2Jhck9wdGlvbi53aWR0aCAqIG9wdHMucGl4ICsgYXJjYmFyT3B0aW9uLmdhcCAqIG9wdHMucGl4KSAqIGksIGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlICogTWF0aC5QSSwgYXJjYmFyT3B0aW9uLmVuZEFuZ2xlICogTWF0aC5QSSwgYXJjYmFyT3B0aW9uLmRpcmVjdGlvbiA9PSAnY2N3Jyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCByYWRpdXMgLSAoYXJjYmFyT3B0aW9uLndpZHRoICogb3B0cy5waXggKyBhcmNiYXJPcHRpb24uZ2FwICogb3B0cy5waXgpICogaSwgMCwgMiAqIE1hdGguUEksIGFyY2Jhck9wdGlvbi5kaXJlY3Rpb24gPT0gJ2NjdycpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIC8v6L+b5bqm5p2hXHJcbiAgICB2YXIgZmlsbENvbG9yID0gZWFjaFNlcmllcy5jb2xvclxyXG4gICAgaWYoYXJjYmFyT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpe1xyXG4gICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChjZW50ZXJQb3NpdGlvbi54IC0gcmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55LCBjZW50ZXJQb3NpdGlvbi54ICsgcmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihhcmNiYXJPcHRpb24uY3VzdG9tQ29sb3JbZWFjaFNlcmllcy5saW5lYXJJbmRleF0sIDEpKVxyXG4gICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIDEpKVxyXG4gICAgICBmaWxsQ29sb3IgPSBncmQ7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChhcmNiYXJPcHRpb24ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoYXJjYmFyT3B0aW9uLmxpbmVDYXApO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIHJhZGl1cyAtIChhcmNiYXJPcHRpb24ud2lkdGggKiBvcHRzLnBpeCArIGFyY2Jhck9wdGlvbi5nYXAgKiBvcHRzLnBpeCkgKiBpLCBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSAqIE1hdGguUEksIGVhY2hTZXJpZXMuX3Byb3BvcnRpb25fICogTWF0aC5QSSwgYXJjYmFyT3B0aW9uLmRpcmVjdGlvbiA9PSAnY2N3Jyk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH1cclxuICBkcmF3UmluZ1RpdGxlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgY2VudGVyUG9zaXRpb24pO1xyXG4gIHJldHVybiB7XHJcbiAgICBjZW50ZXI6IGNlbnRlclBvc2l0aW9uLFxyXG4gICAgcmFkaXVzOiByYWRpdXMsXHJcbiAgICBzZXJpZXM6IHNlcmllc1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdHYXVnZURhdGFQb2ludHMoY2F0ZWdvcmllcywgc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogMTtcclxuICB2YXIgZ2F1Z2VPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6ICdkZWZhdWx0JyxcclxuICAgIHN0YXJ0QW5nbGU6IDAuNzUsXHJcbiAgICBlbmRBbmdsZTogMC4yNSxcclxuICAgIHdpZHRoOiAxNSxcclxuICAgIGxhYmVsT2Zmc2V0OjEzLFxyXG4gICAgc3BsaXRMaW5lOiB7XHJcbiAgICAgIGZpeFJhZGl1czogMCxcclxuICAgICAgc3BsaXROdW1iZXI6IDEwLFxyXG4gICAgICB3aWR0aDogMTUsXHJcbiAgICAgIGNvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICAgIGNoaWxkTnVtYmVyOiA1LFxyXG4gICAgICBjaGlsZFdpZHRoOiA1XHJcbiAgICB9LFxyXG4gICAgcG9pbnRlcjoge1xyXG4gICAgICB3aWR0aDogMTUsXHJcbiAgICAgIGNvbG9yOiAnYXV0bydcclxuICAgIH1cclxuICB9LCBvcHRzLmV4dHJhLmdhdWdlKTtcclxuICBpZiAoZ2F1Z2VPcHRpb24ub2xkQW5nbGUgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICBnYXVnZU9wdGlvbi5vbGRBbmdsZSA9IGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgfVxyXG4gIGlmIChnYXVnZU9wdGlvbi5vbGREYXRhID09IHVuZGVmaW5lZCkge1xyXG4gICAgZ2F1Z2VPcHRpb24ub2xkRGF0YSA9IDA7XHJcbiAgfVxyXG4gIGNhdGVnb3JpZXMgPSBnZXRHYXVnZUF4aXNQb2ludHMoY2F0ZWdvcmllcywgZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSwgZ2F1Z2VPcHRpb24uZW5kQW5nbGUpO1xyXG4gIHZhciBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgIHg6IG9wdHMud2lkdGggLyAyLFxyXG4gICAgeTogb3B0cy5oZWlnaHQgLyAyXHJcbiAgfTtcclxuICB2YXIgcmFkaXVzID0gTWF0aC5taW4oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgcmFkaXVzIC09IDUgKiBvcHRzLnBpeDtcclxuICByYWRpdXMgLT0gZ2F1Z2VPcHRpb24ud2lkdGggLyAyO1xyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgdmFyIGlubmVyUmFkaXVzID0gcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGg7XHJcbiAgdmFyIHRvdGFsQW5nbGUgPSAwO1xyXG4gIC8v5Yik5pat5Luq6KGo55uY55qE5qC35byP77yaZGVmYXVsdOeZvuW6puagt+W8j++8jHByb2dyZXNz5paw5qC35byPXHJcbiAgaWYgKGdhdWdlT3B0aW9uLnR5cGUgPT0gJ3Byb2dyZXNzJykge1xyXG4gICAgLy8jIyDnrKzkuIDmraXnlLvkuK3lv4PlnIblvaLog4zmma/lkozov5vluqbmnaHog4zmma9cclxuICAgIC8v5Lit5b+D5ZyG5b2i6IOM5pmvXHJcbiAgICB2YXIgcGllUmFkaXVzID0gcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggKiAzO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGxldCBncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSAtIHBpZVJhZGl1cywgY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSArIHBpZVJhZGl1cyk7XHJcbiAgICAvL+mFjee9rua4kOWPmOWhq+WFhe+8iOi1t+eCue+8muS4reW/g+eCueWQkeS4iuWHj+WNiuW+hO+8m+e7k+adn+eCueS4reW/g+eCueWQkeS4i+WKoOWNiuW+hO+8iVxyXG4gICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKCcwJywgaGV4VG9SZ2Ioc2VyaWVzWzBdLmNvbG9yLCAwLjMpKTtcclxuICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgnMS4wJywgaGV4VG9SZ2IoXCIjRkZGRkZGXCIsIDAuMSkpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZ3JhZGllbnQpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcGllUmFkaXVzLCAwLCAyICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAvL+eUu+i/m+W6puadoeiDjOaZr1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZ2F1Z2VPcHRpb24ud2lkdGgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShoZXhUb1JnYihzZXJpZXNbMF0uY29sb3IsIDAuMykpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lQ2FwKCdyb3VuZCcpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGlubmVyUmFkaXVzLCBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlICogTWF0aC5QSSwgZ2F1Z2VPcHRpb24uZW5kQW5nbGUgKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgLy8jIyDnrKzkuozmraXnlLvliLvluqbnur9cclxuICAgIHRvdGFsQW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gZ2F1Z2VPcHRpb24uZW5kQW5nbGUgKyAxO1xyXG4gICAgbGV0IHNwbGl0QW5nbGUgPSB0b3RhbEFuZ2xlIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyO1xyXG4gICAgbGV0IGNoaWxkQW5nbGUgPSB0b3RhbEFuZ2xlIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyIC8gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmNoaWxkTnVtYmVyO1xyXG4gICAgbGV0IHN0YXJ0WCA9IC1yYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAqIDAuNSAtIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5maXhSYWRpdXM7XHJcbiAgICBsZXQgZW5kWCA9IC1yYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAtIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5maXhSYWRpdXMgKyBnYXVnZU9wdGlvbi5zcGxpdExpbmUud2lkdGg7XHJcbiAgICBjb250ZXh0LnNhdmUoKTtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5yb3RhdGUoKGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSAxKSAqIE1hdGguUEkpO1xyXG4gICAgbGV0IGxlbiA9IGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlciAqIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5jaGlsZE51bWJlciArIDE7XHJcbiAgICBsZXQgcHJvYyA9IHNlcmllc1swXS5kYXRhICogcHJvY2VzcztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgLy/liLvluqbnur/pmo/ov5vluqblj5joibJcclxuICAgICAgaWYgKHByb2MgPiAoaSAvIGxlbikpIHtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGhleFRvUmdiKHNlcmllc1swXS5jb2xvciwgMSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzWzBdLmNvbG9yLCAwLjMpKTtcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgzICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIDApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCAwKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5yb3RhdGUoY2hpbGRBbmdsZSAqIE1hdGguUEkpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICAvLyMjIOesrOS4ieatpeeUu+i/m+W6puadoVxyXG4gICAgc2VyaWVzID0gZ2V0R2F1Z2VBcmNiYXJEYXRhUG9pbnRzKHNlcmllcywgZ2F1Z2VPcHRpb24sIHByb2Nlc3MpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZ2F1Z2VPcHRpb24ud2lkdGgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShzZXJpZXNbMF0uY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lQ2FwKCdyb3VuZCcpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGlubmVyUmFkaXVzLCBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlICogTWF0aC5QSSwgc2VyaWVzWzBdLl9wcm9wb3J0aW9uXyAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAvLyMjIOesrOWbm+atpeeUu+aMh+mSiFxyXG4gICAgbGV0IHBvaW50ZXJSYWRpdXMgPSByYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAqIDIuNTtcclxuICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LnJvdGF0ZSgoc2VyaWVzWzBdLl9wcm9wb3J0aW9uXyAtIDEpICogTWF0aC5QSSk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZ2F1Z2VPcHRpb24ud2lkdGggLyAzKTtcclxuICAgIGxldCBncmFkaWVudDMgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIC1wb2ludGVyUmFkaXVzICogMC42LCAwLCBwb2ludGVyUmFkaXVzICogMC42KTtcclxuICAgIGdyYWRpZW50My5hZGRDb2xvclN0b3AoJzAnLCBoZXhUb1JnYignI0ZGRkZGRicsIDApKTtcclxuICAgIGdyYWRpZW50My5hZGRDb2xvclN0b3AoJzAuNScsIGhleFRvUmdiKHNlcmllc1swXS5jb2xvciwgMSkpO1xyXG4gICAgZ3JhZGllbnQzLmFkZENvbG9yU3RvcCgnMS4wJywgaGV4VG9SZ2IoJyNGRkZGRkYnLCAwKSk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGdyYWRpZW50Myk7XHJcbiAgICBjb250ZXh0LmFyYygwLCAwLCBwb2ludGVyUmFkaXVzLCAwLjg1ICogTWF0aC5QSSwgMS4xNSAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHNlcmllc1swXS5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXNbMF0uY29sb3IpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oLXBvaW50ZXJSYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAvIDMgLyAyLCAtNCk7XHJcbiAgICBjb250ZXh0LmxpbmVUbygtcG9pbnRlclJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoIC8gMyAvIDIgLSA0LCAwKTtcclxuICAgIGNvbnRleHQubGluZVRvKC1wb2ludGVyUmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggLyAzIC8gMiwgNCk7XHJcbiAgICBjb250ZXh0LmxpbmVUbygtcG9pbnRlclJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoIC8gMyAvIDIsIC00KTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gICAgLy9kZWZhdWx055m+5bqm5qC35byPXHJcbiAgfSBlbHNlIHtcclxuICAgIC8v55S76IOM5pmvXHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChnYXVnZU9wdGlvbi53aWR0aCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ2J1dHQnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2F0ZWdvcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZWFjaENhdGVnb3JpZXMgPSBjYXRlZ29yaWVzW2ldO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hDYXRlZ29yaWVzLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzLCBlYWNoQ2F0ZWdvcmllcy5fc3RhcnRBbmdsZV8gKiBNYXRoLlBJLCBlYWNoQ2F0ZWdvcmllcy5fZW5kQW5nbGVfICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICAvL+eUu+WIu+W6pue6v1xyXG4gICAgdG90YWxBbmdsZSA9IGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSBnYXVnZU9wdGlvbi5lbmRBbmdsZSArIDE7XHJcbiAgICBsZXQgc3BsaXRBbmdsZSA9IHRvdGFsQW5nbGUgLyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXI7XHJcbiAgICBsZXQgY2hpbGRBbmdsZSA9IHRvdGFsQW5nbGUgLyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXIgLyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuY2hpbGROdW1iZXI7XHJcbiAgICBsZXQgc3RhcnRYID0gLXJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoICogMC41IC0gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmZpeFJhZGl1cztcclxuICAgIGxldCBlbmRYID0gLXJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoICogMC41IC0gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmZpeFJhZGl1cyArIGdhdWdlT3B0aW9uLnNwbGl0TGluZS53aWR0aDtcclxuICAgIGxldCBjaGlsZGVuZFggPSAtcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggKiAwLjUgLSBnYXVnZU9wdGlvbi5zcGxpdExpbmUuZml4UmFkaXVzICsgZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmNoaWxkV2lkdGg7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQucm90YXRlKChnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gMSkgKiBNYXRoLlBJKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyICsgMTsgaSsrKSB7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMiAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCAwKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oZW5kWCwgMCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQucm90YXRlKHNwbGl0QW5nbGUgKiBNYXRoLlBJKTtcclxuICAgIH1cclxuICAgIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQucm90YXRlKChnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gMSkgKiBNYXRoLlBJKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyICogZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmNoaWxkTnVtYmVyICsgMTsgaSsrKSB7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCAwKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oY2hpbGRlbmRYLCAwKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5yb3RhdGUoY2hpbGRBbmdsZSAqIE1hdGguUEkpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICAvL+eUu+aMh+mSiFxyXG4gICAgc2VyaWVzID0gZ2V0R2F1Z2VEYXRhUG9pbnRzKHNlcmllcywgY2F0ZWdvcmllcywgZ2F1Z2VPcHRpb24sIHByb2Nlc3MpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGVhY2hTZXJpZXMgPSBzZXJpZXNbaV07XHJcbiAgICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgICAgY29udGV4dC5yb3RhdGUoKGVhY2hTZXJpZXMuX3Byb3BvcnRpb25fIC0gMSkgKiBNYXRoLlBJKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKGdhdWdlT3B0aW9uLnBvaW50ZXIud2lkdGgsIDApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbygwLCAtZ2F1Z2VPcHRpb24ucG9pbnRlci53aWR0aCAvIDIpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbygtaW5uZXJSYWRpdXMsIDApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbygwLCBnYXVnZU9wdGlvbi5wb2ludGVyLndpZHRoIC8gMik7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKGdhdWdlT3B0aW9uLnBvaW50ZXIud2lkdGgsIDApO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoJyNGRkZGRkYnKTtcclxuICAgICAgY29udGV4dC5hcmMoMCwgMCwgZ2F1Z2VPcHRpb24ucG9pbnRlci53aWR0aCAvIDYsIDAsIDIgKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICAgIH1cclxuICAgIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UpIHtcclxuICAgICAgZHJhd0dhdWdlTGFiZWwoZ2F1Z2VPcHRpb24sIHJhZGl1cywgY2VudGVyUG9zaXRpb24sIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8v55S75Luq6KGo55uY5qCH6aKY77yM5Ymv5qCH6aKYXHJcbiAgZHJhd1JpbmdUaXRsZShvcHRzLCBjb25maWcsIGNvbnRleHQsIGNlbnRlclBvc2l0aW9uKTtcclxuICBpZiAocHJvY2VzcyA9PT0gMSAmJiBvcHRzLnR5cGUgPT09ICdnYXVnZScpIHtcclxuICAgIG9wdHMuZXh0cmEuZ2F1Z2Uub2xkQW5nbGUgPSBzZXJpZXNbMF0uX3Byb3BvcnRpb25fO1xyXG4gICAgb3B0cy5leHRyYS5nYXVnZS5vbGREYXRhID0gc2VyaWVzWzBdLmRhdGE7XHJcbiAgfVxyXG4gIHJldHVybiB7XHJcbiAgICBjZW50ZXI6IGNlbnRlclBvc2l0aW9uLFxyXG4gICAgcmFkaXVzOiByYWRpdXMsXHJcbiAgICBpbm5lclJhZGl1czogaW5uZXJSYWRpdXMsXHJcbiAgICBjYXRlZ29yaWVzOiBjYXRlZ29yaWVzLFxyXG4gICAgdG90YWxBbmdsZTogdG90YWxBbmdsZVxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdSYWRhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgcmFkYXJPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGdyaWRDb2xvcjogJyNjY2NjY2MnLFxyXG4gICAgZ3JpZFR5cGU6ICdyYWRhcicsXHJcbiAgICBncmlkRXZhbDoxLFxyXG4gICAgYXhpc0xhYmVsOmZhbHNlLFxyXG4gICAgYXhpc0xhYmVsVG9maXg6MCxcclxuICAgIGxhYmVsQ29sb3I6JyM2NjY2NjYnLFxyXG4gICAgbGFiZWxQb2ludFNob3c6ZmFsc2UsXHJcbiAgICBsYWJlbFBvaW50UmFkaXVzOjMsXHJcbiAgICBsYWJlbFBvaW50Q29sb3I6JyNjY2NjY2MnLFxyXG4gICAgb3BhY2l0eTogMC4yLFxyXG4gICAgZ3JpZENvdW50OiAzLFxyXG4gICAgYm9yZGVyOmZhbHNlLFxyXG4gICAgYm9yZGVyV2lkdGg6MixcclxuICAgIGxpbmVhclR5cGU6ICdub25lJyxcclxuICAgIGN1c3RvbUNvbG9yOiBbXSxcclxuICB9LCBvcHRzLmV4dHJhLnJhZGFyKTtcclxuICB2YXIgY29vcmRpbmF0ZUFuZ2xlID0gZ2V0UmFkYXJDb29yZGluYXRlU2VyaWVzKG9wdHMuY2F0ZWdvcmllcy5sZW5ndGgpO1xyXG4gIHZhciBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgIHg6IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIsXHJcbiAgICB5OiBvcHRzLmFyZWFbMF0gKyAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMlxyXG4gIH07XHJcbiAgdmFyIHhyID0gKG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIC8gMlxyXG4gIHZhciB5ciA9IChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyAyXHJcbiAgdmFyIHJhZGl1cyA9IE1hdGgubWluKHhyIC0gKGdldE1heFRleHRMaXN0TGVuZ3RoKG9wdHMuY2F0ZWdvcmllcywgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KSArIGNvbmZpZy5yYWRhckxhYmVsVGV4dE1hcmdpbiksIHlyIC0gY29uZmlnLnJhZGFyTGFiZWxUZXh0TWFyZ2luKTtcclxuICByYWRpdXMgLT0gY29uZmlnLnJhZGFyTGFiZWxUZXh0TWFyZ2luICogb3B0cy5waXg7XHJcbiAgcmFkaXVzID0gcmFkaXVzIDwgMTAgPyAxMCA6IHJhZGl1cztcclxuICAvLyDnlLvliIblibLnur9cclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgY29udGV4dC5zZXRTdHJva2VTdHlsZShyYWRhck9wdGlvbi5ncmlkQ29sb3IpO1xyXG4gIGNvb3JkaW5hdGVBbmdsZS5mb3JFYWNoKGZ1bmN0aW9uKGFuZ2xlLGluZGV4KSB7XHJcbiAgICB2YXIgcG9zID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocmFkaXVzICogTWF0aC5jb3MoYW5nbGUpLCByYWRpdXMgKiBNYXRoLnNpbihhbmdsZSksIGNlbnRlclBvc2l0aW9uKTtcclxuICAgIGNvbnRleHQubW92ZVRvKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgaWYgKGluZGV4ICUgcmFkYXJPcHRpb24uZ3JpZEV2YWwgPT0gMCkge1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhwb3MueCwgcG9zLnkpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBcclxuICAvLyDnlLvog4zmma/nvZHmoLxcclxuICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChpKSB7XHJcbiAgICB2YXIgc3RhcnRQb3MgPSB7fTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShyYWRhck9wdGlvbi5ncmlkQ29sb3IpO1xyXG4gICAgaWYgKHJhZGFyT3B0aW9uLmdyaWRUeXBlID09ICdyYWRhcicpIHtcclxuICAgICAgY29vcmRpbmF0ZUFuZ2xlLmZvckVhY2goZnVuY3Rpb24oYW5nbGUsIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIHBvcyA9IGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKHJhZGl1cyAvIHJhZGFyT3B0aW9uLmdyaWRDb3VudCAqIGkgKiBNYXRoLmNvcyhhbmdsZSksIHJhZGl1cyAvXHJcbiAgICAgICAgICByYWRhck9wdGlvbi5ncmlkQ291bnQgKiBpICogTWF0aC5zaW4oYW5nbGUpLCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICBzdGFydFBvcyA9IHBvcztcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvcy54LCBwb3MueSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHBvcy54LCBwb3MueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRQb3MueCwgc3RhcnRQb3MueSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgcG9zID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocmFkaXVzIC8gcmFkYXJPcHRpb24uZ3JpZENvdW50ICogaSAqIE1hdGguY29zKDEuNSksIHJhZGl1cyAvIHJhZGFyT3B0aW9uLmdyaWRDb3VudCAqIGkgKiBNYXRoLnNpbigxLjUpLCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGNlbnRlclBvc2l0aW9uLnkgLSBwb3MueSwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIH07XHJcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gcmFkYXJPcHRpb24uZ3JpZENvdW50OyBpKyspIHtcclxuICAgIF9sb29wKGkpO1xyXG4gIH1cclxuICByYWRhck9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihyYWRhck9wdGlvbi5saW5lYXJUeXBlLCByYWRhck9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIHZhciByYWRhckRhdGFQb2ludHMgPSBnZXRSYWRhckRhdGFQb2ludHMoY29vcmRpbmF0ZUFuZ2xlLCBjZW50ZXJQb3NpdGlvbiwgcmFkaXVzLCBzZXJpZXMsIG9wdHMsIHByb2Nlc3MpO1xyXG4gIHJhZGFyRGF0YVBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAvLyDnu5jliLbljLrln5/mlbDmja5cclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChyYWRhck9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBcclxuICAgIHZhciBmaWxsY29sb3IgPSBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCByYWRhck9wdGlvbi5vcGFjaXR5KTtcclxuICAgIGlmIChyYWRhck9wdGlvbi5saW5lYXJUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgIHZhciBncmQ7XHJcbiAgICAgIGlmKGNvbnRleHQuY3JlYXRlQ2lyY3VsYXJHcmFkaWVudCl7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIHJhZGl1cylcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCAwLGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIHJhZGl1cylcclxuICAgICAgfVxyXG4gICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKHJhZGFyT3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tzZXJpZXNJbmRleF0ubGluZWFySW5kZXhdLCByYWRhck9wdGlvbi5vcGFjaXR5KSlcclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCByYWRhck9wdGlvbi5vcGFjaXR5KSlcclxuICAgICAgZmlsbGNvbG9yID0gZ3JkXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxjb2xvcik7XHJcbiAgICBlYWNoU2VyaWVzLmRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLnBvc2l0aW9uLngsIGl0ZW0ucG9zaXRpb24ueSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS5wb3NpdGlvbi54LCBpdGVtLnBvc2l0aW9uLnkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgIGlmKHJhZGFyT3B0aW9uLmJvcmRlciA9PT0gdHJ1ZSl7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgaWYgKG9wdHMuZGF0YVBvaW50U2hhcGUgIT09IGZhbHNlKSB7XHJcbiAgICAgIHZhciBwb2ludHMgPSBlYWNoU2VyaWVzLmRhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5wb3NpdGlvbjtcclxuICAgICAgfSk7XHJcbiAgICAgIGRyYXdQb2ludFNoYXBlKHBvaW50cywgZWFjaFNlcmllcy5jb2xvciwgZWFjaFNlcmllcy5wb2ludFNoYXBlLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH1cclxuICB9KTtcclxuICAvLyDnlLvliLvluqblgLxcclxuICBpZihyYWRhck9wdGlvbi5heGlzTGFiZWwgPT09IHRydWUpe1xyXG4gICAgY29uc3QgbWF4RGF0YSA9IE1hdGgubWF4KHJhZGFyT3B0aW9uLm1heCwgTWF0aC5tYXguYXBwbHkobnVsbCwgZGF0YUNvbWJpbmUoc2VyaWVzKSkpO1xyXG4gICAgY29uc3Qgc3RlcExlbmd0aCA9IHJhZGl1cyAvIHJhZGFyT3B0aW9uLmdyaWRDb3VudDtcclxuICAgIGNvbnN0IGZvbnRTaXplID0gb3B0cy5mb250U2l6ZSAqIG9wdHMucGl4O1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYWRhck9wdGlvbi5ncmlkQ291bnQgKyAxOyBpKyspIHtcclxuICAgICAgbGV0IGxhYmVsID0gaSAqIG1heERhdGEgLyByYWRhck9wdGlvbi5ncmlkQ291bnQ7XHJcbiAgICAgIGxhYmVsID0gbGFiZWwudG9GaXhlZChyYWRhck9wdGlvbi5heGlzTGFiZWxUb2ZpeCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKGxhYmVsKSwgY2VudGVyUG9zaXRpb24ueCArIDMgKiBvcHRzLnBpeCwgY2VudGVyUG9zaXRpb24ueSAtIGkgKiBzdGVwTGVuZ3RoICsgZm9udFNpemUgLyAyKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgLy8gZHJhdyBsYWJlbCB0ZXh0XHJcbiAgZHJhd1JhZGFyTGFiZWwoY29vcmRpbmF0ZUFuZ2xlLCByYWRpdXMsIGNlbnRlclBvc2l0aW9uLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gIFxyXG4gIC8vIGRyYXcgZGF0YUxhYmVsXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICByYWRhckRhdGFQb2ludHMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICB2YXIgZm9udFNpemUgPSBlYWNoU2VyaWVzLnRleHRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZWFjaFNlcmllcy50ZXh0Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgICBlYWNoU2VyaWVzLmRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIC8v5aaC5p6c5piv5Lit5b+D54K55Z6C55u055qE5LiK5LiL54K55L2NXHJcbiAgICAgICAgaWYoTWF0aC5hYnMoaXRlbS5wb3NpdGlvbi54IC0gY2VudGVyUG9zaXRpb24ueCk8Mil7XHJcbiAgICAgICAgICAvL+WmguaenOWcqOS4iumdolxyXG4gICAgICAgICAgaWYoaXRlbS5wb3NpdGlvbi55IDwgY2VudGVyUG9zaXRpb24ueSl7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdjZW50ZXInKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChpdGVtLnZhbHVlLCBpdGVtLnBvc2l0aW9uLngsIGl0ZW0ucG9zaXRpb24ueSAtIDQpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdjZW50ZXInKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChpdGVtLnZhbHVlLCBpdGVtLnBvc2l0aW9uLngsIGl0ZW0ucG9zaXRpb24ueSArIGZvbnRTaXplICsgMik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAvL+WmguaenOWcqOW3puS+p1xyXG4gICAgICAgICAgaWYoaXRlbS5wb3NpdGlvbi54IDwgY2VudGVyUG9zaXRpb24ueCl7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdyaWdodCcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udmFsdWUsIGl0ZW0ucG9zaXRpb24ueCAtIDQsIGl0ZW0ucG9zaXRpb24ueSArIGZvbnRTaXplIC8gMiAtIDIpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoaXRlbS52YWx1ZSwgaXRlbS5wb3NpdGlvbi54ICsgNCwgaXRlbS5wb3NpdGlvbi55ICsgZm9udFNpemUgLyAyIC0gMik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH0pO1xyXG4gICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2xlZnQnKTtcclxuICB9XHJcbiAgXHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIGFuZ2xlTGlzdDogY29vcmRpbmF0ZUFuZ2xlXHJcbiAgfTtcclxufVxyXG5cclxuLy8g57uP57qs5bqm6L2s5aKo5Y2h5omYXHJcbmZ1bmN0aW9uIGxvbmxhdDJtZXJjYXRvcihsb25naXR1ZGUsIGxhdGl0dWRlKSB7XHJcbiAgdmFyIG1lcmNhdG9yID0gQXJyYXkoMik7XHJcbiAgdmFyIHggPSBsb25naXR1ZGUgKiAyMDAzNzUwOC4zNCAvIDE4MDtcclxuICB2YXIgeSA9IE1hdGgubG9nKE1hdGgudGFuKCg5MCArIGxhdGl0dWRlKSAqIE1hdGguUEkgLyAzNjApKSAvIChNYXRoLlBJIC8gMTgwKTtcclxuICB5ID0geSAqIDIwMDM3NTA4LjM0IC8gMTgwO1xyXG4gIG1lcmNhdG9yWzBdID0geDtcclxuICBtZXJjYXRvclsxXSA9IHk7XHJcbiAgcmV0dXJuIG1lcmNhdG9yO1xyXG59XHJcblxyXG4vLyDloqjljaHmiZjovaznu4/nuqzluqZcclxuZnVuY3Rpb24gbWVyY2F0b3IybG9ubGF0KGxvbmdpdHVkZSwgbGF0aXR1ZGUpIHtcclxuICB2YXIgbG9ubGF0ID0gQXJyYXkoMilcclxuICB2YXIgeCA9IGxvbmdpdHVkZSAvIDIwMDM3NTA4LjM0ICogMTgwO1xyXG4gIHZhciB5ID0gbGF0aXR1ZGUgLyAyMDAzNzUwOC4zNCAqIDE4MDtcclxuICB5ID0gMTgwIC8gTWF0aC5QSSAqICgyICogTWF0aC5hdGFuKE1hdGguZXhwKHkgKiBNYXRoLlBJIC8gMTgwKSkgLSBNYXRoLlBJIC8gMik7XHJcbiAgbG9ubGF0WzBdID0geDtcclxuICBsb25sYXRbMV0gPSB5O1xyXG4gIHJldHVybiBsb25sYXQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEJvdW5kaW5nQm94KGRhdGEpIHtcclxuICB2YXIgYm91bmRzID0ge30sY29vcmRzO1xyXG4gIGJvdW5kcy54TWluID0gMTgwO1xyXG4gIGJvdW5kcy54TWF4ID0gMDtcclxuICBib3VuZHMueU1pbiA9IDkwO1xyXG4gIGJvdW5kcy55TWF4ID0gMFxyXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgdmFyIGNvb3JkYSA9IGRhdGFbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgY29vcmRhLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgIGNvb3JkcyA9IGNvb3JkYVtrXTtcclxuICAgICAgaWYgKGNvb3Jkcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIGNvb3JkcyA9IGNvb3Jkc1swXVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29vcmRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgdmFyIGxvbmdpdHVkZSA9IGNvb3Jkc1tqXVswXTtcclxuICAgICAgICB2YXIgbGF0aXR1ZGUgPSBjb29yZHNbal1bMV07XHJcbiAgICAgICAgdmFyIHBvaW50ID0ge1xyXG4gICAgICAgICAgeDogbG9uZ2l0dWRlLFxyXG4gICAgICAgICAgeTogbGF0aXR1ZGVcclxuICAgICAgICB9XHJcbiAgICAgICAgYm91bmRzLnhNaW4gPSBib3VuZHMueE1pbiA8IHBvaW50LnggPyBib3VuZHMueE1pbiA6IHBvaW50Lng7XHJcbiAgICAgICAgYm91bmRzLnhNYXggPSBib3VuZHMueE1heCA+IHBvaW50LnggPyBib3VuZHMueE1heCA6IHBvaW50Lng7XHJcbiAgICAgICAgYm91bmRzLnlNaW4gPSBib3VuZHMueU1pbiA8IHBvaW50LnkgPyBib3VuZHMueU1pbiA6IHBvaW50Lnk7XHJcbiAgICAgICAgYm91bmRzLnlNYXggPSBib3VuZHMueU1heCA+IHBvaW50LnkgPyBib3VuZHMueU1heCA6IHBvaW50Lnk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGJvdW5kcztcclxufVxyXG5cclxuZnVuY3Rpb24gY29vcmRpbmF0ZVRvUG9pbnQobGF0aXR1ZGUsIGxvbmdpdHVkZSwgYm91bmRzLCBzY2FsZSwgeG9mZnNldCwgeW9mZnNldCkge1xyXG4gIHJldHVybiB7XHJcbiAgICB4OiAobG9uZ2l0dWRlIC0gYm91bmRzLnhNaW4pICogc2NhbGUgKyB4b2Zmc2V0LFxyXG4gICAgeTogKGJvdW5kcy55TWF4IC0gbGF0aXR1ZGUpICogc2NhbGUgKyB5b2Zmc2V0XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gcG9pbnRUb0Nvb3JkaW5hdGUocG9pbnRZLCBwb2ludFgsIGJvdW5kcywgc2NhbGUsIHhvZmZzZXQsIHlvZmZzZXQpIHtcclxuICByZXR1cm4ge1xyXG4gICAgeDogKHBvaW50WCAtIHhvZmZzZXQpIC8gc2NhbGUgKyBib3VuZHMueE1pbixcclxuICAgIHk6IGJvdW5kcy55TWF4IC0gKHBvaW50WSAtIHlvZmZzZXQpIC8gc2NhbGVcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1JheUludGVyc2VjdHNTZWdtZW50KHBvaSwgc19wb2ksIGVfcG9pKSB7XHJcbiAgaWYgKHNfcG9pWzFdID09IGVfcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChzX3BvaVsxXSA+IHBvaVsxXSAmJiBlX3BvaVsxXSA+IHBvaVsxXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBpZiAoc19wb2lbMV0gPCBwb2lbMV0gJiYgZV9wb2lbMV0gPCBwb2lbMV0pIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKHNfcG9pWzFdID09IHBvaVsxXSAmJiBlX3BvaVsxXSA+IHBvaVsxXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBpZiAoZV9wb2lbMV0gPT0gcG9pWzFdICYmIHNfcG9pWzFdID4gcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChzX3BvaVswXSA8IHBvaVswXSAmJiBlX3BvaVsxXSA8IHBvaVsxXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBsZXQgeHNlZyA9IGVfcG9pWzBdIC0gKGVfcG9pWzBdIC0gc19wb2lbMF0pICogKGVfcG9pWzFdIC0gcG9pWzFdKSAvIChlX3BvaVsxXSAtIHNfcG9pWzFdKTtcclxuICBpZiAoeHNlZyA8IHBvaVswXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUG9pV2l0aGluUG9seShwb2ksIHBvbHksIG1lcmNhdG9yKSB7XHJcbiAgbGV0IHNpbnNjID0gMDtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvbHkubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBlcG9seSA9IHBvbHlbaV1bMF07XHJcbiAgICBpZiAocG9seS5sZW5ndGggPT0gMSkge1xyXG4gICAgICBlcG9seSA9IHBvbHlbaV1bMF1cclxuICAgIH1cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgZXBvbHkubGVuZ3RoIC0gMTsgaisrKSB7XHJcbiAgICAgIGxldCBzX3BvaSA9IGVwb2x5W2pdO1xyXG4gICAgICBsZXQgZV9wb2kgPSBlcG9seVtqICsgMV07XHJcbiAgICAgIGlmIChtZXJjYXRvcikge1xyXG4gICAgICAgIHNfcG9pID0gbG9ubGF0Mm1lcmNhdG9yKGVwb2x5W2pdWzBdLCBlcG9seVtqXVsxXSk7XHJcbiAgICAgICAgZV9wb2kgPSBsb25sYXQybWVyY2F0b3IoZXBvbHlbaiArIDFdWzBdLCBlcG9seVtqICsgMV1bMV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc1JheUludGVyc2VjdHNTZWdtZW50KHBvaSwgc19wb2ksIGVfcG9pKSkge1xyXG4gICAgICAgIHNpbnNjICs9IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgaWYgKHNpbnNjICUgMiA9PSAxKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd01hcERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgbWFwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBib3JkZXI6IHRydWUsXHJcbiAgICBtZXJjYXRvcjogZmFsc2UsXHJcbiAgICBib3JkZXJXaWR0aDogMSxcclxuICAgIGFjdGl2ZTp0cnVlLFxyXG4gICAgYm9yZGVyQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgIGZpbGxPcGFjaXR5OiAwLjYsXHJcbiAgICBhY3RpdmVCb3JkZXJDb2xvcjogJyNmMDQ4NjQnLFxyXG4gICAgYWN0aXZlRmlsbENvbG9yOiAnI2ZhY2MxNCcsXHJcbiAgICBhY3RpdmVGaWxsT3BhY2l0eTogMVxyXG4gIH0sIG9wdHMuZXh0cmEubWFwKTtcclxuICB2YXIgY29vcmRzLCBwb2ludDtcclxuICB2YXIgZGF0YSA9IHNlcmllcztcclxuICB2YXIgYm91bmRzID0gZ2V0Qm91bmRpbmdCb3goZGF0YSk7XHJcbiAgaWYgKG1hcE9wdGlvbi5tZXJjYXRvcikge1xyXG4gICAgdmFyIG1heCA9IGxvbmxhdDJtZXJjYXRvcihib3VuZHMueE1heCwgYm91bmRzLnlNYXgpXHJcbiAgICB2YXIgbWluID0gbG9ubGF0Mm1lcmNhdG9yKGJvdW5kcy54TWluLCBib3VuZHMueU1pbilcclxuICAgIGJvdW5kcy54TWF4ID0gbWF4WzBdXHJcbiAgICBib3VuZHMueU1heCA9IG1heFsxXVxyXG4gICAgYm91bmRzLnhNaW4gPSBtaW5bMF1cclxuICAgIGJvdW5kcy55TWluID0gbWluWzFdXHJcbiAgfVxyXG4gIHZhciB4U2NhbGUgPSBvcHRzLndpZHRoIC8gTWF0aC5hYnMoYm91bmRzLnhNYXggLSBib3VuZHMueE1pbik7XHJcbiAgdmFyIHlTY2FsZSA9IG9wdHMuaGVpZ2h0IC8gTWF0aC5hYnMoYm91bmRzLnlNYXggLSBib3VuZHMueU1pbik7XHJcbiAgdmFyIHNjYWxlID0geFNjYWxlIDwgeVNjYWxlID8geFNjYWxlIDogeVNjYWxlO1xyXG4gIHZhciB4b2Zmc2V0ID0gb3B0cy53aWR0aCAvIDIgLSBNYXRoLmFicyhib3VuZHMueE1heCAtIGJvdW5kcy54TWluKSAvIDIgKiBzY2FsZTtcclxuICB2YXIgeW9mZnNldCA9IG9wdHMuaGVpZ2h0IC8gMiAtIE1hdGguYWJzKGJvdW5kcy55TWF4IC0gYm91bmRzLnlNaW4pIC8gMiAqIHNjYWxlO1xyXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKG1hcE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobWFwT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHNlcmllc1tpXS5jb2xvciwgc2VyaWVzW2ldLmZpbGxPcGFjaXR5fHxtYXBPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgIGlmIChtYXBPcHRpb24uYWN0aXZlID09IHRydWUgJiYgb3B0cy50b29sdGlwKSB7XHJcbiAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUobWFwT3B0aW9uLmFjdGl2ZUJvcmRlckNvbG9yKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihtYXBPcHRpb24uYWN0aXZlRmlsbENvbG9yLCBtYXBPcHRpb24uYWN0aXZlRmlsbE9wYWNpdHkpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdmFyIGNvb3JkYSA9IGRhdGFbaV0uZ2VvbWV0cnkuY29vcmRpbmF0ZXNcclxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgY29vcmRhLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgIGNvb3JkcyA9IGNvb3JkYVtrXTtcclxuICAgICAgaWYgKGNvb3Jkcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIGNvb3JkcyA9IGNvb3Jkc1swXVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29vcmRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgdmFyIGdhb3NpID0gQXJyYXkoMik7XHJcbiAgICAgICAgaWYgKG1hcE9wdGlvbi5tZXJjYXRvcikge1xyXG4gICAgICAgICAgZ2Fvc2kgPSBsb25sYXQybWVyY2F0b3IoY29vcmRzW2pdWzBdLCBjb29yZHNbal1bMV0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGdhb3NpID0gY29vcmRzW2pdXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBvaW50ID0gY29vcmRpbmF0ZVRvUG9pbnQoZ2Fvc2lbMV0sIGdhb3NpWzBdLCBib3VuZHMsIHNjYWxlLCB4b2Zmc2V0LCB5b2Zmc2V0KVxyXG4gICAgICAgIGlmIChqID09PSAwKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnQueCwgcG9pbnQueSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHBvaW50LngsIHBvaW50LnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgaWYgKG1hcE9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsID09IHRydWUpIHtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgY2VudGVyUG9pbnQgPSBkYXRhW2ldLnByb3BlcnRpZXMuY2VudHJvaWQ7XHJcbiAgICAgIGlmIChjZW50ZXJQb2ludCkge1xyXG4gICAgICAgIGlmIChtYXBPcHRpb24ubWVyY2F0b3IpIHtcclxuICAgICAgICAgIGNlbnRlclBvaW50ID0gbG9ubGF0Mm1lcmNhdG9yKGRhdGFbaV0ucHJvcGVydGllcy5jZW50cm9pZFswXSwgZGF0YVtpXS5wcm9wZXJ0aWVzLmNlbnRyb2lkWzFdKVxyXG4gICAgICAgIH1cclxuICAgICAgICBwb2ludCA9IGNvb3JkaW5hdGVUb1BvaW50KGNlbnRlclBvaW50WzFdLCBjZW50ZXJQb2ludFswXSwgYm91bmRzLCBzY2FsZSwgeG9mZnNldCwgeW9mZnNldCk7XHJcbiAgICAgICAgbGV0IGZvbnRTaXplID0gZGF0YVtpXS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgICBsZXQgZm9udENvbG9yID0gZGF0YVtpXS50ZXh0Q29sb3IgfHwgb3B0cy5mb250Q29sb3I7XHJcbiAgICAgICAgaWYobWFwT3B0aW9uLmFjdGl2ZSAmJiBtYXBPcHRpb24uYWN0aXZlVGV4dENvbG9yICYmIG9wdHMudG9vbHRpcCAmJiBvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSl7XHJcbiAgICAgICAgICBmb250Q29sb3IgPSBtYXBPcHRpb24uYWN0aXZlVGV4dENvbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGV4dCA9IGRhdGFbaV0ucHJvcGVydGllcy5uYW1lO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSlcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmb250Q29sb3IpXHJcbiAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCBwb2ludC54IC0gbWVhc3VyZVRleHQodGV4dCwgZm9udFNpemUsIGNvbnRleHQpIC8gMiwgcG9pbnQueSArIGZvbnRTaXplIC8gMik7XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9wdHMuY2hhcnREYXRhLm1hcERhdGEgPSB7XHJcbiAgICBib3VuZHM6IGJvdW5kcyxcclxuICAgIHNjYWxlOiBzY2FsZSxcclxuICAgIHhvZmZzZXQ6IHhvZmZzZXQsXHJcbiAgICB5b2Zmc2V0OiB5b2Zmc2V0LFxyXG4gICAgbWVyY2F0b3I6IG1hcE9wdGlvbi5tZXJjYXRvclxyXG4gIH1cclxuICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIDEpO1xyXG4gIGNvbnRleHQuZHJhdygpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBub3JtYWxJbnQobWluLCBtYXgsIGl0ZXIpIHtcclxuICBpdGVyID0gaXRlciA9PSAwID8gMSA6IGl0ZXI7XHJcbiAgdmFyIGFyciA9IFtdO1xyXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcjsgaSsrKSB7XHJcbiAgICBhcnJbaV0gPSBNYXRoLnJhbmRvbSgpO1xyXG4gIH07XHJcbiAgcmV0dXJuIE1hdGguZmxvb3IoYXJyLnJlZHVjZShmdW5jdGlvbihpLCBqKSB7XHJcbiAgICByZXR1cm4gaSArIGpcclxuICB9KSAvIGl0ZXIgKiAobWF4IC0gbWluKSkgKyBtaW47XHJcbn07XHJcblxyXG5mdW5jdGlvbiBjb2xsaXNpb25OZXcoYXJlYSwgcG9pbnRzLCB3aWR0aCwgaGVpZ2h0KSB7XHJcbiAgdmFyIGlzSW4gPSBmYWxzZTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHBvaW50c1tpXS5hcmVhKSB7XHJcbiAgICAgIGlmIChhcmVhWzNdIDwgcG9pbnRzW2ldLmFyZWFbMV0gfHwgYXJlYVswXSA+IHBvaW50c1tpXS5hcmVhWzJdIHx8IGFyZWFbMV0gPiBwb2ludHNbaV0uYXJlYVszXSB8fCBhcmVhWzJdIDwgcG9pbnRzW2ldLmFyZWFbMF0pIHtcclxuICAgICAgICBpZiAoYXJlYVswXSA8IDAgfHwgYXJlYVsxXSA8IDAgfHwgYXJlYVsyXSA+IHdpZHRoIHx8IGFyZWFbM10gPiBoZWlnaHQpIHtcclxuICAgICAgICAgIGlzSW4gPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlzSW4gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXNJbiA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGlzSW47XHJcbn07XHJcblxyXG5mdW5jdGlvbiBnZXRXb3JkQ2xvdWRQb2ludChvcHRzLCB0eXBlLCBjb250ZXh0KSB7XHJcbiAgbGV0IHBvaW50cyA9IG9wdHMuc2VyaWVzO1xyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSAnbm9ybWFsJzpcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgdGV4dCA9IHBvaW50c1tpXS5uYW1lO1xyXG4gICAgICAgIGxldCB0SGVpZ2h0ID0gcG9pbnRzW2ldLnRleHRTaXplICogb3B0cy5waXg7XHJcbiAgICAgICAgbGV0IHRXaWR0aCA9IG1lYXN1cmVUZXh0KHRleHQsIHRIZWlnaHQsIGNvbnRleHQpO1xyXG4gICAgICAgIGxldCB4LCB5O1xyXG4gICAgICAgIGxldCBhcmVhO1xyXG4gICAgICAgIGxldCBicmVha251bSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgIGJyZWFrbnVtKys7XHJcbiAgICAgICAgICB4ID0gbm9ybWFsSW50KC1vcHRzLndpZHRoIC8gMiwgb3B0cy53aWR0aCAvIDIsIDUpIC0gdFdpZHRoIC8gMjtcclxuICAgICAgICAgIHkgPSBub3JtYWxJbnQoLW9wdHMuaGVpZ2h0IC8gMiwgb3B0cy5oZWlnaHQgLyAyLCA1KSArIHRIZWlnaHQgLyAyO1xyXG4gICAgICAgICAgYXJlYSA9IFt4IC0gNSArIG9wdHMud2lkdGggLyAyLCB5IC0gNSAtIHRIZWlnaHQgKyBvcHRzLmhlaWdodCAvIDIsIHggKyB0V2lkdGggKyA1ICsgb3B0cy53aWR0aCAvIDIsIHkgKyA1ICtcclxuICAgICAgICAgICAgb3B0cy5oZWlnaHQgLyAyXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgbGV0IGlzQ29sbGlzaW9uID0gY29sbGlzaW9uTmV3KGFyZWEsIHBvaW50cywgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKCFpc0NvbGxpc2lvbikgYnJlYWs7XHJcbiAgICAgICAgICBpZiAoYnJlYWtudW0gPT0gMTAwMCkge1xyXG4gICAgICAgICAgICBhcmVhID0gWy0xMDAsIC0xMDAsIC0xMDAsIC0xMDBdO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHBvaW50c1tpXS5hcmVhID0gYXJlYTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3ZlcnRpY2FsJzpcclxuICAgICAgZnVuY3Rpb24gU3BpbigpIHtcclxuICAgICAgICAvL+iOt+WPluWdh+WMgOmaj+acuuWAvO+8jOaYr+WQpuaXi+i9rO+8jOaXi+i9rOeahOamgueOh+S4uu+8iDEtMC4177yJXHJcbiAgICAgICAgaWYgKE1hdGgucmFuZG9tKCkgPiAwLjcpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgICB9O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCB0ZXh0ID0gcG9pbnRzW2ldLm5hbWU7XHJcbiAgICAgICAgbGV0IHRIZWlnaHQgPSBwb2ludHNbaV0udGV4dFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgICBsZXQgdFdpZHRoID0gbWVhc3VyZVRleHQodGV4dCwgdEhlaWdodCwgY29udGV4dCk7XHJcbiAgICAgICAgbGV0IGlzU3BpbiA9IFNwaW4oKTtcclxuICAgICAgICBsZXQgeCwgeSwgYXJlYSwgYXJlYXY7XHJcbiAgICAgICAgbGV0IGJyZWFrbnVtID0gMDtcclxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgYnJlYWtudW0rKztcclxuICAgICAgICAgIGxldCBpc0NvbGxpc2lvbjtcclxuICAgICAgICAgIGlmIChpc1NwaW4pIHtcclxuICAgICAgICAgICAgeCA9IG5vcm1hbEludCgtb3B0cy53aWR0aCAvIDIsIG9wdHMud2lkdGggLyAyLCA1KSAtIHRXaWR0aCAvIDI7XHJcbiAgICAgICAgICAgIHkgPSBub3JtYWxJbnQoLW9wdHMuaGVpZ2h0IC8gMiwgb3B0cy5oZWlnaHQgLyAyLCA1KSArIHRIZWlnaHQgLyAyO1xyXG4gICAgICAgICAgICBhcmVhID0gW3kgLSA1IC0gdFdpZHRoICsgb3B0cy53aWR0aCAvIDIsICgteCAtIDUgKyBvcHRzLmhlaWdodCAvIDIpLCB5ICsgNSArIG9wdHMud2lkdGggLyAyLCAoLXggKyB0SGVpZ2h0ICsgNSArIG9wdHMuaGVpZ2h0IC8gMildO1xyXG4gICAgICAgICAgICBhcmVhdiA9IFtvcHRzLndpZHRoIC0gKG9wdHMud2lkdGggLyAyIC0gb3B0cy5oZWlnaHQgLyAyKSAtICgteCArIHRIZWlnaHQgKyA1ICsgb3B0cy5oZWlnaHQgLyAyKSAtIDUsIChvcHRzLmhlaWdodCAvIDIgLSBvcHRzLndpZHRoIC8gMikgKyAoeSAtIDUgLSB0V2lkdGggKyBvcHRzLndpZHRoIC8gMikgLSA1LCBvcHRzLndpZHRoIC0gKG9wdHMud2lkdGggLyAyIC0gb3B0cy5oZWlnaHQgLyAyKSAtICgteCArIHRIZWlnaHQgKyA1ICsgb3B0cy5oZWlnaHQgLyAyKSArIHRIZWlnaHQsIChvcHRzLmhlaWdodCAvIDIgLSBvcHRzLndpZHRoIC8gMikgKyAoeSAtIDUgLSB0V2lkdGggKyBvcHRzLndpZHRoIC8gMikgKyB0V2lkdGggKyA1XTtcclxuICAgICAgICAgICAgaXNDb2xsaXNpb24gPSBjb2xsaXNpb25OZXcoYXJlYXYsIHBvaW50cywgb3B0cy5oZWlnaHQsIG9wdHMud2lkdGgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgeCA9IG5vcm1hbEludCgtb3B0cy53aWR0aCAvIDIsIG9wdHMud2lkdGggLyAyLCA1KSAtIHRXaWR0aCAvIDI7XHJcbiAgICAgICAgICAgIHkgPSBub3JtYWxJbnQoLW9wdHMuaGVpZ2h0IC8gMiwgb3B0cy5oZWlnaHQgLyAyLCA1KSArIHRIZWlnaHQgLyAyO1xyXG4gICAgICAgICAgICBhcmVhID0gW3ggLSA1ICsgb3B0cy53aWR0aCAvIDIsIHkgLSA1IC0gdEhlaWdodCArIG9wdHMuaGVpZ2h0IC8gMiwgeCArIHRXaWR0aCArIDUgKyBvcHRzLndpZHRoIC8gMiwgeSArIDUgKyBvcHRzLmhlaWdodCAvIDJdO1xyXG4gICAgICAgICAgICBpc0NvbGxpc2lvbiA9IGNvbGxpc2lvbk5ldyhhcmVhLCBwb2ludHMsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghaXNDb2xsaXNpb24pIGJyZWFrO1xyXG4gICAgICAgICAgaWYgKGJyZWFrbnVtID09IDEwMDApIHtcclxuICAgICAgICAgICAgYXJlYSA9IFstMTAwMCwgLTEwMDAsIC0xMDAwLCAtMTAwMF07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKGlzU3Bpbikge1xyXG4gICAgICAgICAgcG9pbnRzW2ldLmFyZWEgPSBhcmVhdjtcclxuICAgICAgICAgIHBvaW50c1tpXS5hcmVhdiA9IGFyZWE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBvaW50c1tpXS5hcmVhID0gYXJlYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcG9pbnRzW2ldLnJvdGF0ZSA9IGlzU3BpbjtcclxuICAgICAgfTtcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG4gIHJldHVybiBwb2ludHM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdXb3JkQ2xvdWREYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHdvcmRPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6ICdub3JtYWwnLFxyXG4gICAgYXV0b0NvbG9yczogdHJ1ZVxyXG4gIH0sIG9wdHMuZXh0cmEud29yZCk7XHJcbiAgaWYgKCFvcHRzLmNoYXJ0RGF0YS53b3JkQ2xvdWREYXRhKSB7XHJcbiAgICBvcHRzLmNoYXJ0RGF0YS53b3JkQ2xvdWREYXRhID0gZ2V0V29yZENsb3VkUG9pbnQob3B0cywgd29yZE9wdGlvbi50eXBlLCBjb250ZXh0KTtcclxuICB9XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLmJhY2tncm91bmQpO1xyXG4gIGNvbnRleHQucmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgY29udGV4dC5maWxsKCk7XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IHBvaW50cyA9IG9wdHMuY2hhcnREYXRhLndvcmRDbG91ZERhdGE7XHJcbiAgY29udGV4dC50cmFuc2xhdGUob3B0cy53aWR0aCAvIDIsIG9wdHMuaGVpZ2h0IC8gMik7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgaWYgKHBvaW50c1tpXS5yb3RhdGUpIHtcclxuICAgICAgY29udGV4dC5yb3RhdGUoOTAgKiBNYXRoLlBJIC8gMTgwKTtcclxuICAgIH1cclxuICAgIGxldCB0ZXh0ID0gcG9pbnRzW2ldLm5hbWU7XHJcbiAgICBsZXQgdEhlaWdodCA9IHBvaW50c1tpXS50ZXh0U2l6ZSAqIG9wdHMucGl4O1xyXG4gICAgbGV0IHRXaWR0aCA9IG1lYXN1cmVUZXh0KHRleHQsIHRIZWlnaHQsIGNvbnRleHQpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUocG9pbnRzW2ldLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHBvaW50c1tpXS5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKHRIZWlnaHQpO1xyXG4gICAgaWYgKHBvaW50c1tpXS5yb3RhdGUpIHtcclxuICAgICAgaWYgKHBvaW50c1tpXS5hcmVhdlswXSA+IDApIHtcclxuICAgICAgICBpZiAob3B0cy50b29sdGlwKSB7XHJcbiAgICAgICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IGkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5zdHJva2VUZXh0KHRleHQsIChwb2ludHNbaV0uYXJlYXZbMF0gKyA1IC0gb3B0cy53aWR0aCAvIDIpICogcHJvY2VzcyAtIHRXaWR0aCAqICgxIC0gcHJvY2VzcykgLyAyLCAocG9pbnRzW2ldLmFyZWF2WzFdICsgNSArIHRIZWlnaHQgLSBvcHRzLmhlaWdodCAvIDIpICogcHJvY2Vzcyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIChwb2ludHNbaV0uYXJlYXZbMF0gKyA1IC0gb3B0cy53aWR0aCAvIDIpICogcHJvY2VzcyAtIHRXaWR0aCAqICgxIC0gcHJvY2VzcykgLyAyLCAocG9pbnRzW2ldLmFyZWF2WzFdICsgNSArIHRIZWlnaHQgLSBvcHRzLmhlaWdodCAvIDIpICogcHJvY2Vzcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQodGV4dCwgKHBvaW50c1tpXS5hcmVhdlswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYXZbMV0gKyA1ICsgdEhlaWdodCAtIG9wdHMuaGVpZ2h0IC8gMikgKiBwcm9jZXNzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChwb2ludHNbaV0uYXJlYVswXSA+IDApIHtcclxuICAgICAgICBpZiAob3B0cy50b29sdGlwKSB7XHJcbiAgICAgICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IGkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5zdHJva2VUZXh0KHRleHQsIChwb2ludHNbaV0uYXJlYVswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYVsxXSArIDUgKyB0SGVpZ2h0IC0gb3B0cy5oZWlnaHQgLyAyKSAqIHByb2Nlc3MpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCAocG9pbnRzW2ldLmFyZWFbMF0gKyA1IC0gb3B0cy53aWR0aCAvIDIpICogcHJvY2VzcyAtIHRXaWR0aCAqICgxIC0gcHJvY2VzcykgLyAyLCAocG9pbnRzW2ldLmFyZWFbMV0gKyA1ICsgdEhlaWdodCAtIG9wdHMuaGVpZ2h0IC8gMikgKiBwcm9jZXNzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCAocG9pbnRzW2ldLmFyZWFbMF0gKyA1IC0gb3B0cy53aWR0aCAvIDIpICogcHJvY2VzcyAtIHRXaWR0aCAqICgxIC0gcHJvY2VzcykgLyAyLCAocG9pbnRzW2ldLmFyZWFbMV0gKyA1ICsgdEhlaWdodCAtIG9wdHMuaGVpZ2h0IC8gMikgKiBwcm9jZXNzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdGdW5uZWxEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IGZ1bm5lbE9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTonZnVubmVsJyxcclxuICAgIGFjdGl2ZVdpZHRoOiAxMCxcclxuICAgIGFjdGl2ZU9wYWNpdHk6IDAuMyxcclxuICAgIGJvcmRlcjogZmFsc2UsXHJcbiAgICBib3JkZXJXaWR0aDogMixcclxuICAgIGJvcmRlckNvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBmaWxsT3BhY2l0eTogMSxcclxuICAgIG1pblNpemU6IDAsXHJcbiAgICBsYWJlbEFsaWduOiAncmlnaHQnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMuZXh0cmEuZnVubmVsKTtcclxuICBsZXQgZWFjaFNwYWNpbmcgPSAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gc2VyaWVzLmxlbmd0aDtcclxuICBsZXQgY2VudGVyUG9zaXRpb24gPSB7XHJcbiAgICB4OiBvcHRzLmFyZWFbM10gKyAob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkgLyAyLFxyXG4gICAgeTogb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl1cclxuICB9O1xyXG4gIGxldCBhY3RpdmVXaWR0aCA9IGZ1bm5lbE9wdGlvbi5hY3RpdmVXaWR0aCAqIG9wdHMucGl4O1xyXG4gIGxldCByYWRpdXMgPSBNYXRoLm1pbigob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkgLyAyIC0gYWN0aXZlV2lkdGgsIChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyAyIC0gYWN0aXZlV2lkdGgpO1xyXG4gIGxldCBzZXJpZXNOZXcgPSBnZXRGdW5uZWxEYXRhUG9pbnRzKHNlcmllcywgcmFkaXVzLCBmdW5uZWxPcHRpb24sIGVhY2hTcGFjaW5nLCBwcm9jZXNzKTtcclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBjb250ZXh0LnRyYW5zbGF0ZShjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICBmdW5uZWxPcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IoZnVubmVsT3B0aW9uLmxpbmVhclR5cGUsIGZ1bm5lbE9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIGlmKGZ1bm5lbE9wdGlvbi50eXBlID09ICdweXJhbWlkJyl7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllc05ldy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoaSA9PSBzZXJpZXNOZXcubGVuZ3RoIC0xKSB7XHJcbiAgICAgICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmFjdGl2ZU9wYWNpdHkpKTtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oLWFjdGl2ZVdpZHRoLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2ldLnJhZGl1cyAtIGFjdGl2ZVdpZHRoLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2ldLnJhZGl1cyArIGFjdGl2ZVdpZHRoLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1hY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlcmllc05ld1tpXS5mdW5uZWxBcmVhID0gW2NlbnRlclBvc2l0aW9uLnggLSBzZXJpZXNOZXdbaV0ucmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55IC0gZWFjaFNwYWNpbmcgKiAoaSArIDEpLCBjZW50ZXJQb3NpdGlvbi54ICsgc2VyaWVzTmV3W2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSAtIGVhY2hTcGFjaW5nICogaV07XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aChmdW5uZWxPcHRpb24uYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShmdW5uZWxPcHRpb24uYm9yZGVyQ29sb3IpO1xyXG4gICAgICAgIHZhciBmaWxsQ29sb3IgPSBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSk7XHJcbiAgICAgICAgaWYgKGZ1bm5lbE9wdGlvbi5saW5lYXJUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcsIC1zZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLjUsIGhleFRvUmdiKGZ1bm5lbE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNOZXdbaV0ubGluZWFySW5kZXhdLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKDAsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpXS5yYWRpdXMsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpXS5yYWRpdXMsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKDAsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmJvcmRlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAob3B0cy50b29sdGlwKSB7XHJcbiAgICAgICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IGkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uYWN0aXZlT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbygwLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpXS5yYWRpdXMgLSBhY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaSArIDFdLnJhZGl1cyAtIGFjdGl2ZVdpZHRoLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaSArIDFdLnJhZGl1cyArIGFjdGl2ZVdpZHRoLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaV0ucmFkaXVzICsgYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygwLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlcmllc05ld1tpXS5mdW5uZWxBcmVhID0gW2NlbnRlclBvc2l0aW9uLnggLSBzZXJpZXNOZXdbaV0ucmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55IC0gZWFjaFNwYWNpbmcgKiAoaSArIDEpLCBjZW50ZXJQb3NpdGlvbi54ICsgc2VyaWVzTmV3W2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSAtIGVhY2hTcGFjaW5nICogaV07XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aChmdW5uZWxPcHRpb24uYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShmdW5uZWxPcHRpb24uYm9yZGVyQ29sb3IpO1xyXG4gICAgICAgIHZhciBmaWxsQ29sb3IgPSBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSk7XHJcbiAgICAgICAgaWYgKGZ1bm5lbE9wdGlvbi5saW5lYXJUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcsIC1zZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLjUsIGhleFRvUmdiKGZ1bm5lbE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNOZXdbaV0ubGluZWFySW5kZXhdLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKDAsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaV0ucmFkaXVzLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2kgKyAxXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2kgKyAxXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2ldLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oMCwgMCk7XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmJvcmRlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtZWFjaFNwYWNpbmcpXHJcbiAgICB9XHJcbiAgfWVsc2V7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtIChzZXJpZXNOZXcubGVuZ3RoIC0gMSkgKiBlYWNoU3BhY2luZyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllc05ldy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoaSA9PSBzZXJpZXNOZXcubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5hY3RpdmVPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKC1hY3RpdmVXaWR0aCAtIGZ1bm5lbE9wdGlvbi5taW5TaXplLzIsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2ldLnJhZGl1cyAtIGFjdGl2ZVdpZHRoLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaV0ucmFkaXVzICsgYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGFjdGl2ZVdpZHRoICsgZnVubmVsT3B0aW9uLm1pblNpemUvMiwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1hY3RpdmVXaWR0aCAtIGZ1bm5lbE9wdGlvbi5taW5TaXplLzIsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzTmV3W2ldLmZ1bm5lbEFyZWEgPSBbY2VudGVyUG9zaXRpb24ueCAtIHNlcmllc05ld1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZywgY2VudGVyUG9zaXRpb24ueCArIHNlcmllc05ld1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgXTtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGZ1bm5lbE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGZ1bm5lbE9wdGlvbi5ib3JkZXJDb2xvcik7XHJcbiAgICAgICAgdmFyIGZpbGxDb2xvciA9IGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZywgLXNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAuNSwgaGV4VG9SZ2IoZnVubmVsT3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc05ld1tpXS5saW5lYXJJbmRleF0sIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oMCwgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oLWZ1bm5lbE9wdGlvbi5taW5TaXplLzIsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oZnVubmVsT3B0aW9uLm1pblNpemUvMiwgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oMCwgMCk7XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmJvcmRlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAob3B0cy50b29sdGlwKSB7XHJcbiAgICAgICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IGkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uYWN0aXZlT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbygwLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpICsgMV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2ldLnJhZGl1cyAtIGFjdGl2ZVdpZHRoLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaV0ucmFkaXVzICsgYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpICsgMV0ucmFkaXVzICsgYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygwLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlcmllc05ld1tpXS5mdW5uZWxBcmVhID0gW2NlbnRlclBvc2l0aW9uLnggLSBzZXJpZXNOZXdbaV0ucmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55IC0gZWFjaFNwYWNpbmcgKiAoc2VyaWVzTmV3Lmxlbmd0aCAtIGkpLCBjZW50ZXJQb3NpdGlvbi54ICsgc2VyaWVzTmV3W2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSAtIGVhY2hTcGFjaW5nICogKHNlcmllc05ldy5sZW5ndGggLSBpIC0gMSldO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZnVubmVsT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZnVubmVsT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgICAgICB2YXIgZmlsbENvbG9yID0gaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJykge1xyXG4gICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nLCAtc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMC41LCBoZXhUb1JnYihmdW5uZWxPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzTmV3W2ldLmxpbmVhckluZGV4XSwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2kgKyAxXS5yYWRpdXMsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2kgKyAxXS5yYWRpdXMsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKDAsIDApO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgaWYgKGZ1bm5lbE9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgZWFjaFNwYWNpbmcpXHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgZHJhd0Z1bm5lbFRleHQoc2VyaWVzTmV3LCBvcHRzLCBjb250ZXh0LCBlYWNoU3BhY2luZywgZnVubmVsT3B0aW9uLmxhYmVsQWxpZ24sIGFjdGl2ZVdpZHRoLCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgfVxyXG4gIGlmIChwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3RnVubmVsQ2VudGVyVGV4dChzZXJpZXNOZXcsIG9wdHMsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCBmdW5uZWxPcHRpb24ubGFiZWxBbGlnbiwgYWN0aXZlV2lkdGgsIGNlbnRlclBvc2l0aW9uKTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIHNlcmllczogc2VyaWVzTmV3XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0Z1bm5lbFRleHQoc2VyaWVzLCBvcHRzLCBjb250ZXh0LCBlYWNoU3BhY2luZywgbGFiZWxBbGlnbiwgYWN0aXZlV2lkdGgsIGNlbnRlclBvc2l0aW9uKSB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBpdGVtID0gc2VyaWVzW2ldO1xyXG4gICAgaWYoaXRlbS5sYWJlbFNob3cgPT09IGZhbHNlKXtcclxuICAgICAgY29udGludWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RhcnRYLCBlbmRYLCBzdGFydFksIGZvbnRTaXplO1xyXG4gICAgbGV0IHRleHQgPSBpdGVtLmZvcm1hdHRlciA/IGl0ZW0uZm9ybWF0dGVyKGl0ZW0saSxzZXJpZXMsb3B0cykgOiB1dGlsLnRvRml4ZWQoaXRlbS5fcHJvcG9ydGlvbl8gKiAxMDApICsgJyUnO1xyXG4gICAgdGV4dCA9IGl0ZW0ubGFiZWxUZXh0ID8gaXRlbS5sYWJlbFRleHQgOiB0ZXh0O1xyXG4gICAgaWYgKGxhYmVsQWxpZ24gPT0gJ3JpZ2h0Jykge1xyXG4gICAgICBpZiAoaSA9PSBzZXJpZXMubGVuZ3RoIC0xKSB7XHJcbiAgICAgICAgc3RhcnRYID0gKGl0ZW0uZnVubmVsQXJlYVsyXSArIGNlbnRlclBvc2l0aW9uLngpIC8gMjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzJdICsgc2VyaWVzW2kgKyAxXS5mdW5uZWxBcmVhWzJdKSAvIDI7XHJcbiAgICAgIH1cclxuICAgICAgZW5kWCA9IHN0YXJ0WCArIGFjdGl2ZVdpZHRoICogMjtcclxuICAgICAgc3RhcnRZID0gaXRlbS5mdW5uZWxBcmVhWzFdICsgZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICBmb250U2l6ZSA9IGl0ZW0udGV4dFNpemUgKiBvcHRzLnBpeCB8fCBvcHRzLmZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaXRlbS5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0uY29sb3IpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKGVuZFgsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKGVuZFgsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQuYXJjKGVuZFgsIHN0YXJ0WSwgMiAqIG9wdHMucGl4LCAwLCAyICogTWF0aC5QSSk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS50ZXh0Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIGVuZFggKyA1LCBzdGFydFkgKyBmb250U2l6ZSAvIDIgLSAyKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIH1cclxuICAgIGlmIChsYWJlbEFsaWduID09ICdsZWZ0Jykge1xyXG4gICAgICBpZiAoaSA9PSBzZXJpZXMubGVuZ3RoIC0xKSB7XHJcbiAgICAgICAgc3RhcnRYID0gKGl0ZW0uZnVubmVsQXJlYVswXSArIGNlbnRlclBvc2l0aW9uLngpIC8gMjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzBdICsgc2VyaWVzW2kgKyAxXS5mdW5uZWxBcmVhWzBdKSAvIDI7XHJcbiAgICAgIH1cclxuICAgICAgZW5kWCA9IHN0YXJ0WCAtIGFjdGl2ZVdpZHRoICogMjtcclxuICAgICAgc3RhcnRZID0gaXRlbS5mdW5uZWxBcmVhWzFdICsgZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICBmb250U2l6ZSA9IGl0ZW0udGV4dFNpemUgKiBvcHRzLnBpeCB8fCBvcHRzLmZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaXRlbS5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0uY29sb3IpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKGVuZFgsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKGVuZFgsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQuYXJjKGVuZFgsIHN0YXJ0WSwgMiwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0udGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCBlbmRYIC0gNSAtIG1lYXN1cmVUZXh0KHRleHQsIGZvbnRTaXplLCBjb250ZXh0KSwgc3RhcnRZICsgZm9udFNpemUgLyAyIC0gMik7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3RnVubmVsQ2VudGVyVGV4dChzZXJpZXMsIG9wdHMsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCBsYWJlbEFsaWduLCBhY3RpdmVXaWR0aCwgY2VudGVyUG9zaXRpb24pIHtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBsZXQgc3RhcnRZLCBmb250U2l6ZTtcclxuICAgIGlmIChpdGVtLmNlbnRlclRleHQpIHtcclxuICAgICAgc3RhcnRZID0gaXRlbS5mdW5uZWxBcmVhWzFdICsgZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICBmb250U2l6ZSA9IGl0ZW0uY2VudGVyVGV4dFNpemUgKiBvcHRzLnBpeCB8fCBvcHRzLmZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNlbnRlclRleHRDb2xvciB8fCBcIiNGRkZGRkZcIik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQoaXRlbS5jZW50ZXJUZXh0LCBjZW50ZXJQb3NpdGlvbi54IC0gbWVhc3VyZVRleHQoaXRlbS5jZW50ZXJUZXh0LCBmb250U2l6ZSwgY29udGV4dCkgLyAyLCBzdGFydFkgKyBmb250U2l6ZSAvIDIgLSAyKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpIHtcclxuICBjb250ZXh0LmRyYXcoKTtcclxufVxyXG5cclxudmFyIFRpbWluZyA9IHtcclxuICBlYXNlSW46IGZ1bmN0aW9uIGVhc2VJbihwb3MpIHtcclxuICAgIHJldHVybiBNYXRoLnBvdyhwb3MsIDMpO1xyXG4gIH0sXHJcbiAgZWFzZU91dDogZnVuY3Rpb24gZWFzZU91dChwb3MpIHtcclxuICAgIHJldHVybiBNYXRoLnBvdyhwb3MgLSAxLCAzKSArIDE7XHJcbiAgfSxcclxuICBlYXNlSW5PdXQ6IGZ1bmN0aW9uIGVhc2VJbk91dChwb3MpIHtcclxuICAgIGlmICgocG9zIC89IDAuNSkgPCAxKSB7XHJcbiAgICAgIHJldHVybiAwLjUgKiBNYXRoLnBvdyhwb3MsIDMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDAuNSAqIChNYXRoLnBvdyhwb3MgLSAyLCAzKSArIDIpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgbGluZWFyOiBmdW5jdGlvbiBsaW5lYXIocG9zKSB7XHJcbiAgICByZXR1cm4gcG9zO1xyXG4gIH1cclxufTtcclxuXHJcbmZ1bmN0aW9uIEFuaW1hdGlvbihvcHRzKSB7XHJcbiAgdGhpcy5pc1N0b3AgPSBmYWxzZTtcclxuICBvcHRzLmR1cmF0aW9uID0gdHlwZW9mIG9wdHMuZHVyYXRpb24gPT09ICd1bmRlZmluZWQnID8gMTAwMCA6IG9wdHMuZHVyYXRpb247XHJcbiAgb3B0cy50aW1pbmcgPSBvcHRzLnRpbWluZyB8fCAnZWFzZUluT3V0JztcclxuICB2YXIgZGVsYXkgPSAxNztcclxuICBmdW5jdGlvbiBjcmVhdGVBbmltYXRpb25GcmFtZSgpIHtcclxuICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0ZXAsIGRlbGF5KSB7XHJcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgIHZhciB0aW1lU3RhbXAgPSArbmV3IERhdGUoKTtcclxuICAgICAgICAgIHN0ZXAodGltZVN0YW1wKTtcclxuICAgICAgICB9LCBkZWxheSk7XHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHJldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RlcCkge1xyXG4gICAgICAgIHN0ZXAobnVsbCk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfTtcclxuICB2YXIgYW5pbWF0aW9uRnJhbWUgPSBjcmVhdGVBbmltYXRpb25GcmFtZSgpO1xyXG4gIHZhciBzdGFydFRpbWVTdGFtcCA9IG51bGw7XHJcbiAgdmFyIF9zdGVwID0gZnVuY3Rpb24gc3RlcCh0aW1lc3RhbXApIHtcclxuICAgIGlmICh0aW1lc3RhbXAgPT09IG51bGwgfHwgdGhpcy5pc1N0b3AgPT09IHRydWUpIHtcclxuICAgICAgb3B0cy5vblByb2Nlc3MgJiYgb3B0cy5vblByb2Nlc3MoMSk7XHJcbiAgICAgIG9wdHMub25BbmltYXRpb25GaW5pc2ggJiYgb3B0cy5vbkFuaW1hdGlvbkZpbmlzaCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoc3RhcnRUaW1lU3RhbXAgPT09IG51bGwpIHtcclxuICAgICAgc3RhcnRUaW1lU3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICB9XHJcbiAgICBpZiAodGltZXN0YW1wIC0gc3RhcnRUaW1lU3RhbXAgPCBvcHRzLmR1cmF0aW9uKSB7XHJcbiAgICAgIHZhciBwcm9jZXNzID0gKHRpbWVzdGFtcCAtIHN0YXJ0VGltZVN0YW1wKSAvIG9wdHMuZHVyYXRpb247XHJcbiAgICAgIHZhciB0aW1pbmdGdW5jdGlvbiA9IFRpbWluZ1tvcHRzLnRpbWluZ107XHJcbiAgICAgIHByb2Nlc3MgPSB0aW1pbmdGdW5jdGlvbihwcm9jZXNzKTtcclxuICAgICAgb3B0cy5vblByb2Nlc3MgJiYgb3B0cy5vblByb2Nlc3MocHJvY2Vzcyk7XHJcbiAgICAgIGFuaW1hdGlvbkZyYW1lKF9zdGVwLCBkZWxheSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvcHRzLm9uUHJvY2VzcyAmJiBvcHRzLm9uUHJvY2VzcygxKTtcclxuICAgICAgb3B0cy5vbkFuaW1hdGlvbkZpbmlzaCAmJiBvcHRzLm9uQW5pbWF0aW9uRmluaXNoKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBfc3RlcCA9IF9zdGVwLmJpbmQodGhpcyk7XHJcbiAgYW5pbWF0aW9uRnJhbWUoX3N0ZXAsIGRlbGF5KTtcclxufVxyXG5cclxuQW5pbWF0aW9uLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7XHJcbiAgdGhpcy5pc1N0b3AgPSB0cnVlO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gZHJhd0NoYXJ0cyh0eXBlLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gIHZhciBzZXJpZXMgPSBvcHRzLnNlcmllcztcclxuICAvL+WFvOWuuUVDaGFydHPppbzlm77nsbvmlbDmja7moLzlvI9cclxuICBpZiAodHlwZSA9PT0gJ3BpZScgfHwgdHlwZSA9PT0gJ3JpbmcnIHx8IHR5cGUgPT09ICdtb3VudCcgfHwgdHlwZSA9PT0gJ3Jvc2UnIHx8IHR5cGUgPT09ICdmdW5uZWwnKSB7XHJcbiAgICBzZXJpZXMgPSBmaXhQaWVTZXJpZXMoc2VyaWVzLCBvcHRzLCBjb25maWcpO1xyXG4gIH1cclxuICB2YXIgY2F0ZWdvcmllcyA9IG9wdHMuY2F0ZWdvcmllcztcclxuICBpZiAodHlwZSA9PT0gJ21vdW50Jykge1xyXG4gICAgY2F0ZWdvcmllcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBzZXJpZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgaWYoc2VyaWVzW2pdLnNob3cgIT09IGZhbHNlKSBjYXRlZ29yaWVzLnB1c2goc2VyaWVzW2pdLm5hbWUpXHJcbiAgICB9XHJcbiAgICBvcHRzLmNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzO1xyXG4gIH1cclxuICBzZXJpZXMgPSBmaWxsU2VyaWVzKHNlcmllcywgb3B0cywgY29uZmlnKTtcclxuICB2YXIgZHVyYXRpb24gPSBvcHRzLmFuaW1hdGlvbiA/IG9wdHMuZHVyYXRpb24gOiAwO1xyXG4gIF90aGlzLmFuaW1hdGlvbkluc3RhbmNlICYmIF90aGlzLmFuaW1hdGlvbkluc3RhbmNlLnN0b3AoKTtcclxuICB2YXIgc2VyaWVzTUEgPSBudWxsO1xyXG4gIGlmICh0eXBlID09ICdjYW5kbGUnKSB7XHJcbiAgICBsZXQgYXZlcmFnZSA9IGFzc2lnbih7fSwgb3B0cy5leHRyYS5jYW5kbGUuYXZlcmFnZSk7XHJcbiAgICBpZiAoYXZlcmFnZS5zaG93KSB7XHJcbiAgICAgIHNlcmllc01BID0gY2FsQ2FuZGxlTUEoYXZlcmFnZS5kYXksIGF2ZXJhZ2UubmFtZSwgYXZlcmFnZS5jb2xvciwgc2VyaWVzWzBdLmRhdGEpO1xyXG4gICAgICBzZXJpZXNNQSA9IGZpbGxTZXJpZXMoc2VyaWVzTUEsIG9wdHMsIGNvbmZpZyk7XHJcbiAgICAgIG9wdHMuc2VyaWVzTUEgPSBzZXJpZXNNQTtcclxuICAgIH0gZWxzZSBpZiAob3B0cy5zZXJpZXNNQSkge1xyXG4gICAgICBzZXJpZXNNQSA9IG9wdHMuc2VyaWVzTUEgPSBmaWxsU2VyaWVzKG9wdHMuc2VyaWVzTUEsIG9wdHMsIGNvbmZpZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXJpZXNNQSA9IHNlcmllcztcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgc2VyaWVzTUEgPSBzZXJpZXM7XHJcbiAgfVxyXG4gIC8qIOi/h+a7pOaOiXNob3c9ZmFsc2XnmoRzZXJpZXMgKi9cclxuICBvcHRzLl9zZXJpZXNfID0gc2VyaWVzID0gZmlsdGVyU2VyaWVzKHNlcmllcyk7XHJcbiAgLy/ph43mlrDorqHnrpflm77ooajljLrln59cclxuICBvcHRzLmFyZWEgPSBuZXcgQXJyYXkoNCk7XHJcbiAgLy/lpI3kvY3nu5jlm77ljLrln59cclxuICBmb3IgKGxldCBqID0gMDsgaiA8IDQ7IGorKykge1xyXG4gICAgb3B0cy5hcmVhW2pdID0gb3B0cy5wYWRkaW5nW2pdICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIC8v6YCa6L+H6K6h566X5LiJ5aSn5Yy65Z+f77ya5Zu+5L6L44CBWOi9tOOAgVnovbTnmoTlpKflsI/vvIznoa7lrprnu5jlm77ljLrln59cclxuICB2YXIgX2NhbExlZ2VuZERhdGEgPSBjYWxMZWdlbmREYXRhKHNlcmllc01BLCBvcHRzLCBjb25maWcsIG9wdHMuY2hhcnREYXRhLCBjb250ZXh0KSxcclxuICAgIGxlZ2VuZEhlaWdodCA9IF9jYWxMZWdlbmREYXRhLmFyZWEud2hvbGVIZWlnaHQsXHJcbiAgICBsZWdlbmRXaWR0aCA9IF9jYWxMZWdlbmREYXRhLmFyZWEud2hvbGVXaWR0aDtcclxuXHJcbiAgc3dpdGNoIChvcHRzLmxlZ2VuZC5wb3NpdGlvbikge1xyXG4gICAgY2FzZSAndG9wJzpcclxuICAgICAgb3B0cy5hcmVhWzBdICs9IGxlZ2VuZEhlaWdodDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICBvcHRzLmFyZWFbMl0gKz0gbGVnZW5kSGVpZ2h0O1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICBvcHRzLmFyZWFbM10gKz0gbGVnZW5kV2lkdGg7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICBvcHRzLmFyZWFbMV0gKz0gbGVnZW5kV2lkdGg7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxuXHJcbiAgbGV0IF9jYWxZQXhpc0RhdGEgPSB7fSxcclxuICAgIHlBeGlzV2lkdGggPSAwO1xyXG4gIGlmIChvcHRzLnR5cGUgPT09ICdsaW5lJyB8fCBvcHRzLnR5cGUgPT09ICdjb2x1bW4nfHwgb3B0cy50eXBlID09PSAnbW91bnQnIHx8IG9wdHMudHlwZSA9PT0gJ2FyZWEnIHx8IG9wdHMudHlwZSA9PT0gJ21peCcgfHwgb3B0cy50eXBlID09PSAnY2FuZGxlJyB8fCBvcHRzLnR5cGUgPT09ICdzY2F0dGVyJyAgfHwgb3B0cy50eXBlID09PSAnYnViYmxlJyB8fCBvcHRzLnR5cGUgPT09ICdiYXInKSB7XHJcbiAgICAgIF9jYWxZQXhpc0RhdGEgPSBjYWxZQXhpc0RhdGEoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICB5QXhpc1dpZHRoID0gX2NhbFlBeGlzRGF0YS55QXhpc1dpZHRoO1xyXG4gICAgLy/lpoLmnpzmmL7npLpZ6L205qCH6aKYXHJcbiAgICBpZiAob3B0cy55QXhpcy5zaG93VGl0bGUpIHtcclxuICAgICAgbGV0IG1heFRpdGxlSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRzLnlBeGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBtYXhUaXRsZUhlaWdodCA9IE1hdGgubWF4KG1heFRpdGxlSGVpZ2h0LCBvcHRzLnlBeGlzLmRhdGFbaV0udGl0bGVGb250U2l6ZSA/IG9wdHMueUF4aXMuZGF0YVtpXS50aXRsZUZvbnRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemUpXHJcbiAgICAgIH1cclxuICAgICAgb3B0cy5hcmVhWzBdICs9IG1heFRpdGxlSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgbGV0IHJpZ2h0SW5kZXggPSAwLFxyXG4gICAgICBsZWZ0SW5kZXggPSAwO1xyXG4gICAgLy/orqHnrpfkuLvnu5jlm77ljLrln5/lt6blj7PkvY3nva5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeUF4aXNXaWR0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoeUF4aXNXaWR0aFtpXS5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcclxuICAgICAgICBpZiAobGVmdEluZGV4ID4gMCkge1xyXG4gICAgICAgICAgb3B0cy5hcmVhWzNdICs9IHlBeGlzV2lkdGhbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0cy5hcmVhWzNdICs9IHlBeGlzV2lkdGhbaV0ud2lkdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxlZnRJbmRleCArPSAxO1xyXG4gICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGhbaV0ucG9zaXRpb24gPT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGlmIChyaWdodEluZGV4ID4gMCkge1xyXG4gICAgICAgICAgb3B0cy5hcmVhWzFdICs9IHlBeGlzV2lkdGhbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0cy5hcmVhWzFdICs9IHlBeGlzV2lkdGhbaV0ud2lkdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJpZ2h0SW5kZXggKz0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25maWcueUF4aXNXaWR0aCA9IHlBeGlzV2lkdGg7XHJcbiAgfVxyXG4gIG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YSA9IF9jYWxZQXhpc0RhdGE7XHJcblxyXG4gIGlmIChvcHRzLmNhdGVnb3JpZXMgJiYgb3B0cy5jYXRlZ29yaWVzLmxlbmd0aCAmJiBvcHRzLnR5cGUgIT09ICdyYWRhcicgJiYgb3B0cy50eXBlICE9PSAnZ2F1Z2UnICYmIG9wdHMudHlwZSAhPT0gJ2JhcicpIHtcclxuICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSA9IGdldFhBeGlzUG9pbnRzKG9wdHMuY2F0ZWdvcmllcywgb3B0cywgY29uZmlnKTtcclxuICAgIGxldCBfY2FsQ2F0ZWdvcmllc0RhdGEgPSBjYWxDYXRlZ29yaWVzRGF0YShvcHRzLmNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLmVhY2hTcGFjaW5nLCBjb250ZXh0KSxcclxuICAgICAgeEF4aXNIZWlnaHQgPSBfY2FsQ2F0ZWdvcmllc0RhdGEueEF4aXNIZWlnaHQsXHJcbiAgICAgIGFuZ2xlID0gX2NhbENhdGVnb3JpZXNEYXRhLmFuZ2xlO1xyXG4gICAgY29uZmlnLnhBeGlzSGVpZ2h0ID0geEF4aXNIZWlnaHQ7XHJcbiAgICBjb25maWcuX3hBeGlzVGV4dEFuZ2xlXyA9IGFuZ2xlO1xyXG4gICAgb3B0cy5hcmVhWzJdICs9IHhBeGlzSGVpZ2h0O1xyXG4gICAgb3B0cy5jaGFydERhdGEuY2F0ZWdvcmllc0RhdGEgPSBfY2FsQ2F0ZWdvcmllc0RhdGE7XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChvcHRzLnR5cGUgPT09ICdsaW5lJyB8fCBvcHRzLnR5cGUgPT09ICdhcmVhJyB8fCBvcHRzLnR5cGUgPT09ICdzY2F0dGVyJyB8fCBvcHRzLnR5cGUgPT09ICdidWJibGUnIHx8IG9wdHMudHlwZSA9PT0gJ2JhcicpIHtcclxuICAgICAgb3B0cy5jaGFydERhdGEueEF4aXNEYXRhID0gY2FsWEF4aXNEYXRhKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgY2F0ZWdvcmllcyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5yYW5nZXNGb3JtYXQ7XHJcbiAgICAgIGxldCBfY2FsQ2F0ZWdvcmllc0RhdGEgPSBjYWxDYXRlZ29yaWVzRGF0YShjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5lYWNoU3BhY2luZywgY29udGV4dCksXHJcbiAgICAgICAgeEF4aXNIZWlnaHQgPSBfY2FsQ2F0ZWdvcmllc0RhdGEueEF4aXNIZWlnaHQsXHJcbiAgICAgICAgYW5nbGUgPSBfY2FsQ2F0ZWdvcmllc0RhdGEuYW5nbGU7XHJcbiAgICAgIGNvbmZpZy54QXhpc0hlaWdodCA9IHhBeGlzSGVpZ2h0O1xyXG4gICAgICBjb25maWcuX3hBeGlzVGV4dEFuZ2xlXyA9IGFuZ2xlO1xyXG4gICAgICBvcHRzLmFyZWFbMl0gKz0geEF4aXNIZWlnaHQ7XHJcbiAgICAgIG9wdHMuY2hhcnREYXRhLmNhdGVnb3JpZXNEYXRhID0gX2NhbENhdGVnb3JpZXNEYXRhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb3B0cy5jaGFydERhdGEueEF4aXNEYXRhID0ge1xyXG4gICAgICAgIHhBeGlzUG9pbnRzOiBbXVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy/orqHnrpflj7Plr7npvZDlgY/np7vot53nprtcclxuICBpZiAob3B0cy5lbmFibGVTY3JvbGwgJiYgb3B0cy54QXhpcy5zY3JvbGxBbGlnbiA9PSAncmlnaHQnICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICBsZXQgb2Zmc2V0TGVmdCA9IDAsXHJcbiAgICAgIHhBeGlzUG9pbnRzID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgICBzdGFydFggPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuc3RhcnRYLFxyXG4gICAgICBlbmRYID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLmVuZFgsXHJcbiAgICAgIGVhY2hTcGFjaW5nID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLmVhY2hTcGFjaW5nO1xyXG4gICAgbGV0IHRvdGFsV2lkdGggPSBlYWNoU3BhY2luZyAqICh4QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICAgIGxldCBzY3JlZW5XaWR0aCA9IGVuZFggLSBzdGFydFg7XHJcbiAgICBvZmZzZXRMZWZ0ID0gc2NyZWVuV2lkdGggLSB0b3RhbFdpZHRoO1xyXG4gICAgX3RoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQgPSBvZmZzZXRMZWZ0O1xyXG4gICAgX3RoaXMuc2Nyb2xsT3B0aW9uLnN0YXJ0VG91Y2hYID0gb2Zmc2V0TGVmdDtcclxuICAgIF90aGlzLnNjcm9sbE9wdGlvbi5kaXN0YW5jZSA9IDA7XHJcbiAgICBfdGhpcy5zY3JvbGxPcHRpb24ubGFzdE1vdmVUaW1lID0gMDtcclxuICAgIG9wdHMuX3Njcm9sbERpc3RhbmNlXyA9IG9mZnNldExlZnQ7XHJcbiAgfVxyXG5cclxuICBpZiAodHlwZSA9PT0gJ3BpZScgfHwgdHlwZSA9PT0gJ3JpbmcnIHx8IHR5cGUgPT09ICdyb3NlJykge1xyXG4gICAgY29uZmlnLl9waWVUZXh0TWF4TGVuZ3RoXyA9IG9wdHMuZGF0YUxhYmVsID09PSBmYWxzZSA/IDAgOiBnZXRQaWVUZXh0TWF4TGVuZ3RoKHNlcmllc01BLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gIH1cclxuICBcclxuICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgIGNhc2UgJ3dvcmQnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbihwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdXb3JkQ2xvdWREYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ21hcCc6XHJcbiAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgZHJhd01hcERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgfSw1MClcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdmdW5uZWwnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbihwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLmZ1bm5lbERhdGEgPSBkcmF3RnVubmVsRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdsaW5lJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdMaW5lRGF0YVBvaW50cyA9IGRyYXdMaW5lRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdMaW5lRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdMaW5lRGF0YVBvaW50cy5jYWxQb2ludHMsXHJcbiAgICAgICAgICAgIGVhY2hTcGFjaW5nID0gX2RyYXdMaW5lRGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdzY2F0dGVyJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdTY2F0dGVyRGF0YVBvaW50cyA9IGRyYXdTY2F0dGVyRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdTY2F0dGVyRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdTY2F0dGVyRGF0YVBvaW50cy5jYWxQb2ludHMsXHJcbiAgICAgICAgICAgIGVhY2hTcGFjaW5nID0gX2RyYXdTY2F0dGVyRGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdidWJibGUnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WUF4aXNHcmlkKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd0J1YmJsZURhdGFQb2ludHMgPSBkcmF3QnViYmxlRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdCdWJibGVEYXRhUG9pbnRzLnhBeGlzUG9pbnRzLFxyXG4gICAgICAgICAgICBjYWxQb2ludHMgPSBfZHJhd0J1YmJsZURhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3QnViYmxlRGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdtaXgnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WUF4aXNHcmlkKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd01peERhdGFQb2ludHMgPSBkcmF3TWl4RGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdNaXhEYXRhUG9pbnRzLnhBeGlzUG9pbnRzLFxyXG4gICAgICAgICAgICBjYWxQb2ludHMgPSBfZHJhd01peERhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3TWl4RGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdjb2x1bW4nOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WUF4aXNHcmlkKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd0NvbHVtbkRhdGFQb2ludHMgPSBkcmF3Q29sdW1uRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdDb2x1bW5EYXRhUG9pbnRzLnhBeGlzUG9pbnRzLFxyXG4gICAgICAgICAgICBjYWxQb2ludHMgPSBfZHJhd0NvbHVtbkRhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3Q29sdW1uRGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdtb3VudCc6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGRyYXdYQXhpcyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgdmFyIF9kcmF3TW91bnREYXRhUG9pbnRzID0gZHJhd01vdW50RGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdNb3VudERhdGFQb2ludHMueEF4aXNQb2ludHMsXHJcbiAgICAgICAgICAgIGNhbFBvaW50cyA9IF9kcmF3TW91bnREYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd01vdW50RGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdiYXInOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd0JhckRhdGFQb2ludHMgPSBkcmF3QmFyRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHlBeGlzUG9pbnRzID0gX2RyYXdCYXJEYXRhUG9pbnRzLnlBeGlzUG9pbnRzLFxyXG4gICAgICAgICAgICBjYWxQb2ludHMgPSBfZHJhd0JhckRhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3QmFyRGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnlBeGlzUG9pbnRzID0geUF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS54QXhpc1BvaW50cztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLmNhbFBvaW50cyA9IGNhbFBvaW50cztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLmVhY2hTcGFjaW5nID0gZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBkcmF3WUF4aXMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMuZW5hYmxlTWFya0xpbmUgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgICAgICAgICAgZHJhd01hcmtMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcywgZWFjaFNwYWNpbmcsIHlBeGlzUG9pbnRzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2FyZWEnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WUF4aXNHcmlkKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd0FyZWFEYXRhUG9pbnRzID0gZHJhd0FyZWFEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKSxcclxuICAgICAgICAgICAgeEF4aXNQb2ludHMgPSBfZHJhd0FyZWFEYXRhUG9pbnRzLnhBeGlzUG9pbnRzLFxyXG4gICAgICAgICAgICBjYWxQb2ludHMgPSBfZHJhd0FyZWFEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0FyZWFEYXRhUG9pbnRzLmVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEueEF4aXNQb2ludHMgPSB4QXhpc1BvaW50cztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLmNhbFBvaW50cyA9IGNhbFBvaW50cztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLmVhY2hTcGFjaW5nID0gZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBkcmF3WUF4aXMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMuZW5hYmxlTWFya0xpbmUgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgICAgICAgICAgZHJhd01hcmtMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcywgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3JpbmcnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5waWVEYXRhID0gZHJhd1BpZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAncGllJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEucGllRGF0YSA9IGRyYXdQaWVEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3Jvc2UnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5waWVEYXRhID0gZHJhd1Jvc2VEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3JhZGFyJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEucmFkYXJEYXRhID0gZHJhd1JhZGFyRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdhcmNiYXInOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5hcmNiYXJEYXRhID0gZHJhd0FyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnZ2F1Z2UnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5nYXVnZURhdGEgPSBkcmF3R2F1Z2VEYXRhUG9pbnRzKGNhdGVnb3JpZXMsIHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2NhbmRsZSc6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGRyYXdYQXhpcyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgdmFyIF9kcmF3Q2FuZGxlRGF0YVBvaW50cyA9IGRyYXdDYW5kbGVEYXRhUG9pbnRzKHNlcmllcywgc2VyaWVzTUEsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdDYW5kbGVEYXRhUG9pbnRzLnhBeGlzUG9pbnRzLFxyXG4gICAgICAgICAgICBjYWxQb2ludHMgPSBfZHJhd0NhbmRsZURhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3Q2FuZGxlRGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHNlcmllc01BKSB7XHJcbiAgICAgICAgICAgIGRyYXdMZWdlbmQoc2VyaWVzTUEsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB1Q2hhcnRzRXZlbnQoKSB7XHJcbiAgdGhpcy5ldmVudHMgPSB7fTtcclxufVxyXG5cclxudUNoYXJ0c0V2ZW50LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcclxuICB0aGlzLmV2ZW50c1t0eXBlXSA9IHRoaXMuZXZlbnRzW3R5cGVdIHx8IFtdO1xyXG4gIHRoaXMuZXZlbnRzW3R5cGVdLnB1c2gobGlzdGVuZXIpO1xyXG59O1xyXG5cclxudUNoYXJ0c0V2ZW50LnByb3RvdHlwZS5kZWxFdmVudExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSkge1xyXG4gIHRoaXMuZXZlbnRzW3R5cGVdID0gW107XHJcbn07XHJcblxyXG51Q2hhcnRzRXZlbnQucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbigpIHtcclxuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xyXG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcclxuICB9XHJcbiAgdmFyIHR5cGUgPSBhcmdzWzBdO1xyXG4gIHZhciBwYXJhbXMgPSBhcmdzLnNsaWNlKDEpO1xyXG4gIGlmICghIXRoaXMuZXZlbnRzW3R5cGVdKSB7XHJcbiAgICB0aGlzLmV2ZW50c1t0eXBlXS5mb3JFYWNoKGZ1bmN0aW9uKGxpc3RlbmVyKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGlzdGVuZXIuYXBwbHkobnVsbCwgcGFyYW1zKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZygnW3VDaGFydHNdICcrZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufTtcclxuXHJcbnZhciB1Q2hhcnRzID0gZnVuY3Rpb24gdUNoYXJ0cyhvcHRzKSB7XHJcbiAgb3B0cy5waXggPSBvcHRzLnBpeGVsUmF0aW8gPyBvcHRzLnBpeGVsUmF0aW8gOiAxO1xyXG4gIG9wdHMuZm9udFNpemUgPSBvcHRzLmZvbnRTaXplID8gb3B0cy5mb250U2l6ZSA6IDEzO1xyXG4gIG9wdHMuZm9udENvbG9yID0gb3B0cy5mb250Q29sb3IgPyBvcHRzLmZvbnRDb2xvciA6IGNvbmZpZy5mb250Q29sb3I7XHJcbiAgaWYgKG9wdHMuYmFja2dyb3VuZCA9PSBcIlwiIHx8IG9wdHMuYmFja2dyb3VuZCA9PSBcIm5vbmVcIikge1xyXG4gICAgb3B0cy5iYWNrZ3JvdW5kID0gXCIjRkZGRkZGXCJcclxuICB9XHJcbiAgb3B0cy50aXRsZSA9IGFzc2lnbih7fSwgb3B0cy50aXRsZSk7XHJcbiAgb3B0cy5zdWJ0aXRsZSA9IGFzc2lnbih7fSwgb3B0cy5zdWJ0aXRsZSk7XHJcbiAgb3B0cy5kdXJhdGlvbiA9IG9wdHMuZHVyYXRpb24gPyBvcHRzLmR1cmF0aW9uIDogMTAwMDtcclxuICBvcHRzLnlBeGlzID0gYXNzaWduKHt9LCB7XHJcbiAgICBkYXRhOiBbXSxcclxuICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICBkaXNhYmxlR3JpZDogZmFsc2UsXHJcbiAgICBncmlkU2V0OiAnbnVtYmVyJyxcclxuICAgIHNwbGl0TnVtYmVyOiA1LFxyXG4gICAgZ3JpZFR5cGU6ICdzb2xpZCcsXHJcbiAgICBkYXNoTGVuZ3RoOiA0ICogb3B0cy5waXgsXHJcbiAgICBncmlkQ29sb3I6ICcjY2NjY2NjJyxcclxuICAgIHBhZGRpbmc6IDEwLFxyXG4gICAgZm9udENvbG9yOiAnIzY2NjY2NidcclxuICB9LCBvcHRzLnlBeGlzKTtcclxuICBvcHRzLnhBeGlzID0gYXNzaWduKHt9LCB7XHJcbiAgICByb3RhdGVMYWJlbDogZmFsc2UsXHJcbiAgICByb3RhdGVBbmdsZTo0NSxcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgIGRpc2FibGVHcmlkOiBmYWxzZSxcclxuICAgIHNwbGl0TnVtYmVyOiA1LFxyXG4gICAgY2FsaWJyYXRpb246ZmFsc2UsXHJcbiAgICBncmlkVHlwZTogJ3NvbGlkJyxcclxuICAgIGRhc2hMZW5ndGg6IDQsXHJcbiAgICBzY3JvbGxBbGlnbjogJ2xlZnQnLFxyXG4gICAgYm91bmRhcnlHYXA6ICdjZW50ZXInLFxyXG4gICAgYXhpc0xpbmU6IHRydWUsXHJcbiAgICBheGlzTGluZUNvbG9yOiAnI2NjY2NjYydcclxuICB9LCBvcHRzLnhBeGlzKTtcclxuICBvcHRzLnhBeGlzLnNjcm9sbFBvc2l0aW9uID0gb3B0cy54QXhpcy5zY3JvbGxBbGlnbjtcclxuICBvcHRzLmxlZ2VuZCA9IGFzc2lnbih7fSwge1xyXG4gICAgc2hvdzogdHJ1ZSxcclxuICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgIGZsb2F0OiAnY2VudGVyJyxcclxuICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMCknLFxyXG4gICAgYm9yZGVyQ29sb3I6ICdyZ2JhKDAsMCwwLDApJyxcclxuICAgIGJvcmRlcldpZHRoOiAwLFxyXG4gICAgcGFkZGluZzogNSxcclxuICAgIG1hcmdpbjogNSxcclxuICAgIGl0ZW1HYXA6IDEwLFxyXG4gICAgZm9udFNpemU6IG9wdHMuZm9udFNpemUsXHJcbiAgICBsaW5lSGVpZ2h0OiBvcHRzLmZvbnRTaXplLFxyXG4gICAgZm9udENvbG9yOiBvcHRzLmZvbnRDb2xvcixcclxuICAgIGZvcm1hdHRlcjoge30sXHJcbiAgICBoaWRkZW5Db2xvcjogJyNDRUNFQ0UnXHJcbiAgfSwgb3B0cy5sZWdlbmQpO1xyXG4gIG9wdHMuZXh0cmEgPSBhc3NpZ24oe30sIG9wdHMuZXh0cmEpO1xyXG4gIG9wdHMucm90YXRlID0gb3B0cy5yb3RhdGUgPyB0cnVlIDogZmFsc2U7XHJcbiAgb3B0cy5hbmltYXRpb24gPSBvcHRzLmFuaW1hdGlvbiA/IHRydWUgOiBmYWxzZTtcclxuICBvcHRzLnJvdGF0ZSA9IG9wdHMucm90YXRlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIG9wdHMuY2FudmFzMmQgPSBvcHRzLmNhbnZhczJkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIFxyXG4gIGxldCBjb25maWckJDEgPSBhc3NpZ24oe30sIGNvbmZpZyk7XHJcbiAgY29uZmlnJCQxLmNvbG9yID0gb3B0cy5jb2xvciA/IG9wdHMuY29sb3IgOiBjb25maWckJDEuY29sb3I7XHJcbiAgaWYgKG9wdHMudHlwZSA9PSAncGllJykge1xyXG4gICAgY29uZmlnJCQxLnBpZUNoYXJ0TGluZVBhZGRpbmcgPSBvcHRzLmRhdGFMYWJlbCA9PT0gZmFsc2UgPyAwIDogb3B0cy5leHRyYS5waWUubGFiZWxXaWR0aCAqIG9wdHMucGl4IHx8IGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnR5cGUgPT0gJ3JpbmcnKSB7XHJcbiAgICBjb25maWckJDEucGllQ2hhcnRMaW5lUGFkZGluZyA9IG9wdHMuZGF0YUxhYmVsID09PSBmYWxzZSA/IDAgOiBvcHRzLmV4dHJhLnJpbmcubGFiZWxXaWR0aCAqIG9wdHMucGl4IHx8IGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnR5cGUgPT0gJ3Jvc2UnKSB7XHJcbiAgICBjb25maWckJDEucGllQ2hhcnRMaW5lUGFkZGluZyA9IG9wdHMuZGF0YUxhYmVsID09PSBmYWxzZSA/IDAgOiBvcHRzLmV4dHJhLnJvc2UubGFiZWxXaWR0aCAqIG9wdHMucGl4IHx8IGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGNvbmZpZyQkMS5waWVDaGFydFRleHRQYWRkaW5nID0gb3B0cy5kYXRhTGFiZWwgPT09IGZhbHNlID8gMCA6IGNvbmZpZyQkMS5waWVDaGFydFRleHRQYWRkaW5nICogb3B0cy5waXg7XHJcblxyXG4gIC8v5bGP5bmV5peL6L2sXHJcbiAgY29uZmlnJCQxLnJvdGF0ZSA9IG9wdHMucm90YXRlO1xyXG4gIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgbGV0IHRlbXBXaWR0aCA9IG9wdHMud2lkdGg7XHJcbiAgICBsZXQgdGVtcEhlaWdodCA9IG9wdHMuaGVpZ2h0O1xyXG4gICAgb3B0cy53aWR0aCA9IHRlbXBIZWlnaHQ7XHJcbiAgICBvcHRzLmhlaWdodCA9IHRlbXBXaWR0aDtcclxuICB9XHJcblxyXG4gIC8v6YCC6YWN6auY5YiG5bGPXHJcbiAgb3B0cy5wYWRkaW5nID0gb3B0cy5wYWRkaW5nID8gb3B0cy5wYWRkaW5nIDogY29uZmlnJCQxLnBhZGRpbmc7XHJcbiAgY29uZmlnJCQxLnlBeGlzV2lkdGggPSBjb25maWcueUF4aXNXaWR0aCAqIG9wdHMucGl4O1xyXG4gIGNvbmZpZyQkMS54QXhpc0hlaWdodCA9IGNvbmZpZy54QXhpc0hlaWdodCAqIG9wdHMucGl4O1xyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCAmJiBvcHRzLnhBeGlzLnNjcm9sbFNob3cpIHtcclxuICAgIGNvbmZpZyQkMS54QXhpc0hlaWdodCArPSA2ICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGNvbmZpZyQkMS5mb250U2l6ZSA9IG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICBjb25maWckJDEudGl0bGVGb250U2l6ZSA9IGNvbmZpZy50aXRsZUZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgY29uZmlnJCQxLnN1YnRpdGxlRm9udFNpemUgPSBjb25maWcuc3VidGl0bGVGb250U2l6ZSAqIG9wdHMucGl4O1xyXG4gIGNvbmZpZyQkMS50b29sVGlwUGFkZGluZyA9IGNvbmZpZy50b29sVGlwUGFkZGluZyAqIG9wdHMucGl4O1xyXG4gIGNvbmZpZyQkMS50b29sVGlwTGluZUhlaWdodCA9IGNvbmZpZy50b29sVGlwTGluZUhlaWdodCAqIG9wdHMucGl4O1xyXG4gIGlmKCFvcHRzLmNvbnRleHQpe1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdbdUNoYXJ0c10g5pyq6I635Y+W5YiwY29udGV4dO+8geazqOaEj++8mnYyLjDniYjmnKzlkI7vvIzpnIDopoHoh6rooYzojrflj5ZjYW52YXPnmoTnu5jlm77kuIrkuIvmloflubbkvKDlhaVvcHRzLmNvbnRleHTvvIEnKTtcclxuICB9XHJcbiAgdGhpcy5jb250ZXh0ID0gb3B0cy5jb250ZXh0O1xyXG4gIGlmICghdGhpcy5jb250ZXh0LnNldFRleHRBbGlnbikge1xyXG4gICAgdGhpcy5jb250ZXh0LnNldFN0cm9rZVN0eWxlID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdHJva2VTdHlsZSA9IGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRleHQuc2V0TGluZVdpZHRoID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5saW5lV2lkdGggPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldExpbmVDYXAgPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxpbmVDYXAgPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldEZvbnRTaXplID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb250ID0gZSArIFwicHggc2Fucy1zZXJpZlwiO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldEZpbGxTdHlsZSA9IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsbFN0eWxlID0gZTtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGV4dC5zZXRUZXh0QWxpZ24gPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRleHRBbGlnbiA9IGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRleHQuZHJhdyA9IGZ1bmN0aW9uKCkge31cclxuICB9XHJcbiAgLy/lhbzlrrlOVlVFc2V0TGluZURhc2hcclxuICBpZighdGhpcy5jb250ZXh0LnNldExpbmVEYXNoKXtcclxuICAgIHRoaXMuY29udGV4dC5zZXRMaW5lRGFzaCA9IGZ1bmN0aW9uKGUpIHt9XHJcbiAgfVxyXG4gIG9wdHMuY2hhcnREYXRhID0ge307XHJcbiAgdGhpcy51ZXZlbnQgPSBuZXcgdUNoYXJ0c0V2ZW50KCk7XHJcbiAgdGhpcy5zY3JvbGxPcHRpb24gPSB7XHJcbiAgICBjdXJyZW50T2Zmc2V0OiAwLFxyXG4gICAgc3RhcnRUb3VjaFg6IDAsXHJcbiAgICBkaXN0YW5jZTogMCxcclxuICAgIGxhc3RNb3ZlVGltZTogMFxyXG4gIH07XHJcbiAgdGhpcy5vcHRzID0gb3B0cztcclxuICB0aGlzLmNvbmZpZyA9IGNvbmZpZyQkMTtcclxuICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCBjb25maWckJDEsIHRoaXMuY29udGV4dCk7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS51cGRhdGVEYXRhID0gZnVuY3Rpb24oKSB7XHJcbiAgbGV0IGRhdGEgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xyXG4gIHRoaXMub3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCBkYXRhKTtcclxuICB0aGlzLm9wdHMudXBkYXRlRGF0YSA9IHRydWU7XHJcbiAgbGV0IHNjcm9sbFBvc2l0aW9uID0gZGF0YS5zY3JvbGxQb3NpdGlvbiB8fCAnY3VycmVudCc7XHJcbiAgc3dpdGNoIChzY3JvbGxQb3NpdGlvbikge1xyXG4gICAgY2FzZSAnY3VycmVudCc6XHJcbiAgICAgIHRoaXMub3B0cy5fc2Nyb2xsRGlzdGFuY2VfID0gdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSAwO1xyXG4gICAgICB0aGlzLnNjcm9sbE9wdGlvbiA9IHtcclxuICAgICAgICBjdXJyZW50T2Zmc2V0OiAwLFxyXG4gICAgICAgIHN0YXJ0VG91Y2hYOiAwLFxyXG4gICAgICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgICAgIGxhc3RNb3ZlVGltZTogMFxyXG4gICAgICB9O1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgbGV0IF9jYWxZQXhpc0RhdGEgPSBjYWxZQXhpc0RhdGEodGhpcy5vcHRzLnNlcmllcywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KSwgeUF4aXNXaWR0aCA9IF9jYWxZQXhpc0RhdGEueUF4aXNXaWR0aDtcclxuICAgICAgdGhpcy5jb25maWcueUF4aXNXaWR0aCA9IHlBeGlzV2lkdGg7XHJcbiAgICAgIGxldCBvZmZzZXRMZWZ0ID0gMDtcclxuICAgICAgbGV0IF9nZXRYQXhpc1BvaW50czAgPSBnZXRYQXhpc1BvaW50cyh0aGlzLm9wdHMuY2F0ZWdvcmllcywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZyksIHhBeGlzUG9pbnRzID0gX2dldFhBeGlzUG9pbnRzMC54QXhpc1BvaW50cyxcclxuICAgICAgICBzdGFydFggPSBfZ2V0WEF4aXNQb2ludHMwLnN0YXJ0WCxcclxuICAgICAgICBlbmRYID0gX2dldFhBeGlzUG9pbnRzMC5lbmRYLFxyXG4gICAgICAgIGVhY2hTcGFjaW5nID0gX2dldFhBeGlzUG9pbnRzMC5lYWNoU3BhY2luZztcclxuICAgICAgbGV0IHRvdGFsV2lkdGggPSBlYWNoU3BhY2luZyAqICh4QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICAgICAgbGV0IHNjcmVlbldpZHRoID0gZW5kWCAtIHN0YXJ0WDtcclxuICAgICAgb2Zmc2V0TGVmdCA9IHNjcmVlbldpZHRoIC0gdG90YWxXaWR0aDtcclxuICAgICAgdGhpcy5zY3JvbGxPcHRpb24gPSB7XHJcbiAgICAgICAgY3VycmVudE9mZnNldDogb2Zmc2V0TGVmdCxcclxuICAgICAgICBzdGFydFRvdWNoWDogb2Zmc2V0TGVmdCxcclxuICAgICAgICBkaXN0YW5jZTogMCxcclxuICAgICAgICBsYXN0TW92ZVRpbWU6IDBcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSBvZmZzZXRMZWZ0O1xyXG4gICAgICBicmVhaztcclxuICB9XHJcbiAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIHRoaXMub3B0cy50eXBlLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuem9vbSA9IGZ1bmN0aW9uKCkge1xyXG4gIHZhciB2YWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHRoaXMub3B0cy54QXhpcy5pdGVtQ291bnQ7XHJcbiAgaWYgKHRoaXMub3B0cy5lbmFibGVTY3JvbGwgIT09IHRydWUpIHtcclxuICAgIGNvbnNvbGUubG9nKCdbdUNoYXJ0c10g6K+35ZCv55So5rua5Yqo5p2h5ZCO5L2/55SoJylcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgLy/lvZPliY3lsY/luZXkuK3pl7TngrlcclxuICBsZXQgY2VudGVyUG9pbnQgPSBNYXRoLnJvdW5kKE1hdGguYWJzKHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQpIC8gdGhpcy5vcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZykgKyBNYXRoLnJvdW5kKHRoaXMub3B0cy54QXhpcy5pdGVtQ291bnQgLyAyKTtcclxuICB0aGlzLm9wdHMuYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgdGhpcy5vcHRzLnhBeGlzLml0ZW1Db3VudCA9IHZhbC5pdGVtQ291bnQ7XHJcbiAgLy/ph43mlrDorqHnrpd46L205YGP56e76Led56a7XHJcbiAgbGV0IF9jYWxZQXhpc0RhdGEgPSBjYWxZQXhpc0RhdGEodGhpcy5vcHRzLnNlcmllcywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KSxcclxuICAgIHlBeGlzV2lkdGggPSBfY2FsWUF4aXNEYXRhLnlBeGlzV2lkdGg7XHJcbiAgdGhpcy5jb25maWcueUF4aXNXaWR0aCA9IHlBeGlzV2lkdGg7XHJcbiAgbGV0IG9mZnNldExlZnQgPSAwO1xyXG4gIGxldCBfZ2V0WEF4aXNQb2ludHMwID0gZ2V0WEF4aXNQb2ludHModGhpcy5vcHRzLmNhdGVnb3JpZXMsIHRoaXMub3B0cywgdGhpcy5jb25maWcpLFxyXG4gICAgeEF4aXNQb2ludHMgPSBfZ2V0WEF4aXNQb2ludHMwLnhBeGlzUG9pbnRzLFxyXG4gICAgc3RhcnRYID0gX2dldFhBeGlzUG9pbnRzMC5zdGFydFgsXHJcbiAgICBlbmRYID0gX2dldFhBeGlzUG9pbnRzMC5lbmRYLFxyXG4gICAgZWFjaFNwYWNpbmcgPSBfZ2V0WEF4aXNQb2ludHMwLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBjZW50ZXJMZWZ0ID0gZWFjaFNwYWNpbmcgKiBjZW50ZXJQb2ludDtcclxuICBsZXQgc2NyZWVuV2lkdGggPSBlbmRYIC0gc3RhcnRYO1xyXG4gIGxldCBNYXhMZWZ0ID0gc2NyZWVuV2lkdGggLSBlYWNoU3BhY2luZyAqICh4QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICBvZmZzZXRMZWZ0ID0gc2NyZWVuV2lkdGggLyAyIC0gY2VudGVyTGVmdDtcclxuICBpZiAob2Zmc2V0TGVmdCA+IDApIHtcclxuICAgIG9mZnNldExlZnQgPSAwO1xyXG4gIH1cclxuICBpZiAob2Zmc2V0TGVmdCA8IE1heExlZnQpIHtcclxuICAgIG9mZnNldExlZnQgPSBNYXhMZWZ0O1xyXG4gIH1cclxuICB0aGlzLnNjcm9sbE9wdGlvbiA9IHtcclxuICAgIGN1cnJlbnRPZmZzZXQ6IG9mZnNldExlZnQsXHJcbiAgICBzdGFydFRvdWNoWDogMCxcclxuICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgbGFzdE1vdmVUaW1lOiAwXHJcbiAgfTtcclxuICBjYWxWYWxpZERpc3RhbmNlKHRoaXMsIG9mZnNldExlZnQsIHRoaXMub3B0cy5jaGFydERhdGEsIHRoaXMuY29uZmlnLCB0aGlzLm9wdHMpO1xyXG4gIHRoaXMub3B0cy5fc2Nyb2xsRGlzdGFuY2VfID0gb2Zmc2V0TGVmdDtcclxuICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgdGhpcy5vcHRzLnR5cGUsIHRoaXMub3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS5kb2J1bGVab29tID0gZnVuY3Rpb24oZSkge1xyXG4gIGlmICh0aGlzLm9wdHMuZW5hYmxlU2Nyb2xsICE9PSB0cnVlKSB7XHJcbiAgICBjb25zb2xlLmxvZygnW3VDaGFydHNdIOivt+WQr+eUqOa7muWKqOadoeWQjuS9v+eUqCcpXHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnN0IHRjcyA9IGUuY2hhbmdlZFRvdWNoZXM7XHJcbiAgaWYgKHRjcy5sZW5ndGggPCAyKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGNzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICB0Y3NbaV0ueCA9IHRjc1tpXS54ID8gdGNzW2ldLnggOiB0Y3NbaV0uY2xpZW50WDtcclxuICAgIHRjc1tpXS55ID0gdGNzW2ldLnkgPyB0Y3NbaV0ueSA6IHRjc1tpXS5jbGllbnRZO1xyXG4gIH1cclxuICBjb25zdCBudGNzID0gW2dldFRvdWNoZXModGNzWzBdLCB0aGlzLm9wdHMsIGUpLGdldFRvdWNoZXModGNzWzFdLCB0aGlzLm9wdHMsIGUpXTsgXHJcbiAgY29uc3QgeGxlbmd0aCA9IE1hdGguYWJzKG50Y3NbMF0ueCAtIG50Y3NbMV0ueCk7XHJcbiAgLy8g6K6w5b2V5Yid5aeL55qE5Lik5oyH5LmL6Ze055qE5pWw5o2uXHJcbiAgaWYoIXRoaXMuc2Nyb2xsT3B0aW9uLm1vdmVDb3VudCl7XHJcbiAgICBsZXQgY3RzMCA9IHtjaGFuZ2VkVG91Y2hlczpbe3g6dGNzWzBdLngseTp0aGlzLm9wdHMuYXJlYVswXSAvIHRoaXMub3B0cy5waXggKyAyfV19O1xyXG4gICAgbGV0IGN0czEgPSB7Y2hhbmdlZFRvdWNoZXM6W3t4OnRjc1sxXS54LHk6dGhpcy5vcHRzLmFyZWFbMF0gLyB0aGlzLm9wdHMucGl4ICsgMn1dfTtcclxuICAgIGlmKHRoaXMub3B0cy5yb3RhdGUpe1xyXG4gICAgICBjdHMwID0ge2NoYW5nZWRUb3VjaGVzOlt7eDp0aGlzLm9wdHMuaGVpZ2h0IC8gdGhpcy5vcHRzLnBpeCAtIHRoaXMub3B0cy5hcmVhWzBdIC8gdGhpcy5vcHRzLnBpeCAtIDIseTp0Y3NbMF0ueX1dfTtcclxuICAgICAgY3RzMSA9IHtjaGFuZ2VkVG91Y2hlczpbe3g6dGhpcy5vcHRzLmhlaWdodCAvIHRoaXMub3B0cy5waXggLSB0aGlzLm9wdHMuYXJlYVswXSAvIHRoaXMub3B0cy5waXggLSAyLHk6dGNzWzFdLnl9XX07XHJcbiAgICB9XHJcbiAgICBjb25zdCBtb3ZlQ3VycmVudDEgPSB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoY3RzMCkuaW5kZXg7XHJcbiAgICBjb25zdCBtb3ZlQ3VycmVudDIgPSB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoY3RzMSkuaW5kZXg7XHJcbiAgICBjb25zdCBtb3ZlQ291bnQgPSBNYXRoLmFicyhtb3ZlQ3VycmVudDEgLSBtb3ZlQ3VycmVudDIpO1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24ubW92ZUNvdW50ID0gbW92ZUNvdW50O1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24ubW92ZUN1cnJlbnQxID0gTWF0aC5taW4obW92ZUN1cnJlbnQxLCBtb3ZlQ3VycmVudDIpO1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24ubW92ZUN1cnJlbnQyID0gTWF0aC5tYXgobW92ZUN1cnJlbnQxLCBtb3ZlQ3VycmVudDIpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBcclxuICBsZXQgY3VycmVudEVhY2hTcGFjaW5nID0geGxlbmd0aCAvIHRoaXMuc2Nyb2xsT3B0aW9uLm1vdmVDb3VudDtcclxuICBsZXQgaXRlbUNvdW50ID0gKHRoaXMub3B0cy53aWR0aCAtIHRoaXMub3B0cy5hcmVhWzFdIC0gdGhpcy5vcHRzLmFyZWFbM10pIC8gY3VycmVudEVhY2hTcGFjaW5nO1xyXG4gIGl0ZW1Db3VudCA9IGl0ZW1Db3VudCA8PSAyID8gMiA6IGl0ZW1Db3VudDtcclxuICBpdGVtQ291bnQgPSBpdGVtQ291bnQgPj0gdGhpcy5vcHRzLmNhdGVnb3JpZXMubGVuZ3RoID8gdGhpcy5vcHRzLmNhdGVnb3JpZXMubGVuZ3RoIDogaXRlbUNvdW50O1xyXG4gIHRoaXMub3B0cy5hbmltYXRpb24gPSBmYWxzZTtcclxuICB0aGlzLm9wdHMueEF4aXMuaXRlbUNvdW50ID0gaXRlbUNvdW50O1xyXG4gIC8vIOmHjeaWsOiuoeeul+a7muWKqOadoeWBj+enu+i3neemu1xyXG4gIGxldCBvZmZzZXRMZWZ0ID0gMDtcclxuICBsZXQgX2dldFhBeGlzUG9pbnRzMCA9IGdldFhBeGlzUG9pbnRzKHRoaXMub3B0cy5jYXRlZ29yaWVzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnKSxcclxuICAgIHhBeGlzUG9pbnRzID0gX2dldFhBeGlzUG9pbnRzMC54QXhpc1BvaW50cyxcclxuICAgIHN0YXJ0WCA9IF9nZXRYQXhpc1BvaW50czAuc3RhcnRYLFxyXG4gICAgZW5kWCA9IF9nZXRYQXhpc1BvaW50czAuZW5kWCxcclxuICAgIGVhY2hTcGFjaW5nID0gX2dldFhBeGlzUG9pbnRzMC5lYWNoU3BhY2luZztcclxuICBsZXQgY3VycmVudExlZnQgPSBlYWNoU3BhY2luZyAqIHRoaXMuc2Nyb2xsT3B0aW9uLm1vdmVDdXJyZW50MTtcclxuICBsZXQgc2NyZWVuV2lkdGggPSBlbmRYIC0gc3RhcnRYO1xyXG4gIGxldCBNYXhMZWZ0ID0gc2NyZWVuV2lkdGggLSBlYWNoU3BhY2luZyAqICh4QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICBvZmZzZXRMZWZ0ID0gLWN1cnJlbnRMZWZ0K01hdGgubWluKG50Y3NbMF0ueCxudGNzWzFdLngpLXRoaXMub3B0cy5hcmVhWzNdLWVhY2hTcGFjaW5nO1xyXG4gIGlmIChvZmZzZXRMZWZ0ID4gMCkge1xyXG4gICAgb2Zmc2V0TGVmdCA9IDA7XHJcbiAgfVxyXG4gIGlmIChvZmZzZXRMZWZ0IDwgTWF4TGVmdCkge1xyXG4gICAgb2Zmc2V0TGVmdCA9IE1heExlZnQ7XHJcbiAgfVxyXG4gIHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQ9IG9mZnNldExlZnQ7XHJcbiAgdGhpcy5zY3JvbGxPcHRpb24uc3RhcnRUb3VjaFg9IDA7XHJcbiAgdGhpcy5zY3JvbGxPcHRpb24uZGlzdGFuY2U9MDtcclxuICBjYWxWYWxpZERpc3RhbmNlKHRoaXMsIG9mZnNldExlZnQsIHRoaXMub3B0cy5jaGFydERhdGEsIHRoaXMuY29uZmlnLCB0aGlzLm9wdHMpO1xyXG4gIHRoaXMub3B0cy5fc2Nyb2xsRGlzdGFuY2VfID0gb2Zmc2V0TGVmdDtcclxuICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgdGhpcy5vcHRzLnR5cGUsIHRoaXMub3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbn1cclxuXHJcbnVDaGFydHMucHJvdG90eXBlLnN0b3BBbmltYXRpb24gPSBmdW5jdGlvbigpIHtcclxuICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlICYmIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2Uuc3RvcCgpO1xyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XHJcbiAgdGhpcy51ZXZlbnQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcik7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS5kZWxFdmVudExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSkge1xyXG4gIHRoaXMudWV2ZW50LmRlbEV2ZW50TGlzdGVuZXIodHlwZSk7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS5nZXRDdXJyZW50RGF0YUluZGV4ID0gZnVuY3Rpb24oZSkge1xyXG4gIHZhciB0b3VjaGVzID0gbnVsbDtcclxuICBpZiAoZS5jaGFuZ2VkVG91Y2hlcykge1xyXG4gICAgdG91Y2hlcyA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfSBlbHNlIHtcclxuICAgIHRvdWNoZXMgPSBlLm1wLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH1cclxuICBpZiAodG91Y2hlcykge1xyXG4gICAgbGV0IF90b3VjaGVzJCA9IGdldFRvdWNoZXModG91Y2hlcywgdGhpcy5vcHRzLCBlKTtcclxuICAgIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ3BpZScgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdyaW5nJykge1xyXG4gICAgICByZXR1cm4gZmluZFBpZUNoYXJ0Q3VycmVudEluZGV4KHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLnBpZURhdGEsIHRoaXMub3B0cyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy50eXBlID09PSAncm9zZScpIHtcclxuICAgICAgcmV0dXJuIGZpbmRSb3NlQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEucGllRGF0YSwgdGhpcy5vcHRzKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdyYWRhcicpIHtcclxuICAgICAgcmV0dXJuIGZpbmRSYWRhckNoYXJ0Q3VycmVudEluZGV4KHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLnJhZGFyRGF0YSwgdGhpcy5vcHRzLmNhdGVnb3JpZXMubGVuZ3RoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdmdW5uZWwnKSB7XHJcbiAgICAgIHJldHVybiBmaW5kRnVubmVsQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEuZnVubmVsRGF0YSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy50eXBlID09PSAnbWFwJykge1xyXG4gICAgICByZXR1cm4gZmluZE1hcENoYXJ0Q3VycmVudEluZGV4KHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9LCB0aGlzLm9wdHMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ3dvcmQnKSB7XHJcbiAgICAgIHJldHVybiBmaW5kV29yZENoYXJ0Q3VycmVudEluZGV4KHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLndvcmRDbG91ZERhdGEpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ2JhcicpIHtcclxuICAgICAgcmV0dXJuIGZpbmRCYXJDaGFydEN1cnJlbnRJbmRleCh7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfSwgdGhpcy5vcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMsIHRoaXMub3B0cywgdGhpcy5jb25maWcsIE1hdGguYWJzKHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmaW5kQ3VycmVudEluZGV4KHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLmNhbFBvaW50cywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgTWF0aC5hYnModGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldCkpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gLTE7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS5nZXRMZWdlbmREYXRhSW5kZXggPSBmdW5jdGlvbihlKSB7XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICh0b3VjaGVzKSB7XHJcbiAgICBsZXQgX3RvdWNoZXMkID0gZ2V0VG91Y2hlcyh0b3VjaGVzLCB0aGlzLm9wdHMsIGUpO1xyXG4gICAgcmV0dXJuIGZpbmRMZWdlbmRJbmRleCh7XHJcbiAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgfSwgdGhpcy5vcHRzLmNoYXJ0RGF0YS5sZWdlbmREYXRhKTtcclxuICB9XHJcbiAgcmV0dXJuIC0xO1xyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUudG91Y2hMZWdlbmQgPSBmdW5jdGlvbihlKSB7XHJcbiAgdmFyIG9wdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICh0b3VjaGVzKSB7XHJcbiAgICB2YXIgX3RvdWNoZXMkID0gZ2V0VG91Y2hlcyh0b3VjaGVzLCB0aGlzLm9wdHMsIGUpO1xyXG4gICAgdmFyIGluZGV4ID0gdGhpcy5nZXRMZWdlbmREYXRhSW5kZXgoZSk7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICBpZiAodGhpcy5vcHRzLnR5cGUgPT0gJ2NhbmRsZScpIHtcclxuICAgICAgICB0aGlzLm9wdHMuc2VyaWVzTUFbaW5kZXhdLnNob3cgPSAhdGhpcy5vcHRzLnNlcmllc01BW2luZGV4XS5zaG93O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub3B0cy5zZXJpZXNbaW5kZXhdLnNob3cgPSAhdGhpcy5vcHRzLnNlcmllc1tpbmRleF0uc2hvdztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9wdHMuYW5pbWF0aW9uID0gb3B0aW9uLmFuaW1hdGlvbiA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0O1xyXG4gICAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgdGhpcy5vcHRzLnR5cGUsIHRoaXMub3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLnNob3dUb29sVGlwID0gZnVuY3Rpb24oZSkge1xyXG4gIHZhciBvcHRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xyXG4gIHZhciB0b3VjaGVzID0gbnVsbDtcclxuICBpZiAoZS5jaGFuZ2VkVG91Y2hlcykge1xyXG4gICAgdG91Y2hlcyA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfSBlbHNlIHtcclxuICAgIHRvdWNoZXMgPSBlLm1wLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH1cclxuICBpZiAoIXRvdWNoZXMpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiW3VDaGFydHNdIOacquiOt+WPluWIsGV2ZW505Z2Q5qCH5L+h5oGvXCIpO1xyXG4gIH1cclxuICB2YXIgX3RvdWNoZXMkID0gZ2V0VG91Y2hlcyh0b3VjaGVzLCB0aGlzLm9wdHMsIGUpO1xyXG4gIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldDtcclxuICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7XHJcbiAgICBfc2Nyb2xsRGlzdGFuY2VfOiBjdXJyZW50T2Zmc2V0LFxyXG4gICAgYW5pbWF0aW9uOiBmYWxzZVxyXG4gIH0pO1xyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ2xpbmUnIHx8IHRoaXMub3B0cy50eXBlID09PSAnYXJlYScgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdjb2x1bW4nIHx8IHRoaXMub3B0cy50eXBlID09PSAnc2NhdHRlcicgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdidWJibGUnKSB7XHJcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKTtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyBjdXJyZW50LmluZGV4IDogb3B0aW9uLmluZGV4O1xyXG4gICAgaWYgKGluZGV4ID4gLTEgfHwgaW5kZXgubGVuZ3RoPjApIHtcclxuICAgICAgdmFyIHNlcmllc0RhdGEgPSBnZXRTZXJpZXNEYXRhSXRlbSh0aGlzLm9wdHMuc2VyaWVzLCBpbmRleCwgY3VycmVudC5ncm91cCk7XHJcbiAgICAgIGlmIChzZXJpZXNEYXRhLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgIHZhciBfZ2V0VG9vbFRpcERhdGEgPSBnZXRUb29sVGlwRGF0YShzZXJpZXNEYXRhLCB0aGlzLm9wdHMsIGluZGV4LCBjdXJyZW50Lmdyb3VwLCB0aGlzLm9wdHMuY2F0ZWdvcmllcywgb3B0aW9uKSxcclxuICAgICAgICAgIHRleHRMaXN0ID0gX2dldFRvb2xUaXBEYXRhLnRleHRMaXN0LFxyXG4gICAgICAgICAgb2Zmc2V0ID0gX2dldFRvb2xUaXBEYXRhLm9mZnNldDtcclxuICAgICAgICBvZmZzZXQueSA9IF90b3VjaGVzJC55O1xyXG4gICAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICAgIHRleHRMaXN0OiBvcHRpb24udGV4dExpc3QgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi50ZXh0TGlzdCA6IHRleHRMaXN0LFxyXG4gICAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgICAgb3B0aW9uOiBvcHRpb24sXHJcbiAgICAgICAgICBpbmRleDogaW5kZXhcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICB9XHJcbiAgaWYgKHRoaXMub3B0cy50eXBlID09PSAnbW91bnQnKSB7XHJcbiAgICB2YXIgaW5kZXggPSBvcHRpb24uaW5kZXggPT0gdW5kZWZpbmVkID8gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpLmluZGV4IDogb3B0aW9uLmluZGV4O1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdmFyIG9wdHMgPSBhc3NpZ24oe30sIHRoaXMub3B0cywge2FuaW1hdGlvbjogZmFsc2V9KTtcclxuICAgICAgdmFyIHNlcmllc0RhdGEgPSBhc3NpZ24oe30sIG9wdHMuX3Nlcmllc19baW5kZXhdKTtcclxuICAgICAgdmFyIHRleHRMaXN0ID0gW3tcclxuICAgICAgICB0ZXh0OiBvcHRpb24uZm9ybWF0dGVyID8gb3B0aW9uLmZvcm1hdHRlcihzZXJpZXNEYXRhLCB1bmRlZmluZWQsIGluZGV4LCBvcHRzKSA6IHNlcmllc0RhdGEubmFtZSArICc6ICcgKyBzZXJpZXNEYXRhLmRhdGEsXHJcbiAgICAgICAgY29sb3I6IHNlcmllc0RhdGEuY29sb3JcclxuICAgICAgfV07XHJcbiAgICAgIHZhciBvZmZzZXQgPSB7XHJcbiAgICAgICAgeDogb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzW2luZGV4XS54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH07XHJcbiAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICB9XHJcbiAgaWYgKHRoaXMub3B0cy50eXBlID09PSAnYmFyJykge1xyXG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSk7XHJcbiAgICB2YXIgaW5kZXggPSBvcHRpb24uaW5kZXggPT0gdW5kZWZpbmVkID8gY3VycmVudC5pbmRleCA6IG9wdGlvbi5pbmRleDtcclxuICAgIGlmIChpbmRleCA+IC0xIHx8IGluZGV4Lmxlbmd0aD4wKSB7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gZ2V0U2VyaWVzRGF0YUl0ZW0odGhpcy5vcHRzLnNlcmllcywgaW5kZXgsIGN1cnJlbnQuZ3JvdXApO1xyXG4gICAgICBpZiAoc2VyaWVzRGF0YS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICB2YXIgX2dldFRvb2xUaXBEYXRhID0gZ2V0VG9vbFRpcERhdGEoc2VyaWVzRGF0YSwgdGhpcy5vcHRzLCBpbmRleCwgY3VycmVudC5ncm91cCwgdGhpcy5vcHRzLmNhdGVnb3JpZXMsIG9wdGlvbiksXHJcbiAgICAgICAgICB0ZXh0TGlzdCA9IF9nZXRUb29sVGlwRGF0YS50ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldCA9IF9nZXRUb29sVGlwRGF0YS5vZmZzZXQ7XHJcbiAgICAgICAgb2Zmc2V0LnggPSBfdG91Y2hlcyQueDtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24udGV4dExpc3QgOiB0ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldDogb3B0aW9uLm9mZnNldCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLm9mZnNldCA6IG9mZnNldCxcclxuICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ21peCcpIHtcclxuICAgIHZhciBjdXJyZW50ID0gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpO1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IGN1cnJlbnQuaW5kZXggOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgY3VycmVudE9mZnNldCA9IHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQ7XHJcbiAgICAgIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtcclxuICAgICAgICBfc2Nyb2xsRGlzdGFuY2VfOiBjdXJyZW50T2Zmc2V0LFxyXG4gICAgICAgIGFuaW1hdGlvbjogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gZ2V0U2VyaWVzRGF0YUl0ZW0odGhpcy5vcHRzLnNlcmllcywgaW5kZXgpO1xyXG4gICAgICBpZiAoc2VyaWVzRGF0YS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICB2YXIgX2dldE1peFRvb2xUaXBEYXRhID0gZ2V0TWl4VG9vbFRpcERhdGEoc2VyaWVzRGF0YSwgdGhpcy5vcHRzLCBpbmRleCwgdGhpcy5vcHRzLmNhdGVnb3JpZXMsIG9wdGlvbiksXHJcbiAgICAgICAgICB0ZXh0TGlzdCA9IF9nZXRNaXhUb29sVGlwRGF0YS50ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldCA9IF9nZXRNaXhUb29sVGlwRGF0YS5vZmZzZXQ7XHJcbiAgICAgICAgb2Zmc2V0LnkgPSBfdG91Y2hlcyQueTtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdjYW5kbGUnKSB7XHJcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKTtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyBjdXJyZW50LmluZGV4IDogb3B0aW9uLmluZGV4O1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0O1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7XHJcbiAgICAgICAgX3Njcm9sbERpc3RhbmNlXzogY3VycmVudE9mZnNldCxcclxuICAgICAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgICAgIH0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGdldFNlcmllc0RhdGFJdGVtKHRoaXMub3B0cy5zZXJpZXMsIGluZGV4KTtcclxuICAgICAgaWYgKHNlcmllc0RhdGEubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdmFyIF9nZXRUb29sVGlwRGF0YSA9IGdldENhbmRsZVRvb2xUaXBEYXRhKHRoaXMub3B0cy5zZXJpZXNbMF0uZGF0YSwgc2VyaWVzRGF0YSwgdGhpcy5vcHRzLCBpbmRleCwgdGhpcy5vcHRzLmNhdGVnb3JpZXMsIHRoaXMub3B0cy5leHRyYS5jYW5kbGUsIG9wdGlvbiksXHJcbiAgICAgICAgICB0ZXh0TGlzdCA9IF9nZXRUb29sVGlwRGF0YS50ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldCA9IF9nZXRUb29sVGlwRGF0YS5vZmZzZXQ7XHJcbiAgICAgICAgb2Zmc2V0LnkgPSBfdG91Y2hlcyQueTtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdwaWUnIHx8IHRoaXMub3B0cy50eXBlID09PSAncmluZycgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdyb3NlJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ2Z1bm5lbCcpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGFzc2lnbih7fSwgb3B0cy5fc2VyaWVzX1tpbmRleF0pO1xyXG4gICAgICB2YXIgdGV4dExpc3QgPSBbe1xyXG4gICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKHNlcmllc0RhdGEsIHVuZGVmaW5lZCwgaW5kZXgsIG9wdHMpIDogc2VyaWVzRGF0YS5uYW1lICsgJzogJyArIHNlcmllc0RhdGEuZGF0YSxcclxuICAgICAgICBjb2xvcjogc2VyaWVzRGF0YS5jb2xvclxyXG4gICAgICB9XTtcclxuICAgICAgdmFyIG9mZnNldCA9IHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9O1xyXG4gICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCA/IG9wdGlvbi50ZXh0TGlzdCA6IHRleHRMaXN0LFxyXG4gICAgICAgIG9mZnNldDogb3B0aW9uLm9mZnNldCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLm9mZnNldCA6IG9mZnNldCxcclxuICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICBpbmRleDogaW5kZXhcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdtYXAnKSB7XHJcbiAgICB2YXIgaW5kZXggPSBvcHRpb24uaW5kZXggPT0gdW5kZWZpbmVkID8gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpIDogb3B0aW9uLmluZGV4O1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdmFyIG9wdHMgPSBhc3NpZ24oe30sIHRoaXMub3B0cywge2FuaW1hdGlvbjogZmFsc2V9KTtcclxuICAgICAgdmFyIHNlcmllc0RhdGEgPSBhc3NpZ24oe30sIHRoaXMub3B0cy5zZXJpZXNbaW5kZXhdKTtcclxuICAgICAgc2VyaWVzRGF0YS5uYW1lID0gc2VyaWVzRGF0YS5wcm9wZXJ0aWVzLm5hbWVcclxuICAgICAgdmFyIHRleHRMaXN0ID0gW3tcclxuICAgICAgICB0ZXh0OiBvcHRpb24uZm9ybWF0dGVyID8gb3B0aW9uLmZvcm1hdHRlcihzZXJpZXNEYXRhLCB1bmRlZmluZWQsIGluZGV4LCB0aGlzLm9wdHMpIDogc2VyaWVzRGF0YS5uYW1lLFxyXG4gICAgICAgIGNvbG9yOiBzZXJpZXNEYXRhLmNvbG9yXHJcbiAgICAgIH1dO1xyXG4gICAgICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH07XHJcbiAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgb3B0cy51cGRhdGVEYXRhID0gZmFsc2U7XHJcbiAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICB9XHJcbiAgaWYgKHRoaXMub3B0cy50eXBlID09PSAnd29yZCcpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLnNlcmllc1tpbmRleF0pO1xyXG4gICAgICB2YXIgdGV4dExpc3QgPSBbe1xyXG4gICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKHNlcmllc0RhdGEsIHVuZGVmaW5lZCwgaW5kZXgsIHRoaXMub3B0cykgOiBzZXJpZXNEYXRhLm5hbWUsXHJcbiAgICAgICAgY29sb3I6IHNlcmllc0RhdGEuY29sb3JcclxuICAgICAgfV07XHJcbiAgICAgIHZhciBvZmZzZXQgPSB7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfTtcclxuICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgIHRleHRMaXN0OiBvcHRpb24udGV4dExpc3QgPyBvcHRpb24udGV4dExpc3QgOiB0ZXh0TGlzdCxcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgb3B0aW9uOiBvcHRpb24sXHJcbiAgICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBvcHRzLnVwZGF0ZURhdGEgPSBmYWxzZTtcclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdyYWRhcicpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGdldFNlcmllc0RhdGFJdGVtKHRoaXMub3B0cy5zZXJpZXMsIGluZGV4KTtcclxuICAgICAgaWYgKHNlcmllc0RhdGEubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdmFyIHRleHRMaXN0ID0gc2VyaWVzRGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKGl0ZW0sIHRoaXMub3B0cy5jYXRlZ29yaWVzW2luZGV4XSwgaW5kZXgsIHRoaXMub3B0cykgOiBpdGVtLm5hbWUgKyAnOiAnICsgaXRlbS5kYXRhLFxyXG4gICAgICAgICAgICBjb2xvcjogaXRlbS5jb2xvclxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCA/IG9wdGlvbi50ZXh0TGlzdCA6IHRleHRMaXN0LFxyXG4gICAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgICAgb3B0aW9uOiBvcHRpb24sXHJcbiAgICAgICAgICBpbmRleDogaW5kZXhcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICB9XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbihkaXN0YW5jZSkge1xyXG4gIHRoaXMuc2Nyb2xsT3B0aW9uID0ge1xyXG4gICAgY3VycmVudE9mZnNldDogZGlzdGFuY2UsXHJcbiAgICBzdGFydFRvdWNoWDogZGlzdGFuY2UsXHJcbiAgICBkaXN0YW5jZTogMCxcclxuICAgIGxhc3RNb3ZlVGltZTogMFxyXG4gIH07XHJcbiAgbGV0IG9wdHMgPSBhc3NpZ24oe30sIHRoaXMub3B0cywge1xyXG4gICAgX3Njcm9sbERpc3RhbmNlXzogZGlzdGFuY2UsXHJcbiAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgfSk7XHJcbiAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIHRoaXMub3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLnNjcm9sbFN0YXJ0ID0gZnVuY3Rpb24oZSkge1xyXG4gIHZhciB0b3VjaGVzID0gbnVsbDtcclxuICBpZiAoZS5jaGFuZ2VkVG91Y2hlcykge1xyXG4gICAgdG91Y2hlcyA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfSBlbHNlIHtcclxuICAgIHRvdWNoZXMgPSBlLm1wLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH1cclxuICB2YXIgX3RvdWNoZXMkID0gZ2V0VG91Y2hlcyh0b3VjaGVzLCB0aGlzLm9wdHMsIGUpO1xyXG4gIGlmICh0b3VjaGVzICYmIHRoaXMub3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLnN0YXJ0VG91Y2hYID0gX3RvdWNoZXMkLng7XHJcbiAgfVxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2Nyb2xsID0gZnVuY3Rpb24oZSkge1xyXG4gIGlmICh0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWUgPT09IDApIHtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLmxhc3RNb3ZlVGltZSA9IERhdGUubm93KCk7XHJcbiAgfVxyXG4gIGxldCBMaW1pdCA9IHRoaXMub3B0cy50b3VjaE1vdmVMaW1pdCB8fCA2MDtcclxuICBsZXQgY3Vyck1vdmVUaW1lID0gRGF0ZS5ub3coKTtcclxuICBsZXQgZHVyYXRpb24gPSBjdXJyTW92ZVRpbWUgLSB0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWU7XHJcbiAgaWYgKGR1cmF0aW9uIDwgTWF0aC5mbG9vcigxMDAwIC8gTGltaXQpKSByZXR1cm47XHJcbiAgaWYgKHRoaXMuc2Nyb2xsT3B0aW9uLnN0YXJ0VG91Y2hYID09IDApIHJldHVybjtcclxuICB0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWUgPSBjdXJyTW92ZVRpbWU7XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICh0b3VjaGVzICYmIHRoaXMub3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICB2YXIgX2Rpc3RhbmNlO1xyXG4gICAgX2Rpc3RhbmNlID0gX3RvdWNoZXMkLnggLSB0aGlzLnNjcm9sbE9wdGlvbi5zdGFydFRvdWNoWDtcclxuICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldDtcclxuICAgIHZhciB2YWxpZERpc3RhbmNlID0gY2FsVmFsaWREaXN0YW5jZSh0aGlzLCBjdXJyZW50T2Zmc2V0ICsgX2Rpc3RhbmNlLCB0aGlzLm9wdHMuY2hhcnREYXRhLCB0aGlzLmNvbmZpZywgdGhpcy5vcHRzKTtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLmRpc3RhbmNlID0gX2Rpc3RhbmNlID0gdmFsaWREaXN0YW5jZSAtIGN1cnJlbnRPZmZzZXQ7XHJcbiAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7XHJcbiAgICAgIF9zY3JvbGxEaXN0YW5jZV86IGN1cnJlbnRPZmZzZXQgKyBfZGlzdGFuY2UsXHJcbiAgICAgIGFuaW1hdGlvbjogZmFsc2VcclxuICAgIH0pO1xyXG5cdFx0dGhpcy5vcHRzID0gb3B0cztcclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQgKyBfZGlzdGFuY2U7XHJcbiAgfVxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2Nyb2xsRW5kID0gZnVuY3Rpb24oZSkge1xyXG4gIGlmICh0aGlzLm9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICB2YXIgX3Njcm9sbE9wdGlvbiA9IHRoaXMuc2Nyb2xsT3B0aW9uLFxyXG4gICAgICBjdXJyZW50T2Zmc2V0ID0gX3Njcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0LFxyXG4gICAgICBkaXN0YW5jZSA9IF9zY3JvbGxPcHRpb24uZGlzdGFuY2U7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0ID0gY3VycmVudE9mZnNldCArIGRpc3RhbmNlO1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24uZGlzdGFuY2UgPSAwO1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24ubW92ZUNvdW50ID0gMDtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCB1Q2hhcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///126\n");
 
/***/ }),
/* 127 */
/*!**********************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js ***!
  \**********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n/*\r\n * uCharts®\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts®官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\n// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\nvar color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\n\n//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改\nvar formatDateTime = function formatDateTime(timeStamp, returnType) {\n  var date = new Date();\n  date.setTime(timeStamp * 1000);\n  var y = date.getFullYear();\n  var m = date.getMonth() + 1;\n  m = m < 10 ? '0' + m : m;\n  var d = date.getDate();\n  d = d < 10 ? '0' + d : d;\n  var h = date.getHours();\n  h = h < 10 ? '0' + h : h;\n  var minute = date.getMinutes();\n  var second = date.getSeconds();\n  minute = minute < 10 ? '0' + minute : minute;\n  second = second < 10 ? '0' + second : second;\n  if (returnType == 'full') {\n    return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;\n  }\n  if (returnType == 'y-m-d') {\n    return y + '-' + m + '-' + d;\n  }\n  if (returnType == 'h:m') {\n    return h + ':' + minute;\n  }\n  if (returnType == 'h:m:s') {\n    return h + ':' + minute + ':' + second;\n  }\n  return [y, m, d, h, minute, second];\n};\nvar cfu = {\n  //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可\n  \"type\": [\"pie\", \"ring\", \"rose\", \"word\", \"funnel\", \"map\", \"arcbar\", \"line\", \"column\", \"mount\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"tline\", \"tarea\", \"scatter\", \"bubble\", \"demotype\"],\n  \"range\": [\"饼状图\", \"圆环图\", \"玫瑰图\", \"词云图\", \"漏斗图\", \"地图\", \"圆弧进度条\", \"折线图\", \"柱状图\", \"山峰图\", \"条状图\", \"区域图\", \"雷达图\", \"仪表盘\", \"K线图\", \"混合图\", \"时间轴折线\", \"时间轴区域\", \"散点图\", \"气泡图\", \"自定义类型\"],\n  //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的\"demotype\"\n  //自定义类型时需要注意\"tline\",\"tarea\",\"scatter\",\"bubble\"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories\n  \"categories\": [\"line\", \"column\", \"mount\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"demotype\"],\n  //instance为实例变量承载属性,不要删除\n  \"instance\": {},\n  //option为opts及eopts承载属性,不要删除\n  \"option\": {},\n  //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\n  \"formatter\": {\n    \"yAxisDemo1\": function yAxisDemo1(val, index, opts) {\n      return val + '元';\n    },\n    \"yAxisDemo2\": function yAxisDemo2(val, index, opts) {\n      return val.toFixed(2);\n    },\n    \"xAxisDemo1\": function xAxisDemo1(val, index, opts) {\n      return val + '年';\n    },\n    \"xAxisDemo2\": function xAxisDemo2(val, index, opts) {\n      return formatDateTime(val, 'h:m');\n    },\n    \"seriesDemo1\": function seriesDemo1(val, index, series, opts) {\n      return val + '元';\n    },\n    \"tooltipDemo1\": function tooltipDemo1(item, category, index, opts) {\n      if (index == 0) {\n        return '随便用' + item.data + '年';\n      } else {\n        return '其他我没改' + item.data + '天';\n      }\n    },\n    \"pieDemo\": function pieDemo(val, index, series, opts) {\n      if (index !== undefined) {\n        return series[index].name + ':' + series[index].data + '元';\n      }\n    }\n  },\n  //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。\n  \"demotype\": {\n    //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置\n    \"type\": \"line\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true\n    },\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"line\": {\n        \"type\": \"curve\",\n        \"width\": 2\n      }\n    }\n  },\n  //下面是自定义配置,请添加项目所需的通用配置\n  \"pie\": {\n    \"type\": \"pie\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"extra\": {\n      \"pie\": {\n        \"activeOpacity\": 0.5,\n        \"activeRadius\": 10,\n        \"offsetAngle\": 0,\n        \"labelWidth\": 15,\n        \"border\": true,\n        \"borderWidth\": 3,\n        \"borderColor\": \"#FFFFFF\"\n      }\n    }\n  },\n  \"ring\": {\n    \"type\": \"ring\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"rotate\": false,\n    \"dataLabel\": true,\n    \"legend\": {\n      \"show\": true,\n      \"position\": \"right\",\n      \"lineHeight\": 25\n    },\n    \"title\": {\n      \"name\": \"收益率\",\n      \"fontSize\": 15,\n      \"color\": \"#666666\"\n    },\n    \"subtitle\": {\n      \"name\": \"70%\",\n      \"fontSize\": 25,\n      \"color\": \"#7cb5ec\"\n    },\n    \"extra\": {\n      \"ring\": {\n        \"ringWidth\": 50,\n        \"activeOpacity\": 0.5,\n        \"activeRadius\": 10,\n        \"offsetAngle\": 0,\n        \"labelWidth\": 15,\n        \"border\": true,\n        \"borderWidth\": 3,\n        \"borderColor\": \"#FFFFFF\"\n      }\n    }\n  },\n  \"rose\": {\n    \"type\": \"rose\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"legend\": {\n      \"show\": true,\n      \"position\": \"left\",\n      \"lineHeight\": 25\n    },\n    \"extra\": {\n      \"rose\": {\n        \"type\": \"area\",\n        \"minRadius\": 50,\n        \"activeOpacity\": 0.5,\n        \"activeRadius\": 10,\n        \"offsetAngle\": 0,\n        \"labelWidth\": 15,\n        \"border\": false,\n        \"borderWidth\": 2,\n        \"borderColor\": \"#FFFFFF\"\n      }\n    }\n  },\n  \"word\": {\n    \"type\": \"word\",\n    \"color\": color,\n    \"extra\": {\n      \"word\": {\n        \"type\": \"normal\",\n        \"autoColors\": false\n      }\n    }\n  },\n  \"funnel\": {\n    \"type\": \"funnel\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"extra\": {\n      \"funnel\": {\n        \"activeOpacity\": 0.3,\n        \"activeWidth\": 10,\n        \"border\": true,\n        \"borderWidth\": 2,\n        \"borderColor\": \"#FFFFFF\",\n        \"fillOpacity\": 1,\n        \"labelAlign\": \"right\"\n      }\n    }\n  },\n  \"map\": {\n    \"type\": \"map\",\n    \"color\": color,\n    \"padding\": [0, 0, 0, 0],\n    \"dataLabel\": true,\n    \"extra\": {\n      \"map\": {\n        \"border\": true,\n        \"borderWidth\": 1,\n        \"borderColor\": \"#666666\",\n        \"fillOpacity\": 0.6,\n        \"activeBorderColor\": \"#F04864\",\n        \"activeFillColor\": \"#FACC14\",\n        \"activeFillOpacity\": 1\n      }\n    }\n  },\n  \"arcbar\": {\n    \"type\": \"arcbar\",\n    \"color\": color,\n    \"title\": {\n      \"name\": \"百分比\",\n      \"fontSize\": 25,\n      \"color\": \"#00FF00\"\n    },\n    \"subtitle\": {\n      \"name\": \"默认标题\",\n      \"fontSize\": 15,\n      \"color\": \"#666666\"\n    },\n    \"extra\": {\n      \"arcbar\": {\n        \"type\": \"default\",\n        \"width\": 12,\n        \"backgroundColor\": \"#E9E9E9\",\n        \"startAngle\": 0.75,\n        \"endAngle\": 0.25,\n        \"gap\": 2\n      }\n    }\n  },\n  \"line\": {\n    \"type\": \"line\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true\n    },\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"line\": {\n        \"type\": \"straight\",\n        \"width\": 2\n      }\n    }\n  },\n  \"tline\": {\n    \"type\": \"line\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": false,\n      \"boundaryGap\": \"justify\"\n    },\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2,\n      \"data\": [{\n        \"min\": 0,\n        \"max\": 80\n      }]\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"line\": {\n        \"type\": \"curve\",\n        \"width\": 2\n      }\n    }\n  },\n  \"tarea\": {\n    \"type\": \"area\",\n    \"color\": color,\n    \"padding\": [15, 10, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true,\n      \"boundaryGap\": \"justify\"\n    },\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2,\n      \"data\": [{\n        \"min\": 0,\n        \"max\": 80\n      }]\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"area\": {\n        \"type\": \"curve\",\n        \"opacity\": 0.2,\n        \"addLine\": true,\n        \"width\": 2,\n        \"gradient\": true\n      }\n    }\n  },\n  \"column\": {\n    \"type\": \"column\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 5],\n    \"xAxis\": {\n      \"disableGrid\": true\n    },\n    \"yAxis\": {\n      \"data\": [{\n        \"min\": 0\n      }]\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"column\": {\n        \"type\": \"group\",\n        \"width\": 30,\n        \"activeBgColor\": \"#000000\",\n        \"activeBgOpacity\": 0.08\n      }\n    }\n  },\n  \"mount\": {\n    \"type\": \"mount\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 5],\n    \"xAxis\": {\n      \"disableGrid\": true\n    },\n    \"yAxis\": {\n      \"data\": [{\n        \"min\": 0\n      }]\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"mount\": {\n        \"type\": \"mount\",\n        \"widthRatio\": 1.5\n      }\n    }\n  },\n  \"bar\": {\n    \"type\": \"bar\",\n    \"color\": color,\n    \"padding\": [15, 30, 0, 5],\n    \"xAxis\": {\n      \"boundaryGap\": \"justify\",\n      \"disableGrid\": false,\n      \"min\": 0,\n      \"axisLine\": false\n    },\n    \"yAxis\": {},\n    \"legend\": {},\n    \"extra\": {\n      \"bar\": {\n        \"type\": \"group\",\n        \"width\": 30,\n        \"meterBorde\": 1,\n        \"meterFillColor\": \"#FFFFFF\",\n        \"activeBgColor\": \"#000000\",\n        \"activeBgOpacity\": 0.08\n      }\n    }\n  },\n  \"area\": {\n    \"type\": \"area\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true\n    },\n    \"yAxis\": {\n      \"gridType\": \"dash\",\n      \"dashLength\": 2\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"area\": {\n        \"type\": \"straight\",\n        \"opacity\": 0.2,\n        \"addLine\": true,\n        \"width\": 2,\n        \"gradient\": false\n      }\n    }\n  },\n  \"radar\": {\n    \"type\": \"radar\",\n    \"color\": color,\n    \"padding\": [5, 5, 5, 5],\n    \"dataLabel\": false,\n    \"legend\": {\n      \"show\": true,\n      \"position\": \"right\",\n      \"lineHeight\": 25\n    },\n    \"extra\": {\n      \"radar\": {\n        \"gridType\": \"radar\",\n        \"gridColor\": \"#CCCCCC\",\n        \"gridCount\": 3,\n        \"opacity\": 0.2,\n        \"max\": 200\n      }\n    }\n  },\n  \"gauge\": {\n    \"type\": \"gauge\",\n    \"color\": color,\n    \"title\": {\n      \"name\": \"66Km/H\",\n      \"fontSize\": 25,\n      \"color\": \"#2fc25b\",\n      \"offsetY\": 50\n    },\n    \"subtitle\": {\n      \"name\": \"实时速度\",\n      \"fontSize\": 15,\n      \"color\": \"#1890ff\",\n      \"offsetY\": -50\n    },\n    \"extra\": {\n      \"gauge\": {\n        \"type\": \"default\",\n        \"width\": 30,\n        \"labelColor\": \"#666666\",\n        \"startAngle\": 0.75,\n        \"endAngle\": 0.25,\n        \"startNumber\": 0,\n        \"endNumber\": 100,\n        \"labelFormat\": \"\",\n        \"splitLine\": {\n          \"fixRadius\": 0,\n          \"splitNumber\": 10,\n          \"width\": 30,\n          \"color\": \"#FFFFFF\",\n          \"childNumber\": 5,\n          \"childWidth\": 12\n        },\n        \"pointer\": {\n          \"width\": 24,\n          \"color\": \"auto\"\n        }\n      }\n    }\n  },\n  \"candle\": {\n    \"type\": \"candle\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"enableScroll\": true,\n    \"enableMarkLine\": true,\n    \"dataLabel\": false,\n    \"xAxis\": {\n      \"labelCount\": 4,\n      \"itemCount\": 40,\n      \"disableGrid\": true,\n      \"gridColor\": \"#CCCCCC\",\n      \"gridType\": \"solid\",\n      \"dashLength\": 4,\n      \"scrollShow\": true,\n      \"scrollAlign\": \"left\",\n      \"scrollColor\": \"#A6A6A6\",\n      \"scrollBackgroundColor\": \"#EFEBEF\"\n    },\n    \"yAxis\": {},\n    \"legend\": {},\n    \"extra\": {\n      \"candle\": {\n        \"color\": {\n          \"upLine\": \"#f04864\",\n          \"upFill\": \"#f04864\",\n          \"downLine\": \"#2fc25b\",\n          \"downFill\": \"#2fc25b\"\n        },\n        \"average\": {\n          \"show\": true,\n          \"name\": [\"MA5\", \"MA10\", \"MA30\"],\n          \"day\": [5, 10, 20],\n          \"color\": [\"#1890ff\", \"#2fc25b\", \"#facc14\"]\n        }\n      },\n      \"markLine\": {\n        \"type\": \"dash\",\n        \"dashLength\": 5,\n        \"data\": [{\n          \"value\": 2150,\n          \"lineColor\": \"#f04864\",\n          \"showLabel\": true\n        }, {\n          \"value\": 2350,\n          \"lineColor\": \"#f04864\",\n          \"showLabel\": true\n        }]\n      }\n    }\n  },\n  \"mix\": {\n    \"type\": \"mix\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": true\n    },\n    \"yAxis\": {\n      \"disabled\": false,\n      \"disableGrid\": false,\n      \"splitNumber\": 5,\n      \"gridType\": \"dash\",\n      \"dashLength\": 4,\n      \"gridColor\": \"#CCCCCC\",\n      \"padding\": 10,\n      \"showTitle\": true,\n      \"data\": []\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"mix\": {\n        \"column\": {\n          \"width\": 20\n        }\n      }\n    }\n  },\n  \"scatter\": {\n    \"type\": \"scatter\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"dataLabel\": false,\n    \"xAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\",\n      \"splitNumber\": 5,\n      \"boundaryGap\": \"justify\",\n      \"min\": 0\n    },\n    \"yAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\"\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"scatter\": {}\n    }\n  },\n  \"bubble\": {\n    \"type\": \"bubble\",\n    \"color\": color,\n    \"padding\": [15, 15, 0, 15],\n    \"xAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\",\n      \"splitNumber\": 5,\n      \"boundaryGap\": \"justify\",\n      \"min\": 0,\n      \"max\": 250\n    },\n    \"yAxis\": {\n      \"disableGrid\": false,\n      \"gridType\": \"dash\",\n      \"data\": [{\n        \"min\": 0,\n        \"max\": 150\n      }]\n    },\n    \"legend\": {},\n    \"extra\": {\n      \"bubble\": {\n        \"border\": 2,\n        \"opacity\": 0.5\n      }\n    }\n  }\n};\nvar _default = cfu;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvY29uZmlnLXVjaGFydHMuanMiXSwibmFtZXMiOlsiY29sb3IiLCJmb3JtYXREYXRlVGltZSIsInRpbWVTdGFtcCIsInJldHVyblR5cGUiLCJkYXRlIiwiRGF0ZSIsInNldFRpbWUiLCJ5IiwiZ2V0RnVsbFllYXIiLCJtIiwiZ2V0TW9udGgiLCJkIiwiZ2V0RGF0ZSIsImgiLCJnZXRIb3VycyIsIm1pbnV0ZSIsImdldE1pbnV0ZXMiLCJzZWNvbmQiLCJnZXRTZWNvbmRzIiwiY2Z1IiwidmFsIiwiaW5kZXgiLCJvcHRzIiwidG9GaXhlZCIsInNlcmllcyIsIml0ZW0iLCJjYXRlZ29yeSIsImRhdGEiLCJ1bmRlZmluZWQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBTUEsS0FBSyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7O0FBRWpIO0FBQ0EsSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjLENBQUlDLFNBQVMsRUFBRUMsVUFBVSxFQUFHO0VBQzlDLElBQUlDLElBQUksR0FBRyxJQUFJQyxJQUFJLEVBQUU7RUFDckJELElBQUksQ0FBQ0UsT0FBTyxDQUFDSixTQUFTLEdBQUcsSUFBSSxDQUFDO0VBQzlCLElBQUlLLENBQUMsR0FBR0gsSUFBSSxDQUFDSSxXQUFXLEVBQUU7RUFDMUIsSUFBSUMsQ0FBQyxHQUFHTCxJQUFJLENBQUNNLFFBQVEsRUFBRSxHQUFHLENBQUM7RUFDM0JELENBQUMsR0FBR0EsQ0FBQyxHQUFHLEVBQUUsR0FBSSxHQUFH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RTtNQUNkO0lBQ0Q7RUFDSDtBQUNELENBQUM7QUFBQSxlQUVjbUIsR0FBRztBQUFBIiwiZmlsZSI6IjEyNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIHVDaGFydHPCrlxyXG4gKiDpq5jmgKfog73ot6jlubPlj7Dlm77ooajlupPvvIzmlK/mjIFINeOAgUFQUOOAgeWwj+eoi+W6j++8iOW+ruS/oS/mlK/ku5jlrp0v55m+5bqmL+WktOadoS9RUS8zNjDvvInjgIFWdWXjgIFUYXJv562J5pSv5oyBY2FudmFz55qE5qGG5p625bmz5Y+wXHJcbiAqIENvcHlyaWdodCAoYykgMjAyMSBRSVVOwq7np4vkupEgaHR0cHM6Ly93d3cudWNoYXJ0cy5jbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCAoIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCApXHJcbiAqIOWkjeWItuS9v+eUqOivt+S/neeVmeacrOauteazqOmHiu+8jOaEn+iwouaUr+aMgeW8gOa6kO+8gVxyXG4gKiBcclxuICogdUNoYXJ0c8Ku5a6Y5pa5572R56uZXHJcbiAqIGh0dHBzOi8vd3d3LnVDaGFydHMuY25cclxuICogXHJcbiAqIOW8gOa6kOWcsOWdgDpcclxuICogaHR0cHM6Ly9naXRlZS5jb20vdUNoYXJ0cy91Q2hhcnRzXHJcbiAqIFxyXG4gKiB1bmktYXBw5o+S5Lu25biC5Zy65Zyw5Z2A77yaXHJcbiAqIGh0dHA6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9MjcxXHJcbiAqIFxyXG4gKi9cclxuXHJcbi8vIOS4u+mimOminOiJsumFjee9ru+8muWmguavj+S4quWbvuihqOexu+Wei+mcgOimgeS4jeWQjOS4u+mimO+8jOivt+WcqOWvueW6lOWbvuihqOexu+Wei+S4iuabtOaUuWNvbG9y5bGe5oCnXHJcbmNvbnN0IGNvbG9yID0gWycjMTg5MEZGJywgJyM5MUNCNzQnLCAnI0ZBQzg1OCcsICcjRUU2NjY2JywgJyM3M0MwREUnLCAnIzNDQTI3MicsICcjRkM4NDUyJywgJyM5QTYwQjQnLCAnI2VhN2NjYyddO1xyXG5cclxuLy/kuovku7bovazmjaLlh73mlbDvvIzkuLvopoHnlKjkvZzmoLzlvI/ljJZ46L205Li65pe26Ze06L2077yM5qC55o2u6ZyA5rGC6Ieq6KGM5L+u5pS5XHJcbmNvbnN0IGZvcm1hdERhdGVUaW1lID0gKHRpbWVTdGFtcCwgcmV0dXJuVHlwZSk9PntcclxuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZGF0ZS5zZXRUaW1lKHRpbWVTdGFtcCAqIDEwMDApO1xyXG4gIHZhciB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gIHZhciBtID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICBtID0gbSA8IDEwID8gKCcwJyArIG0pIDogbTtcclxuICB2YXIgZCA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gIGQgPSBkIDwgMTAgPyAoJzAnICsgZCkgOiBkO1xyXG4gIHZhciBoID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gIGggPSBoIDwgMTAgPyAoJzAnICsgaCkgOiBoO1xyXG4gIHZhciBtaW51dGUgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICB2YXIgc2Vjb25kID0gZGF0ZS5nZXRTZWNvbmRzKCk7XHJcbiAgbWludXRlID0gbWludXRlIDwgMTAgPyAoJzAnICsgbWludXRlKSA6IG1pbnV0ZTtcclxuICBzZWNvbmQgPSBzZWNvbmQgPCAxMCA/ICgnMCcgKyBzZWNvbmQpIDogc2Vjb25kO1xyXG4gIGlmKHJldHVyblR5cGUgPT0gJ2Z1bGwnKXtyZXR1cm4geSArICctJyArIG0gKyAnLScgKyBkICsgJyAnKyBoICsnOicgKyBtaW51dGUgKyAnOicgKyBzZWNvbmQ7fVxyXG4gIGlmKHJldHVyblR5cGUgPT0gJ3ktbS1kJyl7cmV0dXJuIHkgKyAnLScgKyBtICsgJy0nICsgZDt9XHJcbiAgaWYocmV0dXJuVHlwZSA9PSAnaDptJyl7cmV0dXJuICBoICsnOicgKyBtaW51dGU7fVxyXG4gIGlmKHJldHVyblR5cGUgPT0gJ2g6bTpzJyl7cmV0dXJuICBoICsnOicgKyBtaW51dGUgKyc6JyArIHNlY29uZDt9XHJcbiAgcmV0dXJuIFt5LCBtLCBkLCBoLCBtaW51dGUsIHNlY29uZF07XHJcbn1cclxuXHJcbmNvbnN0IGNmdSA9IHtcclxuICAvL2RlbW90eXBl5Li66Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5LiA6Iis5LiN6ZyA6KaB6Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5Y+q6ZyA6KaB5pS55qC56IqC54K55LiK5a+55bqU55qE57G75Z6L5Y2z5Y+vXHJcblx0XCJ0eXBlXCI6W1wicGllXCIsXCJyaW5nXCIsXCJyb3NlXCIsXCJ3b3JkXCIsXCJmdW5uZWxcIixcIm1hcFwiLFwiYXJjYmFyXCIsXCJsaW5lXCIsXCJjb2x1bW5cIixcIm1vdW50XCIsXCJiYXJcIixcImFyZWFcIixcInJhZGFyXCIsXCJnYXVnZVwiLFwiY2FuZGxlXCIsXCJtaXhcIixcInRsaW5lXCIsXCJ0YXJlYVwiLFwic2NhdHRlclwiLFwiYnViYmxlXCIsXCJkZW1vdHlwZVwiXSxcclxuXHRcInJhbmdlXCI6W1wi6aW854q25Zu+XCIsXCLlnIbnjq/lm75cIixcIueOq+eRsOWbvlwiLFwi6K+N5LqR5Zu+XCIsXCLmvI/mlpflm75cIixcIuWcsOWbvlwiLFwi5ZyG5byn6L+b5bqm5p2hXCIsXCLmipjnur/lm75cIixcIuafseeKtuWbvlwiLFwi5bGx5bOw5Zu+XCIsXCLmnaHnirblm75cIixcIuWMuuWfn+WbvlwiLFwi6Zu36L6+5Zu+XCIsXCLku6rooajnm5hcIixcIkvnur/lm75cIixcIua3t+WQiOWbvlwiLFwi5pe26Ze06L205oqY57q/XCIsXCLml7bpl7TovbTljLrln59cIixcIuaVo+eCueWbvlwiLFwi5rCU5rOh5Zu+XCIsXCLoh6rlrprkuYnnsbvlnotcIl0sXHJcbiAgLy/lop7liqDoh6rlrprkuYnlm77ooajnsbvlnovvvIzlpoLmnpzpnIDopoFjYXRlZ29yaWVz77yM6K+35Zyo6L+Z6YeM5Yqg5YWl5oKo55qE5Zu+6KGo57G75Z6L77yM5L6L5aaC5pyA5ZCO55qEXCJkZW1vdHlwZVwiXHJcbiAgLy/oh6rlrprkuYnnsbvlnovml7bpnIDopoHms6jmhI9cInRsaW5lXCIsXCJ0YXJlYVwiLFwic2NhdHRlclwiLFwiYnViYmxlXCLnrYnml7bpl7TovbTvvIjnn6Lph4946L2077yJ57G75Zu+6KGo77yM5rKh5pyJY2F0ZWdvcmllc++8jOS4jemcgOimgeWKoOWFpWNhdGVnb3JpZXNcclxuXHRcImNhdGVnb3JpZXNcIjpbXCJsaW5lXCIsXCJjb2x1bW5cIixcIm1vdW50XCIsXCJiYXJcIixcImFyZWFcIixcInJhZGFyXCIsXCJnYXVnZVwiLFwiY2FuZGxlXCIsXCJtaXhcIixcImRlbW90eXBlXCJdLFxyXG4gIC8vaW5zdGFuY2XkuLrlrp7kvovlj5jph4/mib/ovb3lsZ7mgKfvvIzkuI3opoHliKDpmaRcclxuICBcImluc3RhbmNlXCI6e30sXHJcbiAgLy9vcHRpb27kuLpvcHRz5Y+KZW9wdHPmib/ovb3lsZ7mgKfvvIzkuI3opoHliKDpmaRcclxuICBcIm9wdGlvblwiOnt9LFxyXG4gIC8v5LiL6Z2i5piv6Ieq5a6a5LmJZm9ybWF06YWN572u77yM5Zug6ZmkSDXnq6/lpJbnmoTlhbbku5bnq6/ml6Dms5XpgJrov4dwcm9wc+S8oOmAkuWHveaVsO+8jOWPquiDvemAmui/h+atpOWxnuaAp+WvueW6lOS4i+agh+eahOaWueW8j+adpeabv+aNolxyXG4gIFwiZm9ybWF0dGVyXCI6e1xyXG4gICAgXCJ5QXhpc0RlbW8xXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgb3B0cyl7cmV0dXJuIHZhbCsn5YWDJ30sXHJcbiAgICBcInlBeGlzRGVtbzJcIjpmdW5jdGlvbih2YWwsIGluZGV4LCBvcHRzKXtyZXR1cm4gdmFsLnRvRml4ZWQoMil9LFxyXG4gICAgXCJ4QXhpc0RlbW8xXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgb3B0cyl7cmV0dXJuIHZhbCsn5bm0Jzt9LFxyXG4gICAgXCJ4QXhpc0RlbW8yXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgb3B0cyl7cmV0dXJuIGZvcm1hdERhdGVUaW1lKHZhbCwnaDptJyl9LFxyXG4gICAgXCJzZXJpZXNEZW1vMVwiOmZ1bmN0aW9uKHZhbCwgaW5kZXgsIHNlcmllcywgb3B0cyl7cmV0dXJuIHZhbCsn5YWDJ30sXHJcbiAgICBcInRvb2x0aXBEZW1vMVwiOmZ1bmN0aW9uKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyl7XHJcbiAgICAgIGlmKGluZGV4PT0wKXtcclxuICAgICAgXHRyZXR1cm4gJ+maj+S+v+eUqCcraXRlbS5kYXRhKyflubQnXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICBcdHJldHVybiAn5YW25LuW5oiR5rKh5pS5JytpdGVtLmRhdGErJ+WkqSdcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIFwicGllRGVtb1wiOmZ1bmN0aW9uKHZhbCwgaW5kZXgsIHNlcmllcywgb3B0cyl7XHJcbiAgICAgIGlmKGluZGV4ICE9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgIHJldHVybiBzZXJpZXNbaW5kZXhdLm5hbWUrJ++8micrc2VyaWVzW2luZGV4XS5kYXRhKyflhYMnXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgfSxcclxuICAvL+i/memHjOa8lOekuuS6huiHquWumuS5ieaCqOeahOWbvuihqOexu+Wei+eahG9wdGlvbu+8jOWPr+S7pemaj+aEj+WRveWQje+8jOS5i+WQjuWcqOe7hOS7tuS4iiB0eXBlPVwiZGVtb3R5cGVcIiDlkI7vvIznu4Tku7bkvJrosIPnlKjov5nkuKroirHmi6zlj7fph4znmoRvcHRpb27vvIzlpoLmnpznu4Tku7bkuIrov5jlrZjlnKhvcHRz5Y+C5pWw77yM5Lya5bCGZGVtb3R5cGXkuI5vcHRz5Litb3B0aW9u5ZCI5bm25ZCO5riy5p+T5Zu+6KGo44CCXHJcbiAgXCJkZW1vdHlwZVwiOntcclxuICAgIC8v5oiR6L+Z6YeM5oqK5puy57q/5Zu+5b2T5YGa5LqG6Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5oKo5Y+v5Lul5qC55o2u6ZyA6KaB6ZqP5oSP5oyH5a6a57G75Z6L5oiW6YWN572uXHJcbiAgICBcInR5cGVcIjogXCJsaW5lXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gICAgXCJwYWRkaW5nXCI6IFsxNSwxMCwwLDE1XSxcclxuICAgIFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgXCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZ3JpZFR5cGVcIjogXCJkYXNoXCIsXHJcbiAgICAgIFwiZGFzaExlbmd0aFwiOiAyLFxyXG4gICAgfSxcclxuICAgIFwibGVnZW5kXCI6IHtcclxuICAgIH0sXHJcbiAgICBcImV4dHJhXCI6IHtcclxuICAgIFx0XCJsaW5lXCI6IHtcclxuICAgIFx0XHRcInR5cGVcIjogXCJjdXJ2ZVwiLFxyXG4gICAgXHRcdFwid2lkdGhcIjogMlxyXG4gICAgXHR9LFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgLy/kuIvpnaLmmK/oh6rlrprkuYnphY3nva7vvIzor7fmt7vliqDpobnnm67miYDpnIDnmoTpgJrnlKjphY3nva5cclxuXHRcInBpZVwiOntcclxuXHRcdFwidHlwZVwiOiBcInBpZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbNSw1LDUsNV0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJwaWVcIjoge1xyXG5cdFx0XHRcdFwiYWN0aXZlT3BhY2l0eVwiOiAwLjUsXHJcblx0XHRcdFx0XCJhY3RpdmVSYWRpdXNcIjogMTAsXHJcblx0XHRcdFx0XCJvZmZzZXRBbmdsZVwiOiAwLFxyXG5cdFx0XHRcdFwibGFiZWxXaWR0aFwiOiAxNSxcclxuXHRcdFx0XHRcImJvcmRlclwiOiB0cnVlLFxyXG5cdFx0XHRcdFwiYm9yZGVyV2lkdGhcIjogMyxcclxuXHRcdFx0XHRcImJvcmRlckNvbG9yXCI6IFwiI0ZGRkZGRlwiXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcInJpbmdcIjp7XHJcblx0XHRcInR5cGVcIjogXCJyaW5nXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFs1LDUsNSw1XSxcclxuXHRcdFwicm90YXRlXCI6IGZhbHNlLFxyXG5cdFx0XCJkYXRhTGFiZWxcIjogdHJ1ZSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFwicG9zaXRpb25cIjogXCJyaWdodFwiLFxyXG4gICAgICBcImxpbmVIZWlnaHRcIjogMjUsXHJcblx0XHR9LFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiBcIuaUtuebiueOh1wiLFxyXG5cdFx0XHRcImZvbnRTaXplXCI6IDE1LFxyXG5cdFx0XHRcImNvbG9yXCI6IFwiIzY2NjY2NlwiXHJcblx0XHR9LFxyXG5cdFx0XCJzdWJ0aXRsZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiBcIjcwJVwiLFxyXG5cdFx0XHRcImZvbnRTaXplXCI6IDI1LFxyXG5cdFx0XHRcImNvbG9yXCI6IFwiIzdjYjVlY1wiXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwicmluZ1wiOiB7XHJcblx0XHRcdFx0XCJyaW5nV2lkdGhcIjo1MCxcclxuXHRcdFx0XHRcImFjdGl2ZU9wYWNpdHlcIjogMC41LFxyXG5cdFx0XHRcdFwiYWN0aXZlUmFkaXVzXCI6IDEwLFxyXG5cdFx0XHRcdFwib2Zmc2V0QW5nbGVcIjogMCxcclxuXHRcdFx0XHRcImxhYmVsV2lkdGhcIjogMTUsXHJcblx0XHRcdFx0XCJib3JkZXJcIjogdHJ1ZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDMsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiNGRkZGRkZcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwicm9zZVwiOntcclxuXHRcdFwidHlwZVwiOiBcInJvc2VcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzUsNSw1LDVdLFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJwb3NpdGlvblwiOiBcImxlZnRcIixcclxuICAgICAgXCJsaW5lSGVpZ2h0XCI6IDI1LFxyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcInJvc2VcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImFyZWFcIixcclxuXHRcdFx0XHRcIm1pblJhZGl1c1wiOiA1MCxcclxuXHRcdFx0XHRcImFjdGl2ZU9wYWNpdHlcIjogMC41LFxyXG5cdFx0XHRcdFwiYWN0aXZlUmFkaXVzXCI6IDEwLFxyXG5cdFx0XHRcdFwib2Zmc2V0QW5nbGVcIjogMCxcclxuXHRcdFx0XHRcImxhYmVsV2lkdGhcIjogMTUsXHJcblx0XHRcdFx0XCJib3JkZXJcIjogZmFsc2UsXHJcblx0XHRcdFx0XCJib3JkZXJXaWR0aFwiOiAyLFxyXG5cdFx0XHRcdFwiYm9yZGVyQ29sb3JcIjogXCIjRkZGRkZGXCJcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwid29yZFwiOntcclxuXHRcdFwidHlwZVwiOiBcIndvcmRcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJ3b3JkXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJub3JtYWxcIixcclxuXHRcdFx0XHRcImF1dG9Db2xvcnNcIjogZmFsc2VcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJmdW5uZWxcIjp7XHJcblx0XHRcInR5cGVcIjogXCJmdW5uZWxcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiZnVubmVsXCI6IHtcclxuXHRcdFx0XHRcImFjdGl2ZU9wYWNpdHlcIjogMC4zLFxyXG5cdFx0XHRcdFwiYWN0aXZlV2lkdGhcIjogMTAsXHJcblx0XHRcdFx0XCJib3JkZXJcIjogdHJ1ZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDIsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiNGRkZGRkZcIixcclxuXHRcdFx0XHRcImZpbGxPcGFjaXR5XCI6IDEsXHJcblx0XHRcdFx0XCJsYWJlbEFsaWduXCI6IFwicmlnaHRcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJtYXBcIjp7XHJcblx0XHRcInR5cGVcIjogXCJtYXBcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzAsMCwwLDBdLFxyXG4gICAgXCJkYXRhTGFiZWxcIjogdHJ1ZSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcIm1hcFwiOiB7XHJcblx0XHRcdFx0XCJib3JkZXJcIjogdHJ1ZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDEsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcImZpbGxPcGFjaXR5XCI6IDAuNixcclxuXHRcdFx0XHRcImFjdGl2ZUJvcmRlckNvbG9yXCI6IFwiI0YwNDg2NFwiLFxyXG5cdFx0XHRcdFwiYWN0aXZlRmlsbENvbG9yXCI6IFwiI0ZBQ0MxNFwiLFxyXG5cdFx0XHRcdFwiYWN0aXZlRmlsbE9wYWNpdHlcIjogMVxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJhcmNiYXJcIjp7XHJcblx0XHRcInR5cGVcIjogXCJhcmNiYXJcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwi55m+5YiG5q+UXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMjUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjMDBGRjAwXCJcclxuXHRcdH0sXHJcblx0XHRcInN1YnRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwi6buY6K6k5qCH6aKYXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMTUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjNjY2NjY2XCJcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJhcmNiYXJcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImRlZmF1bHRcIixcclxuXHRcdFx0XHRcIndpZHRoXCI6IDEyLFxyXG5cdFx0XHRcdFwiYmFja2dyb3VuZENvbG9yXCI6IFwiI0U5RTlFOVwiLFxyXG5cdFx0XHRcdFwic3RhcnRBbmdsZVwiOiAwLjc1LFxyXG5cdFx0XHRcdFwiZW5kQW5nbGVcIjogMC4yNSxcclxuXHRcdFx0XHRcImdhcFwiOiAyXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cdFwibGluZVwiOntcclxuXHRcdFwidHlwZVwiOiBcImxpbmVcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDEwLDAsMTVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcImxpbmVcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcInN0cmFpZ2h0XCIsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAyXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuICBcInRsaW5lXCI6e1xyXG4gIFx0XCJ0eXBlXCI6IFwibGluZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuICBcdFwicGFkZGluZ1wiOiBbMTUsMTAsMCwxNV0sXHJcbiAgXHRcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gIFx0fSxcclxuICBcdFwieUF4aXNcIjoge1xyXG4gICAgICBcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG4gICAgICBcImRhc2hMZW5ndGhcIjogMixcclxuICAgICAgXCJkYXRhXCI6W1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFwibWluXCI6MCxcclxuICAgICAgICAgIFwibWF4XCI6ODBcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICBcdH0sXHJcbiAgXHRcImxlZ2VuZFwiOiB7XHJcbiAgXHR9LFxyXG4gIFx0XCJleHRyYVwiOiB7XHJcbiAgXHRcdFwibGluZVwiOiB7XHJcbiAgXHRcdFx0XCJ0eXBlXCI6IFwiY3VydmVcIixcclxuICBcdFx0XHRcIndpZHRoXCI6IDJcclxuICBcdFx0fSxcclxuICBcdH1cclxuICB9LFxyXG4gIFwidGFyZWFcIjp7XHJcbiAgXHRcInR5cGVcIjogXCJhcmVhXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwxMCwwLDE1XSxcclxuICBcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICBcdH0sXHJcbiAgXHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcbiAgICAgIFwiZGF0YVwiOltcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcIm1pblwiOjAsXHJcbiAgICAgICAgICBcIm1heFwiOjgwXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgXHR9LFxyXG4gIFx0XCJsZWdlbmRcIjoge1xyXG4gIFx0fSxcclxuICBcdFwiZXh0cmFcIjoge1xyXG4gIFx0XHRcImFyZWFcIjoge1xyXG4gIFx0XHRcdFwidHlwZVwiOiBcImN1cnZlXCIsXHJcbiAgXHRcdFx0XCJvcGFjaXR5XCI6IDAuMixcclxuICBcdFx0XHRcImFkZExpbmVcIjogdHJ1ZSxcclxuICBcdFx0XHRcIndpZHRoXCI6IDIsXHJcbiAgXHRcdFx0XCJncmFkaWVudFwiOiB0cnVlXHJcbiAgXHRcdH0sXHJcbiAgXHR9XHJcbiAgfSxcclxuXHRcImNvbHVtblwiOntcclxuXHRcdFwidHlwZVwiOiBcImNvbHVtblwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCw1XSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGF0YVwiOlt7XCJtaW5cIjowfV1cclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiY29sdW1uXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJncm91cFwiLFxyXG5cdFx0XHRcdFwid2lkdGhcIjogMzAsXHJcblx0XHRcdFx0XCJhY3RpdmVCZ0NvbG9yXCI6IFwiIzAwMDAwMFwiLFxyXG5cdFx0XHRcdFwiYWN0aXZlQmdPcGFjaXR5XCI6IDAuMDhcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG4gIFwibW91bnRcIjp7XHJcbiAgXHRcInR5cGVcIjogXCJtb3VudFwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuICBcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCw1XSxcclxuICBcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcbiAgXHR9LFxyXG4gIFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGF0YVwiOlt7XCJtaW5cIjowfV1cclxuICBcdH0sXHJcbiAgXHRcImxlZ2VuZFwiOiB7XHJcbiAgXHR9LFxyXG4gIFx0XCJleHRyYVwiOiB7XHJcbiAgXHRcdFwibW91bnRcIjoge1xyXG4gIFx0XHRcdFwidHlwZVwiOiBcIm1vdW50XCIsXHJcbiAgXHRcdFx0XCJ3aWR0aFJhdGlvXCI6IDEuNSxcclxuICBcdFx0fSxcclxuICBcdH1cclxuICB9LFxyXG4gIFwiYmFyXCI6e1xyXG4gIFx0XCJ0eXBlXCI6IFwiYmFyXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwzMCwwLDVdLFxyXG4gIFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOmZhbHNlLFxyXG4gICAgICBcIm1pblwiOjAsXHJcbiAgICAgIFwiYXhpc0xpbmVcIjpmYWxzZVxyXG4gIFx0fSxcclxuICBcdFwieUF4aXNcIjoge1xyXG4gIFx0fSxcclxuICBcdFwibGVnZW5kXCI6IHtcclxuICBcdH0sXHJcbiAgXHRcImV4dHJhXCI6IHtcclxuICBcdFx0XCJiYXJcIjoge1xyXG4gIFx0XHRcdFwidHlwZVwiOiBcImdyb3VwXCIsXHJcbiAgXHRcdFx0XCJ3aWR0aFwiOiAzMCxcclxuICBcdFx0XHRcIm1ldGVyQm9yZGVcIjogMSxcclxuICBcdFx0XHRcIm1ldGVyRmlsbENvbG9yXCI6IFwiI0ZGRkZGRlwiLFxyXG4gIFx0XHRcdFwiYWN0aXZlQmdDb2xvclwiOiBcIiMwMDAwMDBcIixcclxuICBcdFx0XHRcImFjdGl2ZUJnT3BhY2l0eVwiOiAwLjA4XHJcbiAgXHRcdH0sXHJcbiAgXHR9XHJcbiAgfSxcclxuXHRcImFyZWFcIjp7XHJcblx0XHRcInR5cGVcIjogXCJhcmVhXCIsXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFsxNSwxNSwwLDE1XSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZ3JpZFR5cGVcIjogXCJkYXNoXCIsXHJcbiAgICAgIFwiZGFzaExlbmd0aFwiOiAyLFxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJhcmVhXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJzdHJhaWdodFwiLFxyXG5cdFx0XHRcdFwib3BhY2l0eVwiOiAwLjIsXHJcblx0XHRcdFx0XCJhZGRMaW5lXCI6IHRydWUsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAyLFxyXG5cdFx0XHRcdFwiZ3JhZGllbnRcIjogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwicmFkYXJcIjp7XHJcblx0XHRcInR5cGVcIjogXCJyYWRhclwiLFxyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbNSw1LDUsNV0sXHJcbiAgICBcImRhdGFMYWJlbFwiOiBmYWxzZSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFwicG9zaXRpb25cIjogXCJyaWdodFwiLFxyXG4gICAgICBcImxpbmVIZWlnaHRcIjogMjUsXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwicmFkYXJcIjoge1xyXG5cdFx0XHRcdFwiZ3JpZFR5cGVcIjogXCJyYWRhclwiLFxyXG5cdFx0XHRcdFwiZ3JpZENvbG9yXCI6IFwiI0NDQ0NDQ1wiLFxyXG5cdFx0XHRcdFwiZ3JpZENvdW50XCI6IDMsXHJcblx0XHRcdFx0XCJvcGFjaXR5XCI6IDAuMixcclxuXHRcdFx0XHRcIm1heFwiOiAyMDBcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwiZ2F1Z2VcIjp7XHJcblx0XHRcInR5cGVcIjogXCJnYXVnZVwiLFxyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogXCI2NkttL0hcIixcclxuXHRcdFx0XCJmb250U2l6ZVwiOiAyNSxcclxuXHRcdFx0XCJjb2xvclwiOiBcIiMyZmMyNWJcIixcclxuXHRcdFx0XCJvZmZzZXRZXCI6IDUwXHJcblx0XHR9LFxyXG5cdFx0XCJzdWJ0aXRsZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiBcIuWunuaXtumAn+W6plwiLFxyXG5cdFx0XHRcImZvbnRTaXplXCI6IDE1LFxyXG5cdFx0XHRcImNvbG9yXCI6IFwiIzE4OTBmZlwiLFxyXG5cdFx0XHRcIm9mZnNldFlcIjogLTUwXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiZ2F1Z2VcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImRlZmF1bHRcIixcclxuXHRcdFx0XHRcIndpZHRoXCI6IDMwLFxyXG5cdFx0XHRcdFwibGFiZWxDb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInN0YXJ0QW5nbGVcIjogMC43NSxcclxuXHRcdFx0XHRcImVuZEFuZ2xlXCI6IDAuMjUsXHJcblx0XHRcdFx0XCJzdGFydE51bWJlclwiOiAwLFxyXG5cdFx0XHRcdFwiZW5kTnVtYmVyXCI6IDEwMCxcclxuXHRcdFx0XHRcImxhYmVsRm9ybWF0XCI6IFwiXCIsXHJcblx0XHRcdFx0XCJzcGxpdExpbmVcIjoge1xyXG5cdFx0XHRcdFx0XCJmaXhSYWRpdXNcIjogMCxcclxuXHRcdFx0XHRcdFwic3BsaXROdW1iZXJcIjogMTAsXHJcblx0XHRcdFx0XHRcIndpZHRoXCI6IDMwLFxyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiBcIiNGRkZGRkZcIixcclxuXHRcdFx0XHRcdFwiY2hpbGROdW1iZXJcIjogNSxcclxuXHRcdFx0XHRcdFwiY2hpbGRXaWR0aFwiOiAxMlxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0XCJwb2ludGVyXCI6IHtcclxuXHRcdFx0XHRcdFwid2lkdGhcIjogMjQsXHJcblx0XHRcdFx0XHRcImNvbG9yXCI6IFwiYXV0b1wiXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fSxcclxuXHRcImNhbmRsZVwiOntcclxuXHRcdFwidHlwZVwiOiBcImNhbmRsZVwiLFxyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCwxNV0sXHJcblx0XHRcImVuYWJsZVNjcm9sbFwiOiB0cnVlLFxyXG5cdFx0XCJlbmFibGVNYXJrTGluZVwiOiB0cnVlLFxyXG5cdFx0XCJkYXRhTGFiZWxcIjogZmFsc2UsXHJcblx0XHRcInhBeGlzXCI6IHtcclxuXHRcdFx0XCJsYWJlbENvdW50XCI6IDQsXHJcblx0XHRcdFwiaXRlbUNvdW50XCI6IDQwLFxyXG5cdFx0XHRcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHRcdFwiZ3JpZENvbG9yXCI6IFwiI0NDQ0NDQ1wiLFxyXG5cdFx0XHRcImdyaWRUeXBlXCI6IFwic29saWRcIixcclxuXHRcdFx0XCJkYXNoTGVuZ3RoXCI6IDQsXHJcblx0XHRcdFwic2Nyb2xsU2hvd1wiOiB0cnVlLFxyXG5cdFx0XHRcInNjcm9sbEFsaWduXCI6IFwibGVmdFwiLFxyXG5cdFx0XHRcInNjcm9sbENvbG9yXCI6IFwiI0E2QTZBNlwiLFxyXG5cdFx0XHRcInNjcm9sbEJhY2tncm91bmRDb2xvclwiOiBcIiNFRkVCRUZcIlxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJjYW5kbGVcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjoge1xyXG5cdFx0XHRcdFx0XCJ1cExpbmVcIjogXCIjZjA0ODY0XCIsXHJcblx0XHRcdFx0XHRcInVwRmlsbFwiOiBcIiNmMDQ4NjRcIixcclxuXHRcdFx0XHRcdFwiZG93bkxpbmVcIjogXCIjMmZjMjViXCIsXHJcblx0XHRcdFx0XHRcImRvd25GaWxsXCI6IFwiIzJmYzI1YlwiXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRcImF2ZXJhZ2VcIjoge1xyXG5cdFx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFx0XHRcIm5hbWVcIjogW1wiTUE1XCIsXCJNQTEwXCIsXCJNQTMwXCJdLFxyXG5cdFx0XHRcdFx0XCJkYXlcIjogWzUsMTAsMjBdLFxyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiBbXCIjMTg5MGZmXCIsXCIjMmZjMjViXCIsXCIjZmFjYzE0XCJdXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcIm1hcmtMaW5lXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJkYXNoXCIsXHJcblx0XHRcdFx0XCJkYXNoTGVuZ3RoXCI6IDUsXHJcblx0XHRcdFx0XCJkYXRhXCI6IFtcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiAyMTUwLFxyXG5cdFx0XHRcdFx0XHRcImxpbmVDb2xvclwiOiBcIiNmMDQ4NjRcIixcclxuXHRcdFx0XHRcdFx0XCJzaG93TGFiZWxcIjogdHJ1ZVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiAyMzUwLFxyXG5cdFx0XHRcdFx0XHRcImxpbmVDb2xvclwiOiBcIiNmMDQ4NjRcIixcclxuXHRcdFx0XHRcdFx0XCJzaG93TGFiZWxcIjogdHJ1ZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdF1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJtaXhcIjp7XHJcblx0XHRcInR5cGVcIjogXCJtaXhcIixcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuXHRcdFx0XCJkaXNhYmxlZFwiOiBmYWxzZSxcclxuXHRcdFx0XCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuXHRcdFx0XCJzcGxpdE51bWJlclwiOiA1LFxyXG5cdFx0XHRcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG5cdFx0XHRcImRhc2hMZW5ndGhcIjogNCxcclxuXHRcdFx0XCJncmlkQ29sb3JcIjogXCIjQ0NDQ0NDXCIsXHJcblx0XHRcdFwicGFkZGluZ1wiOiAxMCxcclxuXHRcdFx0XCJzaG93VGl0bGVcIjogdHJ1ZSxcclxuXHRcdFx0XCJkYXRhXCI6IFtdXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcIm1peFwiOiB7XHJcblx0XHRcdFx0XCJjb2x1bW5cIjoge1xyXG5cdFx0XHRcdFx0XCJ3aWR0aFwiOiAyMFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwic2NhdHRlclwiOntcclxuXHRcdFwidHlwZVwiOiBcInNjYXR0ZXJcIixcclxuXHRcdFwiY29sb3JcIjpjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOlsxNSwxNSwwLDE1XSxcclxuICAgIFwiZGF0YUxhYmVsXCI6ZmFsc2UsXHJcbiAgICBcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJncmlkVHlwZVwiOlwiZGFzaFwiLFxyXG4gICAgICBcInNwbGl0TnVtYmVyXCI6NSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gICAgICBcIm1pblwiOjBcclxuICAgIH0sXHJcbiAgICBcInlBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJncmlkVHlwZVwiOlwiZGFzaFwiLFxyXG4gICAgfSxcclxuICAgIFwibGVnZW5kXCI6IHtcclxuICAgIH0sXHJcbiAgICBcImV4dHJhXCI6IHtcclxuICAgIFx0XCJzY2F0dGVyXCI6IHtcclxuICAgIFx0fSxcclxuICAgIH1cclxuXHR9LFxyXG5cdFwiYnViYmxlXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwiYnViYmxlXCIsXHJcblx0XHRcImNvbG9yXCI6Y29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjpbMTUsMTUsMCwxNV0sXHJcbiAgICBcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiBmYWxzZSxcclxuICAgICAgXCJncmlkVHlwZVwiOlwiZGFzaFwiLFxyXG4gICAgICBcInNwbGl0TnVtYmVyXCI6NSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gICAgICBcIm1pblwiOjAsXHJcbiAgICAgIFwibWF4XCI6MjUwXHJcbiAgICB9LFxyXG4gICAgXCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcbiAgICAgIFwiZ3JpZFR5cGVcIjpcImRhc2hcIixcclxuICAgICAgXCJkYXRhXCI6W3tcclxuICAgICAgICBcIm1pblwiOjAsXHJcbiAgICAgICAgXCJtYXhcIjoxNTBcclxuICAgICAgfV1cclxuICAgIH0sXHJcbiAgICBcImxlZ2VuZFwiOiB7XHJcbiAgICB9LFxyXG4gICAgXCJleHRyYVwiOiB7XHJcbiAgICBcdFwiYnViYmxlXCI6IHtcclxuICAgICAgICBcImJvcmRlclwiOjIsXHJcbiAgICAgICAgXCJvcGFjaXR5XCI6IDAuNSxcclxuICAgIFx0fSxcclxuICAgIH1cclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNmdTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///127\n");
 
/***/ }),
/* 128 */
/*!**********************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js ***!
  \**********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n/*\r\n * uCharts®\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts®官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\n// 通用配置项\n\n// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\nvar color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\nvar cfe = {\n  //demotype为自定义图表类型\n  \"type\": [\"pie\", \"ring\", \"rose\", \"funnel\", \"line\", \"column\", \"area\", \"radar\", \"gauge\", \"candle\", \"demotype\"],\n  //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的\"demotype\"\n  \"categories\": [\"line\", \"column\", \"area\", \"radar\", \"gauge\", \"candle\", \"demotype\"],\n  //instance为实例变量承载属性,option为eopts承载属性,不要删除\n  \"instance\": {},\n  \"option\": {},\n  //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\n  \"formatter\": {\n    \"tooltipDemo1\": function tooltipDemo1(res) {\n      var result = '';\n      for (var i in res) {\n        if (i == 0) {\n          result += res[i].axisValueLabel + '年销售额';\n        }\n        var value = '--';\n        if (res[i].data !== null) {\n          value = res[i].data;\n        }\n        result += '<br/>' + res[i].marker + res[i].seriesName + ':' + value + ' 万元';\n      }\n      return result;\n    },\n    legendFormat: function legendFormat(name) {\n      return \"自定义图例+\" + name;\n    },\n    yAxisFormatDemo: function yAxisFormatDemo(value, index) {\n      return value + '元';\n    },\n    seriesFormatDemo: function seriesFormatDemo(res) {\n      return res.name + '年' + res.value + '元';\n    }\n  },\n  //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。\n  \"demotype\": {\n    \"color\": color\n    //在这里填写echarts的option即可\n  },\n\n  //下面是自定义配置,请添加项目所需的通用配置\n  \"column\": {\n    \"color\": color,\n    \"title\": {\n      \"text\": ''\n    },\n    \"tooltip\": {\n      \"trigger\": 'axis'\n    },\n    \"grid\": {\n      \"top\": 30,\n      \"bottom\": 50,\n      \"right\": 15,\n      \"left\": 40\n    },\n    \"legend\": {\n      \"bottom\": 'left'\n    },\n    \"toolbox\": {\n      \"show\": false\n    },\n    \"xAxis\": {\n      \"type\": 'category',\n      \"axisLabel\": {\n        \"color\": '#666666'\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": '#CCCCCC'\n        }\n      },\n      \"boundaryGap\": true,\n      \"data\": []\n    },\n    \"yAxis\": {\n      \"type\": 'value',\n      \"axisTick\": {\n        \"show\": false\n      },\n      \"axisLabel\": {\n        \"color\": '#666666'\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": '#CCCCCC'\n        }\n      }\n    },\n    \"seriesTemplate\": {\n      \"name\": '',\n      \"type\": 'bar',\n      \"data\": [],\n      \"barwidth\": 20,\n      \"label\": {\n        \"show\": true,\n        \"color\": \"#666666\",\n        \"position\": 'top'\n      }\n    }\n  },\n  \"line\": {\n    \"color\": color,\n    \"title\": {\n      \"text\": ''\n    },\n    \"tooltip\": {\n      \"trigger\": 'axis'\n    },\n    \"grid\": {\n      \"top\": 30,\n      \"bottom\": 50,\n      \"right\": 15,\n      \"left\": 40\n    },\n    \"legend\": {\n      \"top\": 'left',\n      \"textStyle\": {\n        \"color\": '#cccccc'\n      }\n    },\n    \"toolbox\": {\n      \"show\": false\n    },\n    \"xAxis\": {\n      \"type\": 'category',\n      \"axisLabel\": {\n        \"color\": '#CCCCCC'\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": '#CCCCCC'\n        }\n      },\n      \"boundaryGap\": false,\n      \"data\": []\n    },\n    \"yAxis\": {\n      \"type\": 'value',\n      \"axisTick\": {\n        \"show\": false\n      },\n      \"axisLabel\": {\n        \"color\": '#CCCCCC'\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": '#CCCCCC'\n        }\n      }\n    },\n    \"seriesTemplate\": {\n      \"name\": '',\n      \"type\": 'line',\n      \"data\": [],\n      \"barwidth\": 20,\n      \"label\": {\n        \"show\": false,\n        \"color\": \"#666666\",\n        \"position\": 'top'\n      }\n    }\n  },\n  \"area\": {\n    \"color\": color,\n    \"title\": {\n      \"text\": ''\n    },\n    \"tooltip\": {\n      \"trigger\": 'axis'\n    },\n    \"grid\": {\n      \"top\": 30,\n      \"bottom\": 50,\n      \"right\": 15,\n      \"left\": 40\n    },\n    \"legend\": {\n      \"bottom\": 'left'\n    },\n    \"toolbox\": {\n      \"show\": false\n    },\n    \"xAxis\": {\n      \"type\": 'category',\n      \"axisLabel\": {\n        \"color\": '#666666'\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": '#CCCCCC'\n        }\n      },\n      \"boundaryGap\": true,\n      \"data\": []\n    },\n    \"yAxis\": {\n      \"type\": 'value',\n      \"axisTick\": {\n        \"show\": false\n      },\n      \"axisLabel\": {\n        \"color\": '#666666'\n      },\n      \"axisLine\": {\n        \"lineStyle\": {\n          \"color\": '#CCCCCC'\n        }\n      }\n    },\n    \"seriesTemplate\": {\n      \"name\": '',\n      \"type\": 'line',\n      \"data\": [],\n      \"areaStyle\": {},\n      \"label\": {\n        \"show\": true,\n        \"color\": \"#666666\",\n        \"position\": 'top'\n      }\n    }\n  },\n  \"pie\": {\n    \"color\": color,\n    \"title\": {\n      \"text\": ''\n    },\n    \"tooltip\": {\n      \"trigger\": 'item'\n    },\n    \"grid\": {\n      \"top\": 40,\n      \"bottom\": 30,\n      \"right\": 15,\n      \"left\": 15\n    },\n    \"legend\": {\n      \"bottom\": 'left'\n    },\n    \"seriesTemplate\": {\n      \"name\": '',\n      \"type\": 'pie',\n      \"data\": [],\n      \"radius\": '50%',\n      \"label\": {\n        \"show\": true,\n        \"color\": \"#666666\",\n        \"position\": 'top'\n      }\n    }\n  },\n  \"ring\": {\n    \"color\": color,\n    \"title\": {\n      \"text\": ''\n    },\n    \"tooltip\": {\n      \"trigger\": 'item'\n    },\n    \"grid\": {\n      \"top\": 40,\n      \"bottom\": 30,\n      \"right\": 15,\n      \"left\": 15\n    },\n    \"legend\": {\n      \"show\": true,\n      \"bottom\": 'left',\n      \"textStyle\": {\n        \"color\": '#cccccc',\n        \"fontSize\": '4'\n      }\n    },\n    \"seriesTemplate\": {\n      \"name\": '',\n      \"type\": 'pie',\n      \"data\": [],\n      \"radius\": ['30%', '60%'],\n      \"avoidLabelOverlap\": false,\n      \"label\": {\n        \"show\": false,\n        \"color\": \"#FFF\",\n        \"position\": 'top'\n      },\n      \"labelLine\": {\n        \"show\": false\n      }\n    }\n  },\n  \"rose\": {\n    \"color\": color,\n    \"title\": {\n      \"text\": ''\n    },\n    \"tooltip\": {\n      \"trigger\": 'item'\n    },\n    \"legend\": {\n      \"top\": 'bottom'\n    },\n    \"seriesTemplate\": {\n      \"name\": '',\n      \"type\": 'pie',\n      \"data\": [],\n      \"radius\": \"55%\",\n      \"center\": ['50%', '50%'],\n      \"roseType\": 'area'\n    }\n  },\n  \"funnel\": {\n    \"color\": color,\n    \"title\": {\n      \"text\": ''\n    },\n    \"tooltip\": {\n      \"trigger\": 'item',\n      \"formatter\": \"{b} : {c}%\"\n    },\n    \"legend\": {\n      \"top\": 'bottom'\n    },\n    \"seriesTemplate\": {\n      \"name\": '',\n      \"type\": 'funnel',\n      \"left\": '10%',\n      \"top\": 60,\n      \"bottom\": 60,\n      \"width\": '80%',\n      \"min\": 0,\n      \"max\": 100,\n      \"minSize\": '0%',\n      \"maxSize\": '100%',\n      \"sort\": 'descending',\n      \"gap\": 2,\n      \"label\": {\n        \"show\": true,\n        \"position\": 'inside'\n      },\n      \"labelLine\": {\n        \"length\": 10,\n        \"lineStyle\": {\n          \"width\": 1,\n          \"type\": 'solid'\n        }\n      },\n      \"itemStyle\": {\n        \"bordercolor\": '#fff',\n        \"borderwidth\": 1\n      },\n      \"emphasis\": {\n        \"label\": {\n          \"fontSize\": 20\n        }\n      },\n      \"data\": []\n    }\n  },\n  \"gauge\": {\n    \"color\": color,\n    \"tooltip\": {\n      \"formatter\": '{a} <br/>{b} : {c}%'\n    },\n    \"seriesTemplate\": {\n      \"name\": '业务指标',\n      \"type\": 'gauge',\n      \"detail\": {\n        \"formatter\": '{value}%'\n      },\n      \"data\": [{\n        \"value\": 50,\n        \"name\": '完成率'\n      }]\n    }\n  },\n  \"candle\": {\n    \"xAxis\": {\n      \"data\": []\n    },\n    \"yAxis\": {},\n    \"color\": color,\n    \"title\": {\n      \"text\": ''\n    },\n    \"dataZoom\": [{\n      \"type\": 'inside',\n      \"xAxisIndex\": [0, 1],\n      \"start\": 10,\n      \"end\": 100\n    }, {\n      \"show\": true,\n      \"xAxisIndex\": [0, 1],\n      \"type\": 'slider',\n      \"bottom\": 10,\n      \"start\": 10,\n      \"end\": 100\n    }],\n    \"seriesTemplate\": {\n      \"name\": '',\n      \"type\": 'k',\n      \"data\": []\n    }\n  }\n};\nvar _default = cfe;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvY29uZmlnLWVjaGFydHMuanMiXSwibmFtZXMiOlsiY29sb3IiLCJjZmUiLCJyZXMiLCJyZXN1bHQiLCJpIiwiYXhpc1ZhbHVlTGFiZWwiLCJ2YWx1ZSIsImRhdGEiLCJtYXJrZXIiLCJzZXJpZXNOYW1lIiwibGVnZW5kRm9ybWF0IiwibmFtZSIsInlBeGlzRm9ybWF0RGVtbyIsImluZGV4Iiwic2VyaWVzRm9ybWF0RGVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLElBQU1BLEtBQUssR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0FBRWpILElBQU1DLEdBQUcsR0FBRztFQUNWO0VBQ0QsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsUUFBUSxFQUFDLFVBQVUsQ0FBQztFQUN4RztFQUNELFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLFVBQVUsQ0FBQztFQUM5RTtFQUNELFVBQVUsRUFBRSxDQUFDLENBQUM7RUFDZCxRQUFRLEVBQUUsQ0FBQyxDQUFDO0VBQ1g7RUFDQSxXQUFXLEVBQUM7SUFDVixjQUFjLEVBQUMsc0JBQVNDLEdBQUcsRUFBQztNQUMxQixJQUFJQyxNQUFNLEdBQUcsRUFBRTtNQUNmLEtBQUssSUFBSUMsQ0FBQyxJQUFJRixHQUFHLEVBQUU7UUFDbEIsSUFBSUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtVQUNYRCxNQUFNLElBQUlELEdBQUcsQ0FBQ0UsQ0FBQyxDQUFDLENBQUNDLGNBQWMsR0FBRyxNQUFNO1FBQ3pDO1FBQ0EsSUFBSUMsS0FBSyxHQUFHLElBQUk7UUFDaEIsSUFBSUosR0FBRyxDQUFDRSxDQUFDLENBQUMsQ0FBQ0csSUFBSSxLQUFLLElBQUksRUFBRTtVQUN6QkQsS0FBSyxHQUFHSixHQUFHLENBQUNFLENBQUMsQ0FBQyxDQUFDRyxJQUFJO1FBQ3BCO1FBTUFKLE1BQU0sSUFBSSxPQUFPLEdBQUdELEdBQUcsQ0FBQ0UsQ0FBQyxDQUFDLENBQUNJLE1BQU0sR0FBR04sR0FBRyxDQUFDRSxDQUFDLENBQUMsQ0FBQ0ssVUFBVSxHQUFHLEdBQUcsR0FBR0gsS0FBSyxHQUFHLEtBQUs7TUFFNUU7TUFDQSxPQUFPSCxNQUFNO0lBQ2YsQ0FBQztJQUNETyxZQUFZLEVBQUMsc0JBQVNDLElBQUksRUFBQztNQUN6QixPQUFPLFFBQVEsR0FBQ0EsSUFBSTtJQUN0QixDQUFDO0lBQ0RDLGVBQWUsRUFBQyx5QkFBVU4sS0FBSyxFQUFFTyxLQUFLLEVBQUU7TUFDdEMsT0FBT1AsS0FBSyxHQUFHLEdBQUc7SUFDcEIsQ0FBQztJQUNEUSxnQkFBZ0IsRUFBQywwQkFBU1osR0FBRyxFQUFDO01BQzVCLE9BQU9BLEdBQUcsQ0FBQ1MsSUFBSSxHQUFHLEdBQUcsR0FBR1QsR0FBRyxDQUFDSSxLQUFLLEdBQUcsR0FBRztJQUN6QztFQUNGLENBQUM7RUFDRDtFQUNBLFVBQVUsRUFBQztJQUNULE9BQU8sRUFBRU47SUFDVDtFQUVGLENBQUM7O0VBQ0Q7RUFDRCxRQUFRLEVBQUU7SUFDVCxPQUFPLEVBQUVBLEtBQUs7SUFDZCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsU0FBUyxFQUFFO01BQ1YsU0FBUyxFQUFFO0lBQ1osQ0FBQztJQUNELE1BQU0sRUFBRTtNQUNQLEtBQUssRUFBRSxFQUFFO01BQ1QsUUFBUSxFQUFFLEVBQUU7TUFDWixPQUFPLEVBQUUsRUFBRTtNQUNYLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxRQUFRLEVBQUU7TUFDVCxRQUFRLEVBQUU7SUFDWCxDQUFDO0lBQ0QsU0FBUyxFQUFFO01BQ1YsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELE9BQU8sRUFBRTtNQUNSLE1BQU0sRUFBRSxVQUFVO01BQ2xCLFdBQVcsRUFBRTtRQUNaLE9BQU8sRUFBRTtNQUNWLENBQUM7TUFDRCxVQUFVLEVBQUU7UUFDWCxXQUFXLEVBQUU7VUFDWixPQUFPLEVBQUU7UUFDVjtNQUNELENBQUM7TUFDRCxhQUFhLEVBQUUsSUFBSTtNQUNuQixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFLE9BQU87TUFDZixVQUFVLEVBQUU7UUFDWCxNQUFNLEVBQUU7TUFDVCxDQUFDO01BQ0QsV0FBVyxFQUFFO1FBQ1osT0FBTyxFQUFFO01BQ1YsQ0FBQztNQUNELFVBQVUsRUFBRTtRQUNYLFdBQVcsRUFBRTtVQUNaLE9BQU8sRUFBRTtRQUNWO01BQ0Q7SUFDRCxDQUFDO0lBQ0QsZ0JBQWdCLEVBQUU7TUFDakIsTUFBTSxFQUFFLEVBQUU7TUFDVixNQUFNLEVBQUUsS0FBSztNQUNiLE1BQU0sRUFBRSxFQUFFO01BQ1YsVUFBVSxFQUFFLEVBQUU7TUFDZCxPQUFPLEVBQUU7UUFDUixNQUFNLEVBQUUsSUFBSTtRQUNSLE9BQU8sRUFBRSxTQUFTO1FBQ3RCLFVBQVUsRUFBRTtNQUNiO0lBQ0Q7RUFDRCxDQUFDO0VBQ0QsTUFBTSxFQUFFO0lBQ1AsT0FBTyxFQUFFQSxLQUFLO0lBQ2QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELFNBQVMsRUFBRTtNQUNWLFNBQVMsRUFBRTtJQUNaLENBQUM7SUFDRCxNQUFNLEVBQUU7TUFDUCxLQUFLLEVBQUUsRUFBRTtNQUNULFFBQVEsRUFBRSxFQUFFO01BQ1osT0FBTyxFQUFFLEVBQUU7TUFDWCxNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsUUFBUSxFQUFFO01BQ1QsS0FBSyxFQUFFLE1BQU07TUFDYixXQUFXLEVBQUU7UUFDWixPQUFPLEVBQUM7TUFDVDtJQUNELENBQUM7SUFDRCxTQUFTLEVBQUU7TUFDVixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFLFVBQVU7TUFDbEIsV0FBVyxFQUFFO1FBQ1osT0FBTyxFQUFFO01BQ1YsQ0FBQztNQUNELFVBQVUsRUFBRTtRQUNYLFdBQVcsRUFBRTtVQUNaLE9BQU8sRUFBRTtRQUNWO01BQ0QsQ0FBQztNQUNELGFBQWEsRUFBRSxLQUFLO01BQ3BCLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUUsT0FBTztNQUNmLFVBQVUsRUFBRTtRQUNYLE1BQU0sRUFBRTtNQUNULENBQUM7TUFDRCxXQUFXLEVBQUU7UUFDWixPQUFPLEVBQUU7TUFDVixDQUFDO01BQ0QsVUFBVSxFQUFFO1FBQ1gsV0FBVyxFQUFFO1VBQ1osT0FBTyxFQUFFO1FBQ1Y7TUFDRDtJQUNELENBQUM7SUFDRCxnQkFBZ0IsRUFBRTtNQUNqQixNQUFNLEVBQUUsRUFBRTtNQUNWLE1BQU0sRUFBRSxNQUFNO01BQ2QsTUFBTSxFQUFFLEVBQUU7TUFDVixVQUFVLEVBQUUsRUFBRTtNQUNkLE9BQU8sRUFBRTtRQUNSLE1BQU0sRUFBRSxLQUFLO1FBQ1QsT0FBTyxFQUFFLFNBQVM7UUFDdEIsVUFBVSxFQUFFO01BQ2I7SUFDRDtFQUNELENBQUM7RUFDRCxNQUFNLEVBQUU7SUFDUCxPQUFPLEVBQUVBLEtBQUs7SUFDZCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsU0FBUyxFQUFFO01BQ1YsU0FBUyxFQUFFO0lBQ1osQ0FBQztJQUNELE1BQU0sRUFBRTtNQUNQLEtBQUssRUFBRSxFQUFFO01BQ1QsUUFBUSxFQUFFLEVBQUU7TUFDWixPQUFPLEVBQUUsRUFBRTtNQUNYLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxRQUFRLEVBQUU7TUFDVCxRQUFRLEVBQUU7SUFDWCxDQUFDO0lBQ0QsU0FBUyxFQUFFO01BQ1YsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELE9BQU8sRUFBRTtNQUNSLE1BQU0sRUFBRSxVQUFVO01BQ2xCLFdBQVcsRUFBRTtRQUNaLE9BQU8sRUFBRTtNQUNWLENBQUM7TUFDRCxVQUFVLEVBQUU7UUFDWCxXQUFXLEVBQUU7VUFDWixPQUFPLEVBQUU7UUFDVjtNQUNELENBQUM7TUFDRCxhQUFhLEVBQUUsSUFBSTtNQUNuQixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFLE9BQU87TUFDZixVQUFVLEVBQUU7UUFDWCxNQUFNLEVBQUU7TUFDVCxDQUFDO01BQ0QsV0FBVyxFQUFFO1FBQ1osT0FBTyxFQUFFO01BQ1YsQ0FBQztNQUNELFVBQVUsRUFBRTtRQUNYLFdBQVcsRUFBRTtVQUNaLE9BQU8sRUFBRTtRQUNWO01BQ0Q7SUFDRCxDQUFDO0lBQ0QsZ0JBQWdCLEVBQUU7TUFDakIsTUFBTSxFQUFFLEVBQUU7TUFDVixNQUFNLEVBQUUsTUFBTTtNQUNkLE1BQU0sRUFBRSxFQUFFO01BQ1YsV0FBVyxFQUFFLENBQUMsQ0FBQztNQUNmLE9BQU8sRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJO1FBQ1IsT0FBTyxFQUFFLFNBQVM7UUFDdEIsVUFBVSxFQUFFO01BQ2I7SUFDRDtFQUNELENBQUM7RUFDRCxLQUFLLEVBQUU7SUFDTixPQUFPLEVBQUVBLEtBQUs7SUFDZCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsU0FBUyxFQUFFO01BQ1YsU0FBUyxFQUFFO0lBQ1osQ0FBQztJQUNELE1BQU0sRUFBRTtNQUNQLEtBQUssRUFBRSxFQUFFO01BQ1QsUUFBUSxFQUFFLEVBQUU7TUFDWixPQUFPLEVBQUUsRUFBRTtNQUNYLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxRQUFRLEVBQUU7TUFDVCxRQUFRLEVBQUU7SUFDWCxDQUFDO0lBQ0QsZ0JBQWdCLEVBQUU7TUFDakIsTUFBTSxFQUFFLEVBQUU7TUFDVixNQUFNLEVBQUUsS0FBSztNQUNiLE1BQU0sRUFBRSxFQUFFO01BQ1YsUUFBUSxFQUFFLEtBQUs7TUFDZixPQUFPLEVBQUU7UUFDUixNQUFNLEVBQUUsSUFBSTtRQUNSLE9BQU8sRUFBRSxTQUFTO1FBQ3RCLFVBQVUsRUFBRTtNQUNiO0lBQ0Q7RUFDRCxDQUFDO0VBQ0QsTUFBTSxFQUFFO0lBQ1AsT0FBTyxFQUFFQSxLQUFLO0lBQ2QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELFNBQVMsRUFBRTtNQUNWLFNBQVMsRUFBRTtJQUNaLENBQUM7SUFDRCxNQUFNLEVBQUU7TUFDUCxLQUFLLEVBQUUsRUFBRTtNQUNULFFBQVEsRUFBRSxFQUFFO01BQ1osT0FBTyxFQUFFLEVBQUU7TUFDWCxNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsUUFBUSxFQUFFO01BQ1QsTUFBTSxFQUFFLElBQUk7TUFDWixRQUFRLEVBQUUsTUFBTTtNQUNoQixXQUFXLEVBQUU7UUFDWixPQUFPLEVBQUUsU0FBUztRQUNsQixVQUFVLEVBQUU7TUFDYjtJQUNELENBQUM7SUFDRCxnQkFBZ0IsRUFBRTtNQUNqQixNQUFNLEVBQUUsRUFBRTtNQUNWLE1BQU0sRUFBRSxLQUFLO01BQ2IsTUFBTSxFQUFFLEVBQUU7TUFDVixRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO01BQ3hCLG1CQUFtQixFQUFFLEtBQUs7TUFDMUIsT0FBTyxFQUFFO1FBQ1IsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsTUFBTTtRQUNmLFVBQVUsRUFBRTtNQUNiLENBQUM7TUFDRCxXQUFXLEVBQUU7UUFDWixNQUFNLEVBQUU7TUFDVDtJQUNEO0VBQ0QsQ0FBQztFQUNELE1BQU0sRUFBRTtJQUNQLE9BQU8sRUFBRUEsS0FBSztJQUNkLE9BQU8sRUFBRTtNQUNSLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxTQUFTLEVBQUU7TUFDVixTQUFTLEVBQUU7SUFDWixDQUFDO0lBQ0QsUUFBUSxFQUFFO01BQ1QsS0FBSyxFQUFFO0lBQ1IsQ0FBQztJQUNELGdCQUFnQixFQUFFO01BQ2pCLE1BQU0sRUFBRSxFQUFFO01BQ1YsTUFBTSxFQUFFLEtBQUs7TUFDYixNQUFNLEVBQUUsRUFBRTtNQUNWLFFBQVEsRUFBRSxLQUFLO01BQ2YsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztNQUN4QixVQUFVLEVBQUU7SUFDYjtFQUNELENBQUM7RUFDRCxRQUFRLEVBQUU7SUFDVCxPQUFPLEVBQUVBLEtBQUs7SUFDZCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsU0FBUyxFQUFFO01BQ1YsU0FBUyxFQUFFLE1BQU07TUFDakIsV0FBVyxFQUFFO0lBQ2QsQ0FBQztJQUNELFFBQVEsRUFBRTtNQUNULEtBQUssRUFBRTtJQUNSLENBQUM7SUFDRCxnQkFBZ0IsRUFBRTtNQUNqQixNQUFNLEVBQUUsRUFBRTtNQUNWLE1BQU0sRUFBRSxRQUFRO01BQ2hCLE1BQU0sRUFBRSxLQUFLO01BQ2IsS0FBSyxFQUFFLEVBQUU7TUFDVCxRQUFRLEVBQUUsRUFBRTtNQUNaLE9BQU8sRUFBRSxLQUFLO01BQ2QsS0FBSyxFQUFFLENBQUM7TUFDUixLQUFLLEVBQUUsR0FBRztNQUNWLFNBQVMsRUFBRSxJQUFJO01BQ2YsU0FBUyxFQUFFLE1BQU07TUFDakIsTUFBTSxFQUFFLFlBQVk7TUFDcEIsS0FBSyxFQUFFLENBQUM7TUFDUixPQUFPLEVBQUU7UUFDUixNQUFNLEVBQUUsSUFBSTtRQUNaLFVBQVUsRUFBRTtNQUNiLENBQUM7TUFDRCxXQUFXLEVBQUU7UUFDWixRQUFRLEVBQUUsRUFBRTtRQUNaLFdBQVcsRUFBRTtVQUNaLE9BQU8sRUFBRSxDQUFDO1VBQ1YsTUFBTSxFQUFFO1FBQ1Q7TUFDRCxDQUFDO01BQ0QsV0FBVyxFQUFFO1FBQ1osYUFBYSxFQUFFLE1BQU07UUFDckIsYUFBYSxFQUFFO01BQ2hCLENBQUM7TUFDRCxVQUFVLEVBQUU7UUFDWCxPQUFPLEVBQUU7VUFDUixVQUFVLEVBQUU7UUFDYjtNQUNELENBQUM7TUFDRCxNQUFNLEVBQUU7SUFDVDtFQUNELENBQUM7RUFDRCxPQUFPLEVBQUU7SUFDUixPQUFPLEVBQUVBLEtBQUs7SUFDZCxTQUFTLEVBQUU7TUFDTCxXQUFXLEVBQUU7SUFDakIsQ0FBQztJQUNILGdCQUFnQixFQUFFO01BQ2pCLE1BQU0sRUFBRSxNQUFNO01BQ1gsTUFBTSxFQUFFLE9BQU87TUFDZixRQUFRLEVBQUU7UUFBQyxXQUFXLEVBQUU7TUFBVSxDQUFDO01BQ25DLE1BQU0sRUFBRSxDQUFDO1FBQUMsT0FBTyxFQUFFLEVBQUU7UUFBRSxNQUFNLEVBQUU7TUFBSyxDQUFDO0lBQ3pDO0VBQ0QsQ0FBQztFQUNELFFBQVEsRUFBRTtJQUNULE9BQU8sRUFBRTtNQUNSLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsT0FBTyxFQUFFQSxLQUFLO0lBQ2QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELFVBQVUsRUFBRSxDQUFDO01BQ1gsTUFBTSxFQUFFLFFBQVE7TUFDaEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztNQUNwQixPQUFPLEVBQUUsRUFBRTtNQUNYLEtBQUssRUFBRTtJQUNSLENBQUMsRUFDRDtNQUNDLE1BQU0sRUFBRSxJQUFJO01BQ1osWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztNQUNwQixNQUFNLEVBQUUsUUFBUTtNQUNoQixRQUFRLEVBQUUsRUFBRTtNQUNaLE9BQU8sRUFBRSxFQUFFO01BQ1gsS0FBSyxFQUFFO0lBQ1IsQ0FBQyxDQUNEO0lBQ0QsZ0JBQWdCLEVBQUU7TUFDakIsTUFBTSxFQUFFLEVBQUU7TUFDVixNQUFNLEVBQUUsR0FBRztNQUNYLE1BQU0sRUFBRTtJQUNUO0VBQ0Q7QUFDRCxDQUFDO0FBQUEsZUFFY0MsR0FBRztBQUFBIiwiZmlsZSI6IjEyOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIHVDaGFydHPCrlxyXG4gKiDpq5jmgKfog73ot6jlubPlj7Dlm77ooajlupPvvIzmlK/mjIFINeOAgUFQUOOAgeWwj+eoi+W6j++8iOW+ruS/oS/mlK/ku5jlrp0v55m+5bqmL+WktOadoS9RUS8zNjDvvInjgIFWdWXjgIFUYXJv562J5pSv5oyBY2FudmFz55qE5qGG5p625bmz5Y+wXHJcbiAqIENvcHlyaWdodCAoYykgMjAyMSBRSVVOwq7np4vkupEgaHR0cHM6Ly93d3cudWNoYXJ0cy5jbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCAoIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCApXHJcbiAqIOWkjeWItuS9v+eUqOivt+S/neeVmeacrOauteazqOmHiu+8jOaEn+iwouaUr+aMgeW8gOa6kO+8gVxyXG4gKiBcclxuICogdUNoYXJ0c8Ku5a6Y5pa5572R56uZXHJcbiAqIGh0dHBzOi8vd3d3LnVDaGFydHMuY25cclxuICogXHJcbiAqIOW8gOa6kOWcsOWdgDpcclxuICogaHR0cHM6Ly9naXRlZS5jb20vdUNoYXJ0cy91Q2hhcnRzXHJcbiAqIFxyXG4gKiB1bmktYXBw5o+S5Lu25biC5Zy65Zyw5Z2A77yaXHJcbiAqIGh0dHA6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9MjcxXHJcbiAqIFxyXG4gKi9cclxuXHJcbi8vIOmAmueUqOmFjee9rumhuVxyXG5cclxuLy8g5Li76aKY6aKc6Imy6YWN572u77ya5aaC5q+P5Liq5Zu+6KGo57G75Z6L6ZyA6KaB5LiN5ZCM5Li76aKY77yM6K+35Zyo5a+55bqU5Zu+6KGo57G75Z6L5LiK5pu05pS5Y29sb3LlsZ7mgKdcclxuY29uc3QgY29sb3IgPSBbJyMxODkwRkYnLCAnIzkxQ0I3NCcsICcjRkFDODU4JywgJyNFRTY2NjYnLCAnIzczQzBERScsICcjM0NBMjcyJywgJyNGQzg0NTInLCAnIzlBNjBCNCcsICcjZWE3Y2NjJ107XHJcblxyXG5jb25zdCBjZmUgPSB7XHJcbiAgLy9kZW1vdHlwZeS4uuiHquWumuS5ieWbvuihqOexu+Wei1xyXG5cdFwidHlwZVwiOiBbXCJwaWVcIiwgXCJyaW5nXCIsIFwicm9zZVwiLCBcImZ1bm5lbFwiLCBcImxpbmVcIiwgXCJjb2x1bW5cIiwgXCJhcmVhXCIsIFwicmFkYXJcIiwgXCJnYXVnZVwiLFwiY2FuZGxlXCIsXCJkZW1vdHlwZVwiXSxcclxuICAvL+WinuWKoOiHquWumuS5ieWbvuihqOexu+Wei++8jOWmguaenOmcgOimgWNhdGVnb3JpZXPvvIzor7flnKjov5nph4zliqDlhaXmgqjnmoTlm77ooajnsbvlnovkvovlpoLmnIDlkI7nmoRcImRlbW90eXBlXCJcclxuXHRcImNhdGVnb3JpZXNcIjogW1wibGluZVwiLCBcImNvbHVtblwiLCBcImFyZWFcIiwgXCJyYWRhclwiLCBcImdhdWdlXCIsIFwiY2FuZGxlXCIsXCJkZW1vdHlwZVwiXSxcclxuICAvL2luc3RhbmNl5Li65a6e5L6L5Y+Y6YeP5om/6L295bGe5oCn77yMb3B0aW9u5Li6ZW9wdHPmib/ovb3lsZ7mgKfvvIzkuI3opoHliKDpmaRcclxuXHRcImluc3RhbmNlXCI6IHt9LFxyXG5cdFwib3B0aW9uXCI6IHt9LFxyXG4gIC8v5LiL6Z2i5piv6Ieq5a6a5LmJZm9ybWF06YWN572u77yM5Zug6ZmkSDXnq6/lpJbnmoTlhbbku5bnq6/ml6Dms5XpgJrov4dwcm9wc+S8oOmAkuWHveaVsO+8jOWPquiDvemAmui/h+atpOWxnuaAp+WvueW6lOS4i+agh+eahOaWueW8j+adpeabv+aNolxyXG4gIFwiZm9ybWF0dGVyXCI6e1xyXG4gICAgXCJ0b29sdGlwRGVtbzFcIjpmdW5jdGlvbihyZXMpe1xyXG4gICAgICBsZXQgcmVzdWx0ID0gJydcclxuICAgICAgZm9yIChsZXQgaSBpbiByZXMpIHtcclxuICAgICAgXHRpZiAoaSA9PSAwKSB7XHJcbiAgICAgIFx0XHRyZXN1bHQgKz0gcmVzW2ldLmF4aXNWYWx1ZUxhYmVsICsgJ+W5tOmUgOWUruminSdcclxuICAgICAgXHR9XHJcbiAgICAgIFx0bGV0IHZhbHVlID0gJy0tJ1xyXG4gICAgICBcdGlmIChyZXNbaV0uZGF0YSAhPT0gbnVsbCkge1xyXG4gICAgICBcdFx0dmFsdWUgPSByZXNbaV0uZGF0YVxyXG4gICAgICBcdH1cclxuXHJcblxyXG5cclxuICAgICAgXHRcclxuXHJcbiAgICAgIFx0cmVzdWx0ICs9ICc8YnIvPicgKyByZXNbaV0ubWFya2VyICsgcmVzW2ldLnNlcmllc05hbWUgKyAn77yaJyArIHZhbHVlICsgJyDkuIflhYMnXHJcblxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9LFxyXG4gICAgbGVnZW5kRm9ybWF0OmZ1bmN0aW9uKG5hbWUpe1xyXG4gICAgICByZXR1cm4gXCLoh6rlrprkuYnlm77kvosrXCIrbmFtZTtcclxuICAgIH0sXHJcbiAgICB5QXhpc0Zvcm1hdERlbW86ZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xyXG4gICAgICByZXR1cm4gdmFsdWUgKyAn5YWDJztcclxuICAgIH0sXHJcbiAgICBzZXJpZXNGb3JtYXREZW1vOmZ1bmN0aW9uKHJlcyl7XHJcbiAgICAgIHJldHVybiByZXMubmFtZSArICflubQnICsgcmVzLnZhbHVlICsgJ+WFgyc7XHJcbiAgICB9XHJcbiAgfSxcclxuICAvL+i/memHjOa8lOekuuS6huiHquWumuS5ieaCqOeahOWbvuihqOexu+Wei+eahG9wdGlvbu+8jOWPr+S7pemaj+aEj+WRveWQje+8jOS5i+WQjuWcqOe7hOS7tuS4iiB0eXBlPVwiZGVtb3R5cGVcIiDlkI7vvIznu4Tku7bkvJrosIPnlKjov5nkuKroirHmi6zlj7fph4znmoRvcHRpb27vvIzlpoLmnpznu4Tku7bkuIrov5jlrZjlnKhlb3B0c+WPguaVsO+8jOS8muWwhmRlbW90eXBl5LiOZW9wdHPkuK1vcHRpb27lkIjlubblkI7muLLmn5Plm77ooajjgIJcclxuICBcImRlbW90eXBlXCI6e1xyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuICAgIC8v5Zyo6L+Z6YeM5aGr5YaZZWNoYXJ0c+eahG9wdGlvbuWNs+WPr1xyXG4gICAgXHJcbiAgfSxcclxuICAvL+S4i+mdouaYr+iHquWumuS5iemFjee9ru+8jOivt+a3u+WKoOmhueebruaJgOmcgOeahOmAmueUqOmFjee9rlxyXG5cdFwiY29sdW1uXCI6IHtcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJ0ZXh0XCI6ICcnXHJcblx0XHR9LFxyXG5cdFx0XCJ0b29sdGlwXCI6IHtcclxuXHRcdFx0XCJ0cmlnZ2VyXCI6ICdheGlzJ1xyXG5cdFx0fSxcclxuXHRcdFwiZ3JpZFwiOiB7XHJcblx0XHRcdFwidG9wXCI6IDMwLFxyXG5cdFx0XHRcImJvdHRvbVwiOiA1MCxcclxuXHRcdFx0XCJyaWdodFwiOiAxNSxcclxuXHRcdFx0XCJsZWZ0XCI6IDQwXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcImJvdHRvbVwiOiAnbGVmdCcsXHJcblx0XHR9LFxyXG5cdFx0XCJ0b29sYm94XCI6IHtcclxuXHRcdFx0XCJzaG93XCI6IGZhbHNlLFxyXG5cdFx0fSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG5cdFx0XHRcInR5cGVcIjogJ2NhdGVnb3J5JyxcclxuXHRcdFx0XCJheGlzTGFiZWxcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjogJyM2NjY2NjYnXHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYXhpc0xpbmVcIjoge1xyXG5cdFx0XHRcdFwibGluZVN0eWxlXCI6IHtcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogJyNDQ0NDQ0MnXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImJvdW5kYXJ5R2FwXCI6IHRydWUsXHJcblx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge1xyXG5cdFx0XHRcInR5cGVcIjogJ3ZhbHVlJyxcclxuXHRcdFx0XCJheGlzVGlja1wiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IGZhbHNlLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJjb2xvclwiOiAnIzY2NjY2NidcclxuXHRcdFx0fSxcclxuXHRcdFx0XCJheGlzTGluZVwiOiB7XHJcblx0XHRcdFx0XCJsaW5lU3R5bGVcIjoge1xyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiAnI0NDQ0NDQydcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0XCJzZXJpZXNUZW1wbGF0ZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiAnJyxcclxuXHRcdFx0XCJ0eXBlXCI6ICdiYXInLFxyXG5cdFx0XHRcImRhdGFcIjogW10sXHJcblx0XHRcdFwiYmFyd2lkdGhcIjogMjAsXHJcblx0XHRcdFwibGFiZWxcIjoge1xyXG5cdFx0XHRcdFwic2hvd1wiOiB0cnVlLFxyXG4gICAgICAgIFwiY29sb3JcIjogXCIjNjY2NjY2XCIsXHJcblx0XHRcdFx0XCJwb3NpdGlvblwiOiAndG9wJyxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRcImxpbmVcIjoge1xyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcInRleHRcIjogJydcclxuXHRcdH0sXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG5cdFx0XHRcInRyaWdnZXJcIjogJ2F4aXMnXHJcblx0XHR9LFxyXG5cdFx0XCJncmlkXCI6IHtcclxuXHRcdFx0XCJ0b3BcIjogMzAsXHJcblx0XHRcdFwiYm90dG9tXCI6IDUwLFxyXG5cdFx0XHRcInJpZ2h0XCI6IDE1LFxyXG5cdFx0XHRcImxlZnRcIjogNDBcclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHRcdFwidG9wXCI6ICdsZWZ0JyxcclxuXHRcdFx0XCJ0ZXh0U3R5bGVcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjonI2NjY2NjYydcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdFwidG9vbGJveFwiOiB7XHJcblx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdH0sXHJcblx0XHRcInhBeGlzXCI6IHtcclxuXHRcdFx0XCJ0eXBlXCI6ICdjYXRlZ29yeScsXHJcblx0XHRcdFwiYXhpc0xhYmVsXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJib3VuZGFyeUdhcFwiOiBmYWxzZSxcclxuXHRcdFx0XCJkYXRhXCI6IFtdXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcblx0XHRcdFwidHlwZVwiOiAndmFsdWUnLFxyXG5cdFx0XHRcImF4aXNUaWNrXCI6IHtcclxuXHRcdFx0XHRcInNob3dcIjogZmFsc2UsXHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYXhpc0xhYmVsXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRcInNlcmllc1RlbXBsYXRlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6ICcnLFxyXG5cdFx0XHRcInR5cGVcIjogJ2xpbmUnLFxyXG5cdFx0XHRcImRhdGFcIjogW10sXHJcblx0XHRcdFwiYmFyd2lkdGhcIjogMjAsXHJcblx0XHRcdFwibGFiZWxcIjoge1xyXG5cdFx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuICAgICAgICBcImNvbG9yXCI6IFwiIzY2NjY2NlwiLFxyXG5cdFx0XHRcdFwicG9zaXRpb25cIjogJ3RvcCcsXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJhcmVhXCI6IHtcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJ0ZXh0XCI6ICcnXHJcblx0XHR9LFxyXG5cdFx0XCJ0b29sdGlwXCI6IHtcclxuXHRcdFx0XCJ0cmlnZ2VyXCI6ICdheGlzJ1xyXG5cdFx0fSxcclxuXHRcdFwiZ3JpZFwiOiB7XHJcblx0XHRcdFwidG9wXCI6IDMwLFxyXG5cdFx0XHRcImJvdHRvbVwiOiA1MCxcclxuXHRcdFx0XCJyaWdodFwiOiAxNSxcclxuXHRcdFx0XCJsZWZ0XCI6IDQwXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcImJvdHRvbVwiOiAnbGVmdCcsXHJcblx0XHR9LFxyXG5cdFx0XCJ0b29sYm94XCI6IHtcclxuXHRcdFx0XCJzaG93XCI6IGZhbHNlLFxyXG5cdFx0fSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG5cdFx0XHRcInR5cGVcIjogJ2NhdGVnb3J5JyxcclxuXHRcdFx0XCJheGlzTGFiZWxcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjogJyM2NjY2NjYnXHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYXhpc0xpbmVcIjoge1xyXG5cdFx0XHRcdFwibGluZVN0eWxlXCI6IHtcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogJyNDQ0NDQ0MnXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImJvdW5kYXJ5R2FwXCI6IHRydWUsXHJcblx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge1xyXG5cdFx0XHRcInR5cGVcIjogJ3ZhbHVlJyxcclxuXHRcdFx0XCJheGlzVGlja1wiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IGZhbHNlLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJjb2xvclwiOiAnIzY2NjY2NidcclxuXHRcdFx0fSxcclxuXHRcdFx0XCJheGlzTGluZVwiOiB7XHJcblx0XHRcdFx0XCJsaW5lU3R5bGVcIjoge1xyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiAnI0NDQ0NDQydcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0XCJzZXJpZXNUZW1wbGF0ZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiAnJyxcclxuXHRcdFx0XCJ0eXBlXCI6ICdsaW5lJyxcclxuXHRcdFx0XCJkYXRhXCI6IFtdLFxyXG5cdFx0XHRcImFyZWFTdHlsZVwiOiB7fSxcclxuXHRcdFx0XCJsYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcbiAgICAgICAgXCJjb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICd0b3AnLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwicGllXCI6IHtcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJ0ZXh0XCI6ICcnXHJcblx0XHR9LFxyXG5cdFx0XCJ0b29sdGlwXCI6IHtcclxuXHRcdFx0XCJ0cmlnZ2VyXCI6ICdpdGVtJ1xyXG5cdFx0fSxcclxuXHRcdFwiZ3JpZFwiOiB7XHJcblx0XHRcdFwidG9wXCI6IDQwLFxyXG5cdFx0XHRcImJvdHRvbVwiOiAzMCxcclxuXHRcdFx0XCJyaWdodFwiOiAxNSxcclxuXHRcdFx0XCJsZWZ0XCI6IDE1XHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcImJvdHRvbVwiOiAnbGVmdCcsXHJcblx0XHR9LFxyXG5cdFx0XCJzZXJpZXNUZW1wbGF0ZVwiOiB7XHJcblx0XHRcdFwibmFtZVwiOiAnJyxcclxuXHRcdFx0XCJ0eXBlXCI6ICdwaWUnLFxyXG5cdFx0XHRcImRhdGFcIjogW10sXHJcblx0XHRcdFwicmFkaXVzXCI6ICc1MCUnLFxyXG5cdFx0XHRcImxhYmVsXCI6IHtcclxuXHRcdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuICAgICAgICBcImNvbG9yXCI6IFwiIzY2NjY2NlwiLFxyXG5cdFx0XHRcdFwicG9zaXRpb25cIjogJ3RvcCcsXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJyaW5nXCI6IHtcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJ0ZXh0XCI6ICcnXHJcblx0XHR9LFxyXG5cdFx0XCJ0b29sdGlwXCI6IHtcclxuXHRcdFx0XCJ0cmlnZ2VyXCI6ICdpdGVtJ1xyXG5cdFx0fSxcclxuXHRcdFwiZ3JpZFwiOiB7XHJcblx0XHRcdFwidG9wXCI6IDQwLFxyXG5cdFx0XHRcImJvdHRvbVwiOiAzMCxcclxuXHRcdFx0XCJyaWdodFwiOiAxNSxcclxuXHRcdFx0XCJsZWZ0XCI6IDE1XHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJib3R0b21cIjogJ2xlZnQnLFxyXG5cdFx0XHRcInRleHRTdHlsZVwiOiB7XHJcblx0XHRcdFx0XCJjb2xvclwiOiAnI2NjY2NjYycsXHJcblx0XHRcdFx0XCJmb250U2l6ZVwiOiAnNCcsXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRcInNlcmllc1RlbXBsYXRlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6ICcnLFxyXG5cdFx0XHRcInR5cGVcIjogJ3BpZScsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdFx0XCJyYWRpdXNcIjogWyczMCUnLCAnNjAlJ10sXHJcblx0XHRcdFwiYXZvaWRMYWJlbE92ZXJsYXBcIjogZmFsc2UsXHJcblx0XHRcdFwibGFiZWxcIjoge1xyXG5cdFx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdFx0XHRcImNvbG9yXCI6IFwiI0ZGRlwiLFxyXG5cdFx0XHRcdFwicG9zaXRpb25cIjogJ3RvcCcsXHJcblx0XHRcdH0sXHJcblx0XHRcdFwibGFiZWxMaW5lXCI6IHtcclxuXHRcdFx0XHRcInNob3dcIjogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRcInJvc2VcIjoge1xyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcInRleHRcIjogJydcclxuXHRcdH0sXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG5cdFx0XHRcInRyaWdnZXJcIjogJ2l0ZW0nXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiAnYm90dG9tJ1xyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAncGllJyxcclxuXHRcdFx0XCJkYXRhXCI6IFtdLFxyXG5cdFx0XHRcInJhZGl1c1wiOiBcIjU1JVwiLFxyXG5cdFx0XHRcImNlbnRlclwiOiBbJzUwJScsICc1MCUnXSxcclxuXHRcdFx0XCJyb3NlVHlwZVwiOiAnYXJlYScsXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJmdW5uZWxcIjoge1xyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcInRleHRcIjogJydcclxuXHRcdH0sXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG5cdFx0XHRcInRyaWdnZXJcIjogJ2l0ZW0nLFxyXG5cdFx0XHRcImZvcm1hdHRlclwiOiBcIntifSA6IHtjfSVcIlxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJ0b3BcIjogJ2JvdHRvbSdcclxuXHRcdH0sXHJcblx0XHRcInNlcmllc1RlbXBsYXRlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6ICcnLFxyXG5cdFx0XHRcInR5cGVcIjogJ2Z1bm5lbCcsXHJcblx0XHRcdFwibGVmdFwiOiAnMTAlJyxcclxuXHRcdFx0XCJ0b3BcIjogNjAsXHJcblx0XHRcdFwiYm90dG9tXCI6IDYwLFxyXG5cdFx0XHRcIndpZHRoXCI6ICc4MCUnLFxyXG5cdFx0XHRcIm1pblwiOiAwLFxyXG5cdFx0XHRcIm1heFwiOiAxMDAsXHJcblx0XHRcdFwibWluU2l6ZVwiOiAnMCUnLFxyXG5cdFx0XHRcIm1heFNpemVcIjogJzEwMCUnLFxyXG5cdFx0XHRcInNvcnRcIjogJ2Rlc2NlbmRpbmcnLFxyXG5cdFx0XHRcImdhcFwiOiAyLFxyXG5cdFx0XHRcImxhYmVsXCI6IHtcclxuXHRcdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICdpbnNpZGUnXHJcblx0XHRcdH0sXHJcblx0XHRcdFwibGFiZWxMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxlbmd0aFwiOiAxMCxcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcIndpZHRoXCI6IDEsXHJcblx0XHRcdFx0XHRcInR5cGVcIjogJ3NvbGlkJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJpdGVtU3R5bGVcIjoge1xyXG5cdFx0XHRcdFwiYm9yZGVyY29sb3JcIjogJyNmZmYnLFxyXG5cdFx0XHRcdFwiYm9yZGVyd2lkdGhcIjogMVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImVtcGhhc2lzXCI6IHtcclxuXHRcdFx0XHRcImxhYmVsXCI6IHtcclxuXHRcdFx0XHRcdFwiZm9udFNpemVcIjogMjBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRcImdhdWdlXCI6IHtcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG4gICAgICAgIFwiZm9ybWF0dGVyXCI6ICd7YX0gPGJyLz57Yn0gOiB7Y30lJ1xyXG4gICAgfSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJ+S4muWKoeaMh+aghycsXHJcbiAgICAgIFwidHlwZVwiOiAnZ2F1Z2UnLFxyXG4gICAgICBcImRldGFpbFwiOiB7XCJmb3JtYXR0ZXJcIjogJ3t2YWx1ZX0lJ30sXHJcbiAgICAgIFwiZGF0YVwiOiBbe1widmFsdWVcIjogNTAsIFwibmFtZVwiOiAn5a6M5oiQ546HJ31dXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJjYW5kbGVcIjoge1xyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcblx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge30sXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwiZGF0YVpvb21cIjogW3tcclxuXHRcdFx0XHRcInR5cGVcIjogJ2luc2lkZScsXHJcblx0XHRcdFx0XCJ4QXhpc0luZGV4XCI6IFswLCAxXSxcclxuXHRcdFx0XHRcInN0YXJ0XCI6IDEwLFxyXG5cdFx0XHRcdFwiZW5kXCI6IDEwMFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFx0XCJ4QXhpc0luZGV4XCI6IFswLCAxXSxcclxuXHRcdFx0XHRcInR5cGVcIjogJ3NsaWRlcicsXHJcblx0XHRcdFx0XCJib3R0b21cIjogMTAsXHJcblx0XHRcdFx0XCJzdGFydFwiOiAxMCxcclxuXHRcdFx0XHRcImVuZFwiOiAxMDBcclxuXHRcdFx0fVxyXG5cdFx0XSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAnaycsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdH0sXHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjZmU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///128\n");
 
/***/ }),
/* 129 */
/*!*********************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/static/a1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
eval("module.exports = \"/static/a1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2ExLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///129\n");
 
/***/ }),
/* 130 */
/*!*********************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/static/b1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
eval("module.exports = \"/static/b1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2IxLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///130\n");
 
/***/ }),
/* 131 */
/*!*********************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/static/c1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
eval("module.exports = \"/static/c1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2MxLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///131\n");
 
/***/ }),
/* 132 */
/*!*********************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/static/d1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
eval("module.exports = \"/static/d1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2QxLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///132\n");
 
/***/ }),
/* 133 */
/*!*********************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/static/g1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
eval("module.exports = \"/static/g1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2cxLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///133\n");
 
/***/ }),
/* 134 */
/*!*********************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/static/f1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
eval("module.exports = \"/static/f1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2YxLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///134\n");
 
/***/ }),
/* 135 */
/*!*********************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/static/e1.png ***!
  \*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
 
eval("module.exports = \"/static/e1.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2UxLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///135\n");
 
/***/ }),
/* 136 */
/*!*****************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index/index.vue?vue&type=script&lang=js&mpType=page ***!
  \*****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 137);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9sQixDQUFnQixzbEJBQUcsRUFBQyIsImZpbGUiOiIxMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///136\n");
 
/***/ }),
/* 137 */
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/pages/index/index.vue?vue&type=script&lang=js&mpType=page ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 60));\nvar _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 59));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  data: function data() {\n    return {\n      commonUrl: null,\n      // 通用url\n      show: true,\n      modeClass: 'fade',\n      styles: {},\n      baseIP: '',\n      baseLedId: '',\n      basePort: '',\n      crnId: '',\n      value: '',\n      xDistance: 0,\n      yDistance: 0,\n      xDuration: 0,\n      yDuration: 0,\n      used: 317,\n      usedPr: 90,\n      stockCount: 0,\n      emptyCount: 0,\n      noneCount: 0,\n      chartsData: {\n        \"Line\": {\n          \"categories\": [],\n          \"series\": []\n        },\n        \"Pie\": {\n          \"series\": [{\n            \"data\": []\n          }]\n        }\n      },\n      chartsDataLine1: {},\n      chartsDataPie2: {},\n      ringOpts: {},\n      year: 2022,\n      month: 4,\n      day: 14,\n      hours: 13,\n      minutes: 38,\n      seconds: 13,\n      week: '星期四',\n      ani: '',\n      // move: 'upMove 1.5s 1;',\n      move: false,\n      topMove: 'topUp',\n      floorMove: '',\n      version: '',\n      // newspaper:'拣料出库(4426)\\n源库位:1200101\\n目标站:186\\n1101842-10000-22047518517\\n\\n',\t\n      newspaper: '',\n      errorPaper: '',\n      title: '',\n      staNo: '',\n      matnr: '',\n      maknx: '',\n      specs: '',\n      count: '',\n      orderNo: null,\n      doneOfTray: '',\n      totalOfTray: '',\n      doneOfUnit: '',\n      totalOfUnit: '',\n      errorMsg: null,\n      width: 'full-width',\n      errorShow: '',\n      pakinShow: '',\n      pakinGun: '',\n      orderShow: false,\n      swiper: 'swiper-here',\n      autoplay: true,\n      // 自动循环\n      interval: 1000,\n      // 调用时长\n      duration: 8000,\n      // 移动速度\n      matList: [],\n      // 订单列表\n      ejectShow: false\n    };\n  },\n  mounted: function mounted() {\n    var that = this;\n    var BaseIP = uni.getStorageSync('BaseIp');\n    var BaseLedId = uni.getStorageSync('BaseLedId');\n    var BasePort = uni.getStorageSync('BasePort');\n    var BaseCrnId = uni.getStorageSync('BaseCrnId');\n    that.baseIP = BaseIP;\n    that.baseLedId = BaseLedId;\n    that.basePort = BasePort;\n    that.baseCrnId = BaseCrnId;\n    this.getUrl();\n  },\n  onLoad: function onLoad() {},\n  onReady: function onReady() {\n    var _this = this;\n    setInterval(function () {\n      // 获得初始数据\n      _this.initlineChart();\n      _this.initPieChart();\n      // 主页信息\n      _this.getServerData();\n      _this.getOther();\n      // 其他信息\n      _this.getDate();\n      _this.getPakin();\n      _this.getError();\n      // this.getYYY();\n      // this.getEEE();\n      _this.animation();\n      _this.getUrl();\n    }, 1000);\n  },\n  methods: {\n    // 获取url\n    getUrl: function getUrl() {\n      this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + this.baseUrl;\n      this.chartsDataLine1 = JSON.parse(JSON.stringify(_demodata.default.Line));\n    },\n    // 获取错误信息\n    getYYY: function getYYY() {\n      var that = this;\n      var result = _data.default.dataEEE;\n      // 测试用 ↓\n      var res = result.data;\n      // 测试用 ↑\n      // 返回结果有值 且值不等于空值 就是有错误信息需要展示\n      if (res.data && res.data !== \"\") {\n        that.errorMsg = res.data;\n        that.errorShow = true;\n        that.move = false; // 显示\n      } else {\n        that.errorPaper = '';\n        that.errorShow = false;\n        if (that.pakinShow) {\n          return;\n        } else {\n          that.move = true; // 隐藏\n        }\n      }\n    },\n    getEEE: function getEEE() {\n      var that = this;\n      var newsData = '';\n      var str = '';\n      var result = _data.default.dataYYY;\n      // 测试用 ↓\n      var res = result.data;\n      // 测试用 ↑\n      if (res.data && res.data !== null) {\n        if (res.data[0].ioType === 101) {\n          that.title = '全板出库';\n        } else if (res.data[0].ioType === 103) {\n          that.title = '检料出库';\n        }\n        that.staNo = '目标站:' + res.data[0].staNo;\n        that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr;\n        that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx;\n        that.count = '出库数量:' + res.data[0].matDtos[0].count;\n        if (res.data[0].orderNo) {\n          that.orderNo = \"订单号:\" + res.data[0].orderNo;\n          that.orderShow = true;\n          that.width = 'half-width';\n        } else {\n          that.orderNo = null;\n          that.orderShow = false;\n          that.width = 'full-width';\n        }\n        that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray;\n        that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray;\n        that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit;\n        that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit;\n        if (that.errorShow) {\n          return;\n        } else {\n          that.newspaper = newsData;\n          that.move = false;\n        }\n      } else {\n        that.move = true;\n      }\n    },\n    // 获取错误信息\n    getError: function getError() {\n      var that = this;\n      var res;\n      uni.request({\n        url: that.commonUrl + \"/monitor/led/error\",\n        data: {\n          ledId: that.baseLedId\n        },\n        method: 'GET',\n        success: function success(result) {\n          res = result.data;\n          if (res.data && res.data !== \"\") {\n            that.errorMsg = res.data;\n            that.errorShow = true;\n            that.move = false; // 显示\n          } else {\n            that.errorShow = false;\n            // if (that.pakinShow) {\n            // \treturn;\n            // } else {\n            // \t// that.move = true // 隐藏\n            // }\n          }\n        }\n      });\n    },\n    getPakin: function getPakin() {\n      var that = this;\n      that.matList = []; // 清空条码列表\n      var newsData = '';\n      var str = '';\n      var res;\n      uni.request({\n        url: that.commonUrl + \"/monitor/led\",\n        data: {\n          ledId: that.baseLedId\n        },\n        method: 'GET',\n        success: function success(result) {\n          res = result.data;\n          if (that.errorShow) {\n            return; // 有错误信息\n          }\n\n          if (res.data && res.data !== null) {\n            if (res.data[0].ioType === 101) {\n              that.title = '全板出库';\n            } else if (res.data[0].ioType === 103) {\n              that.title = '检料出库';\n            } else that.title = res.data[0].title;\n            that.staNo = '目标站:' + res.data[0].staNo;\n            that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr;\n            that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx;\n            that.specs = '规格:' + res.data[0].matDtos[0].specs;\n            that.count = '出库数量:' + res.data[0].matDtos[0].count;\n            if (res.data[0].orderNo) {\n              that.orderNo = \"订单号:\" + res.data[0].orderNo;\n              that.orderShow = true;\n              that.width = 'half-width';\n            } else {\n              that.orderNo = null;\n              that.orderShow = false;\n              that.width = 'full-width';\n            }\n            that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray;\n            that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray;\n            that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit;\n            that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit;\n            that.newspaper = newsData;\n            that.move = false;\n          } else {\n            that.move = true;\n          }\n        }\n      });\n    },\n    animation: function animation() {\n      if (this.move) {\n        this.topMove = 'topUp';\n        this.floorMove = 'floorUp';\n      } else {\n        this.topMove = 'topDown';\n        this.floorMove = 'floorDown';\n      }\n    },\n    getDateFormat: function getDateFormat(value) {\n      var date = new Date(); // 获取当前时间\n      date.setDate(date.getDate() + value); // 设置天数 -1 天\n      var m = date.getMonth() + 1;\n      var d = date.getDate();\n      var newDate = m + '-' + d;\n      return newDate;\n    },\n    /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/line/charts\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          __f__(\"log\", result, \" at pages/index/index.vue:586\");\n          if (res.code === 200) {\n            that.chartsData.Line.categories = [that.getDateFormat(-11), that.getDateFormat(-10), that.getDateFormat(-9), that.getDateFormat(-8), that.getDateFormat(-7), that.getDateFormat(-6), that.getDateFormat(-5), that.getDateFormat(-4), that.getDateFormat(-3), that.getDateFormat(-2), that.getDateFormat(-1), that.getDateFormat(0)];\n            that.chartsData.Line.series = res.data.rows;\n          }\n        }\n      });\n    },\n    /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {\n      var that = this;\n      uni.request({\n        url: that.commonUrl + \"/monitor/loc/rep\",\n        method: 'GET',\n        success: function success(result) {\n          var res = result.data;\n          if (res.code === 200) {\n            that.chartsData.Pie.series[0].data = res.data.pie;\n            that.stockCount = res.data.stockCunt;\n            that.emptyCount = res.data.emptyCount;\n            that.noneCount = res.data.noneCount;\n            that.used = res.data.used;\n            that.usedPr = res.data.usedPr;\n          }\n        }\n      });\n    },\n    getOther: function getOther() {\n      var that = this;\n      uni.request({\n        // http://10.10.0.222:9090/jkwcs/monitor/led?ledId=186\n        url: that.commonUrl + \"/monitor/other\",\n        data: {\n          crnId: that.baseCrnId,\n          ledId: 1\n        },\n        success: function success(result) {\n          __f__(\"log\", result, \" at pages/index/index.vue:626\");\n          var res = result.data;\n          if (res.code === 200) {\n            that.xDistance = res.data.xDistance;\n            that.yDistance = res.data.yDistance;\n            that.xDuration = res.data.xDuration;\n            that.yDuration = res.data.yDuration;\n          } else if (res.code === 403) {} else {}\n        }\n      });\n    },\n    ejected: function ejected() {\n      this.ejectShow = true;\n    },\n    // 弹出层确认\n    ejectConfirm: function ejectConfirm() {\n      uni.setStorageSync('BaseIp', this.baseIP);\n      uni.setStorageSync('BaseLedId', this.baseLedId);\n      uni.setStorageSync('BasePort', this.basePort);\n      uni.setStorageSync('BaseCrnId', this.baseCrnId);\n      this.getUrl();\n      this.ejectShow = false;\n    },\n    // 弹出层取消\n    ejectClose: function ejectClose() {\n      this.ejectShow = false;\n    },\n    getServerData: function getServerData() {\n      this.chartsDataLine1 = JSON.parse(JSON.stringify(this.chartsData.Line));\n      this.chartsDataPie2 = JSON.parse(JSON.stringify(this.chartsData.Pie));\n    },\n    complete: function complete(e) {\n      __f__(\"log\", \"渲染完成事件\", e, \" at pages/index/index.vue:662\");\n    },\n    getDate: function getDate() {\n      var dt = new Date();\n      this.year = dt.getFullYear();\n      this.month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;\n      this.day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();\n      this.hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();\n      this.minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();\n      this.seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();\n      this.weeks = dt.getDay();\n      switch (this.weeks) {\n        case 0:\n          this.week = \"星期日\";\n          break;\n        case 1:\n          this.week = \"星期一\";\n          break;\n        case 2:\n          this.week = \"星期二\";\n          break;\n        case 3:\n          this.week = \"星期三\";\n          break;\n        case 4:\n          this.week = \"星期四\";\n          break;\n        case 5:\n          this.week = \"星期五\";\n          break;\n        default:\n          this.week = \"星期六\";\n      }\n    }\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJjb21tb25VcmwiLCJzaG93IiwibW9kZUNsYXNzIiwic3R5bGVzIiwiYmFzZUlQIiwiYmFzZUxlZElkIiwiYmFzZVBvcnQiLCJjcm5JZCIsInZhbHVlIiwieERpc3RhbmNlIiwieURpc3RhbmNlIiwieER1cmF0aW9uIiwieUR1cmF0aW9uIiwidXNlZCIsInVzZWRQciIsInN0b2NrQ291bnQiLCJlbXB0eUNvdW50Iiwibm9uZUNvdW50IiwiY2hhcnRzRGF0YSIsImNoYXJ0c0RhdGFMaW5lMSIsImNoYXJ0c0RhdGFQaWUyIiwicmluZ09wdHMiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwid2VlayIsImFuaSIsIm1vdmUiLCJ0b3BNb3ZlIiwiZmxvb3JNb3ZlIiwidmVyc2lvbiIsIm5ld3NwYXBlciIsImVycm9yUGFwZXIiLCJ0aXRsZSIsInN0YU5vIiwibWF0bnIiLCJtYWtueCIsInNwZWNzIiwiY291bnQiLCJvcmRlck5vIiwiZG9uZU9mVHJheSIsInRvdGFsT2ZUcmF5IiwiZG9uZU9mVW5pdCIsInRvdGFsT2ZVbml0IiwiZXJyb3JNc2ciLCJ3aWR0aCIsImVycm9yU2hvdyIsInBha2luU2hvdyIsInBha2luR3VuIiwib3JkZXJTaG93Iiwic3dpcGVyIiwiYXV0b3BsYXkiLCJpbnRlcnZhbCIsImR1cmF0aW9uIiwibWF0TGlzdCIsImVqZWN0U2hvdyIsIm1vdW50ZWQiLCJ0aGF0Iiwib25Mb2FkIiwib25SZWFkeSIsInNldEludGVydmFsIiwibWV0aG9kcyIsImdldFVybCIsImdldFlZWSIsImdldEVFRSIsImdldEVycm9yIiwidW5pIiwidXJsIiwibGVkSWQiLCJtZXRob2QiLCJzdWNjZXNzIiwicmVzIiwiZ2V0UGFraW4iLCJhbmltYXRpb24iLCJnZXREYXRlRm9ybWF0IiwiZGF0ZSIsImluaXRsaW5lQ2hhcnQiLCJpbml0UGllQ2hhcnQiLCJnZXRPdGhlciIsImVqZWN0ZWQiLCJlamVjdENvbmZpcm0iLCJlamVjdENsb3NlIiwiZ2V0U2VydmVyRGF0YSIsImNvbXBsZXRlIiwiZ2V0RGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQTJTQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQUNBO0VBQ0FBO0lBQ0E7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztRQUNBO1VBQ0E7VUFDQTtRQUNBO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7UUFDQTtNQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUFBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUFBO01BQ0FDO0lBRUE7RUFDQTtFQUNBQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQUM7SUFDQUE7SUFDQUE7SUFDQUE7SUFDQTtFQUNBO0VBQ0FDLDJCQUVBO0VBQ0FDO0lBQUE7SUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUVBTjtRQUNBQTtRQUNBQTtNQUNBO1FBQ0FBO1FBQ0FBO1FBQ0E7VUFDQTtRQUNBO1VBQ0FBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FPO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBO1VBQ0FQO1FBQ0E7VUFDQUE7UUFDQTtRQUNBQTtRQUNBQTtRQUNBQTtRQUNBQTtRQUNBO1VBQ0FBO1VBQ0FBO1VBQ0FBO1FBQ0E7VUFDQUE7VUFDQUE7VUFDQUE7UUFDQTtRQUNBQTtRQUNBQTtRQUNBQTtRQUNBQTtRQUNBO1VBQ0E7UUFDQTtVQUNBQTtVQUNBQTtRQUNBO01BQ0E7UUFDQUE7TUFDQTtJQUdBO0lBQ0E7SUFDQVE7TUFDQTtNQUNBO01BQ0FDO1FBQ0FDO1FBQ0F2RTtVQUNBd0U7UUFDQTtRQUNBQztRQUNBQztVQUNBQztVQUNBO1lBQ0FkO1lBQ0FBO1lBQ0FBO1VBQ0E7WUFDQUE7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQWU7TUFDQTtNQUNBZjtNQUNBO01BQ0E7TUFDQTtNQUNBUztRQUNBQztRQUNBdkU7VUFDQXdFO1FBQ0E7UUFDQUM7UUFDQUM7VUFDQUM7VUFDQTtZQUNBO1VBQ0E7O1VBQ0E7WUFDQTtjQUNBZDtZQUNBO2NBQ0FBO1lBQ0EsT0FDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQTtjQUNBQTtjQUNBQTtjQUNBQTtZQUNBO2NBQ0FBO2NBQ0FBO2NBQ0FBO1lBQ0E7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7VUFDQTtZQUNBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FnQjtNQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQSwySEFDQUM7TUFDQTtNQUNBVjtRQUNBQztRQUNBRTtRQUNBQztVQUNBO1VBQ0E7VUFDQTtZQUNBYixtQ0FDQUEsa0dBQ0FBLGdHQUNBQTtZQUNBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0EsMEhBQ0FvQjtNQUNBO01BQ0FYO1FBQ0FDO1FBQ0FFO1FBQ0FDO1VBQ0E7VUFDQTtZQUNBYjtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FxQjtNQUNBO01BQ0FaO1FBQ0E7UUFDQUM7UUFDQXZFO1VBQ0FRO1VBQ0FnRTtRQUNBO1FBQ0FFO1VBQ0E7VUFDQTtVQUNBO1lBQ0FiO1lBQ0FBO1lBQ0FBO1lBQ0FBO1VBQ0EsOEJBRUEsUUFFQTtRQUNBO01BQ0E7SUFDQTtJQUNBc0I7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQWQ7TUFDQUE7TUFDQUE7TUFDQUE7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBZTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7VUFBQTtVQUFBO1FBQ0E7VUFBQTtVQUFBO1FBQ0E7VUFBQTtVQUFBO1FBQ0E7VUFBQTtVQUFBO1FBQ0E7VUFBQTtVQUFBO1FBQ0E7VUFBQTtVQUFBO1FBQ0E7VUFBQTtNQUFBO0lBRUE7RUFDQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiMTM3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHQ8IS0tIOi3s+WKqOS/oeaBr+advyAtLT5cclxuXHRcdDx2aWV3IGNsYXNzPVwiZmxvb3Itc2NyZWVuXCIgOmNsYXNzPVwiZmxvb3JNb3ZlXCIgPlxyXG5cdFx0XHQ8IS0tIOWktOmDqCAtLT5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkXCI+XHJcblx0XHRcdFx0PHRleHQgQGNsaWNrPVwicG9ydCgpXCI+6Ieq5Yqo5LuT5bqTV0NT55uR5o6n5bmz5Y+wPC90ZXh0PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGltZS10b29sc1wiPnt7eWVhcn19LXt7bW9udGh9fS17e2RheX19Jm5ic3B7e2hvdXJzfX06e3ttaW51dGVzfX06e3tzZWNvbmRzfX0mbmJzcHt7d2Vla319PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tcmlnaHRcIiBAY2xpY2s9XCJsZWRJZCgpXCI+PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwibWFpblwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwibWFpbi1zaWRlc1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveFwiIHN0eWxlPVwiaGVpZ2h0OiA5MCU7XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyMVwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIyXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjNcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyNFwiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7XCIgdi1zaG93PVwiIWVycm9yU2hvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0g5YiG5pyJ5peg6K6i5Y2V5YiS5YiG5Lik6YOo5YiGIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0g5bem5L6n5L+h5oGvIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiXCIgOmNsYXNzPVwid2lkdGhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5YWo5p2/5Ye65bqTIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbXNcIj57e3RpdGxlfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIOebruagh+ermSAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1zXCI+e3tzdGFOb319PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDllYblk4HnvJblj7cgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1zXCI+e3ttYXRucn19PC92aWV3PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5ZWG5ZOB5ZCN56ewIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbXNcIj57e21ha254fX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWVhuWTgeWQjeensCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1zXCI+e3tzcGVjc319PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDlh7rlupPmlbDph48gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtc1wiPnt7Y291bnR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogNTAlO2hlaWdodDogMTAwJTtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7ZmxvYXQ6IGxlZnQ7XCIgdi1zaG93PVwib3JkZXJTaG93XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIOiuouWNleWPtyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1zXCI+e3tvcmRlck5vfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIOW3suWHuuaJmOebmOaVsCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1zXCI+e3tkb25lT2ZUcmF5fX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIOaJmOebmOaAu+aVsOmHjyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1zXCI+e3t0b3RhbE9mVHJheX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDlt7Llh7rnrrHmlbAgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtc1wiPnt7ZG9uZU9mVW5pdH19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDmgLvnrrHmlbAgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtc1wiPnt7dG90YWxPZlVuaXR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7XCIgdi1zaG93PVwiZXJyb3JTaG93XCI+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJsaW5lLWhlaWdodDogNzAwcHg7Zm9udC1zaXplOiAxNzVycHg7XCI+e3tlcnJvck1zZ319PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQ8IS0tIOWFqOadv+WHuuW6kyAtLT5cclxuXHRcdFx0XHRcdFx0PCEtLSA8dmlldyBzdHlsZT1cIndpZHRoOiAxMCU7aGVpZ2h0OiAxMDAlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Zsb2F0OiBsZWZ0O3RleHQtYWxpZ246IGNlbnRlcjtwYWRkaW5nLXRvcDogMTgwcHg7XCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQ+e3t0aXRsZX19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+IC0tPlxyXG5cdFx0XHRcdFx0XHQ8IS0tIOa7muWKqOWMuuWfnyAtLT5cclxuXHRcdFx0XHRcdFx0PCEtLSA8dmlldyBzdHlsZT1cIndpZHRoOiA4MCU7aGVpZ2h0OiAxMDAlO2Rpc3BsYXk6IGlubGluZS1ibG9jaztcIj4gLS0+XHJcblx0XHRcdFx0XHRcdFx0PCEtLeaYvuekum9yZGVy6K6i5Y2V57yW5Y+3IC0tPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPHRleHQgdi1zaG93PVwib3JkZXJTaG93XCIgc3R5bGU9XCJkaXNwbGF5OiBibG9jaztmb250LXNpemU6IDE0MHJweDtcIiA+e3tvcmRlck5vfX08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHN3aXBlciA6Y2xhc3M9XCJzd2lwZXJcIiBjaXJjdWxhcj1cInRydWVcIiB2ZXJ0aWNhbD1cInRydWVcIiBkaXNwbGF5LW11bHRpcGxlLWl0ZW1zPVwiNlwiIDphdXRvcGxheT1cImF1dG9wbGF5XCIgOmludGVydmFsPVwiaW50ZXJ2YWxcIiA6ZHVyYXRpb249XCJkdXJhdGlvblwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHN3aXBlci1pdGVtIHYtZm9yPVwiKGl0ZW0saW5kZXgpIGluIG1hdExpc3RcIiA6a2V5PVwiaW5kZXhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJmb250LXNpemU6IDE2MHJweDtcIj57e2l0ZW19fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvc3dpcGVyLWl0ZW0+XHJcblx0XHRcdFx0XHRcdFx0PC9zd2lwZXI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz4gLS0+XHJcblx0XHRcdFx0XHRcdDwhLS0g56uZ5Y+w5Y+3IC0tPlxyXG5cdFx0XHRcdFx0XHQ8IS0tIDx2aWV3IHN0eWxlPVwid2lkdGg6IDEwJTtoZWlnaHQ6IDEwMCU7ZGlzcGxheTogaW5saW5lLWJsb2NrO2Zsb2F0OiByaWdodDtwYWRkaW5nLXRvcDogMTgwcHg7XCI+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQ+e3tzdGFOb319PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+IC0tPlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJ0b3Atc2NyZWVuXCIgOmNsYXNzPVwidG9wTW92ZVwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImhlYWRcIj5cclxuXHRcdFx0XHQ8dGV4dCBAY2xpY2s9XCJwb3J0KClcIj7oh6rliqjku5PlupNXQ1Pnm5HmjqflubPlj7A8L3RleHQ+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aW1lLXRvb2xzXCI+e3t5ZWFyfX0te3ttb250aH19LXt7ZGF5fX0mbmJzcHt7aG91cnN9fTp7e21pbnV0ZXN9fTp7e3NlY29uZHN9fSZuYnNwe3t3ZWVrfX08L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tbGVmdFwiIEBjbGljaz1cImVqZWN0ZWQoKVwiPjwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1yaWdodFwiIEBjbGljaz1cImxlZElkKClcIj48L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJtYWluXCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtYWluLXNpZGVzXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveCBib3gtbGdcIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIxXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjJcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyM1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXI0XCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtIGludHJvZHVjZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxoMz7oh6rliqjljJbnq4vkvZPku5PlupM8L2gzPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiZW5nbGlzaFwiPkF1dG9tYXRpYyBTdG9yYWdlYW5kIFJldHJpZXZhbCBTeXN0ZW08L3A+XHJcblx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJpbnRyb2R1Y2UtY29udGVudFwiPiAg5Yip55So56uL5L2T5LuT5bqT6K6+5aSH5Y+v5a6e546w5LuT5bqT6auY5bGC5ZCI55CG5YyW44CB5a2Y5Y+W6Ieq5Yqo5YyW44CB5pON5L2c566A5L6/5YyW77yb6Ieq5Yqo5YyW56uL5L2T5LuT5bqT5piv5b2T5YmN5oqA5pyv5rC05bmz6L6D6auY55qE5b2i5byP44CCXHJcblx0XHRcdFx0XHRcdFx06Ieq5Yqo5YyW56uL5L2T5LuT5bqT55qE5Li75L2T55Sx6LSn5p6244CB5be36YGT5byP5aCG5Z6b6LW36YeN5py644CB5YWl77yI5Ye677yJ5bqT5bel5L2c5Y+w5ZKM6Ieq5Yqo6L+Q6L+b77yI5Ye677yJ5Y+K5pON5L2c5o6n5Yi257O757uf57uE5oiQ44CCXHJcblx0XHRcdFx0XHRcdFx06LSn5p625piv6ZKi57uT5p6E5oiW6ZKi562L5re35Yed5Zyf57uT5p6E55qE5bu6562R54mp5oiW57uT5p6E5L2T77yM6LSn5p625YaF5piv5qCH5YeG5bC65a+455qE6LSn5L2N56m66Ze077yM5be36YGT5aCG5Z6b6LW36YeN5py656m/6KGM5LqO6LSn5p625LmL6Ze055qE5be36YGT5Lit77yM5a6M5oiQ5a2Y44CB5Y+W6LSn55qE5bel5L2c44CC566h55CG5LiK6YeH55So6K6h566X5py65Y+K5p2h5b2i56CB5oqA5pyv44CCPC9wPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW0gY2hhcmdlLWluZm9cIj5cclxuXHRcdFx0XHRcdFx0XHQ8aDM+5LuT5bqT5pWw5o2uPC9oMz5cclxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cImVuZ2xpc2hcIj53YXJlaG91c2UgZGF0YTwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNoYXJnZS1pbmZvLWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvYTEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJjb3VudFwiPnt7eERpc3RhbmNlfX08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidW5pdFwiPm08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldz7ntK/orqHotbDooYzot53nprso57GzKTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGFyZ2UtaW5mby1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2IxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiY291bnRcIj57e3lEaXN0YW5jZX19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInVuaXRcIj5tPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXc+57Sv6K6h5Y2H6ZmN6Led56a7KOexsyk8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2hhcmdlLWluZm8taXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9jMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cImNvdW50XCI+e3t4RHVyYXRpb259fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ1bml0XCI+bTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3Pue0r+iuoei1sOihjOaXtumVvyjnp5IpPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNoYXJnZS1pbmZvLWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvZDEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJjb3VudFwiPnt7eUR1cmF0aW9ufX08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidW5pdFwiPm08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldz7ntK/orqHljYfpmY3ml7bplb8o56eSKTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbSB1c2UtaW5mb1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidXNlLWxlZnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxoMz7lupPkvY3kvb/nlKjnjoc8L2gzPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJlbmdsaXNoXCI+RVFVSVBNRU5UIFVTQUdFIFRISVMgTU9OVEg8L3A+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidXNlLXJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aDM+e3t1c2VkUHJ9fSU8L2gzPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJlbmdsaXNoXCI+5ZCM5q+U5LiK5pyIICsgNSU8L3A+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidXNlLW1haW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibGVmdFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInByb2dyZXNzQmFyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwcm9ncmVzc1wiIDpzdHlsZT1cIid3aWR0aDonKyB1c2VkUHIgKyAnJSdcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8cHJvZ3Jlc3MgcGVyY2VudD1cIjIwXCJhY3RpdmVDb2xvcj1cIiNGRjU3MjJcIiBiYWNrZ3JvdW5kQ29sb3I9XCIjMjMzNzUxXCIgc3Ryb2tlLXdpZHRoPVwiMzBcIj48L3Byb2dyZXNzPiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwicmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0e3t1c2VkfX1cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtYWluLXNpZGVzXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveCBib3gtdHBcIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIxXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjJcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyM1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXI0XCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtIHJpZ2h0LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN1Yi1sZWZ0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aDM+5YWl5Ye65bqT57uf6K6hPC9oMz5cclxuXHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiZW5nbGlzaFwiPk9SREVSIFNUQVRJU1RJQ1M8L3A+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic3ViLXJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aDM+MzE8L2gzPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJlbmdsaXNoXCI+5LuK5pel6K6i5Y2V5pWwPC9wPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN1Yi1tYWluXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNoYXJ0cy1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHRcdCAgPHFpdW4tZGF0YS1jaGFydHMgdHlwZT1cImxpbmVcIiA6Y2hhcnREYXRhPVwiY2hhcnRzRGF0YUxpbmUxXCIgOmVjaGFydHNINT1cInRydWVcIiA6ZWNoYXJ0c0FwcD1cInRydWVcIi8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveCBib3gtbWRcIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIxXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjJcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyM1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXI0XCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtIHJpZ2h0LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN1Yi1sZWZ0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aDM+5bqT5a2Y57G75Z6LPC9oMz5cclxuXHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiZW5nbGlzaFwiPklOQ09NRSBEQVRFPC9wPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN1Yi1yaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGgzPuS7iuWkqTwvaDM+XHJcblx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cImVuZ2xpc2hcIj5Ub2RheTwvcD5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzdWItbWFpblwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGFydHMtYm94IHJpbmdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHFpdW4tZGF0YS1jaGFydHMgdHlwZT1cInJpbmdcIiA6b3B0cz1cIntsZWdlbmQ6e3Bvc2l0aW9uOidib3R0b20nfX1cIiA6ZW9wdHM9XCJyaW5nT3B0c1wiIDpjaGFydERhdGE9XCJjaGFydHNEYXRhUGllMlwiIDplY2hhcnRzSDU9XCJ0cnVlXCIgOmVjaGFydHNBcHA9XCJ0cnVlXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzdWItbWFpbi1yaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN1Yi1pbmZvXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9nMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD7lnKjlupM8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQ+e3tzdG9ja0NvdW50fX08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzdWItaW5mb1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvZjEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQ+56m65bqTPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7ZW1wdHlDb3VudH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic3ViLWluZm9cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2UxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0PuemgeeUqDwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD57e25vbmVDb3VudH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveCBib3gtYnRcIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXIxXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1ib3JkZXIgYm94LWJvcmRlcjJcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWJvcmRlciBib3gtYm9yZGVyM1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtYm9yZGVyIGJveC1ib3JkZXI0XCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8IS0tIDx0ZXh0Pua1meaxn+S4reaJrOeri+W6k+aKgOacr+aciemZkOWFrOWPuDwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PHRleHQ+5b2T5YmN54mI5pys5Y+3PC90ZXh0PiAtLT5cclxuXHRcdFx0XHRcdFx0PHZpZXcgQGNsaWNrPVwiY3JuKClcIj7lmInlloTovrnplIvmnLrmorDogqHku73mnInpmZDlhazlj7g8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwhLS0gPGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9iYXJjb2RlLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPiAtLT5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3PlxyXG5cdFx0XHQ8IS0tIOi+k+WFpXVybCAtLT5cclxuXHRcdFx0PHVuaS1wb3B1cCByZWY9XCJ1cmxcIiB0eXBlPVwiZGlhbG9nXCI+XHJcblx0XHRcdFx0PHVuaS1wb3B1cC1kaWFsb2cgcmVmPVwiaW5wdXRDbG9zZVwiIG1vZGU9XCJpbnB1dFwiIHRpdGxlPVwi6YWN572udXJsXCIgOnZhbHVlPVwiYmFzZUlQXCJcclxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwi56S65L6LOjE5Mi4xNjguMS4xXCIgQGNvbmZpcm09XCJiYXNlVXJsQ29uZmlybVwiPjwvdW5pLXBvcHVwLWRpYWxvZz5cclxuXHRcdFx0PC91bmktcG9wdXA+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldz5cclxuXHRcdFx0PCEtLSDovpPlhaVsZWRJZCAtLT5cclxuXHRcdFx0PHVuaS1wb3B1cCByZWY9XCJsZWRJZFwiIHR5cGU9XCJkaWFsb2dcIj5cclxuXHRcdFx0XHQ8dW5pLXBvcHVwLWRpYWxvZyByZWY9XCJpbnB1dENsb3NlXCIgbW9kZT1cImlucHV0XCIgdGl0bGU9XCLphY3nva5sZWRJZFwiIDp2YWx1ZT1cImJhc2VMZWRJZFwiXHJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIuekuuS+izoxODhcIiBAY29uZmlybT1cImxlZElkQ29uZmlybVwiPjwvdW5pLXBvcHVwLWRpYWxvZz5cclxuXHRcdFx0PC91bmktcG9wdXA+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldz5cclxuXHRcdFx0PCEtLSDovpPlhaVwb3J0IC0tPlxyXG5cdFx0XHQ8dW5pLXBvcHVwIHJlZj1cInBvcnRcIiB0eXBlPVwiZGlhbG9nXCI+XHJcblx0XHRcdFx0PHVuaS1wb3B1cC1kaWFsb2cgcmVmPVwiaW5wdXRDbG9zZVwiIG1vZGU9XCJpbnB1dFwiIHRpdGxlPVwi6YWN572u56uv5Y+j5Y+3XCIgOnZhbHVlPVwiYmFzZVBvcnRcIlxyXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCLnpLrkvos6OTA5MFwiIEBjb25maXJtPVwicG9ydENvbmZpcm1cIj48L3VuaS1wb3B1cC1kaWFsb2c+XHJcblx0XHRcdDwvdW5pLXBvcHVwPlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHZpZXc+XHJcblx0XHRcdDwhLS0g6L6T5YWlY3JuSWQgLS0+XHJcblx0XHRcdDx1bmktcG9wdXAgcmVmPVwiY3JuSWRcIiB0eXBlPVwiZGlhbG9nXCI+XHJcblx0XHRcdFx0PHVuaS1wb3B1cC1kaWFsb2cgcmVmPVwiaW5wdXRDbG9zZVwiIG1vZGU9XCJpbnB1dFwiIHRpdGxlPVwi6YWN572u5aCG5Z6b5py6XCIgOnZhbHVlPVwiY3JuSWRcIlxyXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCLnpLrkvos6MVwiIEBjb25maXJtPVwiY3JuQ29uZmlybVwiPjwvdW5pLXBvcHVwLWRpYWxvZz5cclxuXHRcdFx0PC91bmktcG9wdXA+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8IS0tIOiHquWumuS5ieW8ueWHuuWxgiAtLT5cclxuXHRcdDx2aWV3IGNsYXNzPVwiZWplY3QtbWFza1wiIHYtc2hvdz1cImVqZWN0U2hvd1wiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImVqZWN0XCI+XHJcblx0XHRcdFx0PCEtLSDlvLnlh7p0aXRsZSAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LXRpdGxlXCI+5L+u5pS5IC8g6YWN572uPC92aWV3PlxyXG5cdFx0XHRcdDwhLS0gaW5wdXQgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJlamVjdC1pbnB1dFwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPmlw77yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VJUFwiPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+cG9ydO+8mjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlUG9ydFwiPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+bGVkSWTvvJo8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZUxlZElkXCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5Dcm5JZO+8mjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlQ3JuSWRcIj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIGJ1dHRvbiAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LWJ1dHRvblwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24taXRlbVwiIEBjbGljaz1cImVqZWN0Q2xvc2VcIj7lj5Yg5raIPC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24taXRlbVwiIEBjbGljaz1cImVqZWN0Q29uZmlybVwiPuehriDorqQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHljcWRhdGEgZnJvbSAnQC9wYWdlcy9pbmRleC9kYXRhLmpzb24nO1xyXG5cdGltcG9ydCBkZW1vZGF0YSBmcm9tICdAL21vY2tkYXRhL2RlbW9kYXRhLmpzb24nO1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0Y29tbW9uVXJsOm51bGwsIC8vIOmAmueUqHVybFxyXG5cdFx0XHRcdHNob3c6IHRydWUsXHJcblx0XHRcdFx0bW9kZUNsYXNzOiAnZmFkZScsXHJcblx0XHRcdFx0c3R5bGVzOiB7fSxcclxuXHRcdFx0XHRiYXNlSVA6JycsXHJcblx0XHRcdFx0YmFzZUxlZElkOicnLFxyXG5cdFx0XHRcdGJhc2VQb3J0OicnLFxyXG5cdFx0XHRcdGNybklkOicnLFxyXG5cdFx0XHRcdHZhbHVlOiAnJyxcclxuXHRcdFx0XHR4RGlzdGFuY2U6IDAsXHJcblx0XHRcdFx0eURpc3RhbmNlOjAsXHJcblx0XHRcdFx0eER1cmF0aW9uOjAsXHJcblx0XHRcdFx0eUR1cmF0aW9uOjAsXHJcblx0XHRcdFx0dXNlZDozMTcsXHJcblx0XHRcdFx0dXNlZFByOiA5MCxcclxuXHRcdFx0XHRzdG9ja0NvdW50OjAsXHJcblx0XHRcdFx0ZW1wdHlDb3VudDowLFxyXG5cdFx0XHRcdG5vbmVDb3VudDowLFxyXG5cdFx0XHRcdGNoYXJ0c0RhdGE6IHtcclxuXHRcdFx0XHRcdFwiTGluZVwiOiB7XHJcblx0XHRcdFx0XHRcdFwiY2F0ZWdvcmllc1wiOiBbXSxcclxuXHRcdFx0XHRcdFx0XCJzZXJpZXNcIjogW11cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcIlBpZVwiOiB7XHJcblx0XHRcdFx0XHRcdFwic2VyaWVzXCI6IFt7XHJcblx0XHRcdFx0XHRcdFx0XCJkYXRhXCI6IFtdXHJcblx0XHRcdFx0XHRcdH1dXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Y2hhcnRzRGF0YUxpbmUxOiB7fSxcclxuXHRcdFx0XHRjaGFydHNEYXRhUGllMjoge30sXHJcblx0XHRcdFx0cmluZ09wdHM6e30sXHJcblx0XHRcdFx0eWVhcjoyMDIyLFxyXG5cdFx0XHRcdG1vbnRoOjQsXHJcblx0XHRcdFx0ZGF5OjE0LFxyXG5cdFx0XHRcdGhvdXJzOjEzLFxyXG5cdFx0XHRcdG1pbnV0ZXM6MzgsXHJcblx0XHRcdFx0c2Vjb25kczoxMyxcclxuXHRcdFx0XHR3ZWVrOifmmJ/mnJ/lm5snLFxyXG5cdFx0XHRcdGFuaTonJyxcclxuXHRcdFx0XHQvLyBtb3ZlOiAndXBNb3ZlIDEuNXMgMTsnLFxyXG5cdFx0XHRcdG1vdmU6ZmFsc2UsXHJcblx0XHRcdFx0dG9wTW92ZTondG9wVXAnLFxyXG5cdFx0XHRcdGZsb29yTW92ZTonJyxcclxuXHRcdFx0XHR2ZXJzaW9uOicnLFxyXG5cdFx0XHRcdC8vIG5ld3NwYXBlcjon5ouj5paZ5Ye65bqT77yINDQyNilcXG7mupDlupPkvY3vvJoxMjAwMTAxXFxu55uu5qCH56uZ77yaMTg2XFxuMTEwMTg0Mi0xMDAwMC0yMjA0NzUxODUxN1xcblxcbicsXHRcclxuXHRcdFx0XHRuZXdzcGFwZXI6JycsXHJcblx0XHRcdFx0ZXJyb3JQYXBlcjonJyxcclxuXHRcdFx0XHR0aXRsZTonJyxcclxuXHRcdFx0XHRzdGFObzonJyxcclxuXHRcdFx0XHRtYXRucjonJyxcclxuXHRcdFx0XHRtYWtueDonJyxcclxuXHRcdFx0XHRzcGVjczonJyxcclxuXHRcdFx0XHRjb3VudDonJyxcclxuXHRcdFx0XHRvcmRlck5vOm51bGwsXHJcblx0XHRcdFx0ZG9uZU9mVHJheTonJyxcclxuXHRcdFx0XHR0b3RhbE9mVHJheTonJyxcclxuXHRcdFx0XHRkb25lT2ZVbml0OicnLFxyXG5cdFx0XHRcdHRvdGFsT2ZVbml0OicnLFxyXG5cdFx0XHRcdGVycm9yTXNnOm51bGwsXHJcblx0XHRcdFx0d2lkdGg6J2Z1bGwtd2lkdGgnLFxyXG5cdFx0XHRcdGVycm9yU2hvdzonJyxcclxuXHRcdFx0XHRwYWtpblNob3c6JycsXHJcblx0XHRcdFx0cGFraW5HdW46JycsXHJcblx0XHRcdFx0b3JkZXJTaG93OmZhbHNlLFxyXG5cdFx0XHRcdHN3aXBlcjonc3dpcGVyLWhlcmUnLFxyXG5cdFx0XHRcdGF1dG9wbGF5OnRydWUsIC8vIOiHquWKqOW+queOr1xyXG5cdFx0XHRcdGludGVydmFsOjEwMDAsIC8vIOiwg+eUqOaXtumVv1xyXG5cdFx0XHRcdGR1cmF0aW9uOjgwMDAsIC8vIOenu+WKqOmAn+W6plxyXG5cdFx0XHRcdG1hdExpc3Q6W10sIC8vIOiuouWNleWIl+ihqFxyXG5cdFx0XHRcdGVqZWN0U2hvdzogZmFsc2UsXHJcblx0XHRcdFx0XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0Y29uc3QgQmFzZUlQID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlSXAnKTtcclxuXHRcdFx0Y29uc3QgQmFzZUxlZElkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnKTtcclxuXHRcdFx0Y29uc3QgQmFzZVBvcnQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyk7XHJcblx0XHRcdGNvbnN0IEJhc2VDcm5JZCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUNybklkJyk7XHJcblx0XHRcdFx0dGhhdC5iYXNlSVAgPSBCYXNlSVBcclxuXHRcdFx0XHR0aGF0LmJhc2VMZWRJZCA9IEJhc2VMZWRJZFxyXG5cdFx0XHRcdHRoYXQuYmFzZVBvcnQgPSBCYXNlUG9ydFxyXG5cdFx0XHRcdHRoYXQuYmFzZUNybklkID0gQmFzZUNybklkXHJcblx0XHRcdHRoaXMuZ2V0VXJsKClcclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoKSB7XHJcblx0XHRcdFxyXG5cdFx0fSxcclxuXHRcdG9uUmVhZHkoKSB7XHJcblx0XHRcdHNldEludGVydmFsKCgpID0+IHtcclxuXHRcdFx0XHQvLyDojrflvpfliJ3lp4vmlbDmja5cclxuXHRcdFx0XHR0aGlzLmluaXRsaW5lQ2hhcnQoKTtcclxuXHRcdFx0XHR0aGlzLmluaXRQaWVDaGFydCgpO1xyXG5cdFx0XHRcdC8vIOS4u+mhteS/oeaBr1xyXG5cdFx0XHRcdHRoaXMuZ2V0U2VydmVyRGF0YSgpO1xyXG5cdFx0XHRcdHRoaXMuZ2V0T3RoZXIoKTtcclxuXHRcdFx0XHQvLyDlhbbku5bkv6Hmga9cclxuXHRcdFx0XHR0aGlzLmdldERhdGUoKTtcclxuXHRcdFx0XHR0aGlzLmdldFBha2luKCk7XHJcblx0XHRcdFx0dGhpcy5nZXRFcnJvcigpO1xyXG5cdFx0XHRcdC8vIHRoaXMuZ2V0WVlZKCk7XHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRFRUUoKTtcclxuXHRcdFx0XHR0aGlzLmFuaW1hdGlvbigpXHJcblx0XHRcdFx0dGhpcy5nZXRVcmwoKVxyXG5cdFx0XHR9LDEwMDApXHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHQvLyDojrflj5Z1cmxcclxuXHRcdFx0Z2V0VXJsKCkge1xyXG5cdFx0XHRcdHRoaXMuY29tbW9uVXJsID0gdGhpcy5iYXNlSHR0cCArIHRoaXMuYmFzZUlQICsgJzonICt0aGlzLmJhc2VQb3J0ICsgdGhpcy5iYXNlVXJsXHJcblx0XHRcdFx0dGhpcy5jaGFydHNEYXRhTGluZTEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRlbW9kYXRhLkxpbmUpKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDojrflj5bplJnor6/kv6Hmga9cclxuXHRcdFx0Z2V0WVlZKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHZhciByZXN1bHQgPSB5Y3FkYXRhLmRhdGFFRUVcclxuXHRcdFx0XHQvLyDmtYvor5XnlKgg4oaTXHJcblx0XHRcdFx0dmFyXHRyZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdC8vIOa1i+ivleeUqCDihpFcclxuXHRcdFx0XHQvLyDov5Tlm57nu5PmnpzmnInlgLwg5LiU5YC85LiN562J5LqO56m65YC8IOWwseaYr+aciemUmeivr+S/oeaBr+mcgOimgeWxleekulxyXG5cdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR0aGF0LmVycm9yTXNnID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdHRoYXQuZXJyb3JTaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0dGhhdC5tb3ZlID0gZmFsc2UgLy8g5pi+56S6XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoYXQuZXJyb3JQYXBlciA9ICcnXHJcblx0XHRcdFx0XHR0aGF0LmVycm9yU2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0XHRpZiAodGhhdC5wYWtpblNob3cpIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0dGhhdC5tb3ZlID0gdHJ1ZSAvLyDpmpDol49cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGdldEVFRSAoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dmFyIG5ld3NEYXRhID0gJydcclxuXHRcdFx0XHR2YXIgc3RyID0gJydcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0geWNxZGF0YS5kYXRhWVlZXHJcblx0XHRcdFx0XHRcdC8vIOa1i+ivleeUqCDihpNcclxuXHRcdFx0XHRsZXRcdHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdC8vIOa1i+ivleeUqCDihpFcclxuXHRcdFx0XHRcdGlmKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwMSkge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQudGl0bGUgPSAn5YWo5p2/5Ye65bqTJ1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDMpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gJ+ajgOaWmeWHuuW6kydcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR0aGF0LnN0YU5vID0gJ+ebruagh+ermTonICsgcmVzLmRhdGFbMF0uc3RhTm9cclxuXHRcdFx0XHRcdFx0dGhhdC5tYXRuciA9ICfllYblk4HnvJblj7fvvJonICsgcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYXRuclxyXG5cdFx0XHRcdFx0XHR0aGF0Lm1ha254ID0gJ+WVhuWTgeWQjeensO+8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1ha254XHJcblx0XHRcdFx0XHRcdHRoYXQuY291bnQgPSAn5Ye65bqT5pWw6YeP77yaJyArIHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uY291bnRcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLm9yZGVyTm8pIHtcclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyTm8gPSBcIuiuouWNleWPt++8mlwiICsgcmVzLmRhdGFbMF0ub3JkZXJOb1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJTaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQud2lkdGggPSAnaGFsZi13aWR0aCdcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyTm8gPSBudWxsO1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHR0aGF0LndpZHRoID0gJ2Z1bGwtd2lkdGgnXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZUcmF5ID0gJ+W3suWHuuaJmOebmOaVsDonICsgcmVzLmRhdGFbMF0uZG9uZU9mVHJheVxyXG5cdFx0XHRcdFx0XHR0aGF0LnRvdGFsT2ZUcmF5ID0gJ+aJmOebmOaAu+aVsOmHj++8micgKyByZXMuZGF0YVswXS50b3RhbE9mVHJheVxyXG5cdFx0XHRcdFx0XHR0aGF0LmRvbmVPZlVuaXQgPSAn5bey5Ye6566x5pWw77yaJyArIHJlcy5kYXRhWzBdLmRvbmVPZlVuaXRcclxuXHRcdFx0XHRcdFx0dGhhdC50b3RhbE9mVW5pdCA9ICfmgLvnrrHmlbDvvJonICsgcmVzLmRhdGFbMF0udG90YWxPZlVuaXRcclxuXHRcdFx0XHRcdFx0aWYgKHRoYXQuZXJyb3JTaG93KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQubmV3c3BhcGVyID0gbmV3c0RhdGFcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5tb3ZlID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1lbHNlIHtcclxuXHRcdFx0XHRcdFx0dGhhdC5tb3ZlID0gdHJ1ZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g6I635Y+W6ZSZ6K+v5L+h5oGvXHJcblx0XHRcdGdldEVycm9yKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHZhciByZXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sZWQvZXJyb3JcIixcclxuXHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0bGVkSWQ6dGhhdC5iYXNlTGVkSWRcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRtZXRob2Q6J0dFVCcsXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHRyZXMgPSByZXN1bHQuZGF0YSBcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5lcnJvck1zZyA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5lcnJvclNob3cgPSB0cnVlXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5tb3ZlID0gZmFsc2UgLy8g5pi+56S6XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5lcnJvclNob3cgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHRcdC8vIGlmICh0aGF0LnBha2luU2hvdykge1xyXG5cdFx0XHRcdFx0XHRcdC8vIFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRcdC8vIH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gXHQvLyB0aGF0Lm1vdmUgPSB0cnVlIC8vIOmakOiXj1xyXG5cdFx0XHRcdFx0XHRcdC8vIH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRQYWtpbiAoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dGhhdC5tYXRMaXN0ID0gW10gLy8g5riF56m65p2h56CB5YiX6KGoXHJcblx0XHRcdFx0dmFyIG5ld3NEYXRhID0gJydcclxuXHRcdFx0XHR2YXIgc3RyID0gJydcclxuXHRcdFx0XHRsZXQgcmVzIFxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xlZFwiLFxyXG5cdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRsZWRJZDp0aGF0LmJhc2VMZWRJZFxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdG1ldGhvZDonR0VUJyxcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGlmICh0aGF0LmVycm9yU2hvdykge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybjsgIC8vIOaciemUmeivr+S/oeaBr1xyXG5cdFx0XHRcdFx0XHR9IFxyXG5cdFx0XHRcdFx0XHRpZihyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwMSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC50aXRsZSA9ICflhajmnb/lh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gJ+ajgOaWmeWHuuW6kydcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2VcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gcmVzLmRhdGFbMF0udGl0bGVcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnN0YU5vID0gJ+ebruagh+ermTonICsgcmVzLmRhdGFbMF0uc3RhTm9cclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm1hdG5yID0gJ+WVhuWTgee8luWPt++8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1hdG5yXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5tYWtueCA9ICfllYblk4HlkI3np7DvvJonICsgcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYWtueFxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuc3BlY3MgPSAn6KeE5qC877yaJyArIHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uc3BlY3NcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmNvdW50ID0gJ+WHuuW6k+aVsOmHj++8micgKyByZXMuZGF0YVswXS5tYXREdG9zWzBdLmNvdW50XHJcblx0XHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLm9yZGVyTm8pIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJObyA9IFwi6K6i5Y2V5Y+377yaXCIgKyByZXMuZGF0YVswXS5vcmRlck5vXHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0Lm9yZGVyU2hvdyA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQud2lkdGggPSAnaGFsZi13aWR0aCdcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5vcmRlck5vID0gbnVsbDtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQub3JkZXJTaG93ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQud2lkdGggPSAnZnVsbC13aWR0aCdcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZUcmF5ID0gJ+W3suWHuuaJmOebmOaVsDonICsgcmVzLmRhdGFbMF0uZG9uZU9mVHJheVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQudG90YWxPZlRyYXkgPSAn5omY55uY5oC75pWw6YeP77yaJyArIHJlcy5kYXRhWzBdLnRvdGFsT2ZUcmF5XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5kb25lT2ZVbml0ID0gJ+W3suWHuueuseaVsO+8micgKyByZXMuZGF0YVswXS5kb25lT2ZVbml0XHJcblx0XHRcdFx0XHRcdFx0dGhhdC50b3RhbE9mVW5pdCA9ICfmgLvnrrHmlbDvvJonICsgcmVzLmRhdGFbMF0udG90YWxPZlVuaXRcclxuXHRcdFx0XHRcdFx0XHR0aGF0Lm5ld3NwYXBlciA9IG5ld3NEYXRhXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5tb3ZlID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0fWVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQubW92ZSA9IHRydWVcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRhbmltYXRpb24oKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMubW92ZSkgeyBcclxuXHRcdFx0XHRcdHRoaXMudG9wTW92ZSA9ICd0b3BVcCdcclxuXHRcdFx0XHRcdHRoaXMuZmxvb3JNb3ZlID0gJ2Zsb29yVXAnXHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMudG9wTW92ZSA9ICd0b3BEb3duJ1xyXG5cdFx0XHRcdFx0dGhpcy5mbG9vck1vdmUgPSAnZmxvb3JEb3duJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0RGF0ZUZvcm1hdCh2YWx1ZSkge1xyXG5cdFx0XHRcdHZhciBkYXRlID0gbmV3IERhdGUoKTsvLyDojrflj5blvZPliY3ml7bpl7RcclxuXHRcdFx0XHRkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyB2YWx1ZSk7Ly8g6K6+572u5aSp5pWwIC0xIOWkqVxyXG5cdFx0XHRcdHZhciBtID0gZGF0ZS5nZXRNb250aCgpICsgMVxyXG5cdFx0XHRcdHZhciBkID0gZGF0ZS5nZXREYXRlKClcclxuXHRcdFx0XHR2YXIgbmV3RGF0ZSA9IG0gKyAnLScgKyBkXHJcblx0XHRcdFx0cmV0dXJuIG5ld0RhdGVcclxuXHRcdFx0fSxcclxuLyoqKioqKioqKioqKioqKiDmipjnur/lm74gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblx0XHRcdGluaXRsaW5lQ2hhcnQoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGluZS9jaGFydHNcIixcclxuXHRcdFx0XHRcdG1ldGhvZDonR0VUJyxcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5MaW5lLmNhdGVnb3JpZXMgPSBbXHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTExKSx0aGF0LmdldERhdGVGb3JtYXQoLTEwKSx0aGF0LmdldERhdGVGb3JtYXQoLTkpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOCksXHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTcpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNiksdGhhdC5nZXREYXRlRm9ybWF0KC01KSx0aGF0LmdldERhdGVGb3JtYXQoLTQpLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5nZXREYXRlRm9ybWF0KC0zKSx0aGF0LmdldERhdGVGb3JtYXQoLTIpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMSksdGhhdC5nZXREYXRlRm9ybWF0KDApLF1cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmNoYXJ0c0RhdGEuTGluZS5zZXJpZXMgPSByZXMuZGF0YS5yb3dzXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG4vKioqKioqKioqKioqKioqIOmlvOWbviAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHRcdFx0aW5pdFBpZUNoYXJ0KCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xvYy9yZXBcIixcclxuXHRcdFx0XHRcdG1ldGhvZDonR0VUJyxcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5QaWUuc2VyaWVzWzBdLmRhdGEgPSByZXMuZGF0YS5waWVcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnN0b2NrQ291bnQgPSByZXMuZGF0YS5zdG9ja0N1bnRcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmVtcHR5Q291bnQgPSByZXMuZGF0YS5lbXB0eUNvdW50XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5ub25lQ291bnQgPSByZXMuZGF0YS5ub25lQ291bnRcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnVzZWQgPSByZXMuZGF0YS51c2VkXHJcblx0XHRcdFx0XHRcdFx0dGhhdC51c2VkUHIgPSByZXMuZGF0YS51c2VkUHJcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGdldE90aGVyKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdC8vIGh0dHA6Ly8xMC4xMC4wLjIyMjo5MDkwL2prd2NzL21vbml0b3IvbGVkP2xlZElkPTE4NlxyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3Ivb3RoZXJcIixcclxuXHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0Y3JuSWQ6IHRoYXQuYmFzZUNybklkLCBcclxuXHRcdFx0XHRcdFx0bGVkSWQ6IDEsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzdWx0KTtcclxuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC54RGlzdGFuY2UgPSByZXMuZGF0YS54RGlzdGFuY2VcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnlEaXN0YW5jZSA9IHJlcy5kYXRhLnlEaXN0YW5jZVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQueER1cmF0aW9uID0gcmVzLmRhdGEueER1cmF0aW9uXHJcblx0XHRcdFx0XHRcdFx0dGhhdC55RHVyYXRpb24gPSByZXMuZGF0YS55RHVyYXRpb25cclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuY29kZSA9PT0gNDAzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlamVjdGVkICgpIHtcclxuXHRcdFx0XHR0aGlzLmVqZWN0U2hvdyA9IHRydWVcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5by55Ye65bGC56Gu6K6kXHJcblx0XHRcdGVqZWN0Q29uZmlybSgpIHtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VJcCcsIHRoaXMuYmFzZUlQKTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VMZWRJZCcsIHRoaXMuYmFzZUxlZElkKTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyx0aGlzLmJhc2VQb3J0KTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcsdGhpcy5iYXNlQ3JuSWQpO1xyXG5cdFx0XHRcdHRoaXMuZ2V0VXJsKClcclxuXHRcdFx0XHR0aGlzLmVqZWN0U2hvdyA9IGZhbHNlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOW8ueWHuuWxguWPlua2iFxyXG5cdFx0XHRlamVjdENsb3NlKCkge1xyXG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0U2VydmVyRGF0YSgpIHtcclxuXHRcdFx0XHR0aGlzLmNoYXJ0c0RhdGFMaW5lMT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY2hhcnRzRGF0YS5MaW5lKSlcclxuXHRcdFx0XHR0aGlzLmNoYXJ0c0RhdGFQaWUyPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jaGFydHNEYXRhLlBpZSkpXHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbXBsZXRlKGUpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhcIua4suafk+WujOaIkOS6i+S7tlwiLGUpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXREYXRlKCkge1xyXG5cdFx0XHRcdHZhciBkdCA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdFx0dGhpcy55ZWFyID0gZHQuZ2V0RnVsbFllYXIoKTtcclxuXHRcdFx0XHR0aGlzLm1vbnRoID0gKGR0LmdldE1vbnRoKCkrMSkgPCAxMCA/ICcwJysgKGR0LmdldE1vbnRoKCkrMSkgOiAoZHQuZ2V0TW9udGgoKSsxKTtcclxuXHRcdFx0XHR0aGlzLmRheSA9IGR0LmdldERhdGUoKSA8IDEwID8gJzAnK2R0LmdldERhdGUoKSA6IGR0LmdldERhdGUoKTtcclxuXHRcdFx0XHR0aGlzLmhvdXJzID0gZHQuZ2V0SG91cnMoKSA8IDEwID8gJzAnICsgZHQuZ2V0SG91cnMoKSA6IGR0LmdldEhvdXJzKCk7XHJcblx0XHRcdFx0dGhpcy5taW51dGVzID0gZHQuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkdC5nZXRNaW51dGVzKCkgOiBkdC5nZXRNaW51dGVzKCk7XHJcblx0XHRcdFx0dGhpcy5zZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpIDwgMTAgPyAnMCcgKyBkdC5nZXRTZWNvbmRzKCkgOiBkdC5nZXRTZWNvbmRzKCk7IFxyXG5cdFx0XHRcdHRoaXMud2Vla3MgPSBkdC5nZXREYXkoKTsgXHJcblx0XHRcdFx0c3dpdGNoICh0aGlzLndlZWtzKSB7XHJcblx0XHRcdFx0XHRjYXNlIDA6IHRoaXMud2VlayA9IFwi5pif5pyf5pelXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSAxOiB0aGlzLndlZWsgPSBcIuaYn+acn+S4gFwiOyBicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgMjogdGhpcy53ZWVrID0gXCLmmJ/mnJ/kuoxcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDM6IHRoaXMud2VlayA9IFwi5pif5pyf5LiJXCI7IGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSA0OiB0aGlzLndlZWsgPSBcIuaYn+acn+Wbm1wiOyBicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgNTogdGhpcy53ZWVrID0gXCLmmJ/mnJ/kupRcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRkZWZhdWx0IDogdGhpcy53ZWVrID0gXCLmmJ/mnJ/lha1cIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuXHQvKiDlvLnlh7o66YWN572u5Yy65Z+fICovXHJcblx0LmVqZWN0LW1hc2sge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XHJcblx0XHRwb3NpdGlvbjogZml4ZWQ7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRsZWZ0OiAwO1xyXG5cdFx0ei1pbmRleDogOTk5O1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcdFxyXG5cdH1cclxuXHQuZWplY3R7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHR3aWR0aDogNjAwcHg7XHJcblx0XHRoZWlnaHQ6IDM1MHB4O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDI1cnB4O1xyXG5cdH1cclxuXHQuZWplY3QtdGl0bGUge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDEwMHB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEwMHB4O1xyXG5cdFx0Zm9udC1zaXplOiAyMHB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcclxuXHRcdGNvbG9yOiBcdCM2MDYyNjY7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0fVxyXG5cdC5lamVjdC1pbnB1dCB7XHJcblx0XHRcclxuXHR9XHJcblx0Lml0ZW0ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRtYXJnaW46IDEwcHggMCAwIDA7XHJcblx0fVxyXG5cdC5kZXNjIHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdHdpZHRoOiA0MCU7XHJcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcclxuXHRcdGNvbG9yOiAjNjA2MjY2O1xyXG5cdFx0Zm9udC1zaXplOiAxOHB4O1xyXG5cdH1cclxuXHQuaW5wdXQge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDVweDtcclxuXHRcdHBhZGRpbmctcmlnaHQ6IDVweDtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAzMHB4O1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI0MwQzRDQztcclxuXHRcdG1hcmdpbi1yaWdodDogNTBweDtcclxuXHR9XHJcblx0LmVqZWN0LWlucHV0IGlucHV0IHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHJcblx0XHRcclxuXHR9XHJcblx0LmVqZWN0LWJ1dHRvbiB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdGhlaWdodDogNjBweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiA2MHB4O1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcclxuXHR9XHJcblx0LmJ1dHRvbi1pdGVtIHtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRmb250LXNpemU6IDIwcHg7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGNvbG9yOiAjOTA5Mzk5O1xyXG5cdH1cclxuXHQuYnV0dG9uLWl0ZW06bGFzdC1jaGlsZCB7XHJcblx0XHRjb2xvcjogIzY3QzIzQTtcclxuXHRcdFxyXG5cdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xyXG5cdH1cclxuXHQuZnVsbC13aWR0aCB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdH1cclxuXHQuaGFsZi13aWR0aCB7XHJcblx0XHR3aWR0aDogNTAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0fVxyXG5cdC5ib3gtaXRlbXMge1xyXG5cdFx0aGVpZ2h0OiAyMCU7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMyMzM3NTE7ICovXHJcblx0XHRsaW5lLWhlaWdodDogMzAwcnB4O1xyXG5cdH1cclxuXHQvKiDlvZPliY3pobXpnaLml6Agb3JkZXJObyAqL1xyXG5cdC5zd2lwZXItaGVyZSB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRtYXJnaW46IDAgYXV0bztcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdH1cclxuXHQvKiDlvZPliY3pobXpnaLmnIkgb3JkZXJObyAqL1xyXG5cdC5zd2lwZXItaGVyZS1vTntcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwNjNBN0I7ICovXHJcblx0XHRtYXJnaW46IDAgYXV0bztcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiA5MCU7XHJcblx0fVxyXG5cdC8qIOW9k+WJjemhtemdouaciSBlcnJvcuaPkOekuiAqL1xyXG5cdC5zd2lwZXItaGVyZS1lcnJvciB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMDYzQTdCOyAqL1xyXG5cdFx0LyogbWFyZ2luOiAwIGF1dG87ICovXHJcblx0XHRtYXJnaW4tdG9wOiAyMCU7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHR9XHJcblx0LmFuaW1hdGUge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdCAgICAgICAgICAgIC8qIHdoaXRlLXNwYWNlOiBub3dyYXA7ICovXHJcblx0ICAgICAgICAgICAgYW5pbWF0aW9uOiAyNXMgd29yZHNMb29wIGxpbmVhciBpbmZpbml0ZSBub3JtYWw7XHJcblx0ICAgICAgICB9XHJcblx0IFxyXG5cdCAgICAgICAgQGtleWZyYW1lcyB3b3Jkc0xvb3Age1xyXG5cdCAgICAgICAgICAgIDAlIHtcclxuXHQgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcclxuXHQgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpO1xyXG5cdCAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAxMDAlIHtcclxuXHQgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcclxuXHQgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xyXG5cdCAgICAgICAgICAgIH1cclxuXHQgICAgICAgIH1cclxuXHQgXHJcblx0ICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgd29yZHNMb29wIHtcclxuXHQgICAgICAgICAgICAwJSB7XHJcblx0ICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XHJcblx0ICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgMTAwJSB7XHJcblx0ICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XHJcblx0ICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICB9XHJcblx0LyogYW5pbWF0aW9uOnVwTW92ZSAxLjVzIDE7ICovXHJcblx0LyogZG93bk1vdmUgKi9cclxuXHQvKiDkuIrlsYLlkJHkuIogKi9cclxuXHQudG9wVXAge1xyXG5cdFx0YW5pbWF0aW9uOiB0b3BVcCAxLjVzIDE7XHJcblx0XHRhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xyXG5cdH1cclxuXHRAa2V5ZnJhbWVzIHRvcFVwIHtcclxuXHRcdGZyb20ge1xyXG5cdFx0XHRvcGFjaXR5OiAwLjU7XHJcblx0XHRcdC8qIGJhY2tncm91bmQtY29sb3I6Ymx1ZTsgKi9cclxuXHRcdFx0dG9wOi0xMDgwcHhcclxuXHRcdFx0fVxyXG5cdFx0dG8ge1xyXG5cdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOnJlZDsgKi9cclxuXHRcdFx0dG9wOiAwO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKiDkuIrlsYLlkJHkuIsgKi9cclxuXHQudG9wRG93biB7XHJcblx0XHRhbmltYXRpb246IHRvcERvd24gMS41cyAxO1xyXG5cdFx0YW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcclxuXHR9XHJcblx0QGtleWZyYW1lcyB0b3BEb3duXHJcblx0XHR7XHJcblx0XHRmcm9tIHtcclxuXHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdFx0LyogYmFja2dyb3VuZC1jb2xvcjpyZWQ7ICovXHJcblx0XHRcdHRvcDogMDtcclxuXHRcdH1cclxuXHRcdHRvIHtcclxuXHRcdFx0b3BhY2l0eTogMC41O1xyXG5cdFx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOmJsdWU7ICovXHJcblx0XHRcdHRvcDotMTA4MHB4XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qIOS4i+WxguWQkeS4iiAqL1xyXG5cdC5mbG9vclVwIHtcclxuXHRcdGFuaW1hdGlvbjogZmxvb3JVcCAxLjVzIDE7XHJcblx0XHRhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xyXG5cdH1cclxuXHRAa2V5ZnJhbWVzIGZsb29yVXAge1xyXG5cdFx0ZnJvbSB7XHJcblx0XHRcdG9wYWNpdHk6IDAuNTtcclxuXHRcdFx0LyogYmFja2dyb3VuZC1jb2xvcjpibHVlOyAqL1xyXG5cdFx0XHR0b3A6IDBweDtcclxuXHRcdFx0fVxyXG5cdFx0dG8ge1xyXG5cdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOnJlZDsgKi9cclxuXHRcdFx0dG9wOiAxMDgwcHg7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qIOS4i+WxguWQkeS4iyAqL1xyXG5cdC5mbG9vckRvd24ge1xyXG5cdFx0YW5pbWF0aW9uOiBmbG9vckRvd24gMS41cyAxO1xyXG5cdFx0YW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcclxuXHR9XHJcblx0QGtleWZyYW1lcyBmbG9vckRvd24ge1xyXG5cdFx0ZnJvbSB7XHJcblx0XHRcdG9wYWNpdHk6IDAuNTtcclxuXHRcdFx0LyogYmFja2dyb3VuZC1jb2xvcjpibHVlOyAqL1xyXG5cdFx0XHR0b3A6IDEwODBweDtcclxuXHRcdFx0fVxyXG5cdFx0dG8ge1xyXG5cdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOnJlZDsgKi9cclxuXHRcdFx0dG9wOiAtMHB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHQudG9wLXNjcmVlbiB7XHJcblx0XHRwb3NpdGlvbjogZml4ZWQ7XHJcblx0XHR3aWR0aDogMTkyMHB4O1xyXG5cdFx0aGVpZ2h0OiAxMDgwcHg7XHJcblx0XHQvKiB0b3A6IC0xMDAwcHg7ICovXHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcclxuXHRcdC8qIGJhY2tncm91bmQ6cmVkOyAqL1xyXG5cdFx0LyogYW5pbWF0aW9uOnVwTW92ZSAxLjVzIDE7ICovXHJcblx0XHR6LWluZGV4OiA5OTk7XHJcblx0fVxyXG5cdC5mbG9vci1zY3JlZW4ge1xyXG5cdFx0d2lkdGg6IDE5MjBweDtcclxuXHRcdGhlaWdodDogMTA4MHB4O1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0Y29sb3I6ICNGRkZGRkY7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRmb250LXNpemU6IDEyMHJweDtcclxuXHRcdGxldHRlci1zcGFjaW5nOiA1cnB4O1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9iYWNrZ3JvdW5kLnBuZyk7XHJcblx0fVxyXG5cdC5jb250YWluZXIge1xyXG5cdFx0d2lkdGg6IDE5MjBweDtcclxuXHRcdGhlaWdodDogMTA4MHB4O1xyXG5cdFx0XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHQvKiBiYWNrZ3JvdW5kOiAjMDAwNDI4OyAgXHJcblx0XHRiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzAwNGU5MiwgIzAwMDQyOCk7ICBcclxuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzAwNGU5MiwgIzAwMDQyOCk7ICovXHJcblx0fVxyXG5cdC5oZWFkIHtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICM1NWFhZmY7ICovXHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMTAlO1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDExMHB4O1xyXG5cdFx0Y29sb3I6ICNGRkZGRkY7XHJcblx0XHRmb250LXNpemU6IDQwcHg7XHJcblx0XHRmb250LXdlaWdodDogNzAwO1xyXG5cdFx0bGV0dGVyLXNwYWNpbmc6IDVweDtcclxuXHR9XHJcblx0LmhlYWQgdGV4dCB7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDEsMC45KTtcclxuXHR9XHJcblx0LnRpbWUtdG9vbHMge1xyXG5cdFx0aGVpZ2h0OiA1JTtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwMDdBRkY7ICovXHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRyaWdodDogNTBweDtcclxuXHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiA0MDA7XHJcblx0XHRsaW5lLWhlaWdodDogNzBweDtcclxuXHRcdGxldHRlci1zcGFjaW5nOiAxcHg7XHJcblx0fVxyXG5cdC5idXR0b24tbGVmdCB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL3JpZ2h0LnBuZyk7XHJcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcclxuXHRcdHRvcDogMS44JTtcclxuXHRcdGxlZnQ6IDIxLjMlO1xyXG5cdFx0d2lkdGg6IDEzLjUlO1xyXG5cdFx0aGVpZ2h0OiA4LjUlO1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xyXG5cdH1cclxuXHQuYnV0dG9uLXJpZ2h0IHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvcmlnaHQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xyXG5cdFx0dG9wOiAxLjglO1xyXG5cdFx0bGVmdDogNjUlO1xyXG5cdFx0d2lkdGg6IDEzLjUlO1xyXG5cdFx0aGVpZ2h0OiA4LjUlO1xyXG5cdH1cclxuXHQubWFpbiB7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjM0Y1MzZFOyAqL1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRoZWlnaHQ6IDkwJTtcclxuXHR9XHJcblx0Lm1haW4tc2lkZXMge1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzAwNEU5MjsgKi9cclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdC8qIG1hcmdpbjogMiUgYXV0byAwIDMuMiU7XHJcblx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwLCA4MCwgMTM2LCAxKTsgKi9cclxuXHR9XHJcblx0LmJveCB7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyAqL1xyXG5cdFx0bWFyZ2luOiAzJSAyJSAwIDIlO1xyXG5cdFx0d2lkdGg6IDk2JTtcclxuXHRcdGhlaWdodDogMzAlO1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgyMCwgODAsIDEzNiwgMSk7XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdH1cclxuXHQuYm94LWxnIHtcclxuXHRcdGhlaWdodDogOTQlO1xyXG5cdH1cclxuXHQuYm94LWJvcmRlciB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjNENEOTY0OyAqL1xyXG5cdFx0d2lkdGg6IDEwcHg7XHJcblx0XHRoZWlnaHQ6IDEwcHg7XHJcblx0fVxyXG5cdC5ib3gtYm9yZGVyMSB7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRsZWZ0OiAwO1xyXG5cdFx0Ym9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMzFjNGM0O1xyXG5cdFx0Ym9yZGVyLXRvcDogMnB4IHNvbGlkICMzMWM0YzQ7XHJcblx0fVxyXG5cdC5ib3gtYm9yZGVyMiB7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRyaWdodDogMDtcclxuXHRcdGJvcmRlci1yaWdodDogMnB4IHNvbGlkICMzMWM0YzQ7XHJcblx0XHRib3JkZXItdG9wOiAycHggc29saWQgIzMxYzRjNDtcclxuXHR9XHJcblx0LmJveC1ib3JkZXIzIHtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdGxlZnQ6IDA7XHJcblx0XHRib3JkZXItYm90dG9tOiAycHggc29saWQgIzMxYzRjNDtcclxuXHRcdGJvcmRlci1sZWZ0OiAycHggc29saWQgIzMxYzRjNDtcclxuXHR9XHJcblx0LmJveC1ib3JkZXI0IHtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdHJpZ2h0OiAwO1xyXG5cdFx0Ym9yZGVyLXJpZ2h0OiAycHggc29saWQgIzMxYzRjNDtcclxuXHRcdGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMzFjNGM0O1xyXG5cdH1cclxuXHQuY29udGVudCB7XHJcblx0ICBkaXNwbGF5OiBmbGV4O1xyXG5cdCAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHQgIGZsZXg6IDE7XHJcblx0fVxyXG5cdFxyXG5cdC5jaGFydHMtYm94IHtcclxuXHQgIHdpZHRoOiA4MCU7XHJcblx0ICBoZWlnaHQ6IDIzMHB4O1xyXG5cdCAgbWFyZ2luLWxlZnQ6IDEwJTtcclxuXHQgIC8qIGJhY2tncm91bmQtY29sb3I6ICNmZmY7ICovXHJcblx0fVxyXG5cdC5yaW5nIHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0d2lkdGg6IDYwJTtcclxuXHRcdGhlaWdodDogMzAwcHg7XHJcblx0XHRtYXJnaW4tbGVmdDogLTEwJTtcclxuXHR9XHJcblx0LmJveC1pdGVtIHtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMyQzQwNUE7ICovXHJcblx0XHR3aWR0aDogOTIlO1xyXG5cdFx0aGVpZ2h0OiAyMCU7XHJcblx0XHRtYXJnaW4tbGVmdDogNCU7XHJcblx0XHRwYWRkaW5nLXRvcDogMWVtO1xyXG5cdFx0Y29sb3I6ICNGRkZGRkY7XHJcblx0fVxyXG5cdC5pbnRyb2R1Y2Uge1xyXG5cdFx0aGVpZ2h0OiAzMCU7XHJcblx0fVxyXG5cdC5pbnRyb2R1Y2UgaDIge1xyXG5cdFx0bGV0dGVyLXNwYWNpbmc6IDVweDtcclxuXHRcdFxyXG5cdH1cclxuXHQuZW5nbGlzaCB7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0fVxyXG5cdC5pbnRyb2R1Y2UtY29udGVudCB7XHJcblx0XHRmb250LXNpemU6IDIwcHg7XHJcblx0XHRwYWRkaW5nLXRvcDogMmVtO1xyXG5cdFx0dGV4dC1pbmRlbnQ6IDJlbTtcclxuXHRcdGxpbmUtaGVpZ2h0OiAyZW07XHJcblx0fVxyXG5cdC5jaGFyZ2UtaW5mbyB7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMkM0MDVBOyAqL1xyXG5cdFx0aGVpZ2h0OiA0NSU7XHJcblx0fVxyXG5cdC5jaGFyZ2UtaW5mby1pdGVtIHtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICNFRTY2NjY7ICovXHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHR3aWR0aDogNTAlO1xyXG5cdFx0aGVpZ2h0OiA0MCU7XHJcblx0fVxyXG5cdC5jaGFyZ2UtaW5mby1pdGVtIGltYWdlIHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzRDRDk2NDsgKi9cclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdHdpZHRoOiAyMCU7XHJcblx0fVxyXG5cdC5jaGFyZ2UtaW5mby1pdGVtIHZpZXcge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDEwJTtcclxuXHRcdHdpZHRoOiA3MCU7XHJcblx0XHRoZWlnaHQ6IDQ5JTtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMxODkwRkY7ICovXHJcblx0fVxyXG5cdC5jaGFyZ2UtaW5mby1pdGVtIC5jb3VudCwgLmNoYXJnZS1pbmZvLWl0ZW0gLnVuaXR7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRmb250LXNpemU6IDMycHg7XHJcblx0XHRib3R0b206IDA7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDUlO1xyXG5cdH1cclxuXHQuY2hhcmdlLWluZm8taXRlbSAudW5pdCB7XHJcblx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRyaWdodDogMjAlO1xyXG5cdH1cclxuXHQuZm9vdGVyIHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAsIDgwLCAxMzYsIDEpO1xyXG5cdFx0aGVpZ2h0OiAxNSU7XHJcblx0fVxyXG5cdC51c2UtaW5mbyB7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3QUZGOyAqL1xyXG5cdH1cclxuXHQudXNlLWxlZnQge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzJDNDA1QTsgKi9cclxuXHRcdHdpZHRoOiA0MCU7XHJcblx0fVxyXG5cdC51c2UtcmlnaHQge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzJDNDA1QTsgKi9cclxuXHRcdGZsb2F0OiByaWdodDtcclxuXHRcdHdpZHRoOiAyMCU7XHJcblx0fVxyXG5cdC51c2UtbWFpbiB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogNzUlO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzRDRDk2NDsgKi9cclxuXHR9XHJcblx0LnVzZS1tYWluIC5sZWZ0IHtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICNmZmFhN2Y7ICovXHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdHdpZHRoOiA3MCU7XHJcblx0XHRsaW5lLWhlaWdodDogMjBweDtcclxuXHR9XHJcblx0LmxlZnQgLnByb2dyZXNzQmFyIHtcclxuXHRcdC8qIG1hcmdpbi1sZWZ0OiA7ICovXHJcblx0XHRtYXJnaW4tdG9wOiA5JTtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAyMCU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMjMzNzUxO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcclxuXHR9XHJcblx0LmxlZnQgLnByb2dyZXNzIHtcclxuXHRcdC8qIHdpZHRoOiA5MCU7ICovXHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkY1NzIyO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcclxuXHR9XHJcblx0LmxlZnQgcHJvZ3Jlc3Mge1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDEwJTtcclxuXHRcdG1hcmdpbi10b3A6IDEwJTtcclxuXHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdH1cclxuXHQudXNlLW1haW4gLnJpZ2h0IHtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICNmZmFhZmY7ICovXHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHR3aWR0aDogMjAlO1xyXG5cdFx0Zm9udC1zaXplOiA0MHB4O1xyXG5cdFx0Y29sb3I6ICNGRjU3MjI7XHJcblx0XHRsaW5lLWhlaWdodDogMTMwcHg7XHJcblx0fVxyXG5cdC5ib3gtdHAge1xyXG5cdFx0aGVpZ2h0OiAzMCU7XHJcblx0fVxyXG5cdC5ib3gtdHAgLnN1Yi1tYWluIHtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7ICovXHJcblx0fVxyXG5cdC5ib3gtbWQge1xyXG5cdFx0aGVpZ2h0OiA0MyU7XHJcblx0fVxyXG5cdC5ib3gtbWQgLnN1Yi1tYWluIHtcclxuXHR9XHJcblx0LnN1Yi1tYWluLXJpZ2h0IHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0fVxyXG5cdC5zdWItaW5mbyB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMzMlO1xyXG5cdH1cclxuXHQuc3ViLWluZm8gaW1hZ2Uge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHR3aWR0aDogMTUlO1xyXG5cdH1cclxuXHQuc3ViLWluZm8gdGV4dCB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHR3aWR0aDogNDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEyMHB4O1xyXG5cdFx0Zm9udC1zaXplOiAyMHB4O1xyXG5cdH1cclxuXHQuYm94LWJ0IHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMwNjNBN0I7XHJcblx0XHRib3JkZXI6IG5vbmU7XHJcblx0XHRoZWlnaHQ6IDE1JTtcclxuXHRcdGNvbG9yOiAjRkZGRkZGO1xyXG5cdH1cclxuXHQuYm94LWJ0IGltYWdlIHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGZsb2F0OiByaWdodDtcclxuXHRcdHJpZ2h0OiAwO1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0d2lkdGg6IDIwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHR9XHJcblx0LmJveC1idCB7XHJcblx0XHRmb250LXNpemU6IDM2cHg7XHJcblx0XHRsaW5lLWhlaWdodDogMTQwcHg7XHJcblx0XHR0ZXh0LWluZGVudDogNWVtO1xyXG5cdH1cclxuXHQucmlnaHQtaXRlbSB7XHJcblx0XHRoZWlnaHQ6IDk0JTtcclxuXHR9XHJcblx0LnN1Yi1sZWZ0IHtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0d2lkdGg6IDQwJTtcclxuXHR9XHJcblx0LnN1Yi1yaWdodCB7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHR3aWR0aDogMjAlO1xyXG5cdH1cclxuXHQuc3ViLW1haW4ge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzMxQzRDNDsgKi9cclxuXHRcdHdpZHRoOiA5MiU7XHJcblx0XHRoZWlnaHQ6IDgwJTtcclxuXHRcdGJvdHRvbTogMDtcclxuXHR9XHJcbjwvc3R5bGU+XHJcbjwhLS0ge1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMzc1MDIzMDBcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDM3NTA1MTQ2XCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAyNzUwNDgwMVwiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMjc1MDc3MjlcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDI3NTA3NzI3XCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAyNzUwNzczMVwiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMjc1MDQ4MDdcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDI3NTA0ODA1XCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAyNzUwNDc5N1wiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMjc1MDQ3OTRcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDI3NTA0NzkxXCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAyNzUwNDc5M1wiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMzc1MDUxNDFcIixcImNvdW50XCI6MS4wfSxcclxuXHRcdFx0XHRcdHtcIm1hdG5yXCI6XCIxMTAwMzQ5LTEwMDAwXCIsXCJtYWtueFwiOlwiQzVTLTQtTTAzLzMzMy9LU1wiLFwiYmF0Y2hcIjpcIjIyMDI3NTA3NzI4XCIsXCJjb3VudFwiOjEuMH0sXHJcblx0XHRcdFx0XHR7XCJtYXRuclwiOlwiMTEwMDM0OS0xMDAwMFwiLFwibWFrbnhcIjpcIkM1Uy00LU0wMy8zMzMvS1NcIixcImJhdGNoXCI6XCIyMjAyNzUwNDgxMFwiLFwiY291bnRcIjoxLjB9LFxyXG5cdFx0XHRcdFx0e1wibWF0bnJcIjpcIjExMDAzNDktMTAwMDBcIixcIm1ha254XCI6XCJDNVMtNC1NMDMvMzMzL0tTXCIsXCJiYXRjaFwiOlwiMjIwMzc1MDUxNDhcIixcImNvdW50XCI6MS4wfSAtLT4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///137\n");
 
/***/ }),
/* 138 */
/*!*******************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index/monitor.vue?mpType=page ***!
  \*******************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _monitor_vue_vue_type_template_id_7d4f7644_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./monitor.vue?vue&type=template&id=7d4f7644&scoped=true&mpType=page */ 139);\n/* harmony import */ var _monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./monitor.vue?vue&type=script&lang=js&mpType=page */ 141);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _monitor_vue_vue_type_template_id_7d4f7644_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _monitor_vue_vue_type_template_id_7d4f7644_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"7d4f7644\",\n  null,\n  false,\n  _monitor_vue_vue_type_template_id_7d4f7644_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n  renderjs\n)\n\ncomponent.options.__file = \"pages/index/monitor.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkk7QUFDM0k7QUFDc0U7QUFDTDs7O0FBR2pFO0FBQzZLO0FBQzdLLGdCQUFnQixpTEFBVTtBQUMxQixFQUFFLHdGQUFNO0FBQ1IsRUFBRSx5R0FBTTtBQUNSLEVBQUUsa0hBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNkdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTM4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9tb25pdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDRmNzY0NCZzY29wZWQ9dHJ1ZSZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vbW9uaXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vbW9uaXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI3ZDRmNzY0NFwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9pbmRleC9tb25pdG9yLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///138\n");
 
/***/ }),
/* 139 */
/*!*************************************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index/monitor.vue?vue&type=template&id=7d4f7644&scoped=true&mpType=page ***!
  \*************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_template_id_7d4f7644_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./monitor.vue?vue&type=template&id=7d4f7644&scoped=true&mpType=page */ 140);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_template_id_7d4f7644_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_template_id_7d4f7644_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_template_id_7d4f7644_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
 
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_template_id_7d4f7644_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
 
 
 
/***/ }),
/* 140 */
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/pages/index/monitor.vue?vue&type=template&id=7d4f7644&scoped=true&mpType=page ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
var components
var render = function () {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c("view", [
    _c("view", [
      _c(
        "swiper",
        {
          attrs: {
            autoplay: _vm._$s(2, "a-autoplay", _vm.autoplay),
            interval: _vm._$s(2, "a-interval", _vm.interval),
            duration: _vm._$s(2, "a-duration", _vm.duration),
            _i: 2,
          },
        },
        _vm._l(
          _vm._$s(3, "f", { forItems: _vm.list }),
          function (item, index, $20, $30) {
            return _c(
              "swiper-item",
              { key: _vm._$s(3, "f", { forIndex: $20, key: index }) },
              [_c("view", [_vm._v(_vm._$s("4-" + $30, "t0-0", _vm._s(item)))])]
            )
          }
        ),
        0
      ),
    ]),
  ])
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
 
 
 
/***/ }),
/* 141 */
/*!*******************************************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/pages/index/monitor.vue?vue&type=script&lang=js&mpType=page ***!
  \*******************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./monitor.vue?vue&type=script&lang=js&mpType=page */ 142);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_monitor_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNsQixDQUFnQix3bEJBQUcsRUFBQyIsImZpbGUiOiIxNDEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbW9uaXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL21vbml0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///141\n");
 
/***/ }),
/* 142 */
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/pages/index/monitor.vue?vue&type=script&lang=js&mpType=page ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  name: '',\n  data: function data() {\n    return {\n      autoplay: true,\n      interval: 1000,\n      duration: 1000,\n      list: ['请点击发行菜单进行发布', '1', '体积较大;若要正式发布', '2', '运行模式下不压缩代码且含有sourcemap', '3', '检查是否启动多个微信开发者工具,如果是则关闭所有打开的微信开发者工具,', '4', '然后再重新运行', '5', '如果出现微信开发者工具启动后白屏的问题', '6', '或者关闭微信开发者工具,然后再从HBuilderX中启动指定页面', '7', '可以通过微信开发者工具切换pages.json中condition配置的页面', '8', '中修改文件并保存,会自动刷新微信模拟器', '9', '微信开发者工具已启动,在HBuilderX', '10']\n    };\n  }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvbW9uaXRvci52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiLCJhdXRvcGxheSIsImludGVydmFsIiwiZHVyYXRpb24iLCJsaXN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBY0E7RUFDQUE7RUFDQUM7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQyxPQUNBLGVBQ0EsS0FDQSxlQUNBLEtBQ0EsMEJBQ0EsS0FDQSx1Q0FDQSxLQUNBLFdBQ0EsS0FDQSx1QkFDQSxLQUNBLG9DQUNBLEtBQ0EsMENBQ0EsS0FDQSx1QkFDQSxLQUNBLHlCQUNBO0lBRUE7RUFDQTtBQUNBO0FBQUEiLCJmaWxlIjoiMTQyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbjx0ZW1wbGF0ZT5cclxuICAgIDx2aWV3PlxyXG4gICAgICAgIDx2aWV3PiBcclxuICAgICAgICAgICAgPHN3aXBlciBzdHlsZT1cImhlaWdodDogNTAwcHg7XCIgY2lyY3VsYXI9XCJ0cnVlXCIgdmVydGljYWw9XCJ0cnVlXCIgZGlzcGxheS1tdWx0aXBsZS1pdGVtcz1cIjE2XCIgOmF1dG9wbGF5PVwiYXV0b3BsYXlcIiA6aW50ZXJ2YWw9XCJpbnRlcnZhbFwiIDpkdXJhdGlvbj1cImR1cmF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3dpcGVyLWl0ZW0gdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gbGlzdFwiIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2aWV3Pnt7aXRlbX19PC92aWV3PlxyXG4gICAgICAgICAgICAgICAgPC9zd2lwZXItaXRlbT5cclxuICAgICAgICAgICAgPC9zd2lwZXI+XHJcbiAgICAgICAgPC92aWV3PlxyXG4gICAgPC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuICAgIGV4cG9ydCBkZWZhdWx0e1xyXG4gICAgICAgIG5hbWU6JycsXHJcbiAgICAgICAgZGF0YSgpe1xyXG4gICAgICAgICAgICByZXR1cm57XHJcbiAgICAgICAgICAgICAgICBhdXRvcGxheTp0cnVlLFxyXG4gICAgICAgICAgICAgICAgaW50ZXJ2YWw6MTAwMCxcclxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOjEwMDAsXHJcbiAgICAgICAgICAgICAgICBsaXN0OltcclxuICAgICAgICAgICAgICAgICAgICAn6K+354K55Ye75Y+R6KGM6I+c5Y2V6L+b6KGM5Y+R5biDJyxcclxuXHRcdFx0XHRcdCcxJyxcclxuICAgICAgICAgICAgICAgICAgICAn5L2T56ev6L6D5aSn77yb6Iul6KaB5q2j5byP5Y+R5biDJyxcclxuXHRcdFx0XHRcdCcyJyxcclxuICAgICAgICAgICAgICAgICAgICAn6L+Q6KGM5qih5byP5LiL5LiN5Y6L57yp5Luj56CB5LiU5ZCr5pyJc291cmNlbWFwJyxcclxuXHRcdFx0XHRcdCczJyxcclxuICAgICAgICAgICAgICAgICAgICAn5qOA5p+l5piv5ZCm5ZCv5Yqo5aSa5Liq5b6u5L+h5byA5Y+R6ICF5bel5YW377yM5aaC5p6c5piv5YiZ5YWz6Zet5omA5pyJ5omT5byA55qE5b6u5L+h5byA5Y+R6ICF5bel5YW377yMJyxcclxuXHRcdFx0XHRcdCc0JyxcclxuICAgICAgICAgICAgICAgICAgICAn54S25ZCO5YaN6YeN5paw6L+Q6KGMJyxcclxuXHRcdFx0XHRcdCc1JyxcclxuICAgICAgICAgICAgICAgICAgICAn5aaC5p6c5Ye6546w5b6u5L+h5byA5Y+R6ICF5bel5YW35ZCv5Yqo5ZCO55m95bGP55qE6Zeu6aKYJyxcclxuXHRcdFx0XHRcdCc2JyxcclxuICAgICAgICAgICAgICAgICAgICAn5oiW6ICF5YWz6Zet5b6u5L+h5byA5Y+R6ICF5bel5YW377yM54S25ZCO5YaN5LuOSEJ1aWxkZXJY5Lit5ZCv5Yqo5oyH5a6a6aG16Z2iJyxcclxuXHRcdFx0XHRcdCc3JyxcclxuICAgICAgICAgICAgICAgICAgICAn5Y+v5Lul6YCa6L+H5b6u5L+h5byA5Y+R6ICF5bel5YW35YiH5o2icGFnZXMuanNvbuS4rWNvbmRpdGlvbumFjee9rueahOmhtemdoicsXHJcblx0XHRcdFx0XHQnOCcsXHJcbiAgICAgICAgICAgICAgICAgICAgJ+S4reS/ruaUueaWh+S7tuW5tuS/neWtmO+8jOS8muiHquWKqOWIt+aWsOW+ruS/oeaooeaLn+WZqCcsXHJcblx0XHRcdFx0XHQnOScsXHJcbiAgICAgICAgICAgICAgICAgICAgJ+W+ruS/oeW8gOWPkeiAheW3peWFt+W3suWQr+WKqO+8jOWcqEhCdWlsZGVyWCcsXHJcblx0XHRcdFx0XHQnMTAnLFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICB9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIHNjb3BlZCBsYW5nPVwic2Nzc1wiPlxyXG4gICAgLnNjcm9sbF9ib3h7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcclxuICAgICAgICBtYXJnaW46IDMwcnB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcnB4O1xyXG4gICAgICAgIC5zd2lwZXJ7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwMHB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDcwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///142\n");
 
/***/ }),
/* 143 */
/*!***************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/App.vue ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ 144);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\nvar render, staticRenderFns, recyclableRender, components\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n  _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null,\n  false,\n  components,\n  renderjs\n)\n\ncomponent.options.__file = \"App.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUN1RDtBQUNMOzs7QUFHbEQ7QUFDdUs7QUFDdkssZ0JBQWdCLGlMQUFVO0FBQzFCLEVBQUUseUVBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNlLGdGIiwiZmlsZSI6IjE0My5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50c1xudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcIkFwcC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///143\n");
 
/***/ }),
/* 144 */
/*!****************************************************************************!*\
  !*** D:/workspace/v2/private/Monitor-APP/App.vue?vue&type=script&lang=js& ***!
  \****************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../app/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./App.vue?vue&type=script&lang=js& */ 145);\n/* harmony import */ var _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_app_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_app_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStpQixDQUFnQix5a0JBQUcsRUFBQyIsImZpbGUiOiIxNDQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uL2FwcC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi9hcHAvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vYXBwL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///144\n");
 
/***/ }),
/* 145 */
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/workspace/v2/private/Monitor-APP/App.vue?vue&type=script&lang=js& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = {\n  onLaunch: function onLaunch() {\n    __f__(\"log\", 'App Launch', \" at App.vue:4\");\n  },\n  onShow: function onShow() {\n    __f__(\"log\", 'App Show', \" at App.vue:7\");\n  },\n  onHide: function onHide() {\n    __f__(\"log\", 'App Hide', \" at App.vue:10\");\n  }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJvbkxhdW5jaCIsIm9uU2hvdyIsIm9uSGlkZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQ2U7RUFDZEEsUUFBUSxFQUFFLG9CQUFXO0lBQ3BCLGFBQVksWUFBWTtFQUN6QixDQUFDO0VBQ0RDLE1BQU0sRUFBRSxrQkFBVztJQUNsQixhQUFZLFVBQVU7RUFDdkIsQ0FBQztFQUNEQyxNQUFNLEVBQUUsa0JBQVc7SUFDbEIsYUFBWSxVQUFVO0VBQ3ZCO0FBQ0QsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjE0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGRlZmF1bHQge1xuXHRvbkxhdW5jaDogZnVuY3Rpb24oKSB7XG5cdFx0Y29uc29sZS5sb2coJ0FwcCBMYXVuY2gnKVxuXHR9LFxuXHRvblNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdGNvbnNvbGUubG9nKCdBcHAgU2hvdycpXG5cdH0sXG5cdG9uSGlkZTogZnVuY3Rpb24oKSB7XG5cdFx0Y29uc29sZS5sb2coJ0FwcCBIaWRlJylcblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///145\n");
 
/***/ })
],[[0,"app-config"]]]);