-
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
-
14458
-
14459
-
14460
-
14461
-
14462
-
14463
-
14464
-
14465
-
14466
-
14467
-
14468
-
14469
-
14470
-
14471
-
14472
-
14473
-
14474
-
14475
-
14476
-
14477
-
14478
-
14479
-
14480
-
14481
-
14482
-
14483
-
14484
-
14485
-
14486
-
14487
-
14488
-
14489
-
14490
-
14491
-
14492
-
14493
-
14494
-
14495
-
14496
-
14497
-
14498
-
14499
-
14500
-
14501
-
14502
-
14503
-
14504
-
14505
-
14506
-
14507
-
14508
-
14509
-
14510
-
14511
-
14512
-
14513
-
14514
-
14515
-
14516
-
14517
-
14518
-
14519
-
14520
-
14521
-
14522
-
14523
-
14524
-
14525
-
14526
-
14527
-
14528
-
14529
-
14530
-
14531
-
14532
-
14533
-
14534
-
14535
-
14536
-
14537
-
14538
-
14539
-
14540
-
14541
-
14542
-
14543
-
14544
-
14545
-
14546
-
14547
-
14548
-
14549
-
14550
-
14551
-
14552
-
14553
-
14554
-
14555
-
14556
-
14557
-
14558
-
14559
-
14560
-
14561
-
14562
-
14563
-
14564
-
14565
-
14566
-
14567
-
14568
-
14569
-
14570
-
14571
-
14572
-
14573
-
14574
-
14575
-
14576
-
14577
-
14578
-
14579
-
14580
-
14581
-
14582
-
14583
-
14584
-
14585
-
14586
-
14587
-
14588
-
14589
-
14590
-
14591
-
14592
-
14593
-
14594
-
14595
-
14596
-
14597
-
14598
-
14599
-
14600
-
14601
-
14602
-
14603
-
14604
-
14605
-
14606
-
14607
-
14608
-
14609
-
14610
-
14611
-
14612
-
14613
-
14614
-
14615
-
14616
-
14617
-
14618
-
14619
-
14620
-
14621
-
14622
-
14623
-
14624
-
14625
-
14626
-
14627
-
14628
-
14629
-
14630
-
14631
-
14632
-
14633
-
14634
-
14635
-
14636
-
14637
-
14638
-
14639
-
14640
-
14641
-
14642
-
14643
-
14644
-
14645
-
14646
-
14647
-
14648
-
14649
-
14650
-
14651
-
14652
-
14653
-
14654
-
14655
-
14656
-
14657
-
14658
-
14659
-
14660
-
14661
-
14662
-
14663
-
14664
-
14665
-
14666
-
14667
-
14668
-
14669
-
14670
-
14671
-
14672
-
14673
-
14674
-
14675
-
14676
-
14677
-
14678
-
14679
-
14680
-
14681
-
14682
-
14683
-
14684
-
14685
-
14686
-
14687
-
14688
-
14689
-
14690
-
14691
-
14692
-
14693
-
14694
-
14695
-
14696
-
14697
-
14698
-
14699
-
14700
-
14701
-
14702
-
14703
-
14704
-
14705
-
14706
-
14707
-
14708
-
14709
-
14710
-
14711
-
14712
-
14713
-
14714
-
14715
-
14716
-
14717
-
14718
-
14719
-
14720
-
14721
-
14722
-
14723
-
14724
-
14725
-
14726
-
14727
-
14728
-
14729
-
14730
-
14731
-
14732
-
14733
-
14734
-
14735
-
14736
-
14737
-
14738
-
14739
-
14740
-
14741
-
14742
-
14743
-
14744
-
14745
-
14746
-
14747
-
14748
-
14749
-
14750
-
14751
-
14752
-
14753
-
14754
-
14755
-
14756
-
14757
-
14758
-
14759
-
14760
-
14761
-
14762
-
14763
-
14764
-
14765
-
14766
-
14767
-
14768
-
14769
-
14770
-
14771
-
14772
-
14773
-
14774
-
14775
-
14776
-
14777
-
14778
-
14779
-
14780
-
14781
-
14782
-
14783
-
14784
-
14785
-
14786
-
14787
-
14788
-
14789
-
14790
-
14791
-
14792
-
14793
-
14794
-
14795
-
14796
-
14797
-
14798
-
14799
-
14800
-
14801
-
14802
-
14803
-
14804
-
14805
-
14806
-
14807
-
14808
-
14809
-
14810
-
14811
-
14812
-
14813
-
14814
-
14815
-
14816
-
14817
-
14818
-
14819
-
14820
-
14821
-
14822
-
14823
-
14824
-
14825
-
14826
-
14827
-
14828
-
14829
-
14830
-
14831
-
14832
-
14833
-
14834
-
14835
-
14836
-
14837
-
14838
-
14839
-
14840
-
14841
-
14842
-
14843
-
14844
-
14845
-
14846
-
14847
-
14848
-
14849
-
14850
-
14851
-
14852
-
14853
-
14854
-
14855
-
14856
-
14857
-
14858
-
14859
-
14860
-
14861
-
14862
-
14863
-
14864
-
14865
-
14866
-
14867
-
14868
-
14869
-
14870
-
14871
-
14872
-
14873
-
14874
-
14875
-
14876
-
14877
-
14878
-
14879
-
14880
-
14881
-
14882
-
14883
-
14884
-
14885
-
14886
-
14887
-
14888
-
14889
-
14890
-
14891
-
14892
-
14893
-
14894
-
14895
-
14896
-
14897
-
14898
-
14899
-
14900
-
14901
-
14902
-
14903
-
14904
-
14905
-
14906
-
14907
-
14908
-
14909
-
14910
-
14911
-
14912
-
14913
-
14914
-
14915
-
14916
-
14917
-
14918
-
14919
-
14920
-
14921
-
14922
-
14923
-
14924
-
14925
-
14926
-
14927
-
14928
-
14929
-
14930
-
14931
-
14932
-
14933
-
14934
-
14935
-
14936
-
14937
-
14938
-
14939
-
14940
-
14941
-
14942
-
14943
-
14944
-
14945
-
14946
-
14947
-
14948
-
14949
-
14950
-
14951
-
14952
-
14953
-
14954
-
14955
-
14956
-
14957
-
14958
-
14959
-
14960
-
14961
-
14962
-
14963
-
14964
-
14965
-
14966
-
14967
-
14968
-
14969
-
14970
-
14971
-
14972
-
14973
-
14974
-
14975
-
14976
-
14977
-
14978
-
14979
-
14980
-
14981
-
14982
-
14983
-
14984
-
14985
-
14986
-
14987
-
14988
-
14989
-
14990
-
14991
-
14992
-
14993
-
14994
-
14995
-
14996
-
14997
-
14998
-
14999
-
15000
-
15001
-
15002
-
15003
-
15004
-
15005
-
15006
-
15007
-
15008
-
15009
-
15010
-
15011
-
15012
-
15013
-
15014
-
15015
-
15016
-
15017
-
15018
-
15019
-
15020
-
15021
-
15022
-
15023
-
15024
-
15025
-
15026
-
15027
-
15028
-
15029
-
15030
-
15031
-
15032
-
15033
-
15034
-
15035
-
15036
-
15037
-
15038
-
15039
-
15040
-
15041
-
15042
-
15043
-
15044
-
15045
-
15046
-
15047
-
15048
-
15049
-
15050
-
15051
-
15052
-
15053
-
15054
-
15055
-
15056
-
15057
-
15058
-
15059
-
15060
-
15061
-
15062
-
15063
-
15064
-
15065
-
15066
-
15067
-
15068
-
15069
-
15070
-
15071
-
15072
-
15073
-
15074
-
15075
-
15076
-
15077
-
15078
-
15079
-
15080
-
15081
-
15082
-
15083
-
15084
-
15085
-
15086
-
15087
-
15088
-
15089
-
15090
-
15091
-
15092
-
15093
-
15094
-
15095
-
15096
-
15097
-
15098
-
15099
-
15100
-
15101
-
15102
-
15103
-
15104
-
15105
-
15106
-
15107
-
15108
-
15109
-
15110
-
15111
-
15112
-
15113
-
15114
-
15115
-
15116
-
15117
-
15118
-
15119
-
15120
-
15121
-
15122
-
15123
-
15124
-
15125
-
15126
-
15127
-
15128
-
15129
-
15130
-
15131
-
15132
-
15133
-
15134
-
15135
-
15136
-
15137
-
15138
-
15139
-
15140
-
15141
-
15142
-
15143
-
15144
-
15145
-
15146
-
15147
-
15148
-
15149
-
15150
-
15151
-
15152
-
15153
-
15154
-
15155
-
15156
-
15157
-
15158
-
15159
-
15160
-
15161
-
15162
-
15163
-
15164
-
15165
-
15166
-
15167
-
15168
-
15169
-
15170
-
15171
-
15172
-
15173
-
15174
-
15175
-
15176
-
15177
-
15178
-
15179
-
15180
-
15181
-
15182
-
15183
-
15184
-
15185
-
15186
-
15187
-
15188
-
15189
-
15190
-
15191
-
15192
-
15193
-
15194
-
15195
-
15196
-
15197
-
15198
-
15199
-
15200
-
15201
-
15202
-
15203
-
15204
-
15205
-
15206
-
15207
-
15208
-
15209
-
15210
-
15211
-
15212
-
15213
-
15214
-
15215
-
15216
-
15217
-
15218
-
15219
-
15220
-
15221
-
15222
-
15223
-
15224
-
15225
-
15226
-
15227
-
15228
-
15229
-
15230
-
15231
-
15232
-
15233
-
15234
-
15235
-
15236
-
15237
-
15238
-
15239
-
15240
-
15241
-
15242
-
15243
-
15244
-
15245
-
15246
-
15247
-
15248
-
15249
-
15250
-
15251
-
15252
-
15253
-
15254
-
15255
-
15256
-
15257
-
15258
-
15259
-
15260
-
15261
-
15262
-
15263
-
15264
-
15265
-
15266
-
15267
-
15268
-
15269
-
15270
-
15271
-
15272
-
15273
-
15274
-
15275
-
15276
-
15277
-
15278
-
15279
-
15280
-
15281
-
15282
-
15283
-
15284
-
15285
-
15286
-
15287
-
15288
-
15289
-
15290
-
15291
-
15292
-
15293
-
15294
-
15295
-
15296
-
15297
-
15298
-
15299
-
15300
-
15301
-
15302
-
15303
-
15304
-
15305
-
15306
-
15307
-
15308
-
15309
-
15310
-
15311
-
15312
-
15313
-
15314
-
15315
-
15316
-
15317
-
15318
-
15319
-
15320
-
15321
-
15322
-
15323
-
15324
-
15325
-
15326
-
15327
-
15328
-
15329
-
15330
-
15331
-
15332
-
15333
-
15334
-
15335
-
15336
-
15337
-
15338
-
15339
-
15340
-
15341
-
15342
-
15343
-
15344
-
15345
-
15346
-
15347
-
15348
-
15349
-
15350
-
15351
-
15352
-
15353
-
15354
-
15355
-
15356
-
15357
-
15358
-
15359
-
15360
-
15361
-
15362
-
15363
-
15364
-
15365
-
15366
-
15367
-
15368
-
15369
-
15370
-
15371
-
15372
-
15373
-
15374
-
15375
-
15376
-
15377
-
15378
-
15379
-
15380
-
15381
-
15382
-
15383
-
15384
-
15385
-
15386
-
15387
-
15388
-
15389
-
15390
-
15391
-
15392
-
15393
-
15394
-
15395
-
15396
-
15397
-
15398
-
15399
-
15400
-
15401
-
15402
-
15403
-
15404
-
15405
-
15406
-
15407
-
15408
-
15409
-
15410
-
15411
-
15412
-
15413
-
15414
-
15415
-
15416
-
15417
-
15418
-
15419
-
15420
-
15421
-
15422
-
15423
-
15424
-
15425
-
15426
-
15427
-
15428
-
15429
-
15430
-
15431
-
15432
-
15433
-
15434
-
15435
-
15436
-
15437
-
15438
-
15439
-
15440
-
15441
-
15442
-
15443
-
15444
-
15445
-
15446
-
15447
-
15448
-
15449
-
15450
-
15451
-
15452
-
15453
-
15454
-
15455
-
15456
-
15457
-
15458
-
15459
-
15460
-
15461
-
15462
-
15463
-
15464
-
15465
-
15466
-
15467
-
15468
-
15469
-
15470
-
15471
-
15472
-
15473
-
15474
-
15475
-
15476
-
15477
-
15478
-
15479
-
15480
-
15481
-
15482
-
15483
-
15484
-
15485
-
15486
-
15487
-
15488
-
15489
-
15490
-
15491
-
15492
-
15493
-
15494
-
15495
-
15496
-
15497
-
15498
-
15499
-
15500
-
15501
-
15502
-
15503
-
15504
-
15505
-
15506
-
15507
-
15508
-
15509
-
15510
-
15511
-
15512
-
15513
-
15514
-
15515
-
15516
-
15517
-
15518
-
15519
-
15520
-
15521
-
15522
-
15523
-
15524
-
15525
-
15526
-
15527
-
15528
-
15529
-
15530
-
15531
-
15532
-
15533
-
15534
-
15535
-
15536
-
15537
-
15538
-
15539
-
15540
-
15541
-
15542
-
15543
-
15544
-
15545
-
15546
-
15547
-
15548
-
15549
-
15550
-
15551
-
15552
-
15553
-
15554
-
15555
-
15556
-
15557
-
15558
/**
* @licstart The following is the entire license notice for the
* Javascript code in this page
*
* Copyright 2018 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @licend The above is the entire license notice for the
* Javascript code in this page
*/
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
;
var pdfjsWebApp, pdfjsWebAppOptions;
{
pdfjsWebApp = __webpack_require__(1);
pdfjsWebAppOptions = __webpack_require__(12);
}
;
{
__webpack_require__(37);
}
;
{
__webpack_require__(42);
}
function getViewerConfiguration() {
return {
appContainer: document.body,
mainContainer: document.getElementById('viewerContainer'),
viewerContainer: document.getElementById('viewer'),
eventBus: null,
toolbar: {
container: document.getElementById('toolbarViewer'),
numPages: document.getElementById('numPages'),
pageNumber: document.getElementById('pageNumber'),
scaleSelectContainer: document.getElementById('scaleSelectContainer'),
scaleSelect: document.getElementById('scaleSelect'),
customScaleOption: document.getElementById('customScaleOption'),
previous: document.getElementById('previous'),
next: document.getElementById('next'),
zoomIn: document.getElementById('zoomIn'),
zoomOut: document.getElementById('zoomOut'),
viewFind: document.getElementById('viewFind'),
openFile: document.getElementById('openFile'),
print: document.getElementById('print'),
presentationModeButton: document.getElementById('presentationMode'),
download: document.getElementById('download'),
viewBookmark: document.getElementById('viewBookmark')
},
secondaryToolbar: {
toolbar: document.getElementById('secondaryToolbar'),
toggleButton: document.getElementById('secondaryToolbarToggle'),
toolbarButtonContainer: document.getElementById('secondaryToolbarButtonContainer'),
presentationModeButton: document.getElementById('secondaryPresentationMode'),
openFileButton: document.getElementById('secondaryOpenFile'),
printButton: document.getElementById('secondaryPrint'),
downloadButton: document.getElementById('secondaryDownload'),
viewBookmarkButton: document.getElementById('secondaryViewBookmark'),
firstPageButton: document.getElementById('firstPage'),
lastPageButton: document.getElementById('lastPage'),
pageRotateCwButton: document.getElementById('pageRotateCw'),
pageRotateCcwButton: document.getElementById('pageRotateCcw'),
cursorSelectToolButton: document.getElementById('cursorSelectTool'),
cursorHandToolButton: document.getElementById('cursorHandTool'),
scrollVerticalButton: document.getElementById('scrollVertical'),
scrollHorizontalButton: document.getElementById('scrollHorizontal'),
scrollWrappedButton: document.getElementById('scrollWrapped'),
spreadNoneButton: document.getElementById('spreadNone'),
spreadOddButton: document.getElementById('spreadOdd'),
spreadEvenButton: document.getElementById('spreadEven'),
documentPropertiesButton: document.getElementById('documentProperties')
},
fullscreen: {
contextFirstPage: document.getElementById('contextFirstPage'),
contextLastPage: document.getElementById('contextLastPage'),
contextPageRotateCw: document.getElementById('contextPageRotateCw'),
contextPageRotateCcw: document.getElementById('contextPageRotateCcw')
},
sidebar: {
outerContainer: document.getElementById('outerContainer'),
viewerContainer: document.getElementById('viewerContainer'),
toggleButton: document.getElementById('sidebarToggle'),
thumbnailButton: document.getElementById('viewThumbnail'),
outlineButton: document.getElementById('viewOutline'),
attachmentsButton: document.getElementById('viewAttachments'),
thumbnailView: document.getElementById('thumbnailView'),
outlineView: document.getElementById('outlineView'),
attachmentsView: document.getElementById('attachmentsView')
},
sidebarResizer: {
outerContainer: document.getElementById('outerContainer'),
resizer: document.getElementById('sidebarResizer')
},
findBar: {
bar: document.getElementById('findbar'),
toggleButton: document.getElementById('viewFind'),
findField: document.getElementById('findInput'),
highlightAllCheckbox: document.getElementById('findHighlightAll'),
caseSensitiveCheckbox: document.getElementById('findMatchCase'),
entireWordCheckbox: document.getElementById('findEntireWord'),
findMsg: document.getElementById('findMsg'),
findResultsCount: document.getElementById('findResultsCount'),
findPreviousButton: document.getElementById('findPrevious'),
findNextButton: document.getElementById('findNext')
},
passwordOverlay: {
overlayName: 'passwordOverlay',
container: document.getElementById('passwordOverlay'),
label: document.getElementById('passwordText'),
input: document.getElementById('password'),
submitButton: document.getElementById('passwordSubmit'),
cancelButton: document.getElementById('passwordCancel')
},
documentProperties: {
overlayName: 'documentPropertiesOverlay',
container: document.getElementById('documentPropertiesOverlay'),
closeButton: document.getElementById('documentPropertiesClose'),
fields: {
'fileName': document.getElementById('fileNameField'),
'fileSize': document.getElementById('fileSizeField'),
'title': document.getElementById('titleField'),
'author': document.getElementById('authorField'),
'subject': document.getElementById('subjectField'),
'keywords': document.getElementById('keywordsField'),
'creationDate': document.getElementById('creationDateField'),
'modificationDate': document.getElementById('modificationDateField'),
'creator': document.getElementById('creatorField'),
'producer': document.getElementById('producerField'),
'version': document.getElementById('versionField'),
'pageCount': document.getElementById('pageCountField'),
'pageSize': document.getElementById('pageSizeField'),
'linearized': document.getElementById('linearizedField')
}
},
errorWrapper: {
container: document.getElementById('errorWrapper'),
errorMessage: document.getElementById('errorMessage'),
closeButton: document.getElementById('errorClose'),
errorMoreInfo: document.getElementById('errorMoreInfo'),
moreInfoButton: document.getElementById('errorShowMore'),
lessInfoButton: document.getElementById('errorShowLess')
},
printContainer: document.getElementById('printContainer'),
openFileInputName: 'fileInput',
debuggerScriptPath: './debugger.js'
};
}
function webViewerLoad() {
var config = getViewerConfiguration();
window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication;
window.PDFViewerApplicationOptions = pdfjsWebAppOptions.AppOptions;
var event = document.createEvent('CustomEvent');
event.initCustomEvent('webviewerloaded', true, true, {});
document.dispatchEvent(event);
pdfjsWebApp.PDFViewerApplication.run(config);
}
if (document.readyState === 'interactive' || document.readyState === 'complete') {
webViewerLoad();
} else {
document.addEventListener('DOMContentLoaded', webViewerLoad, true);
}
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFPrintServiceFactory = exports.DefaultExternalServices = exports.PDFViewerApplication = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(2));
var _ui_utils = __webpack_require__(6);
var _pdfjsLib = __webpack_require__(7);
var _pdf_cursor_tools = __webpack_require__(8);
var _pdf_rendering_queue = __webpack_require__(10);
var _pdf_sidebar = __webpack_require__(11);
var _app_options = __webpack_require__(12);
var _overlay_manager = __webpack_require__(14);
var _password_prompt = __webpack_require__(15);
var _pdf_attachment_viewer = __webpack_require__(16);
var _pdf_document_properties = __webpack_require__(17);
var _pdf_find_bar = __webpack_require__(18);
var _pdf_find_controller = __webpack_require__(19);
var _pdf_history = __webpack_require__(21);
var _pdf_link_service = __webpack_require__(22);
var _pdf_outline_viewer = __webpack_require__(23);
var _pdf_presentation_mode = __webpack_require__(24);
var _pdf_sidebar_resizer = __webpack_require__(25);
var _pdf_thumbnail_viewer = __webpack_require__(26);
var _pdf_viewer = __webpack_require__(28);
var _secondary_toolbar = __webpack_require__(33);
var _toolbar = __webpack_require__(35);
var _view_history = __webpack_require__(36);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
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); }); }; }
var DEFAULT_SCALE_DELTA = 1.1;
var DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000;
var FORCE_PAGES_LOADED_TIMEOUT = 10000;
var WHEEL_ZOOM_DISABLED_TIMEOUT = 1000;
var ViewOnLoad = {
UNKNOWN: -1,
PREVIOUS: 0,
INITIAL: 1
};
var DefaultExternalServices = {
updateFindControlState: function updateFindControlState(data) {},
updateFindMatchesCount: function updateFindMatchesCount(data) {},
initPassiveLoading: function initPassiveLoading(callbacks) {},
fallback: function fallback(data, callback) {},
reportTelemetry: function reportTelemetry(data) {},
createDownloadManager: function createDownloadManager(options) {
throw new Error('Not implemented: createDownloadManager');
},
createPreferences: function createPreferences() {
throw new Error('Not implemented: createPreferences');
},
createL10n: function createL10n(options) {
throw new Error('Not implemented: createL10n');
},
supportsIntegratedFind: false,
supportsDocumentFonts: true,
supportsDocumentColors: true,
supportedMouseWheelZoomModifierKeys: {
ctrlKey: true,
metaKey: true
}
};
exports.DefaultExternalServices = DefaultExternalServices;
var PDFViewerApplication = {
initialBookmark: document.location.hash.substring(1),
initialized: false,
fellback: false,
appConfig: null,
pdfDocument: null,
pdfLoadingTask: null,
printService: null,
pdfViewer: null,
pdfThumbnailViewer: null,
pdfRenderingQueue: null,
pdfPresentationMode: null,
pdfDocumentProperties: null,
pdfLinkService: null,
pdfHistory: null,
pdfSidebar: null,
pdfSidebarResizer: null,
pdfOutlineViewer: null,
pdfAttachmentViewer: null,
pdfCursorTools: null,
store: null,
downloadManager: null,
overlayManager: null,
preferences: null,
toolbar: null,
secondaryToolbar: null,
eventBus: null,
l10n: null,
isInitialViewSet: false,
downloadComplete: false,
isViewerEmbedded: window.parent !== window,
url: '',
baseUrl: '',
externalServices: DefaultExternalServices,
_boundEvents: {},
contentDispositionFilename: null,
initialize: function () {
var _initialize = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee(appConfig) {
var _this = this;
var appContainer;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
this.preferences = this.externalServices.createPreferences();
this.appConfig = appConfig;
_context.next = 4;
return this._readPreferences();
case 4:
_context.next = 6;
return this._parseHashParameters();
case 6:
_context.next = 8;
return this._initializeL10n();
case 8:
if (this.isViewerEmbedded && _app_options.AppOptions.get('externalLinkTarget') === _pdfjsLib.LinkTarget.NONE) {
_app_options.AppOptions.set('externalLinkTarget', _pdfjsLib.LinkTarget.TOP);
}
_context.next = 11;
return this._initializeViewerComponents();
case 11:
this.bindEvents();
this.bindWindowEvents();
appContainer = appConfig.appContainer || document.documentElement;
this.l10n.translate(appContainer).then(function () {
_this.eventBus.dispatch('localized', {
source: _this
});
});
this.initialized = true;
case 16:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function initialize(_x) {
return _initialize.apply(this, arguments);
}
return initialize;
}(),
_readPreferences: function () {
var _readPreferences2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2() {
var prefs, name;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
if (!(_app_options.AppOptions.get('disablePreferences') === true)) {
_context2.next = 2;
break;
}
return _context2.abrupt("return");
case 2:
_context2.prev = 2;
_context2.next = 5;
return this.preferences.getAll();
case 5:
prefs = _context2.sent;
for (name in prefs) {
_app_options.AppOptions.set(name, prefs[name]);
}
_context2.next = 11;
break;
case 9:
_context2.prev = 9;
_context2.t0 = _context2["catch"](2);
case 11:
case "end":
return _context2.stop();
}
}
}, _callee2, this, [[2, 9]]);
}));
function _readPreferences() {
return _readPreferences2.apply(this, arguments);
}
return _readPreferences;
}(),
_parseHashParameters: function () {
var _parseHashParameters2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee3() {
var waitOn, hash, hashParams, viewer, enabled;
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
if (_app_options.AppOptions.get('pdfBugEnabled')) {
_context3.next = 2;
break;
}
return _context3.abrupt("return");
case 2:
waitOn = [];
hash = document.location.hash.substring(1);
hashParams = (0, _ui_utils.parseQueryString)(hash);
if ('disableworker' in hashParams && hashParams['disableworker'] === 'true') {
waitOn.push(loadFakeWorker());
}
if ('disablerange' in hashParams) {
_app_options.AppOptions.set('disableRange', hashParams['disablerange'] === 'true');
}
if ('disablestream' in hashParams) {
_app_options.AppOptions.set('disableStream', hashParams['disablestream'] === 'true');
}
if ('disableautofetch' in hashParams) {
_app_options.AppOptions.set('disableAutoFetch', hashParams['disableautofetch'] === 'true');
}
if ('disablefontface' in hashParams) {
_app_options.AppOptions.set('disableFontFace', hashParams['disablefontface'] === 'true');
}
if ('disablehistory' in hashParams) {
_app_options.AppOptions.set('disableHistory', hashParams['disablehistory'] === 'true');
}
if ('webgl' in hashParams) {
_app_options.AppOptions.set('enableWebGL', hashParams['webgl'] === 'true');
}
if ('useonlycsszoom' in hashParams) {
_app_options.AppOptions.set('useOnlyCssZoom', hashParams['useonlycsszoom'] === 'true');
}
if ('verbosity' in hashParams) {
_app_options.AppOptions.set('verbosity', hashParams['verbosity'] | 0);
}
if (!('textlayer' in hashParams)) {
_context3.next = 23;
break;
}
_context3.t0 = hashParams['textlayer'];
_context3.next = _context3.t0 === 'off' ? 18 : _context3.t0 === 'visible' ? 20 : _context3.t0 === 'shadow' ? 20 : _context3.t0 === 'hover' ? 20 : 23;
break;
case 18:
_app_options.AppOptions.set('textLayerMode', _ui_utils.TextLayerMode.DISABLE);
return _context3.abrupt("break", 23);
case 20:
viewer = this.appConfig.viewerContainer;
viewer.classList.add('textLayer-' + hashParams['textlayer']);
return _context3.abrupt("break", 23);
case 23:
if ('pdfbug' in hashParams) {
_app_options.AppOptions.set('pdfBug', true);
enabled = hashParams['pdfbug'].split(',');
waitOn.push(loadAndEnablePDFBug(enabled));
}
if ('locale' in hashParams) {
_app_options.AppOptions.set('locale', hashParams['locale']);
}
return _context3.abrupt("return", Promise.all(waitOn).catch(function (reason) {
console.error("_parseHashParameters: \"".concat(reason.message, "\"."));
}));
case 26:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function _parseHashParameters() {
return _parseHashParameters2.apply(this, arguments);
}
return _parseHashParameters;
}(),
_initializeL10n: function () {
var _initializeL10n2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee4() {
var dir;
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
this.l10n = this.externalServices.createL10n({
locale: _app_options.AppOptions.get('locale')
});
_context4.next = 3;
return this.l10n.getDirection();
case 3:
dir = _context4.sent;
document.getElementsByTagName('html')[0].dir = dir;
case 5:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function _initializeL10n() {
return _initializeL10n2.apply(this, arguments);
}
return _initializeL10n;
}(),
_initializeViewerComponents: function () {
var _initializeViewerComponents2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee5() {
var appConfig, dispatchToDOM, eventBus, pdfRenderingQueue, pdfLinkService, downloadManager, findController, container, viewer, thumbnailContainer, sidebarConfig;
return _regenerator.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
appConfig = this.appConfig;
this.overlayManager = new _overlay_manager.OverlayManager();
dispatchToDOM = _app_options.AppOptions.get('eventBusDispatchToDOM');
eventBus = appConfig.eventBus || (0, _ui_utils.getGlobalEventBus)(dispatchToDOM);
this.eventBus = eventBus;
pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
pdfRenderingQueue.onIdle = this.cleanup.bind(this);
this.pdfRenderingQueue = pdfRenderingQueue;
pdfLinkService = new _pdf_link_service.PDFLinkService({
eventBus: eventBus,
externalLinkTarget: _app_options.AppOptions.get('externalLinkTarget'),
externalLinkRel: _app_options.AppOptions.get('externalLinkRel')
});
this.pdfLinkService = pdfLinkService;
downloadManager = this.externalServices.createDownloadManager({
disableCreateObjectURL: _app_options.AppOptions.get('disableCreateObjectURL')
});
this.downloadManager = downloadManager;
findController = new _pdf_find_controller.PDFFindController({
linkService: pdfLinkService,
eventBus: eventBus
});
this.findController = findController;
container = appConfig.mainContainer;
viewer = appConfig.viewerContainer;
this.pdfViewer = new _pdf_viewer.PDFViewer({
container: container,
viewer: viewer,
eventBus: eventBus,
renderingQueue: pdfRenderingQueue,
linkService: pdfLinkService,
downloadManager: downloadManager,
findController: findController,
renderer: _app_options.AppOptions.get('renderer'),
enableWebGL: _app_options.AppOptions.get('enableWebGL'),
l10n: this.l10n,
textLayerMode: _app_options.AppOptions.get('textLayerMode'),
imageResourcesPath: _app_options.AppOptions.get('imageResourcesPath'),
renderInteractiveForms: _app_options.AppOptions.get('renderInteractiveForms'),
enablePrintAutoRotate: _app_options.AppOptions.get('enablePrintAutoRotate'),
useOnlyCssZoom: _app_options.AppOptions.get('useOnlyCssZoom'),
maxCanvasPixels: _app_options.AppOptions.get('maxCanvasPixels')
});
pdfRenderingQueue.setViewer(this.pdfViewer);
pdfLinkService.setViewer(this.pdfViewer);
thumbnailContainer = appConfig.sidebar.thumbnailView;
this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({
container: thumbnailContainer,
renderingQueue: pdfRenderingQueue,
linkService: pdfLinkService,
l10n: this.l10n
});
pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);
this.pdfHistory = new _pdf_history.PDFHistory({
linkService: pdfLinkService,
eventBus: eventBus
});
pdfLinkService.setHistory(this.pdfHistory);
this.findBar = new _pdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n);
this.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n);
this.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({
container: container,
eventBus: eventBus,
cursorToolOnLoad: _app_options.AppOptions.get('cursorToolOnLoad')
});
this.toolbar = new _toolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n);
this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus);
if (this.supportsFullscreen) {
this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({
container: container,
viewer: viewer,
pdfViewer: this.pdfViewer,
eventBus: eventBus,
contextMenuItems: appConfig.fullscreen
});
}
this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n);
this.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({
container: appConfig.sidebar.outlineView,
eventBus: eventBus,
linkService: pdfLinkService
});
this.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({
container: appConfig.sidebar.attachmentsView,
eventBus: eventBus,
downloadManager: downloadManager
});
sidebarConfig = Object.create(appConfig.sidebar);
sidebarConfig.pdfViewer = this.pdfViewer;
sidebarConfig.pdfThumbnailViewer = this.pdfThumbnailViewer;
this.pdfSidebar = new _pdf_sidebar.PDFSidebar(sidebarConfig, eventBus, this.l10n);
this.pdfSidebar.onToggled = this.forceRendering.bind(this);
this.pdfSidebarResizer = new _pdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, this.l10n);
case 39:
case "end":
return _context5.stop();
}
}
}, _callee5, this);
}));
function _initializeViewerComponents() {
return _initializeViewerComponents2.apply(this, arguments);
}
return _initializeViewerComponents;
}(),
run: function run(config) {
this.initialize(config).then(webViewerInitialized);
},
zoomIn: function zoomIn(ticks) {
var newScale = this.pdfViewer.currentScale;
do {
newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);
newScale = Math.ceil(newScale * 10) / 10;
newScale = Math.min(_ui_utils.MAX_SCALE, newScale);
} while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE);
this.pdfViewer.currentScaleValue = newScale;
},
zoomOut: function zoomOut(ticks) {
var newScale = this.pdfViewer.currentScale;
do {
newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);
newScale = Math.floor(newScale * 10) / 10;
newScale = Math.max(_ui_utils.MIN_SCALE, newScale);
} while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE);
this.pdfViewer.currentScaleValue = newScale;
},
get pagesCount() {
return this.pdfDocument ? this.pdfDocument.numPages : 0;
},
set page(val) {
this.pdfViewer.currentPageNumber = val;
},
get page() {
return this.pdfViewer.currentPageNumber;
},
get printing() {
return !!this.printService;
},
get supportsPrinting() {
return PDFPrintServiceFactory.instance.supportsPrinting;
},
get supportsFullscreen() {
var support;
var doc = document.documentElement;
support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen || doc.msRequestFullscreen);
if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false || document.msFullscreenEnabled === false) {
support = false;
}
return (0, _pdfjsLib.shadow)(this, 'supportsFullscreen', support);
},
get supportsIntegratedFind() {
return this.externalServices.supportsIntegratedFind;
},
get supportsDocumentFonts() {
return this.externalServices.supportsDocumentFonts;
},
get supportsDocumentColors() {
return this.externalServices.supportsDocumentColors;
},
get loadingBar() {
var bar = new _ui_utils.ProgressBar('#loadingBar');
return (0, _pdfjsLib.shadow)(this, 'loadingBar', bar);
},
get supportedMouseWheelZoomModifierKeys() {
return this.externalServices.supportedMouseWheelZoomModifierKeys;
},
initPassiveLoading: function initPassiveLoading() {
throw new Error('Not implemented: initPassiveLoading');
},
setTitleUsingUrl: function setTitleUsingUrl() {
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
this.url = url;
this.baseUrl = url.split('#')[0];
var title = (0, _ui_utils.getPDFFileNameFromURL)(url, '');
if (!title) {
try {
title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url;
} catch (ex) {
title = url;
}
}
this.setTitle(title);
},
setTitle: function setTitle(title) {
if (this.isViewerEmbedded) {
return;
}
document.title = title;
},
close: function () {
var _close = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee6() {
var errorWrapper, promise;
return _regenerator.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
errorWrapper = this.appConfig.errorWrapper.container;
errorWrapper.setAttribute('hidden', 'true');
if (this.pdfLoadingTask) {
_context6.next = 4;
break;
}
return _context6.abrupt("return");
case 4:
promise = this.pdfLoadingTask.destroy();
this.pdfLoadingTask = null;
if (this.pdfDocument) {
this.pdfDocument = null;
this.pdfThumbnailViewer.setDocument(null);
this.pdfViewer.setDocument(null);
this.pdfLinkService.setDocument(null);
this.pdfDocumentProperties.setDocument(null);
}
this.store = null;
this.isInitialViewSet = false;
this.downloadComplete = false;
this.url = '';
this.baseUrl = '';
this.contentDispositionFilename = null;
this.pdfSidebar.reset();
this.pdfOutlineViewer.reset();
this.pdfAttachmentViewer.reset();
this.findBar.reset();
this.toolbar.reset();
this.secondaryToolbar.reset();
if (typeof PDFBug !== 'undefined') {
PDFBug.cleanup();
}
return _context6.abrupt("return", promise);
case 21:
case "end":
return _context6.stop();
}
}
}, _callee6, this);
}));
function close() {
return _close.apply(this, arguments);
}
return close;
}(),
open: function () {
var _open = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee7(file, args) {
var _this2 = this;
var workerParameters, key, parameters, apiParameters, _key, prop, loadingTask;
return _regenerator.default.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
if (!this.pdfLoadingTask) {
_context7.next = 3;
break;
}
_context7.next = 3;
return this.close();
case 3:
workerParameters = _app_options.AppOptions.getAll('worker');
for (key in workerParameters) {
_pdfjsLib.GlobalWorkerOptions[key] = workerParameters[key];
}
parameters = Object.create(null);
if (typeof file === 'string') {
this.setTitleUsingUrl(file);
parameters.url = file;
} else if (file && 'byteLength' in file) {
parameters.data = file;
} else if (file.url && file.originalUrl) {
this.setTitleUsingUrl(file.originalUrl);
parameters.url = file.url;
}
apiParameters = _app_options.AppOptions.getAll('api');
for (_key in apiParameters) {
parameters[_key] = apiParameters[_key];
}
if (args) {
for (prop in args) {
if (prop === 'length') {
this.pdfDocumentProperties.setFileSize(args[prop]);
}
parameters[prop] = args[prop];
}
}
loadingTask = (0, _pdfjsLib.getDocument)(parameters);
this.pdfLoadingTask = loadingTask;
loadingTask.onPassword = function (updateCallback, reason) {
_this2.passwordPrompt.setUpdateCallback(updateCallback, reason);
_this2.passwordPrompt.open();
};
loadingTask.onProgress = function (_ref) {
var loaded = _ref.loaded,
total = _ref.total;
_this2.progress(loaded / total);
};
loadingTask.onUnsupportedFeature = this.fallback.bind(this);
return _context7.abrupt("return", loadingTask.promise.then(function (pdfDocument) {
_this2.load(pdfDocument);
}, function (exception) {
if (loadingTask !== _this2.pdfLoadingTask) {
return;
}
var message = exception && exception.message;
var loadingErrorMessage;
if (exception instanceof _pdfjsLib.InvalidPDFException) {
loadingErrorMessage = _this2.l10n.get('invalid_file_error', null, 'Invalid or corrupted PDF file.');
} else if (exception instanceof _pdfjsLib.MissingPDFException) {
loadingErrorMessage = _this2.l10n.get('missing_file_error', null, 'Missing PDF file.');
} else if (exception instanceof _pdfjsLib.UnexpectedResponseException) {
loadingErrorMessage = _this2.l10n.get('unexpected_response_error', null, 'Unexpected server response.');
} else {
loadingErrorMessage = _this2.l10n.get('loading_error', null, 'An error occurred while loading the PDF.');
}
return loadingErrorMessage.then(function (msg) {
_this2.error(msg, {
message: message
});
throw new Error(msg);
});
}));
case 16:
case "end":
return _context7.stop();
}
}
}, _callee7, this);
}));
function open(_x2, _x3) {
return _open.apply(this, arguments);
}
return open;
}(),
download: function download() {
var _this3 = this;
function downloadByUrl() {
downloadManager.downloadUrl(url, filename);
}
var url = this.baseUrl;
var filename = this.contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url);
var downloadManager = this.downloadManager;
downloadManager.onerror = function (err) {
_this3.error("PDF failed to download: ".concat(err));
};
if (!this.pdfDocument || !this.downloadComplete) {
downloadByUrl();
return;
}
this.pdfDocument.getData().then(function (data) {
var blob = new Blob([data], {
type: 'application/pdf'
});
downloadManager.download(blob, url, filename);
}).catch(downloadByUrl);
},
fallback: function fallback(featureId) {},
error: function error(message, moreInfo) {
var moreInfoText = [this.l10n.get('error_version_info', {
version: _pdfjsLib.version || '?',
build: _pdfjsLib.build || '?'
}, 'PDF.js v{{version}} (build: {{build}})')];
if (moreInfo) {
moreInfoText.push(this.l10n.get('error_message', {
message: moreInfo.message
}, 'Message: {{message}}'));
if (moreInfo.stack) {
moreInfoText.push(this.l10n.get('error_stack', {
stack: moreInfo.stack
}, 'Stack: {{stack}}'));
} else {
if (moreInfo.filename) {
moreInfoText.push(this.l10n.get('error_file', {
file: moreInfo.filename
}, 'File: {{file}}'));
}
if (moreInfo.lineNumber) {
moreInfoText.push(this.l10n.get('error_line', {
line: moreInfo.lineNumber
}, 'Line: {{line}}'));
}
}
}
var errorWrapperConfig = this.appConfig.errorWrapper;
var errorWrapper = errorWrapperConfig.container;
errorWrapper.removeAttribute('hidden');
var errorMessage = errorWrapperConfig.errorMessage;
errorMessage.textContent = message;
var closeButton = errorWrapperConfig.closeButton;
closeButton.onclick = function () {
errorWrapper.setAttribute('hidden', 'true');
};
var errorMoreInfo = errorWrapperConfig.errorMoreInfo;
var moreInfoButton = errorWrapperConfig.moreInfoButton;
var lessInfoButton = errorWrapperConfig.lessInfoButton;
moreInfoButton.onclick = function () {
errorMoreInfo.removeAttribute('hidden');
moreInfoButton.setAttribute('hidden', 'true');
lessInfoButton.removeAttribute('hidden');
errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px';
};
lessInfoButton.onclick = function () {
errorMoreInfo.setAttribute('hidden', 'true');
moreInfoButton.removeAttribute('hidden');
lessInfoButton.setAttribute('hidden', 'true');
};
moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler;
lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler;
closeButton.oncontextmenu = _ui_utils.noContextMenuHandler;
moreInfoButton.removeAttribute('hidden');
lessInfoButton.setAttribute('hidden', 'true');
Promise.all(moreInfoText).then(function (parts) {
errorMoreInfo.value = parts.join('\n');
});
},
progress: function progress(level) {
var _this4 = this;
if (this.downloadComplete) {
return;
}
var percent = Math.round(level * 100);
if (percent > this.loadingBar.percent || isNaN(percent)) {
this.loadingBar.percent = percent;
var disableAutoFetch = this.pdfDocument ? this.pdfDocument.loadingParams['disableAutoFetch'] : _app_options.AppOptions.get('disableAutoFetch');
if (disableAutoFetch && percent) {
if (this.disableAutoFetchLoadingBarTimeout) {
clearTimeout(this.disableAutoFetchLoadingBarTimeout);
this.disableAutoFetchLoadingBarTimeout = null;
}
this.loadingBar.show();
this.disableAutoFetchLoadingBarTimeout = setTimeout(function () {
_this4.loadingBar.hide();
_this4.disableAutoFetchLoadingBarTimeout = null;
}, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);
}
}
},
load: function load(pdfDocument) {
var _this5 = this;
this.pdfDocument = pdfDocument;
pdfDocument.getDownloadInfo().then(function () {
_this5.downloadComplete = true;
_this5.loadingBar.hide();
firstPagePromise.then(function () {
_this5.eventBus.dispatch('documentloaded', {
source: _this5
});
});
});
var pageModePromise = pdfDocument.getPageMode().catch(function () {});
var openActionDestPromise = pdfDocument.getOpenActionDestination().catch(function () {});
this.toolbar.setPagesCount(pdfDocument.numPages, false);
this.secondaryToolbar.setPagesCount(pdfDocument.numPages);
var store = this.store = new _view_history.ViewHistory(pdfDocument.fingerprint);
var baseDocumentUrl;
baseDocumentUrl = null;
this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);
this.pdfDocumentProperties.setDocument(pdfDocument, this.url);
var pdfViewer = this.pdfViewer;
pdfViewer.setDocument(pdfDocument);
var firstPagePromise = pdfViewer.firstPagePromise;
var pagesPromise = pdfViewer.pagesPromise;
var onePageRendered = pdfViewer.onePageRendered;
var pdfThumbnailViewer = this.pdfThumbnailViewer;
pdfThumbnailViewer.setDocument(pdfDocument);
firstPagePromise.then(function (pdfPage) {
_this5.loadingBar.setWidth(_this5.appConfig.viewerContainer);
var storePromise = store.getMultiple({
page: null,
zoom: _ui_utils.DEFAULT_SCALE_VALUE,
scrollLeft: '0',
scrollTop: '0',
rotation: null,
sidebarView: _pdf_sidebar.SidebarView.UNKNOWN,
scrollMode: _ui_utils.ScrollMode.UNKNOWN,
spreadMode: _ui_utils.SpreadMode.UNKNOWN
}).catch(function () {});
Promise.all([storePromise, pageModePromise, openActionDestPromise]).then(
/*#__PURE__*/
function () {
var _ref3 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee8(_ref2) {
var _ref4, _ref4$, values, pageMode, openActionDest, viewOnLoad, initialBookmark, zoom, hash, rotation, sidebarView, scrollMode, spreadMode;
return _regenerator.default.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
_ref4 = _slicedToArray(_ref2, 3), _ref4$ = _ref4[0], values = _ref4$ === void 0 ? {} : _ref4$, pageMode = _ref4[1], openActionDest = _ref4[2];
viewOnLoad = _app_options.AppOptions.get('viewOnLoad');
_this5._initializePdfHistory({
fingerprint: pdfDocument.fingerprint,
viewOnLoad: viewOnLoad,
initialDest: openActionDest
});
initialBookmark = _this5.initialBookmark;
zoom = _app_options.AppOptions.get('defaultZoomValue');
hash = zoom ? "zoom=".concat(zoom) : null;
rotation = null;
sidebarView = _app_options.AppOptions.get('sidebarViewOnLoad');
scrollMode = _app_options.AppOptions.get('scrollModeOnLoad');
spreadMode = _app_options.AppOptions.get('spreadModeOnLoad');
if (values.page && viewOnLoad !== ViewOnLoad.INITIAL) {
hash = "page=".concat(values.page, "&zoom=").concat(zoom || values.zoom, ",") + "".concat(values.scrollLeft, ",").concat(values.scrollTop);
rotation = parseInt(values.rotation, 10);
if (sidebarView === _pdf_sidebar.SidebarView.UNKNOWN) {
sidebarView = values.sidebarView | 0;
}
if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) {
scrollMode = values.scrollMode | 0;
}
if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) {
spreadMode = values.spreadMode | 0;
}
}
if (pageMode && sidebarView === _pdf_sidebar.SidebarView.UNKNOWN) {
sidebarView = apiPageModeToSidebarView(pageMode);
}
_this5.setInitialView(hash, {
rotation: rotation,
sidebarView: sidebarView,
scrollMode: scrollMode,
spreadMode: spreadMode
});
_this5.eventBus.dispatch('documentinit', {
source: _this5
});
if (!_this5.isViewerEmbedded) {
pdfViewer.focus();
}
_context8.next = 17;
return Promise.race([pagesPromise, new Promise(function (resolve) {
setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);
})]);
case 17:
if (!(!initialBookmark && !hash)) {
_context8.next = 19;
break;
}
return _context8.abrupt("return");
case 19:
if (!pdfViewer.hasEqualPageSizes) {
_context8.next = 21;
break;
}
return _context8.abrupt("return");
case 21:
_this5.initialBookmark = initialBookmark;
pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;
_this5.setInitialView(hash);
case 24:
case "end":
return _context8.stop();
}
}
}, _callee8, this);
}));
return function (_x4) {
return _ref3.apply(this, arguments);
};
}()).catch(function () {
_this5.setInitialView();
}).then(function () {
pdfViewer.update();
});
});
pdfDocument.getPageLabels().then(function (labels) {
if (!labels || _app_options.AppOptions.get('disablePageLabels')) {
return;
}
var i = 0,
numLabels = labels.length;
if (numLabels !== _this5.pagesCount) {
console.error('The number of Page Labels does not match ' + 'the number of pages in the document.');
return;
}
while (i < numLabels && labels[i] === (i + 1).toString()) {
i++;
}
if (i === numLabels) {
return;
}
pdfViewer.setPageLabels(labels);
pdfThumbnailViewer.setPageLabels(labels);
_this5.toolbar.setPagesCount(pdfDocument.numPages, true);
_this5.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);
});
pagesPromise.then(function () {
if (!_this5.supportsPrinting) {
return;
}
pdfDocument.getJavaScript().then(function (javaScript) {
if (!javaScript) {
return;
}
javaScript.some(function (js) {
if (!js) {
return false;
}
console.warn('Warning: JavaScript is not supported');
_this5.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript);
return true;
});
var regex = /\bprint\s*\(/;
for (var i = 0, ii = javaScript.length; i < ii; i++) {
var js = javaScript[i];
if (js && regex.test(js)) {
setTimeout(function () {
window.print();
});
return;
}
}
});
});
Promise.all([onePageRendered, _ui_utils.animationStarted]).then(function () {
pdfDocument.getOutline().then(function (outline) {
_this5.pdfOutlineViewer.render({
outline: outline
});
});
pdfDocument.getAttachments().then(function (attachments) {
_this5.pdfAttachmentViewer.render({
attachments: attachments
});
});
});
pdfDocument.getMetadata().then(function (_ref5) {
var info = _ref5.info,
metadata = _ref5.metadata,
contentDispositionFilename = _ref5.contentDispositionFilename;
_this5.documentInfo = info;
_this5.metadata = metadata;
_this5.contentDispositionFilename = contentDispositionFilename;
console.log('PDF ' + pdfDocument.fingerprint + ' [' + info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + ' / ' + (info.Creator || '-').trim() + ']' + ' (PDF.js: ' + (_pdfjsLib.version || '-') + (_app_options.AppOptions.get('enableWebGL') ? ' [WebGL]' : '') + ')');
var pdfTitle;
if (metadata && metadata.has('dc:title')) {
var title = metadata.get('dc:title');
if (title !== 'Untitled') {
pdfTitle = title;
}
}
if (!pdfTitle && info && info['Title']) {
pdfTitle = info['Title'];
}
if (pdfTitle) {
_this5.setTitle("".concat(pdfTitle, " - ").concat(contentDispositionFilename || document.title));
} else if (contentDispositionFilename) {
_this5.setTitle(contentDispositionFilename);
}
if (info.IsAcroFormPresent) {
console.warn('Warning: AcroForm/XFA is not supported');
_this5.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
}
});
},
_initializePdfHistory: function _initializePdfHistory(_ref6) {
var fingerprint = _ref6.fingerprint,
viewOnLoad = _ref6.viewOnLoad,
_ref6$initialDest = _ref6.initialDest,
initialDest = _ref6$initialDest === void 0 ? null : _ref6$initialDest;
if (_app_options.AppOptions.get('disableHistory') || this.isViewerEmbedded) {
return;
}
this.pdfHistory.initialize({
fingerprint: fingerprint,
resetHistory: viewOnLoad === ViewOnLoad.INITIAL,
updateUrl: _app_options.AppOptions.get('historyUpdateUrl')
});
if (this.pdfHistory.initialBookmark) {
this.initialBookmark = this.pdfHistory.initialBookmark;
this.initialRotation = this.pdfHistory.initialRotation;
}
if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) {
this.initialBookmark = JSON.stringify(initialDest);
this.pdfHistory.push({
explicitDest: initialDest,
pageNumber: null
});
}
},
setInitialView: function setInitialView(storedHash) {
var _this6 = this;
var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
rotation = _ref7.rotation,
sidebarView = _ref7.sidebarView,
scrollMode = _ref7.scrollMode,
spreadMode = _ref7.spreadMode;
var setRotation = function setRotation(angle) {
if ((0, _ui_utils.isValidRotation)(angle)) {
_this6.pdfViewer.pagesRotation = angle;
}
};
var setViewerModes = function setViewerModes(scroll, spread) {
if ((0, _ui_utils.isValidScrollMode)(scroll)) {
_this6.pdfViewer.scrollMode = scroll;
}
if ((0, _ui_utils.isValidSpreadMode)(spread)) {
_this6.pdfViewer.spreadMode = spread;
}
};
this.isInitialViewSet = true;
this.pdfSidebar.setInitialView(sidebarView);
setViewerModes(scrollMode, spreadMode);
if (this.initialBookmark) {
setRotation(this.initialRotation);
delete this.initialRotation;
this.pdfLinkService.setHash(this.initialBookmark);
this.initialBookmark = null;
} else if (storedHash) {
setRotation(rotation);
this.pdfLinkService.setHash(storedHash);
}
this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel);
this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber);
if (!this.pdfViewer.currentScaleValue) {
this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
}
},
cleanup: function cleanup() {
if (!this.pdfDocument) {
return;
}
this.pdfViewer.cleanup();
this.pdfThumbnailViewer.cleanup();
if (this.pdfViewer.renderer !== _ui_utils.RendererType.SVG) {
this.pdfDocument.cleanup();
}
},
forceRendering: function forceRendering() {
this.pdfRenderingQueue.printing = this.printing;
this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible;
this.pdfRenderingQueue.renderHighestPriority();
},
beforePrint: function beforePrint() {
var _this7 = this;
if (this.printService) {
return;
}
if (!this.supportsPrinting) {
this.l10n.get('printing_not_supported', null, 'Warning: Printing is not fully supported by ' + 'this browser.').then(function (printMessage) {
_this7.error(printMessage);
});
return;
}
if (!this.pdfViewer.pageViewsReady) {
this.l10n.get('printing_not_ready', null, 'Warning: The PDF is not fully loaded for printing.').then(function (notReadyMessage) {
window.alert(notReadyMessage);
});
return;
}
var pagesOverview = this.pdfViewer.getPagesOverview();
var printContainer = this.appConfig.printContainer;
var printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, this.l10n);
this.printService = printService;
this.forceRendering();
printService.layout();
},
afterPrint: function pdfViewSetupAfterPrint() {
if (this.printService) {
this.printService.destroy();
this.printService = null;
}
this.forceRendering();
},
rotatePages: function rotatePages(delta) {
if (!this.pdfDocument) {
return;
}
var newRotation = (this.pdfViewer.pagesRotation + 360 + delta) % 360;
this.pdfViewer.pagesRotation = newRotation;
},
requestPresentationMode: function requestPresentationMode() {
if (!this.pdfPresentationMode) {
return;
}
this.pdfPresentationMode.request();
},
bindEvents: function bindEvents() {
var eventBus = this.eventBus,
_boundEvents = this._boundEvents;
_boundEvents.beforePrint = this.beforePrint.bind(this);
_boundEvents.afterPrint = this.afterPrint.bind(this);
eventBus.on('resize', webViewerResize);
eventBus.on('hashchange', webViewerHashchange);
eventBus.on('beforeprint', _boundEvents.beforePrint);
eventBus.on('afterprint', _boundEvents.afterPrint);
eventBus.on('pagerendered', webViewerPageRendered);
eventBus.on('textlayerrendered', webViewerTextLayerRendered);
eventBus.on('updateviewarea', webViewerUpdateViewarea);
eventBus.on('pagechanging', webViewerPageChanging);
eventBus.on('scalechanging', webViewerScaleChanging);
eventBus.on('rotationchanging', webViewerRotationChanging);
eventBus.on('sidebarviewchanged', webViewerSidebarViewChanged);
eventBus.on('pagemode', webViewerPageMode);
eventBus.on('namedaction', webViewerNamedAction);
eventBus.on('presentationmodechanged', webViewerPresentationModeChanged);
eventBus.on('presentationmode', webViewerPresentationMode);
eventBus.on('openfile', webViewerOpenFile);
eventBus.on('print', webViewerPrint);
eventBus.on('download', webViewerDownload);
eventBus.on('firstpage', webViewerFirstPage);
eventBus.on('lastpage', webViewerLastPage);
eventBus.on('nextpage', webViewerNextPage);
eventBus.on('previouspage', webViewerPreviousPage);
eventBus.on('zoomin', webViewerZoomIn);
eventBus.on('zoomout', webViewerZoomOut);
eventBus.on('pagenumberchanged', webViewerPageNumberChanged);
eventBus.on('scalechanged', webViewerScaleChanged);
eventBus.on('rotatecw', webViewerRotateCw);
eventBus.on('rotateccw', webViewerRotateCcw);
eventBus.on('switchscrollmode', webViewerSwitchScrollMode);
eventBus.on('scrollmodechanged', webViewerScrollModeChanged);
eventBus.on('switchspreadmode', webViewerSwitchSpreadMode);
eventBus.on('spreadmodechanged', webViewerSpreadModeChanged);
eventBus.on('documentproperties', webViewerDocumentProperties);
eventBus.on('find', webViewerFind);
eventBus.on('findfromurlhash', webViewerFindFromUrlHash);
eventBus.on('updatefindmatchescount', webViewerUpdateFindMatchesCount);
eventBus.on('updatefindcontrolstate', webViewerUpdateFindControlState);
eventBus.on('fileinputchange', webViewerFileInputChange);
},
bindWindowEvents: function bindWindowEvents() {
var eventBus = this.eventBus,
_boundEvents = this._boundEvents;
_boundEvents.windowResize = function () {
eventBus.dispatch('resize', {
source: window
});
};
_boundEvents.windowHashChange = function () {
eventBus.dispatch('hashchange', {
source: window,
hash: document.location.hash.substring(1)
});
};
_boundEvents.windowBeforePrint = function () {
eventBus.dispatch('beforeprint', {
source: window
});
};
_boundEvents.windowAfterPrint = function () {
eventBus.dispatch('afterprint', {
source: window
});
};
window.addEventListener('visibilitychange', webViewerVisibilityChange);
window.addEventListener('wheel', webViewerWheel);
window.addEventListener('click', webViewerClick);
window.addEventListener('keydown', webViewerKeyDown);
window.addEventListener('resize', _boundEvents.windowResize);
window.addEventListener('hashchange', _boundEvents.windowHashChange);
window.addEventListener('beforeprint', _boundEvents.windowBeforePrint);
window.addEventListener('afterprint', _boundEvents.windowAfterPrint);
},
unbindEvents: function unbindEvents() {
var eventBus = this.eventBus,
_boundEvents = this._boundEvents;
eventBus.off('resize', webViewerResize);
eventBus.off('hashchange', webViewerHashchange);
eventBus.off('beforeprint', _boundEvents.beforePrint);
eventBus.off('afterprint', _boundEvents.afterPrint);
eventBus.off('pagerendered', webViewerPageRendered);
eventBus.off('textlayerrendered', webViewerTextLayerRendered);
eventBus.off('updateviewarea', webViewerUpdateViewarea);
eventBus.off('pagechanging', webViewerPageChanging);
eventBus.off('scalechanging', webViewerScaleChanging);
eventBus.off('rotationchanging', webViewerRotationChanging);
eventBus.off('sidebarviewchanged', webViewerSidebarViewChanged);
eventBus.off('pagemode', webViewerPageMode);
eventBus.off('namedaction', webViewerNamedAction);
eventBus.off('presentationmodechanged', webViewerPresentationModeChanged);
eventBus.off('presentationmode', webViewerPresentationMode);
eventBus.off('openfile', webViewerOpenFile);
eventBus.off('print', webViewerPrint);
eventBus.off('download', webViewerDownload);
eventBus.off('firstpage', webViewerFirstPage);
eventBus.off('lastpage', webViewerLastPage);
eventBus.off('nextpage', webViewerNextPage);
eventBus.off('previouspage', webViewerPreviousPage);
eventBus.off('zoomin', webViewerZoomIn);
eventBus.off('zoomout', webViewerZoomOut);
eventBus.off('pagenumberchanged', webViewerPageNumberChanged);
eventBus.off('scalechanged', webViewerScaleChanged);
eventBus.off('rotatecw', webViewerRotateCw);
eventBus.off('rotateccw', webViewerRotateCcw);
eventBus.off('switchscrollmode', webViewerSwitchScrollMode);
eventBus.off('scrollmodechanged', webViewerScrollModeChanged);
eventBus.off('switchspreadmode', webViewerSwitchSpreadMode);
eventBus.off('spreadmodechanged', webViewerSpreadModeChanged);
eventBus.off('documentproperties', webViewerDocumentProperties);
eventBus.off('find', webViewerFind);
eventBus.off('findfromurlhash', webViewerFindFromUrlHash);
eventBus.off('updatefindmatchescount', webViewerUpdateFindMatchesCount);
eventBus.off('updatefindcontrolstate', webViewerUpdateFindControlState);
eventBus.off('fileinputchange', webViewerFileInputChange);
_boundEvents.beforePrint = null;
_boundEvents.afterPrint = null;
},
unbindWindowEvents: function unbindWindowEvents() {
var _boundEvents = this._boundEvents;
window.removeEventListener('visibilitychange', webViewerVisibilityChange);
window.removeEventListener('wheel', webViewerWheel);
window.removeEventListener('click', webViewerClick);
window.removeEventListener('keydown', webViewerKeyDown);
window.removeEventListener('resize', _boundEvents.windowResize);
window.removeEventListener('hashchange', _boundEvents.windowHashChange);
window.removeEventListener('beforeprint', _boundEvents.windowBeforePrint);
window.removeEventListener('afterprint', _boundEvents.windowAfterPrint);
_boundEvents.windowResize = null;
_boundEvents.windowHashChange = null;
_boundEvents.windowBeforePrint = null;
_boundEvents.windowAfterPrint = null;
}
};
exports.PDFViewerApplication = PDFViewerApplication;
var validateFileURL;
{
var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];
validateFileURL = function validateFileURL(file) {
if (file === undefined) {
return;
}
try {
var viewerOrigin = new _pdfjsLib.URL(window.location.href).origin || 'null';
if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {
return;
}
var _ref8 = new _pdfjsLib.URL(file, window.location.href),
origin = _ref8.origin,
protocol = _ref8.protocol;
if (origin !== viewerOrigin && protocol !== 'blob:') {
throw new Error('file origin does not match viewer\'s');
}
} catch (ex) {
var message = ex && ex.message;
PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function (loadingErrorMessage) {
PDFViewerApplication.error(loadingErrorMessage, {
message: message
});
});
throw ex;
}
};
}
function loadFakeWorker() {
if (!_pdfjsLib.GlobalWorkerOptions.workerSrc) {
_pdfjsLib.GlobalWorkerOptions.workerSrc = _app_options.AppOptions.get('workerSrc');
}
return (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.getWorkerSrc());
}
function loadAndEnablePDFBug(enabledTabs) {
var appConfig = PDFViewerApplication.appConfig;
return (0, _pdfjsLib.loadScript)(appConfig.debuggerScriptPath).then(function () {
PDFBug.enable(enabledTabs);
PDFBug.init({
OPS: _pdfjsLib.OPS,
createObjectURL: _pdfjsLib.createObjectURL
}, appConfig.mainContainer);
});
}
function webViewerInitialized() {
var appConfig = PDFViewerApplication.appConfig;
var file;
var queryString = document.location.search.substring(1);
var params = (0, _ui_utils.parseQueryString)(queryString);
file = 'file' in params ? params.file : _app_options.AppOptions.get('defaultUrl');
validateFileURL(file);
var fileInput = document.createElement('input');
fileInput.id = appConfig.openFileInputName;
fileInput.className = 'fileInput';
fileInput.setAttribute('type', 'file');
fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;
document.body.appendChild(fileInput);
if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
appConfig.toolbar.openFile.setAttribute('hidden', 'true');
appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true');
} else {
fileInput.value = null;
}
fileInput.addEventListener('change', function (evt) {
var files = evt.target.files;
if (!files || files.length === 0) {
return;
}
PDFViewerApplication.eventBus.dispatch('fileinputchange', {
source: this,
fileInput: evt.target
});
});
appConfig.mainContainer.addEventListener('dragover', function (evt) {
evt.preventDefault();
evt.dataTransfer.dropEffect = 'move';
});
appConfig.mainContainer.addEventListener('drop', function (evt) {
evt.preventDefault();
var files = evt.dataTransfer.files;
if (!files || files.length === 0) {
return;
}
PDFViewerApplication.eventBus.dispatch('fileinputchange', {
source: this,
fileInput: evt.dataTransfer
});
});
if (!PDFViewerApplication.supportsPrinting) {
appConfig.toolbar.print.classList.add('hidden');
appConfig.secondaryToolbar.printButton.classList.add('hidden');
}
if (!PDFViewerApplication.supportsFullscreen) {
appConfig.toolbar.presentationModeButton.classList.add('hidden');
appConfig.secondaryToolbar.presentationModeButton.classList.add('hidden');
}
if (PDFViewerApplication.supportsIntegratedFind) {
appConfig.toolbar.viewFind.classList.add('hidden');
}
appConfig.mainContainer.addEventListener('transitionend', function (evt) {
if (evt.target === this) {
PDFViewerApplication.eventBus.dispatch('resize', {
source: this
});
}
}, true);
appConfig.sidebar.toggleButton.addEventListener('click', function () {
PDFViewerApplication.pdfSidebar.toggle();
});
try {
webViewerOpenFileViaURL(file);
} catch (reason) {
PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function (msg) {
PDFViewerApplication.error(msg, reason);
});
}
}
var webViewerOpenFileViaURL;
{
webViewerOpenFileViaURL = function webViewerOpenFileViaURL(file) {
if (file && file.lastIndexOf('file:', 0) === 0) {
PDFViewerApplication.setTitleUsingUrl(file);
var xhr = new XMLHttpRequest();
xhr.onload = function () {
PDFViewerApplication.open(new Uint8Array(xhr.response));
};
xhr.open('GET', file);
xhr.responseType = 'arraybuffer';
xhr.send();
return;
}
if (file) {
PDFViewerApplication.open(file);
}
};
}
function webViewerPageRendered(evt) {
var pageNumber = evt.pageNumber;
var pageIndex = pageNumber - 1;
var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex);
if (pageNumber === PDFViewerApplication.page) {
PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);
}
if (!pageView) {
return;
}
if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageIndex);
thumbnailView.setImage(pageView);
}
if (typeof Stats !== 'undefined' && Stats.enabled && pageView.stats) {
Stats.add(pageNumber, pageView.stats);
}
if (pageView.error) {
PDFViewerApplication.l10n.get('rendering_error', null, 'An error occurred while rendering the page.').then(function (msg) {
PDFViewerApplication.error(msg, pageView.error);
});
}
}
function webViewerTextLayerRendered(evt) {}
function webViewerPageMode(evt) {
var mode = evt.mode,
view;
switch (mode) {
case 'thumbs':
view = _pdf_sidebar.SidebarView.THUMBS;
break;
case 'bookmarks':
case 'outline':
view = _pdf_sidebar.SidebarView.OUTLINE;
break;
case 'attachments':
view = _pdf_sidebar.SidebarView.ATTACHMENTS;
break;
case 'none':
view = _pdf_sidebar.SidebarView.NONE;
break;
default:
console.error('Invalid "pagemode" hash parameter: ' + mode);
return;
}
PDFViewerApplication.pdfSidebar.switchView(view, true);
}
function webViewerNamedAction(evt) {
var action = evt.action;
switch (action) {
case 'GoToPage':
PDFViewerApplication.appConfig.toolbar.pageNumber.select();
break;
case 'Find':
if (!PDFViewerApplication.supportsIntegratedFind) {
PDFViewerApplication.findBar.toggle();
}
break;
}
}
function webViewerPresentationModeChanged(evt) {
var active = evt.active,
switchInProgress = evt.switchInProgress;
PDFViewerApplication.pdfViewer.presentationModeState = switchInProgress ? _ui_utils.PresentationModeState.CHANGING : active ? _ui_utils.PresentationModeState.FULLSCREEN : _ui_utils.PresentationModeState.NORMAL;
}
function webViewerSidebarViewChanged(evt) {
PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;
var store = PDFViewerApplication.store;
if (store && PDFViewerApplication.isInitialViewSet) {
store.set('sidebarView', evt.view).catch(function () {});
}
}
function webViewerUpdateViewarea(evt) {
var location = evt.location,
store = PDFViewerApplication.store;
if (store && PDFViewerApplication.isInitialViewSet) {
store.setMultiple({
'page': location.pageNumber,
'zoom': location.scale,
'scrollLeft': location.left,
'scrollTop': location.top,
'rotation': location.rotation
}).catch(function () {});
}
var href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams);
PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;
PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href;
var currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1);
var loading = currentPage.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED;
PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);
}
function webViewerScrollModeChanged(evt) {
var store = PDFViewerApplication.store;
if (store && PDFViewerApplication.isInitialViewSet) {
store.set('scrollMode', evt.mode).catch(function () {});
}
}
function webViewerSpreadModeChanged(evt) {
var store = PDFViewerApplication.store;
if (store && PDFViewerApplication.isInitialViewSet) {
store.set('spreadMode', evt.mode).catch(function () {});
}
}
function webViewerResize() {
var pdfDocument = PDFViewerApplication.pdfDocument,
pdfViewer = PDFViewerApplication.pdfViewer;
if (!pdfDocument) {
return;
}
var currentScaleValue = pdfViewer.currentScaleValue;
if (currentScaleValue === 'auto' || currentScaleValue === 'page-fit' || currentScaleValue === 'page-width') {
pdfViewer.currentScaleValue = currentScaleValue;
}
pdfViewer.update();
}
function webViewerHashchange(evt) {
var hash = evt.hash;
if (!hash) {
return;
}
if (!PDFViewerApplication.isInitialViewSet) {
PDFViewerApplication.initialBookmark = hash;
} else if (!PDFViewerApplication.pdfHistory.popStateInProgress) {
PDFViewerApplication.pdfLinkService.setHash(hash);
}
}
var webViewerFileInputChange;
{
webViewerFileInputChange = function webViewerFileInputChange(evt) {
if (PDFViewerApplication.pdfViewer && PDFViewerApplication.pdfViewer.isInPresentationMode) {
return;
}
var file = evt.fileInput.files[0];
if (_pdfjsLib.URL.createObjectURL && !_app_options.AppOptions.get('disableCreateObjectURL')) {
var url = _pdfjsLib.URL.createObjectURL(file);
if (file.name) {
url = {
url: url,
originalUrl: file.name
};
}
PDFViewerApplication.open(url);
} else {
PDFViewerApplication.setTitleUsingUrl(file.name);
var fileReader = new FileReader();
fileReader.onload = function webViewerChangeFileReaderOnload(evt) {
var buffer = evt.target.result;
PDFViewerApplication.open(new Uint8Array(buffer));
};
fileReader.readAsArrayBuffer(file);
}
var appConfig = PDFViewerApplication.appConfig;
appConfig.toolbar.viewBookmark.setAttribute('hidden', 'true');
appConfig.secondaryToolbar.viewBookmarkButton.setAttribute('hidden', 'true');
appConfig.toolbar.download.setAttribute('hidden', 'true');
appConfig.secondaryToolbar.downloadButton.setAttribute('hidden', 'true');
};
}
function webViewerPresentationMode() {
PDFViewerApplication.requestPresentationMode();
}
function webViewerOpenFile() {
var openFileInputName = PDFViewerApplication.appConfig.openFileInputName;
document.getElementById(openFileInputName).click();
}
function webViewerPrint() {
window.print();
}
function webViewerDownload() {
PDFViewerApplication.download();
}
function webViewerFirstPage() {
if (PDFViewerApplication.pdfDocument) {
PDFViewerApplication.page = 1;
}
}
function webViewerLastPage() {
if (PDFViewerApplication.pdfDocument) {
PDFViewerApplication.page = PDFViewerApplication.pagesCount;
}
}
function webViewerNextPage() {
PDFViewerApplication.page++;
}
function webViewerPreviousPage() {
PDFViewerApplication.page--;
}
function webViewerZoomIn() {
PDFViewerApplication.zoomIn();
}
function webViewerZoomOut() {
PDFViewerApplication.zoomOut();
}
function webViewerPageNumberChanged(evt) {
var pdfViewer = PDFViewerApplication.pdfViewer;
if (evt.value !== '') {
pdfViewer.currentPageLabel = evt.value;
}
if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) {
PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);
}
}
function webViewerScaleChanged(evt) {
PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;
}
function webViewerRotateCw() {
PDFViewerApplication.rotatePages(90);
}
function webViewerRotateCcw() {
PDFViewerApplication.rotatePages(-90);
}
function webViewerSwitchScrollMode(evt) {
PDFViewerApplication.pdfViewer.scrollMode = evt.mode;
}
function webViewerSwitchSpreadMode(evt) {
PDFViewerApplication.pdfViewer.spreadMode = evt.mode;
}
function webViewerDocumentProperties() {
PDFViewerApplication.pdfDocumentProperties.open();
}
function webViewerFind(evt) {
PDFViewerApplication.findController.executeCommand('find' + evt.type, {
query: evt.query,
phraseSearch: evt.phraseSearch,
caseSensitive: evt.caseSensitive,
entireWord: evt.entireWord,
highlightAll: evt.highlightAll,
findPrevious: evt.findPrevious
});
}
function webViewerFindFromUrlHash(evt) {
PDFViewerApplication.findController.executeCommand('find', {
query: evt.query,
phraseSearch: evt.phraseSearch,
caseSensitive: false,
entireWord: false,
highlightAll: true,
findPrevious: false
});
}
function webViewerUpdateFindMatchesCount(_ref9) {
var matchesCount = _ref9.matchesCount;
if (PDFViewerApplication.supportsIntegratedFind) {
PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);
} else {
PDFViewerApplication.findBar.updateResultsCount(matchesCount);
}
}
function webViewerUpdateFindControlState(_ref10) {
var state = _ref10.state,
previous = _ref10.previous,
matchesCount = _ref10.matchesCount;
if (PDFViewerApplication.supportsIntegratedFind) {
PDFViewerApplication.externalServices.updateFindControlState({
result: state,
findPrevious: previous,
matchesCount: matchesCount
});
} else {
PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount);
}
}
function webViewerScaleChanging(evt) {
PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);
PDFViewerApplication.pdfViewer.update();
}
function webViewerRotationChanging(evt) {
PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;
PDFViewerApplication.forceRendering();
PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;
}
function webViewerPageChanging(evt) {
var page = evt.pageNumber;
PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null);
PDFViewerApplication.secondaryToolbar.setPageNumber(page);
if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);
}
if (typeof Stats !== 'undefined' && Stats.enabled) {
var pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1);
if (pageView && pageView.stats) {
Stats.add(page, pageView.stats);
}
}
}
function webViewerVisibilityChange(evt) {
if (document.visibilityState === 'visible') {
setZoomDisabledTimeout();
}
}
var zoomDisabledTimeout = null;
function setZoomDisabledTimeout() {
if (zoomDisabledTimeout) {
clearTimeout(zoomDisabledTimeout);
}
zoomDisabledTimeout = setTimeout(function () {
zoomDisabledTimeout = null;
}, WHEEL_ZOOM_DISABLED_TIMEOUT);
}
function webViewerWheel(evt) {
var pdfViewer = PDFViewerApplication.pdfViewer;
if (pdfViewer.isInPresentationMode) {
return;
}
if (evt.ctrlKey || evt.metaKey) {
var support = PDFViewerApplication.supportedMouseWheelZoomModifierKeys;
if (evt.ctrlKey && !support.ctrlKey || evt.metaKey && !support.metaKey) {
return;
}
evt.preventDefault();
if (zoomDisabledTimeout || document.visibilityState === 'hidden') {
return;
}
var previousScale = pdfViewer.currentScale;
var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);
var MOUSE_WHEEL_DELTA_PER_PAGE_SCALE = 3.0;
var ticks = delta * MOUSE_WHEEL_DELTA_PER_PAGE_SCALE;
if (ticks < 0) {
PDFViewerApplication.zoomOut(-ticks);
} else {
PDFViewerApplication.zoomIn(ticks);
}
var currentScale = pdfViewer.currentScale;
if (previousScale !== currentScale) {
var scaleCorrectionFactor = currentScale / previousScale - 1;
var rect = pdfViewer.container.getBoundingClientRect();
var dx = evt.clientX - rect.left;
var dy = evt.clientY - rect.top;
pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor;
pdfViewer.container.scrollTop += dy * scaleCorrectionFactor;
}
} else {
setZoomDisabledTimeout();
}
}
function webViewerClick(evt) {
if (!PDFViewerApplication.secondaryToolbar.isOpen) {
return;
}
var appConfig = PDFViewerApplication.appConfig;
if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) {
PDFViewerApplication.secondaryToolbar.close();
}
}
function webViewerKeyDown(evt) {
if (PDFViewerApplication.overlayManager.active) {
return;
}
var handled = false,
ensureViewerFocused = false;
var cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0);
var pdfViewer = PDFViewerApplication.pdfViewer;
var isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode;
if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {
switch (evt.keyCode) {
case 70:
if (!PDFViewerApplication.supportsIntegratedFind) {
PDFViewerApplication.findBar.open();
handled = true;
}
break;
case 71:
if (!PDFViewerApplication.supportsIntegratedFind) {
var findState = PDFViewerApplication.findController.state;
if (findState) {
PDFViewerApplication.findController.executeCommand('findagain', {
query: findState.query,
phraseSearch: findState.phraseSearch,
caseSensitive: findState.caseSensitive,
entireWord: findState.entireWord,
highlightAll: findState.highlightAll,
findPrevious: cmd === 5 || cmd === 12
});
}
handled = true;
}
break;
case 61:
case 107:
case 187:
case 171:
if (!isViewerInPresentationMode) {
PDFViewerApplication.zoomIn();
}
handled = true;
break;
case 173:
case 109:
case 189:
if (!isViewerInPresentationMode) {
PDFViewerApplication.zoomOut();
}
handled = true;
break;
case 48:
case 96:
if (!isViewerInPresentationMode) {
setTimeout(function () {
pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
});
handled = false;
}
break;
case 38:
if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
PDFViewerApplication.page = 1;
handled = true;
ensureViewerFocused = true;
}
break;
case 40:
if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
PDFViewerApplication.page = PDFViewerApplication.pagesCount;
handled = true;
ensureViewerFocused = true;
}
break;
}
}
if (cmd === 1 || cmd === 8) {
switch (evt.keyCode) {
case 83:
PDFViewerApplication.download();
handled = true;
break;
}
}
if (cmd === 3 || cmd === 10) {
switch (evt.keyCode) {
case 80:
PDFViewerApplication.requestPresentationMode();
handled = true;
break;
case 71:
PDFViewerApplication.appConfig.toolbar.pageNumber.select();
handled = true;
break;
}
}
if (handled) {
if (ensureViewerFocused && !isViewerInPresentationMode) {
pdfViewer.focus();
}
evt.preventDefault();
return;
}
var curElement = document.activeElement || document.querySelector(':focus');
var curElementTagName = curElement && curElement.tagName.toUpperCase();
if (curElementTagName === 'INPUT' || curElementTagName === 'TEXTAREA' || curElementTagName === 'SELECT') {
if (evt.keyCode !== 27) {
return;
}
}
if (cmd === 0) {
var turnPage = 0,
turnOnlyIfPageFit = false;
switch (evt.keyCode) {
case 38:
case 33:
if (pdfViewer.isVerticalScrollbarEnabled) {
turnOnlyIfPageFit = true;
}
turnPage = -1;
break;
case 8:
if (!isViewerInPresentationMode) {
turnOnlyIfPageFit = true;
}
turnPage = -1;
break;
case 37:
if (pdfViewer.isHorizontalScrollbarEnabled) {
turnOnlyIfPageFit = true;
}
case 75:
case 80:
turnPage = -1;
break;
case 27:
if (PDFViewerApplication.secondaryToolbar.isOpen) {
PDFViewerApplication.secondaryToolbar.close();
handled = true;
}
if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) {
PDFViewerApplication.findBar.close();
handled = true;
}
break;
case 40:
case 34:
if (pdfViewer.isVerticalScrollbarEnabled) {
turnOnlyIfPageFit = true;
}
turnPage = 1;
break;
case 13:
case 32:
if (!isViewerInPresentationMode) {
turnOnlyIfPageFit = true;
}
turnPage = 1;
break;
case 39:
if (pdfViewer.isHorizontalScrollbarEnabled) {
turnOnlyIfPageFit = true;
}
case 74:
case 78:
turnPage = 1;
break;
case 36:
if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
PDFViewerApplication.page = 1;
handled = true;
ensureViewerFocused = true;
}
break;
case 35:
if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
PDFViewerApplication.page = PDFViewerApplication.pagesCount;
handled = true;
ensureViewerFocused = true;
}
break;
case 83:
PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT);
break;
case 72:
PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND);
break;
case 82:
PDFViewerApplication.rotatePages(90);
break;
case 115:
PDFViewerApplication.pdfSidebar.toggle();
break;
}
if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === 'page-fit')) {
if (turnPage > 0) {
if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
PDFViewerApplication.page++;
}
} else {
if (PDFViewerApplication.page > 1) {
PDFViewerApplication.page--;
}
}
handled = true;
}
}
if (cmd === 4) {
switch (evt.keyCode) {
case 13:
case 32:
if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') {
break;
}
if (PDFViewerApplication.page > 1) {
PDFViewerApplication.page--;
}
handled = true;
break;
case 82:
PDFViewerApplication.rotatePages(-90);
break;
}
}
if (!handled && !isViewerInPresentationMode) {
if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== 'BUTTON') {
ensureViewerFocused = true;
}
}
if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {
pdfViewer.focus();
}
if (handled) {
evt.preventDefault();
}
}
function apiPageModeToSidebarView(mode) {
switch (mode) {
case 'UseNone':
return _pdf_sidebar.SidebarView.NONE;
case 'UseThumbs':
return _pdf_sidebar.SidebarView.THUMBS;
case 'UseOutlines':
return _pdf_sidebar.SidebarView.OUTLINE;
case 'UseAttachments':
return _pdf_sidebar.SidebarView.ATTACHMENTS;
case 'UseOC':
}
return _pdf_sidebar.SidebarView.NONE;
}
var PDFPrintServiceFactory = {
instance: {
supportsPrinting: false,
createPrintService: function createPrintService() {
throw new Error('Not implemented: createPrintService');
}
}
};
exports.PDFPrintServiceFactory = PDFPrintServiceFactory;
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = __webpack_require__(3);
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
var g = function () {
return this || (typeof self === "undefined" ? "undefined" : _typeof(self)) === "object" && self;
}() || Function("return this")();
var hadRuntime = g.regeneratorRuntime && Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
var oldRuntime = hadRuntime && g.regeneratorRuntime;
g.regeneratorRuntime = undefined;
module.exports = __webpack_require__(4);
if (hadRuntime) {
g.regeneratorRuntime = oldRuntime;
} else {
try {
delete g.regeneratorRuntime;
} catch (e) {
g.regeneratorRuntime = undefined;
}
}
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(module) {
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
!function (global) {
"use strict";
var Op = Object.prototype;
var hasOwn = Op.hasOwnProperty;
var undefined;
var $Symbol = typeof Symbol === "function" ? Symbol : {};
var iteratorSymbol = $Symbol.iterator || "@@iterator";
var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
var inModule = ( false ? undefined : _typeof(module)) === "object";
var runtime = global.regeneratorRuntime;
if (runtime) {
if (inModule) {
module.exports = runtime;
}
return;
}
runtime = global.regeneratorRuntime = inModule ? module.exports : {};
function wrap(innerFn, outerFn, self, tryLocsList) {
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
var generator = Object.create(protoGenerator.prototype);
var context = new Context(tryLocsList || []);
generator._invoke = makeInvokeMethod(innerFn, self, context);
return generator;
}
runtime.wrap = wrap;
function tryCatch(fn, obj, arg) {
try {
return {
type: "normal",
arg: fn.call(obj, arg)
};
} catch (err) {
return {
type: "throw",
arg: err
};
}
}
var GenStateSuspendedStart = "suspendedStart";
var GenStateSuspendedYield = "suspendedYield";
var GenStateExecuting = "executing";
var GenStateCompleted = "completed";
var ContinueSentinel = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var IteratorPrototype = {};
IteratorPrototype[iteratorSymbol] = function () {
return this;
};
var getProto = Object.getPrototypeOf;
var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
IteratorPrototype = NativeIteratorPrototype;
}
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
GeneratorFunctionPrototype.constructor = GeneratorFunction;
GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
prototype[method] = function (arg) {
return this._invoke(method, arg);
};
});
}
runtime.isGeneratorFunction = function (genFun) {
var ctor = typeof genFun === "function" && genFun.constructor;
return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
};
runtime.mark = function (genFun) {
if (Object.setPrototypeOf) {
Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
} else {
genFun.__proto__ = GeneratorFunctionPrototype;
if (!(toStringTagSymbol in genFun)) {
genFun[toStringTagSymbol] = "GeneratorFunction";
}
}
genFun.prototype = Object.create(Gp);
return genFun;
};
runtime.awrap = function (arg) {
return {
__await: arg
};
};
function AsyncIterator(generator) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if (record.type === "throw") {
reject(record.arg);
} else {
var result = record.arg;
var value = result.value;
if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) {
return Promise.resolve(value.__await).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
});
}
return Promise.resolve(value).then(function (unwrapped) {
result.value = unwrapped;
resolve(result);
}, function (error) {
return invoke("throw", error, resolve, reject);
});
}
}
var previousPromise;
function enqueue(method, arg) {
function callInvokeWithMethodAndArg() {
return new Promise(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
this._invoke = enqueue;
}
defineIteratorMethods(AsyncIterator.prototype);
AsyncIterator.prototype[asyncIteratorSymbol] = function () {
return this;
};
runtime.AsyncIterator = AsyncIterator;
runtime.async = function (innerFn, outerFn, self, tryLocsList) {
var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
};
function makeInvokeMethod(innerFn, self, context) {
var state = GenStateSuspendedStart;
return function invoke(method, arg) {
if (state === GenStateExecuting) {
throw new Error("Generator is already running");
}
if (state === GenStateCompleted) {
if (method === "throw") {
throw arg;
}
return doneResult();
}
context.method = method;
context.arg = arg;
while (true) {
var delegate = context.delegate;
if (delegate) {
var delegateResult = maybeInvokeDelegate(delegate, context);
if (delegateResult) {
if (delegateResult === ContinueSentinel) continue;
return delegateResult;
}
}
if (context.method === "next") {
context.sent = context._sent = context.arg;
} else if (context.method === "throw") {
if (state === GenStateSuspendedStart) {
state = GenStateCompleted;
throw context.arg;
}
context.dispatchException(context.arg);
} else if (context.method === "return") {
context.abrupt("return", context.arg);
}
state = GenStateExecuting;
var record = tryCatch(innerFn, self, context);
if (record.type === "normal") {
state = context.done ? GenStateCompleted : GenStateSuspendedYield;
if (record.arg === ContinueSentinel) {
continue;
}
return {
value: record.arg,
done: context.done
};
} else if (record.type === "throw") {
state = GenStateCompleted;
context.method = "throw";
context.arg = record.arg;
}
}
};
}
function maybeInvokeDelegate(delegate, context) {
var method = delegate.iterator[context.method];
if (method === undefined) {
context.delegate = null;
if (context.method === "throw") {
if (delegate.iterator.return) {
context.method = "return";
context.arg = undefined;
maybeInvokeDelegate(delegate, context);
if (context.method === "throw") {
return ContinueSentinel;
}
}
context.method = "throw";
context.arg = new TypeError("The iterator does not provide a 'throw' method");
}
return ContinueSentinel;
}
var record = tryCatch(method, delegate.iterator, context.arg);
if (record.type === "throw") {
context.method = "throw";
context.arg = record.arg;
context.delegate = null;
return ContinueSentinel;
}
var info = record.arg;
if (!info) {
context.method = "throw";
context.arg = new TypeError("iterator result is not an object");
context.delegate = null;
return ContinueSentinel;
}
if (info.done) {
context[delegate.resultName] = info.value;
context.next = delegate.nextLoc;
if (context.method !== "return") {
context.method = "next";
context.arg = undefined;
}
} else {
return info;
}
context.delegate = null;
return ContinueSentinel;
}
defineIteratorMethods(Gp);
Gp[toStringTagSymbol] = "Generator";
Gp[iteratorSymbol] = function () {
return this;
};
Gp.toString = function () {
return "[object Generator]";
};
function pushTryEntry(locs) {
var entry = {
tryLoc: locs[0]
};
if (1 in locs) {
entry.catchLoc = locs[1];
}
if (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(true);
}
runtime.keys = function (object) {
var keys = [];
for (var key in object) {
keys.push(key);
}
keys.reverse();
return function next() {
while (keys.length) {
var key = keys.pop();
if (key in object) {
next.value = key;
next.done = false;
return next;
}
}
next.done = true;
return next;
};
};
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) {
return iteratorMethod.call(iterable);
}
if (typeof iterable.next === "function") {
return iterable;
}
if (!isNaN(iterable.length)) {
var i = -1,
next = function next() {
while (++i < iterable.length) {
if (hasOwn.call(iterable, i)) {
next.value = iterable[i];
next.done = false;
return next;
}
}
next.value = undefined;
next.done = true;
return next;
};
return next.next = next;
}
}
return {
next: doneResult
};
}
runtime.values = values;
function doneResult() {
return {
value: undefined,
done: true
};
}
Context.prototype = {
constructor: Context,
reset: function reset(skipTempReset) {
this.prev = 0;
this.next = 0;
this.sent = this._sent = undefined;
this.done = false;
this.delegate = null;
this.method = "next";
this.arg = undefined;
this.tryEntries.forEach(resetTryEntry);
if (!skipTempReset) {
for (var name in this) {
if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
this[name] = undefined;
}
}
}
},
stop: function stop() {
this.done = true;
var rootEntry = this.tryEntries[0];
var rootRecord = rootEntry.completion;
if (rootRecord.type === "throw") {
throw rootRecord.arg;
}
return this.rval;
},
dispatchException: function dispatchException(exception) {
if (this.done) {
throw exception;
}
var context = this;
function handle(loc, caught) {
record.type = "throw";
record.arg = exception;
context.next = loc;
if (caught) {
context.method = "next";
context.arg = undefined;
}
return !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
var record = entry.completion;
if (entry.tryLoc === "root") {
return handle("end");
}
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc");
var hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
} else if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else if (hasCatch) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
}
} else if (hasFinally) {
if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else {
throw new Error("try statement without catch or finally");
}
}
}
},
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;
}
}
if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
finallyEntry = null;
}
var record = finallyEntry ? finallyEntry.completion : {};
record.type = type;
record.arg = arg;
if (finallyEntry) {
this.method = "next";
this.next = finallyEntry.finallyLoc;
return ContinueSentinel;
}
return this.complete(record);
},
complete: function complete(record, afterLoc) {
if (record.type === "throw") {
throw record.arg;
}
if (record.type === "break" || record.type === "continue") {
this.next = record.arg;
} else if (record.type === "return") {
this.rval = this.arg = record.arg;
this.method = "return";
this.next = "end";
} else if (record.type === "normal" && afterLoc) {
this.next = afterLoc;
}
return ContinueSentinel;
},
finish: function finish(finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) {
this.complete(entry.completion, entry.afterLoc);
resetTryEntry(entry);
return 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 (record.type === "throw") {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
}
throw new Error("illegal catch attempt");
},
delegateYield: function delegateYield(iterable, resultName, nextLoc) {
this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
};
if (this.method === "next") {
this.arg = undefined;
}
return ContinueSentinel;
}
};
}(function () {
return this || (typeof self === "undefined" ? "undefined" : _typeof(self)) === "object" && self;
}() || Function("return this")());
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)(module)))
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = function (module) {
if (!module.webpackPolyfill) {
module.deprecate = function () {};
module.paths = [];
if (!module.children) module.children = [];
Object.defineProperty(module, "loaded", {
enumerable: true,
get: function get() {
return module.l;
}
});
Object.defineProperty(module, "id", {
enumerable: true,
get: function get() {
return module.i;
}
});
module.webpackPolyfill = 1;
}
return module;
};
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isValidRotation = isValidRotation;
exports.isValidScrollMode = isValidScrollMode;
exports.isValidSpreadMode = isValidSpreadMode;
exports.isPortraitOrientation = isPortraitOrientation;
exports.getGlobalEventBus = getGlobalEventBus;
exports.getPDFFileNameFromURL = getPDFFileNameFromURL;
exports.noContextMenuHandler = noContextMenuHandler;
exports.parseQueryString = parseQueryString;
exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;
exports.getVisibleElements = getVisibleElements;
exports.roundToDivide = roundToDivide;
exports.getPageSizeInches = getPageSizeInches;
exports.approximateFraction = approximateFraction;
exports.getOutputScale = getOutputScale;
exports.scrollIntoView = scrollIntoView;
exports.watchScroll = watchScroll;
exports.binarySearchFirstItem = binarySearchFirstItem;
exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
exports.moveToEndOfArray = moveToEndOfArray;
exports.WaitOnType = exports.animationStarted = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.SpreadMode = exports.ScrollMode = exports.TextLayerMode = exports.RendererType = exports.PresentationModeState = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(2));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
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); }); }; }
var CSS_UNITS = 96.0 / 72.0;
exports.CSS_UNITS = CSS_UNITS;
var DEFAULT_SCALE_VALUE = 'auto';
exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE;
var DEFAULT_SCALE = 1.0;
exports.DEFAULT_SCALE = DEFAULT_SCALE;
var MIN_SCALE = 0.10;
exports.MIN_SCALE = MIN_SCALE;
var MAX_SCALE = 10.0;
exports.MAX_SCALE = MAX_SCALE;
var UNKNOWN_SCALE = 0;
exports.UNKNOWN_SCALE = UNKNOWN_SCALE;
var MAX_AUTO_SCALE = 1.25;
exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;
var SCROLLBAR_PADDING = 40;
exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
var VERTICAL_PADDING = 5;
exports.VERTICAL_PADDING = VERTICAL_PADDING;
var PresentationModeState = {
UNKNOWN: 0,
NORMAL: 1,
CHANGING: 2,
FULLSCREEN: 3
};
exports.PresentationModeState = PresentationModeState;
var RendererType = {
CANVAS: 'canvas',
SVG: 'svg'
};
exports.RendererType = RendererType;
var TextLayerMode = {
DISABLE: 0,
ENABLE: 1,
ENABLE_ENHANCE: 2
};
exports.TextLayerMode = TextLayerMode;
var ScrollMode = {
UNKNOWN: -1,
VERTICAL: 0,
HORIZONTAL: 1,
WRAPPED: 2
};
exports.ScrollMode = ScrollMode;
var SpreadMode = {
UNKNOWN: -1,
NONE: 0,
ODD: 1,
EVEN: 2
};
exports.SpreadMode = SpreadMode;
function formatL10nValue(text, args) {
if (!args) {
return text;
}
return text.replace(/\{\{\s*(\w+)\s*\}\}/g, function (all, name) {
return name in args ? args[name] : '{{' + name + '}}';
});
}
var NullL10n = {
getLanguage: function () {
var _getLanguage = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
return _context.abrupt("return", 'en-us');
case 1:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function getLanguage() {
return _getLanguage.apply(this, arguments);
}
return getLanguage;
}(),
getDirection: function () {
var _getDirection = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2() {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", 'ltr');
case 1:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function getDirection() {
return _getDirection.apply(this, arguments);
}
return getDirection;
}(),
get: function () {
var _get = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee3(property, args, fallback) {
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
return _context3.abrupt("return", formatL10nValue(fallback, args));
case 1:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function get(_x, _x2, _x3) {
return _get.apply(this, arguments);
}
return get;
}(),
translate: function () {
var _translate = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee4(element) {
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function translate(_x4) {
return _translate.apply(this, arguments);
}
return translate;
}()
};
exports.NullL10n = NullL10n;
function getOutputScale(ctx) {
var devicePixelRatio = window.devicePixelRatio || 1;
var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;
var pixelRatio = devicePixelRatio / backingStoreRatio;
return {
sx: pixelRatio,
sy: pixelRatio,
scaled: pixelRatio !== 1
};
}
function scrollIntoView(element, spot) {
var skipOverflowHiddenElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var parent = element.offsetParent;
if (!parent) {
console.error('offsetParent is not set -- cannot scroll');
return;
}
var offsetY = element.offsetTop + element.clientTop;
var offsetX = element.offsetLeft + element.clientLeft;
while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || skipOverflowHiddenElements && getComputedStyle(parent).overflow === 'hidden') {
if (parent.dataset._scaleY) {
offsetY /= parent.dataset._scaleY;
offsetX /= parent.dataset._scaleX;
}
offsetY += parent.offsetTop;
offsetX += parent.offsetLeft;
parent = parent.offsetParent;
if (!parent) {
return;
}
}
if (spot) {
if (spot.top !== undefined) {
offsetY += spot.top;
}
if (spot.left !== undefined) {
offsetX += spot.left;
parent.scrollLeft = offsetX;
}
}
parent.scrollTop = offsetY;
}
function watchScroll(viewAreaElement, callback) {
var debounceScroll = function debounceScroll(evt) {
if (rAF) {
return;
}
rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {
rAF = null;
var currentX = viewAreaElement.scrollLeft;
var lastX = state.lastX;
if (currentX !== lastX) {
state.right = currentX > lastX;
}
state.lastX = currentX;
var currentY = viewAreaElement.scrollTop;
var lastY = state.lastY;
if (currentY !== lastY) {
state.down = currentY > lastY;
}
state.lastY = currentY;
callback(state);
});
};
var state = {
right: true,
down: true,
lastX: viewAreaElement.scrollLeft,
lastY: viewAreaElement.scrollTop,
_eventHandler: debounceScroll
};
var rAF = null;
viewAreaElement.addEventListener('scroll', debounceScroll, true);
return state;
}
function parseQueryString(query) {
var parts = query.split('&');
var params = Object.create(null);
for (var i = 0, ii = parts.length; i < ii; ++i) {
var param = parts[i].split('=');
var key = param[0].toLowerCase();
var value = param.length > 1 ? param[1] : null;
params[decodeURIComponent(key)] = decodeURIComponent(value);
}
return params;
}
function binarySearchFirstItem(items, condition) {
var minIndex = 0;
var maxIndex = items.length - 1;
if (items.length === 0 || !condition(items[maxIndex])) {
return items.length;
}
if (condition(items[minIndex])) {
return minIndex;
}
while (minIndex < maxIndex) {
var currentIndex = minIndex + maxIndex >> 1;
var currentItem = items[currentIndex];
if (condition(currentItem)) {
maxIndex = currentIndex;
} else {
minIndex = currentIndex + 1;
}
}
return minIndex;
}
function approximateFraction(x) {
if (Math.floor(x) === x) {
return [x, 1];
}
var xinv = 1 / x;
var limit = 8;
if (xinv > limit) {
return [1, limit];
} else if (Math.floor(xinv) === xinv) {
return [1, xinv];
}
var x_ = x > 1 ? xinv : x;
var a = 0,
b = 1,
c = 1,
d = 1;
while (true) {
var p = a + c,
q = b + d;
if (q > limit) {
break;
}
if (x_ <= p / q) {
c = p;
d = q;
} else {
a = p;
b = q;
}
}
var result;
if (x_ - a / b < c / d - x_) {
result = x_ === x ? [a, b] : [b, a];
} else {
result = x_ === x ? [c, d] : [d, c];
}
return result;
}
function roundToDivide(x, div) {
var r = x % div;
return r === 0 ? x : Math.round(x - r + div);
}
function getPageSizeInches(_ref) {
var view = _ref.view,
userUnit = _ref.userUnit,
rotate = _ref.rotate;
var _view = _slicedToArray(view, 4),
x1 = _view[0],
y1 = _view[1],
x2 = _view[2],
y2 = _view[3];
var changeOrientation = rotate % 180 !== 0;
var width = (x2 - x1) / 72 * userUnit;
var height = (y2 - y1) / 72 * userUnit;
return {
width: changeOrientation ? height : width,
height: changeOrientation ? width : height
};
}
function backtrackBeforeAllVisibleElements(index, views, top) {
if (index < 2) {
return index;
}
var elt = views[index].div;
var pageTop = elt.offsetTop + elt.clientTop;
if (pageTop >= top) {
elt = views[index - 1].div;
pageTop = elt.offsetTop + elt.clientTop;
}
for (var i = index - 2; i >= 0; --i) {
elt = views[i].div;
if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {
break;
}
index = i;
}
return index;
}
function getVisibleElements(scrollEl, views) {
var sortByVisibility = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var horizontal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var top = scrollEl.scrollTop,
bottom = top + scrollEl.clientHeight;
var left = scrollEl.scrollLeft,
right = left + scrollEl.clientWidth;
function isElementBottomAfterViewTop(view) {
var element = view.div;
var elementBottom = element.offsetTop + element.clientTop + element.clientHeight;
return elementBottom > top;
}
function isElementRightAfterViewLeft(view) {
var element = view.div;
var elementRight = element.offsetLeft + element.clientLeft + element.clientWidth;
return elementRight > left;
}
var visible = [],
numViews = views.length;
var firstVisibleElementInd = numViews === 0 ? 0 : binarySearchFirstItem(views, horizontal ? isElementRightAfterViewLeft : isElementBottomAfterViewTop);
if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) {
firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top);
}
var lastEdge = horizontal ? right : -1;
for (var i = firstVisibleElementInd; i < numViews; i++) {
var view = views[i],
element = view.div;
var currentWidth = element.offsetLeft + element.clientLeft;
var currentHeight = element.offsetTop + element.clientTop;
var viewWidth = element.clientWidth,
viewHeight = element.clientHeight;
var viewRight = currentWidth + viewWidth;
var viewBottom = currentHeight + viewHeight;
if (lastEdge === -1) {
if (viewBottom >= bottom) {
lastEdge = viewBottom;
}
} else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {
break;
}
if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) {
continue;
}
var hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);
var hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);
var percent = (viewHeight - hiddenHeight) * (viewWidth - hiddenWidth) * 100 / viewHeight / viewWidth | 0;
visible.push({
id: view.id,
x: currentWidth,
y: currentHeight,
view: view,
percent: percent
});
}
var first = visible[0],
last = visible[visible.length - 1];
if (sortByVisibility) {
visible.sort(function (a, b) {
var pc = a.percent - b.percent;
if (Math.abs(pc) > 0.001) {
return -pc;
}
return a.id - b.id;
});
}
return {
first: first,
last: last,
views: visible
};
}
function noContextMenuHandler(evt) {
evt.preventDefault();
}
function isDataSchema(url) {
var i = 0,
ii = url.length;
while (i < ii && url[i].trim() === '') {
i++;
}
return url.substring(i, i + 5).toLowerCase() === 'data:';
}
function getPDFFileNameFromURL(url) {
var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'document.pdf';
if (typeof url !== 'string') {
return defaultFilename;
}
if (isDataSchema(url)) {
console.warn('getPDFFileNameFromURL: ' + 'ignoring "data:" URL for performance reasons.');
return defaultFilename;
}
var reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
var splitURI = reURI.exec(url);
var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
if (suggestedFilename) {
suggestedFilename = suggestedFilename[0];
if (suggestedFilename.includes('%')) {
try {
suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
} catch (ex) {}
}
}
return suggestedFilename || defaultFilename;
}
function normalizeWheelEventDelta(evt) {
var delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY);
var angle = Math.atan2(evt.deltaY, evt.deltaX);
if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {
delta = -delta;
}
var MOUSE_DOM_DELTA_PIXEL_MODE = 0;
var MOUSE_DOM_DELTA_LINE_MODE = 1;
var MOUSE_PIXELS_PER_LINE = 30;
var MOUSE_LINES_PER_PAGE = 30;
if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {
delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;
} else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {
delta /= MOUSE_LINES_PER_PAGE;
}
return delta;
}
function isValidRotation(angle) {
return Number.isInteger(angle) && angle % 90 === 0;
}
function isValidScrollMode(mode) {
return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN;
}
function isValidSpreadMode(mode) {
return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN;
}
function isPortraitOrientation(size) {
return size.width <= size.height;
}
var WaitOnType = {
EVENT: 'event',
TIMEOUT: 'timeout'
};
exports.WaitOnType = WaitOnType;
function waitOnEventOrTimeout(_ref2) {
var target = _ref2.target,
name = _ref2.name,
_ref2$delay = _ref2.delay,
delay = _ref2$delay === void 0 ? 0 : _ref2$delay;
return new Promise(function (resolve, reject) {
if (_typeof(target) !== 'object' || !(name && typeof name === 'string') || !(Number.isInteger(delay) && delay >= 0)) {
throw new Error('waitOnEventOrTimeout - invalid parameters.');
}
function handler(type) {
if (target instanceof EventBus) {
target.off(name, eventHandler);
} else {
target.removeEventListener(name, eventHandler);
}
if (timeout) {
clearTimeout(timeout);
}
resolve(type);
}
var eventHandler = handler.bind(null, WaitOnType.EVENT);
if (target instanceof EventBus) {
target.on(name, eventHandler);
} else {
target.addEventListener(name, eventHandler);
}
var timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);
var timeout = setTimeout(timeoutHandler, delay);
});
}
var animationStarted = new Promise(function (resolve) {
window.requestAnimationFrame(resolve);
});
exports.animationStarted = animationStarted;
var EventBus =
/*#__PURE__*/
function () {
function EventBus() {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref3$dispatchToDOM = _ref3.dispatchToDOM,
dispatchToDOM = _ref3$dispatchToDOM === void 0 ? false : _ref3$dispatchToDOM;
_classCallCheck(this, EventBus);
this._listeners = Object.create(null);
this._dispatchToDOM = dispatchToDOM === true;
}
_createClass(EventBus, [{
key: "on",
value: function on(eventName, listener) {
var eventListeners = this._listeners[eventName];
if (!eventListeners) {
eventListeners = [];
this._listeners[eventName] = eventListeners;
}
eventListeners.push(listener);
}
}, {
key: "off",
value: function off(eventName, listener) {
var eventListeners = this._listeners[eventName];
var i;
if (!eventListeners || (i = eventListeners.indexOf(listener)) < 0) {
return;
}
eventListeners.splice(i, 1);
}
}, {
key: "dispatch",
value: function dispatch(eventName) {
var eventListeners = this._listeners[eventName];
if (!eventListeners || eventListeners.length === 0) {
if (this._dispatchToDOM) {
var _args5 = Array.prototype.slice.call(arguments, 1);
this._dispatchDOMEvent(eventName, _args5);
}
return;
}
var args = Array.prototype.slice.call(arguments, 1);
eventListeners.slice(0).forEach(function (listener) {
listener.apply(null, args);
});
if (this._dispatchToDOM) {
this._dispatchDOMEvent(eventName, args);
}
}
}, {
key: "_dispatchDOMEvent",
value: function _dispatchDOMEvent(eventName) {
var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var details = Object.create(null);
if (args && args.length > 0) {
var obj = args[0];
for (var key in obj) {
var value = obj[key];
if (key === 'source') {
if (value === window || value === document) {
return;
}
continue;
}
details[key] = value;
}
}
var event = document.createEvent('CustomEvent');
event.initCustomEvent(eventName, true, true, details);
document.dispatchEvent(event);
}
}]);
return EventBus;
}();
exports.EventBus = EventBus;
var globalEventBus = null;
function getGlobalEventBus() {
var dispatchToDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!globalEventBus) {
globalEventBus = new EventBus({
dispatchToDOM: dispatchToDOM
});
}
return globalEventBus;
}
function clamp(v, min, max) {
return Math.min(Math.max(v, min), max);
}
var ProgressBar =
/*#__PURE__*/
function () {
function ProgressBar(id) {
var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
height = _ref4.height,
width = _ref4.width,
units = _ref4.units;
_classCallCheck(this, ProgressBar);
this.visible = true;
this.div = document.querySelector(id + ' .progress');
this.bar = this.div.parentNode;
this.height = height || 100;
this.width = width || 100;
this.units = units || '%';
this.div.style.height = this.height + this.units;
this.percent = 0;
}
_createClass(ProgressBar, [{
key: "_updateBar",
value: function _updateBar() {
if (this._indeterminate) {
this.div.classList.add('indeterminate');
this.div.style.width = this.width + this.units;
return;
}
this.div.classList.remove('indeterminate');
var progressSize = this.width * this._percent / 100;
this.div.style.width = progressSize + this.units;
}
}, {
key: "setWidth",
value: function setWidth(viewer) {
if (!viewer) {
return;
}
var container = viewer.parentNode;
var scrollbarWidth = container.offsetWidth - viewer.offsetWidth;
if (scrollbarWidth > 0) {
this.bar.setAttribute('style', 'width: calc(100% - ' + scrollbarWidth + 'px);');
}
}
}, {
key: "hide",
value: function hide() {
if (!this.visible) {
return;
}
this.visible = false;
this.bar.classList.add('hidden');
document.body.classList.remove('loadingInProgress');
}
}, {
key: "show",
value: function show() {
if (this.visible) {
return;
}
this.visible = true;
document.body.classList.add('loadingInProgress');
this.bar.classList.remove('hidden');
}
}, {
key: "percent",
get: function get() {
return this._percent;
},
set: function set(val) {
this._indeterminate = isNaN(val);
this._percent = clamp(val, 0, 100);
this._updateBar();
}
}]);
return ProgressBar;
}();
exports.ProgressBar = ProgressBar;
function moveToEndOfArray(arr, condition) {
var moved = [],
len = arr.length;
var write = 0;
for (var read = 0; read < len; ++read) {
if (condition(arr[read])) {
moved.push(arr[read]);
} else {
arr[write] = arr[read];
++write;
}
}
for (var _read = 0; write < len; ++_read, ++write) {
arr[write] = moved[_read];
}
}
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var pdfjsLib;
if (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) {
pdfjsLib = window['pdfjs-dist/build/pdf'];
} else {
pdfjsLib = require('../build/pdf.js');
}
module.exports = pdfjsLib;
/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFCursorTools = exports.CursorTool = void 0;
var _grab_to_pan = __webpack_require__(9);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var CursorTool = {
SELECT: 0,
HAND: 1,
ZOOM: 2
};
exports.CursorTool = CursorTool;
var PDFCursorTools =
/*#__PURE__*/
function () {
function PDFCursorTools(_ref) {
var _this = this;
var container = _ref.container,
eventBus = _ref.eventBus,
_ref$cursorToolOnLoad = _ref.cursorToolOnLoad,
cursorToolOnLoad = _ref$cursorToolOnLoad === void 0 ? CursorTool.SELECT : _ref$cursorToolOnLoad;
_classCallCheck(this, PDFCursorTools);
this.container = container;
this.eventBus = eventBus;
this.active = CursorTool.SELECT;
this.activeBeforePresentationMode = null;
this.handTool = new _grab_to_pan.GrabToPan({
element: this.container
});
this._addEventListeners();
Promise.resolve().then(function () {
_this.switchTool(cursorToolOnLoad);
});
}
_createClass(PDFCursorTools, [{
key: "switchTool",
value: function switchTool(tool) {
var _this2 = this;
if (this.activeBeforePresentationMode !== null) {
return;
}
if (tool === this.active) {
return;
}
var disableActiveTool = function disableActiveTool() {
switch (_this2.active) {
case CursorTool.SELECT:
break;
case CursorTool.HAND:
_this2.handTool.deactivate();
break;
case CursorTool.ZOOM:
}
};
switch (tool) {
case CursorTool.SELECT:
disableActiveTool();
break;
case CursorTool.HAND:
disableActiveTool();
this.handTool.activate();
break;
case CursorTool.ZOOM:
default:
console.error("switchTool: \"".concat(tool, "\" is an unsupported value."));
return;
}
this.active = tool;
this._dispatchEvent();
}
}, {
key: "_dispatchEvent",
value: function _dispatchEvent() {
this.eventBus.dispatch('cursortoolchanged', {
source: this,
tool: this.active
});
}
}, {
key: "_addEventListeners",
value: function _addEventListeners() {
var _this3 = this;
this.eventBus.on('switchcursortool', function (evt) {
_this3.switchTool(evt.tool);
});
this.eventBus.on('presentationmodechanged', function (evt) {
if (evt.switchInProgress) {
return;
}
var previouslyActive;
if (evt.active) {
previouslyActive = _this3.active;
_this3.switchTool(CursorTool.SELECT);
_this3.activeBeforePresentationMode = previouslyActive;
} else {
previouslyActive = _this3.activeBeforePresentationMode;
_this3.activeBeforePresentationMode = null;
_this3.switchTool(previouslyActive);
}
});
}
}, {
key: "activeTool",
get: function get() {
return this.active;
}
}]);
return PDFCursorTools;
}();
exports.PDFCursorTools = PDFCursorTools;
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.GrabToPan = GrabToPan;
function GrabToPan(options) {
this.element = options.element;
this.document = options.element.ownerDocument;
if (typeof options.ignoreTarget === 'function') {
this.ignoreTarget = options.ignoreTarget;
}
this.onActiveChanged = options.onActiveChanged;
this.activate = this.activate.bind(this);
this.deactivate = this.deactivate.bind(this);
this.toggle = this.toggle.bind(this);
this._onmousedown = this._onmousedown.bind(this);
this._onmousemove = this._onmousemove.bind(this);
this._endPan = this._endPan.bind(this);
var overlay = this.overlay = document.createElement('div');
overlay.className = 'grab-to-pan-grabbing';
}
GrabToPan.prototype = {
CSS_CLASS_GRAB: 'grab-to-pan-grab',
activate: function GrabToPan_activate() {
if (!this.active) {
this.active = true;
this.element.addEventListener('mousedown', this._onmousedown, true);
this.element.classList.add(this.CSS_CLASS_GRAB);
if (this.onActiveChanged) {
this.onActiveChanged(true);
}
}
},
deactivate: function GrabToPan_deactivate() {
if (this.active) {
this.active = false;
this.element.removeEventListener('mousedown', this._onmousedown, true);
this._endPan();
this.element.classList.remove(this.CSS_CLASS_GRAB);
if (this.onActiveChanged) {
this.onActiveChanged(false);
}
}
},
toggle: function GrabToPan_toggle() {
if (this.active) {
this.deactivate();
} else {
this.activate();
}
},
ignoreTarget: function GrabToPan_ignoreTarget(node) {
return node[matchesSelector]('a[href], a[href] *, input, textarea, button, button *, select, option');
},
_onmousedown: function GrabToPan__onmousedown(event) {
if (event.button !== 0 || this.ignoreTarget(event.target)) {
return;
}
if (event.originalTarget) {
try {
event.originalTarget.tagName;
} catch (e) {
return;
}
}
this.scrollLeftStart = this.element.scrollLeft;
this.scrollTopStart = this.element.scrollTop;
this.clientXStart = event.clientX;
this.clientYStart = event.clientY;
this.document.addEventListener('mousemove', this._onmousemove, true);
this.document.addEventListener('mouseup', this._endPan, true);
this.element.addEventListener('scroll', this._endPan, true);
event.preventDefault();
event.stopPropagation();
var focusedElement = document.activeElement;
if (focusedElement && !focusedElement.contains(event.target)) {
focusedElement.blur();
}
},
_onmousemove: function GrabToPan__onmousemove(event) {
this.element.removeEventListener('scroll', this._endPan, true);
if (isLeftMouseReleased(event)) {
this._endPan();
return;
}
var xDiff = event.clientX - this.clientXStart;
var yDiff = event.clientY - this.clientYStart;
var scrollTop = this.scrollTopStart - yDiff;
var scrollLeft = this.scrollLeftStart - xDiff;
if (this.element.scrollTo) {
this.element.scrollTo({
top: scrollTop,
left: scrollLeft,
behavior: 'instant'
});
} else {
this.element.scrollTop = scrollTop;
this.element.scrollLeft = scrollLeft;
}
if (!this.overlay.parentNode) {
document.body.appendChild(this.overlay);
}
},
_endPan: function GrabToPan__endPan() {
this.element.removeEventListener('scroll', this._endPan, true);
this.document.removeEventListener('mousemove', this._onmousemove, true);
this.document.removeEventListener('mouseup', this._endPan, true);
this.overlay.remove();
}
};
var matchesSelector;
['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function (prefix) {
var name = prefix + 'atches';
if (name in document.documentElement) {
matchesSelector = name;
}
name += 'Selector';
if (name in document.documentElement) {
matchesSelector = name;
}
return matchesSelector;
});
var isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9;
var chrome = window.chrome;
var isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app);
var isSafari6plus = /Apple/.test(navigator.vendor) && /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent);
function isLeftMouseReleased(event) {
if ('buttons' in event && isNotIEorIsIE10plus) {
return !(event.buttons & 1);
}
if (isChrome15OrOpera15plus || isSafari6plus) {
return event.which === 0;
}
}
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFRenderingQueue = exports.RenderingStates = void 0;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var CLEANUP_TIMEOUT = 30000;
var RenderingStates = {
INITIAL: 0,
RUNNING: 1,
PAUSED: 2,
FINISHED: 3
};
exports.RenderingStates = RenderingStates;
var PDFRenderingQueue =
/*#__PURE__*/
function () {
function PDFRenderingQueue() {
_classCallCheck(this, PDFRenderingQueue);
this.pdfViewer = null;
this.pdfThumbnailViewer = null;
this.onIdle = null;
this.highestPriorityPage = null;
this.idleTimeout = null;
this.printing = false;
this.isThumbnailViewEnabled = false;
}
_createClass(PDFRenderingQueue, [{
key: "setViewer",
value: function setViewer(pdfViewer) {
this.pdfViewer = pdfViewer;
}
}, {
key: "setThumbnailViewer",
value: function setThumbnailViewer(pdfThumbnailViewer) {
this.pdfThumbnailViewer = pdfThumbnailViewer;
}
}, {
key: "isHighestPriority",
value: function isHighestPriority(view) {
return this.highestPriorityPage === view.renderingId;
}
}, {
key: "renderHighestPriority",
value: function renderHighestPriority(currentlyVisiblePages) {
if (this.idleTimeout) {
clearTimeout(this.idleTimeout);
this.idleTimeout = null;
}
if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {
return;
}
if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) {
if (this.pdfThumbnailViewer.forceRendering()) {
return;
}
}
if (this.printing) {
return;
}
if (this.onIdle) {
this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);
}
}
}, {
key: "getHighestPriority",
value: function getHighestPriority(visible, views, scrolledDown) {
var visibleViews = visible.views;
var numVisible = visibleViews.length;
if (numVisible === 0) {
return false;
}
for (var i = 0; i < numVisible; ++i) {
var view = visibleViews[i].view;
if (!this.isViewFinished(view)) {
return view;
}
}
if (scrolledDown) {
var nextPageIndex = visible.last.id;
if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {
return views[nextPageIndex];
}
} else {
var previousPageIndex = visible.first.id - 2;
if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) {
return views[previousPageIndex];
}
}
return null;
}
}, {
key: "isViewFinished",
value: function isViewFinished(view) {
return view.renderingState === RenderingStates.FINISHED;
}
}, {
key: "renderView",
value: function renderView(view) {
var _this = this;
switch (view.renderingState) {
case RenderingStates.FINISHED:
return false;
case RenderingStates.PAUSED:
this.highestPriorityPage = view.renderingId;
view.resume();
break;
case RenderingStates.RUNNING:
this.highestPriorityPage = view.renderingId;
break;
case RenderingStates.INITIAL:
this.highestPriorityPage = view.renderingId;
var continueRendering = function continueRendering() {
_this.renderHighestPriority();
};
view.draw().then(continueRendering, continueRendering);
break;
}
return true;
}
}]);
return PDFRenderingQueue;
}();
exports.PDFRenderingQueue = PDFRenderingQueue;
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFSidebar = exports.SidebarView = void 0;
var _ui_utils = __webpack_require__(6);
var _pdf_rendering_queue = __webpack_require__(10);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var UI_NOTIFICATION_CLASS = 'pdfSidebarNotification';
var SidebarView = {
UNKNOWN: -1,
NONE: 0,
THUMBS: 1,
OUTLINE: 2,
ATTACHMENTS: 3,
LAYERS: 4
};
exports.SidebarView = SidebarView;
var PDFSidebar =
/*#__PURE__*/
function () {
function PDFSidebar(options, eventBus) {
var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
_classCallCheck(this, PDFSidebar);
this.isOpen = false;
this.active = SidebarView.THUMBS;
this.isInitialViewSet = false;
this.onToggled = null;
this.pdfViewer = options.pdfViewer;
this.pdfThumbnailViewer = options.pdfThumbnailViewer;
this.outerContainer = options.outerContainer;
this.viewerContainer = options.viewerContainer;
this.toggleButton = options.toggleButton;
this.thumbnailButton = options.thumbnailButton;
this.outlineButton = options.outlineButton;
this.attachmentsButton = options.attachmentsButton;
this.thumbnailView = options.thumbnailView;
this.outlineView = options.outlineView;
this.attachmentsView = options.attachmentsView;
this.disableNotification = options.disableNotification || false;
this.eventBus = eventBus;
this.l10n = l10n;
this._addEventListeners();
}
_createClass(PDFSidebar, [{
key: "reset",
value: function reset() {
this.isInitialViewSet = false;
this._hideUINotification(null);
this.switchView(SidebarView.THUMBS);
this.outlineButton.disabled = false;
this.attachmentsButton.disabled = false;
}
}, {
key: "setInitialView",
value: function setInitialView() {
var view = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SidebarView.NONE;
if (this.isInitialViewSet) {
return;
}
this.isInitialViewSet = true;
if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {
this._dispatchEvent();
return;
}
if (!this._switchView(view, true)) {
this._dispatchEvent();
}
}
}, {
key: "switchView",
value: function switchView(view) {
var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
this._switchView(view, forceOpen);
}
}, {
key: "_switchView",
value: function _switchView(view) {
var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var isViewChanged = view !== this.active;
var shouldForceRendering = false;
switch (view) {
case SidebarView.NONE:
if (this.isOpen) {
this.close();
return true;
}
return false;
case SidebarView.THUMBS:
if (this.isOpen && isViewChanged) {
shouldForceRendering = true;
}
break;
case SidebarView.OUTLINE:
if (this.outlineButton.disabled) {
return false;
}
break;
case SidebarView.ATTACHMENTS:
if (this.attachmentsButton.disabled) {
return false;
}
break;
default:
console.error("PDFSidebar._switchView: \"".concat(view, "\" is not a valid view."));
return false;
}
this.active = view;
this.thumbnailButton.classList.toggle('toggled', view === SidebarView.THUMBS);
this.outlineButton.classList.toggle('toggled', view === SidebarView.OUTLINE);
this.attachmentsButton.classList.toggle('toggled', view === SidebarView.ATTACHMENTS);
this.thumbnailView.classList.toggle('hidden', view !== SidebarView.THUMBS);
this.outlineView.classList.toggle('hidden', view !== SidebarView.OUTLINE);
this.attachmentsView.classList.toggle('hidden', view !== SidebarView.ATTACHMENTS);
if (forceOpen && !this.isOpen) {
this.open();
return true;
}
if (shouldForceRendering) {
this._updateThumbnailViewer();
this._forceRendering();
}
if (isViewChanged) {
this._dispatchEvent();
}
this._hideUINotification(this.active);
return isViewChanged;
}
}, {
key: "open",
value: function open() {
if (this.isOpen) {
return;
}
this.isOpen = true;
this.toggleButton.classList.add('toggled');
this.outerContainer.classList.add('sidebarMoving', 'sidebarOpen');
if (this.active === SidebarView.THUMBS) {
this._updateThumbnailViewer();
}
this._forceRendering();
this._dispatchEvent();
this._hideUINotification(this.active);
}
}, {
key: "close",
value: function close() {
if (!this.isOpen) {
return;
}
this.isOpen = false;
this.toggleButton.classList.remove('toggled');
this.outerContainer.classList.add('sidebarMoving');
this.outerContainer.classList.remove('sidebarOpen');
this._forceRendering();
this._dispatchEvent();
}
}, {
key: "toggle",
value: function toggle() {
if (this.isOpen) {
this.close();
} else {
this.open();
}
}
}, {
key: "_dispatchEvent",
value: function _dispatchEvent() {
this.eventBus.dispatch('sidebarviewchanged', {
source: this,
view: this.visibleView
});
}
}, {
key: "_forceRendering",
value: function _forceRendering() {
if (this.onToggled) {
this.onToggled();
} else {
this.pdfViewer.forceRendering();
this.pdfThumbnailViewer.forceRendering();
}
}
}, {
key: "_updateThumbnailViewer",
value: function _updateThumbnailViewer() {
var pdfViewer = this.pdfViewer,
pdfThumbnailViewer = this.pdfThumbnailViewer;
var pagesCount = pdfViewer.pagesCount;
for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) {
var pageView = pdfViewer.getPageView(pageIndex);
if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) {
var thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);
thumbnailView.setImage(pageView);
}
}
pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);
}
}, {
key: "_showUINotification",
value: function _showUINotification(view) {
var _this = this;
if (this.disableNotification) {
return;
}
this.l10n.get('toggle_sidebar_notification.title', null, 'Toggle Sidebar (document contains outline/attachments)').then(function (msg) {
_this.toggleButton.title = msg;
});
if (!this.isOpen) {
this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);
} else if (view === this.active) {
return;
}
switch (view) {
case SidebarView.OUTLINE:
this.outlineButton.classList.add(UI_NOTIFICATION_CLASS);
break;
case SidebarView.ATTACHMENTS:
this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS);
break;
}
}
}, {
key: "_hideUINotification",
value: function _hideUINotification(view) {
var _this2 = this;
if (this.disableNotification) {
return;
}
var removeNotification = function removeNotification(view) {
switch (view) {
case SidebarView.OUTLINE:
_this2.outlineButton.classList.remove(UI_NOTIFICATION_CLASS);
break;
case SidebarView.ATTACHMENTS:
_this2.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS);
break;
}
};
if (!this.isOpen && view !== null) {
return;
}
this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);
if (view !== null) {
removeNotification(view);
return;
}
for (view in SidebarView) {
removeNotification(SidebarView[view]);
}
this.l10n.get('toggle_sidebar.title', null, 'Toggle Sidebar').then(function (msg) {
_this2.toggleButton.title = msg;
});
}
}, {
key: "_addEventListeners",
value: function _addEventListeners() {
var _this3 = this;
this.viewerContainer.addEventListener('transitionend', function (evt) {
if (evt.target === _this3.viewerContainer) {
_this3.outerContainer.classList.remove('sidebarMoving');
}
});
this.thumbnailButton.addEventListener('click', function () {
_this3.switchView(SidebarView.THUMBS);
});
this.outlineButton.addEventListener('click', function () {
_this3.switchView(SidebarView.OUTLINE);
});
this.outlineButton.addEventListener('dblclick', function () {
_this3.eventBus.dispatch('toggleoutlinetree', {
source: _this3
});
});
this.attachmentsButton.addEventListener('click', function () {
_this3.switchView(SidebarView.ATTACHMENTS);
});
this.eventBus.on('outlineloaded', function (evt) {
var outlineCount = evt.outlineCount;
_this3.outlineButton.disabled = !outlineCount;
if (outlineCount) {
_this3._showUINotification(SidebarView.OUTLINE);
} else if (_this3.active === SidebarView.OUTLINE) {
_this3.switchView(SidebarView.THUMBS);
}
});
this.eventBus.on('attachmentsloaded', function (evt) {
if (evt.attachmentsCount) {
_this3.attachmentsButton.disabled = false;
_this3._showUINotification(SidebarView.ATTACHMENTS);
return;
}
Promise.resolve().then(function () {
if (_this3.attachmentsView.hasChildNodes()) {
return;
}
_this3.attachmentsButton.disabled = true;
if (_this3.active === SidebarView.ATTACHMENTS) {
_this3.switchView(SidebarView.THUMBS);
}
});
});
this.eventBus.on('presentationmodechanged', function (evt) {
if (!evt.active && !evt.switchInProgress && _this3.isThumbnailViewVisible) {
_this3._updateThumbnailViewer();
}
});
}
}, {
key: "visibleView",
get: function get() {
return this.isOpen ? this.active : SidebarView.NONE;
}
}, {
key: "isThumbnailViewVisible",
get: function get() {
return this.isOpen && this.active === SidebarView.THUMBS;
}
}, {
key: "isOutlineViewVisible",
get: function get() {
return this.isOpen && this.active === SidebarView.OUTLINE;
}
}, {
key: "isAttachmentsViewVisible",
get: function get() {
return this.isOpen && this.active === SidebarView.ATTACHMENTS;
}
}]);
return PDFSidebar;
}();
exports.PDFSidebar = PDFSidebar;
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.OptionKind = exports.AppOptions = void 0;
var _pdfjsLib = __webpack_require__(7);
var _viewer_compatibility = __webpack_require__(13);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var OptionKind = {
VIEWER: 'viewer',
API: 'api',
WORKER: 'worker'
};
exports.OptionKind = OptionKind;
var defaultOptions = {
cursorToolOnLoad: {
value: 0,
kind: OptionKind.VIEWER
},
defaultUrl: {
value: 'compressed.tracemonkey-pldi-09.pdf',
kind: OptionKind.VIEWER
},
defaultZoomValue: {
value: '',
kind: OptionKind.VIEWER
},
disableHistory: {
value: false,
kind: OptionKind.VIEWER
},
disablePageLabels: {
value: false,
kind: OptionKind.VIEWER
},
enablePrintAutoRotate: {
value: false,
kind: OptionKind.VIEWER
},
enableWebGL: {
value: false,
kind: OptionKind.VIEWER
},
eventBusDispatchToDOM: {
value: false,
kind: OptionKind.VIEWER
},
externalLinkRel: {
value: 'noopener noreferrer nofollow',
kind: OptionKind.VIEWER
},
externalLinkTarget: {
value: 0,
kind: OptionKind.VIEWER
},
historyUpdateUrl: {
value: false,
kind: OptionKind.VIEWER
},
imageResourcesPath: {
value: './images/',
kind: OptionKind.VIEWER
},
maxCanvasPixels: {
value: 16777216,
compatibility: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels,
kind: OptionKind.VIEWER
},
pdfBugEnabled: {
value: false,
kind: OptionKind.VIEWER
},
renderer: {
value: 'canvas',
kind: OptionKind.VIEWER
},
renderInteractiveForms: {
value: false,
kind: OptionKind.VIEWER
},
sidebarViewOnLoad: {
value: -1,
kind: OptionKind.VIEWER
},
scrollModeOnLoad: {
value: -1,
kind: OptionKind.VIEWER
},
spreadModeOnLoad: {
value: -1,
kind: OptionKind.VIEWER
},
textLayerMode: {
value: 1,
kind: OptionKind.VIEWER
},
useOnlyCssZoom: {
value: false,
kind: OptionKind.VIEWER
},
viewOnLoad: {
value: 0,
kind: OptionKind.VIEWER
},
cMapPacked: {
value: true,
kind: OptionKind.API
},
cMapUrl: {
value: '../web/cmaps/',
kind: OptionKind.API
},
disableAutoFetch: {
value: false,
kind: OptionKind.API
},
disableCreateObjectURL: {
value: false,
compatibility: _pdfjsLib.apiCompatibilityParams.disableCreateObjectURL,
kind: OptionKind.API
},
disableFontFace: {
value: false,
kind: OptionKind.API
},
disableRange: {
value: false,
kind: OptionKind.API
},
disableStream: {
value: false,
kind: OptionKind.API
},
isEvalSupported: {
value: true,
kind: OptionKind.API
},
maxImageSize: {
value: -1,
kind: OptionKind.API
},
pdfBug: {
value: false,
kind: OptionKind.API
},
postMessageTransfers: {
value: true,
kind: OptionKind.API
},
verbosity: {
value: 1,
kind: OptionKind.API
},
workerPort: {
value: null,
kind: OptionKind.WORKER
},
workerSrc: {
value: '../build/pdf.worker.js',
kind: OptionKind.WORKER
}
};
{
defaultOptions.disablePreferences = {
value: false,
kind: OptionKind.VIEWER
};
defaultOptions.locale = {
value: typeof navigator !== 'undefined' ? navigator.language : 'en-US',
kind: OptionKind.VIEWER
};
}
var userOptions = Object.create(null);
var AppOptions =
/*#__PURE__*/
function () {
function AppOptions() {
_classCallCheck(this, AppOptions);
throw new Error('Cannot initialize AppOptions.');
}
_createClass(AppOptions, null, [{
key: "get",
value: function get(name) {
var userOption = userOptions[name];
if (userOption !== undefined) {
return userOption;
}
var defaultOption = defaultOptions[name];
if (defaultOption !== undefined) {
return defaultOption.compatibility || defaultOption.value;
}
return undefined;
}
}, {
key: "getAll",
value: function getAll() {
var kind = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
var options = Object.create(null);
for (var name in defaultOptions) {
var defaultOption = defaultOptions[name];
if (kind && kind !== defaultOption.kind) {
continue;
}
var userOption = userOptions[name];
options[name] = userOption !== undefined ? userOption : defaultOption.compatibility || defaultOption.value;
}
return options;
}
}, {
key: "set",
value: function set(name, value) {
userOptions[name] = value;
}
}, {
key: "remove",
value: function remove(name) {
delete userOptions[name];
}
}]);
return AppOptions;
}();
exports.AppOptions = AppOptions;
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var compatibilityParams = Object.create(null);
{
var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || '';
var isAndroid = /Android/.test(userAgent);
var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent);
(function checkCanvasSizeLimitation() {
if (isIOS || isAndroid) {
compatibilityParams.maxCanvasPixels = 5242880;
}
})();
}
exports.viewerCompatibilityParams = Object.freeze(compatibilityParams);
/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.OverlayManager = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(2));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }); }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var OverlayManager =
/*#__PURE__*/
function () {
function OverlayManager() {
_classCallCheck(this, OverlayManager);
this._overlays = {};
this._active = null;
this._keyDownBound = this._keyDown.bind(this);
}
_createClass(OverlayManager, [{
key: "register",
value: function () {
var _register = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee(name, element) {
var callerCloseMethod,
canForceClose,
container,
_args = arguments;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
callerCloseMethod = _args.length > 2 && _args[2] !== undefined ? _args[2] : null;
canForceClose = _args.length > 3 && _args[3] !== undefined ? _args[3] : false;
if (!(!name || !element || !(container = element.parentNode))) {
_context.next = 6;
break;
}
throw new Error('Not enough parameters.');
case 6:
if (!this._overlays[name]) {
_context.next = 8;
break;
}
throw new Error('The overlay is already registered.');
case 8:
this._overlays[name] = {
element: element,
container: container,
callerCloseMethod: callerCloseMethod,
canForceClose: canForceClose
};
case 9:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function register(_x, _x2) {
return _register.apply(this, arguments);
}
return register;
}()
}, {
key: "unregister",
value: function () {
var _unregister = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(name) {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
if (this._overlays[name]) {
_context2.next = 4;
break;
}
throw new Error('The overlay does not exist.');
case 4:
if (!(this._active === name)) {
_context2.next = 6;
break;
}
throw new Error('The overlay cannot be removed while it is active.');
case 6:
delete this._overlays[name];
case 7:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function unregister(_x3) {
return _unregister.apply(this, arguments);
}
return unregister;
}()
}, {
key: "open",
value: function () {
var _open = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee3(name) {
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
if (this._overlays[name]) {
_context3.next = 4;
break;
}
throw new Error('The overlay does not exist.');
case 4:
if (!this._active) {
_context3.next = 14;
break;
}
if (!this._overlays[name].canForceClose) {
_context3.next = 9;
break;
}
this._closeThroughCaller();
_context3.next = 14;
break;
case 9:
if (!(this._active === name)) {
_context3.next = 13;
break;
}
throw new Error('The overlay is already active.');
case 13:
throw new Error('Another overlay is currently active.');
case 14:
this._active = name;
this._overlays[this._active].element.classList.remove('hidden');
this._overlays[this._active].container.classList.remove('hidden');
window.addEventListener('keydown', this._keyDownBound);
case 18:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function open(_x4) {
return _open.apply(this, arguments);
}
return open;
}()
}, {
key: "close",
value: function () {
var _close = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee4(name) {
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
if (this._overlays[name]) {
_context4.next = 4;
break;
}
throw new Error('The overlay does not exist.');
case 4:
if (this._active) {
_context4.next = 8;
break;
}
throw new Error('The overlay is currently not active.');
case 8:
if (!(this._active !== name)) {
_context4.next = 10;
break;
}
throw new Error('Another overlay is currently active.');
case 10:
this._overlays[this._active].container.classList.add('hidden');
this._overlays[this._active].element.classList.add('hidden');
this._active = null;
window.removeEventListener('keydown', this._keyDownBound);
case 14:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function close(_x5) {
return _close.apply(this, arguments);
}
return close;
}()
}, {
key: "_keyDown",
value: function _keyDown(evt) {
if (this._active && evt.keyCode === 27) {
this._closeThroughCaller();
evt.preventDefault();
}
}
}, {
key: "_closeThroughCaller",
value: function _closeThroughCaller() {
if (this._overlays[this._active].callerCloseMethod) {
this._overlays[this._active].callerCloseMethod();
}
if (this._active) {
this.close(this._active);
}
}
}, {
key: "active",
get: function get() {
return this._active;
}
}]);
return OverlayManager;
}();
exports.OverlayManager = OverlayManager;
/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PasswordPrompt = void 0;
var _ui_utils = __webpack_require__(6);
var _pdfjsLib = __webpack_require__(7);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var PasswordPrompt =
/*#__PURE__*/
function () {
function PasswordPrompt(options, overlayManager) {
var _this = this;
var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
_classCallCheck(this, PasswordPrompt);
this.overlayName = options.overlayName;
this.container = options.container;
this.label = options.label;
this.input = options.input;
this.submitButton = options.submitButton;
this.cancelButton = options.cancelButton;
this.overlayManager = overlayManager;
this.l10n = l10n;
this.updateCallback = null;
this.reason = null;
this.submitButton.addEventListener('click', this.verify.bind(this));
this.cancelButton.addEventListener('click', this.close.bind(this));
this.input.addEventListener('keydown', function (e) {
if (e.keyCode === 13) {
_this.verify();
}
});
this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true);
}
_createClass(PasswordPrompt, [{
key: "open",
value: function open() {
var _this2 = this;
this.overlayManager.open(this.overlayName).then(function () {
_this2.input.focus();
var promptString;
if (_this2.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) {
promptString = _this2.l10n.get('password_invalid', null, 'Invalid password. Please try again.');
} else {
promptString = _this2.l10n.get('password_label', null, 'Enter the password to open this PDF file.');
}
promptString.then(function (msg) {
_this2.label.textContent = msg;
});
});
}
}, {
key: "close",
value: function close() {
var _this3 = this;
this.overlayManager.close(this.overlayName).then(function () {
_this3.input.value = '';
});
}
}, {
key: "verify",
value: function verify() {
var password = this.input.value;
if (password && password.length > 0) {
this.close();
return this.updateCallback(password);
}
}
}, {
key: "setUpdateCallback",
value: function setUpdateCallback(updateCallback, reason) {
this.updateCallback = updateCallback;
this.reason = reason;
}
}]);
return PasswordPrompt;
}();
exports.PasswordPrompt = PasswordPrompt;
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFAttachmentViewer = void 0;
var _pdfjsLib = __webpack_require__(7);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var PDFAttachmentViewer =
/*#__PURE__*/
function () {
function PDFAttachmentViewer(_ref) {
var container = _ref.container,
eventBus = _ref.eventBus,
downloadManager = _ref.downloadManager;
_classCallCheck(this, PDFAttachmentViewer);
this.container = container;
this.eventBus = eventBus;
this.downloadManager = downloadManager;
this.reset();
this.eventBus.on('fileattachmentannotation', this._appendAttachment.bind(this));
}
_createClass(PDFAttachmentViewer, [{
key: "reset",
value: function reset() {
var keepRenderedCapability = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
this.attachments = null;
this.container.textContent = '';
if (!keepRenderedCapability) {
this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)();
}
}
}, {
key: "_dispatchEvent",
value: function _dispatchEvent(attachmentsCount) {
this._renderedCapability.resolve();
this.eventBus.dispatch('attachmentsloaded', {
source: this,
attachmentsCount: attachmentsCount
});
}
}, {
key: "_bindPdfLink",
value: function _bindPdfLink(button, content, filename) {
if (this.downloadManager.disableCreateObjectURL) {
throw new Error('bindPdfLink: Unsupported "disableCreateObjectURL" value.');
}
var blobUrl;
button.onclick = function () {
if (!blobUrl) {
blobUrl = (0, _pdfjsLib.createObjectURL)(content, 'application/pdf');
}
var viewerUrl;
viewerUrl = '?file=' + encodeURIComponent(blobUrl + '#' + filename);
window.open(viewerUrl);
return false;
};
}
}, {
key: "_bindLink",
value: function _bindLink(button, content, filename) {
var _this = this;
button.onclick = function () {
_this.downloadManager.downloadData(content, filename, '');
return false;
};
}
}, {
key: "render",
value: function render(_ref2) {
var attachments = _ref2.attachments,
_ref2$keepRenderedCap = _ref2.keepRenderedCapability,
keepRenderedCapability = _ref2$keepRenderedCap === void 0 ? false : _ref2$keepRenderedCap;
var attachmentsCount = 0;
if (this.attachments) {
this.reset(keepRenderedCapability === true);
}
this.attachments = attachments || null;
if (!attachments) {
this._dispatchEvent(attachmentsCount);
return;
}
var names = Object.keys(attachments).sort(function (a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase());
});
attachmentsCount = names.length;
for (var i = 0; i < attachmentsCount; i++) {
var item = attachments[names[i]];
var filename = (0, _pdfjsLib.removeNullCharacters)((0, _pdfjsLib.getFilenameFromUrl)(item.filename));
var div = document.createElement('div');
div.className = 'attachmentsItem';
var button = document.createElement('button');
button.textContent = filename;
if (/\.pdf$/i.test(filename) && !this.downloadManager.disableCreateObjectURL) {
this._bindPdfLink(button, item.content, filename);
} else {
this._bindLink(button, item.content, filename);
}
div.appendChild(button);
this.container.appendChild(div);
}
this._dispatchEvent(attachmentsCount);
}
}, {
key: "_appendAttachment",
value: function _appendAttachment(_ref3) {
var _this2 = this;
var id = _ref3.id,
filename = _ref3.filename,
content = _ref3.content;
this._renderedCapability.promise.then(function () {
var attachments = _this2.attachments;
if (!attachments) {
attachments = Object.create(null);
} else {
for (var name in attachments) {
if (id === name) {
return;
}
}
}
attachments[id] = {
filename: filename,
content: content
};
_this2.render({
attachments: attachments,
keepRenderedCapability: true
});
});
}
}]);
return PDFAttachmentViewer;
}();
exports.PDFAttachmentViewer = PDFAttachmentViewer;
/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFDocumentProperties = void 0;
var _ui_utils = __webpack_require__(6);
var _pdfjsLib = __webpack_require__(7);
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var DEFAULT_FIELD_CONTENT = '-';
var NON_METRIC_LOCALES = ['en-us', 'en-lr', 'my'];
var US_PAGE_NAMES = {
'8.5x11': 'Letter',
'8.5x14': 'Legal'
};
var METRIC_PAGE_NAMES = {
'297x420': 'A3',
'210x297': 'A4'
};
function getPageName(size, isPortrait, pageNames) {
var width = isPortrait ? size.width : size.height;
var height = isPortrait ? size.height : size.width;
return pageNames["".concat(width, "x").concat(height)];
}
var PDFDocumentProperties =
/*#__PURE__*/
function () {
function PDFDocumentProperties(_ref, overlayManager, eventBus) {
var _this = this;
var overlayName = _ref.overlayName,
fields = _ref.fields,
container = _ref.container,
closeButton = _ref.closeButton;
var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n;
_classCallCheck(this, PDFDocumentProperties);
this.overlayName = overlayName;
this.fields = fields;
this.container = container;
this.overlayManager = overlayManager;
this.l10n = l10n;
this._reset();
if (closeButton) {
closeButton.addEventListener('click', this.close.bind(this));
}
this.overlayManager.register(this.overlayName, this.container, this.close.bind(this));
if (eventBus) {
eventBus.on('pagechanging', function (evt) {
_this._currentPageNumber = evt.pageNumber;
});
eventBus.on('rotationchanging', function (evt) {
_this._pagesRotation = evt.pagesRotation;
});
}
this._isNonMetricLocale = true;
l10n.getLanguage().then(function (locale) {
_this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);
});
}
_createClass(PDFDocumentProperties, [{
key: "open",
value: function open() {
var _this2 = this;
var freezeFieldData = function freezeFieldData(data) {
Object.defineProperty(_this2, 'fieldData', {
value: Object.freeze(data),
writable: false,
enumerable: true,
configurable: true
});
};
Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(function () {
var currentPageNumber = _this2._currentPageNumber;
var pagesRotation = _this2._pagesRotation;
if (_this2.fieldData && currentPageNumber === _this2.fieldData['_currentPageNumber'] && pagesRotation === _this2.fieldData['_pagesRotation']) {
_this2._updateUI();
return;
}
_this2.pdfDocument.getMetadata().then(function (_ref2) {
var info = _ref2.info,
metadata = _ref2.metadata,
contentDispositionFilename = _ref2.contentDispositionFilename;
return Promise.all([info, metadata, contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(_this2.url || ''), _this2._parseFileSize(_this2.maybeFileSize), _this2._parseDate(info.CreationDate), _this2._parseDate(info.ModDate), _this2.pdfDocument.getPage(currentPageNumber).then(function (pdfPage) {
return _this2._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
}), _this2._parseLinearization(info.IsLinearized)]);
}).then(function (_ref3) {
var _ref4 = _slicedToArray(_ref3, 8),
info = _ref4[0],
metadata = _ref4[1],
fileName = _ref4[2],
fileSize = _ref4[3],
creationDate = _ref4[4],
modDate = _ref4[5],
pageSize = _ref4[6],
isLinearized = _ref4[7];
freezeFieldData({
'fileName': fileName,
'fileSize': fileSize,
'title': info.Title,
'author': info.Author,
'subject': info.Subject,
'keywords': info.Keywords,
'creationDate': creationDate,
'modificationDate': modDate,
'creator': info.Creator,
'producer': info.Producer,
'version': info.PDFFormatVersion,
'pageCount': _this2.pdfDocument.numPages,
'pageSize': pageSize,
'linearized': isLinearized,
'_currentPageNumber': currentPageNumber,
'_pagesRotation': pagesRotation
});
_this2._updateUI();
return _this2.pdfDocument.getDownloadInfo();
}).then(function (_ref5) {
var length = _ref5.length;
_this2.maybeFileSize = length;
return _this2._parseFileSize(length);
}).then(function (fileSize) {
if (fileSize === _this2.fieldData['fileSize']) {
return;
}
var data = Object.assign(Object.create(null), _this2.fieldData);
data['fileSize'] = fileSize;
freezeFieldData(data);
_this2._updateUI();
});
});
}
}, {
key: "close",
value: function close() {
this.overlayManager.close(this.overlayName);
}
}, {
key: "setDocument",
value: function setDocument(pdfDocument) {
var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (this.pdfDocument) {
this._reset();
this._updateUI(true);
}
if (!pdfDocument) {
return;
}
this.pdfDocument = pdfDocument;
this.url = url;
this._dataAvailableCapability.resolve();
}
}, {
key: "setFileSize",
value: function setFileSize(fileSize) {
if (Number.isInteger(fileSize) && fileSize > 0) {
this.maybeFileSize = fileSize;
}
}
}, {
key: "_reset",
value: function _reset() {
this.pdfDocument = null;
this.url = null;
this.maybeFileSize = 0;
delete this.fieldData;
this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)();
this._currentPageNumber = 1;
this._pagesRotation = 0;
}
}, {
key: "_updateUI",
value: function _updateUI() {
var reset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (reset || !this.fieldData) {
for (var id in this.fields) {
this.fields[id].textContent = DEFAULT_FIELD_CONTENT;
}
return;
}
if (this.overlayManager.active !== this.overlayName) {
return;
}
for (var _id in this.fields) {
var content = this.fieldData[_id];
this.fields[_id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT;
}
}
}, {
key: "_parseFileSize",
value: function _parseFileSize() {
var fileSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var kb = fileSize / 1024;
if (!kb) {
return Promise.resolve(undefined);
} else if (kb < 1024) {
return this.l10n.get('document_properties_kb', {
size_kb: (+kb.toPrecision(3)).toLocaleString(),
size_b: fileSize.toLocaleString()
}, '{{size_kb}} KB ({{size_b}} bytes)');
}
return this.l10n.get('document_properties_mb', {
size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),
size_b: fileSize.toLocaleString()
}, '{{size_mb}} MB ({{size_b}} bytes)');
}
}, {
key: "_parsePageSize",
value: function _parsePageSize(pageSizeInches, pagesRotation) {
var _this3 = this;
if (!pageSizeInches) {
return Promise.resolve(undefined);
}
if (pagesRotation % 180 !== 0) {
pageSizeInches = {
width: pageSizeInches.height,
height: pageSizeInches.width
};
}
var isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches);
var sizeInches = {
width: Math.round(pageSizeInches.width * 100) / 100,
height: Math.round(pageSizeInches.height * 100) / 100
};
var sizeMillimeters = {
width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,
height: Math.round(pageSizeInches.height * 25.4 * 10) / 10
};
var pageName = null;
var name = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);
if (!name && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {
var exactMillimeters = {
width: pageSizeInches.width * 25.4,
height: pageSizeInches.height * 25.4
};
var intMillimeters = {
width: Math.round(sizeMillimeters.width),
height: Math.round(sizeMillimeters.height)
};
if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) {
name = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);
if (name) {
sizeInches = {
width: Math.round(intMillimeters.width / 25.4 * 100) / 100,
height: Math.round(intMillimeters.height / 25.4 * 100) / 100
};
sizeMillimeters = intMillimeters;
}
}
}
if (name) {
pageName = this.l10n.get('document_properties_page_size_name_' + name.toLowerCase(), null, name);
}
return Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get('document_properties_page_size_unit_' + (this._isNonMetricLocale ? 'inches' : 'millimeters'), null, this._isNonMetricLocale ? 'in' : 'mm'), pageName, this.l10n.get('document_properties_page_size_orientation_' + (isPortrait ? 'portrait' : 'landscape'), null, isPortrait ? 'portrait' : 'landscape')]).then(function (_ref6) {
var _ref7 = _slicedToArray(_ref6, 4),
_ref7$ = _ref7[0],
width = _ref7$.width,
height = _ref7$.height,
unit = _ref7[1],
name = _ref7[2],
orientation = _ref7[3];
return _this3.l10n.get('document_properties_page_size_dimension_' + (name ? 'name_' : '') + 'string', {
width: width.toLocaleString(),
height: height.toLocaleString(),
unit: unit,
name: name,
orientation: orientation
}, '{{width}} × {{height}} {{unit}} (' + (name ? '{{name}}, ' : '') + '{{orientation}})');
});
}
}, {
key: "_parseDate",
value: function _parseDate(inputDate) {
if (!inputDate) {
return;
}
var dateToParse = inputDate;
if (dateToParse.substring(0, 2) === 'D:') {
dateToParse = dateToParse.substring(2);
}
var year = parseInt(dateToParse.substring(0, 4), 10);
var month = parseInt(dateToParse.substring(4, 6), 10) - 1;
var day = parseInt(dateToParse.substring(6, 8), 10);
var hours = parseInt(dateToParse.substring(8, 10), 10);
var minutes = parseInt(dateToParse.substring(10, 12), 10);
var seconds = parseInt(dateToParse.substring(12, 14), 10);
var utRel = dateToParse.substring(14, 15);
var offsetHours = parseInt(dateToParse.substring(15, 17), 10);
var offsetMinutes = parseInt(dateToParse.substring(18, 20), 10);
if (utRel === '-') {
hours += offsetHours;
minutes += offsetMinutes;
} else if (utRel === '+') {
hours -= offsetHours;
minutes -= offsetMinutes;
}
var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));
var dateString = date.toLocaleDateString();
var timeString = date.toLocaleTimeString();
return this.l10n.get('document_properties_date_string', {
date: dateString,
time: timeString
}, '{{date}}, {{time}}');
}
}, {
key: "_parseLinearization",
value: function _parseLinearization(isLinearized) {
return this.l10n.get('document_properties_linearized_' + (isLinearized ? 'yes' : 'no'), null, isLinearized ? 'Yes' : 'No');
}
}]);
return PDFDocumentProperties;
}();
exports.PDFDocumentProperties = PDFDocumentProperties;
/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFFindBar = void 0;
var _ui_utils = __webpack_require__(6);
var _pdf_find_controller = __webpack_require__(19);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var MATCHES_COUNT_LIMIT = 1000;
var PDFFindBar =
/*#__PURE__*/
function () {
function PDFFindBar(options) {
var _this = this;
var eventBus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _ui_utils.getGlobalEventBus)();
var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
_classCallCheck(this, PDFFindBar);
this.opened = false;
this.bar = options.bar || null;
this.toggleButton = options.toggleButton || null;
this.findField = options.findField || null;
this.highlightAll = options.highlightAllCheckbox || null;
this.caseSensitive = options.caseSensitiveCheckbox || null;
this.entireWord = options.entireWordCheckbox || null;
this.findMsg = options.findMsg || null;
this.findResultsCount = options.findResultsCount || null;
this.findPreviousButton = options.findPreviousButton || null;
this.findNextButton = options.findNextButton || null;
this.eventBus = eventBus;
this.l10n = l10n;
this.toggleButton.addEventListener('click', function () {
_this.toggle();
});
this.findField.addEventListener('input', function () {
_this.dispatchEvent('');
});
this.bar.addEventListener('keydown', function (e) {
switch (e.keyCode) {
case 13:
if (e.target === _this.findField) {
_this.dispatchEvent('again', e.shiftKey);
}
break;
case 27:
_this.close();
break;
}
});
this.findPreviousButton.addEventListener('click', function () {
_this.dispatchEvent('again', true);
});
this.findNextButton.addEventListener('click', function () {
_this.dispatchEvent('again', false);
});
this.highlightAll.addEventListener('click', function () {
_this.dispatchEvent('highlightallchange');
});
this.caseSensitive.addEventListener('click', function () {
_this.dispatchEvent('casesensitivitychange');
});
this.entireWord.addEventListener('click', function () {
_this.dispatchEvent('entirewordchange');
});
this.eventBus.on('resize', this._adjustWidth.bind(this));
}
_createClass(PDFFindBar, [{
key: "reset",
value: function reset() {
this.updateUIState();
}
}, {
key: "dispatchEvent",
value: function dispatchEvent(type, findPrev) {
this.eventBus.dispatch('find', {
source: this,
type: type,
query: this.findField.value,
phraseSearch: true,
caseSensitive: this.caseSensitive.checked,
entireWord: this.entireWord.checked,
highlightAll: this.highlightAll.checked,
findPrevious: findPrev
});
}
}, {
key: "updateUIState",
value: function updateUIState(state, previous, matchesCount) {
var _this2 = this;
var notFound = false;
var findMsg = '';
var status = '';
switch (state) {
case _pdf_find_controller.FindState.FOUND:
break;
case _pdf_find_controller.FindState.PENDING:
status = 'pending';
break;
case _pdf_find_controller.FindState.NOT_FOUND:
findMsg = this.l10n.get('find_not_found', null, 'Phrase not found');
notFound = true;
break;
case _pdf_find_controller.FindState.WRAPPED:
if (previous) {
findMsg = this.l10n.get('find_reached_top', null, 'Reached top of document, continued from bottom');
} else {
findMsg = this.l10n.get('find_reached_bottom', null, 'Reached end of document, continued from top');
}
break;
}
this.findField.classList.toggle('notFound', notFound);
this.findField.setAttribute('data-status', status);
Promise.resolve(findMsg).then(function (msg) {
_this2.findMsg.textContent = msg;
_this2._adjustWidth();
});
this.updateResultsCount(matchesCount);
}
}, {
key: "updateResultsCount",
value: function updateResultsCount() {
var _this3 = this;
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$current = _ref.current,
current = _ref$current === void 0 ? 0 : _ref$current,
_ref$total = _ref.total,
total = _ref$total === void 0 ? 0 : _ref$total;
if (!this.findResultsCount) {
return;
}
var matchesCountMsg = '',
limit = MATCHES_COUNT_LIMIT;
if (total > 0) {
if (total > limit) {
matchesCountMsg = this.l10n.get('find_match_count_limit', {
limit: limit
}, 'More than {{limit}} match' + (limit !== 1 ? 'es' : ''));
} else {
matchesCountMsg = this.l10n.get('find_match_count', {
current: current,
total: total
}, '{{current}} of {{total}} match' + (total !== 1 ? 'es' : ''));
}
}
Promise.resolve(matchesCountMsg).then(function (msg) {
_this3.findResultsCount.textContent = msg;
_this3.findResultsCount.classList.toggle('hidden', !total);
_this3._adjustWidth();
});
}
}, {
key: "open",
value: function open() {
if (!this.opened) {
this.opened = true;
this.toggleButton.classList.add('toggled');
this.bar.classList.remove('hidden');
}
this.findField.select();
this.findField.focus();
this._adjustWidth();
}
}, {
key: "close",
value: function close() {
if (!this.opened) {
return;
}
this.opened = false;
this.toggleButton.classList.remove('toggled');
this.bar.classList.add('hidden');
this.eventBus.dispatch('findbarclose', {
source: this
});
}
}, {
key: "toggle",
value: function toggle() {
if (this.opened) {
this.close();
} else {
this.open();
}
}
}, {
key: "_adjustWidth",
value: function _adjustWidth() {
if (!this.opened) {
return;
}
this.bar.classList.remove('wrapContainers');
var findbarHeight = this.bar.clientHeight;
var inputContainerHeight = this.bar.firstElementChild.clientHeight;
if (findbarHeight > inputContainerHeight) {
this.bar.classList.add('wrapContainers');
}
}
}]);
return PDFFindBar;
}();
exports.PDFFindBar = PDFFindBar;
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFFindController = exports.FindState = void 0;
var _ui_utils = __webpack_require__(6);
var _pdfjsLib = __webpack_require__(7);
var _pdf_find_utils = __webpack_require__(20);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var FindState = {
FOUND: 0,
NOT_FOUND: 1,
WRAPPED: 2,
PENDING: 3
};
exports.FindState = FindState;
var FIND_TIMEOUT = 250;
var MATCH_SCROLL_OFFSET_TOP = -50;
var MATCH_SCROLL_OFFSET_LEFT = -400;
var CHARACTERS_TO_NORMALIZE = {
"\u2018": '\'',
"\u2019": '\'',
"\u201A": '\'',
"\u201B": '\'',
"\u201C": '"',
"\u201D": '"',
"\u201E": '"',
"\u201F": '"',
"\xBC": '1/4',
"\xBD": '1/2',
"\xBE": '3/4'
};
var normalizationRegex = null;
function normalize(text) {
if (!normalizationRegex) {
var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join('');
normalizationRegex = new RegExp("[".concat(replace, "]"), 'g');
}
return text.replace(normalizationRegex, function (ch) {
return CHARACTERS_TO_NORMALIZE[ch];
});
}
var PDFFindController =
/*#__PURE__*/
function () {
function PDFFindController(_ref) {
var linkService = _ref.linkService,
_ref$eventBus = _ref.eventBus,
eventBus = _ref$eventBus === void 0 ? (0, _ui_utils.getGlobalEventBus)() : _ref$eventBus;
_classCallCheck(this, PDFFindController);
this._linkService = linkService;
this._eventBus = eventBus;
this._reset();
eventBus.on('findbarclose', this._onFindBarClose.bind(this));
}
_createClass(PDFFindController, [{
key: "setDocument",
value: function setDocument(pdfDocument) {
if (this._pdfDocument) {
this._reset();
}
if (!pdfDocument) {
return;
}
this._pdfDocument = pdfDocument;
this._firstPageCapability.resolve();
}
}, {
key: "executeCommand",
value: function executeCommand(cmd, state) {
var _this = this;
if (!state) {
return;
}
var pdfDocument = this._pdfDocument;
if (this._state === null || this._shouldDirtyMatch(cmd, state)) {
this._dirtyMatch = true;
}
this._state = state;
if (cmd !== 'findhighlightallchange') {
this._updateUIState(FindState.PENDING);
}
this._firstPageCapability.promise.then(function () {
if (!_this._pdfDocument || pdfDocument && _this._pdfDocument !== pdfDocument) {
return;
}
_this._extractText();
var findbarClosed = !_this._highlightMatches;
var pendingTimeout = !!_this._findTimeout;
if (_this._findTimeout) {
clearTimeout(_this._findTimeout);
_this._findTimeout = null;
}
if (cmd === 'find') {
_this._findTimeout = setTimeout(function () {
_this._nextMatch();
_this._findTimeout = null;
}, FIND_TIMEOUT);
} else if (_this._dirtyMatch) {
_this._nextMatch();
} else if (cmd === 'findagain') {
_this._nextMatch();
if (findbarClosed && _this._state.highlightAll) {
_this._updateAllPages();
}
} else if (cmd === 'findhighlightallchange') {
if (pendingTimeout) {
_this._nextMatch();
} else {
_this._highlightMatches = true;
}
_this._updateAllPages();
} else {
_this._nextMatch();
}
});
}
}, {
key: "scrollMatchIntoView",
value: function scrollMatchIntoView(_ref2) {
var _ref2$element = _ref2.element,
element = _ref2$element === void 0 ? null : _ref2$element,
_ref2$pageIndex = _ref2.pageIndex,
pageIndex = _ref2$pageIndex === void 0 ? -1 : _ref2$pageIndex,
_ref2$matchIndex = _ref2.matchIndex,
matchIndex = _ref2$matchIndex === void 0 ? -1 : _ref2$matchIndex;
if (!this._scrollMatches || !element) {
return;
} else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {
return;
} else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {
return;
}
this._scrollMatches = false;
var spot = {
top: MATCH_SCROLL_OFFSET_TOP,
left: MATCH_SCROLL_OFFSET_LEFT
};
(0, _ui_utils.scrollIntoView)(element, spot, true);
}
}, {
key: "_reset",
value: function _reset() {
this._highlightMatches = false;
this._scrollMatches = false;
this._pdfDocument = null;
this._pageMatches = [];
this._pageMatchesLength = [];
this._state = null;
this._selected = {
pageIdx: -1,
matchIdx: -1
};
this._offset = {
pageIdx: null,
matchIdx: null,
wrapped: false
};
this._extractTextPromises = [];
this._pageContents = [];
this._matchesCountTotal = 0;
this._pagesToSearch = null;
this._pendingFindMatches = Object.create(null);
this._resumePageIdx = null;
this._dirtyMatch = false;
clearTimeout(this._findTimeout);
this._findTimeout = null;
this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)();
}
}, {
key: "_shouldDirtyMatch",
value: function _shouldDirtyMatch(cmd, state) {
if (state.query !== this._state.query) {
return true;
}
switch (cmd) {
case 'findagain':
var pageNumber = this._selected.pageIdx + 1;
var linkService = this._linkService;
if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && linkService.page !== pageNumber && linkService.isPageVisible && !linkService.isPageVisible(pageNumber)) {
break;
}
return false;
case 'findhighlightallchange':
return false;
}
return true;
}
}, {
key: "_prepareMatches",
value: function _prepareMatches(matchesWithLength, matches, matchesLength) {
function isSubTerm(matchesWithLength, currentIndex) {
var currentElem = matchesWithLength[currentIndex];
var nextElem = matchesWithLength[currentIndex + 1];
if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) {
currentElem.skipped = true;
return true;
}
for (var i = currentIndex - 1; i >= 0; i--) {
var prevElem = matchesWithLength[i];
if (prevElem.skipped) {
continue;
}
if (prevElem.match + prevElem.matchLength < currentElem.match) {
break;
}
if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) {
currentElem.skipped = true;
return true;
}
}
return false;
}
matchesWithLength.sort(function (a, b) {
return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match;
});
for (var i = 0, len = matchesWithLength.length; i < len; i++) {
if (isSubTerm(matchesWithLength, i)) {
continue;
}
matches.push(matchesWithLength[i].match);
matchesLength.push(matchesWithLength[i].matchLength);
}
}
}, {
key: "_isEntireWord",
value: function _isEntireWord(content, startIdx, length) {
if (startIdx > 0) {
var first = content.charCodeAt(startIdx);
var limit = content.charCodeAt(startIdx - 1);
if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) {
return false;
}
}
var endIdx = startIdx + length - 1;
if (endIdx < content.length - 1) {
var last = content.charCodeAt(endIdx);
var _limit = content.charCodeAt(endIdx + 1);
if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(_limit)) {
return false;
}
}
return true;
}
}, {
key: "_calculatePhraseMatch",
value: function _calculatePhraseMatch(query, pageIndex, pageContent, entireWord) {
var matches = [];
var queryLen = query.length;
var matchIdx = -queryLen;
while (true) {
matchIdx = pageContent.indexOf(query, matchIdx + queryLen);
if (matchIdx === -1) {
break;
}
if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) {
continue;
}
matches.push(matchIdx);
}
this._pageMatches[pageIndex] = matches;
}
}, {
key: "_calculateWordMatch",
value: function _calculateWordMatch(query, pageIndex, pageContent, entireWord) {
var matchesWithLength = [];
var queryArray = query.match(/\S+/g);
for (var i = 0, len = queryArray.length; i < len; i++) {
var subquery = queryArray[i];
var subqueryLen = subquery.length;
var matchIdx = -subqueryLen;
while (true) {
matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen);
if (matchIdx === -1) {
break;
}
if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) {
continue;
}
matchesWithLength.push({
match: matchIdx,
matchLength: subqueryLen,
skipped: false
});
}
}
this._pageMatchesLength[pageIndex] = [];
this._pageMatches[pageIndex] = [];
this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], this._pageMatchesLength[pageIndex]);
}
}, {
key: "_calculateMatch",
value: function _calculateMatch(pageIndex) {
var pageContent = this._pageContents[pageIndex];
var query = this._query;
var _this$_state = this._state,
caseSensitive = _this$_state.caseSensitive,
entireWord = _this$_state.entireWord,
phraseSearch = _this$_state.phraseSearch;
if (query.length === 0) {
return;
}
if (!caseSensitive) {
pageContent = pageContent.toLowerCase();
query = query.toLowerCase();
}
if (phraseSearch) {
this._calculatePhraseMatch(query, pageIndex, pageContent, entireWord);
} else {
this._calculateWordMatch(query, pageIndex, pageContent, entireWord);
}
if (this._state.highlightAll) {
this._updatePage(pageIndex);
}
if (this._resumePageIdx === pageIndex) {
this._resumePageIdx = null;
this._nextPageMatch();
}
var pageMatchesCount = this._pageMatches[pageIndex].length;
if (pageMatchesCount > 0) {
this._matchesCountTotal += pageMatchesCount;
this._updateUIResultsCount();
}
}
}, {
key: "_extractText",
value: function _extractText() {
var _this2 = this;
if (this._extractTextPromises.length > 0) {
return;
}
var promise = Promise.resolve();
var _loop = function _loop(i, ii) {
var extractTextCapability = (0, _pdfjsLib.createPromiseCapability)();
_this2._extractTextPromises[i] = extractTextCapability.promise;
promise = promise.then(function () {
return _this2._pdfDocument.getPage(i + 1).then(function (pdfPage) {
return pdfPage.getTextContent({
normalizeWhitespace: true
});
}).then(function (textContent) {
var textItems = textContent.items;
var strBuf = [];
for (var j = 0, jj = textItems.length; j < jj; j++) {
strBuf.push(textItems[j].str);
}
_this2._pageContents[i] = normalize(strBuf.join(''));
extractTextCapability.resolve(i);
}, function (reason) {
console.error("Unable to get text content for page ".concat(i + 1), reason);
_this2._pageContents[i] = '';
extractTextCapability.resolve(i);
});
});
};
for (var i = 0, ii = this._linkService.pagesCount; i < ii; i++) {
_loop(i, ii);
}
}
}, {
key: "_updatePage",
value: function _updatePage(index) {
if (this._scrollMatches && this._selected.pageIdx === index) {
this._linkService.page = index + 1;
}
this._eventBus.dispatch('updatetextlayermatches', {
source: this,
pageIndex: index
});
}
}, {
key: "_updateAllPages",
value: function _updateAllPages() {
this._eventBus.dispatch('updatetextlayermatches', {
source: this,
pageIndex: -1
});
}
}, {
key: "_nextMatch",
value: function _nextMatch() {
var _this3 = this;
var previous = this._state.findPrevious;
var currentPageIndex = this._linkService.page - 1;
var numPages = this._linkService.pagesCount;
this._highlightMatches = true;
if (this._dirtyMatch) {
this._dirtyMatch = false;
this._selected.pageIdx = this._selected.matchIdx = -1;
this._offset.pageIdx = currentPageIndex;
this._offset.matchIdx = null;
this._offset.wrapped = false;
this._resumePageIdx = null;
this._pageMatches.length = 0;
this._pageMatchesLength.length = 0;
this._matchesCountTotal = 0;
this._updateAllPages();
for (var i = 0; i < numPages; i++) {
if (this._pendingFindMatches[i] === true) {
continue;
}
this._pendingFindMatches[i] = true;
this._extractTextPromises[i].then(function (pageIdx) {
delete _this3._pendingFindMatches[pageIdx];
_this3._calculateMatch(pageIdx);
});
}
}
if (this._query === '') {
this._updateUIState(FindState.FOUND);
return;
}
if (this._resumePageIdx) {
return;
}
var offset = this._offset;
this._pagesToSearch = numPages;
if (offset.matchIdx !== null) {
var numPageMatches = this._pageMatches[offset.pageIdx].length;
if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) {
offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;
this._updateMatch(true);
return;
}
this._advanceOffsetPage(previous);
}
this._nextPageMatch();
}
}, {
key: "_matchesReady",
value: function _matchesReady(matches) {
var offset = this._offset;
var numMatches = matches.length;
var previous = this._state.findPrevious;
if (numMatches) {
offset.matchIdx = previous ? numMatches - 1 : 0;
this._updateMatch(true);
return true;
}
this._advanceOffsetPage(previous);
if (offset.wrapped) {
offset.matchIdx = null;
if (this._pagesToSearch < 0) {
this._updateMatch(false);
return true;
}
}
return false;
}
}, {
key: "_nextPageMatch",
value: function _nextPageMatch() {
if (this._resumePageIdx !== null) {
console.error('There can only be one pending page.');
}
var matches = null;
do {
var pageIdx = this._offset.pageIdx;
matches = this._pageMatches[pageIdx];
if (!matches) {
this._resumePageIdx = pageIdx;
break;
}
} while (!this._matchesReady(matches));
}
}, {
key: "_advanceOffsetPage",
value: function _advanceOffsetPage(previous) {
var offset = this._offset;
var numPages = this._linkService.pagesCount;
offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;
offset.matchIdx = null;
this._pagesToSearch--;
if (offset.pageIdx >= numPages || offset.pageIdx < 0) {
offset.pageIdx = previous ? numPages - 1 : 0;
offset.wrapped = true;
}
}
}, {
key: "_updateMatch",
value: function _updateMatch() {
var found = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var state = FindState.NOT_FOUND;
var wrapped = this._offset.wrapped;
this._offset.wrapped = false;
if (found) {
var previousPage = this._selected.pageIdx;
this._selected.pageIdx = this._offset.pageIdx;
this._selected.matchIdx = this._offset.matchIdx;
state = wrapped ? FindState.WRAPPED : FindState.FOUND;
if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {
this._updatePage(previousPage);
}
}
this._updateUIState(state, this._state.findPrevious);
if (this._selected.pageIdx !== -1) {
this._scrollMatches = true;
this._updatePage(this._selected.pageIdx);
}
}
}, {
key: "_onFindBarClose",
value: function _onFindBarClose(evt) {
var _this4 = this;
var pdfDocument = this._pdfDocument;
this._firstPageCapability.promise.then(function () {
if (!_this4._pdfDocument || pdfDocument && _this4._pdfDocument !== pdfDocument) {
return;
}
if (_this4._findTimeout) {
clearTimeout(_this4._findTimeout);
_this4._findTimeout = null;
}
if (_this4._resumePageIdx) {
_this4._resumePageIdx = null;
_this4._dirtyMatch = true;
}
_this4._updateUIState(FindState.FOUND);
_this4._highlightMatches = false;
_this4._updateAllPages();
});
}
}, {
key: "_requestMatchesCount",
value: function _requestMatchesCount() {
var _this$_selected = this._selected,
pageIdx = _this$_selected.pageIdx,
matchIdx = _this$_selected.matchIdx;
var current = 0,
total = this._matchesCountTotal;
if (matchIdx !== -1) {
for (var i = 0; i < pageIdx; i++) {
current += this._pageMatches[i] && this._pageMatches[i].length || 0;
}
current += matchIdx + 1;
}
if (current < 1 || current > total) {
current = total = 0;
}
return {
current: current,
total: total
};
}
}, {
key: "_updateUIResultsCount",
value: function _updateUIResultsCount() {
this._eventBus.dispatch('updatefindmatchescount', {
source: this,
matchesCount: this._requestMatchesCount()
});
}
}, {
key: "_updateUIState",
value: function _updateUIState(state, previous) {
this._eventBus.dispatch('updatefindcontrolstate', {
source: this,
state: state,
previous: previous,
matchesCount: this._requestMatchesCount()
});
}
}, {
key: "highlightMatches",
get: function get() {
return this._highlightMatches;
}
}, {
key: "pageMatches",
get: function get() {
return this._pageMatches;
}
}, {
key: "pageMatchesLength",
get: function get() {
return this._pageMatchesLength;
}
}, {
key: "selected",
get: function get() {
return this._selected;
}
}, {
key: "state",
get: function get() {
return this._state;
}
}, {
key: "_query",
get: function get() {
if (this._state.query !== this._rawQuery) {
this._rawQuery = this._state.query;
this._normalizedQuery = normalize(this._state.query);
}
return this._normalizedQuery;
}
}]);
return PDFFindController;
}();
exports.PDFFindController = PDFFindController;
/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getCharacterType = getCharacterType;
exports.CharacterType = void 0;
var CharacterType = {
SPACE: 0,
ALPHA_LETTER: 1,
PUNCT: 2,
HAN_LETTER: 3,
KATAKANA_LETTER: 4,
HIRAGANA_LETTER: 5,
HALFWIDTH_KATAKANA_LETTER: 6,
THAI_LETTER: 7
};
exports.CharacterType = CharacterType;
function isAlphabeticalScript(charCode) {
return charCode < 0x2E80;
}
function isAscii(charCode) {
return (charCode & 0xFF80) === 0;
}
function isAsciiAlpha(charCode) {
return charCode >= 0x61 && charCode <= 0x7A || charCode >= 0x41 && charCode <= 0x5A;
}
function isAsciiDigit(charCode) {
return charCode >= 0x30 && charCode <= 0x39;
}
function isAsciiSpace(charCode) {
return charCode === 0x20 || charCode === 0x09 || charCode === 0x0D || charCode === 0x0A;
}
function isHan(charCode) {
return charCode >= 0x3400 && charCode <= 0x9FFF || charCode >= 0xF900 && charCode <= 0xFAFF;
}
function isKatakana(charCode) {
return charCode >= 0x30A0 && charCode <= 0x30FF;
}
function isHiragana(charCode) {
return charCode >= 0x3040 && charCode <= 0x309F;
}
function isHalfwidthKatakana(charCode) {
return charCode >= 0xFF60 && charCode <= 0xFF9F;
}
function isThai(charCode) {
return (charCode & 0xFF80) === 0x0E00;
}
function getCharacterType(charCode) {
if (isAlphabeticalScript(charCode)) {
if (isAscii(charCode)) {
if (isAsciiSpace(charCode)) {
return CharacterType.SPACE;
} else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5F) {
return CharacterType.ALPHA_LETTER;
}
return CharacterType.PUNCT;
} else if (isThai(charCode)) {
return CharacterType.THAI_LETTER;
} else if (charCode === 0xA0) {
return CharacterType.SPACE;
}
return CharacterType.ALPHA_LETTER;
}
if (isHan(charCode)) {
return CharacterType.HAN_LETTER;
} else if (isKatakana(charCode)) {
return CharacterType.KATAKANA_LETTER;
} else if (isHiragana(charCode)) {
return CharacterType.HIRAGANA_LETTER;
} else if (isHalfwidthKatakana(charCode)) {
return CharacterType.HALFWIDTH_KATAKANA_LETTER;
}
return CharacterType.ALPHA_LETTER;
}
/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isDestHashesEqual = isDestHashesEqual;
exports.isDestArraysEqual = isDestArraysEqual;
exports.PDFHistory = void 0;
var _ui_utils = __webpack_require__(6);
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var HASH_CHANGE_TIMEOUT = 1000;
var POSITION_UPDATED_THRESHOLD = 50;
var UPDATE_VIEWAREA_TIMEOUT = 1000;
function getCurrentHash() {
return document.location.hash;
}
function parseCurrentHash(linkService) {
var hash = unescape(getCurrentHash()).substring(1);
var params = (0, _ui_utils.parseQueryString)(hash);
var page = params.page | 0;
if (!(Number.isInteger(page) && page > 0 && page <= linkService.pagesCount)) {
page = null;
}
return {
hash: hash,
page: page,
rotation: linkService.rotation
};
}
var PDFHistory =
/*#__PURE__*/
function () {
function PDFHistory(_ref) {
var _this = this;
var linkService = _ref.linkService,
eventBus = _ref.eventBus;
_classCallCheck(this, PDFHistory);
this.linkService = linkService;
this.eventBus = eventBus || (0, _ui_utils.getGlobalEventBus)();
this.initialized = false;
this.initialBookmark = null;
this.initialRotation = null;
this._boundEvents = Object.create(null);
this._isViewerInPresentationMode = false;
this._isPagesLoaded = false;
this.eventBus.on('presentationmodechanged', function (evt) {
_this._isViewerInPresentationMode = evt.active || evt.switchInProgress;
});
this.eventBus.on('pagesloaded', function (evt) {
_this._isPagesLoaded = !!evt.pagesCount;
});
}
_createClass(PDFHistory, [{
key: "initialize",
value: function initialize(_ref2) {
var fingerprint = _ref2.fingerprint,
_ref2$resetHistory = _ref2.resetHistory,
resetHistory = _ref2$resetHistory === void 0 ? false : _ref2$resetHistory,
_ref2$updateUrl = _ref2.updateUrl,
updateUrl = _ref2$updateUrl === void 0 ? false : _ref2$updateUrl;
if (!fingerprint || typeof fingerprint !== 'string') {
console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');
return;
}
var reInitialized = this.initialized && this.fingerprint !== fingerprint;
this.fingerprint = fingerprint;
this._updateUrl = updateUrl === true;
if (!this.initialized) {
this._bindEvents();
}
var state = window.history.state;
this.initialized = true;
this.initialBookmark = null;
this.initialRotation = null;
this._popStateInProgress = false;
this._blockHashChange = 0;
this._currentHash = getCurrentHash();
this._numPositionUpdates = 0;
this._uid = this._maxUid = 0;
this._destination = null;
this._position = null;
if (!this._isValidState(state, true) || resetHistory) {
var _parseCurrentHash = parseCurrentHash(this.linkService),
hash = _parseCurrentHash.hash,
page = _parseCurrentHash.page,
rotation = _parseCurrentHash.rotation;
if (!hash || reInitialized || resetHistory) {
this._pushOrReplaceState(null, true);
return;
}
this._pushOrReplaceState({
hash: hash,
page: page,
rotation: rotation
}, true);
return;
}
var destination = state.destination;
this._updateInternalState(destination, state.uid, true);
if (this._uid > this._maxUid) {
this._maxUid = this._uid;
}
if (destination.rotation !== undefined) {
this.initialRotation = destination.rotation;
}
if (destination.dest) {
this.initialBookmark = JSON.stringify(destination.dest);
this._destination.page = null;
} else if (destination.hash) {
this.initialBookmark = destination.hash;
} else if (destination.page) {
this.initialBookmark = "page=".concat(destination.page);
}
}
}, {
key: "push",
value: function push(_ref3) {
var _this2 = this;
var _ref3$namedDest = _ref3.namedDest,
namedDest = _ref3$namedDest === void 0 ? null : _ref3$namedDest,
explicitDest = _ref3.explicitDest,
pageNumber = _ref3.pageNumber;
if (!this.initialized) {
return;
}
if (namedDest && typeof namedDest !== 'string') {
console.error('PDFHistory.push: ' + "\"".concat(namedDest, "\" is not a valid namedDest parameter."));
return;
} else if (!Array.isArray(explicitDest)) {
console.error('PDFHistory.push: ' + "\"".concat(explicitDest, "\" is not a valid explicitDest parameter."));
return;
} else if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.linkService.pagesCount)) {
if (pageNumber !== null || this._destination) {
console.error('PDFHistory.push: ' + "\"".concat(pageNumber, "\" is not a valid pageNumber parameter."));
return;
}
}
var hash = namedDest || JSON.stringify(explicitDest);
if (!hash) {
return;
}
var forceReplace = false;
if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) {
if (this._destination.page) {
return;
}
forceReplace = true;
}
if (this._popStateInProgress && !forceReplace) {
return;
}
this._pushOrReplaceState({
dest: explicitDest,
hash: hash,
page: pageNumber,
rotation: this.linkService.rotation
}, forceReplace);
if (!this._popStateInProgress) {
this._popStateInProgress = true;
Promise.resolve().then(function () {
_this2._popStateInProgress = false;
});
}
}
}, {
key: "pushCurrentPosition",
value: function pushCurrentPosition() {
if (!this.initialized || this._popStateInProgress) {
return;
}
this._tryPushCurrentPosition();
}
}, {
key: "back",
value: function back() {
if (!this.initialized || this._popStateInProgress) {
return;
}
var state = window.history.state;
if (this._isValidState(state) && state.uid > 0) {
window.history.back();
}
}
}, {
key: "forward",
value: function forward() {
if (!this.initialized || this._popStateInProgress) {
return;
}
var state = window.history.state;
if (this._isValidState(state) && state.uid < this._maxUid) {
window.history.forward();
}
}
}, {
key: "_pushOrReplaceState",
value: function _pushOrReplaceState(destination) {
var forceReplace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var shouldReplace = forceReplace || !this._destination;
var newState = {
fingerprint: this.fingerprint,
uid: shouldReplace ? this._uid : this._uid + 1,
destination: destination
};
this._updateInternalState(destination, newState.uid);
var newUrl;
if (this._updateUrl && destination && destination.hash) {
var baseUrl = document.location.href.split('#')[0];
if (!baseUrl.startsWith('file://')) {
newUrl = "".concat(baseUrl, "#").concat(destination.hash);
}
}
if (shouldReplace) {
if (newUrl) {
window.history.replaceState(newState, '', newUrl);
} else {
window.history.replaceState(newState, '');
}
} else {
this._maxUid = this._uid;
if (newUrl) {
window.history.pushState(newState, '', newUrl);
} else {
window.history.pushState(newState, '');
}
}
}
}, {
key: "_tryPushCurrentPosition",
value: function _tryPushCurrentPosition() {
var temporary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!this._position) {
return;
}
var position = this._position;
if (temporary) {
position = Object.assign(Object.create(null), this._position);
position.temporary = true;
}
if (!this._destination) {
this._pushOrReplaceState(position);
return;
}
if (this._destination.temporary) {
this._pushOrReplaceState(position, true);
return;
}
if (this._destination.hash === position.hash) {
return;
}
if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) {
return;
}
var forceReplace = false;
if (this._destination.page >= position.first && this._destination.page <= position.page) {
if (this._destination.dest || !this._destination.first) {
return;
}
forceReplace = true;
}
this._pushOrReplaceState(position, forceReplace);
}
}, {
key: "_isValidState",
value: function _isValidState(state) {
var checkReload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
if (!state) {
return false;
}
if (state.fingerprint !== this.fingerprint) {
if (checkReload) {
if (typeof state.fingerprint !== 'string' || state.fingerprint.length !== this.fingerprint.length) {
return false;
}
var _performance$getEntri = performance.getEntriesByType('navigation'),
_performance$getEntri2 = _slicedToArray(_performance$getEntri, 1),
perfEntry = _performance$getEntri2[0];
if (!perfEntry || perfEntry.type !== 'reload') {
return false;
}
} else {
return false;
}
}
if (!Number.isInteger(state.uid) || state.uid < 0) {
return false;
}
if (state.destination === null || _typeof(state.destination) !== 'object') {
return false;
}
return true;
}
}, {
key: "_updateInternalState",
value: function _updateInternalState(destination, uid) {
var removeTemporary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (this._updateViewareaTimeout) {
clearTimeout(this._updateViewareaTimeout);
this._updateViewareaTimeout = null;
}
if (removeTemporary && destination && destination.temporary) {
delete destination.temporary;
}
this._destination = destination;
this._uid = uid;
this._numPositionUpdates = 0;
}
}, {
key: "_updateViewarea",
value: function _updateViewarea(_ref4) {
var _this3 = this;
var location = _ref4.location;
if (this._updateViewareaTimeout) {
clearTimeout(this._updateViewareaTimeout);
this._updateViewareaTimeout = null;
}
this._position = {
hash: this._isViewerInPresentationMode ? "page=".concat(location.pageNumber) : location.pdfOpenParams.substring(1),
page: this.linkService.page,
first: location.pageNumber,
rotation: location.rotation
};
if (this._popStateInProgress) {
return;
}
if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) {
this._numPositionUpdates++;
}
if (UPDATE_VIEWAREA_TIMEOUT > 0) {
this._updateViewareaTimeout = setTimeout(function () {
if (!_this3._popStateInProgress) {
_this3._tryPushCurrentPosition(true);
}
_this3._updateViewareaTimeout = null;
}, UPDATE_VIEWAREA_TIMEOUT);
}
}
}, {
key: "_popState",
value: function _popState(_ref5) {
var _this4 = this;
var state = _ref5.state;
var newHash = getCurrentHash(),
hashChanged = this._currentHash !== newHash;
this._currentHash = newHash;
if (!state || false) {
this._uid++;
var _parseCurrentHash2 = parseCurrentHash(this.linkService),
hash = _parseCurrentHash2.hash,
page = _parseCurrentHash2.page,
rotation = _parseCurrentHash2.rotation;
this._pushOrReplaceState({
hash: hash,
page: page,
rotation: rotation
}, true);
return;
}
if (!this._isValidState(state)) {
return;
}
this._popStateInProgress = true;
if (hashChanged) {
this._blockHashChange++;
(0, _ui_utils.waitOnEventOrTimeout)({
target: window,
name: 'hashchange',
delay: HASH_CHANGE_TIMEOUT
}).then(function () {
_this4._blockHashChange--;
});
}
var destination = state.destination;
this._updateInternalState(destination, state.uid, true);
if (this._uid > this._maxUid) {
this._maxUid = this._uid;
}
if ((0, _ui_utils.isValidRotation)(destination.rotation)) {
this.linkService.rotation = destination.rotation;
}
if (destination.dest) {
this.linkService.navigateTo(destination.dest);
} else if (destination.hash) {
this.linkService.setHash(destination.hash);
} else if (destination.page) {
this.linkService.page = destination.page;
}
Promise.resolve().then(function () {
_this4._popStateInProgress = false;
});
}
}, {
key: "_bindEvents",
value: function _bindEvents() {
var _this5 = this;
var _boundEvents = this._boundEvents,
eventBus = this.eventBus;
_boundEvents.updateViewarea = this._updateViewarea.bind(this);
_boundEvents.popState = this._popState.bind(this);
_boundEvents.pageHide = function (evt) {
if (!_this5._destination || _this5._destination.temporary) {
_this5._tryPushCurrentPosition();
}
};
eventBus.on('updateviewarea', _boundEvents.updateViewarea);
window.addEventListener('popstate', _boundEvents.popState);
window.addEventListener('pagehide', _boundEvents.pageHide);
}
}, {
key: "popStateInProgress",
get: function get() {
return this.initialized && (this._popStateInProgress || this._blockHashChange > 0);
}
}]);
return PDFHistory;
}();
exports.PDFHistory = PDFHistory;
function isDestHashesEqual(destHash, pushHash) {
if (typeof destHash !== 'string' || typeof pushHash !== 'string') {
return false;
}
if (destHash === pushHash) {
return true;
}
var _parseQueryString = (0, _ui_utils.parseQueryString)(destHash),
nameddest = _parseQueryString.nameddest;
if (nameddest === pushHash) {
return true;
}
return false;
}
function isDestArraysEqual(firstDest, secondDest) {
function isEntryEqual(first, second) {
if (_typeof(first) !== _typeof(second)) {
return false;
}
if (Array.isArray(first) || Array.isArray(second)) {
return false;
}
if (first !== null && _typeof(first) === 'object' && second !== null) {
if (Object.keys(first).length !== Object.keys(second).length) {
return false;
}
for (var key in first) {
if (!isEntryEqual(first[key], second[key])) {
return false;
}
}
return true;
}
return first === second || Number.isNaN(first) && Number.isNaN(second);
}
if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {
return false;
}
if (firstDest.length !== secondDest.length) {
return false;
}
for (var i = 0, ii = firstDest.length; i < ii; i++) {
if (!isEntryEqual(firstDest[i], secondDest[i])) {
return false;
}
}
return true;
}
/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SimpleLinkService = exports.PDFLinkService = void 0;
var _ui_utils = __webpack_require__(6);
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var PDFLinkService =
/*#__PURE__*/
function () {
function PDFLinkService() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
eventBus = _ref.eventBus,
_ref$externalLinkTarg = _ref.externalLinkTarget,
externalLinkTarget = _ref$externalLinkTarg === void 0 ? null : _ref$externalLinkTarg,
_ref$externalLinkRel = _ref.externalLinkRel,
externalLinkRel = _ref$externalLinkRel === void 0 ? null : _ref$externalLinkRel;
_classCallCheck(this, PDFLinkService);
this.eventBus = eventBus || (0, _ui_utils.getGlobalEventBus)();
this.externalLinkTarget = externalLinkTarget;
this.externalLinkRel = externalLinkRel;
this.baseUrl = null;
this.pdfDocument = null;
this.pdfViewer = null;
this.pdfHistory = null;
this._pagesRefCache = null;
}
_createClass(PDFLinkService, [{
key: "setDocument",
value: function setDocument(pdfDocument) {
var baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
this.baseUrl = baseUrl;
this.pdfDocument = pdfDocument;
this._pagesRefCache = Object.create(null);
}
}, {
key: "setViewer",
value: function setViewer(pdfViewer) {
this.pdfViewer = pdfViewer;
}
}, {
key: "setHistory",
value: function setHistory(pdfHistory) {
this.pdfHistory = pdfHistory;
}
}, {
key: "navigateTo",
value: function navigateTo(dest) {
var _this = this;
var goToDestination = function goToDestination(_ref2) {
var namedDest = _ref2.namedDest,
explicitDest = _ref2.explicitDest;
var destRef = explicitDest[0],
pageNumber;
if (destRef instanceof Object) {
pageNumber = _this._cachedPageNumber(destRef);
if (pageNumber === null) {
_this.pdfDocument.getPageIndex(destRef).then(function (pageIndex) {
_this.cachePageRef(pageIndex + 1, destRef);
goToDestination({
namedDest: namedDest,
explicitDest: explicitDest
});
}).catch(function () {
console.error("PDFLinkService.navigateTo: \"".concat(destRef, "\" is not ") + "a valid page reference, for dest=\"".concat(dest, "\"."));
});
return;
}
} else if (Number.isInteger(destRef)) {
pageNumber = destRef + 1;
} else {
console.error("PDFLinkService.navigateTo: \"".concat(destRef, "\" is not ") + "a valid destination reference, for dest=\"".concat(dest, "\"."));
return;
}
if (!pageNumber || pageNumber < 1 || pageNumber > _this.pagesCount) {
console.error("PDFLinkService.navigateTo: \"".concat(pageNumber, "\" is not ") + "a valid page number, for dest=\"".concat(dest, "\"."));
return;
}
if (_this.pdfHistory) {
_this.pdfHistory.pushCurrentPosition();
_this.pdfHistory.push({
namedDest: namedDest,
explicitDest: explicitDest,
pageNumber: pageNumber
});
}
_this.pdfViewer.scrollPageIntoView({
pageNumber: pageNumber,
destArray: explicitDest
});
};
new Promise(function (resolve, reject) {
if (typeof dest === 'string') {
_this.pdfDocument.getDestination(dest).then(function (destArray) {
resolve({
namedDest: dest,
explicitDest: destArray
});
});
return;
}
resolve({
namedDest: '',
explicitDest: dest
});
}).then(function (data) {
if (!Array.isArray(data.explicitDest)) {
console.error("PDFLinkService.navigateTo: \"".concat(data.explicitDest, "\" is") + " not a valid destination array, for dest=\"".concat(dest, "\"."));
return;
}
goToDestination(data);
});
}
}, {
key: "getDestinationHash",
value: function getDestinationHash(dest) {
if (typeof dest === 'string') {
return this.getAnchorUrl('#' + escape(dest));
}
if (Array.isArray(dest)) {
var str = JSON.stringify(dest);
return this.getAnchorUrl('#' + escape(str));
}
return this.getAnchorUrl('');
}
}, {
key: "getAnchorUrl",
value: function getAnchorUrl(anchor) {
return (this.baseUrl || '') + anchor;
}
}, {
key: "setHash",
value: function setHash(hash) {
var pageNumber, dest;
if (hash.includes('=')) {
var params = (0, _ui_utils.parseQueryString)(hash);
if ('search' in params) {
this.eventBus.dispatch('findfromurlhash', {
source: this,
query: params['search'].replace(/"/g, ''),
phraseSearch: params['phrase'] === 'true'
});
}
if ('nameddest' in params) {
this.navigateTo(params.nameddest);
return;
}
if ('page' in params) {
pageNumber = params.page | 0 || 1;
}
if ('zoom' in params) {
var zoomArgs = params.zoom.split(',');
var zoomArg = zoomArgs[0];
var zoomArgNumber = parseFloat(zoomArg);
if (!zoomArg.includes('Fit')) {
dest = [null, {
name: 'XYZ'
}, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
} else {
if (zoomArg === 'Fit' || zoomArg === 'FitB') {
dest = [null, {
name: zoomArg
}];
} else if (zoomArg === 'FitH' || zoomArg === 'FitBH' || zoomArg === 'FitV' || zoomArg === 'FitBV') {
dest = [null, {
name: zoomArg
}, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];
} else if (zoomArg === 'FitR') {
if (zoomArgs.length !== 5) {
console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
} else {
dest = [null, {
name: zoomArg
}, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];
}
} else {
console.error("PDFLinkService.setHash: \"".concat(zoomArg, "\" is not ") + 'a valid zoom value.');
}
}
}
if (dest) {
this.pdfViewer.scrollPageIntoView({
pageNumber: pageNumber || this.page,
destArray: dest,
allowNegativeOffset: true
});
} else if (pageNumber) {
this.page = pageNumber;
}
if ('pagemode' in params) {
this.eventBus.dispatch('pagemode', {
source: this,
mode: params.pagemode
});
}
} else {
dest = unescape(hash);
try {
dest = JSON.parse(dest);
if (!Array.isArray(dest)) {
dest = dest.toString();
}
} catch (ex) {}
if (typeof dest === 'string' || isValidExplicitDestination(dest)) {
this.navigateTo(dest);
return;
}
console.error("PDFLinkService.setHash: \"".concat(unescape(hash), "\" is not ") + 'a valid destination.');
}
}
}, {
key: "executeNamedAction",
value: function executeNamedAction(action) {
switch (action) {
case 'GoBack':
if (this.pdfHistory) {
this.pdfHistory.back();
}
break;
case 'GoForward':
if (this.pdfHistory) {
this.pdfHistory.forward();
}
break;
case 'NextPage':
if (this.page < this.pagesCount) {
this.page++;
}
break;
case 'PrevPage':
if (this.page > 1) {
this.page--;
}
break;
case 'LastPage':
this.page = this.pagesCount;
break;
case 'FirstPage':
this.page = 1;
break;
default:
break;
}
this.eventBus.dispatch('namedaction', {
source: this,
action: action
});
}
}, {
key: "cachePageRef",
value: function cachePageRef(pageNum, pageRef) {
if (!pageRef) {
return;
}
var refStr = pageRef.num + ' ' + pageRef.gen + ' R';
this._pagesRefCache[refStr] = pageNum;
}
}, {
key: "_cachedPageNumber",
value: function _cachedPageNumber(pageRef) {
var refStr = pageRef.num + ' ' + pageRef.gen + ' R';
return this._pagesRefCache && this._pagesRefCache[refStr] || null;
}
}, {
key: "isPageVisible",
value: function isPageVisible(pageNumber) {
return this.pdfViewer.isPageVisible(pageNumber);
}
}, {
key: "pagesCount",
get: function get() {
return this.pdfDocument ? this.pdfDocument.numPages : 0;
}
}, {
key: "page",
get: function get() {
return this.pdfViewer.currentPageNumber;
},
set: function set(value) {
this.pdfViewer.currentPageNumber = value;
}
}, {
key: "rotation",
get: function get() {
return this.pdfViewer.pagesRotation;
},
set: function set(value) {
this.pdfViewer.pagesRotation = value;
}
}]);
return PDFLinkService;
}();
exports.PDFLinkService = PDFLinkService;
function isValidExplicitDestination(dest) {
if (!Array.isArray(dest)) {
return false;
}
var destLength = dest.length,
allowNull = true;
if (destLength < 2) {
return false;
}
var page = dest[0];
if (!(_typeof(page) === 'object' && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {
return false;
}
var zoom = dest[1];
if (!(_typeof(zoom) === 'object' && typeof zoom.name === 'string')) {
return false;
}
switch (zoom.name) {
case 'XYZ':
if (destLength !== 5) {
return false;
}
break;
case 'Fit':
case 'FitB':
return destLength === 2;
case 'FitH':
case 'FitBH':
case 'FitV':
case 'FitBV':
if (destLength !== 3) {
return false;
}
break;
case 'FitR':
if (destLength !== 6) {
return false;
}
allowNull = false;
break;
default:
return false;
}
for (var i = 2; i < destLength; i++) {
var param = dest[i];
if (!(typeof param === 'number' || allowNull && param === null)) {
return false;
}
}
return true;
}
var SimpleLinkService =
/*#__PURE__*/
function () {
function SimpleLinkService() {
_classCallCheck(this, SimpleLinkService);
this.externalLinkTarget = null;
this.externalLinkRel = null;
}
_createClass(SimpleLinkService, [{
key: "navigateTo",
value: function navigateTo(dest) {}
}, {
key: "getDestinationHash",
value: function getDestinationHash(dest) {
return '#';
}
}, {
key: "getAnchorUrl",
value: function getAnchorUrl(hash) {
return '#';
}
}, {
key: "setHash",
value: function setHash(hash) {}
}, {
key: "executeNamedAction",
value: function executeNamedAction(action) {}
}, {
key: "cachePageRef",
value: function cachePageRef(pageNum, pageRef) {}
}, {
key: "isPageVisible",
value: function isPageVisible(pageNumber) {
return true;
}
}, {
key: "pagesCount",
get: function get() {
return 0;
}
}, {
key: "page",
get: function get() {
return 0;
},
set: function set(value) {}
}, {
key: "rotation",
get: function get() {
return 0;
},
set: function set(value) {}
}]);
return SimpleLinkService;
}();
exports.SimpleLinkService = SimpleLinkService;
/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFOutlineViewer = void 0;
var _pdfjsLib = __webpack_require__(7);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var DEFAULT_TITLE = "\u2013";
var PDFOutlineViewer =
/*#__PURE__*/
function () {
function PDFOutlineViewer(_ref) {
var container = _ref.container,
linkService = _ref.linkService,
eventBus = _ref.eventBus;
_classCallCheck(this, PDFOutlineViewer);
this.container = container;
this.linkService = linkService;
this.eventBus = eventBus;
this.reset();
eventBus.on('toggleoutlinetree', this.toggleOutlineTree.bind(this));
}
_createClass(PDFOutlineViewer, [{
key: "reset",
value: function reset() {
this.outline = null;
this.lastToggleIsShow = true;
this.container.textContent = '';
this.container.classList.remove('outlineWithDeepNesting');
}
}, {
key: "_dispatchEvent",
value: function _dispatchEvent(outlineCount) {
this.eventBus.dispatch('outlineloaded', {
source: this,
outlineCount: outlineCount
});
}
}, {
key: "_bindLink",
value: function _bindLink(element, _ref2) {
var url = _ref2.url,
newWindow = _ref2.newWindow,
dest = _ref2.dest;
var linkService = this.linkService;
if (url) {
(0, _pdfjsLib.addLinkAttributes)(element, {
url: url,
target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget,
rel: linkService.externalLinkRel
});
return;
}
element.href = linkService.getDestinationHash(dest);
element.onclick = function () {
if (dest) {
linkService.navigateTo(dest);
}
return false;
};
}
}, {
key: "_setStyles",
value: function _setStyles(element, _ref3) {
var bold = _ref3.bold,
italic = _ref3.italic;
var styleStr = '';
if (bold) {
styleStr += 'font-weight: bold;';
}
if (italic) {
styleStr += 'font-style: italic;';
}
if (styleStr) {
element.setAttribute('style', styleStr);
}
}
}, {
key: "_addToggleButton",
value: function _addToggleButton(div) {
var _this = this;
var toggler = document.createElement('div');
toggler.className = 'outlineItemToggler';
toggler.onclick = function (evt) {
evt.stopPropagation();
toggler.classList.toggle('outlineItemsHidden');
if (evt.shiftKey) {
var shouldShowAll = !toggler.classList.contains('outlineItemsHidden');
_this._toggleOutlineItem(div, shouldShowAll);
}
};
div.insertBefore(toggler, div.firstChild);
}
}, {
key: "_toggleOutlineItem",
value: function _toggleOutlineItem(root) {
var show = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
this.lastToggleIsShow = show;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = root.querySelectorAll('.outlineItemToggler')[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var toggler = _step.value;
toggler.classList.toggle('outlineItemsHidden', !show);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}, {
key: "toggleOutlineTree",
value: function toggleOutlineTree() {
if (!this.outline) {
return;
}
this._toggleOutlineItem(this.container, !this.lastToggleIsShow);
}
}, {
key: "render",
value: function render(_ref4) {
var outline = _ref4.outline;
var outlineCount = 0;
if (this.outline) {
this.reset();
}
this.outline = outline || null;
if (!outline) {
this._dispatchEvent(outlineCount);
return;
}
var fragment = document.createDocumentFragment();
var queue = [{
parent: fragment,
items: this.outline
}];
var hasAnyNesting = false;
while (queue.length > 0) {
var levelData = queue.shift();
for (var i = 0, len = levelData.items.length; i < len; i++) {
var item = levelData.items[i];
var div = document.createElement('div');
div.className = 'outlineItem';
var element = document.createElement('a');
this._bindLink(element, item);
this._setStyles(element, item);
element.textContent = (0, _pdfjsLib.removeNullCharacters)(item.title) || DEFAULT_TITLE;
div.appendChild(element);
if (item.items.length > 0) {
hasAnyNesting = true;
this._addToggleButton(div);
var itemsDiv = document.createElement('div');
itemsDiv.className = 'outlineItems';
div.appendChild(itemsDiv);
queue.push({
parent: itemsDiv,
items: item.items
});
}
levelData.parent.appendChild(div);
outlineCount++;
}
}
if (hasAnyNesting) {
this.container.classList.add('outlineWithDeepNesting');
}
this.container.appendChild(fragment);
this._dispatchEvent(outlineCount);
}
}]);
return PDFOutlineViewer;
}();
exports.PDFOutlineViewer = PDFOutlineViewer;
/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFPresentationMode = void 0;
var _ui_utils = __webpack_require__(6);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500;
var DELAY_BEFORE_HIDING_CONTROLS = 3000;
var ACTIVE_SELECTOR = 'pdfPresentationMode';
var CONTROLS_SELECTOR = 'pdfPresentationModeControls';
var MOUSE_SCROLL_COOLDOWN_TIME = 50;
var PAGE_SWITCH_THRESHOLD = 0.1;
var SWIPE_MIN_DISTANCE_THRESHOLD = 50;
var SWIPE_ANGLE_THRESHOLD = Math.PI / 6;
var PDFPresentationMode =
/*#__PURE__*/
function () {
function PDFPresentationMode(_ref) {
var _this = this;
var container = _ref.container,
_ref$viewer = _ref.viewer,
viewer = _ref$viewer === void 0 ? null : _ref$viewer,
pdfViewer = _ref.pdfViewer,
eventBus = _ref.eventBus,
_ref$contextMenuItems = _ref.contextMenuItems,
contextMenuItems = _ref$contextMenuItems === void 0 ? null : _ref$contextMenuItems;
_classCallCheck(this, PDFPresentationMode);
this.container = container;
this.viewer = viewer || container.firstElementChild;
this.pdfViewer = pdfViewer;
this.eventBus = eventBus;
this.active = false;
this.args = null;
this.contextMenuOpen = false;
this.mouseScrollTimeStamp = 0;
this.mouseScrollDelta = 0;
this.touchSwipeState = null;
if (contextMenuItems) {
contextMenuItems.contextFirstPage.addEventListener('click', function () {
_this.contextMenuOpen = false;
_this.eventBus.dispatch('firstpage', {
source: _this
});
});
contextMenuItems.contextLastPage.addEventListener('click', function () {
_this.contextMenuOpen = false;
_this.eventBus.dispatch('lastpage', {
source: _this
});
});
contextMenuItems.contextPageRotateCw.addEventListener('click', function () {
_this.contextMenuOpen = false;
_this.eventBus.dispatch('rotatecw', {
source: _this
});
});
contextMenuItems.contextPageRotateCcw.addEventListener('click', function () {
_this.contextMenuOpen = false;
_this.eventBus.dispatch('rotateccw', {
source: _this
});
});
}
}
_createClass(PDFPresentationMode, [{
key: "request",
value: function request() {
if (this.switchInProgress || this.active || !this.viewer.hasChildNodes()) {
return false;
}
this._addFullscreenChangeListeners();
this._setSwitchInProgress();
this._notifyStateChange();
if (this.container.requestFullscreen) {
this.container.requestFullscreen();
} else if (this.container.mozRequestFullScreen) {
this.container.mozRequestFullScreen();
} else if (this.container.webkitRequestFullscreen) {
this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
} else if (this.container.msRequestFullscreen) {
this.container.msRequestFullscreen();
} else {
return false;
}
this.args = {
page: this.pdfViewer.currentPageNumber,
previousScale: this.pdfViewer.currentScaleValue
};
return true;
}
}, {
key: "_mouseWheel",
value: function _mouseWheel(evt) {
if (!this.active) {
return;
}
evt.preventDefault();
var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);
var currentTime = new Date().getTime();
var storedTime = this.mouseScrollTimeStamp;
if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {
return;
}
if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) {
this._resetMouseScrollState();
}
this.mouseScrollDelta += delta;
if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {
var totalDelta = this.mouseScrollDelta;
this._resetMouseScrollState();
var success = totalDelta > 0 ? this._goToPreviousPage() : this._goToNextPage();
if (success) {
this.mouseScrollTimeStamp = currentTime;
}
}
}
}, {
key: "_goToPreviousPage",
value: function _goToPreviousPage() {
var page = this.pdfViewer.currentPageNumber;
if (page <= 1) {
return false;
}
this.pdfViewer.currentPageNumber = page - 1;
return true;
}
}, {
key: "_goToNextPage",
value: function _goToNextPage() {
var page = this.pdfViewer.currentPageNumber;
if (page >= this.pdfViewer.pagesCount) {
return false;
}
this.pdfViewer.currentPageNumber = page + 1;
return true;
}
}, {
key: "_notifyStateChange",
value: function _notifyStateChange() {
this.eventBus.dispatch('presentationmodechanged', {
source: this,
active: this.active,
switchInProgress: !!this.switchInProgress
});
}
}, {
key: "_setSwitchInProgress",
value: function _setSwitchInProgress() {
var _this2 = this;
if (this.switchInProgress) {
clearTimeout(this.switchInProgress);
}
this.switchInProgress = setTimeout(function () {
_this2._removeFullscreenChangeListeners();
delete _this2.switchInProgress;
_this2._notifyStateChange();
}, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);
}
}, {
key: "_resetSwitchInProgress",
value: function _resetSwitchInProgress() {
if (this.switchInProgress) {
clearTimeout(this.switchInProgress);
delete this.switchInProgress;
}
}
}, {
key: "_enter",
value: function _enter() {
var _this3 = this;
this.active = true;
this._resetSwitchInProgress();
this._notifyStateChange();
this.container.classList.add(ACTIVE_SELECTOR);
setTimeout(function () {
_this3.pdfViewer.currentPageNumber = _this3.args.page;
_this3.pdfViewer.currentScaleValue = 'page-fit';
}, 0);
this._addWindowListeners();
this._showControls();
this.contextMenuOpen = false;
this.container.setAttribute('contextmenu', 'viewerContextMenu');
window.getSelection().removeAllRanges();
}
}, {
key: "_exit",
value: function _exit() {
var _this4 = this;
var page = this.pdfViewer.currentPageNumber;
this.container.classList.remove(ACTIVE_SELECTOR);
setTimeout(function () {
_this4.active = false;
_this4._removeFullscreenChangeListeners();
_this4._notifyStateChange();
_this4.pdfViewer.currentScaleValue = _this4.args.previousScale;
_this4.pdfViewer.currentPageNumber = page;
_this4.args = null;
}, 0);
this._removeWindowListeners();
this._hideControls();
this._resetMouseScrollState();
this.container.removeAttribute('contextmenu');
this.contextMenuOpen = false;
}
}, {
key: "_mouseDown",
value: function _mouseDown(evt) {
if (this.contextMenuOpen) {
this.contextMenuOpen = false;
evt.preventDefault();
return;
}
if (evt.button === 0) {
var isInternalLink = evt.target.href && evt.target.classList.contains('internalLink');
if (!isInternalLink) {
evt.preventDefault();
if (evt.shiftKey) {
this._goToPreviousPage();
} else {
this._goToNextPage();
}
}
}
}
}, {
key: "_contextMenu",
value: function _contextMenu() {
this.contextMenuOpen = true;
}
}, {
key: "_showControls",
value: function _showControls() {
var _this5 = this;
if (this.controlsTimeout) {
clearTimeout(this.controlsTimeout);
} else {
this.container.classList.add(CONTROLS_SELECTOR);
}
this.controlsTimeout = setTimeout(function () {
_this5.container.classList.remove(CONTROLS_SELECTOR);
delete _this5.controlsTimeout;
}, DELAY_BEFORE_HIDING_CONTROLS);
}
}, {
key: "_hideControls",
value: function _hideControls() {
if (!this.controlsTimeout) {
return;
}
clearTimeout(this.controlsTimeout);
this.container.classList.remove(CONTROLS_SELECTOR);
delete this.controlsTimeout;
}
}, {
key: "_resetMouseScrollState",
value: function _resetMouseScrollState() {
this.mouseScrollTimeStamp = 0;
this.mouseScrollDelta = 0;
}
}, {
key: "_touchSwipe",
value: function _touchSwipe(evt) {
if (!this.active) {
return;
}
if (evt.touches.length > 1) {
this.touchSwipeState = null;
return;
}
switch (evt.type) {
case 'touchstart':
this.touchSwipeState = {
startX: evt.touches[0].pageX,
startY: evt.touches[0].pageY,
endX: evt.touches[0].pageX,
endY: evt.touches[0].pageY
};
break;
case 'touchmove':
if (this.touchSwipeState === null) {
return;
}
this.touchSwipeState.endX = evt.touches[0].pageX;
this.touchSwipeState.endY = evt.touches[0].pageY;
evt.preventDefault();
break;
case 'touchend':
if (this.touchSwipeState === null) {
return;
}
var delta = 0;
var dx = this.touchSwipeState.endX - this.touchSwipeState.startX;
var dy = this.touchSwipeState.endY - this.touchSwipeState.startY;
var absAngle = Math.abs(Math.atan2(dy, dx));
if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) {
delta = dx;
} else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) {
delta = dy;
}
if (delta > 0) {
this._goToPreviousPage();
} else if (delta < 0) {
this._goToNextPage();
}
break;
}
}
}, {
key: "_addWindowListeners",
value: function _addWindowListeners() {
this.showControlsBind = this._showControls.bind(this);
this.mouseDownBind = this._mouseDown.bind(this);
this.mouseWheelBind = this._mouseWheel.bind(this);
this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this);
this.contextMenuBind = this._contextMenu.bind(this);
this.touchSwipeBind = this._touchSwipe.bind(this);
window.addEventListener('mousemove', this.showControlsBind);
window.addEventListener('mousedown', this.mouseDownBind);
window.addEventListener('wheel', this.mouseWheelBind);
window.addEventListener('keydown', this.resetMouseScrollStateBind);
window.addEventListener('contextmenu', this.contextMenuBind);
window.addEventListener('touchstart', this.touchSwipeBind);
window.addEventListener('touchmove', this.touchSwipeBind);
window.addEventListener('touchend', this.touchSwipeBind);
}
}, {
key: "_removeWindowListeners",
value: function _removeWindowListeners() {
window.removeEventListener('mousemove', this.showControlsBind);
window.removeEventListener('mousedown', this.mouseDownBind);
window.removeEventListener('wheel', this.mouseWheelBind);
window.removeEventListener('keydown', this.resetMouseScrollStateBind);
window.removeEventListener('contextmenu', this.contextMenuBind);
window.removeEventListener('touchstart', this.touchSwipeBind);
window.removeEventListener('touchmove', this.touchSwipeBind);
window.removeEventListener('touchend', this.touchSwipeBind);
delete this.showControlsBind;
delete this.mouseDownBind;
delete this.mouseWheelBind;
delete this.resetMouseScrollStateBind;
delete this.contextMenuBind;
delete this.touchSwipeBind;
}
}, {
key: "_fullscreenChange",
value: function _fullscreenChange() {
if (this.isFullscreen) {
this._enter();
} else {
this._exit();
}
}
}, {
key: "_addFullscreenChangeListeners",
value: function _addFullscreenChangeListeners() {
this.fullscreenChangeBind = this._fullscreenChange.bind(this);
window.addEventListener('fullscreenchange', this.fullscreenChangeBind);
window.addEventListener('mozfullscreenchange', this.fullscreenChangeBind);
window.addEventListener('webkitfullscreenchange', this.fullscreenChangeBind);
window.addEventListener('MSFullscreenChange', this.fullscreenChangeBind);
}
}, {
key: "_removeFullscreenChangeListeners",
value: function _removeFullscreenChangeListeners() {
window.removeEventListener('fullscreenchange', this.fullscreenChangeBind);
window.removeEventListener('mozfullscreenchange', this.fullscreenChangeBind);
window.removeEventListener('webkitfullscreenchange', this.fullscreenChangeBind);
window.removeEventListener('MSFullscreenChange', this.fullscreenChangeBind);
delete this.fullscreenChangeBind;
}
}, {
key: "isFullscreen",
get: function get() {
return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement);
}
}]);
return PDFPresentationMode;
}();
exports.PDFPresentationMode = PDFPresentationMode;
/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFSidebarResizer = void 0;
var _ui_utils = __webpack_require__(6);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var SIDEBAR_WIDTH_VAR = '--sidebar-width';
var SIDEBAR_MIN_WIDTH = 200;
var SIDEBAR_RESIZING_CLASS = 'sidebarResizing';
var PDFSidebarResizer =
/*#__PURE__*/
function () {
function PDFSidebarResizer(options, eventBus) {
var _this = this;
var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
_classCallCheck(this, PDFSidebarResizer);
this.enabled = false;
this.isRTL = false;
this.sidebarOpen = false;
this.doc = document.documentElement;
this._width = null;
this._outerContainerWidth = null;
this._boundEvents = Object.create(null);
this.outerContainer = options.outerContainer;
this.resizer = options.resizer;
this.eventBus = eventBus;
this.l10n = l10n;
if (typeof CSS === 'undefined' || typeof CSS.supports !== 'function' || !CSS.supports(SIDEBAR_WIDTH_VAR, "calc(-1 * ".concat(SIDEBAR_MIN_WIDTH, "px)"))) {
console.warn('PDFSidebarResizer: ' + 'The browser does not support resizing of the sidebar.');
return;
}
this.enabled = true;
this.resizer.classList.remove('hidden');
this.l10n.getDirection().then(function (dir) {
_this.isRTL = dir === 'rtl';
});
this._addEventListeners();
}
_createClass(PDFSidebarResizer, [{
key: "_updateWidth",
value: function _updateWidth() {
var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
if (!this.enabled) {
return false;
}
var maxWidth = Math.floor(this.outerContainerWidth / 2);
if (width > maxWidth) {
width = maxWidth;
}
if (width < SIDEBAR_MIN_WIDTH) {
width = SIDEBAR_MIN_WIDTH;
}
if (width === this._width) {
return false;
}
this._width = width;
this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, "".concat(width, "px"));
return true;
}
}, {
key: "_mouseMove",
value: function _mouseMove(evt) {
var width = evt.clientX;
if (this.isRTL) {
width = this.outerContainerWidth - width;
}
this._updateWidth(width);
}
}, {
key: "_mouseUp",
value: function _mouseUp(evt) {
this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);
this.eventBus.dispatch('resize', {
source: this
});
var _boundEvents = this._boundEvents;
window.removeEventListener('mousemove', _boundEvents.mouseMove);
window.removeEventListener('mouseup', _boundEvents.mouseUp);
}
}, {
key: "_addEventListeners",
value: function _addEventListeners() {
var _this2 = this;
if (!this.enabled) {
return;
}
var _boundEvents = this._boundEvents;
_boundEvents.mouseMove = this._mouseMove.bind(this);
_boundEvents.mouseUp = this._mouseUp.bind(this);
this.resizer.addEventListener('mousedown', function (evt) {
if (evt.button !== 0) {
return;
}
_this2.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);
window.addEventListener('mousemove', _boundEvents.mouseMove);
window.addEventListener('mouseup', _boundEvents.mouseUp);
});
this.eventBus.on('sidebarviewchanged', function (evt) {
_this2.sidebarOpen = !!(evt && evt.view);
});
this.eventBus.on('resize', function (evt) {
if (evt && evt.source === window) {
_this2._outerContainerWidth = null;
if (_this2._width) {
if (_this2.sidebarOpen) {
_this2.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);
var updated = _this2._updateWidth(_this2._width);
Promise.resolve().then(function () {
_this2.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);
if (updated) {
_this2.eventBus.dispatch('resize', {
source: _this2
});
}
});
} else {
_this2._updateWidth(_this2._width);
}
}
}
});
}
}, {
key: "outerContainerWidth",
get: function get() {
if (!this._outerContainerWidth) {
this._outerContainerWidth = this.outerContainer.clientWidth;
}
return this._outerContainerWidth;
}
}]);
return PDFSidebarResizer;
}();
exports.PDFSidebarResizer = PDFSidebarResizer;
/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFThumbnailViewer = void 0;
var _ui_utils = __webpack_require__(6);
var _pdf_thumbnail_view = __webpack_require__(27);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var THUMBNAIL_SCROLL_MARGIN = -19;
var THUMBNAIL_SELECTED_CLASS = 'selected';
var PDFThumbnailViewer =
/*#__PURE__*/
function () {
function PDFThumbnailViewer(_ref) {
var container = _ref.container,
linkService = _ref.linkService,
renderingQueue = _ref.renderingQueue,
_ref$l10n = _ref.l10n,
l10n = _ref$l10n === void 0 ? _ui_utils.NullL10n : _ref$l10n;
_classCallCheck(this, PDFThumbnailViewer);
this.container = container;
this.linkService = linkService;
this.renderingQueue = renderingQueue;
this.l10n = l10n;
this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this));
this._resetView();
}
_createClass(PDFThumbnailViewer, [{
key: "_scrollUpdated",
value: function _scrollUpdated() {
this.renderingQueue.renderHighestPriority();
}
}, {
key: "getThumbnail",
value: function getThumbnail(index) {
return this._thumbnails[index];
}
}, {
key: "_getVisibleThumbs",
value: function _getVisibleThumbs() {
return (0, _ui_utils.getVisibleElements)(this.container, this._thumbnails);
}
}, {
key: "scrollThumbnailIntoView",
value: function scrollThumbnailIntoView(pageNumber) {
if (!this.pdfDocument) {
return;
}
var thumbnailView = this._thumbnails[pageNumber - 1];
if (!thumbnailView) {
console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.');
return;
}
if (pageNumber !== this._currentPageNumber) {
var prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];
prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);
thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);
}
var visibleThumbs = this._getVisibleThumbs();
var numVisibleThumbs = visibleThumbs.views.length;
if (numVisibleThumbs > 0) {
var first = visibleThumbs.first.id;
var last = numVisibleThumbs > 1 ? visibleThumbs.last.id : first;
var shouldScroll = false;
if (pageNumber <= first || pageNumber >= last) {
shouldScroll = true;
} else {
visibleThumbs.views.some(function (view) {
if (view.id !== pageNumber) {
return false;
}
shouldScroll = view.percent < 100;
return true;
});
}
if (shouldScroll) {
(0, _ui_utils.scrollIntoView)(thumbnailView.div, {
top: THUMBNAIL_SCROLL_MARGIN
});
}
}
this._currentPageNumber = pageNumber;
}
}, {
key: "cleanup",
value: function cleanup() {
_pdf_thumbnail_view.PDFThumbnailView.cleanup();
}
}, {
key: "_resetView",
value: function _resetView() {
this._thumbnails = [];
this._currentPageNumber = 1;
this._pageLabels = null;
this._pagesRotation = 0;
this._pagesRequests = [];
this.container.textContent = '';
}
}, {
key: "setDocument",
value: function setDocument(pdfDocument) {
var _this = this;
if (this.pdfDocument) {
this._cancelRendering();
this._resetView();
}
this.pdfDocument = pdfDocument;
if (!pdfDocument) {
return;
}
pdfDocument.getPage(1).then(function (firstPage) {
var pagesCount = pdfDocument.numPages;
var viewport = firstPage.getViewport({
scale: 1
});
for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
var thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({
container: _this.container,
id: pageNum,
defaultViewport: viewport.clone(),
linkService: _this.linkService,
renderingQueue: _this.renderingQueue,
disableCanvasToImageConversion: false,
l10n: _this.l10n
});
_this._thumbnails.push(thumbnail);
}
var thumbnailView = _this._thumbnails[_this._currentPageNumber - 1];
thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);
}).catch(function (reason) {
console.error('Unable to initialize thumbnail viewer', reason);
});
}
}, {
key: "_cancelRendering",
value: function _cancelRendering() {
for (var i = 0, ii = this._thumbnails.length; i < ii; i++) {
if (this._thumbnails[i]) {
this._thumbnails[i].cancelRendering();
}
}
}
}, {
key: "setPageLabels",
value: function setPageLabels(labels) {
if (!this.pdfDocument) {
return;
}
if (!labels) {
this._pageLabels = null;
} else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
this._pageLabels = null;
console.error('PDFThumbnailViewer_setPageLabels: Invalid page labels.');
} else {
this._pageLabels = labels;
}
for (var i = 0, ii = this._thumbnails.length; i < ii; i++) {
var label = this._pageLabels && this._pageLabels[i];
this._thumbnails[i].setPageLabel(label);
}
}
}, {
key: "_ensurePdfPageLoaded",
value: function _ensurePdfPageLoaded(thumbView) {
var _this2 = this;
if (thumbView.pdfPage) {
return Promise.resolve(thumbView.pdfPage);
}
var pageNumber = thumbView.id;
if (this._pagesRequests[pageNumber]) {
return this._pagesRequests[pageNumber];
}
var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) {
thumbView.setPdfPage(pdfPage);
_this2._pagesRequests[pageNumber] = null;
return pdfPage;
}).catch(function (reason) {
console.error('Unable to get page for thumb view', reason);
_this2._pagesRequests[pageNumber] = null;
});
this._pagesRequests[pageNumber] = promise;
return promise;
}
}, {
key: "forceRendering",
value: function forceRendering() {
var _this3 = this;
var visibleThumbs = this._getVisibleThumbs();
var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, this.scroll.down);
if (thumbView) {
this._ensurePdfPageLoaded(thumbView).then(function () {
_this3.renderingQueue.renderView(thumbView);
});
return true;
}
return false;
}
}, {
key: "pagesRotation",
get: function get() {
return this._pagesRotation;
},
set: function set(rotation) {
if (!(0, _ui_utils.isValidRotation)(rotation)) {
throw new Error('Invalid thumbnails rotation angle.');
}
if (!this.pdfDocument) {
return;
}
if (this._pagesRotation === rotation) {
return;
}
this._pagesRotation = rotation;
for (var i = 0, ii = this._thumbnails.length; i < ii; i++) {
this._thumbnails[i].update(rotation);
}
}
}]);
return PDFThumbnailViewer;
}();
exports.PDFThumbnailViewer = PDFThumbnailViewer;
/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFThumbnailView = void 0;
var _pdfjsLib = __webpack_require__(7);
var _ui_utils = __webpack_require__(6);
var _pdf_rendering_queue = __webpack_require__(10);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var MAX_NUM_SCALING_STEPS = 3;
var THUMBNAIL_CANVAS_BORDER_WIDTH = 1;
var THUMBNAIL_WIDTH = 98;
var TempImageFactory = function TempImageFactoryClosure() {
var tempCanvasCache = null;
return {
getCanvas: function getCanvas(width, height) {
var tempCanvas = tempCanvasCache;
if (!tempCanvas) {
tempCanvas = document.createElement('canvas');
tempCanvasCache = tempCanvas;
}
tempCanvas.width = width;
tempCanvas.height = height;
tempCanvas.mozOpaque = true;
var ctx = tempCanvas.getContext('2d', {
alpha: false
});
ctx.save();
ctx.fillStyle = 'rgb(255, 255, 255)';
ctx.fillRect(0, 0, width, height);
ctx.restore();
return tempCanvas;
},
destroyCanvas: function destroyCanvas() {
var tempCanvas = tempCanvasCache;
if (tempCanvas) {
tempCanvas.width = 0;
tempCanvas.height = 0;
}
tempCanvasCache = null;
}
};
}();
var PDFThumbnailView =
/*#__PURE__*/
function () {
function PDFThumbnailView(_ref) {
var container = _ref.container,
id = _ref.id,
defaultViewport = _ref.defaultViewport,
linkService = _ref.linkService,
renderingQueue = _ref.renderingQueue,
_ref$disableCanvasToI = _ref.disableCanvasToImageConversion,
disableCanvasToImageConversion = _ref$disableCanvasToI === void 0 ? false : _ref$disableCanvasToI,
_ref$l10n = _ref.l10n,
l10n = _ref$l10n === void 0 ? _ui_utils.NullL10n : _ref$l10n;
_classCallCheck(this, PDFThumbnailView);
this.id = id;
this.renderingId = 'thumbnail' + id;
this.pageLabel = null;
this.pdfPage = null;
this.rotation = 0;
this.viewport = defaultViewport;
this.pdfPageRotate = defaultViewport.rotation;
this.linkService = linkService;
this.renderingQueue = renderingQueue;
this.renderTask = null;
this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
this.resume = null;
this.disableCanvasToImageConversion = disableCanvasToImageConversion;
this.pageWidth = this.viewport.width;
this.pageHeight = this.viewport.height;
this.pageRatio = this.pageWidth / this.pageHeight;
this.canvasWidth = THUMBNAIL_WIDTH;
this.canvasHeight = this.canvasWidth / this.pageRatio | 0;
this.scale = this.canvasWidth / this.pageWidth;
this.l10n = l10n;
var anchor = document.createElement('a');
anchor.href = linkService.getAnchorUrl('#page=' + id);
this.l10n.get('thumb_page_title', {
page: id
}, 'Page {{page}}').then(function (msg) {
anchor.title = msg;
});
anchor.onclick = function () {
linkService.page = id;
return false;
};
this.anchor = anchor;
var div = document.createElement('div');
div.className = 'thumbnail';
div.setAttribute('data-page-number', this.id);
this.div = div;
var ring = document.createElement('div');
ring.className = 'thumbnailSelectionRing';
var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;
ring.style.width = this.canvasWidth + borderAdjustment + 'px';
ring.style.height = this.canvasHeight + borderAdjustment + 'px';
this.ring = ring;
div.appendChild(ring);
anchor.appendChild(div);
container.appendChild(anchor);
}
_createClass(PDFThumbnailView, [{
key: "setPdfPage",
value: function setPdfPage(pdfPage) {
this.pdfPage = pdfPage;
this.pdfPageRotate = pdfPage.rotate;
var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
this.viewport = pdfPage.getViewport({
scale: 1,
rotation: totalRotation
});
this.reset();
}
}, {
key: "reset",
value: function reset() {
this.cancelRendering();
this.pageWidth = this.viewport.width;
this.pageHeight = this.viewport.height;
this.pageRatio = this.pageWidth / this.pageHeight;
this.canvasHeight = this.canvasWidth / this.pageRatio | 0;
this.scale = this.canvasWidth / this.pageWidth;
this.div.removeAttribute('data-loaded');
var ring = this.ring;
var childNodes = ring.childNodes;
for (var i = childNodes.length - 1; i >= 0; i--) {
ring.removeChild(childNodes[i]);
}
var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;
ring.style.width = this.canvasWidth + borderAdjustment + 'px';
ring.style.height = this.canvasHeight + borderAdjustment + 'px';
if (this.canvas) {
this.canvas.width = 0;
this.canvas.height = 0;
delete this.canvas;
}
if (this.image) {
this.image.removeAttribute('src');
delete this.image;
}
}
}, {
key: "update",
value: function update(rotation) {
if (typeof rotation !== 'undefined') {
this.rotation = rotation;
}
var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
this.viewport = this.viewport.clone({
scale: 1,
rotation: totalRotation
});
this.reset();
}
}, {
key: "cancelRendering",
value: function cancelRendering() {
if (this.renderTask) {
this.renderTask.cancel();
this.renderTask = null;
}
this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
this.resume = null;
}
}, {
key: "_getPageDrawContext",
value: function _getPageDrawContext() {
var noCtxScale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var canvas = document.createElement('canvas');
this.canvas = canvas;
canvas.mozOpaque = true;
var ctx = canvas.getContext('2d', {
alpha: false
});
var outputScale = (0, _ui_utils.getOutputScale)(ctx);
canvas.width = this.canvasWidth * outputScale.sx | 0;
canvas.height = this.canvasHeight * outputScale.sy | 0;
canvas.style.width = this.canvasWidth + 'px';
canvas.style.height = this.canvasHeight + 'px';
if (!noCtxScale && outputScale.scaled) {
ctx.scale(outputScale.sx, outputScale.sy);
}
return ctx;
}
}, {
key: "_convertCanvasToImage",
value: function _convertCanvasToImage() {
var _this = this;
if (!this.canvas) {
return;
}
if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
return;
}
var id = this.renderingId;
var className = 'thumbnailImage';
if (this.disableCanvasToImageConversion) {
this.canvas.id = id;
this.canvas.className = className;
this.l10n.get('thumb_page_canvas', {
page: this.pageId
}, 'Thumbnail of Page {{page}}').then(function (msg) {
_this.canvas.setAttribute('aria-label', msg);
});
this.div.setAttribute('data-loaded', true);
this.ring.appendChild(this.canvas);
return;
}
var image = document.createElement('img');
image.id = id;
image.className = className;
this.l10n.get('thumb_page_canvas', {
page: this.pageId
}, 'Thumbnail of Page {{page}}').then(function (msg) {
image.setAttribute('aria-label', msg);
});
image.style.width = this.canvasWidth + 'px';
image.style.height = this.canvasHeight + 'px';
image.src = this.canvas.toDataURL();
this.image = image;
this.div.setAttribute('data-loaded', true);
this.ring.appendChild(image);
this.canvas.width = 0;
this.canvas.height = 0;
delete this.canvas;
}
}, {
key: "draw",
value: function draw() {
var _this2 = this;
if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {
console.error('Must be in new state before drawing');
return Promise.resolve(undefined);
}
this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;
var renderCapability = (0, _pdfjsLib.createPromiseCapability)();
var finishRenderTask = function finishRenderTask(error) {
if (renderTask === _this2.renderTask) {
_this2.renderTask = null;
}
if (error instanceof _pdfjsLib.RenderingCancelledException) {
renderCapability.resolve(undefined);
return;
}
_this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
_this2._convertCanvasToImage();
if (!error) {
renderCapability.resolve(undefined);
} else {
renderCapability.reject(error);
}
};
var ctx = this._getPageDrawContext();
var drawViewport = this.viewport.clone({
scale: this.scale
});
var renderContinueCallback = function renderContinueCallback(cont) {
if (!_this2.renderingQueue.isHighestPriority(_this2)) {
_this2.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED;
_this2.resume = function () {
_this2.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;
cont();
};
return;
}
cont();
};
var renderContext = {
canvasContext: ctx,
viewport: drawViewport
};
var renderTask = this.renderTask = this.pdfPage.render(renderContext);
renderTask.onContinue = renderContinueCallback;
renderTask.promise.then(function () {
finishRenderTask(null);
}, function (error) {
finishRenderTask(error);
});
return renderCapability.promise;
}
}, {
key: "setImage",
value: function setImage(pageView) {
if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {
return;
}
var img = pageView.canvas;
if (!img) {
return;
}
if (!this.pdfPage) {
this.setPdfPage(pageView.pdfPage);
}
this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
var ctx = this._getPageDrawContext(true);
var canvas = ctx.canvas;
if (img.width <= 2 * canvas.width) {
ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);
this._convertCanvasToImage();
return;
}
var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;
var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;
var reducedImage = TempImageFactory.getCanvas(reducedWidth, reducedHeight);
var reducedImageCtx = reducedImage.getContext('2d');
while (reducedWidth > img.width || reducedHeight > img.height) {
reducedWidth >>= 1;
reducedHeight >>= 1;
}
reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight);
while (reducedWidth > 2 * canvas.width) {
reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1);
reducedWidth >>= 1;
reducedHeight >>= 1;
}
ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height);
this._convertCanvasToImage();
}
}, {
key: "setPageLabel",
value: function setPageLabel(label) {
var _this3 = this;
this.pageLabel = typeof label === 'string' ? label : null;
this.l10n.get('thumb_page_title', {
page: this.pageId
}, 'Page {{page}}').then(function (msg) {
_this3.anchor.title = msg;
});
if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
return;
}
this.l10n.get('thumb_page_canvas', {
page: this.pageId
}, 'Thumbnail of Page {{page}}').then(function (ariaLabel) {
if (_this3.image) {
_this3.image.setAttribute('aria-label', ariaLabel);
} else if (_this3.disableCanvasToImageConversion && _this3.canvas) {
_this3.canvas.setAttribute('aria-label', ariaLabel);
}
});
}
}, {
key: "pageId",
get: function get() {
return this.pageLabel !== null ? this.pageLabel : this.id;
}
}], [{
key: "cleanup",
value: function cleanup() {
TempImageFactory.destroyCanvas();
}
}]);
return PDFThumbnailView;
}();
exports.PDFThumbnailView = PDFThumbnailView;
/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFViewer = void 0;
var _base_viewer = __webpack_require__(29);
var _pdfjsLib = __webpack_require__(7);
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
var PDFViewer =
/*#__PURE__*/
function (_BaseViewer) {
_inherits(PDFViewer, _BaseViewer);
function PDFViewer() {
_classCallCheck(this, PDFViewer);
return _possibleConstructorReturn(this, _getPrototypeOf(PDFViewer).apply(this, arguments));
}
_createClass(PDFViewer, [{
key: "_scrollIntoView",
value: function _scrollIntoView(_ref) {
var pageDiv = _ref.pageDiv,
_ref$pageSpot = _ref.pageSpot,
pageSpot = _ref$pageSpot === void 0 ? null : _ref$pageSpot,
_ref$pageNumber = _ref.pageNumber,
pageNumber = _ref$pageNumber === void 0 ? null : _ref$pageNumber;
if (!pageSpot && !this.isInPresentationMode) {
var left = pageDiv.offsetLeft + pageDiv.clientLeft;
var right = left + pageDiv.clientWidth;
var _this$container = this.container,
scrollLeft = _this$container.scrollLeft,
clientWidth = _this$container.clientWidth;
if (this._isScrollModeHorizontal || left < scrollLeft || right > scrollLeft + clientWidth) {
pageSpot = {
left: 0,
top: 0
};
}
}
_get(_getPrototypeOf(PDFViewer.prototype), "_scrollIntoView", this).call(this, {
pageDiv: pageDiv,
pageSpot: pageSpot,
pageNumber: pageNumber
});
}
}, {
key: "_getVisiblePages",
value: function _getVisiblePages() {
if (this.isInPresentationMode) {
return this._getCurrentVisiblePage();
}
return _get(_getPrototypeOf(PDFViewer.prototype), "_getVisiblePages", this).call(this);
}
}, {
key: "_updateHelper",
value: function _updateHelper(visiblePages) {
if (this.isInPresentationMode) {
return;
}
var currentId = this._currentPageNumber;
var stillFullyVisible = false;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = visiblePages[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var page = _step.value;
if (page.percent < 100) {
break;
}
if (page.id === currentId) {
stillFullyVisible = true;
break;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
if (!stillFullyVisible) {
currentId = visiblePages[0].id;
}
this._setCurrentPageNumber(currentId);
}
}, {
key: "_setDocumentViewerElement",
get: function get() {
return (0, _pdfjsLib.shadow)(this, '_setDocumentViewerElement', this.viewer);
}
}]);
return PDFViewer;
}(_base_viewer.BaseViewer);
exports.PDFViewer = PDFViewer;
/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BaseViewer = void 0;
var _ui_utils = __webpack_require__(6);
var _pdf_rendering_queue = __webpack_require__(10);
var _annotation_layer_builder = __webpack_require__(30);
var _pdfjsLib = __webpack_require__(7);
var _pdf_page_view = __webpack_require__(31);
var _pdf_link_service = __webpack_require__(22);
var _text_layer_builder = __webpack_require__(32);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var DEFAULT_CACHE_SIZE = 10;
function PDFPageViewBuffer(size) {
var data = [];
this.push = function (view) {
var i = data.indexOf(view);
if (i >= 0) {
data.splice(i, 1);
}
data.push(view);
if (data.length > size) {
data.shift().destroy();
}
};
this.resize = function (newSize, pagesToKeep) {
size = newSize;
if (pagesToKeep) {
var pageIdsToKeep = new Set();
for (var i = 0, iMax = pagesToKeep.length; i < iMax; ++i) {
pageIdsToKeep.add(pagesToKeep[i].id);
}
(0, _ui_utils.moveToEndOfArray)(data, function (page) {
return pageIdsToKeep.has(page.id);
});
}
while (data.length > size) {
data.shift().destroy();
}
};
}
function isSameScale(oldScale, newScale) {
if (newScale === oldScale) {
return true;
}
if (Math.abs(newScale - oldScale) < 1e-15) {
return true;
}
return false;
}
var BaseViewer =
/*#__PURE__*/
function () {
function BaseViewer(options) {
var _this = this;
_classCallCheck(this, BaseViewer);
if (this.constructor === BaseViewer) {
throw new Error('Cannot initialize BaseViewer.');
}
this._name = this.constructor.name;
this.container = options.container;
this.viewer = options.viewer || options.container.firstElementChild;
this.eventBus = options.eventBus || (0, _ui_utils.getGlobalEventBus)();
this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();
this.downloadManager = options.downloadManager || null;
this.findController = options.findController || null;
this.removePageBorders = options.removePageBorders || false;
this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;
this.imageResourcesPath = options.imageResourcesPath || '';
this.renderInteractiveForms = options.renderInteractiveForms || false;
this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
this.enableWebGL = options.enableWebGL || false;
this.useOnlyCssZoom = options.useOnlyCssZoom || false;
this.maxCanvasPixels = options.maxCanvasPixels;
this.l10n = options.l10n || _ui_utils.NullL10n;
this.defaultRenderingQueue = !options.renderingQueue;
if (this.defaultRenderingQueue) {
this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
this.renderingQueue.setViewer(this);
} else {
this.renderingQueue = options.renderingQueue;
}
this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this));
this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN;
this._resetView();
if (this.removePageBorders) {
this.viewer.classList.add('removePageBorders');
}
Promise.resolve().then(function () {
_this.eventBus.dispatch('baseviewerinit', {
source: _this
});
});
}
_createClass(BaseViewer, [{
key: "getPageView",
value: function getPageView(index) {
return this._pages[index];
}
}, {
key: "_setCurrentPageNumber",
value: function _setCurrentPageNumber(val) {
var resetCurrentPageView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
if (this._currentPageNumber === val) {
if (resetCurrentPageView) {
this._resetCurrentPageView();
}
return true;
}
if (!(0 < val && val <= this.pagesCount)) {
return false;
}
this._currentPageNumber = val;
this.eventBus.dispatch('pagechanging', {
source: this,
pageNumber: val,
pageLabel: this._pageLabels && this._pageLabels[val - 1]
});
if (resetCurrentPageView) {
this._resetCurrentPageView();
}
return true;
}
}, {
key: "setDocument",
value: function setDocument(pdfDocument) {
var _this2 = this;
if (this.pdfDocument) {
this._cancelRendering();
this._resetView();
if (this.findController) {
this.findController.setDocument(null);
}
}
this.pdfDocument = pdfDocument;
if (!pdfDocument) {
return;
}
var pagesCount = pdfDocument.numPages;
var pagesCapability = (0, _pdfjsLib.createPromiseCapability)();
this.pagesPromise = pagesCapability.promise;
pagesCapability.promise.then(function () {
_this2._pageViewsReady = true;
_this2.eventBus.dispatch('pagesloaded', {
source: _this2,
pagesCount: pagesCount
});
});
var onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)();
this.onePageRendered = onePageRenderedCapability.promise;
var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) {
pageView.onBeforeDraw = function () {
_this2._buffer.push(pageView);
};
pageView.onAfterDraw = function () {
if (!onePageRenderedCapability.settled) {
onePageRenderedCapability.resolve();
}
};
};
var firstPagePromise = pdfDocument.getPage(1);
this.firstPagePromise = firstPagePromise;
firstPagePromise.then(function (pdfPage) {
var scale = _this2.currentScale;
var viewport = pdfPage.getViewport({
scale: scale * _ui_utils.CSS_UNITS
});
for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
var textLayerFactory = null;
if (_this2.textLayerMode !== _ui_utils.TextLayerMode.DISABLE) {
textLayerFactory = _this2;
}
var pageView = new _pdf_page_view.PDFPageView({
container: _this2._setDocumentViewerElement,
eventBus: _this2.eventBus,
id: pageNum,
scale: scale,
defaultViewport: viewport.clone(),
renderingQueue: _this2.renderingQueue,
textLayerFactory: textLayerFactory,
textLayerMode: _this2.textLayerMode,
annotationLayerFactory: _this2,
imageResourcesPath: _this2.imageResourcesPath,
renderInteractiveForms: _this2.renderInteractiveForms,
renderer: _this2.renderer,
enableWebGL: _this2.enableWebGL,
useOnlyCssZoom: _this2.useOnlyCssZoom,
maxCanvasPixels: _this2.maxCanvasPixels,
l10n: _this2.l10n
});
bindOnAfterAndBeforeDraw(pageView);
_this2._pages.push(pageView);
}
if (_this2._spreadMode !== _ui_utils.SpreadMode.NONE) {
_this2._updateSpreadMode();
}
onePageRenderedCapability.promise.then(function () {
if (pdfDocument.loadingParams['disableAutoFetch']) {
pagesCapability.resolve();
return;
}
var getPagesLeft = pagesCount;
var _loop = function _loop(_pageNum) {
pdfDocument.getPage(_pageNum).then(function (pdfPage) {
var pageView = _this2._pages[_pageNum - 1];
if (!pageView.pdfPage) {
pageView.setPdfPage(pdfPage);
}
_this2.linkService.cachePageRef(_pageNum, pdfPage.ref);
if (--getPagesLeft === 0) {
pagesCapability.resolve();
}
}, function (reason) {
console.error("Unable to get page ".concat(_pageNum, " to initialize viewer"), reason);
if (--getPagesLeft === 0) {
pagesCapability.resolve();
}
});
};
for (var _pageNum = 1; _pageNum <= pagesCount; ++_pageNum) {
_loop(_pageNum);
}
});
_this2.eventBus.dispatch('pagesinit', {
source: _this2
});
if (_this2.findController) {
_this2.findController.setDocument(pdfDocument);
}
if (_this2.defaultRenderingQueue) {
_this2.update();
}
}).catch(function (reason) {
console.error('Unable to initialize viewer', reason);
});
}
}, {
key: "setPageLabels",
value: function setPageLabels(labels) {
if (!this.pdfDocument) {
return;
}
if (!labels) {
this._pageLabels = null;
} else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
this._pageLabels = null;
console.error("".concat(this._name, ".setPageLabels: Invalid page labels."));
} else {
this._pageLabels = labels;
}
for (var i = 0, ii = this._pages.length; i < ii; i++) {
var pageView = this._pages[i];
var label = this._pageLabels && this._pageLabels[i];
pageView.setPageLabel(label);
}
}
}, {
key: "_resetView",
value: function _resetView() {
this._pages = [];
this._currentPageNumber = 1;
this._currentScale = _ui_utils.UNKNOWN_SCALE;
this._currentScaleValue = null;
this._pageLabels = null;
this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);
this._location = null;
this._pagesRotation = 0;
this._pagesRequests = [];
this._pageViewsReady = false;
this._scrollMode = _ui_utils.ScrollMode.VERTICAL;
this._spreadMode = _ui_utils.SpreadMode.NONE;
this.viewer.textContent = '';
this._updateScrollMode();
}
}, {
key: "_scrollUpdate",
value: function _scrollUpdate() {
if (this.pagesCount === 0) {
return;
}
this.update();
}
}, {
key: "_scrollIntoView",
value: function _scrollIntoView(_ref) {
var pageDiv = _ref.pageDiv,
_ref$pageSpot = _ref.pageSpot,
pageSpot = _ref$pageSpot === void 0 ? null : _ref$pageSpot,
_ref$pageNumber = _ref.pageNumber,
pageNumber = _ref$pageNumber === void 0 ? null : _ref$pageNumber;
(0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);
}
}, {
key: "_setScaleUpdatePages",
value: function _setScaleUpdatePages(newScale, newValue) {
var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var preset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
this._currentScaleValue = newValue.toString();
if (isSameScale(this._currentScale, newScale)) {
if (preset) {
this.eventBus.dispatch('scalechanging', {
source: this,
scale: newScale,
presetValue: newValue
});
}
return;
}
for (var i = 0, ii = this._pages.length; i < ii; i++) {
this._pages[i].update(newScale);
}
this._currentScale = newScale;
if (!noScroll) {
var page = this._currentPageNumber,
dest;
if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) {
page = this._location.pageNumber;
dest = [null, {
name: 'XYZ'
}, this._location.left, this._location.top, null];
}
this.scrollPageIntoView({
pageNumber: page,
destArray: dest,
allowNegativeOffset: true
});
}
this.eventBus.dispatch('scalechanging', {
source: this,
scale: newScale,
presetValue: preset ? newValue : undefined
});
if (this.defaultRenderingQueue) {
this.update();
}
}
}, {
key: "_setScale",
value: function _setScale(value) {
var noScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var scale = parseFloat(value);
if (scale > 0) {
this._setScaleUpdatePages(scale, value, noScroll, false);
} else {
var currentPage = this._pages[this._currentPageNumber - 1];
if (!currentPage) {
return;
}
var noPadding = this.isInPresentationMode || this.removePageBorders;
var hPadding = noPadding ? 0 : _ui_utils.SCROLLBAR_PADDING;
var vPadding = noPadding ? 0 : _ui_utils.VERTICAL_PADDING;
if (!noPadding && this._isScrollModeHorizontal) {
var _ref2 = [vPadding, hPadding];
hPadding = _ref2[0];
vPadding = _ref2[1];
}
var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale;
var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale;
switch (value) {
case 'page-actual':
scale = 1;
break;
case 'page-width':
scale = pageWidthScale;
break;
case 'page-height':
scale = pageHeightScale;
break;
case 'page-fit':
scale = Math.min(pageWidthScale, pageHeightScale);
break;
case 'auto':
var horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale);
scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale);
break;
default:
console.error("".concat(this._name, "._setScale: \"").concat(value, "\" is an unknown zoom value."));
return;
}
this._setScaleUpdatePages(scale, value, noScroll, true);
}
}
}, {
key: "_resetCurrentPageView",
value: function _resetCurrentPageView() {
if (this.isInPresentationMode) {
this._setScale(this._currentScaleValue, true);
}
var pageView = this._pages[this._currentPageNumber - 1];
this._scrollIntoView({
pageDiv: pageView.div
});
}
}, {
key: "scrollPageIntoView",
value: function scrollPageIntoView(_ref3) {
var pageNumber = _ref3.pageNumber,
_ref3$destArray = _ref3.destArray,
destArray = _ref3$destArray === void 0 ? null : _ref3$destArray,
_ref3$allowNegativeOf = _ref3.allowNegativeOffset,
allowNegativeOffset = _ref3$allowNegativeOf === void 0 ? false : _ref3$allowNegativeOf;
if (!this.pdfDocument) {
return;
}
var pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1];
if (!pageView) {
console.error("".concat(this._name, ".scrollPageIntoView: ") + "\"".concat(pageNumber, "\" is not a valid pageNumber parameter."));
return;
}
if (this.isInPresentationMode || !destArray) {
this._setCurrentPageNumber(pageNumber, true);
return;
}
var x = 0,
y = 0;
var width = 0,
height = 0,
widthScale,
heightScale;
var changeOrientation = pageView.rotation % 180 === 0 ? false : true;
var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS;
var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS;
var scale = 0;
switch (destArray[1].name) {
case 'XYZ':
x = destArray[2];
y = destArray[3];
scale = destArray[4];
x = x !== null ? x : 0;
y = y !== null ? y : pageHeight;
break;
case 'Fit':
case 'FitB':
scale = 'page-fit';
break;
case 'FitH':
case 'FitBH':
y = destArray[2];
scale = 'page-width';
if (y === null && this._location) {
x = this._location.left;
y = this._location.top;
}
break;
case 'FitV':
case 'FitBV':
x = destArray[2];
width = pageWidth;
height = pageHeight;
scale = 'page-height';
break;
case 'FitR':
x = destArray[2];
y = destArray[3];
width = destArray[4] - x;
height = destArray[5] - y;
var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;
var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;
widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS;
heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS;
scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));
break;
default:
console.error("".concat(this._name, ".scrollPageIntoView: ") + "\"".concat(destArray[1].name, "\" is not a valid destination type."));
return;
}
if (scale && scale !== this._currentScale) {
this.currentScaleValue = scale;
} else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) {
this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
}
if (scale === 'page-fit' && !destArray[4]) {
this._scrollIntoView({
pageDiv: pageView.div,
pageNumber: pageNumber
});
return;
}
var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)];
var left = Math.min(boundingRect[0][0], boundingRect[1][0]);
var top = Math.min(boundingRect[0][1], boundingRect[1][1]);
if (!allowNegativeOffset) {
left = Math.max(left, 0);
top = Math.max(top, 0);
}
this._scrollIntoView({
pageDiv: pageView.div,
pageSpot: {
left: left,
top: top
},
pageNumber: pageNumber
});
}
}, {
key: "_updateLocation",
value: function _updateLocation(firstPage) {
var currentScale = this._currentScale;
var currentScaleValue = this._currentScaleValue;
var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue;
var pageNumber = firstPage.id;
var pdfOpenParams = '#page=' + pageNumber;
pdfOpenParams += '&zoom=' + normalizedScaleValue;
var currentPageView = this._pages[pageNumber - 1];
var container = this.container;
var topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y);
var intLeft = Math.round(topLeft[0]);
var intTop = Math.round(topLeft[1]);
pdfOpenParams += ',' + intLeft + ',' + intTop;
this._location = {
pageNumber: pageNumber,
scale: normalizedScaleValue,
top: intTop,
left: intLeft,
rotation: this._pagesRotation,
pdfOpenParams: pdfOpenParams
};
}
}, {
key: "_updateHelper",
value: function _updateHelper(visiblePages) {
throw new Error('Not implemented: _updateHelper');
}
}, {
key: "update",
value: function update() {
var visible = this._getVisiblePages();
var visiblePages = visible.views,
numVisiblePages = visiblePages.length;
if (numVisiblePages === 0) {
return;
}
var newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);
this._buffer.resize(newCacheSize, visiblePages);
this.renderingQueue.renderHighestPriority(visible);
this._updateHelper(visiblePages);
this._updateLocation(visible.first);
this.eventBus.dispatch('updateviewarea', {
source: this,
location: this._location
});
}
}, {
key: "containsElement",
value: function containsElement(element) {
return this.container.contains(element);
}
}, {
key: "focus",
value: function focus() {
this.container.focus();
}
}, {
key: "_getCurrentVisiblePage",
value: function _getCurrentVisiblePage() {
if (!this.pagesCount) {
return {
views: []
};
}
var pageView = this._pages[this._currentPageNumber - 1];
var element = pageView.div;
var view = {
id: pageView.id,
x: element.offsetLeft + element.clientLeft,
y: element.offsetTop + element.clientTop,
view: pageView
};
return {
first: view,
last: view,
views: [view]
};
}
}, {
key: "_getVisiblePages",
value: function _getVisiblePages() {
return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true, this._isScrollModeHorizontal);
}
}, {
key: "isPageVisible",
value: function isPageVisible(pageNumber) {
if (!this.pdfDocument) {
return false;
}
if (this.pageNumber < 1 || pageNumber > this.pagesCount) {
console.error("".concat(this._name, ".isPageVisible: \"").concat(pageNumber, "\" is out of bounds."));
return false;
}
return this._getVisiblePages().views.some(function (view) {
return view.id === pageNumber;
});
}
}, {
key: "cleanup",
value: function cleanup() {
for (var i = 0, ii = this._pages.length; i < ii; i++) {
if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
this._pages[i].reset();
}
}
}
}, {
key: "_cancelRendering",
value: function _cancelRendering() {
for (var i = 0, ii = this._pages.length; i < ii; i++) {
if (this._pages[i]) {
this._pages[i].cancelRendering();
}
}
}
}, {
key: "_ensurePdfPageLoaded",
value: function _ensurePdfPageLoaded(pageView) {
var _this3 = this;
if (pageView.pdfPage) {
return Promise.resolve(pageView.pdfPage);
}
var pageNumber = pageView.id;
if (this._pagesRequests[pageNumber]) {
return this._pagesRequests[pageNumber];
}
var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) {
if (!pageView.pdfPage) {
pageView.setPdfPage(pdfPage);
}
_this3._pagesRequests[pageNumber] = null;
return pdfPage;
}).catch(function (reason) {
console.error('Unable to get page for page view', reason);
_this3._pagesRequests[pageNumber] = null;
});
this._pagesRequests[pageNumber] = promise;
return promise;
}
}, {
key: "forceRendering",
value: function forceRendering(currentlyVisiblePages) {
var _this4 = this;
var visiblePages = currentlyVisiblePages || this._getVisiblePages();
var scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down;
var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead);
if (pageView) {
this._ensurePdfPageLoaded(pageView).then(function () {
_this4.renderingQueue.renderView(pageView);
});
return true;
}
return false;
}
}, {
key: "createTextLayerBuilder",
value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {
var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
return new _text_layer_builder.TextLayerBuilder({
textLayerDiv: textLayerDiv,
eventBus: this.eventBus,
pageIndex: pageIndex,
viewport: viewport,
findController: this.isInPresentationMode ? null : this.findController,
enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection
});
}
}, {
key: "createAnnotationLayerBuilder",
value: function createAnnotationLayerBuilder(pageDiv, pdfPage) {
var imageResourcesPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var renderInteractiveForms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var l10n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _ui_utils.NullL10n;
return new _annotation_layer_builder.AnnotationLayerBuilder({
pageDiv: pageDiv,
pdfPage: pdfPage,
imageResourcesPath: imageResourcesPath,
renderInteractiveForms: renderInteractiveForms,
linkService: this.linkService,
downloadManager: this.downloadManager,
l10n: l10n
});
}
}, {
key: "getPagesOverview",
value: function getPagesOverview() {
var pagesOverview = this._pages.map(function (pageView) {
var viewport = pageView.pdfPage.getViewport({
scale: 1
});
return {
width: viewport.width,
height: viewport.height,
rotation: viewport.rotation
};
});
if (!this.enablePrintAutoRotate) {
return pagesOverview;
}
var isFirstPagePortrait = (0, _ui_utils.isPortraitOrientation)(pagesOverview[0]);
return pagesOverview.map(function (size) {
if (isFirstPagePortrait === (0, _ui_utils.isPortraitOrientation)(size)) {
return size;
}
return {
width: size.height,
height: size.width,
rotation: (size.rotation + 90) % 360
};
});
}
}, {
key: "_updateScrollMode",
value: function _updateScrollMode() {
var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
var scrollMode = this._scrollMode,
viewer = this.viewer;
viewer.classList.toggle('scrollHorizontal', scrollMode === _ui_utils.ScrollMode.HORIZONTAL);
viewer.classList.toggle('scrollWrapped', scrollMode === _ui_utils.ScrollMode.WRAPPED);
if (!this.pdfDocument || !pageNumber) {
return;
}
if (this._currentScaleValue && isNaN(this._currentScaleValue)) {
this._setScale(this._currentScaleValue, true);
}
this._setCurrentPageNumber(pageNumber, true);
this.update();
}
}, {
key: "_updateSpreadMode",
value: function _updateSpreadMode() {
var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
if (!this.pdfDocument) {
return;
}
var viewer = this.viewer,
pages = this._pages;
viewer.textContent = '';
if (this._spreadMode === _ui_utils.SpreadMode.NONE) {
for (var i = 0, iMax = pages.length; i < iMax; ++i) {
viewer.appendChild(pages[i].div);
}
} else {
var parity = this._spreadMode - 1;
var spread = null;
for (var _i = 0, _iMax = pages.length; _i < _iMax; ++_i) {
if (spread === null) {
spread = document.createElement('div');
spread.className = 'spread';
viewer.appendChild(spread);
} else if (_i % 2 === parity) {
spread = spread.cloneNode(false);
viewer.appendChild(spread);
}
spread.appendChild(pages[_i].div);
}
}
if (!pageNumber) {
return;
}
this._setCurrentPageNumber(pageNumber, true);
this.update();
}
}, {
key: "pagesCount",
get: function get() {
return this._pages.length;
}
}, {
key: "pageViewsReady",
get: function get() {
return this._pageViewsReady;
}
}, {
key: "currentPageNumber",
get: function get() {
return this._currentPageNumber;
},
set: function set(val) {
if (!Number.isInteger(val)) {
throw new Error('Invalid page number.');
}
if (!this.pdfDocument) {
return;
}
if (!this._setCurrentPageNumber(val, true)) {
console.error("".concat(this._name, ".currentPageNumber: \"").concat(val, "\" is not a valid page."));
}
}
}, {
key: "currentPageLabel",
get: function get() {
return this._pageLabels && this._pageLabels[this._currentPageNumber - 1];
},
set: function set(val) {
if (!this.pdfDocument) {
return;
}
var page = val | 0;
if (this._pageLabels) {
var i = this._pageLabels.indexOf(val);
if (i >= 0) {
page = i + 1;
}
}
if (!this._setCurrentPageNumber(page, true)) {
console.error("".concat(this._name, ".currentPageLabel: \"").concat(val, "\" is not a valid page."));
}
}
}, {
key: "currentScale",
get: function get() {
return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE;
},
set: function set(val) {
if (isNaN(val)) {
throw new Error('Invalid numeric scale.');
}
if (!this.pdfDocument) {
return;
}
this._setScale(val, false);
}
}, {
key: "currentScaleValue",
get: function get() {
return this._currentScaleValue;
},
set: function set(val) {
if (!this.pdfDocument) {
return;
}
this._setScale(val, false);
}
}, {
key: "pagesRotation",
get: function get() {
return this._pagesRotation;
},
set: function set(rotation) {
if (!(0, _ui_utils.isValidRotation)(rotation)) {
throw new Error('Invalid pages rotation angle.');
}
if (!this.pdfDocument) {
return;
}
if (this._pagesRotation === rotation) {
return;
}
this._pagesRotation = rotation;
var pageNumber = this._currentPageNumber;
for (var i = 0, ii = this._pages.length; i < ii; i++) {
var pageView = this._pages[i];
pageView.update(pageView.scale, rotation);
}
if (this._currentScaleValue) {
this._setScale(this._currentScaleValue, true);
}
this.eventBus.dispatch('rotationchanging', {
source: this,
pagesRotation: rotation,
pageNumber: pageNumber
});
if (this.defaultRenderingQueue) {
this.update();
}
}
}, {
key: "_setDocumentViewerElement",
get: function get() {
throw new Error('Not implemented: _setDocumentViewerElement');
}
}, {
key: "_isScrollModeHorizontal",
get: function get() {
return this.isInPresentationMode ? false : this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL;
}
}, {
key: "isInPresentationMode",
get: function get() {
return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;
}
}, {
key: "isChangingPresentationMode",
get: function get() {
return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING;
}
}, {
key: "isHorizontalScrollbarEnabled",
get: function get() {
return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth;
}
}, {
key: "isVerticalScrollbarEnabled",
get: function get() {
return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight;
}
}, {
key: "hasEqualPageSizes",
get: function get() {
var firstPageView = this._pages[0];
for (var i = 1, ii = this._pages.length; i < ii; ++i) {
var pageView = this._pages[i];
if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) {
return false;
}
}
return true;
}
}, {
key: "scrollMode",
get: function get() {
return this._scrollMode;
},
set: function set(mode) {
if (this._scrollMode === mode) {
return;
}
if (!(0, _ui_utils.isValidScrollMode)(mode)) {
throw new Error("Invalid scroll mode: ".concat(mode));
}
this._scrollMode = mode;
this.eventBus.dispatch('scrollmodechanged', {
source: this,
mode: mode
});
this._updateScrollMode(this._currentPageNumber);
}
}, {
key: "spreadMode",
get: function get() {
return this._spreadMode;
},
set: function set(mode) {
if (this._spreadMode === mode) {
return;
}
if (!(0, _ui_utils.isValidSpreadMode)(mode)) {
throw new Error("Invalid spread mode: ".concat(mode));
}
this._spreadMode = mode;
this.eventBus.dispatch('spreadmodechanged', {
source: this,
mode: mode
});
this._updateSpreadMode(this._currentPageNumber);
}
}]);
return BaseViewer;
}();
exports.BaseViewer = BaseViewer;
/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = void 0;
var _pdfjsLib = __webpack_require__(7);
var _ui_utils = __webpack_require__(6);
var _pdf_link_service = __webpack_require__(22);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var AnnotationLayerBuilder =
/*#__PURE__*/
function () {
function AnnotationLayerBuilder(_ref) {
var pageDiv = _ref.pageDiv,
pdfPage = _ref.pdfPage,
linkService = _ref.linkService,
downloadManager = _ref.downloadManager,
_ref$imageResourcesPa = _ref.imageResourcesPath,
imageResourcesPath = _ref$imageResourcesPa === void 0 ? '' : _ref$imageResourcesPa,
_ref$renderInteractiv = _ref.renderInteractiveForms,
renderInteractiveForms = _ref$renderInteractiv === void 0 ? false : _ref$renderInteractiv,
_ref$l10n = _ref.l10n,
l10n = _ref$l10n === void 0 ? _ui_utils.NullL10n : _ref$l10n;
_classCallCheck(this, AnnotationLayerBuilder);
this.pageDiv = pageDiv;
this.pdfPage = pdfPage;
this.linkService = linkService;
this.downloadManager = downloadManager;
this.imageResourcesPath = imageResourcesPath;
this.renderInteractiveForms = renderInteractiveForms;
this.l10n = l10n;
this.div = null;
this._cancelled = false;
}
_createClass(AnnotationLayerBuilder, [{
key: "render",
value: function render(viewport) {
var _this = this;
var intent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'display';
this.pdfPage.getAnnotations({
intent: intent
}).then(function (annotations) {
if (_this._cancelled) {
return;
}
var parameters = {
viewport: viewport.clone({
dontFlip: true
}),
div: _this.div,
annotations: annotations,
page: _this.pdfPage,
imageResourcesPath: _this.imageResourcesPath,
renderInteractiveForms: _this.renderInteractiveForms,
linkService: _this.linkService,
downloadManager: _this.downloadManager
};
if (_this.div) {
_pdfjsLib.AnnotationLayer.update(parameters);
} else {
if (annotations.length === 0) {
return;
}
_this.div = document.createElement('div');
_this.div.className = 'annotationLayer';
_this.pageDiv.appendChild(_this.div);
parameters.div = _this.div;
_pdfjsLib.AnnotationLayer.render(parameters);
_this.l10n.translate(_this.div);
}
});
}
}, {
key: "cancel",
value: function cancel() {
this._cancelled = true;
}
}, {
key: "hide",
value: function hide() {
if (!this.div) {
return;
}
this.div.setAttribute('hidden', 'true');
}
}]);
return AnnotationLayerBuilder;
}();
exports.AnnotationLayerBuilder = AnnotationLayerBuilder;
var DefaultAnnotationLayerFactory =
/*#__PURE__*/
function () {
function DefaultAnnotationLayerFactory() {
_classCallCheck(this, DefaultAnnotationLayerFactory);
}
_createClass(DefaultAnnotationLayerFactory, [{
key: "createAnnotationLayerBuilder",
value: function createAnnotationLayerBuilder(pageDiv, pdfPage) {
var imageResourcesPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var renderInteractiveForms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var l10n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _ui_utils.NullL10n;
return new AnnotationLayerBuilder({
pageDiv: pageDiv,
pdfPage: pdfPage,
imageResourcesPath: imageResourcesPath,
renderInteractiveForms: renderInteractiveForms,
linkService: new _pdf_link_service.SimpleLinkService(),
l10n: l10n
});
}
}]);
return DefaultAnnotationLayerFactory;
}();
exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory;
/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFPageView = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(2));
var _ui_utils = __webpack_require__(6);
var _pdfjsLib = __webpack_require__(7);
var _pdf_rendering_queue = __webpack_require__(10);
var _viewer_compatibility = __webpack_require__(13);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }); }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216;
var PDFPageView =
/*#__PURE__*/
function () {
function PDFPageView(options) {
_classCallCheck(this, PDFPageView);
var container = options.container;
var defaultViewport = options.defaultViewport;
this.id = options.id;
this.renderingId = 'page' + this.id;
this.pdfPage = null;
this.pageLabel = null;
this.rotation = 0;
this.scale = options.scale || _ui_utils.DEFAULT_SCALE;
this.viewport = defaultViewport;
this.pdfPageRotate = defaultViewport.rotation;
this.hasRestrictedScaling = false;
this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;
this.imageResourcesPath = options.imageResourcesPath || '';
this.renderInteractiveForms = options.renderInteractiveForms || false;
this.useOnlyCssZoom = options.useOnlyCssZoom || false;
this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;
this.eventBus = options.eventBus || (0, _ui_utils.getGlobalEventBus)();
this.renderingQueue = options.renderingQueue;
this.textLayerFactory = options.textLayerFactory;
this.annotationLayerFactory = options.annotationLayerFactory;
this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
this.enableWebGL = options.enableWebGL || false;
this.l10n = options.l10n || _ui_utils.NullL10n;
this.paintTask = null;
this.paintedViewportMap = new WeakMap();
this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
this.resume = null;
this.error = null;
this.onBeforeDraw = null;
this.onAfterDraw = null;
this.annotationLayer = null;
this.textLayer = null;
this.zoomLayer = null;
var div = document.createElement('div');
div.className = 'page';
div.style.width = Math.floor(this.viewport.width) + 'px';
div.style.height = Math.floor(this.viewport.height) + 'px';
div.setAttribute('data-page-number', this.id);
this.div = div;
container.appendChild(div);
}
_createClass(PDFPageView, [{
key: "setPdfPage",
value: function setPdfPage(pdfPage) {
this.pdfPage = pdfPage;
this.pdfPageRotate = pdfPage.rotate;
var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
this.viewport = pdfPage.getViewport({
scale: this.scale * _ui_utils.CSS_UNITS,
rotation: totalRotation
});
this.stats = pdfPage.stats;
this.reset();
}
}, {
key: "destroy",
value: function destroy() {
this.reset();
if (this.pdfPage) {
this.pdfPage.cleanup();
}
}
}, {
key: "_resetZoomLayer",
value: function _resetZoomLayer() {
var removeFromDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!this.zoomLayer) {
return;
}
var zoomLayerCanvas = this.zoomLayer.firstChild;
this.paintedViewportMap.delete(zoomLayerCanvas);
zoomLayerCanvas.width = 0;
zoomLayerCanvas.height = 0;
if (removeFromDOM) {
this.zoomLayer.remove();
}
this.zoomLayer = null;
}
}, {
key: "reset",
value: function reset() {
var keepZoomLayer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var keepAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
this.cancelRendering(keepAnnotations);
var div = this.div;
div.style.width = Math.floor(this.viewport.width) + 'px';
div.style.height = Math.floor(this.viewport.height) + 'px';
var childNodes = div.childNodes;
var currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null;
var currentAnnotationNode = keepAnnotations && this.annotationLayer && this.annotationLayer.div || null;
for (var i = childNodes.length - 1; i >= 0; i--) {
var node = childNodes[i];
if (currentZoomLayerNode === node || currentAnnotationNode === node) {
continue;
}
div.removeChild(node);
}
div.removeAttribute('data-loaded');
if (currentAnnotationNode) {
this.annotationLayer.hide();
} else if (this.annotationLayer) {
this.annotationLayer.cancel();
this.annotationLayer = null;
}
if (!currentZoomLayerNode) {
if (this.canvas) {
this.paintedViewportMap.delete(this.canvas);
this.canvas.width = 0;
this.canvas.height = 0;
delete this.canvas;
}
this._resetZoomLayer();
}
if (this.svg) {
this.paintedViewportMap.delete(this.svg);
delete this.svg;
}
this.loadingIconDiv = document.createElement('div');
this.loadingIconDiv.className = 'loadingIcon';
div.appendChild(this.loadingIconDiv);
}
}, {
key: "update",
value: function update(scale, rotation) {
this.scale = scale || this.scale;
if (typeof rotation !== 'undefined') {
this.rotation = rotation;
}
var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
this.viewport = this.viewport.clone({
scale: this.scale * _ui_utils.CSS_UNITS,
rotation: totalRotation
});
if (this.svg) {
this.cssTransform(this.svg, true);
this.eventBus.dispatch('pagerendered', {
source: this,
pageNumber: this.id,
cssTransform: true
});
return;
}
var isScalingRestricted = false;
if (this.canvas && this.maxCanvasPixels > 0) {
var outputScale = this.outputScale;
if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) {
isScalingRestricted = true;
}
}
if (this.canvas) {
if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) {
this.cssTransform(this.canvas, true);
this.eventBus.dispatch('pagerendered', {
source: this,
pageNumber: this.id,
cssTransform: true
});
return;
}
if (!this.zoomLayer && !this.canvas.hasAttribute('hidden')) {
this.zoomLayer = this.canvas.parentNode;
this.zoomLayer.style.position = 'absolute';
}
}
if (this.zoomLayer) {
this.cssTransform(this.zoomLayer.firstChild);
}
this.reset(true, true);
}
}, {
key: "cancelRendering",
value: function cancelRendering() {
var keepAnnotations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var renderingState = this.renderingState;
if (this.paintTask) {
this.paintTask.cancel();
this.paintTask = null;
}
this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
this.resume = null;
if (this.textLayer) {
this.textLayer.cancel();
this.textLayer = null;
}
if (!keepAnnotations && this.annotationLayer) {
this.annotationLayer.cancel();
this.annotationLayer = null;
}
if (renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {
this.eventBus.dispatch('pagecancelled', {
source: this,
pageNumber: this.id,
renderingState: renderingState
});
}
}
}, {
key: "cssTransform",
value: function cssTransform(target) {
var redrawAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var width = this.viewport.width;
var height = this.viewport.height;
var div = this.div;
target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + 'px';
target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + 'px';
var relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation;
var absRotation = Math.abs(relativeRotation);
var scaleX = 1,
scaleY = 1;
if (absRotation === 90 || absRotation === 270) {
scaleX = height / width;
scaleY = width / height;
}
var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + 'scale(' + scaleX + ',' + scaleY + ')';
target.style.transform = cssTransform;
if (this.textLayer) {
var textLayerViewport = this.textLayer.viewport;
var textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation;
var textAbsRotation = Math.abs(textRelativeRotation);
var scale = width / textLayerViewport.width;
if (textAbsRotation === 90 || textAbsRotation === 270) {
scale = width / textLayerViewport.height;
}
var textLayerDiv = this.textLayer.textLayerDiv;
var transX, transY;
switch (textAbsRotation) {
case 0:
transX = transY = 0;
break;
case 90:
transX = 0;
transY = '-' + textLayerDiv.style.height;
break;
case 180:
transX = '-' + textLayerDiv.style.width;
transY = '-' + textLayerDiv.style.height;
break;
case 270:
transX = '-' + textLayerDiv.style.width;
transY = 0;
break;
default:
console.error('Bad rotation value.');
break;
}
textLayerDiv.style.transform = 'rotate(' + textAbsRotation + 'deg) ' + 'scale(' + scale + ', ' + scale + ') ' + 'translate(' + transX + ', ' + transY + ')';
textLayerDiv.style.transformOrigin = '0% 0%';
}
if (redrawAnnotations && this.annotationLayer) {
this.annotationLayer.render(this.viewport, 'display');
}
}
}, {
key: "getPagePoint",
value: function getPagePoint(x, y) {
return this.viewport.convertToPdfPoint(x, y);
}
}, {
key: "draw",
value: function draw() {
var _this = this;
if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {
console.error('Must be in new state before drawing');
this.reset();
}
if (!this.pdfPage) {
this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
return Promise.reject(new Error('Page is not loaded'));
}
this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;
var pdfPage = this.pdfPage;
var div = this.div;
var canvasWrapper = document.createElement('div');
canvasWrapper.style.width = div.style.width;
canvasWrapper.style.height = div.style.height;
canvasWrapper.classList.add('canvasWrapper');
if (this.annotationLayer && this.annotationLayer.div) {
div.insertBefore(canvasWrapper, this.annotationLayer.div);
} else {
div.appendChild(canvasWrapper);
}
var textLayer = null;
if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) {
var textLayerDiv = document.createElement('div');
textLayerDiv.className = 'textLayer';
textLayerDiv.style.width = canvasWrapper.style.width;
textLayerDiv.style.height = canvasWrapper.style.height;
if (this.annotationLayer && this.annotationLayer.div) {
div.insertBefore(textLayerDiv, this.annotationLayer.div);
} else {
div.appendChild(textLayerDiv);
}
textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE);
}
this.textLayer = textLayer;
var renderContinueCallback = null;
if (this.renderingQueue) {
renderContinueCallback = function renderContinueCallback(cont) {
if (!_this.renderingQueue.isHighestPriority(_this)) {
_this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED;
_this.resume = function () {
_this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;
cont();
};
return;
}
cont();
};
}
var finishPaintTask =
/*#__PURE__*/
function () {
var _ref = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee(error) {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (paintTask === _this.paintTask) {
_this.paintTask = null;
}
if (!(error instanceof _pdfjsLib.RenderingCancelledException)) {
_context.next = 4;
break;
}
_this.error = null;
return _context.abrupt("return");
case 4:
_this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
if (_this.loadingIconDiv) {
div.removeChild(_this.loadingIconDiv);
delete _this.loadingIconDiv;
}
_this._resetZoomLayer(true);
_this.error = error;
_this.stats = pdfPage.stats;
if (_this.onAfterDraw) {
_this.onAfterDraw();
}
_this.eventBus.dispatch('pagerendered', {
source: _this,
pageNumber: _this.id,
cssTransform: false
});
if (!error) {
_context.next = 13;
break;
}
throw error;
case 13:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function finishPaintTask(_x) {
return _ref.apply(this, arguments);
};
}();
var paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper);
paintTask.onRenderContinue = renderContinueCallback;
this.paintTask = paintTask;
var resultPromise = paintTask.promise.then(function () {
return finishPaintTask(null).then(function () {
if (textLayer) {
var readableStream = pdfPage.streamTextContent({
normalizeWhitespace: true
});
textLayer.setTextContentStream(readableStream);
textLayer.render();
}
});
}, function (reason) {
return finishPaintTask(reason);
});
if (this.annotationLayerFactory) {
if (!this.annotationLayer) {
this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, this.imageResourcesPath, this.renderInteractiveForms, this.l10n);
}
this.annotationLayer.render(this.viewport, 'display');
}
div.setAttribute('data-loaded', true);
if (this.onBeforeDraw) {
this.onBeforeDraw();
}
return resultPromise;
}
}, {
key: "paintOnCanvas",
value: function paintOnCanvas(canvasWrapper) {
var renderCapability = (0, _pdfjsLib.createPromiseCapability)();
var result = {
promise: renderCapability.promise,
onRenderContinue: function onRenderContinue(cont) {
cont();
},
cancel: function cancel() {
renderTask.cancel();
}
};
var viewport = this.viewport;
var canvas = document.createElement('canvas');
canvas.id = this.renderingId;
canvas.setAttribute('hidden', 'hidden');
var isCanvasHidden = true;
var showCanvas = function showCanvas() {
if (isCanvasHidden) {
canvas.removeAttribute('hidden');
isCanvasHidden = false;
}
};
canvasWrapper.appendChild(canvas);
this.canvas = canvas;
canvas.mozOpaque = true;
var ctx = canvas.getContext('2d', {
alpha: false
});
var outputScale = (0, _ui_utils.getOutputScale)(ctx);
this.outputScale = outputScale;
if (this.useOnlyCssZoom) {
var actualSizeViewport = viewport.clone({
scale: _ui_utils.CSS_UNITS
});
outputScale.sx *= actualSizeViewport.width / viewport.width;
outputScale.sy *= actualSizeViewport.height / viewport.height;
outputScale.scaled = true;
}
if (this.maxCanvasPixels > 0) {
var pixelsInViewport = viewport.width * viewport.height;
var maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);
if (outputScale.sx > maxScale || outputScale.sy > maxScale) {
outputScale.sx = maxScale;
outputScale.sy = maxScale;
outputScale.scaled = true;
this.hasRestrictedScaling = true;
} else {
this.hasRestrictedScaling = false;
}
}
var sfx = (0, _ui_utils.approximateFraction)(outputScale.sx);
var sfy = (0, _ui_utils.approximateFraction)(outputScale.sy);
canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]);
canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]);
canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + 'px';
canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + 'px';
this.paintedViewportMap.set(canvas, viewport);
var transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];
var renderContext = {
canvasContext: ctx,
transform: transform,
viewport: this.viewport,
enableWebGL: this.enableWebGL,
renderInteractiveForms: this.renderInteractiveForms
};
var renderTask = this.pdfPage.render(renderContext);
renderTask.onContinue = function (cont) {
showCanvas();
if (result.onRenderContinue) {
result.onRenderContinue(cont);
} else {
cont();
}
};
renderTask.promise.then(function () {
showCanvas();
renderCapability.resolve(undefined);
}, function (error) {
showCanvas();
renderCapability.reject(error);
});
return result;
}
}, {
key: "paintOnSvg",
value: function paintOnSvg(wrapper) {
var _this2 = this;
var cancelled = false;
var ensureNotCancelled = function ensureNotCancelled() {
if (cancelled) {
throw new _pdfjsLib.RenderingCancelledException('Rendering cancelled, page ' + _this2.id, 'svg');
}
};
var pdfPage = this.pdfPage;
var actualSizeViewport = this.viewport.clone({
scale: _ui_utils.CSS_UNITS
});
var promise = pdfPage.getOperatorList().then(function (opList) {
ensureNotCancelled();
var svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs);
return svgGfx.getSVG(opList, actualSizeViewport).then(function (svg) {
ensureNotCancelled();
_this2.svg = svg;
_this2.paintedViewportMap.set(svg, actualSizeViewport);
svg.style.width = wrapper.style.width;
svg.style.height = wrapper.style.height;
_this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
wrapper.appendChild(svg);
});
});
return {
promise: promise,
onRenderContinue: function onRenderContinue(cont) {
cont();
},
cancel: function cancel() {
cancelled = true;
}
};
}
}, {
key: "setPageLabel",
value: function setPageLabel(label) {
this.pageLabel = typeof label === 'string' ? label : null;
if (this.pageLabel !== null) {
this.div.setAttribute('data-page-label', this.pageLabel);
} else {
this.div.removeAttribute('data-page-label');
}
}
}, {
key: "width",
get: function get() {
return this.viewport.width;
}
}, {
key: "height",
get: function get() {
return this.viewport.height;
}
}]);
return PDFPageView;
}();
exports.PDFPageView = PDFPageView;
/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DefaultTextLayerFactory = exports.TextLayerBuilder = void 0;
var _ui_utils = __webpack_require__(6);
var _pdfjsLib = __webpack_require__(7);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var EXPAND_DIVS_TIMEOUT = 300;
var TextLayerBuilder =
/*#__PURE__*/
function () {
function TextLayerBuilder(_ref) {
var textLayerDiv = _ref.textLayerDiv,
eventBus = _ref.eventBus,
pageIndex = _ref.pageIndex,
viewport = _ref.viewport,
_ref$findController = _ref.findController,
findController = _ref$findController === void 0 ? null : _ref$findController,
_ref$enhanceTextSelec = _ref.enhanceTextSelection,
enhanceTextSelection = _ref$enhanceTextSelec === void 0 ? false : _ref$enhanceTextSelec;
_classCallCheck(this, TextLayerBuilder);
this.textLayerDiv = textLayerDiv;
this.eventBus = eventBus || (0, _ui_utils.getGlobalEventBus)();
this.textContent = null;
this.textContentItemsStr = [];
this.textContentStream = null;
this.renderingDone = false;
this.pageIdx = pageIndex;
this.pageNumber = this.pageIdx + 1;
this.matches = [];
this.viewport = viewport;
this.textDivs = [];
this.findController = findController;
this.textLayerRenderTask = null;
this.enhanceTextSelection = enhanceTextSelection;
this._boundEvents = Object.create(null);
this._bindEvents();
this._bindMouse();
}
_createClass(TextLayerBuilder, [{
key: "_finishRendering",
value: function _finishRendering() {
this.renderingDone = true;
if (!this.enhanceTextSelection) {
var endOfContent = document.createElement('div');
endOfContent.className = 'endOfContent';
this.textLayerDiv.appendChild(endOfContent);
}
this.eventBus.dispatch('textlayerrendered', {
source: this,
pageNumber: this.pageNumber,
numTextDivs: this.textDivs.length
});
}
}, {
key: "render",
value: function render() {
var _this = this;
var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
if (!(this.textContent || this.textContentStream) || this.renderingDone) {
return;
}
this.cancel();
this.textDivs = [];
var textLayerFrag = document.createDocumentFragment();
this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({
textContent: this.textContent,
textContentStream: this.textContentStream,
container: textLayerFrag,
viewport: this.viewport,
textDivs: this.textDivs,
textContentItemsStr: this.textContentItemsStr,
timeout: timeout,
enhanceTextSelection: this.enhanceTextSelection
});
this.textLayerRenderTask.promise.then(function () {
_this.textLayerDiv.appendChild(textLayerFrag);
_this._finishRendering();
_this._updateMatches();
}, function (reason) {});
}
}, {
key: "cancel",
value: function cancel() {
if (this.textLayerRenderTask) {
this.textLayerRenderTask.cancel();
this.textLayerRenderTask = null;
}
}
}, {
key: "setTextContentStream",
value: function setTextContentStream(readableStream) {
this.cancel();
this.textContentStream = readableStream;
}
}, {
key: "setTextContent",
value: function setTextContent(textContent) {
this.cancel();
this.textContent = textContent;
}
}, {
key: "_convertMatches",
value: function _convertMatches(matches, matchesLength) {
if (!matches) {
return [];
}
var findController = this.findController,
textContentItemsStr = this.textContentItemsStr;
var i = 0,
iIndex = 0;
var end = textContentItemsStr.length - 1;
var queryLen = findController.state.query.length;
var result = [];
for (var m = 0, mm = matches.length; m < mm; m++) {
var matchIdx = matches[m];
while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {
iIndex += textContentItemsStr[i].length;
i++;
}
if (i === textContentItemsStr.length) {
console.error('Could not find a matching mapping');
}
var match = {
begin: {
divIdx: i,
offset: matchIdx - iIndex
}
};
if (matchesLength) {
matchIdx += matchesLength[m];
} else {
matchIdx += queryLen;
}
while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {
iIndex += textContentItemsStr[i].length;
i++;
}
match.end = {
divIdx: i,
offset: matchIdx - iIndex
};
result.push(match);
}
return result;
}
}, {
key: "_renderMatches",
value: function _renderMatches(matches) {
if (matches.length === 0) {
return;
}
var findController = this.findController,
pageIdx = this.pageIdx,
textContentItemsStr = this.textContentItemsStr,
textDivs = this.textDivs;
var isSelectedPage = pageIdx === findController.selected.pageIdx;
var selectedMatchIdx = findController.selected.matchIdx;
var highlightAll = findController.state.highlightAll;
var prevEnd = null;
var infinity = {
divIdx: -1,
offset: undefined
};
function beginText(begin, className) {
var divIdx = begin.divIdx;
textDivs[divIdx].textContent = '';
appendTextToDiv(divIdx, 0, begin.offset, className);
}
function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
var div = textDivs[divIdx];
var content = textContentItemsStr[divIdx].substring(fromOffset, toOffset);
var node = document.createTextNode(content);
if (className) {
var span = document.createElement('span');
span.className = className;
span.appendChild(node);
div.appendChild(span);
return;
}
div.appendChild(node);
}
var i0 = selectedMatchIdx,
i1 = i0 + 1;
if (highlightAll) {
i0 = 0;
i1 = matches.length;
} else if (!isSelectedPage) {
return;
}
for (var i = i0; i < i1; i++) {
var match = matches[i];
var begin = match.begin;
var end = match.end;
var isSelected = isSelectedPage && i === selectedMatchIdx;
var highlightSuffix = isSelected ? ' selected' : '';
if (isSelected) {
findController.scrollMatchIntoView({
element: textDivs[begin.divIdx],
pageIndex: pageIdx,
matchIndex: selectedMatchIdx
});
}
if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
if (prevEnd !== null) {
appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
}
beginText(begin);
} else {
appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);
}
if (begin.divIdx === end.divIdx) {
appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix);
} else {
appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix);
for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {
textDivs[n0].className = 'highlight middle' + highlightSuffix;
}
beginText(end, 'highlight end' + highlightSuffix);
}
prevEnd = end;
}
if (prevEnd) {
appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
}
}
}, {
key: "_updateMatches",
value: function _updateMatches() {
if (!this.renderingDone) {
return;
}
var findController = this.findController,
matches = this.matches,
pageIdx = this.pageIdx,
textContentItemsStr = this.textContentItemsStr,
textDivs = this.textDivs;
var clearedUntilDivIdx = -1;
for (var i = 0, ii = matches.length; i < ii; i++) {
var match = matches[i];
var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);
for (var n = begin, end = match.end.divIdx; n <= end; n++) {
var div = textDivs[n];
div.textContent = textContentItemsStr[n];
div.className = '';
}
clearedUntilDivIdx = match.end.divIdx + 1;
}
if (!findController || !findController.highlightMatches) {
return;
}
var pageMatches = findController.pageMatches[pageIdx] || null;
var pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;
this.matches = this._convertMatches(pageMatches, pageMatchesLength);
this._renderMatches(this.matches);
}
}, {
key: "_bindEvents",
value: function _bindEvents() {
var _this2 = this;
var eventBus = this.eventBus,
_boundEvents = this._boundEvents;
_boundEvents.pageCancelled = function (evt) {
if (evt.pageNumber !== _this2.pageNumber) {
return;
}
if (_this2.textLayerRenderTask) {
console.error('TextLayerBuilder._bindEvents: `this.cancel()` should ' + 'have been called when the page was reset, or rendering cancelled.');
return;
}
for (var name in _boundEvents) {
eventBus.off(name.toLowerCase(), _boundEvents[name]);
delete _boundEvents[name];
}
};
_boundEvents.updateTextLayerMatches = function (evt) {
if (evt.pageIndex !== _this2.pageIdx && evt.pageIndex !== -1) {
return;
}
_this2._updateMatches();
};
eventBus.on('pagecancelled', _boundEvents.pageCancelled);
eventBus.on('updatetextlayermatches', _boundEvents.updateTextLayerMatches);
}
}, {
key: "_bindMouse",
value: function _bindMouse() {
var _this3 = this;
var div = this.textLayerDiv;
var expandDivsTimer = null;
div.addEventListener('mousedown', function (evt) {
if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {
_this3.textLayerRenderTask.expandTextDivs(true);
if (expandDivsTimer) {
clearTimeout(expandDivsTimer);
expandDivsTimer = null;
}
return;
}
var end = div.querySelector('.endOfContent');
if (!end) {
return;
}
var adjustTop = evt.target !== div;
adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none';
if (adjustTop) {
var divBounds = div.getBoundingClientRect();
var r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);
end.style.top = (r * 100).toFixed(2) + '%';
}
end.classList.add('active');
});
div.addEventListener('mouseup', function () {
if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {
expandDivsTimer = setTimeout(function () {
if (_this3.textLayerRenderTask) {
_this3.textLayerRenderTask.expandTextDivs(false);
}
expandDivsTimer = null;
}, EXPAND_DIVS_TIMEOUT);
return;
}
var end = div.querySelector('.endOfContent');
if (!end) {
return;
}
end.style.top = '';
end.classList.remove('active');
});
}
}]);
return TextLayerBuilder;
}();
exports.TextLayerBuilder = TextLayerBuilder;
var DefaultTextLayerFactory =
/*#__PURE__*/
function () {
function DefaultTextLayerFactory() {
_classCallCheck(this, DefaultTextLayerFactory);
}
_createClass(DefaultTextLayerFactory, [{
key: "createTextLayerBuilder",
value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {
var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
return new TextLayerBuilder({
textLayerDiv: textLayerDiv,
pageIndex: pageIndex,
viewport: viewport,
enhanceTextSelection: enhanceTextSelection
});
}
}]);
return DefaultTextLayerFactory;
}();
exports.DefaultTextLayerFactory = DefaultTextLayerFactory;
/***/ }),
/* 33 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SecondaryToolbar = void 0;
var _ui_utils = __webpack_require__(6);
var _pdf_cursor_tools = __webpack_require__(8);
var _pdf_single_page_viewer = __webpack_require__(34);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var SecondaryToolbar =
/*#__PURE__*/
function () {
function SecondaryToolbar(options, mainContainer, eventBus) {
var _this = this;
_classCallCheck(this, SecondaryToolbar);
this.toolbar = options.toolbar;
this.toggleButton = options.toggleButton;
this.toolbarButtonContainer = options.toolbarButtonContainer;
this.buttons = [{
element: options.presentationModeButton,
eventName: 'presentationmode',
close: true
}, {
element: options.openFileButton,
eventName: 'openfile',
close: true
}, {
element: options.printButton,
eventName: 'print',
close: true
}, {
element: options.downloadButton,
eventName: 'download',
close: true
}, {
element: options.viewBookmarkButton,
eventName: null,
close: true
}, {
element: options.firstPageButton,
eventName: 'firstpage',
close: true
}, {
element: options.lastPageButton,
eventName: 'lastpage',
close: true
}, {
element: options.pageRotateCwButton,
eventName: 'rotatecw',
close: false
}, {
element: options.pageRotateCcwButton,
eventName: 'rotateccw',
close: false
}, {
element: options.cursorSelectToolButton,
eventName: 'switchcursortool',
eventDetails: {
tool: _pdf_cursor_tools.CursorTool.SELECT
},
close: true
}, {
element: options.cursorHandToolButton,
eventName: 'switchcursortool',
eventDetails: {
tool: _pdf_cursor_tools.CursorTool.HAND
},
close: true
}, {
element: options.scrollVerticalButton,
eventName: 'switchscrollmode',
eventDetails: {
mode: _ui_utils.ScrollMode.VERTICAL
},
close: true
}, {
element: options.scrollHorizontalButton,
eventName: 'switchscrollmode',
eventDetails: {
mode: _ui_utils.ScrollMode.HORIZONTAL
},
close: true
}, {
element: options.scrollWrappedButton,
eventName: 'switchscrollmode',
eventDetails: {
mode: _ui_utils.ScrollMode.WRAPPED
},
close: true
}, {
element: options.spreadNoneButton,
eventName: 'switchspreadmode',
eventDetails: {
mode: _ui_utils.SpreadMode.NONE
},
close: true
}, {
element: options.spreadOddButton,
eventName: 'switchspreadmode',
eventDetails: {
mode: _ui_utils.SpreadMode.ODD
},
close: true
}, {
element: options.spreadEvenButton,
eventName: 'switchspreadmode',
eventDetails: {
mode: _ui_utils.SpreadMode.EVEN
},
close: true
}, {
element: options.documentPropertiesButton,
eventName: 'documentproperties',
close: true
}];
this.items = {
firstPage: options.firstPageButton,
lastPage: options.lastPageButton,
pageRotateCw: options.pageRotateCwButton,
pageRotateCcw: options.pageRotateCcwButton
};
this.mainContainer = mainContainer;
this.eventBus = eventBus;
this.opened = false;
this.containerHeight = null;
this.previousContainerHeight = null;
this.reset();
this._bindClickListeners();
this._bindCursorToolsListener(options);
this._bindScrollModeListener(options);
this._bindSpreadModeListener(options);
this.eventBus.on('resize', this._setMaxHeight.bind(this));
this.eventBus.on('baseviewerinit', function (evt) {
if (evt.source instanceof _pdf_single_page_viewer.PDFSinglePageViewer) {
_this.toolbarButtonContainer.classList.add('hiddenScrollModeButtons', 'hiddenSpreadModeButtons');
} else {
_this.toolbarButtonContainer.classList.remove('hiddenScrollModeButtons', 'hiddenSpreadModeButtons');
}
});
}
_createClass(SecondaryToolbar, [{
key: "setPageNumber",
value: function setPageNumber(pageNumber) {
this.pageNumber = pageNumber;
this._updateUIState();
}
}, {
key: "setPagesCount",
value: function setPagesCount(pagesCount) {
this.pagesCount = pagesCount;
this._updateUIState();
}
}, {
key: "reset",
value: function reset() {
this.pageNumber = 0;
this.pagesCount = 0;
this._updateUIState();
this.eventBus.dispatch('secondarytoolbarreset', {
source: this
});
}
}, {
key: "_updateUIState",
value: function _updateUIState() {
this.items.firstPage.disabled = this.pageNumber <= 1;
this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;
this.items.pageRotateCw.disabled = this.pagesCount === 0;
this.items.pageRotateCcw.disabled = this.pagesCount === 0;
}
}, {
key: "_bindClickListeners",
value: function _bindClickListeners() {
var _this2 = this;
this.toggleButton.addEventListener('click', this.toggle.bind(this));
var _loop = function _loop(button) {
var _this2$buttons$button = _this2.buttons[button],
element = _this2$buttons$button.element,
eventName = _this2$buttons$button.eventName,
close = _this2$buttons$button.close,
eventDetails = _this2$buttons$button.eventDetails;
element.addEventListener('click', function (evt) {
if (eventName !== null) {
var details = {
source: _this2
};
for (var property in eventDetails) {
details[property] = eventDetails[property];
}
_this2.eventBus.dispatch(eventName, details);
}
if (close) {
_this2.close();
}
});
};
for (var button in this.buttons) {
_loop(button);
}
}
}, {
key: "_bindCursorToolsListener",
value: function _bindCursorToolsListener(buttons) {
this.eventBus.on('cursortoolchanged', function (_ref) {
var tool = _ref.tool;
buttons.cursorSelectToolButton.classList.toggle('toggled', tool === _pdf_cursor_tools.CursorTool.SELECT);
buttons.cursorHandToolButton.classList.toggle('toggled', tool === _pdf_cursor_tools.CursorTool.HAND);
});
}
}, {
key: "_bindScrollModeListener",
value: function _bindScrollModeListener(buttons) {
var _this3 = this;
function scrollModeChanged(_ref2) {
var mode = _ref2.mode;
buttons.scrollVerticalButton.classList.toggle('toggled', mode === _ui_utils.ScrollMode.VERTICAL);
buttons.scrollHorizontalButton.classList.toggle('toggled', mode === _ui_utils.ScrollMode.HORIZONTAL);
buttons.scrollWrappedButton.classList.toggle('toggled', mode === _ui_utils.ScrollMode.WRAPPED);
var isScrollModeHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL;
buttons.spreadNoneButton.disabled = isScrollModeHorizontal;
buttons.spreadOddButton.disabled = isScrollModeHorizontal;
buttons.spreadEvenButton.disabled = isScrollModeHorizontal;
}
this.eventBus.on('scrollmodechanged', scrollModeChanged);
this.eventBus.on('secondarytoolbarreset', function (evt) {
if (evt.source === _this3) {
scrollModeChanged({
mode: _ui_utils.ScrollMode.VERTICAL
});
}
});
}
}, {
key: "_bindSpreadModeListener",
value: function _bindSpreadModeListener(buttons) {
var _this4 = this;
function spreadModeChanged(_ref3) {
var mode = _ref3.mode;
buttons.spreadNoneButton.classList.toggle('toggled', mode === _ui_utils.SpreadMode.NONE);
buttons.spreadOddButton.classList.toggle('toggled', mode === _ui_utils.SpreadMode.ODD);
buttons.spreadEvenButton.classList.toggle('toggled', mode === _ui_utils.SpreadMode.EVEN);
}
this.eventBus.on('spreadmodechanged', spreadModeChanged);
this.eventBus.on('secondarytoolbarreset', function (evt) {
if (evt.source === _this4) {
spreadModeChanged({
mode: _ui_utils.SpreadMode.NONE
});
}
});
}
}, {
key: "open",
value: function open() {
if (this.opened) {
return;
}
this.opened = true;
this._setMaxHeight();
this.toggleButton.classList.add('toggled');
this.toolbar.classList.remove('hidden');
}
}, {
key: "close",
value: function close() {
if (!this.opened) {
return;
}
this.opened = false;
this.toolbar.classList.add('hidden');
this.toggleButton.classList.remove('toggled');
}
}, {
key: "toggle",
value: function toggle() {
if (this.opened) {
this.close();
} else {
this.open();
}
}
}, {
key: "_setMaxHeight",
value: function _setMaxHeight() {
if (!this.opened) {
return;
}
this.containerHeight = this.mainContainer.clientHeight;
if (this.containerHeight === this.previousContainerHeight) {
return;
}
this.toolbarButtonContainer.setAttribute('style', 'max-height: ' + (this.containerHeight - _ui_utils.SCROLLBAR_PADDING) + 'px;');
this.previousContainerHeight = this.containerHeight;
}
}, {
key: "isOpen",
get: function get() {
return this.opened;
}
}]);
return SecondaryToolbar;
}();
exports.SecondaryToolbar = SecondaryToolbar;
/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFSinglePageViewer = void 0;
var _base_viewer = __webpack_require__(29);
var _pdfjsLib = __webpack_require__(7);
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
var PDFSinglePageViewer =
/*#__PURE__*/
function (_BaseViewer) {
_inherits(PDFSinglePageViewer, _BaseViewer);
function PDFSinglePageViewer(options) {
var _this;
_classCallCheck(this, PDFSinglePageViewer);
_this = _possibleConstructorReturn(this, _getPrototypeOf(PDFSinglePageViewer).call(this, options));
_this.eventBus.on('pagesinit', function (evt) {
_this._ensurePageViewVisible();
});
return _this;
}
_createClass(PDFSinglePageViewer, [{
key: "_resetView",
value: function _resetView() {
_get(_getPrototypeOf(PDFSinglePageViewer.prototype), "_resetView", this).call(this);
this._previousPageNumber = 1;
this._shadowViewer = document.createDocumentFragment();
this._updateScrollDown = null;
}
}, {
key: "_ensurePageViewVisible",
value: function _ensurePageViewVisible() {
var pageView = this._pages[this._currentPageNumber - 1];
var previousPageView = this._pages[this._previousPageNumber - 1];
var viewerNodes = this.viewer.childNodes;
switch (viewerNodes.length) {
case 0:
this.viewer.appendChild(pageView.div);
break;
case 1:
if (viewerNodes[0] !== previousPageView.div) {
throw new Error('_ensurePageViewVisible: Unexpected previously visible page.');
}
if (pageView === previousPageView) {
break;
}
this._shadowViewer.appendChild(previousPageView.div);
this.viewer.appendChild(pageView.div);
this.container.scrollTop = 0;
break;
default:
throw new Error('_ensurePageViewVisible: Only one page should be visible at a time.');
}
this._previousPageNumber = this._currentPageNumber;
}
}, {
key: "_scrollUpdate",
value: function _scrollUpdate() {
if (this._updateScrollDown) {
this._updateScrollDown();
}
_get(_getPrototypeOf(PDFSinglePageViewer.prototype), "_scrollUpdate", this).call(this);
}
}, {
key: "_scrollIntoView",
value: function _scrollIntoView(_ref) {
var _this2 = this;
var pageDiv = _ref.pageDiv,
_ref$pageSpot = _ref.pageSpot,
pageSpot = _ref$pageSpot === void 0 ? null : _ref$pageSpot,
_ref$pageNumber = _ref.pageNumber,
pageNumber = _ref$pageNumber === void 0 ? null : _ref$pageNumber;
if (pageNumber) {
this._setCurrentPageNumber(pageNumber);
}
var scrolledDown = this._currentPageNumber >= this._previousPageNumber;
this._ensurePageViewVisible();
this.update();
_get(_getPrototypeOf(PDFSinglePageViewer.prototype), "_scrollIntoView", this).call(this, {
pageDiv: pageDiv,
pageSpot: pageSpot,
pageNumber: pageNumber
});
this._updateScrollDown = function () {
_this2.scroll.down = scrolledDown;
_this2._updateScrollDown = null;
};
}
}, {
key: "_getVisiblePages",
value: function _getVisiblePages() {
return this._getCurrentVisiblePage();
}
}, {
key: "_updateHelper",
value: function _updateHelper(visiblePages) {}
}, {
key: "_updateScrollMode",
value: function _updateScrollMode() {}
}, {
key: "_updateSpreadMode",
value: function _updateSpreadMode() {}
}, {
key: "_setDocumentViewerElement",
get: function get() {
return (0, _pdfjsLib.shadow)(this, '_setDocumentViewerElement', this._shadowViewer);
}
}, {
key: "_isScrollModeHorizontal",
get: function get() {
return (0, _pdfjsLib.shadow)(this, '_isScrollModeHorizontal', false);
}
}]);
return PDFSinglePageViewer;
}(_base_viewer.BaseViewer);
exports.PDFSinglePageViewer = PDFSinglePageViewer;
/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Toolbar = void 0;
var _ui_utils = __webpack_require__(6);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading';
var SCALE_SELECT_CONTAINER_PADDING = 8;
var SCALE_SELECT_PADDING = 22;
var Toolbar =
/*#__PURE__*/
function () {
function Toolbar(options, eventBus) {
var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
_classCallCheck(this, Toolbar);
this.toolbar = options.container;
this.eventBus = eventBus;
this.l10n = l10n;
this.items = options;
this._wasLocalized = false;
this.reset();
this._bindListeners();
}
_createClass(Toolbar, [{
key: "setPageNumber",
value: function setPageNumber(pageNumber, pageLabel) {
this.pageNumber = pageNumber;
this.pageLabel = pageLabel;
this._updateUIState(false);
}
}, {
key: "setPagesCount",
value: function setPagesCount(pagesCount, hasPageLabels) {
this.pagesCount = pagesCount;
this.hasPageLabels = hasPageLabels;
this._updateUIState(true);
}
}, {
key: "setPageScale",
value: function setPageScale(pageScaleValue, pageScale) {
this.pageScaleValue = (pageScaleValue || pageScale).toString();
this.pageScale = pageScale;
this._updateUIState(false);
}
}, {
key: "reset",
value: function reset() {
this.pageNumber = 0;
this.pageLabel = null;
this.hasPageLabels = false;
this.pagesCount = 0;
this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
this.pageScale = _ui_utils.DEFAULT_SCALE;
this._updateUIState(true);
}
}, {
key: "_bindListeners",
value: function _bindListeners() {
var _this = this;
var eventBus = this.eventBus,
items = this.items;
var self = this;
items.previous.addEventListener('click', function () {
eventBus.dispatch('previouspage', {
source: self
});
});
items.next.addEventListener('click', function () {
eventBus.dispatch('nextpage', {
source: self
});
});
items.zoomIn.addEventListener('click', function () {
eventBus.dispatch('zoomin', {
source: self
});
});
items.zoomOut.addEventListener('click', function () {
eventBus.dispatch('zoomout', {
source: self
});
});
items.pageNumber.addEventListener('click', function () {
this.select();
});
items.pageNumber.addEventListener('change', function () {
eventBus.dispatch('pagenumberchanged', {
source: self,
value: this.value
});
});
items.scaleSelect.addEventListener('change', function () {
if (this.value === 'custom') {
return;
}
eventBus.dispatch('scalechanged', {
source: self,
value: this.value
});
});
items.presentationModeButton.addEventListener('click', function () {
eventBus.dispatch('presentationmode', {
source: self
});
});
items.openFile.addEventListener('click', function () {
eventBus.dispatch('openfile', {
source: self
});
});
items.print.addEventListener('click', function () {
eventBus.dispatch('print', {
source: self
});
});
items.download.addEventListener('click', function () {
eventBus.dispatch('download', {
source: self
});
});
items.scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler;
eventBus.on('localized', function () {
_this._localized();
});
}
}, {
key: "_localized",
value: function _localized() {
this._wasLocalized = true;
this._adjustScaleWidth();
this._updateUIState(true);
}
}, {
key: "_updateUIState",
value: function _updateUIState() {
var resetNumPages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!this._wasLocalized) {
return;
}
var pageNumber = this.pageNumber,
pagesCount = this.pagesCount,
pageScaleValue = this.pageScaleValue,
pageScale = this.pageScale,
items = this.items;
if (resetNumPages) {
if (this.hasPageLabels) {
items.pageNumber.type = 'text';
} else {
items.pageNumber.type = 'number';
this.l10n.get('of_pages', {
pagesCount: pagesCount
}, 'of {{pagesCount}}').then(function (msg) {
items.numPages.textContent = msg;
});
}
items.pageNumber.max = pagesCount;
}
if (this.hasPageLabels) {
items.pageNumber.value = this.pageLabel;
this.l10n.get('page_of_pages', {
pageNumber: pageNumber,
pagesCount: pagesCount
}, '({{pageNumber}} of {{pagesCount}})').then(function (msg) {
items.numPages.textContent = msg;
});
} else {
items.pageNumber.value = pageNumber;
}
items.previous.disabled = pageNumber <= 1;
items.next.disabled = pageNumber >= pagesCount;
items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE;
items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE;
var customScale = Math.round(pageScale * 10000) / 100;
this.l10n.get('page_scale_percent', {
scale: customScale
}, '{{scale}}%').then(function (msg) {
var options = items.scaleSelect.options;
var predefinedValueFound = false;
for (var i = 0, ii = options.length; i < ii; i++) {
var option = options[i];
if (option.value !== pageScaleValue) {
option.selected = false;
continue;
}
option.selected = true;
predefinedValueFound = true;
}
if (!predefinedValueFound) {
items.customScaleOption.textContent = msg;
items.customScaleOption.selected = true;
}
});
}
}, {
key: "updateLoadingIndicatorState",
value: function updateLoadingIndicatorState() {
var loading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var pageNumberInput = this.items.pageNumber;
pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);
}
}, {
key: "_adjustScaleWidth",
value: function _adjustScaleWidth() {
var container = this.items.scaleSelectContainer;
var select = this.items.scaleSelect;
_ui_utils.animationStarted.then(function () {
if (container.clientWidth === 0) {
container.setAttribute('style', 'display: inherit;');
}
if (container.clientWidth > 0) {
select.setAttribute('style', 'min-width: inherit;');
var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING;
select.setAttribute('style', 'min-width: ' + (width + SCALE_SELECT_PADDING) + 'px;');
container.setAttribute('style', 'min-width: ' + width + 'px; ' + 'max-width: ' + width + 'px;');
}
});
}
}]);
return Toolbar;
}();
exports.Toolbar = Toolbar;
/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ViewHistory = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(2));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }); }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;
var ViewHistory =
/*#__PURE__*/
function () {
function ViewHistory(fingerprint) {
var _this = this;
var cacheSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_VIEW_HISTORY_CACHE_SIZE;
_classCallCheck(this, ViewHistory);
this.fingerprint = fingerprint;
this.cacheSize = cacheSize;
this._initializedPromise = this._readFromStorage().then(function (databaseStr) {
var database = JSON.parse(databaseStr || '{}');
if (!('files' in database)) {
database.files = [];
} else {
while (database.files.length >= _this.cacheSize) {
database.files.shift();
}
}
var index = -1;
for (var i = 0, length = database.files.length; i < length; i++) {
var branch = database.files[i];
if (branch.fingerprint === _this.fingerprint) {
index = i;
break;
}
}
if (index === -1) {
index = database.files.push({
fingerprint: _this.fingerprint
}) - 1;
}
_this.file = database.files[index];
_this.database = database;
});
}
_createClass(ViewHistory, [{
key: "_writeToStorage",
value: function () {
var _writeToStorage2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var databaseStr;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
databaseStr = JSON.stringify(this.database);
localStorage.setItem('pdfjs.history', databaseStr);
case 2:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function _writeToStorage() {
return _writeToStorage2.apply(this, arguments);
}
return _writeToStorage;
}()
}, {
key: "_readFromStorage",
value: function () {
var _readFromStorage2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2() {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", localStorage.getItem('pdfjs.history'));
case 1:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function _readFromStorage() {
return _readFromStorage2.apply(this, arguments);
}
return _readFromStorage;
}()
}, {
key: "set",
value: function () {
var _set = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee3(name, val) {
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return this._initializedPromise;
case 2:
this.file[name] = val;
return _context3.abrupt("return", this._writeToStorage());
case 4:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function set(_x, _x2) {
return _set.apply(this, arguments);
}
return set;
}()
}, {
key: "setMultiple",
value: function () {
var _setMultiple = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee4(properties) {
var name;
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return this._initializedPromise;
case 2:
for (name in properties) {
this.file[name] = properties[name];
}
return _context4.abrupt("return", this._writeToStorage());
case 4:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function setMultiple(_x3) {
return _setMultiple.apply(this, arguments);
}
return setMultiple;
}()
}, {
key: "get",
value: function () {
var _get = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee5(name, defaultValue) {
var val;
return _regenerator.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 2;
return this._initializedPromise;
case 2:
val = this.file[name];
return _context5.abrupt("return", val !== undefined ? val : defaultValue);
case 4:
case "end":
return _context5.stop();
}
}
}, _callee5, this);
}));
function get(_x4, _x5) {
return _get.apply(this, arguments);
}
return get;
}()
}, {
key: "getMultiple",
value: function () {
var _getMultiple = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee6(properties) {
var values, name, val;
return _regenerator.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return this._initializedPromise;
case 2:
values = Object.create(null);
for (name in properties) {
val = this.file[name];
values[name] = val !== undefined ? val : properties[name];
}
return _context6.abrupt("return", values);
case 5:
case "end":
return _context6.stop();
}
}
}, _callee6, this);
}));
function getMultiple(_x6) {
return _getMultiple.apply(this, arguments);
}
return getMultiple;
}()
}]);
return ViewHistory;
}();
exports.ViewHistory = ViewHistory;
/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.GenericCom = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(2));
var _app = __webpack_require__(1);
var _preferences = __webpack_require__(38);
var _download_manager = __webpack_require__(39);
var _genericl10n = __webpack_require__(40);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
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); }); }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
;
var GenericCom = {};
exports.GenericCom = GenericCom;
var GenericPreferences =
/*#__PURE__*/
function (_BasePreferences) {
_inherits(GenericPreferences, _BasePreferences);
function GenericPreferences() {
_classCallCheck(this, GenericPreferences);
return _possibleConstructorReturn(this, _getPrototypeOf(GenericPreferences).apply(this, arguments));
}
_createClass(GenericPreferences, [{
key: "_writeToStorage",
value: function () {
var _writeToStorage2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee(prefObj) {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj));
case 1:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function _writeToStorage(_x) {
return _writeToStorage2.apply(this, arguments);
}
return _writeToStorage;
}()
}, {
key: "_readFromStorage",
value: function () {
var _readFromStorage2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(prefObj) {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", JSON.parse(localStorage.getItem('pdfjs.preferences')));
case 1:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function _readFromStorage(_x2) {
return _readFromStorage2.apply(this, arguments);
}
return _readFromStorage;
}()
}]);
return GenericPreferences;
}(_preferences.BasePreferences);
var GenericExternalServices = Object.create(_app.DefaultExternalServices);
GenericExternalServices.createDownloadManager = function (options) {
return new _download_manager.DownloadManager(options);
};
GenericExternalServices.createPreferences = function () {
return new GenericPreferences();
};
GenericExternalServices.createL10n = function (_ref) {
var _ref$locale = _ref.locale,
locale = _ref$locale === void 0 ? 'en-US' : _ref$locale;
return new _genericl10n.GenericL10n(locale);
};
_app.PDFViewerApplication.externalServices = GenericExternalServices;
/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BasePreferences = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(2));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }); }; }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var defaultPreferences = null;
function getDefaultPreferences() {
if (!defaultPreferences) {
defaultPreferences = Promise.resolve({
"viewOnLoad": 0,
"defaultZoomValue": "",
"sidebarViewOnLoad": -1,
"cursorToolOnLoad": 0,
"enableWebGL": false,
"eventBusDispatchToDOM": false,
"pdfBugEnabled": false,
"disableRange": false,
"disableStream": false,
"disableAutoFetch": false,
"disableFontFace": false,
"textLayerMode": 1,
"useOnlyCssZoom": false,
"externalLinkTarget": 0,
"renderer": "canvas",
"renderInteractiveForms": false,
"enablePrintAutoRotate": false,
"disablePageLabels": false,
"historyUpdateUrl": false,
"scrollModeOnLoad": -1,
"spreadModeOnLoad": -1
});
}
return defaultPreferences;
}
var BasePreferences =
/*#__PURE__*/
function () {
function BasePreferences() {
var _this = this;
_classCallCheck(this, BasePreferences);
if (this.constructor === BasePreferences) {
throw new Error('Cannot initialize BasePreferences.');
}
this.prefs = null;
this._initializedPromise = getDefaultPreferences().then(function (defaults) {
Object.defineProperty(_this, 'defaults', {
value: Object.freeze(defaults),
writable: false,
enumerable: true,
configurable: false
});
_this.prefs = Object.assign(Object.create(null), defaults);
return _this._readFromStorage(defaults);
}).then(function (prefs) {
if (!prefs) {
return;
}
for (var name in prefs) {
var defaultValue = _this.defaults[name],
prefValue = prefs[name];
if (defaultValue === undefined || _typeof(prefValue) !== _typeof(defaultValue)) {
continue;
}
_this.prefs[name] = prefValue;
}
});
}
_createClass(BasePreferences, [{
key: "_writeToStorage",
value: function () {
var _writeToStorage2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee(prefObj) {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
throw new Error('Not implemented: _writeToStorage');
case 1:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function _writeToStorage(_x) {
return _writeToStorage2.apply(this, arguments);
}
return _writeToStorage;
}()
}, {
key: "_readFromStorage",
value: function () {
var _readFromStorage2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(prefObj) {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
throw new Error('Not implemented: _readFromStorage');
case 1:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function _readFromStorage(_x2) {
return _readFromStorage2.apply(this, arguments);
}
return _readFromStorage;
}()
}, {
key: "reset",
value: function () {
var _reset = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee3() {
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return this._initializedPromise;
case 2:
this.prefs = Object.assign(Object.create(null), this.defaults);
return _context3.abrupt("return", this._writeToStorage(this.defaults));
case 4:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function reset() {
return _reset.apply(this, arguments);
}
return reset;
}()
}, {
key: "set",
value: function () {
var _set = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee4(name, value) {
var defaultValue, valueType, defaultType;
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return this._initializedPromise;
case 2:
defaultValue = this.defaults[name];
if (!(defaultValue === undefined)) {
_context4.next = 7;
break;
}
throw new Error("Set preference: \"".concat(name, "\" is undefined."));
case 7:
if (!(value === undefined)) {
_context4.next = 9;
break;
}
throw new Error('Set preference: no value is specified.');
case 9:
valueType = _typeof(value);
defaultType = _typeof(defaultValue);
if (!(valueType !== defaultType)) {
_context4.next = 19;
break;
}
if (!(valueType === 'number' && defaultType === 'string')) {
_context4.next = 16;
break;
}
value = value.toString();
_context4.next = 17;
break;
case 16:
throw new Error("Set preference: \"".concat(value, "\" is a ").concat(valueType, ", ") + "expected a ".concat(defaultType, "."));
case 17:
_context4.next = 21;
break;
case 19:
if (!(valueType === 'number' && !Number.isInteger(value))) {
_context4.next = 21;
break;
}
throw new Error("Set preference: \"".concat(value, "\" must be an integer."));
case 21:
this.prefs[name] = value;
return _context4.abrupt("return", this._writeToStorage(this.prefs));
case 23:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function set(_x3, _x4) {
return _set.apply(this, arguments);
}
return set;
}()
}, {
key: "get",
value: function () {
var _get = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee5(name) {
var defaultValue, prefValue;
return _regenerator.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 2;
return this._initializedPromise;
case 2:
defaultValue = this.defaults[name];
if (!(defaultValue === undefined)) {
_context5.next = 7;
break;
}
throw new Error("Get preference: \"".concat(name, "\" is undefined."));
case 7:
prefValue = this.prefs[name];
if (!(prefValue !== undefined)) {
_context5.next = 10;
break;
}
return _context5.abrupt("return", prefValue);
case 10:
return _context5.abrupt("return", defaultValue);
case 11:
case "end":
return _context5.stop();
}
}
}, _callee5, this);
}));
function get(_x5) {
return _get.apply(this, arguments);
}
return get;
}()
}, {
key: "getAll",
value: function () {
var _getAll = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee6() {
return _regenerator.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return this._initializedPromise;
case 2:
return _context6.abrupt("return", Object.assign(Object.create(null), this.defaults, this.prefs));
case 3:
case "end":
return _context6.stop();
}
}
}, _callee6, this);
}));
function getAll() {
return _getAll.apply(this, arguments);
}
return getAll;
}()
}]);
return BasePreferences;
}();
exports.BasePreferences = BasePreferences;
/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DownloadManager = void 0;
var _pdfjsLib = __webpack_require__(7);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
;
var DISABLE_CREATE_OBJECT_URL = _pdfjsLib.apiCompatibilityParams.disableCreateObjectURL || false;
function _download(blobUrl, filename) {
var a = document.createElement('a');
if (!a.click) {
throw new Error('DownloadManager: "a.click()" is not supported.');
}
a.href = blobUrl;
a.target = '_parent';
if ('download' in a) {
a.download = filename;
}
(document.body || document.documentElement).appendChild(a);
a.click();
a.remove();
}
var DownloadManager =
/*#__PURE__*/
function () {
function DownloadManager(_ref) {
var _ref$disableCreateObj = _ref.disableCreateObjectURL,
disableCreateObjectURL = _ref$disableCreateObj === void 0 ? DISABLE_CREATE_OBJECT_URL : _ref$disableCreateObj;
_classCallCheck(this, DownloadManager);
this.disableCreateObjectURL = disableCreateObjectURL;
}
_createClass(DownloadManager, [{
key: "downloadUrl",
value: function downloadUrl(url, filename) {
if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, 'http://example.com')) {
return;
}
_download(url + '#pdfjs.action=download', filename);
}
}, {
key: "downloadData",
value: function downloadData(data, filename, contentType) {
if (navigator.msSaveBlob) {
return navigator.msSaveBlob(new Blob([data], {
type: contentType
}), filename);
}
var blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, this.disableCreateObjectURL);
_download(blobUrl, filename);
}
}, {
key: "download",
value: function download(blob, url, filename) {
if (navigator.msSaveBlob) {
if (!navigator.msSaveBlob(blob, filename)) {
this.downloadUrl(url, filename);
}
return;
}
if (this.disableCreateObjectURL) {
this.downloadUrl(url, filename);
return;
}
var blobUrl = _pdfjsLib.URL.createObjectURL(blob);
_download(blobUrl, filename);
}
}]);
return DownloadManager;
}();
exports.DownloadManager = DownloadManager;
/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.GenericL10n = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(2));
__webpack_require__(41);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }); }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
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, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var webL10n = document.webL10n;
var GenericL10n =
/*#__PURE__*/
function () {
function GenericL10n(lang) {
_classCallCheck(this, GenericL10n);
this._lang = lang;
this._ready = new Promise(function (resolve, reject) {
webL10n.setLanguage(lang, function () {
resolve(webL10n);
});
});
}
_createClass(GenericL10n, [{
key: "getLanguage",
value: function () {
var _getLanguage = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var l10n;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this._ready;
case 2:
l10n = _context.sent;
return _context.abrupt("return", l10n.getLanguage());
case 4:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function getLanguage() {
return _getLanguage.apply(this, arguments);
}
return getLanguage;
}()
}, {
key: "getDirection",
value: function () {
var _getDirection = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2() {
var l10n;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return this._ready;
case 2:
l10n = _context2.sent;
return _context2.abrupt("return", l10n.getDirection());
case 4:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function getDirection() {
return _getDirection.apply(this, arguments);
}
return getDirection;
}()
}, {
key: "get",
value: function () {
var _get = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee3(property, args, fallback) {
var l10n;
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return this._ready;
case 2:
l10n = _context3.sent;
return _context3.abrupt("return", l10n.get(property, args, fallback));
case 4:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function get(_x, _x2, _x3) {
return _get.apply(this, arguments);
}
return get;
}()
}, {
key: "translate",
value: function () {
var _translate = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee4(element) {
var l10n;
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return this._ready;
case 2:
l10n = _context4.sent;
return _context4.abrupt("return", l10n.translate(element));
case 4:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function translate(_x4) {
return _translate.apply(this, arguments);
}
return translate;
}()
}]);
return GenericL10n;
}();
exports.GenericL10n = GenericL10n;
/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
document.webL10n = function (window, document, undefined) {
var gL10nData = {};
var gTextData = '';
var gTextProp = 'textContent';
var gLanguage = '';
var gMacros = {};
var gReadyState = 'loading';
var gAsyncResourceLoading = true;
function getL10nResourceLinks() {
return document.querySelectorAll('link[type="application/l10n"]');
}
function getL10nDictionary() {
var script = document.querySelector('script[type="application/l10n"]');
return script ? JSON.parse(script.innerHTML) : null;
}
function getTranslatableChildren(element) {
return element ? element.querySelectorAll('*[data-l10n-id]') : [];
}
function getL10nAttributes(element) {
if (!element) return {};
var l10nId = element.getAttribute('data-l10n-id');
var l10nArgs = element.getAttribute('data-l10n-args');
var args = {};
if (l10nArgs) {
try {
args = JSON.parse(l10nArgs);
} catch (e) {
console.warn('could not parse arguments for #' + l10nId);
}
}
return {
id: l10nId,
args: args
};
}
function fireL10nReadyEvent(lang) {
var evtObject = document.createEvent('Event');
evtObject.initEvent('localized', true, false);
evtObject.language = lang;
document.dispatchEvent(evtObject);
}
function xhrLoadText(url, onSuccess, onFailure) {
onSuccess = onSuccess || function _onSuccess(data) {};
onFailure = onFailure || function _onFailure() {};
var xhr = new XMLHttpRequest();
xhr.open('GET', url, gAsyncResourceLoading);
if (xhr.overrideMimeType) {
xhr.overrideMimeType('text/plain; charset=utf-8');
}
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200 || xhr.status === 0) {
onSuccess(xhr.responseText);
} else {
onFailure();
}
}
};
xhr.onerror = onFailure;
xhr.ontimeout = onFailure;
try {
xhr.send(null);
} catch (e) {
onFailure();
}
}
function parseResource(href, lang, successCallback, failureCallback) {
var baseURL = href.replace(/[^\/]*$/, '') || './';
function evalString(text) {
if (text.lastIndexOf('\\') < 0) return text;
return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'");
}
function parseProperties(text, parsedPropertiesCallback) {
var dictionary = {};
var reBlank = /^\s*|\s*$/;
var reComment = /^\s*#|^\s*$/;
var reSection = /^\s*\[(.*)\]\s*$/;
var reImport = /^\s*@import\s+url\((.*)\)\s*$/i;
var reSplit = /^([^=\s]*)\s*=\s*(.+)$/;
function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {
var entries = rawText.replace(reBlank, '').split(/[\r\n]+/);
var currentLang = '*';
var genericLang = lang.split('-', 1)[0];
var skipLang = false;
var match = '';
function nextEntry() {
while (true) {
if (!entries.length) {
parsedRawLinesCallback();
return;
}
var line = entries.shift();
if (reComment.test(line)) continue;
if (extendedSyntax) {
match = reSection.exec(line);
if (match) {
currentLang = match[1].toLowerCase();
skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang;
continue;
} else if (skipLang) {
continue;
}
match = reImport.exec(line);
if (match) {
loadImport(baseURL + match[1], nextEntry);
return;
}
}
var tmp = line.match(reSplit);
if (tmp && tmp.length == 3) {
dictionary[tmp[1]] = evalString(tmp[2]);
}
}
}
nextEntry();
}
function loadImport(url, callback) {
xhrLoadText(url, function (content) {
parseRawLines(content, false, callback);
}, function () {
console.warn(url + ' not found.');
callback();
});
}
parseRawLines(text, true, function () {
parsedPropertiesCallback(dictionary);
});
}
xhrLoadText(href, function (response) {
gTextData += response;
parseProperties(response, function (data) {
for (var key in data) {
var id,
prop,
index = key.lastIndexOf('.');
if (index > 0) {
id = key.substring(0, index);
prop = key.substring(index + 1);
} else {
id = key;
prop = gTextProp;
}
if (!gL10nData[id]) {
gL10nData[id] = {};
}
gL10nData[id][prop] = data[key];
}
if (successCallback) {
successCallback();
}
});
}, failureCallback);
}
function loadLocale(lang, callback) {
if (lang) {
lang = lang.toLowerCase();
}
callback = callback || function _callback() {};
clear();
gLanguage = lang;
var langLinks = getL10nResourceLinks();
var langCount = langLinks.length;
if (langCount === 0) {
var dict = getL10nDictionary();
if (dict && dict.locales && dict.default_locale) {
console.log('using the embedded JSON directory, early way out');
gL10nData = dict.locales[lang];
if (!gL10nData) {
var defaultLocale = dict.default_locale.toLowerCase();
for (var anyCaseLang in dict.locales) {
anyCaseLang = anyCaseLang.toLowerCase();
if (anyCaseLang === lang) {
gL10nData = dict.locales[lang];
break;
} else if (anyCaseLang === defaultLocale) {
gL10nData = dict.locales[defaultLocale];
}
}
}
callback();
} else {
console.log('no resource to load, early way out');
}
fireL10nReadyEvent(lang);
gReadyState = 'complete';
return;
}
var onResourceLoaded = null;
var gResourceCount = 0;
onResourceLoaded = function onResourceLoaded() {
gResourceCount++;
if (gResourceCount >= langCount) {
callback();
fireL10nReadyEvent(lang);
gReadyState = 'complete';
}
};
function L10nResourceLink(link) {
var href = link.href;
this.load = function (lang, callback) {
parseResource(href, lang, callback, function () {
console.warn(href + ' not found.');
console.warn('"' + lang + '" resource not found');
gLanguage = '';
callback();
});
};
}
for (var i = 0; i < langCount; i++) {
var resource = new L10nResourceLink(langLinks[i]);
resource.load(lang, onResourceLoaded);
}
}
function clear() {
gL10nData = {};
gTextData = '';
gLanguage = '';
}
function getPluralRules(lang) {
var locales2rules = {
'af': 3,
'ak': 4,
'am': 4,
'ar': 1,
'asa': 3,
'az': 0,
'be': 11,
'bem': 3,
'bez': 3,
'bg': 3,
'bh': 4,
'bm': 0,
'bn': 3,
'bo': 0,
'br': 20,
'brx': 3,
'bs': 11,
'ca': 3,
'cgg': 3,
'chr': 3,
'cs': 12,
'cy': 17,
'da': 3,
'de': 3,
'dv': 3,
'dz': 0,
'ee': 3,
'el': 3,
'en': 3,
'eo': 3,
'es': 3,
'et': 3,
'eu': 3,
'fa': 0,
'ff': 5,
'fi': 3,
'fil': 4,
'fo': 3,
'fr': 5,
'fur': 3,
'fy': 3,
'ga': 8,
'gd': 24,
'gl': 3,
'gsw': 3,
'gu': 3,
'guw': 4,
'gv': 23,
'ha': 3,
'haw': 3,
'he': 2,
'hi': 4,
'hr': 11,
'hu': 0,
'id': 0,
'ig': 0,
'ii': 0,
'is': 3,
'it': 3,
'iu': 7,
'ja': 0,
'jmc': 3,
'jv': 0,
'ka': 0,
'kab': 5,
'kaj': 3,
'kcg': 3,
'kde': 0,
'kea': 0,
'kk': 3,
'kl': 3,
'km': 0,
'kn': 0,
'ko': 0,
'ksb': 3,
'ksh': 21,
'ku': 3,
'kw': 7,
'lag': 18,
'lb': 3,
'lg': 3,
'ln': 4,
'lo': 0,
'lt': 10,
'lv': 6,
'mas': 3,
'mg': 4,
'mk': 16,
'ml': 3,
'mn': 3,
'mo': 9,
'mr': 3,
'ms': 0,
'mt': 15,
'my': 0,
'nah': 3,
'naq': 7,
'nb': 3,
'nd': 3,
'ne': 3,
'nl': 3,
'nn': 3,
'no': 3,
'nr': 3,
'nso': 4,
'ny': 3,
'nyn': 3,
'om': 3,
'or': 3,
'pa': 3,
'pap': 3,
'pl': 13,
'ps': 3,
'pt': 3,
'rm': 3,
'ro': 9,
'rof': 3,
'ru': 11,
'rwk': 3,
'sah': 0,
'saq': 3,
'se': 7,
'seh': 3,
'ses': 0,
'sg': 0,
'sh': 11,
'shi': 19,
'sk': 12,
'sl': 14,
'sma': 7,
'smi': 7,
'smj': 7,
'smn': 7,
'sms': 7,
'sn': 3,
'so': 3,
'sq': 3,
'sr': 11,
'ss': 3,
'ssy': 3,
'st': 3,
'sv': 3,
'sw': 3,
'syr': 3,
'ta': 3,
'te': 3,
'teo': 3,
'th': 0,
'ti': 4,
'tig': 3,
'tk': 3,
'tl': 4,
'tn': 3,
'to': 0,
'tr': 0,
'ts': 3,
'tzm': 22,
'uk': 11,
'ur': 3,
've': 3,
'vi': 0,
'vun': 3,
'wa': 4,
'wae': 3,
'wo': 0,
'xh': 3,
'xog': 3,
'yo': 0,
'zh': 0,
'zu': 3
};
function isIn(n, list) {
return list.indexOf(n) !== -1;
}
function isBetween(n, start, end) {
return start <= n && n <= end;
}
var pluralRules = {
'0': function _(n) {
return 'other';
},
'1': function _(n) {
if (isBetween(n % 100, 3, 10)) return 'few';
if (n === 0) return 'zero';
if (isBetween(n % 100, 11, 99)) return 'many';
if (n == 2) return 'two';
if (n == 1) return 'one';
return 'other';
},
'2': function _(n) {
if (n !== 0 && n % 10 === 0) return 'many';
if (n == 2) return 'two';
if (n == 1) return 'one';
return 'other';
},
'3': function _(n) {
if (n == 1) return 'one';
return 'other';
},
'4': function _(n) {
if (isBetween(n, 0, 1)) return 'one';
return 'other';
},
'5': function _(n) {
if (isBetween(n, 0, 2) && n != 2) return 'one';
return 'other';
},
'6': function _(n) {
if (n === 0) return 'zero';
if (n % 10 == 1 && n % 100 != 11) return 'one';
return 'other';
},
'7': function _(n) {
if (n == 2) return 'two';
if (n == 1) return 'one';
return 'other';
},
'8': function _(n) {
if (isBetween(n, 3, 6)) return 'few';
if (isBetween(n, 7, 10)) return 'many';
if (n == 2) return 'two';
if (n == 1) return 'one';
return 'other';
},
'9': function _(n) {
if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few';
if (n == 1) return 'one';
return 'other';
},
'10': function _(n) {
if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few';
if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one';
return 'other';
},
'11': function _(n) {
if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';
if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many';
if (n % 10 == 1 && n % 100 != 11) return 'one';
return 'other';
},
'12': function _(n) {
if (isBetween(n, 2, 4)) return 'few';
if (n == 1) return 'one';
return 'other';
},
'13': function _(n) {
if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';
if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many';
if (n == 1) return 'one';
return 'other';
},
'14': function _(n) {
if (isBetween(n % 100, 3, 4)) return 'few';
if (n % 100 == 2) return 'two';
if (n % 100 == 1) return 'one';
return 'other';
},
'15': function _(n) {
if (n === 0 || isBetween(n % 100, 2, 10)) return 'few';
if (isBetween(n % 100, 11, 19)) return 'many';
if (n == 1) return 'one';
return 'other';
},
'16': function _(n) {
if (n % 10 == 1 && n != 11) return 'one';
return 'other';
},
'17': function _(n) {
if (n == 3) return 'few';
if (n === 0) return 'zero';
if (n == 6) return 'many';
if (n == 2) return 'two';
if (n == 1) return 'one';
return 'other';
},
'18': function _(n) {
if (n === 0) return 'zero';
if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one';
return 'other';
},
'19': function _(n) {
if (isBetween(n, 2, 10)) return 'few';
if (isBetween(n, 0, 1)) return 'one';
return 'other';
},
'20': function _(n) {
if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few';
if (n % 1000000 === 0 && n !== 0) return 'many';
if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two';
if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one';
return 'other';
},
'21': function _(n) {
if (n === 0) return 'zero';
if (n == 1) return 'one';
return 'other';
},
'22': function _(n) {
if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one';
return 'other';
},
'23': function _(n) {
if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one';
return 'other';
},
'24': function _(n) {
if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few';
if (isIn(n, [2, 12])) return 'two';
if (isIn(n, [1, 11])) return 'one';
return 'other';
}
};
var index = locales2rules[lang.replace(/-.*$/, '')];
if (!(index in pluralRules)) {
console.warn('plural form unknown for [' + lang + ']');
return function () {
return 'other';
};
}
return pluralRules[index];
}
gMacros.plural = function (str, param, key, prop) {
var n = parseFloat(param);
if (isNaN(n)) return str;
if (prop != gTextProp) return str;
if (!gMacros._pluralRules) {
gMacros._pluralRules = getPluralRules(gLanguage);
}
var index = '[' + gMacros._pluralRules(n) + ']';
if (n === 0 && key + '[zero]' in gL10nData) {
str = gL10nData[key + '[zero]'][prop];
} else if (n == 1 && key + '[one]' in gL10nData) {
str = gL10nData[key + '[one]'][prop];
} else if (n == 2 && key + '[two]' in gL10nData) {
str = gL10nData[key + '[two]'][prop];
} else if (key + index in gL10nData) {
str = gL10nData[key + index][prop];
} else if (key + '[other]' in gL10nData) {
str = gL10nData[key + '[other]'][prop];
}
return str;
};
function getL10nData(key, args, fallback) {
var data = gL10nData[key];
if (!data) {
console.warn('#' + key + ' is undefined.');
if (!fallback) {
return null;
}
data = fallback;
}
var rv = {};
for (var prop in data) {
var str = data[prop];
str = substIndexes(str, args, key, prop);
str = substArguments(str, args, key);
rv[prop] = str;
}
return rv;
}
function substIndexes(str, args, key, prop) {
var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/;
var reMatch = reIndex.exec(str);
if (!reMatch || !reMatch.length) return str;
var macroName = reMatch[1];
var paramName = reMatch[2];
var param;
if (args && paramName in args) {
param = args[paramName];
} else if (paramName in gL10nData) {
param = gL10nData[paramName];
}
if (macroName in gMacros) {
var macro = gMacros[macroName];
str = macro(str, param, key, prop);
}
return str;
}
function substArguments(str, args, key) {
var reArgs = /\{\{\s*(.+?)\s*\}\}/g;
return str.replace(reArgs, function (matched_text, arg) {
if (args && arg in args) {
return args[arg];
}
if (arg in gL10nData) {
return gL10nData[arg];
}
console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');
return matched_text;
});
}
function translateElement(element) {
var l10n = getL10nAttributes(element);
if (!l10n.id) return;
var data = getL10nData(l10n.id, l10n.args);
if (!data) {
console.warn('#' + l10n.id + ' is undefined.');
return;
}
if (data[gTextProp]) {
if (getChildElementCount(element) === 0) {
element[gTextProp] = data[gTextProp];
} else {
var children = element.childNodes;
var found = false;
for (var i = 0, l = children.length; i < l; i++) {
if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) {
if (found) {
children[i].nodeValue = '';
} else {
children[i].nodeValue = data[gTextProp];
found = true;
}
}
}
if (!found) {
var textNode = document.createTextNode(data[gTextProp]);
element.insertBefore(textNode, element.firstChild);
}
}
delete data[gTextProp];
}
for (var k in data) {
element[k] = data[k];
}
}
function getChildElementCount(element) {
if (element.children) {
return element.children.length;
}
if (typeof element.childElementCount !== 'undefined') {
return element.childElementCount;
}
var count = 0;
for (var i = 0; i < element.childNodes.length; i++) {
count += element.nodeType === 1 ? 1 : 0;
}
return count;
}
function translateFragment(element) {
element = element || document.documentElement;
var children = getTranslatableChildren(element);
var elementCount = children.length;
for (var i = 0; i < elementCount; i++) {
translateElement(children[i]);
}
translateElement(element);
}
return {
get: function get(key, args, fallbackString) {
var index = key.lastIndexOf('.');
var prop = gTextProp;
if (index > 0) {
prop = key.substring(index + 1);
key = key.substring(0, index);
}
var fallback;
if (fallbackString) {
fallback = {};
fallback[prop] = fallbackString;
}
var data = getL10nData(key, args, fallback);
if (data && prop in data) {
return data[prop];
}
return '{{' + key + '}}';
},
getData: function getData() {
return gL10nData;
},
getText: function getText() {
return gTextData;
},
getLanguage: function getLanguage() {
return gLanguage;
},
setLanguage: function setLanguage(lang, callback) {
loadLocale(lang, function () {
if (callback) callback();
});
},
getDirection: function getDirection() {
var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];
var shortCode = gLanguage.split('-', 1)[0];
return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr';
},
translate: translateFragment,
getReadyState: function getReadyState() {
return gReadyState;
},
ready: function ready(callback) {
if (!callback) {
return;
} else if (gReadyState == 'complete' || gReadyState == 'interactive') {
window.setTimeout(function () {
callback();
});
} else if (document.addEventListener) {
document.addEventListener('localized', function once() {
document.removeEventListener('localized', once);
callback();
});
}
}
};
}(window, document);
/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFPrintService = PDFPrintService;
var _ui_utils = __webpack_require__(6);
var _app = __webpack_require__(1);
var _pdfjsLib = __webpack_require__(7);
var activeService = null;
var overlayManager = null;
function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {
var scratchCanvas = activeService.scratchCanvas;
var PRINT_RESOLUTION = 150;
var PRINT_UNITS = PRINT_RESOLUTION / 72.0;
scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);
scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);
var width = Math.floor(size.width * _ui_utils.CSS_UNITS) + 'px';
var height = Math.floor(size.height * _ui_utils.CSS_UNITS) + 'px';
var ctx = scratchCanvas.getContext('2d');
ctx.save();
ctx.fillStyle = 'rgb(255, 255, 255)';
ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);
ctx.restore();
return pdfDocument.getPage(pageNumber).then(function (pdfPage) {
var renderContext = {
canvasContext: ctx,
transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],
viewport: pdfPage.getViewport({
scale: 1,
rotation: size.rotation
}),
intent: 'print'
};
return pdfPage.render(renderContext).promise;
}).then(function () {
return {
width: width,
height: height
};
});
}
function PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n) {
this.pdfDocument = pdfDocument;
this.pagesOverview = pagesOverview;
this.printContainer = printContainer;
this.l10n = l10n || _ui_utils.NullL10n;
this.disableCreateObjectURL = pdfDocument.loadingParams['disableCreateObjectURL'];
this.currentPage = -1;
this.scratchCanvas = document.createElement('canvas');
}
PDFPrintService.prototype = {
layout: function layout() {
this.throwIfInactive();
var body = document.querySelector('body');
body.setAttribute('data-pdfjsprinting', true);
var hasEqualPageSizes = this.pagesOverview.every(function (size) {
return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height;
}, this);
if (!hasEqualPageSizes) {
console.warn('Not all pages have the same size. The printed ' + 'result may be incorrect!');
}
this.pageStyleSheet = document.createElement('style');
var pageSize = this.pagesOverview[0];
this.pageStyleSheet.textContent = '@supports ((size:A4) and (size:1pt 1pt)) {' + '@page { size: ' + pageSize.width + 'pt ' + pageSize.height + 'pt;}' + '}';
body.appendChild(this.pageStyleSheet);
},
destroy: function destroy() {
if (activeService !== this) {
return;
}
this.printContainer.textContent = '';
if (this.pageStyleSheet) {
this.pageStyleSheet.remove();
this.pageStyleSheet = null;
}
this.scratchCanvas.width = this.scratchCanvas.height = 0;
this.scratchCanvas = null;
activeService = null;
ensureOverlay().then(function () {
if (overlayManager.active !== 'printServiceOverlay') {
return;
}
overlayManager.close('printServiceOverlay');
});
},
renderPages: function renderPages() {
var _this = this;
var pageCount = this.pagesOverview.length;
var renderNextPage = function renderNextPage(resolve, reject) {
_this.throwIfInactive();
if (++_this.currentPage >= pageCount) {
renderProgress(pageCount, pageCount, _this.l10n);
resolve();
return;
}
var index = _this.currentPage;
renderProgress(index, pageCount, _this.l10n);
renderPage(_this, _this.pdfDocument, index + 1, _this.pagesOverview[index]).then(_this.useRenderedPage.bind(_this)).then(function () {
renderNextPage(resolve, reject);
}, reject);
};
return new Promise(renderNextPage);
},
useRenderedPage: function useRenderedPage(printItem) {
this.throwIfInactive();
var img = document.createElement('img');
img.style.width = printItem.width;
img.style.height = printItem.height;
var scratchCanvas = this.scratchCanvas;
if ('toBlob' in scratchCanvas && !this.disableCreateObjectURL) {
scratchCanvas.toBlob(function (blob) {
img.src = _pdfjsLib.URL.createObjectURL(blob);
});
} else {
img.src = scratchCanvas.toDataURL();
}
var wrapper = document.createElement('div');
wrapper.appendChild(img);
this.printContainer.appendChild(wrapper);
return new Promise(function (resolve, reject) {
img.onload = resolve;
img.onerror = reject;
});
},
performPrint: function performPrint() {
var _this2 = this;
this.throwIfInactive();
return new Promise(function (resolve) {
setTimeout(function () {
if (!_this2.active) {
resolve();
return;
}
print.call(window);
setTimeout(resolve, 20);
}, 0);
});
},
get active() {
return this === activeService;
},
throwIfInactive: function throwIfInactive() {
if (!this.active) {
throw new Error('This print request was cancelled or completed.');
}
}
};
var print = window.print;
window.print = function print() {
if (activeService) {
console.warn('Ignored window.print() because of a pending print job.');
return;
}
ensureOverlay().then(function () {
if (activeService) {
overlayManager.open('printServiceOverlay');
}
});
try {
dispatchEvent('beforeprint');
} finally {
if (!activeService) {
console.error('Expected print service to be initialized.');
ensureOverlay().then(function () {
if (overlayManager.active === 'printServiceOverlay') {
overlayManager.close('printServiceOverlay');
}
});
return;
}
var activeServiceOnEntry = activeService;
activeService.renderPages().then(function () {
return activeServiceOnEntry.performPrint();
}).catch(function () {}).then(function () {
if (activeServiceOnEntry.active) {
abort();
}
});
}
};
function dispatchEvent(eventType) {
var event = document.createEvent('CustomEvent');
event.initCustomEvent(eventType, false, false, 'custom');
window.dispatchEvent(event);
}
function abort() {
if (activeService) {
activeService.destroy();
dispatchEvent('afterprint');
}
}
function renderProgress(index, total, l10n) {
var progressContainer = document.getElementById('printServiceOverlay');
var progress = Math.round(100 * index / total);
var progressBar = progressContainer.querySelector('progress');
var progressPerc = progressContainer.querySelector('.relative-progress');
progressBar.value = progress;
l10n.get('print_progress_percent', {
progress: progress
}, progress + '%').then(function (msg) {
progressPerc.textContent = msg;
});
}
var hasAttachEvent = !!document.attachEvent;
window.addEventListener('keydown', function (event) {
if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) {
window.print();
if (hasAttachEvent) {
return;
}
event.preventDefault();
if (event.stopImmediatePropagation) {
event.stopImmediatePropagation();
} else {
event.stopPropagation();
}
return;
}
}, true);
if (hasAttachEvent) {
document.attachEvent('onkeydown', function (event) {
event = event || window.event;
if (event.keyCode === 80 && event.ctrlKey) {
event.keyCode = 0;
return false;
}
});
}
if ('onbeforeprint' in window) {
var stopPropagationIfNeeded = function stopPropagationIfNeeded(event) {
if (event.detail !== 'custom' && event.stopImmediatePropagation) {
event.stopImmediatePropagation();
}
};
window.addEventListener('beforeprint', stopPropagationIfNeeded);
window.addEventListener('afterprint', stopPropagationIfNeeded);
}
var overlayPromise;
function ensureOverlay() {
if (!overlayPromise) {
overlayManager = _app.PDFViewerApplication.overlayManager;
if (!overlayManager) {
throw new Error('The overlay manager has not yet been initialized.');
}
overlayPromise = overlayManager.register('printServiceOverlay', document.getElementById('printServiceOverlay'), abort, true);
document.getElementById('printCancel').onclick = abort;
}
return overlayPromise;
}
_app.PDFPrintServiceFactory.instance = {
supportsPrinting: true,
createPrintService: function createPrintService(pdfDocument, pagesOverview, printContainer, l10n) {
if (activeService) {
throw new Error('The print service is created and active.');
}
activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n);
return activeService;
}
};
/***/ })
/******/ ]);
//# sourceMappingURL=viewer.js.map