-
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
-
15559
-
15560
-
15561
-
15562
-
15563
-
15564
-
15565
-
15566
-
15567
-
15568
-
15569
-
15570
-
15571
-
15572
-
15573
-
15574
-
15575
-
15576
-
15577
-
15578
-
15579
-
15580
-
15581
-
15582
-
15583
-
15584
-
15585
-
15586
-
15587
-
15588
-
15589
-
15590
-
15591
-
15592
-
15593
-
15594
-
15595
-
15596
-
15597
-
15598
-
15599
-
15600
-
15601
-
15602
-
15603
-
15604
-
15605
-
15606
-
15607
-
15608
-
15609
-
15610
-
15611
-
15612
-
15613
-
15614
-
15615
-
15616
-
15617
-
15618
-
15619
-
15620
-
15621
-
15622
-
15623
-
15624
-
15625
-
15626
-
15627
-
15628
-
15629
-
15630
-
15631
-
15632
-
15633
-
15634
-
15635
-
15636
-
15637
-
15638
-
15639
-
15640
-
15641
-
15642
-
15643
-
15644
-
15645
-
15646
-
15647
-
15648
-
15649
-
15650
-
15651
-
15652
-
15653
-
15654
-
15655
-
15656
-
15657
-
15658
-
15659
-
15660
-
15661
-
15662
-
15663
-
15664
-
15665
-
15666
-
15667
-
15668
-
15669
-
15670
-
15671
-
15672
-
15673
-
15674
-
15675
-
15676
-
15677
-
15678
-
15679
-
15680
-
15681
-
15682
-
15683
-
15684
-
15685
-
15686
-
15687
-
15688
-
15689
-
15690
-
15691
-
15692
-
15693
-
15694
-
15695
-
15696
-
15697
-
15698
-
15699
-
15700
-
15701
-
15702
-
15703
-
15704
-
15705
-
15706
-
15707
-
15708
-
15709
-
15710
-
15711
-
15712
-
15713
-
15714
-
15715
-
15716
-
15717
-
15718
-
15719
-
15720
-
15721
-
15722
-
15723
-
15724
-
15725
-
15726
-
15727
-
15728
-
15729
-
15730
-
15731
-
15732
-
15733
-
15734
-
15735
-
15736
-
15737
-
15738
-
15739
-
15740
-
15741
-
15742
-
15743
-
15744
-
15745
-
15746
-
15747
-
15748
-
15749
-
15750
-
15751
-
15752
-
15753
-
15754
-
15755
-
15756
-
15757
-
15758
-
15759
-
15760
-
15761
-
15762
-
15763
-
15764
-
15765
-
15766
-
15767
-
15768
-
15769
-
15770
-
15771
-
15772
-
15773
-
15774
-
15775
-
15776
-
15777
-
15778
-
15779
-
15780
-
15781
-
15782
-
15783
-
15784
-
15785
-
15786
-
15787
-
15788
-
15789
-
15790
-
15791
-
15792
-
15793
-
15794
-
15795
-
15796
-
15797
-
15798
-
15799
-
15800
-
15801
-
15802
-
15803
-
15804
-
15805
-
15806
-
15807
-
15808
-
15809
-
15810
-
15811
-
15812
-
15813
-
15814
-
15815
-
15816
-
15817
-
15818
-
15819
-
15820
-
15821
-
15822
-
15823
-
15824
-
15825
-
15826
-
15827
-
15828
-
15829
-
15830
-
15831
-
15832
-
15833
-
15834
-
15835
-
15836
-
15837
-
15838
-
15839
-
15840
-
15841
-
15842
-
15843
-
15844
-
15845
-
15846
-
15847
-
15848
-
15849
-
15850
-
15851
-
15852
-
15853
-
15854
-
15855
-
15856
-
15857
-
15858
-
15859
-
15860
-
15861
-
15862
-
15863
-
15864
-
15865
-
15866
-
15867
-
15868
-
15869
-
15870
-
15871
-
15872
-
15873
-
15874
-
15875
-
15876
-
15877
-
15878
-
15879
-
15880
-
15881
-
15882
-
15883
-
15884
-
15885
-
15886
-
15887
-
15888
-
15889
-
15890
-
15891
-
15892
-
15893
-
15894
-
15895
-
15896
-
15897
-
15898
-
15899
-
15900
-
15901
-
15902
-
15903
-
15904
-
15905
-
15906
-
15907
-
15908
-
15909
-
15910
-
15911
-
15912
-
15913
-
15914
-
15915
-
15916
-
15917
-
15918
-
15919
-
15920
-
15921
-
15922
-
15923
-
15924
-
15925
-
15926
-
15927
-
15928
-
15929
-
15930
-
15931
-
15932
-
15933
-
15934
-
15935
-
15936
-
15937
-
15938
-
15939
-
15940
-
15941
-
15942
-
15943
-
15944
-
15945
-
15946
-
15947
-
15948
-
15949
-
15950
-
15951
-
15952
-
15953
-
15954
-
15955
-
15956
-
15957
-
15958
-
15959
-
15960
-
15961
-
15962
-
15963
-
15964
-
15965
-
15966
-
15967
-
15968
-
15969
-
15970
-
15971
-
15972
-
15973
-
15974
-
15975
-
15976
-
15977
-
15978
-
15979
-
15980
-
15981
-
15982
-
15983
-
15984
-
15985
-
15986
-
15987
-
15988
-
15989
-
15990
-
15991
-
15992
-
15993
-
15994
-
15995
-
15996
-
15997
-
15998
-
15999
-
16000
-
16001
-
16002
-
16003
-
16004
-
16005
-
16006
-
16007
-
16008
-
16009
-
16010
-
16011
-
16012
-
16013
-
16014
-
16015
-
16016
-
16017
-
16018
-
16019
-
16020
-
16021
-
16022
-
16023
-
16024
-
16025
-
16026
-
16027
-
16028
-
16029
-
16030
-
16031
-
16032
-
16033
-
16034
-
16035
-
16036
-
16037
-
16038
-
16039
-
16040
-
16041
-
16042
-
16043
-
16044
-
16045
-
16046
-
16047
-
16048
-
16049
-
16050
-
16051
-
16052
-
16053
-
16054
-
16055
-
16056
-
16057
-
16058
-
16059
-
16060
-
16061
-
16062
-
16063
-
16064
-
16065
-
16066
-
16067
-
16068
-
16069
-
16070
-
16071
-
16072
-
16073
-
16074
-
16075
-
16076
-
16077
-
16078
-
16079
-
16080
-
16081
-
16082
-
16083
-
16084
-
16085
-
16086
-
16087
-
16088
-
16089
-
16090
-
16091
-
16092
-
16093
-
16094
-
16095
-
16096
-
16097
-
16098
-
16099
-
16100
-
16101
-
16102
-
16103
-
16104
-
16105
-
16106
-
16107
-
16108
-
16109
-
16110
-
16111
-
16112
-
16113
-
16114
-
16115
-
16116
-
16117
-
16118
-
16119
-
16120
-
16121
-
16122
-
16123
-
16124
-
16125
-
16126
-
16127
-
16128
-
16129
-
16130
-
16131
-
16132
-
16133
-
16134
-
16135
-
16136
-
16137
-
16138
-
16139
-
16140
-
16141
-
16142
-
16143
-
16144
-
16145
-
16146
-
16147
-
16148
-
16149
-
16150
-
16151
-
16152
-
16153
-
16154
-
16155
-
16156
-
16157
-
16158
-
16159
-
16160
-
16161
-
16162
-
16163
-
16164
-
16165
-
16166
-
16167
-
16168
-
16169
-
16170
-
16171
-
16172
-
16173
-
16174
-
16175
-
16176
-
16177
-
16178
-
16179
-
16180
-
16181
-
16182
-
16183
-
16184
-
16185
-
16186
-
16187
-
16188
-
16189
-
16190
-
16191
-
16192
-
16193
-
16194
-
16195
-
16196
-
16197
-
16198
-
16199
-
16200
-
16201
-
16202
-
16203
-
16204
-
16205
-
16206
-
16207
-
16208
-
16209
-
16210
-
16211
-
16212
-
16213
-
16214
-
16215
-
16216
-
16217
-
16218
-
16219
-
16220
-
16221
-
16222
-
16223
-
16224
-
16225
-
16226
-
16227
-
16228
-
16229
-
16230
-
16231
-
16232
-
16233
-
16234
-
16235
-
16236
-
16237
-
16238
-
16239
-
16240
-
16241
-
16242
-
16243
-
16244
-
16245
-
16246
-
16247
-
16248
-
16249
-
16250
-
16251
-
16252
-
16253
-
16254
-
16255
-
16256
-
16257
-
16258
-
16259
-
16260
-
16261
-
16262
-
16263
-
16264
-
16265
-
16266
-
16267
-
16268
-
16269
-
16270
-
16271
-
16272
-
16273
-
16274
-
16275
-
16276
-
16277
-
16278
-
16279
-
16280
-
16281
-
16282
-
16283
-
16284
-
16285
-
16286
-
16287
-
16288
-
16289
-
16290
-
16291
-
16292
-
16293
-
16294
-
16295
-
16296
-
16297
-
16298
-
16299
-
16300
-
16301
-
16302
-
16303
-
16304
-
16305
-
16306
-
16307
-
16308
-
16309
-
16310
-
16311
-
16312
-
16313
-
16314
-
16315
-
16316
-
16317
-
16318
-
16319
-
16320
-
16321
-
16322
-
16323
-
16324
-
16325
-
16326
-
16327
-
16328
-
16329
-
16330
-
16331
-
16332
-
16333
-
16334
-
16335
-
16336
-
16337
-
16338
-
16339
-
16340
-
16341
-
16342
-
16343
-
16344
-
16345
-
16346
-
16347
-
16348
-
16349
-
16350
-
16351
-
16352
-
16353
-
16354
-
16355
-
16356
-
16357
-
16358
-
16359
-
16360
-
16361
-
16362
-
16363
-
16364
-
16365
-
16366
-
16367
-
16368
-
16369
-
16370
-
16371
-
16372
-
16373
-
16374
-
16375
-
16376
-
16377
-
16378
-
16379
-
16380
-
16381
-
16382
-
16383
-
16384
-
16385
-
16386
-
16387
-
16388
-
16389
-
16390
-
16391
-
16392
-
16393
-
16394
-
16395
-
16396
-
16397
-
16398
-
16399
-
16400
-
16401
-
16402
-
16403
-
16404
-
16405
-
16406
-
16407
-
16408
-
16409
-
16410
-
16411
-
16412
-
16413
-
16414
-
16415
-
16416
-
16417
-
16418
-
16419
-
16420
-
16421
-
16422
-
16423
-
16424
-
16425
-
16426
-
16427
-
16428
-
16429
-
16430
-
16431
-
16432
-
16433
-
16434
-
16435
-
16436
-
16437
-
16438
-
16439
-
16440
-
16441
-
16442
-
16443
-
16444
-
16445
-
16446
-
16447
-
16448
-
16449
-
16450
-
16451
-
16452
-
16453
-
16454
-
16455
-
16456
-
16457
-
16458
-
16459
-
16460
-
16461
-
16462
-
16463
-
16464
-
16465
-
16466
-
16467
-
16468
-
16469
-
16470
-
16471
-
16472
-
16473
-
16474
-
16475
-
16476
-
16477
-
16478
-
16479
-
16480
-
16481
-
16482
-
16483
-
16484
-
16485
-
16486
-
16487
-
16488
-
16489
-
16490
-
16491
-
16492
-
16493
-
16494
-
16495
-
16496
-
16497
-
16498
-
16499
-
16500
-
16501
-
16502
-
16503
-
16504
-
16505
-
16506
-
16507
-
16508
-
16509
-
16510
-
16511
-
16512
-
16513
-
16514
-
16515
-
16516
-
16517
-
16518
-
16519
-
16520
-
16521
-
16522
-
16523
-
16524
-
16525
-
16526
-
16527
-
16528
-
16529
-
16530
-
16531
-
16532
-
16533
-
16534
-
16535
-
16536
-
16537
-
16538
-
16539
-
16540
-
16541
-
16542
-
16543
-
16544
-
16545
-
16546
-
16547
-
16548
-
16549
-
16550
-
16551
-
16552
-
16553
-
16554
-
16555
-
16556
-
16557
-
16558
-
16559
-
16560
-
16561
-
16562
-
16563
-
16564
-
16565
-
16566
-
16567
-
16568
-
16569
-
16570
-
16571
-
16572
-
16573
-
16574
-
16575
-
16576
-
16577
-
16578
-
16579
-
16580
-
16581
-
16582
-
16583
-
16584
-
16585
-
16586
-
16587
-
16588
-
16589
-
16590
-
16591
-
16592
-
16593
-
16594
-
16595
-
16596
-
16597
-
16598
-
16599
-
16600
-
16601
-
16602
-
16603
-
16604
-
16605
-
16606
-
16607
-
16608
-
16609
-
16610
-
16611
-
16612
-
16613
-
16614
-
16615
-
16616
-
16617
-
16618
-
16619
-
16620
-
16621
-
16622
-
16623
-
16624
-
16625
-
16626
-
16627
-
16628
-
16629
-
16630
-
16631
-
16632
-
16633
-
16634
-
16635
-
16636
-
16637
-
16638
-
16639
-
16640
-
16641
-
16642
-
16643
-
16644
-
16645
-
16646
-
16647
-
16648
-
16649
-
16650
-
16651
-
16652
-
16653
-
16654
-
16655
-
16656
-
16657
-
16658
-
16659
-
16660
-
16661
-
16662
-
16663
-
16664
-
16665
-
16666
-
16667
-
16668
-
16669
-
16670
-
16671
-
16672
-
16673
-
16674
-
16675
-
16676
-
16677
-
16678
-
16679
-
16680
-
16681
-
16682
-
16683
-
16684
-
16685
-
16686
-
16687
-
16688
-
16689
-
16690
-
16691
-
16692
-
16693
-
16694
-
16695
-
16696
-
16697
-
16698
-
16699
-
16700
-
16701
-
16702
-
16703
-
16704
-
16705
-
16706
-
16707
-
16708
-
16709
-
16710
-
16711
-
16712
-
16713
-
16714
-
16715
-
16716
-
16717
-
16718
-
16719
-
16720
-
16721
-
16722
-
16723
-
16724
-
16725
-
16726
-
16727
-
16728
-
16729
-
16730
-
16731
-
16732
-
16733
-
16734
-
16735
-
16736
-
16737
-
16738
-
16739
-
16740
-
16741
-
16742
-
16743
-
16744
-
16745
-
16746
-
16747
-
16748
-
16749
-
16750
-
16751
-
16752
-
16753
-
16754
-
16755
-
16756
-
16757
-
16758
-
16759
-
16760
-
16761
-
16762
-
16763
-
16764
-
16765
-
16766
-
16767
-
16768
-
16769
-
16770
-
16771
-
16772
-
16773
-
16774
-
16775
-
16776
-
16777
-
16778
-
16779
-
16780
-
16781
-
16782
-
16783
-
16784
-
16785
-
16786
-
16787
-
16788
-
16789
-
16790
-
16791
-
16792
-
16793
-
16794
-
16795
-
16796
-
16797
-
16798
-
16799
-
16800
-
16801
-
16802
-
16803
-
16804
-
16805
-
16806
-
16807
-
16808
-
16809
-
16810
-
16811
-
16812
-
16813
-
16814
-
16815
-
16816
-
16817
-
16818
-
16819
-
16820
-
16821
-
16822
-
16823
-
16824
-
16825
-
16826
-
16827
-
16828
-
16829
-
16830
-
16831
-
16832
-
16833
-
16834
-
16835
-
16836
-
16837
-
16838
-
16839
-
16840
-
16841
-
16842
-
16843
-
16844
-
16845
-
16846
-
16847
-
16848
-
16849
-
16850
-
16851
-
16852
-
16853
-
16854
-
16855
-
16856
-
16857
-
16858
-
16859
-
16860
-
16861
-
16862
-
16863
-
16864
-
16865
-
16866
-
16867
-
16868
-
16869
-
16870
-
16871
-
16872
-
16873
-
16874
-
16875
-
16876
-
16877
-
16878
-
16879
-
16880
-
16881
-
16882
-
16883
-
16884
-
16885
-
16886
-
16887
-
16888
-
16889
-
16890
-
16891
-
16892
-
16893
-
16894
-
16895
-
16896
-
16897
-
16898
-
16899
-
16900
-
16901
-
16902
-
16903
-
16904
-
16905
-
16906
-
16907
-
16908
-
16909
-
16910
-
16911
-
16912
-
16913
-
16914
-
16915
-
16916
-
16917
-
16918
-
16919
-
16920
-
16921
-
16922
-
16923
-
16924
-
16925
-
16926
-
16927
-
16928
-
16929
-
16930
-
16931
-
16932
-
16933
-
16934
-
16935
-
16936
-
16937
-
16938
-
16939
-
16940
-
16941
-
16942
-
16943
-
16944
-
16945
-
16946
-
16947
-
16948
-
16949
-
16950
-
16951
-
16952
-
16953
-
16954
-
16955
-
16956
-
16957
-
16958
-
16959
-
16960
-
16961
-
16962
-
16963
-
16964
-
16965
-
16966
-
16967
-
16968
-
16969
-
16970
-
16971
-
16972
-
16973
-
16974
-
16975
-
16976
-
16977
-
16978
-
16979
-
16980
-
16981
-
16982
-
16983
-
16984
-
16985
-
16986
-
16987
-
16988
-
16989
-
16990
-
16991
-
16992
-
16993
-
16994
-
16995
-
16996
-
16997
-
16998
-
16999
-
17000
-
17001
-
17002
-
17003
-
17004
-
17005
-
17006
-
17007
-
17008
-
17009
-
17010
-
17011
-
17012
-
17013
-
17014
-
17015
-
17016
-
17017
-
17018
-
17019
-
17020
-
17021
-
17022
-
17023
-
17024
-
17025
-
17026
-
17027
-
17028
-
17029
-
17030
-
17031
-
17032
-
17033
-
17034
-
17035
-
17036
-
17037
-
17038
-
17039
-
17040
-
17041
-
17042
-
17043
-
17044
-
17045
-
17046
-
17047
-
17048
-
17049
-
17050
-
17051
-
17052
-
17053
-
17054
-
17055
-
17056
-
17057
-
17058
-
17059
-
17060
-
17061
-
17062
-
17063
-
17064
-
17065
-
17066
-
17067
-
17068
-
17069
-
17070
-
17071
-
17072
-
17073
-
17074
-
17075
-
17076
-
17077
-
17078
-
17079
-
17080
-
17081
-
17082
-
17083
-
17084
-
17085
-
17086
-
17087
-
17088
-
17089
-
17090
-
17091
-
17092
-
17093
-
17094
-
17095
-
17096
-
17097
-
17098
-
17099
-
17100
-
17101
-
17102
-
17103
-
17104
-
17105
-
17106
-
17107
-
17108
-
17109
-
17110
-
17111
-
17112
-
17113
-
17114
-
17115
-
17116
-
17117
-
17118
-
17119
-
17120
-
17121
-
17122
-
17123
-
17124
-
17125
-
17126
-
17127
-
17128
-
17129
-
17130
-
17131
-
17132
-
17133
-
17134
-
17135
-
17136
-
17137
-
17138
-
17139
-
17140
-
17141
-
17142
-
17143
-
17144
-
17145
-
17146
-
17147
-
17148
-
17149
-
17150
-
17151
-
17152
-
17153
-
17154
-
17155
-
17156
-
17157
-
17158
-
17159
-
17160
-
17161
-
17162
-
17163
-
17164
-
17165
-
17166
-
17167
-
17168
-
17169
-
17170
-
17171
-
17172
-
17173
-
17174
-
17175
-
17176
-
17177
-
17178
-
17179
-
17180
-
17181
-
17182
-
17183
-
17184
-
17185
-
17186
-
17187
-
17188
-
17189
-
17190
-
17191
-
17192
-
17193
-
17194
-
17195
-
17196
-
17197
-
17198
-
17199
-
17200
-
17201
-
17202
-
17203
-
17204
-
17205
-
17206
-
17207
-
17208
-
17209
-
17210
-
17211
-
17212
-
17213
-
17214
-
17215
-
17216
-
17217
-
17218
-
17219
-
17220
-
17221
-
17222
-
17223
-
17224
-
17225
-
17226
-
17227
-
17228
-
17229
-
17230
-
17231
-
17232
-
17233
-
17234
-
17235
-
17236
-
17237
-
17238
-
17239
-
17240
-
17241
-
17242
-
17243
-
17244
-
17245
-
17246
-
17247
-
17248
-
17249
-
17250
-
17251
-
17252
-
17253
-
17254
-
17255
-
17256
-
17257
-
17258
-
17259
-
17260
-
17261
-
17262
-
17263
-
17264
-
17265
-
17266
-
17267
-
17268
-
17269
-
17270
-
17271
-
17272
-
17273
-
17274
-
17275
-
17276
-
17277
-
17278
-
17279
-
17280
-
17281
-
17282
-
17283
-
17284
-
17285
-
17286
-
17287
-
17288
-
17289
-
17290
-
17291
-
17292
-
17293
-
17294
-
17295
-
17296
-
17297
-
17298
-
17299
-
17300
-
17301
-
17302
-
17303
-
17304
-
17305
-
17306
-
17307
-
17308
-
17309
-
17310
-
17311
-
17312
-
17313
-
17314
-
17315
-
17316
-
17317
-
17318
-
17319
-
17320
-
17321
-
17322
-
17323
-
17324
-
17325
-
17326
-
17327
-
17328
-
17329
-
17330
-
17331
-
17332
-
17333
-
17334
-
17335
-
17336
-
17337
-
17338
-
17339
-
17340
-
17341
-
17342
-
17343
-
17344
-
17345
-
17346
-
17347
-
17348
-
17349
-
17350
-
17351
-
17352
-
17353
-
17354
-
17355
-
17356
-
17357
-
17358
-
17359
-
17360
-
17361
-
17362
-
17363
-
17364
-
17365
-
17366
-
17367
-
17368
-
17369
-
17370
-
17371
-
17372
-
17373
-
17374
-
17375
-
17376
-
17377
-
17378
-
17379
-
17380
-
17381
-
17382
-
17383
-
17384
-
17385
-
17386
-
17387
-
17388
-
17389
-
17390
-
17391
-
17392
-
17393
-
17394
-
17395
-
17396
-
17397
-
17398
-
17399
-
17400
-
17401
-
17402
-
17403
-
17404
-
17405
-
17406
-
17407
-
17408
-
17409
-
17410
-
17411
-
17412
-
17413
-
17414
-
17415
-
17416
-
17417
-
17418
-
17419
-
17420
-
17421
-
17422
-
17423
-
17424
-
17425
-
17426
-
17427
-
17428
-
17429
-
17430
-
17431
-
17432
-
17433
-
17434
-
17435
-
17436
-
17437
-
17438
-
17439
-
17440
-
17441
-
17442
-
17443
-
17444
-
17445
-
17446
-
17447
-
17448
-
17449
-
17450
-
17451
-
17452
-
17453
-
17454
-
17455
-
17456
-
17457
-
17458
-
17459
-
17460
-
17461
-
17462
-
17463
-
17464
-
17465
-
17466
-
17467
-
17468
-
17469
-
17470
-
17471
-
17472
-
17473
-
17474
-
17475
-
17476
-
17477
-
17478
-
17479
-
17480
-
17481
-
17482
-
17483
-
17484
-
17485
-
17486
-
17487
-
17488
-
17489
-
17490
-
17491
-
17492
-
17493
-
17494
-
17495
-
17496
-
17497
-
17498
-
17499
-
17500
-
17501
-
17502
-
17503
-
17504
-
17505
-
17506
-
17507
-
17508
-
17509
-
17510
-
17511
-
17512
-
17513
-
17514
-
17515
-
17516
-
17517
-
17518
-
17519
-
17520
-
17521
-
17522
-
17523
-
17524
-
17525
-
17526
-
17527
-
17528
-
17529
-
17530
-
17531
-
17532
-
17533
-
17534
-
17535
-
17536
-
17537
-
17538
-
17539
-
17540
-
17541
-
17542
-
17543
-
17544
-
17545
-
17546
-
17547
-
17548
-
17549
-
17550
-
17551
-
17552
-
17553
-
17554
-
17555
-
17556
-
17557
-
17558
-
17559
-
17560
-
17561
-
17562
-
17563
-
17564
-
17565
-
17566
-
17567
-
17568
-
17569
-
17570
-
17571
-
17572
-
17573
-
17574
-
17575
-
17576
-
17577
-
17578
-
17579
-
17580
-
17581
-
17582
-
17583
-
17584
-
17585
-
17586
-
17587
-
17588
-
17589
-
17590
-
17591
-
17592
-
17593
-
17594
-
17595
-
17596
-
17597
-
17598
-
17599
-
17600
-
17601
-
17602
-
17603
-
17604
-
17605
-
17606
-
17607
-
17608
-
17609
-
17610
-
17611
-
17612
-
17613
-
17614
-
17615
-
17616
-
17617
-
17618
-
17619
-
17620
-
17621
-
17622
-
17623
-
17624
-
17625
-
17626
-
17627
-
17628
-
17629
-
17630
-
17631
-
17632
-
17633
-
17634
-
17635
-
17636
-
17637
-
17638
-
17639
-
17640
-
17641
-
17642
-
17643
-
17644
-
17645
-
17646
-
17647
-
17648
-
17649
-
17650
-
17651
-
17652
-
17653
-
17654
-
17655
-
17656
-
17657
-
17658
-
17659
-
17660
-
17661
-
17662
-
17663
-
17664
-
17665
-
17666
-
17667
-
17668
-
17669
-
17670
-
17671
-
17672
-
17673
-
17674
-
17675
-
17676
-
17677
-
17678
-
17679
-
17680
-
17681
-
17682
-
17683
-
17684
-
17685
-
17686
-
17687
-
17688
-
17689
-
17690
-
17691
-
17692
-
17693
-
17694
-
17695
-
17696
-
17697
-
17698
-
17699
-
17700
-
17701
-
17702
-
17703
-
17704
-
17705
-
17706
-
17707
-
17708
-
17709
-
17710
-
17711
-
17712
-
17713
-
17714
-
17715
-
17716
-
17717
-
17718
-
17719
-
17720
-
17721
-
17722
-
17723
-
17724
-
17725
-
17726
-
17727
-
17728
-
17729
-
17730
-
17731
-
17732
-
17733
-
17734
-
17735
-
17736
-
17737
-
17738
-
17739
-
17740
-
17741
-
17742
-
17743
-
17744
-
17745
-
17746
-
17747
-
17748
-
17749
-
17750
-
17751
-
17752
-
17753
-
17754
-
17755
-
17756
-
17757
-
17758
-
17759
-
17760
-
17761
-
17762
-
17763
-
17764
-
17765
-
17766
-
17767
-
17768
-
17769
-
17770
-
17771
-
17772
-
17773
-
17774
-
17775
-
17776
-
17777
-
17778
-
17779
-
17780
-
17781
-
17782
-
17783
-
17784
-
17785
-
17786
-
17787
-
17788
-
17789
-
17790
-
17791
-
17792
-
17793
-
17794
-
17795
-
17796
-
17797
-
17798
-
17799
-
17800
-
17801
-
17802
-
17803
-
17804
-
17805
-
17806
-
17807
-
17808
-
17809
-
17810
-
17811
-
17812
-
17813
-
17814
-
17815
-
17816
-
17817
-
17818
-
17819
-
17820
-
17821
-
17822
-
17823
-
17824
-
17825
-
17826
-
17827
-
17828
-
17829
-
17830
-
17831
-
17832
-
17833
-
17834
-
17835
-
17836
-
17837
-
17838
-
17839
-
17840
-
17841
-
17842
-
17843
-
17844
-
17845
-
17846
-
17847
-
17848
-
17849
-
17850
-
17851
-
17852
-
17853
-
17854
-
17855
-
17856
-
17857
-
17858
-
17859
-
17860
-
17861
-
17862
-
17863
-
17864
-
17865
-
17866
-
17867
-
17868
-
17869
-
17870
-
17871
-
17872
-
17873
-
17874
-
17875
-
17876
-
17877
-
17878
-
17879
-
17880
-
17881
-
17882
-
17883
-
17884
-
17885
-
17886
-
17887
-
17888
-
17889
-
17890
-
17891
-
17892
-
17893
-
17894
-
17895
-
17896
-
17897
-
17898
-
17899
-
17900
-
17901
-
17902
-
17903
-
17904
-
17905
-
17906
-
17907
-
17908
-
17909
-
17910
-
17911
-
17912
-
17913
-
17914
-
17915
-
17916
-
17917
-
17918
-
17919
-
17920
-
17921
-
17922
-
17923
-
17924
-
17925
-
17926
-
17927
-
17928
-
17929
-
17930
-
17931
-
17932
-
17933
-
17934
-
17935
-
17936
-
17937
-
17938
-
17939
-
17940
-
17941
-
17942
-
17943
-
17944
-
17945
-
17946
-
17947
-
17948
-
17949
-
17950
-
17951
-
17952
-
17953
-
17954
-
17955
-
17956
-
17957
-
17958
-
17959
-
17960
-
17961
-
17962
-
17963
-
17964
-
17965
-
17966
-
17967
-
17968
-
17969
-
17970
-
17971
-
17972
-
17973
-
17974
-
17975
-
17976
-
17977
-
17978
-
17979
-
17980
-
17981
-
17982
-
17983
-
17984
-
17985
-
17986
-
17987
-
17988
-
17989
-
17990
-
17991
-
17992
-
17993
-
17994
-
17995
-
17996
-
17997
-
17998
-
17999
-
18000
-
18001
-
18002
-
18003
-
18004
-
18005
-
18006
-
18007
-
18008
-
18009
-
18010
-
18011
-
18012
-
18013
-
18014
-
18015
-
18016
-
18017
-
18018
-
18019
-
18020
-
18021
-
18022
-
18023
-
18024
-
18025
-
18026
-
18027
-
18028
-
18029
-
18030
-
18031
-
18032
-
18033
-
18034
-
18035
-
18036
-
18037
-
18038
-
18039
-
18040
-
18041
-
18042
-
18043
-
18044
-
18045
-
18046
-
18047
-
18048
-
18049
-
18050
-
18051
-
18052
-
18053
-
18054
-
18055
-
18056
-
18057
-
18058
-
18059
-
18060
-
18061
-
18062
-
18063
-
18064
-
18065
-
18066
-
18067
-
18068
-
18069
-
18070
-
18071
-
18072
-
18073
-
18074
-
18075
-
18076
-
18077
-
18078
-
18079
-
18080
-
18081
-
18082
-
18083
-
18084
-
18085
-
18086
-
18087
-
18088
-
18089
-
18090
-
18091
-
18092
-
18093
-
18094
-
18095
-
18096
-
18097
-
18098
-
18099
-
18100
-
18101
-
18102
-
18103
-
18104
-
18105
-
18106
-
18107
-
18108
-
18109
-
18110
-
18111
-
18112
-
18113
-
18114
-
18115
-
18116
-
18117
-
18118
-
18119
-
18120
-
18121
-
18122
-
18123
-
18124
-
18125
-
18126
-
18127
-
18128
-
18129
-
18130
-
18131
-
18132
-
18133
-
18134
-
18135
-
18136
-
18137
-
18138
-
18139
-
18140
-
18141
-
18142
-
18143
-
18144
-
18145
-
18146
-
18147
-
18148
-
18149
-
18150
-
18151
-
18152
-
18153
-
18154
-
18155
-
18156
-
18157
-
18158
-
18159
-
18160
-
18161
-
18162
-
18163
-
18164
-
18165
-
18166
-
18167
-
18168
-
18169
-
18170
-
18171
-
18172
-
18173
-
18174
-
18175
-
18176
-
18177
-
18178
-
18179
-
18180
-
18181
-
18182
-
18183
-
18184
-
18185
-
18186
-
18187
-
18188
-
18189
-
18190
-
18191
-
18192
-
18193
-
18194
-
18195
-
18196
-
18197
-
18198
-
18199
-
18200
-
18201
-
18202
-
18203
-
18204
-
18205
-
18206
-
18207
-
18208
-
18209
-
18210
-
18211
-
18212
-
18213
-
18214
-
18215
-
18216
-
18217
-
18218
-
18219
-
18220
-
18221
-
18222
-
18223
-
18224
-
18225
-
18226
-
18227
-
18228
-
18229
-
18230
-
18231
-
18232
-
18233
-
18234
-
18235
-
18236
-
18237
-
18238
-
18239
-
18240
-
18241
-
18242
-
18243
-
18244
-
18245
-
18246
-
18247
-
18248
-
18249
-
18250
-
18251
-
18252
-
18253
-
18254
-
18255
-
18256
-
18257
-
18258
-
18259
-
18260
-
18261
-
18262
-
18263
-
18264
-
18265
-
18266
-
18267
-
18268
-
18269
-
18270
-
18271
-
18272
-
18273
-
18274
-
18275
-
18276
-
18277
-
18278
-
18279
-
18280
-
18281
-
18282
-
18283
-
18284
-
18285
-
18286
-
18287
-
18288
-
18289
-
18290
-
18291
-
18292
-
18293
-
18294
-
18295
-
18296
-
18297
-
18298
-
18299
-
18300
-
18301
-
18302
-
18303
-
18304
-
18305
-
18306
-
18307
-
18308
-
18309
-
18310
-
18311
-
18312
-
18313
-
18314
-
18315
-
18316
-
18317
-
18318
-
18319
-
18320
-
18321
-
18322
-
18323
-
18324
-
18325
-
18326
-
18327
-
18328
-
18329
-
18330
-
18331
-
18332
-
18333
-
18334
-
18335
-
18336
-
18337
-
18338
-
18339
-
18340
-
18341
-
18342
-
18343
-
18344
-
18345
-
18346
-
18347
-
18348
-
18349
-
18350
-
18351
-
18352
-
18353
-
18354
-
18355
-
18356
-
18357
-
18358
-
18359
-
18360
-
18361
-
18362
-
18363
-
18364
-
18365
-
18366
-
18367
-
18368
-
18369
-
18370
-
18371
-
18372
-
18373
-
18374
-
18375
-
18376
-
18377
-
18378
-
18379
-
18380
-
18381
-
18382
-
18383
-
18384
-
18385
-
18386
-
18387
-
18388
-
18389
-
18390
-
18391
-
18392
-
18393
-
18394
-
18395
-
18396
-
18397
-
18398
-
18399
-
18400
-
18401
-
18402
-
18403
-
18404
-
18405
-
18406
-
18407
-
18408
-
18409
-
18410
-
18411
-
18412
-
18413
-
18414
-
18415
-
18416
-
18417
-
18418
-
18419
-
18420
-
18421
-
18422
-
18423
-
18424
-
18425
-
18426
-
18427
-
18428
-
18429
-
18430
-
18431
-
18432
-
18433
-
18434
-
18435
-
18436
-
18437
-
18438
-
18439
-
18440
-
18441
-
18442
-
18443
-
18444
-
18445
-
18446
-
18447
-
18448
-
18449
-
18450
-
18451
-
18452
-
18453
-
18454
-
18455
-
18456
-
18457
-
18458
-
18459
-
18460
-
18461
-
18462
-
18463
-
18464
-
18465
-
18466
-
18467
-
18468
-
18469
-
18470
-
18471
-
18472
-
18473
-
18474
-
18475
-
18476
-
18477
-
18478
-
18479
-
18480
-
18481
-
18482
-
18483
-
18484
-
18485
-
18486
-
18487
-
18488
-
18489
-
18490
-
18491
-
18492
-
18493
-
18494
-
18495
-
18496
-
18497
-
18498
-
18499
-
18500
-
18501
-
18502
-
18503
-
18504
-
18505
-
18506
-
18507
-
18508
-
18509
-
18510
-
18511
-
18512
-
18513
-
18514
-
18515
-
18516
-
18517
-
18518
-
18519
-
18520
-
18521
-
18522
-
18523
-
18524
-
18525
-
18526
-
18527
-
18528
-
18529
-
18530
-
18531
-
18532
-
18533
-
18534
-
18535
-
18536
-
18537
-
18538
-
18539
-
18540
-
18541
-
18542
-
18543
-
18544
-
18545
-
18546
-
18547
-
18548
-
18549
-
18550
-
18551
-
18552
-
18553
-
18554
-
18555
-
18556
-
18557
-
18558
-
18559
-
18560
-
18561
-
18562
-
18563
-
18564
-
18565
-
18566
-
18567
-
18568
-
18569
-
18570
-
18571
-
18572
-
18573
-
18574
-
18575
-
18576
-
18577
-
18578
-
18579
-
18580
-
18581
-
18582
-
18583
-
18584
-
18585
-
18586
-
18587
-
18588
-
18589
-
18590
-
18591
-
18592
-
18593
-
18594
-
18595
-
18596
-
18597
-
18598
-
18599
-
18600
-
18601
-
18602
-
18603
-
18604
-
18605
-
18606
-
18607
-
18608
-
18609
-
18610
-
18611
-
18612
-
18613
-
18614
-
18615
-
18616
-
18617
-
18618
-
18619
-
18620
-
18621
-
18622
-
18623
-
18624
-
18625
-
18626
-
18627
-
18628
-
18629
-
18630
-
18631
-
18632
-
18633
-
18634
-
18635
-
18636
-
18637
-
18638
-
18639
-
18640
-
18641
-
18642
-
18643
-
18644
-
18645
-
18646
-
18647
-
18648
-
18649
-
18650
-
18651
-
18652
-
18653
-
18654
-
18655
-
18656
-
18657
-
18658
-
18659
-
18660
-
18661
-
18662
-
18663
-
18664
-
18665
-
18666
-
18667
-
18668
-
18669
-
18670
-
18671
-
18672
-
18673
-
18674
-
18675
-
18676
-
18677
-
18678
-
18679
-
18680
-
18681
-
18682
-
18683
-
18684
-
18685
-
18686
-
18687
-
18688
-
18689
-
18690
-
18691
-
18692
-
18693
-
18694
-
18695
-
18696
-
18697
-
18698
-
18699
-
18700
-
18701
-
18702
-
18703
-
18704
-
18705
-
18706
-
18707
-
18708
-
18709
-
18710
-
18711
-
18712
-
18713
-
18714
-
18715
-
18716
-
18717
-
18718
-
18719
-
18720
-
18721
-
18722
-
18723
-
18724
-
18725
-
18726
-
18727
-
18728
-
18729
-
18730
-
18731
-
18732
-
18733
-
18734
-
18735
-
18736
-
18737
-
18738
-
18739
-
18740
-
18741
-
18742
-
18743
-
18744
-
18745
-
18746
-
18747
-
18748
-
18749
-
18750
-
18751
-
18752
-
18753
-
18754
-
18755
-
18756
-
18757
-
18758
-
18759
-
18760
-
18761
-
18762
-
18763
-
18764
-
18765
-
18766
-
18767
-
18768
-
18769
-
18770
-
18771
-
18772
-
18773
-
18774
-
18775
-
18776
-
18777
-
18778
-
18779
-
18780
-
18781
-
18782
-
18783
-
18784
-
18785
-
18786
-
18787
-
18788
-
18789
-
18790
-
18791
-
18792
-
18793
-
18794
-
18795
-
18796
-
18797
-
18798
-
18799
-
18800
-
18801
-
18802
-
18803
-
18804
-
18805
-
18806
-
18807
-
18808
-
18809
-
18810
-
18811
-
18812
-
18813
-
18814
-
18815
-
18816
-
18817
-
18818
-
18819
-
18820
-
18821
-
18822
-
18823
-
18824
-
18825
-
18826
-
18827
-
18828
-
18829
-
18830
-
18831
-
18832
-
18833
-
18834
-
18835
-
18836
-
18837
-
18838
-
18839
-
18840
-
18841
-
18842
-
18843
-
18844
-
18845
-
18846
-
18847
-
18848
-
18849
-
18850
-
18851
-
18852
-
18853
-
18854
-
18855
-
18856
-
18857
-
18858
-
18859
-
18860
-
18861
-
18862
-
18863
-
18864
-
18865
-
18866
-
18867
-
18868
-
18869
-
18870
-
18871
-
18872
-
18873
-
18874
-
18875
-
18876
-
18877
-
18878
-
18879
-
18880
-
18881
-
18882
-
18883
-
18884
-
18885
-
18886
-
18887
-
18888
-
18889
-
18890
-
18891
-
18892
-
18893
-
18894
-
18895
-
18896
-
18897
-
18898
-
18899
-
18900
-
18901
-
18902
-
18903
-
18904
-
18905
-
18906
-
18907
-
18908
-
18909
-
18910
-
18911
-
18912
-
18913
-
18914
-
18915
-
18916
-
18917
-
18918
-
18919
-
18920
-
18921
-
18922
-
18923
-
18924
-
18925
-
18926
-
18927
-
18928
-
18929
-
18930
-
18931
-
18932
-
18933
-
18934
-
18935
-
18936
-
18937
-
18938
-
18939
-
18940
-
18941
-
18942
-
18943
-
18944
-
18945
-
18946
-
18947
-
18948
-
18949
-
18950
-
18951
-
18952
-
18953
-
18954
-
18955
-
18956
-
18957
-
18958
-
18959
-
18960
-
18961
-
18962
-
18963
-
18964
-
18965
-
18966
-
18967
-
18968
-
18969
-
18970
-
18971
-
18972
-
18973
-
18974
-
18975
-
18976
-
18977
-
18978
-
18979
-
18980
-
18981
-
18982
-
18983
-
18984
-
18985
-
18986
-
18987
-
18988
-
18989
-
18990
-
18991
-
18992
-
18993
-
18994
-
18995
-
18996
-
18997
-
18998
-
18999
-
19000
-
19001
-
19002
-
19003
-
19004
-
19005
-
19006
-
19007
-
19008
-
19009
-
19010
-
19011
-
19012
-
19013
-
19014
-
19015
-
19016
-
19017
-
19018
-
19019
-
19020
-
19021
-
19022
-
19023
-
19024
-
19025
-
19026
-
19027
-
19028
-
19029
-
19030
-
19031
-
19032
-
19033
-
19034
-
19035
-
19036
-
19037
-
19038
-
19039
-
19040
-
19041
-
19042
-
19043
-
19044
-
19045
-
19046
-
19047
-
19048
-
19049
-
19050
-
19051
-
19052
-
19053
-
19054
-
19055
-
19056
-
19057
-
19058
-
19059
-
19060
-
19061
-
19062
-
19063
-
19064
-
19065
-
19066
-
19067
-
19068
-
19069
-
19070
-
19071
-
19072
-
19073
-
19074
-
19075
-
19076
-
19077
-
19078
-
19079
-
19080
-
19081
-
19082
-
19083
-
19084
-
19085
-
19086
-
19087
-
19088
-
19089
-
19090
-
19091
-
19092
-
19093
-
19094
-
19095
-
19096
-
19097
-
19098
-
19099
-
19100
-
19101
-
19102
-
19103
-
19104
-
19105
-
19106
-
19107
-
19108
-
19109
-
19110
-
19111
-
19112
-
19113
-
19114
-
19115
-
19116
-
19117
-
19118
-
19119
-
19120
-
19121
-
19122
-
19123
-
19124
-
19125
-
19126
-
19127
-
19128
-
19129
-
19130
-
19131
-
19132
-
19133
-
19134
-
19135
-
19136
-
19137
-
19138
-
19139
-
19140
-
19141
-
19142
-
19143
-
19144
-
19145
-
19146
-
19147
-
19148
-
19149
-
19150
-
19151
-
19152
-
19153
-
19154
-
19155
-
19156
-
19157
-
19158
-
19159
-
19160
-
19161
-
19162
-
19163
-
19164
-
19165
-
19166
-
19167
-
19168
-
19169
-
19170
-
19171
-
19172
-
19173
-
19174
-
19175
-
19176
-
19177
-
19178
-
19179
-
19180
-
19181
-
19182
-
19183
-
19184
-
19185
-
19186
-
19187
-
19188
-
19189
-
19190
-
19191
-
19192
-
19193
-
19194
-
19195
-
19196
-
19197
-
19198
-
19199
-
19200
-
19201
-
19202
-
19203
-
19204
-
19205
-
19206
-
19207
-
19208
-
19209
-
19210
-
19211
-
19212
-
19213
-
19214
-
19215
-
19216
-
19217
-
19218
-
19219
-
19220
-
19221
-
19222
-
19223
-
19224
-
19225
-
19226
-
19227
-
19228
-
19229
-
19230
-
19231
-
19232
-
19233
-
19234
-
19235
-
19236
-
19237
-
19238
-
19239
-
19240
-
19241
-
19242
-
19243
-
19244
-
19245
-
19246
-
19247
-
19248
-
19249
-
19250
-
19251
-
19252
-
19253
-
19254
-
19255
-
19256
-
19257
-
19258
-
19259
-
19260
-
19261
-
19262
-
19263
-
19264
-
19265
-
19266
-
19267
-
19268
-
19269
-
19270
-
19271
-
19272
-
19273
-
19274
-
19275
-
19276
-
19277
-
19278
-
19279
-
19280
-
19281
-
19282
-
19283
-
19284
-
19285
-
19286
-
19287
-
19288
-
19289
-
19290
-
19291
-
19292
-
19293
-
19294
-
19295
-
19296
-
19297
-
19298
-
19299
-
19300
-
19301
-
19302
-
19303
-
19304
-
19305
-
19306
-
19307
-
19308
-
19309
-
19310
-
19311
-
19312
-
19313
-
19314
-
19315
-
19316
-
19317
-
19318
-
19319
-
19320
-
19321
-
19322
-
19323
-
19324
-
19325
-
19326
-
19327
-
19328
-
19329
-
19330
-
19331
-
19332
-
19333
-
19334
-
19335
-
19336
-
19337
-
19338
-
19339
-
19340
-
19341
-
19342
-
19343
-
19344
-
19345
-
19346
-
19347
-
19348
-
19349
-
19350
-
19351
-
19352
-
19353
-
19354
-
19355
-
19356
-
19357
-
19358
-
19359
-
19360
-
19361
-
19362
-
19363
-
19364
-
19365
-
19366
-
19367
-
19368
-
19369
-
19370
-
19371
-
19372
-
19373
-
19374
-
19375
-
19376
-
19377
-
19378
-
19379
-
19380
-
19381
-
19382
-
19383
-
19384
-
19385
-
19386
-
19387
-
19388
-
19389
-
19390
-
19391
-
19392
-
19393
-
19394
-
19395
-
19396
-
19397
-
19398
-
19399
-
19400
-
19401
-
19402
-
19403
-
19404
-
19405
-
19406
-
19407
-
19408
-
19409
-
19410
-
19411
-
19412
-
19413
-
19414
-
19415
-
19416
-
19417
-
19418
-
19419
-
19420
-
19421
-
19422
-
19423
-
19424
-
19425
-
19426
-
19427
-
19428
-
19429
-
19430
-
19431
-
19432
-
19433
-
19434
-
19435
-
19436
-
19437
-
19438
-
19439
-
19440
-
19441
-
19442
-
19443
-
19444
-
19445
-
19446
-
19447
-
19448
-
19449
-
19450
-
19451
-
19452
-
19453
-
19454
-
19455
-
19456
-
19457
-
19458
-
19459
-
19460
-
19461
-
19462
-
19463
-
19464
-
19465
-
19466
-
19467
-
19468
-
19469
-
19470
-
19471
-
19472
-
19473
-
19474
-
19475
-
19476
-
19477
-
19478
-
19479
-
19480
-
19481
-
19482
-
19483
-
19484
-
19485
-
19486
-
19487
-
19488
-
19489
-
19490
-
19491
-
19492
-
19493
-
19494
-
19495
-
19496
-
19497
-
19498
-
19499
-
19500
-
19501
-
19502
-
19503
-
19504
-
19505
-
19506
-
19507
-
19508
-
19509
-
19510
-
19511
-
19512
-
19513
-
19514
-
19515
-
19516
-
19517
-
19518
-
19519
-
19520
-
19521
-
19522
-
19523
-
19524
-
19525
-
19526
-
19527
-
19528
-
19529
-
19530
-
19531
-
19532
-
19533
-
19534
-
19535
-
19536
-
19537
-
19538
-
19539
-
19540
-
19541
-
19542
-
19543
-
19544
-
19545
-
19546
-
19547
-
19548
-
19549
-
19550
-
19551
-
19552
-
19553
-
19554
-
19555
-
19556
-
19557
-
19558
-
19559
-
19560
-
19561
-
19562
-
19563
-
19564
-
19565
-
19566
-
19567
-
19568
-
19569
-
19570
-
19571
-
19572
-
19573
-
19574
-
19575
-
19576
-
19577
-
19578
-
19579
-
19580
-
19581
-
19582
-
19583
-
19584
-
19585
-
19586
-
19587
-
19588
-
19589
-
19590
-
19591
-
19592
-
19593
-
19594
-
19595
-
19596
-
19597
-
19598
-
19599
-
19600
-
19601
-
19602
-
19603
-
19604
-
19605
-
19606
-
19607
-
19608
-
19609
-
19610
-
19611
-
19612
-
19613
-
19614
-
19615
-
19616
-
19617
-
19618
-
19619
-
19620
-
19621
-
19622
-
19623
-
19624
-
19625
-
19626
-
19627
-
19628
-
19629
-
19630
-
19631
-
19632
-
19633
-
19634
-
19635
-
19636
-
19637
-
19638
-
19639
-
19640
-
19641
-
19642
-
19643
-
19644
-
19645
-
19646
-
19647
-
19648
-
19649
-
19650
-
19651
-
19652
-
19653
-
19654
-
19655
-
19656
-
19657
-
19658
-
19659
-
19660
-
19661
-
19662
-
19663
-
19664
-
19665
-
19666
-
19667
-
19668
-
19669
-
19670
-
19671
-
19672
-
19673
-
19674
-
19675
-
19676
-
19677
-
19678
-
19679
-
19680
-
19681
-
19682
-
19683
-
19684
-
19685
-
19686
-
19687
-
19688
-
19689
-
19690
-
19691
-
19692
-
19693
-
19694
-
19695
-
19696
-
19697
-
19698
-
19699
-
19700
-
19701
-
19702
-
19703
-
19704
-
19705
-
19706
-
19707
-
19708
-
19709
-
19710
-
19711
-
19712
-
19713
-
19714
-
19715
-
19716
-
19717
-
19718
-
19719
-
19720
-
19721
-
19722
-
19723
-
19724
-
19725
-
19726
-
19727
-
19728
-
19729
-
19730
-
19731
-
19732
-
19733
-
19734
-
19735
-
19736
-
19737
-
19738
-
19739
-
19740
-
19741
-
19742
-
19743
-
19744
-
19745
-
19746
-
19747
-
19748
-
19749
-
19750
-
19751
-
19752
-
19753
-
19754
-
19755
-
19756
-
19757
-
19758
-
19759
-
19760
-
19761
-
19762
-
19763
-
19764
-
19765
-
19766
-
19767
-
19768
-
19769
-
19770
-
19771
-
19772
-
19773
-
19774
-
19775
-
19776
-
19777
-
19778
-
19779
-
19780
-
19781
-
19782
-
19783
-
19784
-
19785
-
19786
-
19787
-
19788
-
19789
-
19790
-
19791
-
19792
-
19793
-
19794
-
19795
-
19796
-
19797
-
19798
-
19799
-
19800
-
19801
-
19802
-
19803
-
19804
-
19805
-
19806
-
19807
-
19808
-
19809
-
19810
-
19811
-
19812
-
19813
-
19814
-
19815
-
19816
-
19817
-
19818
-
19819
-
19820
-
19821
-
19822
-
19823
-
19824
-
19825
-
19826
-
19827
-
19828
-
19829
-
19830
-
19831
-
19832
-
19833
-
19834
-
19835
-
19836
-
19837
-
19838
-
19839
-
19840
-
19841
-
19842
-
19843
-
19844
-
19845
-
19846
-
19847
-
19848
-
19849
-
19850
-
19851
-
19852
-
19853
-
19854
-
19855
-
19856
-
19857
-
19858
-
19859
-
19860
-
19861
-
19862
-
19863
-
19864
-
19865
-
19866
-
19867
-
19868
-
19869
-
19870
-
19871
-
19872
-
19873
-
19874
-
19875
-
19876
-
19877
-
19878
-
19879
-
19880
-
19881
-
19882
-
19883
-
19884
-
19885
-
19886
-
19887
-
19888
-
19889
-
19890
-
19891
-
19892
-
19893
-
19894
-
19895
-
19896
-
19897
-
19898
-
19899
-
19900
-
19901
-
19902
-
19903
-
19904
-
19905
-
19906
-
19907
-
19908
-
19909
-
19910
-
19911
-
19912
-
19913
-
19914
-
19915
-
19916
-
19917
-
19918
-
19919
-
19920
-
19921
-
19922
-
19923
-
19924
-
19925
-
19926
-
19927
-
19928
-
19929
-
19930
-
19931
-
19932
-
19933
-
19934
-
19935
-
19936
-
19937
-
19938
-
19939
-
19940
-
19941
-
19942
-
19943
-
19944
-
19945
-
19946
-
19947
-
19948
-
19949
-
19950
-
19951
-
19952
-
19953
-
19954
-
19955
-
19956
-
19957
-
19958
-
19959
-
19960
-
19961
-
19962
-
19963
-
19964
-
19965
-
19966
-
19967
-
19968
-
19969
-
19970
-
19971
-
19972
-
19973
-
19974
-
19975
-
19976
-
19977
-
19978
-
19979
-
19980
-
19981
-
19982
-
19983
-
19984
-
19985
-
19986
-
19987
-
19988
-
19989
-
19990
-
19991
-
19992
-
19993
-
19994
-
19995
-
19996
-
19997
-
19998
-
19999
-
20000
-
20001
-
20002
-
20003
-
20004
-
20005
-
20006
-
20007
-
20008
-
20009
-
20010
-
20011
-
20012
-
20013
-
20014
-
20015
-
20016
-
20017
-
20018
-
20019
-
20020
-
20021
-
20022
-
20023
-
20024
-
20025
-
20026
-
20027
-
20028
-
20029
-
20030
-
20031
-
20032
-
20033
-
20034
-
20035
-
20036
-
20037
-
20038
-
20039
-
20040
-
20041
-
20042
-
20043
-
20044
-
20045
-
20046
-
20047
-
20048
-
20049
-
20050
-
20051
-
20052
-
20053
-
20054
-
20055
-
20056
-
20057
-
20058
-
20059
-
20060
-
20061
-
20062
-
20063
-
20064
-
20065
-
20066
-
20067
-
20068
-
20069
-
20070
-
20071
-
20072
-
20073
-
20074
-
20075
-
20076
-
20077
-
20078
-
20079
-
20080
-
20081
-
20082
-
20083
-
20084
-
20085
-
20086
-
20087
-
20088
-
20089
-
20090
-
20091
-
20092
-
20093
-
20094
-
20095
-
20096
-
20097
-
20098
-
20099
-
20100
-
20101
-
20102
-
20103
-
20104
-
20105
-
20106
-
20107
-
20108
-
20109
-
20110
-
20111
-
20112
-
20113
-
20114
-
20115
-
20116
-
20117
-
20118
-
20119
-
20120
-
20121
-
20122
-
20123
-
20124
-
20125
-
20126
-
20127
-
20128
-
20129
-
20130
-
20131
-
20132
-
20133
-
20134
-
20135
-
20136
-
20137
-
20138
-
20139
-
20140
-
20141
-
20142
-
20143
-
20144
-
20145
-
20146
-
20147
-
20148
-
20149
-
20150
-
20151
-
20152
-
20153
-
20154
-
20155
-
20156
-
20157
-
20158
-
20159
-
20160
-
20161
-
20162
-
20163
-
20164
-
20165
-
20166
-
20167
-
20168
-
20169
-
20170
-
20171
-
20172
-
20173
-
20174
-
20175
-
20176
-
20177
-
20178
-
20179
-
20180
-
20181
-
20182
-
20183
-
20184
-
20185
-
20186
-
20187
-
20188
-
20189
-
20190
-
20191
-
20192
-
20193
-
20194
-
20195
-
20196
-
20197
-
20198
-
20199
-
20200
-
20201
-
20202
-
20203
-
20204
-
20205
-
20206
-
20207
-
20208
-
20209
-
20210
-
20211
-
20212
-
20213
-
20214
-
20215
-
20216
-
20217
-
20218
-
20219
-
20220
-
20221
-
20222
-
20223
-
20224
-
20225
-
20226
-
20227
-
20228
-
20229
-
20230
-
20231
-
20232
-
20233
-
20234
-
20235
-
20236
-
20237
-
20238
-
20239
-
20240
-
20241
-
20242
-
20243
-
20244
-
20245
-
20246
-
20247
-
20248
-
20249
-
20250
-
20251
-
20252
-
20253
-
20254
-
20255
-
20256
-
20257
-
20258
-
20259
-
20260
-
20261
-
20262
-
20263
-
20264
-
20265
-
20266
-
20267
-
20268
-
20269
-
20270
-
20271
-
20272
-
20273
-
20274
-
20275
-
20276
-
20277
-
20278
-
20279
-
20280
-
20281
-
20282
-
20283
-
20284
-
20285
-
20286
-
20287
-
20288
-
20289
-
20290
-
20291
-
20292
-
20293
-
20294
-
20295
-
20296
-
20297
-
20298
-
20299
-
20300
-
20301
-
20302
-
20303
-
20304
-
20305
-
20306
-
20307
-
20308
-
20309
-
20310
-
20311
-
20312
-
20313
-
20314
-
20315
-
20316
-
20317
-
20318
-
20319
-
20320
-
20321
-
20322
-
20323
-
20324
-
20325
-
20326
-
20327
-
20328
-
20329
-
20330
-
20331
-
20332
-
20333
-
20334
-
20335
-
20336
-
20337
-
20338
-
20339
-
20340
-
20341
-
20342
-
20343
-
20344
-
20345
-
20346
-
20347
-
20348
-
20349
-
20350
-
20351
-
20352
-
20353
-
20354
-
20355
-
20356
-
20357
-
20358
-
20359
-
20360
-
20361
-
20362
-
20363
-
20364
-
20365
-
20366
-
20367
-
20368
-
20369
-
20370
-
20371
-
20372
-
20373
-
20374
-
20375
-
20376
-
20377
-
20378
-
20379
-
20380
-
20381
-
20382
-
20383
-
20384
-
20385
-
20386
-
20387
-
20388
-
20389
-
20390
-
20391
-
20392
-
20393
-
20394
-
20395
-
20396
-
20397
-
20398
-
20399
-
20400
-
20401
-
20402
-
20403
-
20404
-
20405
-
20406
-
20407
-
20408
-
20409
-
20410
-
20411
-
20412
-
20413
-
20414
-
20415
-
20416
-
20417
-
20418
-
20419
-
20420
-
20421
-
20422
-
20423
-
20424
-
20425
-
20426
-
20427
-
20428
-
20429
-
20430
-
20431
-
20432
-
20433
-
20434
-
20435
-
20436
-
20437
-
20438
-
20439
-
20440
-
20441
-
20442
-
20443
-
20444
-
20445
-
20446
-
20447
-
20448
-
20449
-
20450
-
20451
-
20452
-
20453
-
20454
-
20455
-
20456
-
20457
-
20458
-
20459
-
20460
-
20461
-
20462
-
20463
-
20464
-
20465
-
20466
-
20467
-
20468
-
20469
-
20470
-
20471
-
20472
-
20473
-
20474
-
20475
-
20476
-
20477
-
20478
-
20479
-
20480
-
20481
-
20482
-
20483
-
20484
-
20485
-
20486
-
20487
-
20488
-
20489
-
20490
-
20491
-
20492
-
20493
-
20494
-
20495
-
20496
-
20497
-
20498
-
20499
-
20500
-
20501
-
20502
-
20503
-
20504
-
20505
-
20506
-
20507
-
20508
-
20509
-
20510
-
20511
-
20512
-
20513
-
20514
-
20515
-
20516
-
20517
-
20518
-
20519
-
20520
-
20521
-
20522
-
20523
-
20524
-
20525
-
20526
-
20527
-
20528
-
20529
-
20530
-
20531
-
20532
-
20533
-
20534
-
20535
-
20536
-
20537
-
20538
-
20539
-
20540
-
20541
-
20542
-
20543
-
20544
-
20545
-
20546
-
20547
-
20548
-
20549
-
20550
-
20551
-
20552
-
20553
-
20554
-
20555
-
20556
-
20557
-
20558
-
20559
-
20560
-
20561
-
20562
-
20563
-
20564
-
20565
-
20566
-
20567
-
20568
-
20569
-
20570
-
20571
-
20572
-
20573
-
20574
-
20575
-
20576
-
20577
-
20578
-
20579
-
20580
-
20581
-
20582
-
20583
-
20584
-
20585
-
20586
-
20587
-
20588
-
20589
-
20590
-
20591
-
20592
-
20593
-
20594
-
20595
-
20596
-
20597
-
20598
-
20599
-
20600
-
20601
-
20602
-
20603
-
20604
-
20605
-
20606
-
20607
-
20608
-
20609
-
20610
-
20611
-
20612
-
20613
-
20614
-
20615
-
20616
-
20617
-
20618
-
20619
-
20620
-
20621
-
20622
-
20623
-
20624
-
20625
-
20626
-
20627
-
20628
-
20629
-
20630
-
20631
-
20632
-
20633
-
20634
-
20635
-
20636
-
20637
-
20638
-
20639
-
20640
-
20641
-
20642
-
20643
-
20644
-
20645
-
20646
-
20647
-
20648
-
20649
-
20650
-
20651
-
20652
-
20653
-
20654
-
20655
-
20656
-
20657
-
20658
-
20659
-
20660
-
20661
-
20662
-
20663
-
20664
-
20665
-
20666
-
20667
-
20668
-
20669
-
20670
-
20671
-
20672
-
20673
-
20674
-
20675
-
20676
-
20677
-
20678
-
20679
-
20680
-
20681
-
20682
-
20683
-
20684
-
20685
-
20686
-
20687
-
20688
-
20689
-
20690
-
20691
-
20692
-
20693
-
20694
-
20695
-
20696
-
20697
-
20698
-
20699
-
20700
-
20701
-
20702
-
20703
-
20704
-
20705
-
20706
-
20707
-
20708
-
20709
-
20710
-
20711
-
20712
-
20713
-
20714
-
20715
-
20716
-
20717
-
20718
-
20719
-
20720
-
20721
-
20722
-
20723
-
20724
-
20725
-
20726
-
20727
-
20728
-
20729
-
20730
-
20731
-
20732
-
20733
-
20734
-
20735
-
20736
-
20737
-
20738
-
20739
-
20740
-
20741
-
20742
-
20743
-
20744
-
20745
-
20746
-
20747
-
20748
-
20749
-
20750
-
20751
-
20752
-
20753
-
20754
-
20755
-
20756
-
20757
-
20758
-
20759
-
20760
-
20761
-
20762
-
20763
-
20764
-
20765
-
20766
-
20767
-
20768
-
20769
-
20770
-
20771
-
20772
-
20773
-
20774
-
20775
-
20776
-
20777
-
20778
-
20779
-
20780
-
20781
-
20782
-
20783
-
20784
-
20785
-
20786
-
20787
-
20788
-
20789
-
20790
-
20791
-
20792
-
20793
-
20794
-
20795
-
20796
-
20797
-
20798
-
20799
-
20800
-
20801
-
20802
-
20803
-
20804
-
20805
-
20806
-
20807
-
20808
-
20809
-
20810
-
20811
-
20812
-
20813
-
20814
-
20815
-
20816
-
20817
-
20818
-
20819
-
20820
-
20821
-
20822
-
20823
-
20824
-
20825
-
20826
-
20827
-
20828
-
20829
-
20830
-
20831
-
20832
-
20833
-
20834
-
20835
-
20836
-
20837
-
20838
-
20839
-
20840
-
20841
-
20842
-
20843
-
20844
-
20845
-
20846
-
20847
-
20848
-
20849
-
20850
-
20851
-
20852
-
20853
-
20854
-
20855
-
20856
-
20857
-
20858
-
20859
-
20860
-
20861
-
20862
-
20863
-
20864
-
20865
-
20866
-
20867
-
20868
-
20869
-
20870
-
20871
-
20872
-
20873
-
20874
-
20875
-
20876
-
20877
-
20878
-
20879
-
20880
-
20881
-
20882
-
20883
-
20884
-
20885
-
20886
-
20887
-
20888
-
20889
-
20890
-
20891
-
20892
-
20893
-
20894
-
20895
-
20896
-
20897
-
20898
-
20899
-
20900
-
20901
-
20902
-
20903
-
20904
-
20905
-
20906
-
20907
-
20908
-
20909
-
20910
-
20911
-
20912
-
20913
-
20914
-
20915
-
20916
-
20917
-
20918
-
20919
-
20920
-
20921
-
20922
-
20923
-
20924
-
20925
-
20926
-
20927
-
20928
-
20929
-
20930
-
20931
-
20932
-
20933
-
20934
-
20935
-
20936
-
20937
-
20938
-
20939
-
20940
-
20941
-
20942
-
20943
-
20944
-
20945
-
20946
-
20947
-
20948
-
20949
-
20950
-
20951
-
20952
-
20953
-
20954
-
20955
-
20956
-
20957
-
20958
-
20959
-
20960
-
20961
-
20962
-
20963
-
20964
-
20965
-
20966
-
20967
-
20968
-
20969
-
20970
-
20971
-
20972
-
20973
-
20974
-
20975
-
20976
-
20977
-
20978
-
20979
-
20980
-
20981
-
20982
-
20983
-
20984
-
20985
-
20986
-
20987
-
20988
-
20989
-
20990
-
20991
-
20992
-
20993
-
20994
-
20995
-
20996
-
20997
-
20998
-
20999
-
21000
-
21001
-
21002
-
21003
-
21004
-
21005
-
21006
-
21007
-
21008
-
21009
-
21010
-
21011
-
21012
-
21013
-
21014
-
21015
-
21016
-
21017
-
21018
-
21019
-
21020
-
21021
-
21022
-
21023
-
21024
-
21025
-
21026
-
21027
-
21028
-
21029
-
21030
-
21031
-
21032
-
21033
-
21034
-
21035
-
21036
-
21037
-
21038
-
21039
-
21040
-
21041
-
21042
-
21043
-
21044
-
21045
-
21046
-
21047
-
21048
-
21049
-
21050
-
21051
-
21052
-
21053
-
21054
-
21055
-
21056
-
21057
-
21058
-
21059
-
21060
-
21061
-
21062
-
21063
-
21064
-
21065
-
21066
-
21067
-
21068
-
21069
-
21070
-
21071
-
21072
-
21073
-
21074
-
21075
-
21076
-
21077
-
21078
-
21079
-
21080
-
21081
-
21082
-
21083
-
21084
-
21085
-
21086
-
21087
-
21088
-
21089
-
21090
-
21091
-
21092
-
21093
-
21094
-
21095
-
21096
-
21097
-
21098
-
21099
-
21100
-
21101
-
21102
-
21103
-
21104
-
21105
-
21106
-
21107
-
21108
-
21109
-
21110
-
21111
-
21112
-
21113
-
21114
-
21115
-
21116
-
21117
-
21118
-
21119
-
21120
-
21121
-
21122
-
21123
-
21124
-
21125
-
21126
-
21127
-
21128
-
21129
-
21130
-
21131
-
21132
-
21133
-
21134
-
21135
-
21136
-
21137
-
21138
-
21139
-
21140
-
21141
-
21142
-
21143
-
21144
-
21145
-
21146
-
21147
-
21148
-
21149
-
21150
-
21151
-
21152
-
21153
-
21154
-
21155
-
21156
-
21157
-
21158
-
21159
-
21160
-
21161
-
21162
-
21163
-
21164
-
21165
-
21166
-
21167
-
21168
-
21169
-
21170
-
21171
-
21172
-
21173
-
21174
-
21175
-
21176
-
21177
-
21178
-
21179
-
21180
-
21181
-
21182
-
21183
-
21184
-
21185
-
21186
-
21187
-
21188
-
21189
-
21190
-
21191
-
21192
-
21193
-
21194
-
21195
-
21196
-
21197
-
21198
-
21199
-
21200
-
21201
-
21202
-
21203
-
21204
-
21205
-
21206
-
21207
-
21208
-
21209
-
21210
-
21211
-
21212
-
21213
-
21214
-
21215
-
21216
-
21217
-
21218
-
21219
-
21220
-
21221
-
21222
-
21223
-
21224
-
21225
-
21226
-
21227
-
21228
-
21229
-
21230
-
21231
-
21232
-
21233
-
21234
-
21235
-
21236
-
21237
-
21238
-
21239
-
21240
-
21241
-
21242
-
21243
-
21244
-
21245
-
21246
-
21247
-
21248
-
21249
-
21250
-
21251
-
21252
-
21253
-
21254
-
21255
-
21256
-
21257
-
21258
-
21259
-
21260
-
21261
-
21262
-
21263
-
21264
-
21265
-
21266
-
21267
-
21268
-
21269
-
21270
-
21271
-
21272
-
21273
-
21274
-
21275
-
21276
-
21277
-
21278
-
21279
-
21280
-
21281
-
21282
-
21283
-
21284
-
21285
-
21286
-
21287
-
21288
-
21289
-
21290
-
21291
-
21292
-
21293
-
21294
-
21295
-
21296
-
21297
-
21298
-
21299
-
21300
-
21301
-
21302
-
21303
-
21304
-
21305
-
21306
-
21307
-
21308
-
21309
-
21310
-
21311
-
21312
-
21313
-
21314
-
21315
-
21316
-
21317
-
21318
-
21319
-
21320
-
21321
-
21322
-
21323
-
21324
-
21325
-
21326
-
21327
-
21328
-
21329
-
21330
-
21331
-
21332
-
21333
-
21334
-
21335
-
21336
-
21337
-
21338
-
21339
-
21340
-
21341
-
21342
-
21343
-
21344
-
21345
-
21346
-
21347
-
21348
-
21349
-
21350
-
21351
-
21352
-
21353
-
21354
-
21355
-
21356
-
21357
-
21358
-
21359
-
21360
-
21361
-
21362
-
21363
-
21364
-
21365
-
21366
-
21367
-
21368
-
21369
-
21370
-
21371
-
21372
-
21373
-
21374
-
21375
-
21376
-
21377
-
21378
-
21379
-
21380
-
21381
-
21382
-
21383
-
21384
-
21385
-
21386
-
21387
-
21388
-
21389
-
21390
-
21391
-
21392
-
21393
-
21394
-
21395
-
21396
-
21397
-
21398
-
21399
-
21400
-
21401
-
21402
-
21403
-
21404
-
21405
-
21406
-
21407
-
21408
-
21409
-
21410
-
21411
-
21412
-
21413
-
21414
-
21415
-
21416
-
21417
-
21418
-
21419
-
21420
-
21421
-
21422
-
21423
-
21424
-
21425
-
21426
-
21427
-
21428
-
21429
-
21430
-
21431
-
21432
-
21433
-
21434
-
21435
-
21436
-
21437
-
21438
-
21439
-
21440
-
21441
-
21442
-
21443
-
21444
-
21445
-
21446
-
21447
-
21448
-
21449
-
21450
-
21451
-
21452
-
21453
-
21454
-
21455
-
21456
-
21457
-
21458
-
21459
-
21460
-
21461
-
21462
-
21463
-
21464
-
21465
-
21466
-
21467
-
21468
-
21469
-
21470
-
21471
-
21472
-
21473
-
21474
-
21475
-
21476
-
21477
-
21478
-
21479
-
21480
-
21481
-
21482
-
21483
-
21484
-
21485
-
21486
-
21487
-
21488
-
21489
-
21490
-
21491
-
21492
-
21493
-
21494
-
21495
-
21496
-
21497
-
21498
-
21499
-
21500
-
21501
-
21502
-
21503
-
21504
-
21505
-
21506
-
21507
-
21508
-
21509
-
21510
-
21511
-
21512
-
21513
-
21514
-
21515
-
21516
-
21517
-
21518
-
21519
-
21520
-
21521
-
21522
-
21523
-
21524
-
21525
-
21526
-
21527
-
21528
-
21529
-
21530
-
21531
-
21532
-
21533
-
21534
-
21535
-
21536
-
21537
-
21538
-
21539
-
21540
-
21541
-
21542
-
21543
-
21544
-
21545
-
21546
-
21547
-
21548
-
21549
-
21550
-
21551
-
21552
-
21553
-
21554
-
21555
-
21556
-
21557
-
21558
-
21559
-
21560
-
21561
-
21562
-
21563
-
21564
-
21565
-
21566
-
21567
-
21568
-
21569
-
21570
-
21571
-
21572
-
21573
-
21574
-
21575
-
21576
-
21577
-
21578
-
21579
-
21580
-
21581
-
21582
-
21583
-
21584
-
21585
-
21586
-
21587
-
21588
-
21589
-
21590
-
21591
-
21592
-
21593
-
21594
-
21595
-
21596
-
21597
-
21598
-
21599
-
21600
-
21601
-
21602
-
21603
-
21604
-
21605
-
21606
-
21607
-
21608
-
21609
-
21610
-
21611
-
21612
-
21613
-
21614
-
21615
-
21616
-
21617
-
21618
-
21619
-
21620
-
21621
-
21622
-
21623
-
21624
-
21625
-
21626
-
21627
-
21628
-
21629
-
21630
-
21631
-
21632
-
21633
-
21634
-
21635
-
21636
-
21637
-
21638
-
21639
-
21640
-
21641
-
21642
-
21643
-
21644
-
21645
-
21646
-
21647
-
21648
-
21649
-
21650
-
21651
-
21652
-
21653
-
21654
-
21655
-
21656
-
21657
-
21658
-
21659
-
21660
-
21661
-
21662
-
21663
-
21664
-
21665
-
21666
-
21667
-
21668
-
21669
-
21670
-
21671
-
21672
-
21673
-
21674
-
21675
-
21676
-
21677
-
21678
-
21679
-
21680
-
21681
-
21682
-
21683
-
21684
-
21685
-
21686
-
21687
-
21688
-
21689
-
21690
-
21691
-
21692
-
21693
-
21694
-
21695
-
21696
-
21697
-
21698
-
21699
-
21700
-
21701
-
21702
-
21703
-
21704
-
21705
-
21706
-
21707
-
21708
-
21709
-
21710
-
21711
-
21712
-
21713
-
21714
-
21715
-
21716
-
21717
-
21718
-
21719
-
21720
-
21721
-
21722
-
21723
-
21724
-
21725
-
21726
-
21727
-
21728
-
21729
-
21730
-
21731
-
21732
-
21733
-
21734
-
21735
-
21736
-
21737
-
21738
-
21739
-
21740
-
21741
-
21742
-
21743
-
21744
-
21745
-
21746
-
21747
-
21748
-
21749
-
21750
-
21751
-
21752
-
21753
-
21754
-
21755
-
21756
-
21757
-
21758
-
21759
-
21760
-
21761
-
21762
-
21763
-
21764
-
21765
-
21766
-
21767
-
21768
-
21769
-
21770
-
21771
-
21772
-
21773
-
21774
-
21775
-
21776
-
21777
-
21778
-
21779
-
21780
-
21781
-
21782
-
21783
-
21784
-
21785
-
21786
-
21787
-
21788
-
21789
-
21790
-
21791
-
21792
-
21793
-
21794
-
21795
-
21796
-
21797
-
21798
-
21799
-
21800
-
21801
-
21802
-
21803
-
21804
-
21805
-
21806
-
21807
-
21808
-
21809
-
21810
-
21811
-
21812
-
21813
-
21814
-
21815
-
21816
-
21817
-
21818
-
21819
-
21820
-
21821
-
21822
-
21823
-
21824
-
21825
-
21826
-
21827
-
21828
-
21829
-
21830
-
21831
-
21832
-
21833
-
21834
-
21835
-
21836
-
21837
-
21838
-
21839
-
21840
-
21841
-
21842
-
21843
-
21844
-
21845
-
21846
-
21847
-
21848
-
21849
-
21850
-
21851
-
21852
-
21853
-
21854
-
21855
-
21856
-
21857
-
21858
-
21859
-
21860
-
21861
-
21862
-
21863
-
21864
-
21865
-
21866
-
21867
-
21868
-
21869
-
21870
-
21871
-
21872
-
21873
-
21874
-
21875
-
21876
-
21877
-
21878
-
21879
-
21880
-
21881
-
21882
-
21883
-
21884
-
21885
-
21886
-
21887
-
21888
-
21889
-
21890
-
21891
-
21892
-
21893
-
21894
-
21895
-
21896
-
21897
-
21898
-
21899
-
21900
-
21901
-
21902
-
21903
-
21904
-
21905
-
21906
-
21907
-
21908
-
21909
-
21910
-
21911
-
21912
-
21913
-
21914
-
21915
-
21916
-
21917
-
21918
-
21919
-
21920
-
21921
-
21922
-
21923
-
21924
-
21925
-
21926
-
21927
-
21928
-
21929
-
21930
-
21931
-
21932
-
21933
-
21934
-
21935
-
21936
-
21937
-
21938
-
21939
-
21940
-
21941
-
21942
-
21943
-
21944
-
21945
-
21946
-
21947
-
21948
-
21949
-
21950
-
21951
-
21952
-
21953
-
21954
-
21955
-
21956
-
21957
-
21958
-
21959
-
21960
-
21961
-
21962
-
21963
-
21964
-
21965
-
21966
-
21967
-
21968
-
21969
-
21970
-
21971
-
21972
-
21973
-
21974
-
21975
-
21976
-
21977
-
21978
-
21979
-
21980
-
21981
-
21982
-
21983
-
21984
-
21985
-
21986
-
21987
-
21988
-
21989
-
21990
-
21991
-
21992
-
21993
-
21994
-
21995
-
21996
-
21997
-
21998
-
21999
-
22000
-
22001
-
22002
-
22003
-
22004
-
22005
-
22006
-
22007
-
22008
-
22009
-
22010
-
22011
-
22012
-
22013
-
22014
-
22015
-
22016
-
22017
-
22018
-
22019
-
22020
-
22021
-
22022
-
22023
-
22024
-
22025
-
22026
-
22027
-
22028
-
22029
-
22030
-
22031
-
22032
-
22033
-
22034
-
22035
-
22036
-
22037
-
22038
-
22039
-
22040
-
22041
-
22042
-
22043
-
22044
-
22045
-
22046
-
22047
-
22048
-
22049
-
22050
-
22051
-
22052
-
22053
-
22054
-
22055
-
22056
-
22057
-
22058
-
22059
-
22060
-
22061
-
22062
-
22063
-
22064
-
22065
-
22066
-
22067
-
22068
-
22069
-
22070
-
22071
-
22072
-
22073
-
22074
-
22075
-
22076
-
22077
-
22078
-
22079
-
22080
-
22081
-
22082
-
22083
-
22084
-
22085
-
22086
-
22087
-
22088
-
22089
-
22090
-
22091
-
22092
-
22093
-
22094
-
22095
-
22096
-
22097
-
22098
-
22099
-
22100
-
22101
-
22102
-
22103
-
22104
-
22105
-
22106
-
22107
-
22108
-
22109
-
22110
-
22111
-
22112
-
22113
-
22114
-
22115
-
22116
-
22117
-
22118
-
22119
-
22120
-
22121
-
22122
-
22123
-
22124
-
22125
-
22126
-
22127
-
22128
-
22129
-
22130
-
22131
-
22132
-
22133
-
22134
-
22135
-
22136
-
22137
-
22138
-
22139
-
22140
-
22141
-
22142
-
22143
-
22144
-
22145
-
22146
-
22147
-
22148
-
22149
-
22150
-
22151
-
22152
-
22153
-
22154
-
22155
-
22156
-
22157
-
22158
-
22159
-
22160
-
22161
-
22162
-
22163
-
22164
-
22165
-
22166
-
22167
-
22168
-
22169
-
22170
-
22171
-
22172
-
22173
-
22174
-
22175
-
22176
-
22177
-
22178
-
22179
-
22180
-
22181
-
22182
-
22183
-
22184
-
22185
-
22186
-
22187
-
22188
-
22189
-
22190
-
22191
-
22192
-
22193
-
22194
-
22195
-
22196
-
22197
-
22198
-
22199
-
22200
-
22201
-
22202
-
22203
-
22204
-
22205
-
22206
-
22207
-
22208
-
22209
-
22210
-
22211
-
22212
-
22213
-
22214
-
22215
-
22216
-
22217
-
22218
-
22219
-
22220
-
22221
-
22222
-
22223
-
22224
-
22225
-
22226
-
22227
-
22228
-
22229
-
22230
-
22231
-
22232
-
22233
-
22234
-
22235
-
22236
-
22237
-
22238
-
22239
-
22240
-
22241
-
22242
-
22243
-
22244
-
22245
-
22246
-
22247
-
22248
-
22249
-
22250
-
22251
-
22252
-
22253
-
22254
-
22255
-
22256
-
22257
-
22258
-
22259
-
22260
-
22261
-
22262
-
22263
-
22264
-
22265
-
22266
-
22267
-
22268
-
22269
-
22270
-
22271
-
22272
-
22273
-
22274
-
22275
-
22276
-
22277
-
22278
-
22279
-
22280
-
22281
-
22282
-
22283
-
22284
-
22285
-
22286
-
22287
-
22288
-
22289
-
22290
-
22291
-
22292
-
22293
-
22294
-
22295
-
22296
-
22297
-
22298
-
22299
-
22300
-
22301
-
22302
-
22303
-
22304
-
22305
-
22306
-
22307
-
22308
-
22309
-
22310
-
22311
-
22312
-
22313
-
22314
-
22315
-
22316
-
22317
-
22318
-
22319
-
22320
-
22321
-
22322
-
22323
-
22324
-
22325
-
22326
-
22327
-
22328
-
22329
-
22330
-
22331
-
22332
-
22333
-
22334
-
22335
-
22336
-
22337
-
22338
-
22339
-
22340
-
22341
-
22342
-
22343
-
22344
-
22345
-
22346
-
22347
-
22348
-
22349
-
22350
-
22351
-
22352
-
22353
-
22354
-
22355
-
22356
-
22357
-
22358
-
22359
-
22360
-
22361
-
22362
-
22363
-
22364
-
22365
-
22366
-
22367
-
22368
-
22369
-
22370
-
22371
-
22372
-
22373
-
22374
-
22375
-
22376
-
22377
-
22378
-
22379
-
22380
-
22381
-
22382
-
22383
-
22384
-
22385
-
22386
-
22387
-
22388
-
22389
-
22390
-
22391
-
22392
-
22393
-
22394
-
22395
-
22396
-
22397
-
22398
-
22399
-
22400
-
22401
-
22402
-
22403
-
22404
-
22405
-
22406
-
22407
-
22408
-
22409
-
22410
-
22411
-
22412
-
22413
-
22414
-
22415
-
22416
-
22417
-
22418
-
22419
-
22420
-
22421
-
22422
-
22423
-
22424
-
22425
-
22426
-
22427
-
22428
-
22429
-
22430
-
22431
-
22432
-
22433
-
22434
-
22435
-
22436
-
22437
-
22438
-
22439
-
22440
-
22441
-
22442
-
22443
-
22444
-
22445
-
22446
-
22447
-
22448
-
22449
-
22450
-
22451
-
22452
-
22453
-
22454
-
22455
-
22456
-
22457
-
22458
-
22459
-
22460
-
22461
-
22462
-
22463
-
22464
-
22465
-
22466
-
22467
-
22468
-
22469
-
22470
-
22471
-
22472
-
22473
-
22474
-
22475
-
22476
-
22477
-
22478
-
22479
-
22480
-
22481
-
22482
-
22483
-
22484
-
22485
-
22486
-
22487
-
22488
-
22489
-
22490
-
22491
-
22492
-
22493
-
22494
-
22495
-
22496
-
22497
-
22498
-
22499
-
22500
-
22501
-
22502
-
22503
-
22504
-
22505
-
22506
-
22507
-
22508
-
22509
-
22510
-
22511
-
22512
-
22513
-
22514
-
22515
-
22516
-
22517
-
22518
-
22519
-
22520
-
22521
-
22522
-
22523
-
22524
-
22525
-
22526
-
22527
-
22528
-
22529
-
22530
-
22531
-
22532
-
22533
-
22534
-
22535
-
22536
-
22537
-
22538
-
22539
-
22540
-
22541
-
22542
-
22543
-
22544
-
22545
-
22546
-
22547
-
22548
-
22549
-
22550
-
22551
-
22552
-
22553
-
22554
-
22555
-
22556
-
22557
-
22558
-
22559
-
22560
-
22561
-
22562
-
22563
-
22564
-
22565
-
22566
-
22567
-
22568
-
22569
-
22570
-
22571
-
22572
-
22573
-
22574
-
22575
-
22576
-
22577
-
22578
-
22579
-
22580
-
22581
-
22582
-
22583
-
22584
-
22585
-
22586
-
22587
-
22588
-
22589
-
22590
-
22591
-
22592
-
22593
-
22594
-
22595
-
22596
-
22597
-
22598
-
22599
-
22600
-
22601
-
22602
-
22603
-
22604
-
22605
-
22606
-
22607
-
22608
-
22609
-
22610
-
22611
-
22612
-
22613
-
22614
-
22615
-
22616
-
22617
-
22618
-
22619
-
22620
-
22621
-
22622
-
22623
-
22624
-
22625
-
22626
-
22627
-
22628
-
22629
-
22630
-
22631
-
22632
-
22633
-
22634
-
22635
-
22636
-
22637
-
22638
-
22639
-
22640
-
22641
-
22642
-
22643
-
22644
-
22645
-
22646
-
22647
-
22648
-
22649
-
22650
-
22651
-
22652
-
22653
-
22654
-
22655
-
22656
-
22657
-
22658
-
22659
-
22660
-
22661
-
22662
-
22663
-
22664
-
22665
-
22666
-
22667
-
22668
-
22669
-
22670
-
22671
-
22672
-
22673
-
22674
-
22675
-
22676
-
22677
-
22678
-
22679
-
22680
-
22681
-
22682
-
22683
-
22684
-
22685
-
22686
-
22687
-
22688
-
22689
-
22690
-
22691
-
22692
-
22693
-
22694
-
22695
-
22696
-
22697
-
22698
-
22699
-
22700
-
22701
-
22702
-
22703
-
22704
-
22705
-
22706
-
22707
-
22708
-
22709
-
22710
-
22711
-
22712
-
22713
-
22714
-
22715
-
22716
-
22717
-
22718
-
22719
-
22720
-
22721
-
22722
-
22723
-
22724
-
22725
-
22726
-
22727
-
22728
-
22729
-
22730
-
22731
-
22732
-
22733
-
22734
-
22735
-
22736
-
22737
-
22738
-
22739
-
22740
-
22741
-
22742
-
22743
-
22744
-
22745
-
22746
-
22747
-
22748
-
22749
-
22750
-
22751
-
22752
-
22753
-
22754
-
22755
-
22756
-
22757
-
22758
-
22759
-
22760
-
22761
-
22762
-
22763
-
22764
-
22765
-
22766
-
22767
-
22768
-
22769
-
22770
-
22771
-
22772
-
22773
-
22774
-
22775
-
22776
-
22777
-
22778
-
22779
-
22780
-
22781
-
22782
-
22783
-
22784
-
22785
-
22786
-
22787
-
22788
-
22789
-
22790
-
22791
-
22792
-
22793
-
22794
-
22795
-
22796
-
22797
-
22798
-
22799
-
22800
-
22801
-
22802
-
22803
-
22804
-
22805
-
22806
-
22807
-
22808
-
22809
-
22810
-
22811
-
22812
-
22813
-
22814
-
22815
-
22816
-
22817
-
22818
-
22819
-
22820
-
22821
-
22822
-
22823
-
22824
-
22825
-
22826
-
22827
-
22828
-
22829
-
22830
-
22831
-
22832
-
22833
-
22834
-
22835
-
22836
-
22837
-
22838
-
22839
-
22840
-
22841
-
22842
-
22843
-
22844
-
22845
-
22846
-
22847
-
22848
-
22849
-
22850
-
22851
-
22852
-
22853
-
22854
-
22855
-
22856
-
22857
-
22858
-
22859
-
22860
-
22861
-
22862
-
22863
-
22864
-
22865
-
22866
-
22867
-
22868
-
22869
-
22870
-
22871
-
22872
-
22873
-
22874
-
22875
-
22876
-
22877
-
22878
-
22879
-
22880
-
22881
-
22882
-
22883
-
22884
-
22885
-
22886
-
22887
-
22888
-
22889
-
22890
-
22891
-
22892
-
22893
-
22894
-
22895
-
22896
-
22897
-
22898
-
22899
-
22900
-
22901
-
22902
-
22903
-
22904
-
22905
-
22906
-
22907
-
22908
-
22909
-
22910
-
22911
-
22912
-
22913
-
22914
-
22915
-
22916
-
22917
-
22918
-
22919
-
22920
-
22921
-
22922
-
22923
-
22924
-
22925
-
22926
-
22927
-
22928
-
22929
-
22930
-
22931
-
22932
-
22933
-
22934
-
22935
-
22936
-
22937
-
22938
-
22939
-
22940
-
22941
-
22942
-
22943
-
22944
-
22945
-
22946
-
22947
-
22948
-
22949
-
22950
-
22951
-
22952
-
22953
-
22954
-
22955
-
22956
-
22957
-
22958
-
22959
-
22960
-
22961
-
22962
-
22963
-
22964
-
22965
-
22966
-
22967
-
22968
-
22969
-
22970
-
22971
-
22972
-
22973
-
22974
-
22975
-
22976
-
22977
-
22978
-
22979
-
22980
-
22981
-
22982
-
22983
-
22984
-
22985
-
22986
-
22987
-
22988
-
22989
-
22990
-
22991
-
22992
-
22993
-
22994
-
22995
-
22996
-
22997
-
22998
-
22999
-
23000
-
23001
-
23002
-
23003
-
23004
-
23005
-
23006
-
23007
-
23008
-
23009
-
23010
-
23011
-
23012
-
23013
-
23014
-
23015
-
23016
-
23017
-
23018
-
23019
-
23020
-
23021
-
23022
-
23023
-
23024
-
23025
-
23026
-
23027
-
23028
-
23029
-
23030
-
23031
-
23032
-
23033
-
23034
-
23035
-
23036
-
23037
-
23038
-
23039
-
23040
-
23041
-
23042
-
23043
-
23044
-
23045
-
23046
-
23047
-
23048
-
23049
-
23050
-
23051
-
23052
-
23053
-
23054
-
23055
-
23056
-
23057
-
23058
-
23059
-
23060
-
23061
-
23062
-
23063
-
23064
-
23065
-
23066
-
23067
-
23068
-
23069
-
23070
-
23071
-
23072
-
23073
-
23074
-
23075
-
23076
-
23077
-
23078
-
23079
-
23080
-
23081
-
23082
-
23083
-
23084
-
23085
-
23086
-
23087
-
23088
-
23089
-
23090
-
23091
-
23092
-
23093
-
23094
-
23095
-
23096
-
23097
-
23098
-
23099
-
23100
-
23101
-
23102
-
23103
-
23104
-
23105
-
23106
-
23107
-
23108
-
23109
-
23110
-
23111
-
23112
-
23113
-
23114
-
23115
-
23116
-
23117
-
23118
-
23119
-
23120
-
23121
-
23122
-
23123
-
23124
-
23125
-
23126
-
23127
-
23128
-
23129
-
23130
-
23131
-
23132
-
23133
-
23134
-
23135
-
23136
-
23137
-
23138
-
23139
-
23140
-
23141
-
23142
-
23143
-
23144
-
23145
-
23146
-
23147
-
23148
-
23149
-
23150
-
23151
-
23152
-
23153
-
23154
-
23155
-
23156
-
23157
-
23158
-
23159
-
23160
-
23161
-
23162
-
23163
-
23164
-
23165
-
23166
-
23167
-
23168
-
23169
-
23170
-
23171
-
23172
-
23173
-
23174
-
23175
-
23176
-
23177
-
23178
-
23179
-
23180
-
23181
-
23182
-
23183
-
23184
-
23185
-
23186
-
23187
-
23188
-
23189
-
23190
-
23191
-
23192
-
23193
-
23194
-
23195
-
23196
-
23197
-
23198
-
23199
-
23200
-
23201
-
23202
-
23203
-
23204
-
23205
-
23206
-
23207
-
23208
-
23209
-
23210
-
23211
-
23212
-
23213
-
23214
-
23215
-
23216
-
23217
-
23218
-
23219
-
23220
-
23221
-
23222
-
23223
-
23224
-
23225
-
23226
-
23227
-
23228
-
23229
-
23230
-
23231
-
23232
-
23233
-
23234
-
23235
-
23236
-
23237
-
23238
-
23239
-
23240
-
23241
-
23242
-
23243
-
23244
-
23245
-
23246
-
23247
-
23248
-
23249
-
23250
-
23251
-
23252
-
23253
-
23254
-
23255
-
23256
-
23257
-
23258
-
23259
-
23260
-
23261
-
23262
-
23263
-
23264
-
23265
-
23266
-
23267
-
23268
-
23269
-
23270
-
23271
-
23272
-
23273
-
23274
-
23275
-
23276
-
23277
-
23278
-
23279
-
23280
-
23281
-
23282
-
23283
-
23284
-
23285
-
23286
-
23287
-
23288
-
23289
-
23290
-
23291
-
23292
-
23293
-
23294
-
23295
-
23296
-
23297
-
23298
-
23299
-
23300
-
23301
-
23302
-
23303
-
23304
-
23305
-
23306
-
23307
-
23308
-
23309
-
23310
-
23311
-
23312
-
23313
-
23314
-
23315
-
23316
-
23317
-
23318
-
23319
-
23320
-
23321
-
23322
-
23323
-
23324
-
23325
-
23326
-
23327
-
23328
-
23329
-
23330
-
23331
-
23332
-
23333
-
23334
-
23335
-
23336
-
23337
-
23338
-
23339
-
23340
-
23341
-
23342
-
23343
-
23344
-
23345
-
23346
-
23347
-
23348
-
23349
-
23350
-
23351
-
23352
-
23353
-
23354
-
23355
-
23356
-
23357
-
23358
-
23359
-
23360
-
23361
-
23362
-
23363
-
23364
-
23365
-
23366
-
23367
-
23368
-
23369
-
23370
-
23371
-
23372
-
23373
-
23374
-
23375
-
23376
-
23377
-
23378
-
23379
-
23380
-
23381
-
23382
-
23383
-
23384
-
23385
-
23386
-
23387
-
23388
-
23389
-
23390
-
23391
-
23392
-
23393
-
23394
-
23395
-
23396
-
23397
-
23398
-
23399
-
23400
-
23401
-
23402
-
23403
-
23404
-
23405
-
23406
-
23407
-
23408
-
23409
-
23410
-
23411
-
23412
-
23413
-
23414
-
23415
-
23416
-
23417
-
23418
-
23419
-
23420
-
23421
-
23422
-
23423
-
23424
-
23425
-
23426
-
23427
-
23428
-
23429
-
23430
-
23431
-
23432
-
23433
-
23434
-
23435
-
23436
-
23437
-
23438
-
23439
-
23440
-
23441
-
23442
-
23443
-
23444
-
23445
-
23446
-
23447
-
23448
-
23449
-
23450
-
23451
-
23452
-
23453
-
23454
-
23455
-
23456
-
23457
-
23458
-
23459
-
23460
-
23461
-
23462
-
23463
-
23464
-
23465
-
23466
-
23467
-
23468
-
23469
-
23470
-
23471
-
23472
-
23473
-
23474
-
23475
-
23476
-
23477
-
23478
-
23479
-
23480
-
23481
-
23482
-
23483
-
23484
-
23485
-
23486
-
23487
-
23488
-
23489
-
23490
-
23491
-
23492
-
23493
-
23494
-
23495
-
23496
-
23497
-
23498
-
23499
-
23500
-
23501
-
23502
-
23503
-
23504
-
23505
-
23506
-
23507
-
23508
-
23509
-
23510
-
23511
-
23512
-
23513
-
23514
-
23515
-
23516
-
23517
-
23518
-
23519
-
23520
-
23521
-
23522
-
23523
-
23524
-
23525
-
23526
-
23527
-
23528
-
23529
-
23530
-
23531
-
23532
-
23533
-
23534
-
23535
-
23536
-
23537
-
23538
-
23539
-
23540
-
23541
-
23542
-
23543
-
23544
-
23545
-
23546
-
23547
-
23548
-
23549
-
23550
-
23551
-
23552
-
23553
-
23554
-
23555
-
23556
-
23557
-
23558
-
23559
-
23560
-
23561
-
23562
-
23563
-
23564
-
23565
-
23566
-
23567
-
23568
-
23569
-
23570
-
23571
-
23572
-
23573
-
23574
-
23575
-
23576
-
23577
-
23578
-
23579
-
23580
-
23581
-
23582
-
23583
-
23584
-
23585
-
23586
-
23587
-
23588
-
23589
-
23590
-
23591
-
23592
-
23593
-
23594
-
23595
-
23596
-
23597
-
23598
/**
* @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 webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define("pdfjs-dist/build/pdf", [], factory);
else if(typeof exports === 'object')
exports["pdfjs-dist/build/pdf"] = factory();
else
root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
})(this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __w_pdfjs_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, __w_pdfjs_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __w_pdfjs_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __w_pdfjs_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __w_pdfjs_require__.d = function(exports, name, getter) {
/******/ if(!__w_pdfjs_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __w_pdfjs_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
/******/ __w_pdfjs_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __w_pdfjs_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __w_pdfjs_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __w_pdfjs_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __w_pdfjs_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __w_pdfjs_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var pdfjsVersion = '2.1.266';
var pdfjsBuild = '81f5835c';
var pdfjsSharedUtil = __w_pdfjs_require__(1);
var pdfjsDisplayAPI = __w_pdfjs_require__(146);
var pdfjsDisplayTextLayer = __w_pdfjs_require__(162);
var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(163);
var pdfjsDisplayDOMUtils = __w_pdfjs_require__(151);
var pdfjsDisplaySVG = __w_pdfjs_require__(164);
var pdfjsDisplayWorkerOptions = __w_pdfjs_require__(156);
var pdfjsDisplayAPICompatibility = __w_pdfjs_require__(153);
{
var isNodeJS = __w_pdfjs_require__(4);
if (isNodeJS()) {
var PDFNodeStream = __w_pdfjs_require__(165).PDFNodeStream;
pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
return new PDFNodeStream(params);
});
} else if (typeof Response !== 'undefined' && 'body' in Response.prototype && typeof ReadableStream !== 'undefined') {
var PDFFetchStream = __w_pdfjs_require__(168).PDFFetchStream;
pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
return new PDFFetchStream(params);
});
} else {
var PDFNetworkStream = __w_pdfjs_require__(169).PDFNetworkStream;
pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
return new PDFNetworkStream(params);
});
}
}
exports.build = pdfjsDisplayAPI.build;
exports.version = pdfjsDisplayAPI.version;
exports.getDocument = pdfjsDisplayAPI.getDocument;
exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;
exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;
exports.PDFWorker = pdfjsDisplayAPI.PDFWorker;
exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;
exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;
exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;
exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;
exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;
exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;
exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;
exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;
exports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType;
exports.PermissionFlag = pdfjsSharedUtil.PermissionFlag;
exports.UnexpectedResponseException = pdfjsSharedUtil.UnexpectedResponseException;
exports.OPS = pdfjsSharedUtil.OPS;
exports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel;
exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;
exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;
exports.createObjectURL = pdfjsSharedUtil.createObjectURL;
exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;
exports.shadow = pdfjsSharedUtil.shadow;
exports.Util = pdfjsSharedUtil.Util;
exports.ReadableStream = pdfjsSharedUtil.ReadableStream;
exports.URL = pdfjsSharedUtil.URL;
exports.RenderingCancelledException = pdfjsDisplayDOMUtils.RenderingCancelledException;
exports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl;
exports.LinkTarget = pdfjsDisplayDOMUtils.LinkTarget;
exports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;
exports.loadScript = pdfjsDisplayDOMUtils.loadScript;
exports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions;
exports.apiCompatibilityParams = pdfjsDisplayAPICompatibility.apiCompatibilityParams;
/***/ }),
/* 1 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.toRomanNumerals = toRomanNumerals;
exports.arrayByteLength = arrayByteLength;
exports.arraysToBytes = arraysToBytes;
exports.assert = assert;
exports.bytesToString = bytesToString;
exports.createPromiseCapability = createPromiseCapability;
exports.deprecated = deprecated;
exports.getInheritableProperty = getInheritableProperty;
exports.getLookupTableFactory = getLookupTableFactory;
exports.getVerbosityLevel = getVerbosityLevel;
exports.info = info;
exports.isArrayBuffer = isArrayBuffer;
exports.isBool = isBool;
exports.isEmptyObj = isEmptyObj;
exports.isNum = isNum;
exports.isString = isString;
exports.isSpace = isSpace;
exports.isSameOrigin = isSameOrigin;
exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
exports.isLittleEndian = isLittleEndian;
exports.isEvalSupported = isEvalSupported;
exports.log2 = log2;
exports.readInt8 = readInt8;
exports.readUint16 = readUint16;
exports.readUint32 = readUint32;
exports.removeNullCharacters = removeNullCharacters;
exports.setVerbosityLevel = setVerbosityLevel;
exports.shadow = shadow;
exports.string32 = string32;
exports.stringToBytes = stringToBytes;
exports.stringToPDFString = stringToPDFString;
exports.stringToUTF8String = stringToUTF8String;
exports.utf8StringToString = utf8StringToString;
exports.warn = warn;
exports.unreachable = unreachable;
Object.defineProperty(exports, "ReadableStream", {
enumerable: true,
get: function get() {
return _streams_polyfill.ReadableStream;
}
});
Object.defineProperty(exports, "URL", {
enumerable: true,
get: function get() {
return _url_polyfill.URL;
}
});
exports.createObjectURL = exports.FormatError = exports.XRefParseException = exports.XRefEntryException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = void 0;
__w_pdfjs_require__(2);
var _streams_polyfill = __w_pdfjs_require__(142);
var _url_polyfill = __w_pdfjs_require__(144);
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 IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
var NativeImageDecoding = {
NONE: 'none',
DECODE: 'decode',
DISPLAY: 'display'
};
exports.NativeImageDecoding = NativeImageDecoding;
var PermissionFlag = {
PRINT: 0x04,
MODIFY_CONTENTS: 0x08,
COPY: 0x10,
MODIFY_ANNOTATIONS: 0x20,
FILL_INTERACTIVE_FORMS: 0x100,
COPY_FOR_ACCESSIBILITY: 0x200,
ASSEMBLE: 0x400,
PRINT_HIGH_QUALITY: 0x800
};
exports.PermissionFlag = PermissionFlag;
var TextRenderingMode = {
FILL: 0,
STROKE: 1,
FILL_STROKE: 2,
INVISIBLE: 3,
FILL_ADD_TO_PATH: 4,
STROKE_ADD_TO_PATH: 5,
FILL_STROKE_ADD_TO_PATH: 6,
ADD_TO_PATH: 7,
FILL_STROKE_MASK: 3,
ADD_TO_PATH_FLAG: 4
};
exports.TextRenderingMode = TextRenderingMode;
var ImageKind = {
GRAYSCALE_1BPP: 1,
RGB_24BPP: 2,
RGBA_32BPP: 3
};
exports.ImageKind = ImageKind;
var AnnotationType = {
TEXT: 1,
LINK: 2,
FREETEXT: 3,
LINE: 4,
SQUARE: 5,
CIRCLE: 6,
POLYGON: 7,
POLYLINE: 8,
HIGHLIGHT: 9,
UNDERLINE: 10,
SQUIGGLY: 11,
STRIKEOUT: 12,
STAMP: 13,
CARET: 14,
INK: 15,
POPUP: 16,
FILEATTACHMENT: 17,
SOUND: 18,
MOVIE: 19,
WIDGET: 20,
SCREEN: 21,
PRINTERMARK: 22,
TRAPNET: 23,
WATERMARK: 24,
THREED: 25,
REDACT: 26
};
exports.AnnotationType = AnnotationType;
var AnnotationFlag = {
INVISIBLE: 0x01,
HIDDEN: 0x02,
PRINT: 0x04,
NOZOOM: 0x08,
NOROTATE: 0x10,
NOVIEW: 0x20,
READONLY: 0x40,
LOCKED: 0x80,
TOGGLENOVIEW: 0x100,
LOCKEDCONTENTS: 0x200
};
exports.AnnotationFlag = AnnotationFlag;
var AnnotationFieldFlag = {
READONLY: 0x0000001,
REQUIRED: 0x0000002,
NOEXPORT: 0x0000004,
MULTILINE: 0x0001000,
PASSWORD: 0x0002000,
NOTOGGLETOOFF: 0x0004000,
RADIO: 0x0008000,
PUSHBUTTON: 0x0010000,
COMBO: 0x0020000,
EDIT: 0x0040000,
SORT: 0x0080000,
FILESELECT: 0x0100000,
MULTISELECT: 0x0200000,
DONOTSPELLCHECK: 0x0400000,
DONOTSCROLL: 0x0800000,
COMB: 0x1000000,
RICHTEXT: 0x2000000,
RADIOSINUNISON: 0x2000000,
COMMITONSELCHANGE: 0x4000000
};
exports.AnnotationFieldFlag = AnnotationFieldFlag;
var AnnotationBorderStyleType = {
SOLID: 1,
DASHED: 2,
BEVELED: 3,
INSET: 4,
UNDERLINE: 5
};
exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
var StreamType = {
UNKNOWN: 0,
FLATE: 1,
LZW: 2,
DCT: 3,
JPX: 4,
JBIG: 5,
A85: 6,
AHX: 7,
CCF: 8,
RL: 9
};
exports.StreamType = StreamType;
var FontType = {
UNKNOWN: 0,
TYPE1: 1,
TYPE1C: 2,
CIDFONTTYPE0: 3,
CIDFONTTYPE0C: 4,
TRUETYPE: 5,
CIDFONTTYPE2: 6,
TYPE3: 7,
OPENTYPE: 8,
TYPE0: 9,
MMTYPE1: 10
};
exports.FontType = FontType;
var VerbosityLevel = {
ERRORS: 0,
WARNINGS: 1,
INFOS: 5
};
exports.VerbosityLevel = VerbosityLevel;
var CMapCompressionType = {
NONE: 0,
BINARY: 1,
STREAM: 2
};
exports.CMapCompressionType = CMapCompressionType;
var OPS = {
dependency: 1,
setLineWidth: 2,
setLineCap: 3,
setLineJoin: 4,
setMiterLimit: 5,
setDash: 6,
setRenderingIntent: 7,
setFlatness: 8,
setGState: 9,
save: 10,
restore: 11,
transform: 12,
moveTo: 13,
lineTo: 14,
curveTo: 15,
curveTo2: 16,
curveTo3: 17,
closePath: 18,
rectangle: 19,
stroke: 20,
closeStroke: 21,
fill: 22,
eoFill: 23,
fillStroke: 24,
eoFillStroke: 25,
closeFillStroke: 26,
closeEOFillStroke: 27,
endPath: 28,
clip: 29,
eoClip: 30,
beginText: 31,
endText: 32,
setCharSpacing: 33,
setWordSpacing: 34,
setHScale: 35,
setLeading: 36,
setFont: 37,
setTextRenderingMode: 38,
setTextRise: 39,
moveText: 40,
setLeadingMoveText: 41,
setTextMatrix: 42,
nextLine: 43,
showText: 44,
showSpacedText: 45,
nextLineShowText: 46,
nextLineSetSpacingShowText: 47,
setCharWidth: 48,
setCharWidthAndBounds: 49,
setStrokeColorSpace: 50,
setFillColorSpace: 51,
setStrokeColor: 52,
setStrokeColorN: 53,
setFillColor: 54,
setFillColorN: 55,
setStrokeGray: 56,
setFillGray: 57,
setStrokeRGBColor: 58,
setFillRGBColor: 59,
setStrokeCMYKColor: 60,
setFillCMYKColor: 61,
shadingFill: 62,
beginInlineImage: 63,
beginImageData: 64,
endInlineImage: 65,
paintXObject: 66,
markPoint: 67,
markPointProps: 68,
beginMarkedContent: 69,
beginMarkedContentProps: 70,
endMarkedContent: 71,
beginCompat: 72,
endCompat: 73,
paintFormXObjectBegin: 74,
paintFormXObjectEnd: 75,
beginGroup: 76,
endGroup: 77,
beginAnnotations: 78,
endAnnotations: 79,
beginAnnotation: 80,
endAnnotation: 81,
paintJpegXObject: 82,
paintImageMaskXObject: 83,
paintImageMaskXObjectGroup: 84,
paintImageXObject: 85,
paintInlineImageXObject: 86,
paintInlineImageXObjectGroup: 87,
paintImageXObjectRepeat: 88,
paintImageMaskXObjectRepeat: 89,
paintSolidColorImageMask: 90,
constructPath: 91
};
exports.OPS = OPS;
var UNSUPPORTED_FEATURES = {
unknown: 'unknown',
forms: 'forms',
javaScript: 'javaScript',
smask: 'smask',
shadingPattern: 'shadingPattern',
font: 'font'
};
exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
var PasswordResponses = {
NEED_PASSWORD: 1,
INCORRECT_PASSWORD: 2
};
exports.PasswordResponses = PasswordResponses;
var verbosity = VerbosityLevel.WARNINGS;
function setVerbosityLevel(level) {
if (Number.isInteger(level)) {
verbosity = level;
}
}
function getVerbosityLevel() {
return verbosity;
}
function info(msg) {
if (verbosity >= VerbosityLevel.INFOS) {
console.log('Info: ' + msg);
}
}
function warn(msg) {
if (verbosity >= VerbosityLevel.WARNINGS) {
console.log('Warning: ' + msg);
}
}
function deprecated(details) {
console.log('Deprecated API usage: ' + details);
}
function unreachable(msg) {
throw new Error(msg);
}
function assert(cond, msg) {
if (!cond) {
unreachable(msg);
}
}
function isSameOrigin(baseUrl, otherUrl) {
try {
var base = new _url_polyfill.URL(baseUrl);
if (!base.origin || base.origin === 'null') {
return false;
}
} catch (e) {
return false;
}
var other = new _url_polyfill.URL(otherUrl, base);
return base.origin === other.origin;
}
function _isValidProtocol(url) {
if (!url) {
return false;
}
switch (url.protocol) {
case 'http:':
case 'https:':
case 'ftp:':
case 'mailto:':
case 'tel:':
return true;
default:
return false;
}
}
function createValidAbsoluteUrl(url, baseUrl) {
if (!url) {
return null;
}
try {
var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url);
if (_isValidProtocol(absoluteUrl)) {
return absoluteUrl;
}
} catch (ex) {}
return null;
}
function shadow(obj, prop, value) {
Object.defineProperty(obj, prop, {
value: value,
enumerable: true,
configurable: true,
writable: false
});
return value;
}
function getLookupTableFactory(initializer) {
var lookup;
return function () {
if (initializer) {
lookup = Object.create(null);
initializer(lookup);
initializer = null;
}
return lookup;
};
}
var PasswordException = function PasswordExceptionClosure() {
function PasswordException(msg, code) {
this.name = 'PasswordException';
this.message = msg;
this.code = code;
}
PasswordException.prototype = new Error();
PasswordException.constructor = PasswordException;
return PasswordException;
}();
exports.PasswordException = PasswordException;
var UnknownErrorException = function UnknownErrorExceptionClosure() {
function UnknownErrorException(msg, details) {
this.name = 'UnknownErrorException';
this.message = msg;
this.details = details;
}
UnknownErrorException.prototype = new Error();
UnknownErrorException.constructor = UnknownErrorException;
return UnknownErrorException;
}();
exports.UnknownErrorException = UnknownErrorException;
var InvalidPDFException = function InvalidPDFExceptionClosure() {
function InvalidPDFException(msg) {
this.name = 'InvalidPDFException';
this.message = msg;
}
InvalidPDFException.prototype = new Error();
InvalidPDFException.constructor = InvalidPDFException;
return InvalidPDFException;
}();
exports.InvalidPDFException = InvalidPDFException;
var MissingPDFException = function MissingPDFExceptionClosure() {
function MissingPDFException(msg) {
this.name = 'MissingPDFException';
this.message = msg;
}
MissingPDFException.prototype = new Error();
MissingPDFException.constructor = MissingPDFException;
return MissingPDFException;
}();
exports.MissingPDFException = MissingPDFException;
var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() {
function UnexpectedResponseException(msg, status) {
this.name = 'UnexpectedResponseException';
this.message = msg;
this.status = status;
}
UnexpectedResponseException.prototype = new Error();
UnexpectedResponseException.constructor = UnexpectedResponseException;
return UnexpectedResponseException;
}();
exports.UnexpectedResponseException = UnexpectedResponseException;
var MissingDataException = function MissingDataExceptionClosure() {
function MissingDataException(begin, end) {
this.begin = begin;
this.end = end;
this.message = 'Missing data [' + begin + ', ' + end + ')';
}
MissingDataException.prototype = new Error();
MissingDataException.prototype.name = 'MissingDataException';
MissingDataException.constructor = MissingDataException;
return MissingDataException;
}();
exports.MissingDataException = MissingDataException;
var XRefEntryException = function XRefEntryExceptionClosure() {
function XRefEntryException(msg) {
this.message = msg;
}
XRefEntryException.prototype = new Error();
XRefEntryException.prototype.name = 'XRefEntryException';
XRefEntryException.constructor = XRefEntryException;
return XRefEntryException;
}();
exports.XRefEntryException = XRefEntryException;
var XRefParseException = function XRefParseExceptionClosure() {
function XRefParseException(msg) {
this.message = msg;
}
XRefParseException.prototype = new Error();
XRefParseException.prototype.name = 'XRefParseException';
XRefParseException.constructor = XRefParseException;
return XRefParseException;
}();
exports.XRefParseException = XRefParseException;
var FormatError = function FormatErrorClosure() {
function FormatError(msg) {
this.message = msg;
}
FormatError.prototype = new Error();
FormatError.prototype.name = 'FormatError';
FormatError.constructor = FormatError;
return FormatError;
}();
exports.FormatError = FormatError;
var AbortException = function AbortExceptionClosure() {
function AbortException(msg) {
this.name = 'AbortException';
this.message = msg;
}
AbortException.prototype = new Error();
AbortException.constructor = AbortException;
return AbortException;
}();
exports.AbortException = AbortException;
var NullCharactersRegExp = /\x00/g;
function removeNullCharacters(str) {
if (typeof str !== 'string') {
warn('The argument for removeNullCharacters must be a string.');
return str;
}
return str.replace(NullCharactersRegExp, '');
}
function bytesToString(bytes) {
assert(bytes !== null && _typeof(bytes) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');
var length = bytes.length;
var MAX_ARGUMENT_COUNT = 8192;
if (length < MAX_ARGUMENT_COUNT) {
return String.fromCharCode.apply(null, bytes);
}
var strBuf = [];
for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
var chunk = bytes.subarray(i, chunkEnd);
strBuf.push(String.fromCharCode.apply(null, chunk));
}
return strBuf.join('');
}
function stringToBytes(str) {
assert(typeof str === 'string', 'Invalid argument for stringToBytes');
var length = str.length;
var bytes = new Uint8Array(length);
for (var i = 0; i < length; ++i) {
bytes[i] = str.charCodeAt(i) & 0xFF;
}
return bytes;
}
function arrayByteLength(arr) {
if (arr.length !== undefined) {
return arr.length;
}
assert(arr.byteLength !== undefined);
return arr.byteLength;
}
function arraysToBytes(arr) {
if (arr.length === 1 && arr[0] instanceof Uint8Array) {
return arr[0];
}
var resultLength = 0;
var i,
ii = arr.length;
var item, itemLength;
for (i = 0; i < ii; i++) {
item = arr[i];
itemLength = arrayByteLength(item);
resultLength += itemLength;
}
var pos = 0;
var data = new Uint8Array(resultLength);
for (i = 0; i < ii; i++) {
item = arr[i];
if (!(item instanceof Uint8Array)) {
if (typeof item === 'string') {
item = stringToBytes(item);
} else {
item = new Uint8Array(item);
}
}
itemLength = item.byteLength;
data.set(item, pos);
pos += itemLength;
}
return data;
}
function string32(value) {
return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
}
function log2(x) {
if (x <= 0) {
return 0;
}
return Math.ceil(Math.log2(x));
}
function readInt8(data, start) {
return data[start] << 24 >> 24;
}
function readUint16(data, offset) {
return data[offset] << 8 | data[offset + 1];
}
function readUint32(data, offset) {
return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;
}
function isLittleEndian() {
var buffer8 = new Uint8Array(4);
buffer8[0] = 1;
var view32 = new Uint32Array(buffer8.buffer, 0, 1);
return view32[0] === 1;
}
function isEvalSupported() {
try {
new Function('');
return true;
} catch (e) {
return false;
}
}
function getInheritableProperty(_ref) {
var dict = _ref.dict,
key = _ref.key,
_ref$getArray = _ref.getArray,
getArray = _ref$getArray === void 0 ? false : _ref$getArray,
_ref$stopWhenFound = _ref.stopWhenFound,
stopWhenFound = _ref$stopWhenFound === void 0 ? true : _ref$stopWhenFound;
var LOOP_LIMIT = 100;
var loopCount = 0;
var values;
while (dict) {
var value = getArray ? dict.getArray(key) : dict.get(key);
if (value !== undefined) {
if (stopWhenFound) {
return value;
}
if (!values) {
values = [];
}
values.push(value);
}
if (++loopCount > LOOP_LIMIT) {
warn("getInheritableProperty: maximum loop count exceeded for \"".concat(key, "\""));
break;
}
dict = dict.get('Parent');
}
return values;
}
var Util = function UtilClosure() {
function Util() {}
var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
rgbBuf[1] = r;
rgbBuf[3] = g;
rgbBuf[5] = b;
return rgbBuf.join('');
};
Util.transform = function Util_transform(m1, m2) {
return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];
};
Util.applyTransform = function Util_applyTransform(p, m) {
var xt = p[0] * m[0] + p[1] * m[2] + m[4];
var yt = p[0] * m[1] + p[1] * m[3] + m[5];
return [xt, yt];
};
Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
var d = m[0] * m[3] - m[1] * m[2];
var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
return [xt, yt];
};
Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) {
var p1 = Util.applyTransform(r, m);
var p2 = Util.applyTransform(r.slice(2, 4), m);
var p3 = Util.applyTransform([r[0], r[3]], m);
var p4 = Util.applyTransform([r[2], r[1]], m);
return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];
};
Util.inverseTransform = function Util_inverseTransform(m) {
var d = m[0] * m[3] - m[1] * m[2];
return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
};
Util.apply3dTransform = function Util_apply3dTransform(m, v) {
return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];
};
Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) {
var transpose = [m[0], m[2], m[1], m[3]];
var a = m[0] * transpose[0] + m[1] * transpose[2];
var b = m[0] * transpose[1] + m[1] * transpose[3];
var c = m[2] * transpose[0] + m[3] * transpose[2];
var d = m[2] * transpose[1] + m[3] * transpose[3];
var first = (a + d) / 2;
var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
var sx = first + second || 1;
var sy = first - second || 1;
return [Math.sqrt(sx), Math.sqrt(sy)];
};
Util.normalizeRect = function Util_normalizeRect(rect) {
var r = rect.slice(0);
if (rect[0] > rect[2]) {
r[0] = rect[2];
r[2] = rect[0];
}
if (rect[1] > rect[3]) {
r[1] = rect[3];
r[3] = rect[1];
}
return r;
};
Util.intersect = function Util_intersect(rect1, rect2) {
function compare(a, b) {
return a - b;
}
var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
result = [];
rect1 = Util.normalizeRect(rect1);
rect2 = Util.normalizeRect(rect2);
if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
result[0] = orderedX[1];
result[2] = orderedX[2];
} else {
return false;
}
if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
result[1] = orderedY[1];
result[3] = orderedY[2];
} else {
return false;
}
return result;
};
return Util;
}();
exports.Util = Util;
var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];
function toRomanNumerals(number) {
var lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
assert(Number.isInteger(number) && number > 0, 'The number should be a positive integer.');
var pos,
romanBuf = [];
while (number >= 1000) {
number -= 1000;
romanBuf.push('M');
}
pos = number / 100 | 0;
number %= 100;
romanBuf.push(ROMAN_NUMBER_MAP[pos]);
pos = number / 10 | 0;
number %= 10;
romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);
romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);
var romanStr = romanBuf.join('');
return lowerCase ? romanStr.toLowerCase() : romanStr;
}
var PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];
function stringToPDFString(str) {
var i,
n = str.length,
strBuf = [];
if (str[0] === '\xFE' && str[1] === '\xFF') {
for (i = 2; i < n; i += 2) {
strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
}
} else {
for (i = 0; i < n; ++i) {
var code = PDFStringTranslateTable[str.charCodeAt(i)];
strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
}
}
return strBuf.join('');
}
function stringToUTF8String(str) {
return decodeURIComponent(escape(str));
}
function utf8StringToString(str) {
return unescape(encodeURIComponent(str));
}
function isEmptyObj(obj) {
for (var key in obj) {
return false;
}
return true;
}
function isBool(v) {
return typeof v === 'boolean';
}
function isNum(v) {
return typeof v === 'number';
}
function isString(v) {
return typeof v === 'string';
}
function isArrayBuffer(v) {
return _typeof(v) === 'object' && v !== null && v.byteLength !== undefined;
}
function isSpace(ch) {
return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;
}
function createPromiseCapability() {
var capability = Object.create(null);
var isSettled = false;
Object.defineProperty(capability, 'settled', {
get: function get() {
return isSettled;
}
});
capability.promise = new Promise(function (resolve, reject) {
capability.resolve = function (data) {
isSettled = true;
resolve(data);
};
capability.reject = function (reason) {
isSettled = true;
reject(reason);
};
});
return capability;
}
var createObjectURL = function createObjectURLClosure() {
var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
return function createObjectURL(data, contentType) {
var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (!forceDataSchema && _url_polyfill.URL.createObjectURL) {
var blob = new Blob([data], {
type: contentType
});
return _url_polyfill.URL.createObjectURL(blob);
}
var buffer = 'data:' + contentType + ';base64,';
for (var i = 0, ii = data.length; i < ii; i += 3) {
var b1 = data[i] & 0xFF;
var b2 = data[i + 1] & 0xFF;
var b3 = data[i + 2] & 0xFF;
var d1 = b1 >> 2,
d2 = (b1 & 3) << 4 | b2 >> 4;
var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;
var d4 = i + 2 < ii ? b3 & 0x3F : 64;
buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
}
return buffer;
};
}();
exports.createObjectURL = createObjectURL;
/***/ }),
/* 2 */
/***/ (function(module, exports, __w_pdfjs_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 globalScope = __w_pdfjs_require__(3);
if (!globalScope._pdfjsCompatibilityChecked) {
globalScope._pdfjsCompatibilityChecked = true;
var isNodeJS = __w_pdfjs_require__(4);
var hasDOM = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object';
(function checkNodeBtoa() {
if (globalScope.btoa || !isNodeJS()) {
return;
}
globalScope.btoa = function (chars) {
return Buffer.from(chars, 'binary').toString('base64');
};
})();
(function checkNodeAtob() {
if (globalScope.atob || !isNodeJS()) {
return;
}
globalScope.atob = function (input) {
return Buffer.from(input, 'base64').toString('binary');
};
})();
(function checkChildNodeRemove() {
if (!hasDOM) {
return;
}
if (typeof Element.prototype.remove !== 'undefined') {
return;
}
Element.prototype.remove = function () {
if (this.parentNode) {
this.parentNode.removeChild(this);
}
};
})();
(function checkDOMTokenListAddRemove() {
if (!hasDOM || isNodeJS()) {
return;
}
var div = document.createElement('div');
div.classList.add('testOne', 'testTwo');
if (div.classList.contains('testOne') === true && div.classList.contains('testTwo') === true) {
return;
}
var OriginalDOMTokenListAdd = DOMTokenList.prototype.add;
var OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;
DOMTokenList.prototype.add = function () {
for (var _len = arguments.length, tokens = new Array(_len), _key = 0; _key < _len; _key++) {
tokens[_key] = arguments[_key];
}
for (var _i = 0; _i < tokens.length; _i++) {
var token = tokens[_i];
OriginalDOMTokenListAdd.call(this, token);
}
};
DOMTokenList.prototype.remove = function () {
for (var _len2 = arguments.length, tokens = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
tokens[_key2] = arguments[_key2];
}
for (var _i2 = 0; _i2 < tokens.length; _i2++) {
var token = tokens[_i2];
OriginalDOMTokenListRemove.call(this, token);
}
};
})();
(function checkDOMTokenListToggle() {
if (!hasDOM || isNodeJS()) {
return;
}
var div = document.createElement('div');
if (div.classList.toggle('test', 0) === false) {
return;
}
DOMTokenList.prototype.toggle = function (token) {
var force = arguments.length > 1 ? !!arguments[1] : !this.contains(token);
return this[force ? 'add' : 'remove'](token), force;
};
})();
(function checkStringStartsWith() {
if (String.prototype.startsWith) {
return;
}
__w_pdfjs_require__(5);
})();
(function checkStringEndsWith() {
if (String.prototype.endsWith) {
return;
}
__w_pdfjs_require__(35);
})();
(function checkStringIncludes() {
if (String.prototype.includes) {
return;
}
__w_pdfjs_require__(37);
})();
(function checkArrayIncludes() {
if (Array.prototype.includes) {
return;
}
__w_pdfjs_require__(39);
})();
(function checkArrayFrom() {
if (Array.from) {
return;
}
__w_pdfjs_require__(46);
})();
(function checkObjectAssign() {
if (Object.assign) {
return;
}
__w_pdfjs_require__(69);
})();
(function checkMathLog2() {
if (Math.log2) {
return;
}
Math.log2 = __w_pdfjs_require__(74);
})();
(function checkNumberIsNaN() {
if (Number.isNaN) {
return;
}
Number.isNaN = __w_pdfjs_require__(76);
})();
(function checkNumberIsInteger() {
if (Number.isInteger) {
return;
}
Number.isInteger = __w_pdfjs_require__(78);
})();
(function checkPromise() {
if (globalScope.Promise && globalScope.Promise.prototype && globalScope.Promise.prototype.finally) {
return;
}
globalScope.Promise = __w_pdfjs_require__(81);
})();
(function checkWeakMap() {
if (globalScope.WeakMap) {
return;
}
globalScope.WeakMap = __w_pdfjs_require__(101);
})();
(function checkWeakSet() {
if (globalScope.WeakSet) {
return;
}
globalScope.WeakSet = __w_pdfjs_require__(118);
})();
(function checkStringCodePointAt() {
if (String.codePointAt) {
return;
}
String.codePointAt = __w_pdfjs_require__(122);
})();
(function checkStringFromCodePoint() {
if (String.fromCodePoint) {
return;
}
String.fromCodePoint = __w_pdfjs_require__(124);
})();
(function checkSymbol() {
if (globalScope.Symbol) {
return;
}
__w_pdfjs_require__(126);
})();
(function checkStringPadStart() {
if (String.prototype.padStart) {
return;
}
__w_pdfjs_require__(133);
})();
(function checkStringPadEnd() {
if (String.prototype.padEnd) {
return;
}
__w_pdfjs_require__(137);
})();
(function checkObjectValues() {
if (Object.values) {
return;
}
Object.values = __w_pdfjs_require__(139);
})();
}
/***/ }),
/* 3 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};
/***/ }),
/* 4 */
/***/ (function(module, exports, __w_pdfjs_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); }
module.exports = function isNodeJS() {
return (typeof process === "undefined" ? "undefined" : _typeof(process)) === 'object' && process + '' === '[object process]' && !process.versions['nw'];
};
/***/ }),
/* 5 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(6);
module.exports = __w_pdfjs_require__(9).String.startsWith;
/***/ }),
/* 6 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var toLength = __w_pdfjs_require__(25);
var context = __w_pdfjs_require__(27);
var STARTS_WITH = 'startsWith';
var $startsWith = ''[STARTS_WITH];
$export($export.P + $export.F * __w_pdfjs_require__(34)(STARTS_WITH), 'String', {
startsWith: function startsWith(searchString) {
var that = context(this, searchString, STARTS_WITH);
var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
var search = String(searchString);
return $startsWith ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search;
}
});
/***/ }),
/* 7 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var global = __w_pdfjs_require__(8);
var core = __w_pdfjs_require__(9);
var hide = __w_pdfjs_require__(10);
var redefine = __w_pdfjs_require__(20);
var ctx = __w_pdfjs_require__(23);
var PROTOTYPE = 'prototype';
var $export = function $export(type, name, source) {
var IS_FORCED = type & $export.F;
var IS_GLOBAL = type & $export.G;
var IS_STATIC = type & $export.S;
var IS_PROTO = type & $export.P;
var IS_BIND = type & $export.B;
var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
var key, own, out, exp;
if (IS_GLOBAL) source = name;
for (key in source) {
own = !IS_FORCED && target && target[key] !== undefined;
out = (own ? target : source)[key];
exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
if (target) redefine(target, key, out, type & $export.U);
if (exports[key] != out) hide(exports, key, exp);
if (IS_PROTO && expProto[key] != out) expProto[key] = out;
}
};
global.core = core;
$export.F = 1;
$export.G = 2;
$export.S = 4;
$export.P = 8;
$export.B = 16;
$export.W = 32;
$export.U = 64;
$export.R = 128;
module.exports = $export;
/***/ }),
/* 8 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
if (typeof __g == 'number') __g = global;
/***/ }),
/* 9 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var core = module.exports = {
version: '2.6.2'
};
if (typeof __e == 'number') __e = core;
/***/ }),
/* 10 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var dP = __w_pdfjs_require__(11);
var createDesc = __w_pdfjs_require__(19);
module.exports = __w_pdfjs_require__(15) ? function (object, key, value) {
return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/* 11 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var anObject = __w_pdfjs_require__(12);
var IE8_DOM_DEFINE = __w_pdfjs_require__(14);
var toPrimitive = __w_pdfjs_require__(18);
var dP = Object.defineProperty;
exports.f = __w_pdfjs_require__(15) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return dP(O, P, Attributes);
} catch (e) {}
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/* 12 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isObject = __w_pdfjs_require__(13);
module.exports = function (it) {
if (!isObject(it)) throw TypeError(it + ' is not an object!');
return it;
};
/***/ }),
/* 13 */
/***/ (function(module, exports, __w_pdfjs_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); }
module.exports = function (it) {
return _typeof(it) === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
/* 14 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = !__w_pdfjs_require__(15) && !__w_pdfjs_require__(16)(function () {
return Object.defineProperty(__w_pdfjs_require__(17)('div'), 'a', {
get: function get() {
return 7;
}
}).a != 7;
});
/***/ }),
/* 15 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = !__w_pdfjs_require__(16)(function () {
return Object.defineProperty({}, 'a', {
get: function get() {
return 7;
}
}).a != 7;
});
/***/ }),
/* 16 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function (exec) {
try {
return !!exec();
} catch (e) {
return true;
}
};
/***/ }),
/* 17 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isObject = __w_pdfjs_require__(13);
var document = __w_pdfjs_require__(8).document;
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return is ? document.createElement(it) : {};
};
/***/ }),
/* 18 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isObject = __w_pdfjs_require__(13);
module.exports = function (it, S) {
if (!isObject(it)) return it;
var fn, val;
if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/* 19 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/* 20 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var global = __w_pdfjs_require__(8);
var hide = __w_pdfjs_require__(10);
var has = __w_pdfjs_require__(21);
var SRC = __w_pdfjs_require__(22)('src');
var TO_STRING = 'toString';
var $toString = Function[TO_STRING];
var TPL = ('' + $toString).split(TO_STRING);
__w_pdfjs_require__(9).inspectSource = function (it) {
return $toString.call(it);
};
(module.exports = function (O, key, val, safe) {
var isFunction = typeof val == 'function';
if (isFunction) has(val, 'name') || hide(val, 'name', key);
if (O[key] === val) return;
if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
if (O === global) {
O[key] = val;
} else if (!safe) {
delete O[key];
hide(O, key, val);
} else if (O[key]) {
O[key] = val;
} else {
hide(O, key, val);
}
})(Function.prototype, TO_STRING, function toString() {
return typeof this == 'function' && this[SRC] || $toString.call(this);
});
/***/ }),
/* 21 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
return hasOwnProperty.call(it, key);
};
/***/ }),
/* 22 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var id = 0;
var px = Math.random();
module.exports = function (key) {
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};
/***/ }),
/* 23 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var aFunction = __w_pdfjs_require__(24);
module.exports = function (fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 1:
return function (a) {
return fn.call(that, a);
};
case 2:
return function (a, b) {
return fn.call(that, a, b);
};
case 3:
return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function () {
return fn.apply(that, arguments);
};
};
/***/ }),
/* 24 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function (it) {
if (typeof it != 'function') throw TypeError(it + ' is not a function!');
return it;
};
/***/ }),
/* 25 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var toInteger = __w_pdfjs_require__(26);
var min = Math.min;
module.exports = function (it) {
return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;
};
/***/ }),
/* 26 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};
/***/ }),
/* 27 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isRegExp = __w_pdfjs_require__(28);
var defined = __w_pdfjs_require__(33);
module.exports = function (that, searchString, NAME) {
if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
return String(defined(that));
};
/***/ }),
/* 28 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isObject = __w_pdfjs_require__(13);
var cof = __w_pdfjs_require__(29);
var MATCH = __w_pdfjs_require__(30)('match');
module.exports = function (it) {
var isRegExp;
return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
};
/***/ }),
/* 29 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var toString = {}.toString;
module.exports = function (it) {
return toString.call(it).slice(8, -1);
};
/***/ }),
/* 30 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var store = __w_pdfjs_require__(31)('wks');
var uid = __w_pdfjs_require__(22);
var _Symbol = __w_pdfjs_require__(8).Symbol;
var USE_SYMBOL = typeof _Symbol == 'function';
var $exports = module.exports = function (name) {
return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name));
};
$exports.store = store;
/***/ }),
/* 31 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var core = __w_pdfjs_require__(9);
var global = __w_pdfjs_require__(8);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: core.version,
mode: __w_pdfjs_require__(32) ? 'pure' : 'global',
copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});
/***/ }),
/* 32 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = false;
/***/ }),
/* 33 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
/***/ }),
/* 34 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var MATCH = __w_pdfjs_require__(30)('match');
module.exports = function (KEY) {
var re = /./;
try {
'/./'[KEY](re);
} catch (e) {
try {
re[MATCH] = false;
return !'/./'[KEY](re);
} catch (f) {}
}
return true;
};
/***/ }),
/* 35 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(36);
module.exports = __w_pdfjs_require__(9).String.endsWith;
/***/ }),
/* 36 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var toLength = __w_pdfjs_require__(25);
var context = __w_pdfjs_require__(27);
var ENDS_WITH = 'endsWith';
var $endsWith = ''[ENDS_WITH];
$export($export.P + $export.F * __w_pdfjs_require__(34)(ENDS_WITH), 'String', {
endsWith: function endsWith(searchString) {
var that = context(this, searchString, ENDS_WITH);
var endPosition = arguments.length > 1 ? arguments[1] : undefined;
var len = toLength(that.length);
var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
var search = String(searchString);
return $endsWith ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search;
}
});
/***/ }),
/* 37 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(38);
module.exports = __w_pdfjs_require__(9).String.includes;
/***/ }),
/* 38 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var context = __w_pdfjs_require__(27);
var INCLUDES = 'includes';
$export($export.P + $export.F * __w_pdfjs_require__(34)(INCLUDES), 'String', {
includes: function includes(searchString) {
return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/* 39 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(40);
module.exports = __w_pdfjs_require__(9).Array.includes;
/***/ }),
/* 40 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var $includes = __w_pdfjs_require__(41)(true);
$export($export.P, 'Array', {
includes: function includes(el) {
return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
}
});
__w_pdfjs_require__(45)('includes');
/***/ }),
/* 41 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var toIObject = __w_pdfjs_require__(42);
var toLength = __w_pdfjs_require__(25);
var toAbsoluteIndex = __w_pdfjs_require__(44);
module.exports = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
if (value != value) return true;
} else for (; length > index; index++) {
if (IS_INCLUDES || index in O) {
if (O[index] === el) return IS_INCLUDES || index || 0;
}
}
return !IS_INCLUDES && -1;
};
};
/***/ }),
/* 42 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var IObject = __w_pdfjs_require__(43);
var defined = __w_pdfjs_require__(33);
module.exports = function (it) {
return IObject(defined(it));
};
/***/ }),
/* 43 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var cof = __w_pdfjs_require__(29);
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
return cof(it) == 'String' ? it.split('') : Object(it);
};
/***/ }),
/* 44 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var toInteger = __w_pdfjs_require__(26);
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
index = toInteger(index);
return index < 0 ? max(index + length, 0) : min(index, length);
};
/***/ }),
/* 45 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var UNSCOPABLES = __w_pdfjs_require__(30)('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(10)(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
ArrayProto[UNSCOPABLES][key] = true;
};
/***/ }),
/* 46 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(47);
__w_pdfjs_require__(62);
module.exports = __w_pdfjs_require__(9).Array.from;
/***/ }),
/* 47 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $at = __w_pdfjs_require__(48)(true);
__w_pdfjs_require__(49)(String, 'String', function (iterated) {
this._t = String(iterated);
this._i = 0;
}, function () {
var O = this._t;
var index = this._i;
var point;
if (index >= O.length) return {
value: undefined,
done: true
};
point = $at(O, index);
this._i += point.length;
return {
value: point,
done: false
};
});
/***/ }),
/* 48 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var toInteger = __w_pdfjs_require__(26);
var defined = __w_pdfjs_require__(33);
module.exports = function (TO_STRING) {
return function (that, pos) {
var s = String(defined(that));
var i = toInteger(pos);
var l = s.length;
var a, b;
if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
a = s.charCodeAt(i);
return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
};
};
/***/ }),
/* 49 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var LIBRARY = __w_pdfjs_require__(32);
var $export = __w_pdfjs_require__(7);
var redefine = __w_pdfjs_require__(20);
var hide = __w_pdfjs_require__(10);
var Iterators = __w_pdfjs_require__(50);
var $iterCreate = __w_pdfjs_require__(51);
var setToStringTag = __w_pdfjs_require__(59);
var getPrototypeOf = __w_pdfjs_require__(60);
var ITERATOR = __w_pdfjs_require__(30)('iterator');
var BUGGY = !([].keys && 'next' in [].keys());
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';
var returnThis = function returnThis() {
return this;
};
module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
$iterCreate(Constructor, NAME, next);
var getMethod = function getMethod(kind) {
if (!BUGGY && kind in proto) return proto[kind];
switch (kind) {
case KEYS:
return function keys() {
return new Constructor(this, kind);
};
case VALUES:
return function values() {
return new Constructor(this, kind);
};
}
return function entries() {
return new Constructor(this, kind);
};
};
var TAG = NAME + ' Iterator';
var DEF_VALUES = DEFAULT == VALUES;
var VALUES_BUG = false;
var proto = Base.prototype;
var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
var $default = $native || getMethod(DEFAULT);
var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
var methods, key, IteratorPrototype;
if ($anyNative) {
IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
setToStringTag(IteratorPrototype, TAG, true);
if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
}
}
if (DEF_VALUES && $native && $native.name !== VALUES) {
VALUES_BUG = true;
$default = function values() {
return $native.call(this);
};
}
if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
hide(proto, ITERATOR, $default);
}
Iterators[NAME] = $default;
Iterators[TAG] = returnThis;
if (DEFAULT) {
methods = {
values: DEF_VALUES ? $default : getMethod(VALUES),
keys: IS_SET ? $default : getMethod(KEYS),
entries: $entries
};
if (FORCED) for (key in methods) {
if (!(key in proto)) redefine(proto, key, methods[key]);
} else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
}
return methods;
};
/***/ }),
/* 50 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = {};
/***/ }),
/* 51 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var create = __w_pdfjs_require__(52);
var descriptor = __w_pdfjs_require__(19);
var setToStringTag = __w_pdfjs_require__(59);
var IteratorPrototype = {};
__w_pdfjs_require__(10)(IteratorPrototype, __w_pdfjs_require__(30)('iterator'), function () {
return this;
});
module.exports = function (Constructor, NAME, next) {
Constructor.prototype = create(IteratorPrototype, {
next: descriptor(1, next)
});
setToStringTag(Constructor, NAME + ' Iterator');
};
/***/ }),
/* 52 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var anObject = __w_pdfjs_require__(12);
var dPs = __w_pdfjs_require__(53);
var enumBugKeys = __w_pdfjs_require__(57);
var IE_PROTO = __w_pdfjs_require__(56)('IE_PROTO');
var Empty = function Empty() {};
var PROTOTYPE = 'prototype';
var _createDict = function createDict() {
var iframe = __w_pdfjs_require__(17)('iframe');
var i = enumBugKeys.length;
var lt = '<';
var gt = '>';
var iframeDocument;
iframe.style.display = 'none';
__w_pdfjs_require__(58).appendChild(iframe);
iframe.src = 'javascript:';
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
iframeDocument.close();
_createDict = iframeDocument.F;
while (i--) {
delete _createDict[PROTOTYPE][enumBugKeys[i]];
}
return _createDict();
};
module.exports = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
Empty[PROTOTYPE] = anObject(O);
result = new Empty();
Empty[PROTOTYPE] = null;
result[IE_PROTO] = O;
} else result = _createDict();
return Properties === undefined ? result : dPs(result, Properties);
};
/***/ }),
/* 53 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var dP = __w_pdfjs_require__(11);
var anObject = __w_pdfjs_require__(12);
var getKeys = __w_pdfjs_require__(54);
module.exports = __w_pdfjs_require__(15) ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var keys = getKeys(Properties);
var length = keys.length;
var i = 0;
var P;
while (length > i) {
dP.f(O, P = keys[i++], Properties[P]);
}
return O;
};
/***/ }),
/* 54 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $keys = __w_pdfjs_require__(55);
var enumBugKeys = __w_pdfjs_require__(57);
module.exports = Object.keys || function keys(O) {
return $keys(O, enumBugKeys);
};
/***/ }),
/* 55 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var has = __w_pdfjs_require__(21);
var toIObject = __w_pdfjs_require__(42);
var arrayIndexOf = __w_pdfjs_require__(41)(false);
var IE_PROTO = __w_pdfjs_require__(56)('IE_PROTO');
module.exports = function (object, names) {
var O = toIObject(object);
var i = 0;
var result = [];
var key;
for (key in O) {
if (key != IE_PROTO) has(O, key) && result.push(key);
}
while (names.length > i) {
if (has(O, key = names[i++])) {
~arrayIndexOf(result, key) || result.push(key);
}
}
return result;
};
/***/ }),
/* 56 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var shared = __w_pdfjs_require__(31)('keys');
var uid = __w_pdfjs_require__(22);
module.exports = function (key) {
return shared[key] || (shared[key] = uid(key));
};
/***/ }),
/* 57 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(',');
/***/ }),
/* 58 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var document = __w_pdfjs_require__(8).document;
module.exports = document && document.documentElement;
/***/ }),
/* 59 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var def = __w_pdfjs_require__(11).f;
var has = __w_pdfjs_require__(21);
var TAG = __w_pdfjs_require__(30)('toStringTag');
module.exports = function (it, tag, stat) {
if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {
configurable: true,
value: tag
});
};
/***/ }),
/* 60 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var has = __w_pdfjs_require__(21);
var toObject = __w_pdfjs_require__(61);
var IE_PROTO = __w_pdfjs_require__(56)('IE_PROTO');
var ObjectProto = Object.prototype;
module.exports = Object.getPrototypeOf || function (O) {
O = toObject(O);
if (has(O, IE_PROTO)) return O[IE_PROTO];
if (typeof O.constructor == 'function' && O instanceof O.constructor) {
return O.constructor.prototype;
}
return O instanceof Object ? ObjectProto : null;
};
/***/ }),
/* 61 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var defined = __w_pdfjs_require__(33);
module.exports = function (it) {
return Object(defined(it));
};
/***/ }),
/* 62 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var ctx = __w_pdfjs_require__(23);
var $export = __w_pdfjs_require__(7);
var toObject = __w_pdfjs_require__(61);
var call = __w_pdfjs_require__(63);
var isArrayIter = __w_pdfjs_require__(64);
var toLength = __w_pdfjs_require__(25);
var createProperty = __w_pdfjs_require__(65);
var getIterFn = __w_pdfjs_require__(66);
$export($export.S + $export.F * !__w_pdfjs_require__(68)(function (iter) {
Array.from(iter);
}), 'Array', {
from: function from(arrayLike) {
var O = toObject(arrayLike);
var C = typeof this == 'function' ? this : Array;
var aLen = arguments.length;
var mapfn = aLen > 1 ? arguments[1] : undefined;
var mapping = mapfn !== undefined;
var index = 0;
var iterFn = getIterFn(O);
var length, result, step, iterator;
if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
}
} else {
length = toLength(O.length);
for (result = new C(length); length > index; index++) {
createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
}
}
result.length = index;
return result;
}
});
/***/ }),
/* 63 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var anObject = __w_pdfjs_require__(12);
module.exports = function (iterator, fn, value, entries) {
try {
return entries ? fn(anObject(value)[0], value[1]) : fn(value);
} catch (e) {
var ret = iterator['return'];
if (ret !== undefined) anObject(ret.call(iterator));
throw e;
}
};
/***/ }),
/* 64 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var Iterators = __w_pdfjs_require__(50);
var ITERATOR = __w_pdfjs_require__(30)('iterator');
var ArrayProto = Array.prototype;
module.exports = function (it) {
return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};
/***/ }),
/* 65 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $defineProperty = __w_pdfjs_require__(11);
var createDesc = __w_pdfjs_require__(19);
module.exports = function (object, index, value) {
if (index in object) $defineProperty.f(object, index, createDesc(0, value));else object[index] = value;
};
/***/ }),
/* 66 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var classof = __w_pdfjs_require__(67);
var ITERATOR = __w_pdfjs_require__(30)('iterator');
var Iterators = __w_pdfjs_require__(50);
module.exports = __w_pdfjs_require__(9).getIteratorMethod = function (it) {
if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];
};
/***/ }),
/* 67 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var cof = __w_pdfjs_require__(29);
var TAG = __w_pdfjs_require__(30)('toStringTag');
var ARG = cof(function () {
return arguments;
}()) == 'Arguments';
var tryGet = function tryGet(it, key) {
try {
return it[key];
} catch (e) {}
};
module.exports = function (it) {
var O, T, B;
return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};
/***/ }),
/* 68 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var ITERATOR = __w_pdfjs_require__(30)('iterator');
var SAFE_CLOSING = false;
try {
var riter = [7][ITERATOR]();
riter['return'] = function () {
SAFE_CLOSING = true;
};
Array.from(riter, function () {
throw 2;
});
} catch (e) {}
module.exports = function (exec, skipClosing) {
if (!skipClosing && !SAFE_CLOSING) return false;
var safe = false;
try {
var arr = [7];
var iter = arr[ITERATOR]();
iter.next = function () {
return {
done: safe = true
};
};
arr[ITERATOR] = function () {
return iter;
};
exec(arr);
} catch (e) {}
return safe;
};
/***/ }),
/* 69 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(70);
module.exports = __w_pdfjs_require__(9).Object.assign;
/***/ }),
/* 70 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
$export($export.S + $export.F, 'Object', {
assign: __w_pdfjs_require__(71)
});
/***/ }),
/* 71 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var getKeys = __w_pdfjs_require__(54);
var gOPS = __w_pdfjs_require__(72);
var pIE = __w_pdfjs_require__(73);
var toObject = __w_pdfjs_require__(61);
var IObject = __w_pdfjs_require__(43);
var $assign = Object.assign;
module.exports = !$assign || __w_pdfjs_require__(16)(function () {
var A = {};
var B = {};
var S = Symbol();
var K = 'abcdefghijklmnopqrst';
A[S] = 7;
K.split('').forEach(function (k) {
B[k] = k;
});
return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
}) ? function assign(target, source) {
var T = toObject(target);
var aLen = arguments.length;
var index = 1;
var getSymbols = gOPS.f;
var isEnum = pIE.f;
while (aLen > index) {
var S = IObject(arguments[index++]);
var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
var length = keys.length;
var j = 0;
var key;
while (length > j) {
if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
}
}
return T;
} : $assign;
/***/ }),
/* 72 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
exports.f = Object.getOwnPropertySymbols;
/***/ }),
/* 73 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
exports.f = {}.propertyIsEnumerable;
/***/ }),
/* 74 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(75);
module.exports = __w_pdfjs_require__(9).Math.log2;
/***/ }),
/* 75 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
$export($export.S, 'Math', {
log2: function log2(x) {
return Math.log(x) / Math.LN2;
}
});
/***/ }),
/* 76 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(77);
module.exports = __w_pdfjs_require__(9).Number.isNaN;
/***/ }),
/* 77 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
$export($export.S, 'Number', {
isNaN: function isNaN(number) {
return number != number;
}
});
/***/ }),
/* 78 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(79);
module.exports = __w_pdfjs_require__(9).Number.isInteger;
/***/ }),
/* 79 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
$export($export.S, 'Number', {
isInteger: __w_pdfjs_require__(80)
});
/***/ }),
/* 80 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isObject = __w_pdfjs_require__(13);
var floor = Math.floor;
module.exports = function isInteger(it) {
return !isObject(it) && isFinite(it) && floor(it) === it;
};
/***/ }),
/* 81 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(82);
__w_pdfjs_require__(47);
__w_pdfjs_require__(83);
__w_pdfjs_require__(86);
__w_pdfjs_require__(99);
__w_pdfjs_require__(100);
module.exports = __w_pdfjs_require__(9).Promise;
/***/ }),
/* 82 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var classof = __w_pdfjs_require__(67);
var test = {};
test[__w_pdfjs_require__(30)('toStringTag')] = 'z';
if (test + '' != '[object z]') {
__w_pdfjs_require__(20)(Object.prototype, 'toString', function toString() {
return '[object ' + classof(this) + ']';
}, true);
}
/***/ }),
/* 83 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $iterators = __w_pdfjs_require__(84);
var getKeys = __w_pdfjs_require__(54);
var redefine = __w_pdfjs_require__(20);
var global = __w_pdfjs_require__(8);
var hide = __w_pdfjs_require__(10);
var Iterators = __w_pdfjs_require__(50);
var wks = __w_pdfjs_require__(30);
var ITERATOR = wks('iterator');
var TO_STRING_TAG = wks('toStringTag');
var ArrayValues = Iterators.Array;
var DOMIterables = {
CSSRuleList: true,
CSSStyleDeclaration: false,
CSSValueList: false,
ClientRectList: false,
DOMRectList: false,
DOMStringList: false,
DOMTokenList: true,
DataTransferItemList: false,
FileList: false,
HTMLAllCollection: false,
HTMLCollection: false,
HTMLFormElement: false,
HTMLSelectElement: false,
MediaList: true,
MimeTypeArray: false,
NamedNodeMap: false,
NodeList: true,
PaintRequestList: false,
Plugin: false,
PluginArray: false,
SVGLengthList: false,
SVGNumberList: false,
SVGPathSegList: false,
SVGPointList: false,
SVGStringList: false,
SVGTransformList: false,
SourceBufferList: false,
StyleSheetList: true,
TextTrackCueList: false,
TextTrackList: false,
TouchList: false
};
for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
var NAME = collections[i];
var explicit = DOMIterables[NAME];
var Collection = global[NAME];
var proto = Collection && Collection.prototype;
var key;
if (proto) {
if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
Iterators[NAME] = ArrayValues;
if (explicit) for (key in $iterators) {
if (!proto[key]) redefine(proto, key, $iterators[key], true);
}
}
}
/***/ }),
/* 84 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var addToUnscopables = __w_pdfjs_require__(45);
var step = __w_pdfjs_require__(85);
var Iterators = __w_pdfjs_require__(50);
var toIObject = __w_pdfjs_require__(42);
module.exports = __w_pdfjs_require__(49)(Array, 'Array', function (iterated, kind) {
this._t = toIObject(iterated);
this._i = 0;
this._k = kind;
}, function () {
var O = this._t;
var kind = this._k;
var index = this._i++;
if (!O || index >= O.length) {
this._t = undefined;
return step(1);
}
if (kind == 'keys') return step(0, index);
if (kind == 'values') return step(0, O[index]);
return step(0, [index, O[index]]);
}, 'values');
Iterators.Arguments = Iterators.Array;
addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');
/***/ }),
/* 85 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function (done, value) {
return {
value: value,
done: !!done
};
};
/***/ }),
/* 86 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var LIBRARY = __w_pdfjs_require__(32);
var global = __w_pdfjs_require__(8);
var ctx = __w_pdfjs_require__(23);
var classof = __w_pdfjs_require__(67);
var $export = __w_pdfjs_require__(7);
var isObject = __w_pdfjs_require__(13);
var aFunction = __w_pdfjs_require__(24);
var anInstance = __w_pdfjs_require__(87);
var forOf = __w_pdfjs_require__(88);
var speciesConstructor = __w_pdfjs_require__(89);
var task = __w_pdfjs_require__(90).set;
var microtask = __w_pdfjs_require__(92)();
var newPromiseCapabilityModule = __w_pdfjs_require__(93);
var perform = __w_pdfjs_require__(94);
var userAgent = __w_pdfjs_require__(95);
var promiseResolve = __w_pdfjs_require__(96);
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function empty() {};
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
var USE_NATIVE = !!function () {
try {
var promise = $Promise.resolve(1);
var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(30)('species')] = function (exec) {
exec(empty, empty);
};
return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1;
} catch (e) {}
}();
var isThenable = function isThenable(it) {
var then;
return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function notify(promise, isReject) {
if (promise._n) return;
promise._n = true;
var chain = promise._c;
microtask(function () {
var value = promise._v;
var ok = promise._s == 1;
var i = 0;
var run = function run(reaction) {
var handler = ok ? reaction.ok : reaction.fail;
var resolve = reaction.resolve;
var reject = reaction.reject;
var domain = reaction.domain;
var result, then, exited;
try {
if (handler) {
if (!ok) {
if (promise._h == 2) onHandleUnhandled(promise);
promise._h = 1;
}
if (handler === true) result = value;else {
if (domain) domain.enter();
result = handler(value);
if (domain) {
domain.exit();
exited = true;
}
}
if (result === reaction.promise) {
reject(TypeError('Promise-chain cycle'));
} else if (then = isThenable(result)) {
then.call(result, resolve, reject);
} else resolve(result);
} else reject(value);
} catch (e) {
if (domain && !exited) domain.exit();
reject(e);
}
};
while (chain.length > i) {
run(chain[i++]);
}
promise._c = [];
promise._n = false;
if (isReject && !promise._h) onUnhandled(promise);
});
};
var onUnhandled = function onUnhandled(promise) {
task.call(global, function () {
var value = promise._v;
var unhandled = isUnhandled(promise);
var result, handler, console;
if (unhandled) {
result = perform(function () {
if (isNode) {
process.emit('unhandledRejection', value, promise);
} else if (handler = global.onunhandledrejection) {
handler({
promise: promise,
reason: value
});
} else if ((console = global.console) && console.error) {
console.error('Unhandled promise rejection', value);
}
});
promise._h = isNode || isUnhandled(promise) ? 2 : 1;
}
promise._a = undefined;
if (unhandled && result.e) throw result.v;
});
};
var isUnhandled = function isUnhandled(promise) {
return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function onHandleUnhandled(promise) {
task.call(global, function () {
var handler;
if (isNode) {
process.emit('rejectionHandled', promise);
} else if (handler = global.onrejectionhandled) {
handler({
promise: promise,
reason: promise._v
});
}
});
};
var $reject = function $reject(value) {
var promise = this;
if (promise._d) return;
promise._d = true;
promise = promise._w || promise;
promise._v = value;
promise._s = 2;
if (!promise._a) promise._a = promise._c.slice();
notify(promise, true);
};
var $resolve = function $resolve(value) {
var promise = this;
var then;
if (promise._d) return;
promise._d = true;
promise = promise._w || promise;
try {
if (promise === value) throw TypeError("Promise can't be resolved itself");
if (then = isThenable(value)) {
microtask(function () {
var wrapper = {
_w: promise,
_d: false
};
try {
then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
} catch (e) {
$reject.call(wrapper, e);
}
});
} else {
promise._v = value;
promise._s = 1;
notify(promise, false);
}
} catch (e) {
$reject.call({
_w: promise,
_d: false
}, e);
}
};
if (!USE_NATIVE) {
$Promise = function Promise(executor) {
anInstance(this, $Promise, PROMISE, '_h');
aFunction(executor);
Internal.call(this);
try {
executor(ctx($resolve, this, 1), ctx($reject, this, 1));
} catch (err) {
$reject.call(this, err);
}
};
Internal = function Promise(executor) {
this._c = [];
this._a = undefined;
this._s = 0;
this._d = false;
this._v = undefined;
this._h = 0;
this._n = false;
};
Internal.prototype = __w_pdfjs_require__(97)($Promise.prototype, {
then: function then(onFulfilled, onRejected) {
var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
reaction.fail = typeof onRejected == 'function' && onRejected;
reaction.domain = isNode ? process.domain : undefined;
this._c.push(reaction);
if (this._a) this._a.push(reaction);
if (this._s) notify(this, false);
return reaction.promise;
},
'catch': function _catch(onRejected) {
return this.then(undefined, onRejected);
}
});
OwnPromiseCapability = function OwnPromiseCapability() {
var promise = new Internal();
this.promise = promise;
this.resolve = ctx($resolve, promise, 1);
this.reject = ctx($reject, promise, 1);
};
newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) {
return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
};
}
$export($export.G + $export.W + $export.F * !USE_NATIVE, {
Promise: $Promise
});
__w_pdfjs_require__(59)($Promise, PROMISE);
__w_pdfjs_require__(98)(PROMISE);
Wrapper = __w_pdfjs_require__(9)[PROMISE];
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
reject: function reject(r) {
var capability = newPromiseCapability(this);
var $$reject = capability.reject;
$$reject(r);
return capability.promise;
}
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
resolve: function resolve(x) {
return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
}
});
$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(68)(function (iter) {
$Promise.all(iter)['catch'](empty);
})), PROMISE, {
all: function all(iterable) {
var C = this;
var capability = newPromiseCapability(C);
var resolve = capability.resolve;
var reject = capability.reject;
var result = perform(function () {
var values = [];
var index = 0;
var remaining = 1;
forOf(iterable, false, function (promise) {
var $index = index++;
var alreadyCalled = false;
values.push(undefined);
remaining++;
C.resolve(promise).then(function (value) {
if (alreadyCalled) return;
alreadyCalled = true;
values[$index] = value;
--remaining || resolve(values);
}, reject);
});
--remaining || resolve(values);
});
if (result.e) reject(result.v);
return capability.promise;
},
race: function race(iterable) {
var C = this;
var capability = newPromiseCapability(C);
var reject = capability.reject;
var result = perform(function () {
forOf(iterable, false, function (promise) {
C.resolve(promise).then(capability.resolve, reject);
});
});
if (result.e) reject(result.v);
return capability.promise;
}
});
/***/ }),
/* 87 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function (it, Constructor, name, forbiddenField) {
if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) {
throw TypeError(name + ': incorrect invocation!');
}
return it;
};
/***/ }),
/* 88 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var ctx = __w_pdfjs_require__(23);
var call = __w_pdfjs_require__(63);
var isArrayIter = __w_pdfjs_require__(64);
var anObject = __w_pdfjs_require__(12);
var toLength = __w_pdfjs_require__(25);
var getIterFn = __w_pdfjs_require__(66);
var BREAK = {};
var RETURN = {};
var _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
var iterFn = ITERATOR ? function () {
return iterable;
} : getIterFn(iterable);
var f = ctx(fn, that, entries ? 2 : 1);
var index = 0;
var length, step, iterator, result;
if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
if (result === BREAK || result === RETURN) return result;
} else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
result = call(iterator, f, step.value, entries);
if (result === BREAK || result === RETURN) return result;
}
};
_exports.BREAK = BREAK;
_exports.RETURN = RETURN;
/***/ }),
/* 89 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var anObject = __w_pdfjs_require__(12);
var aFunction = __w_pdfjs_require__(24);
var SPECIES = __w_pdfjs_require__(30)('species');
module.exports = function (O, D) {
var C = anObject(O).constructor;
var S;
return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};
/***/ }),
/* 90 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var ctx = __w_pdfjs_require__(23);
var invoke = __w_pdfjs_require__(91);
var html = __w_pdfjs_require__(58);
var cel = __w_pdfjs_require__(17);
var global = __w_pdfjs_require__(8);
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function run() {
var id = +this;
if (queue.hasOwnProperty(id)) {
var fn = queue[id];
delete queue[id];
fn();
}
};
var listener = function listener(event) {
run.call(event.data);
};
if (!setTask || !clearTask) {
setTask = function setImmediate(fn) {
var args = [];
var i = 1;
while (arguments.length > i) {
args.push(arguments[i++]);
}
queue[++counter] = function () {
invoke(typeof fn == 'function' ? fn : Function(fn), args);
};
defer(counter);
return counter;
};
clearTask = function clearImmediate(id) {
delete queue[id];
};
if (__w_pdfjs_require__(29)(process) == 'process') {
defer = function defer(id) {
process.nextTick(ctx(run, id, 1));
};
} else if (Dispatch && Dispatch.now) {
defer = function defer(id) {
Dispatch.now(ctx(run, id, 1));
};
} else if (MessageChannel) {
channel = new MessageChannel();
port = channel.port2;
channel.port1.onmessage = listener;
defer = ctx(port.postMessage, port, 1);
} else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
defer = function defer(id) {
global.postMessage(id + '', '*');
};
global.addEventListener('message', listener, false);
} else if (ONREADYSTATECHANGE in cel('script')) {
defer = function defer(id) {
html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
html.removeChild(this);
run.call(id);
};
};
} else {
defer = function defer(id) {
setTimeout(ctx(run, id, 1), 0);
};
}
}
module.exports = {
set: setTask,
clear: clearTask
};
/***/ }),
/* 91 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function (fn, args, that) {
var un = that === undefined;
switch (args.length) {
case 0:
return un ? fn() : fn.call(that);
case 1:
return un ? fn(args[0]) : fn.call(that, args[0]);
case 2:
return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);
case 3:
return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);
case 4:
return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);
}
return fn.apply(that, args);
};
/***/ }),
/* 92 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var global = __w_pdfjs_require__(8);
var macrotask = __w_pdfjs_require__(90).set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __w_pdfjs_require__(29)(process) == 'process';
module.exports = function () {
var head, last, notify;
var flush = function flush() {
var parent, fn;
if (isNode && (parent = process.domain)) parent.exit();
while (head) {
fn = head.fn;
head = head.next;
try {
fn();
} catch (e) {
if (head) notify();else last = undefined;
throw e;
}
}
last = undefined;
if (parent) parent.enter();
};
if (isNode) {
notify = function notify() {
process.nextTick(flush);
};
} else if (Observer && !(global.navigator && global.navigator.standalone)) {
var toggle = true;
var node = document.createTextNode('');
new Observer(flush).observe(node, {
characterData: true
});
notify = function notify() {
node.data = toggle = !toggle;
};
} else if (Promise && Promise.resolve) {
var promise = Promise.resolve(undefined);
notify = function notify() {
promise.then(flush);
};
} else {
notify = function notify() {
macrotask.call(global, flush);
};
}
return function (fn) {
var task = {
fn: fn,
next: undefined
};
if (last) last.next = task;
if (!head) {
head = task;
notify();
}
last = task;
};
};
/***/ }),
/* 93 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var aFunction = __w_pdfjs_require__(24);
function PromiseCapability(C) {
var resolve, reject;
this.promise = new C(function ($$resolve, $$reject) {
if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
resolve = $$resolve;
reject = $$reject;
});
this.resolve = aFunction(resolve);
this.reject = aFunction(reject);
}
module.exports.f = function (C) {
return new PromiseCapability(C);
};
/***/ }),
/* 94 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function (exec) {
try {
return {
e: false,
v: exec()
};
} catch (e) {
return {
e: true,
v: e
};
}
};
/***/ }),
/* 95 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var global = __w_pdfjs_require__(8);
var navigator = global.navigator;
module.exports = navigator && navigator.userAgent || '';
/***/ }),
/* 96 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var anObject = __w_pdfjs_require__(12);
var isObject = __w_pdfjs_require__(13);
var newPromiseCapability = __w_pdfjs_require__(93);
module.exports = function (C, x) {
anObject(C);
if (isObject(x) && x.constructor === C) return x;
var promiseCapability = newPromiseCapability.f(C);
var resolve = promiseCapability.resolve;
resolve(x);
return promiseCapability.promise;
};
/***/ }),
/* 97 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var redefine = __w_pdfjs_require__(20);
module.exports = function (target, src, safe) {
for (var key in src) {
redefine(target, key, src[key], safe);
}
return target;
};
/***/ }),
/* 98 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var global = __w_pdfjs_require__(8);
var dP = __w_pdfjs_require__(11);
var DESCRIPTORS = __w_pdfjs_require__(15);
var SPECIES = __w_pdfjs_require__(30)('species');
module.exports = function (KEY) {
var C = global[KEY];
if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
configurable: true,
get: function get() {
return this;
}
});
};
/***/ }),
/* 99 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var core = __w_pdfjs_require__(9);
var global = __w_pdfjs_require__(8);
var speciesConstructor = __w_pdfjs_require__(89);
var promiseResolve = __w_pdfjs_require__(96);
$export($export.P + $export.R, 'Promise', {
'finally': function _finally(onFinally) {
var C = speciesConstructor(this, core.Promise || global.Promise);
var isFunction = typeof onFinally == 'function';
return this.then(isFunction ? function (x) {
return promiseResolve(C, onFinally()).then(function () {
return x;
});
} : onFinally, isFunction ? function (e) {
return promiseResolve(C, onFinally()).then(function () {
throw e;
});
} : onFinally);
}
});
/***/ }),
/* 100 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var newPromiseCapability = __w_pdfjs_require__(93);
var perform = __w_pdfjs_require__(94);
$export($export.S, 'Promise', {
'try': function _try(callbackfn) {
var promiseCapability = newPromiseCapability.f(this);
var result = perform(callbackfn);
(result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
return promiseCapability.promise;
}
});
/***/ }),
/* 101 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(82);
__w_pdfjs_require__(83);
__w_pdfjs_require__(102);
__w_pdfjs_require__(114);
__w_pdfjs_require__(116);
module.exports = __w_pdfjs_require__(9).WeakMap;
/***/ }),
/* 102 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var each = __w_pdfjs_require__(103)(0);
var redefine = __w_pdfjs_require__(20);
var meta = __w_pdfjs_require__(107);
var assign = __w_pdfjs_require__(71);
var weak = __w_pdfjs_require__(108);
var isObject = __w_pdfjs_require__(13);
var fails = __w_pdfjs_require__(16);
var validate = __w_pdfjs_require__(109);
var WEAK_MAP = 'WeakMap';
var getWeak = meta.getWeak;
var isExtensible = Object.isExtensible;
var uncaughtFrozenStore = weak.ufstore;
var tmp = {};
var InternalMap;
var wrapper = function wrapper(get) {
return function WeakMap() {
return get(this, arguments.length > 0 ? arguments[0] : undefined);
};
};
var methods = {
get: function get(key) {
if (isObject(key)) {
var data = getWeak(key);
if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
return data ? data[this._i] : undefined;
}
},
set: function set(key, value) {
return weak.def(validate(this, WEAK_MAP), key, value);
}
};
var $WeakMap = module.exports = __w_pdfjs_require__(110)(WEAK_MAP, wrapper, methods, weak, true, true);
if (fails(function () {
return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7;
})) {
InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
assign(InternalMap.prototype, methods);
meta.NEED = true;
each(['delete', 'has', 'get', 'set'], function (key) {
var proto = $WeakMap.prototype;
var method = proto[key];
redefine(proto, key, function (a, b) {
if (isObject(a) && !isExtensible(a)) {
if (!this._f) this._f = new InternalMap();
var result = this._f[key](a, b);
return key == 'set' ? this : result;
}
return method.call(this, a, b);
});
});
}
/***/ }),
/* 103 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var ctx = __w_pdfjs_require__(23);
var IObject = __w_pdfjs_require__(43);
var toObject = __w_pdfjs_require__(61);
var toLength = __w_pdfjs_require__(25);
var asc = __w_pdfjs_require__(104);
module.exports = function (TYPE, $create) {
var IS_MAP = TYPE == 1;
var IS_FILTER = TYPE == 2;
var IS_SOME = TYPE == 3;
var IS_EVERY = TYPE == 4;
var IS_FIND_INDEX = TYPE == 6;
var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
var create = $create || asc;
return function ($this, callbackfn, that) {
var O = toObject($this);
var self = IObject(O);
var f = ctx(callbackfn, that, 3);
var length = toLength(self.length);
var index = 0;
var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
var val, res;
for (; length > index; index++) {
if (NO_HOLES || index in self) {
val = self[index];
res = f(val, index, O);
if (TYPE) {
if (IS_MAP) result[index] = res;else if (res) switch (TYPE) {
case 3:
return true;
case 5:
return val;
case 6:
return index;
case 2:
result.push(val);
} else if (IS_EVERY) return false;
}
}
}
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
};
};
/***/ }),
/* 104 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var speciesConstructor = __w_pdfjs_require__(105);
module.exports = function (original, length) {
return new (speciesConstructor(original))(length);
};
/***/ }),
/* 105 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isObject = __w_pdfjs_require__(13);
var isArray = __w_pdfjs_require__(106);
var SPECIES = __w_pdfjs_require__(30)('species');
module.exports = function (original) {
var C;
if (isArray(original)) {
C = original.constructor;
if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
if (isObject(C)) {
C = C[SPECIES];
if (C === null) C = undefined;
}
}
return C === undefined ? Array : C;
};
/***/ }),
/* 106 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var cof = __w_pdfjs_require__(29);
module.exports = Array.isArray || function isArray(arg) {
return cof(arg) == 'Array';
};
/***/ }),
/* 107 */
/***/ (function(module, exports, __w_pdfjs_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 META = __w_pdfjs_require__(22)('meta');
var isObject = __w_pdfjs_require__(13);
var has = __w_pdfjs_require__(21);
var setDesc = __w_pdfjs_require__(11).f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
return true;
};
var FREEZE = !__w_pdfjs_require__(16)(function () {
return isExtensible(Object.preventExtensions({}));
});
var setMeta = function setMeta(it) {
setDesc(it, META, {
value: {
i: 'O' + ++id,
w: {}
}
});
};
var fastKey = function fastKey(it, create) {
if (!isObject(it)) return _typeof(it) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
if (!has(it, META)) {
if (!isExtensible(it)) return 'F';
if (!create) return 'E';
setMeta(it);
}
return it[META].i;
};
var getWeak = function getWeak(it, create) {
if (!has(it, META)) {
if (!isExtensible(it)) return true;
if (!create) return false;
setMeta(it);
}
return it[META].w;
};
var onFreeze = function onFreeze(it) {
if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
return it;
};
var meta = module.exports = {
KEY: META,
NEED: false,
fastKey: fastKey,
getWeak: getWeak,
onFreeze: onFreeze
};
/***/ }),
/* 108 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var redefineAll = __w_pdfjs_require__(97);
var getWeak = __w_pdfjs_require__(107).getWeak;
var anObject = __w_pdfjs_require__(12);
var isObject = __w_pdfjs_require__(13);
var anInstance = __w_pdfjs_require__(87);
var forOf = __w_pdfjs_require__(88);
var createArrayMethod = __w_pdfjs_require__(103);
var $has = __w_pdfjs_require__(21);
var validate = __w_pdfjs_require__(109);
var arrayFind = createArrayMethod(5);
var arrayFindIndex = createArrayMethod(6);
var id = 0;
var uncaughtFrozenStore = function uncaughtFrozenStore(that) {
return that._l || (that._l = new UncaughtFrozenStore());
};
var UncaughtFrozenStore = function UncaughtFrozenStore() {
this.a = [];
};
var findUncaughtFrozen = function findUncaughtFrozen(store, key) {
return arrayFind(store.a, function (it) {
return it[0] === key;
});
};
UncaughtFrozenStore.prototype = {
get: function get(key) {
var entry = findUncaughtFrozen(this, key);
if (entry) return entry[1];
},
has: function has(key) {
return !!findUncaughtFrozen(this, key);
},
set: function set(key, value) {
var entry = findUncaughtFrozen(this, key);
if (entry) entry[1] = value;else this.a.push([key, value]);
},
'delete': function _delete(key) {
var index = arrayFindIndex(this.a, function (it) {
return it[0] === key;
});
if (~index) this.a.splice(index, 1);
return !!~index;
}
};
module.exports = {
getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) {
var C = wrapper(function (that, iterable) {
anInstance(that, C, NAME, '_i');
that._t = NAME;
that._i = id++;
that._l = undefined;
if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
});
redefineAll(C.prototype, {
'delete': function _delete(key) {
if (!isObject(key)) return false;
var data = getWeak(key);
if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
return data && $has(data, this._i) && delete data[this._i];
},
has: function has(key) {
if (!isObject(key)) return false;
var data = getWeak(key);
if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
return data && $has(data, this._i);
}
});
return C;
},
def: function def(that, key, value) {
var data = getWeak(anObject(key), true);
if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value;
return that;
},
ufstore: uncaughtFrozenStore
};
/***/ }),
/* 109 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isObject = __w_pdfjs_require__(13);
module.exports = function (it, TYPE) {
if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
return it;
};
/***/ }),
/* 110 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var global = __w_pdfjs_require__(8);
var $export = __w_pdfjs_require__(7);
var redefine = __w_pdfjs_require__(20);
var redefineAll = __w_pdfjs_require__(97);
var meta = __w_pdfjs_require__(107);
var forOf = __w_pdfjs_require__(88);
var anInstance = __w_pdfjs_require__(87);
var isObject = __w_pdfjs_require__(13);
var fails = __w_pdfjs_require__(16);
var $iterDetect = __w_pdfjs_require__(68);
var setToStringTag = __w_pdfjs_require__(59);
var inheritIfRequired = __w_pdfjs_require__(111);
module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
var Base = global[NAME];
var C = Base;
var ADDER = IS_MAP ? 'set' : 'add';
var proto = C && C.prototype;
var O = {};
var fixMethod = function fixMethod(KEY) {
var fn = proto[KEY];
redefine(proto, KEY, KEY == 'delete' ? function (a) {
return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
} : KEY == 'has' ? function has(a) {
return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
} : KEY == 'get' ? function get(a) {
return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
} : KEY == 'add' ? function add(a) {
fn.call(this, a === 0 ? 0 : a);
return this;
} : function set(a, b) {
fn.call(this, a === 0 ? 0 : a, b);
return this;
});
};
if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
new C().entries().next();
}))) {
C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
redefineAll(C.prototype, methods);
meta.NEED = true;
} else {
var instance = new C();
var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
var THROWS_ON_PRIMITIVES = fails(function () {
instance.has(1);
});
var ACCEPT_ITERABLES = $iterDetect(function (iter) {
new C(iter);
});
var BUGGY_ZERO = !IS_WEAK && fails(function () {
var $instance = new C();
var index = 5;
while (index--) {
$instance[ADDER](index, index);
}
return !$instance.has(-0);
});
if (!ACCEPT_ITERABLES) {
C = wrapper(function (target, iterable) {
anInstance(target, C, NAME);
var that = inheritIfRequired(new Base(), target, C);
if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
return that;
});
C.prototype = proto;
proto.constructor = C;
}
if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
fixMethod('delete');
fixMethod('has');
IS_MAP && fixMethod('get');
}
if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
if (IS_WEAK && proto.clear) delete proto.clear;
}
setToStringTag(C, NAME);
O[NAME] = C;
$export($export.G + $export.W + $export.F * (C != Base), O);
if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
return C;
};
/***/ }),
/* 111 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isObject = __w_pdfjs_require__(13);
var setPrototypeOf = __w_pdfjs_require__(112).set;
module.exports = function (that, target, C) {
var S = target.constructor;
var P;
if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
setPrototypeOf(that, P);
}
return that;
};
/***/ }),
/* 112 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var isObject = __w_pdfjs_require__(13);
var anObject = __w_pdfjs_require__(12);
var check = function check(O, proto) {
anObject(O);
if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) {
try {
set = __w_pdfjs_require__(23)(Function.call, __w_pdfjs_require__(113).f(Object.prototype, '__proto__').set, 2);
set(test, []);
buggy = !(test instanceof Array);
} catch (e) {
buggy = true;
}
return function setPrototypeOf(O, proto) {
check(O, proto);
if (buggy) O.__proto__ = proto;else set(O, proto);
return O;
};
}({}, false) : undefined),
check: check
};
/***/ }),
/* 113 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var pIE = __w_pdfjs_require__(73);
var createDesc = __w_pdfjs_require__(19);
var toIObject = __w_pdfjs_require__(42);
var toPrimitive = __w_pdfjs_require__(18);
var has = __w_pdfjs_require__(21);
var IE8_DOM_DEFINE = __w_pdfjs_require__(14);
var gOPD = Object.getOwnPropertyDescriptor;
exports.f = __w_pdfjs_require__(15) ? gOPD : function getOwnPropertyDescriptor(O, P) {
O = toIObject(O);
P = toPrimitive(P, true);
if (IE8_DOM_DEFINE) try {
return gOPD(O, P);
} catch (e) {}
if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};
/***/ }),
/* 114 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(115)('WeakMap');
/***/ }),
/* 115 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
module.exports = function (COLLECTION) {
$export($export.S, COLLECTION, {
of: function of() {
var length = arguments.length;
var A = new Array(length);
while (length--) {
A[length] = arguments[length];
}
return new this(A);
}
});
};
/***/ }),
/* 116 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(117)('WeakMap');
/***/ }),
/* 117 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var aFunction = __w_pdfjs_require__(24);
var ctx = __w_pdfjs_require__(23);
var forOf = __w_pdfjs_require__(88);
module.exports = function (COLLECTION) {
$export($export.S, COLLECTION, {
from: function from(source) {
var mapFn = arguments[1];
var mapping, A, n, cb;
aFunction(this);
mapping = mapFn !== undefined;
if (mapping) aFunction(mapFn);
if (source == undefined) return new this();
A = [];
if (mapping) {
n = 0;
cb = ctx(mapFn, arguments[2], 2);
forOf(source, false, function (nextItem) {
A.push(cb(nextItem, n++));
});
} else {
forOf(source, false, A.push, A);
}
return new this(A);
}
});
};
/***/ }),
/* 118 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(82);
__w_pdfjs_require__(83);
__w_pdfjs_require__(119);
__w_pdfjs_require__(120);
__w_pdfjs_require__(121);
module.exports = __w_pdfjs_require__(9).WeakSet;
/***/ }),
/* 119 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var weak = __w_pdfjs_require__(108);
var validate = __w_pdfjs_require__(109);
var WEAK_SET = 'WeakSet';
__w_pdfjs_require__(110)(WEAK_SET, function (get) {
return function WeakSet() {
return get(this, arguments.length > 0 ? arguments[0] : undefined);
};
}, {
add: function add(value) {
return weak.def(validate(this, WEAK_SET), value, true);
}
}, weak, false, true);
/***/ }),
/* 120 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(115)('WeakSet');
/***/ }),
/* 121 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(117)('WeakSet');
/***/ }),
/* 122 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(123);
module.exports = __w_pdfjs_require__(9).String.codePointAt;
/***/ }),
/* 123 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var $at = __w_pdfjs_require__(48)(false);
$export($export.P, 'String', {
codePointAt: function codePointAt(pos) {
return $at(this, pos);
}
});
/***/ }),
/* 124 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(125);
module.exports = __w_pdfjs_require__(9).String.fromCodePoint;
/***/ }),
/* 125 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var toAbsoluteIndex = __w_pdfjs_require__(44);
var fromCharCode = String.fromCharCode;
var $fromCodePoint = String.fromCodePoint;
$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
fromCodePoint: function fromCodePoint(x) {
var res = [];
var aLen = arguments.length;
var i = 0;
var code;
while (aLen > i) {
code = +arguments[i++];
if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00));
}
return res.join('');
}
});
/***/ }),
/* 126 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(127);
__w_pdfjs_require__(82);
module.exports = __w_pdfjs_require__(9).Symbol;
/***/ }),
/* 127 */
/***/ (function(module, exports, __w_pdfjs_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 global = __w_pdfjs_require__(8);
var has = __w_pdfjs_require__(21);
var DESCRIPTORS = __w_pdfjs_require__(15);
var $export = __w_pdfjs_require__(7);
var redefine = __w_pdfjs_require__(20);
var META = __w_pdfjs_require__(107).KEY;
var $fails = __w_pdfjs_require__(16);
var shared = __w_pdfjs_require__(31);
var setToStringTag = __w_pdfjs_require__(59);
var uid = __w_pdfjs_require__(22);
var wks = __w_pdfjs_require__(30);
var wksExt = __w_pdfjs_require__(128);
var wksDefine = __w_pdfjs_require__(129);
var enumKeys = __w_pdfjs_require__(130);
var isArray = __w_pdfjs_require__(106);
var anObject = __w_pdfjs_require__(12);
var isObject = __w_pdfjs_require__(13);
var toIObject = __w_pdfjs_require__(42);
var toPrimitive = __w_pdfjs_require__(18);
var createDesc = __w_pdfjs_require__(19);
var _create = __w_pdfjs_require__(52);
var gOPNExt = __w_pdfjs_require__(131);
var $GOPD = __w_pdfjs_require__(113);
var $DP = __w_pdfjs_require__(11);
var $keys = __w_pdfjs_require__(54);
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function';
var QObject = global.QObject;
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
var setSymbolDesc = DESCRIPTORS && $fails(function () {
return _create(dP({}, 'a', {
get: function get() {
return dP(this, 'a', {
value: 7
}).a;
}
})).a != 7;
}) ? function (it, key, D) {
var protoDesc = gOPD(ObjectProto, key);
if (protoDesc) delete ObjectProto[key];
dP(it, key, D);
if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;
var wrap = function wrap(tag) {
var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
sym._k = tag;
return sym;
};
var isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) {
return _typeof(it) == 'symbol';
} : function (it) {
return it instanceof $Symbol;
};
var $defineProperty = function defineProperty(it, key, D) {
if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
anObject(it);
key = toPrimitive(key, true);
anObject(D);
if (has(AllSymbols, key)) {
if (!D.enumerable) {
if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
it[HIDDEN][key] = true;
} else {
if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
D = _create(D, {
enumerable: createDesc(0, false)
});
}
return setSymbolDesc(it, key, D);
}
return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
anObject(it);
var keys = enumKeys(P = toIObject(P));
var i = 0;
var l = keys.length;
var key;
while (l > i) {
$defineProperty(it, key = keys[i++], P[key]);
}
return it;
};
var $create = function create(it, P) {
return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
var E = isEnum.call(this, key = toPrimitive(key, true));
if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
it = toIObject(it);
key = toPrimitive(key, true);
if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
var D = gOPD(it, key);
if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
var names = gOPN(toIObject(it));
var result = [];
var i = 0;
var key;
while (names.length > i) {
if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
}
return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
var IS_OP = it === ObjectProto;
var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
var result = [];
var i = 0;
var key;
while (names.length > i) {
if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
}
return result;
};
if (!USE_NATIVE) {
$Symbol = function _Symbol() {
if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
var $set = function $set(value) {
if (this === ObjectProto) $set.call(OPSymbols, value);
if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
setSymbolDesc(this, tag, createDesc(1, value));
};
if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {
configurable: true,
set: $set
});
return wrap(tag);
};
redefine($Symbol[PROTOTYPE], 'toString', function toString() {
return this._k;
});
$GOPD.f = $getOwnPropertyDescriptor;
$DP.f = $defineProperty;
__w_pdfjs_require__(132).f = gOPNExt.f = $getOwnPropertyNames;
__w_pdfjs_require__(73).f = $propertyIsEnumerable;
__w_pdfjs_require__(72).f = $getOwnPropertySymbols;
if (DESCRIPTORS && !__w_pdfjs_require__(32)) {
redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
}
wksExt.f = function (name) {
return wrap(wks(name));
};
}
$export($export.G + $export.W + $export.F * !USE_NATIVE, {
Symbol: $Symbol
});
for (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {
wks(es6Symbols[j++]);
}
for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {
wksDefine(wellKnownSymbols[k++]);
}
$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
'for': function _for(key) {
return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);
},
keyFor: function keyFor(sym) {
if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
for (var key in SymbolRegistry) {
if (SymbolRegistry[key] === sym) return key;
}
},
useSetter: function useSetter() {
setter = true;
},
useSimple: function useSimple() {
setter = false;
}
});
$export($export.S + $export.F * !USE_NATIVE, 'Object', {
create: $create,
defineProperty: $defineProperty,
defineProperties: $defineProperties,
getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
getOwnPropertyNames: $getOwnPropertyNames,
getOwnPropertySymbols: $getOwnPropertySymbols
});
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
var S = $Symbol();
return _stringify([S]) != '[null]' || _stringify({
a: S
}) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
stringify: function stringify(it) {
var args = [it];
var i = 1;
var replacer, $replacer;
while (arguments.length > i) {
args.push(arguments[i++]);
}
$replacer = replacer = args[1];
if (!isObject(replacer) && it === undefined || isSymbol(it)) return;
if (!isArray(replacer)) replacer = function replacer(key, value) {
if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
if (!isSymbol(value)) return value;
};
args[1] = replacer;
return _stringify.apply($JSON, args);
}
});
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(10)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
setToStringTag($Symbol, 'Symbol');
setToStringTag(Math, 'Math', true);
setToStringTag(global.JSON, 'JSON', true);
/***/ }),
/* 128 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
exports.f = __w_pdfjs_require__(30);
/***/ }),
/* 129 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var global = __w_pdfjs_require__(8);
var core = __w_pdfjs_require__(9);
var LIBRARY = __w_pdfjs_require__(32);
var wksExt = __w_pdfjs_require__(128);
var defineProperty = __w_pdfjs_require__(11).f;
module.exports = function (name) {
var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, {
value: wksExt.f(name)
});
};
/***/ }),
/* 130 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var getKeys = __w_pdfjs_require__(54);
var gOPS = __w_pdfjs_require__(72);
var pIE = __w_pdfjs_require__(73);
module.exports = function (it) {
var result = getKeys(it);
var getSymbols = gOPS.f;
if (getSymbols) {
var symbols = getSymbols(it);
var isEnum = pIE.f;
var i = 0;
var key;
while (symbols.length > i) {
if (isEnum.call(it, key = symbols[i++])) result.push(key);
}
}
return result;
};
/***/ }),
/* 131 */
/***/ (function(module, exports, __w_pdfjs_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 toIObject = __w_pdfjs_require__(42);
var gOPN = __w_pdfjs_require__(132).f;
var toString = {}.toString;
var windowNames = (typeof window === "undefined" ? "undefined" : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
var getWindowNames = function getWindowNames(it) {
try {
return gOPN(it);
} catch (e) {
return windowNames.slice();
}
};
module.exports.f = function getOwnPropertyNames(it) {
return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};
/***/ }),
/* 132 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $keys = __w_pdfjs_require__(55);
var hiddenKeys = __w_pdfjs_require__(57).concat('length', 'prototype');
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
return $keys(O, hiddenKeys);
};
/***/ }),
/* 133 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(134);
module.exports = __w_pdfjs_require__(9).String.padStart;
/***/ }),
/* 134 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var $pad = __w_pdfjs_require__(135);
var userAgent = __w_pdfjs_require__(95);
$export($export.P + $export.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(userAgent), 'String', {
padStart: function padStart(maxLength) {
return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
}
});
/***/ }),
/* 135 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var toLength = __w_pdfjs_require__(25);
var repeat = __w_pdfjs_require__(136);
var defined = __w_pdfjs_require__(33);
module.exports = function (that, maxLength, fillString, left) {
var S = String(defined(that));
var stringLength = S.length;
var fillStr = fillString === undefined ? ' ' : String(fillString);
var intMaxLength = toLength(maxLength);
if (intMaxLength <= stringLength || fillStr == '') return S;
var fillLen = intMaxLength - stringLength;
var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
return left ? stringFiller + S : S + stringFiller;
};
/***/ }),
/* 136 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var toInteger = __w_pdfjs_require__(26);
var defined = __w_pdfjs_require__(33);
module.exports = function repeat(count) {
var str = String(defined(this));
var res = '';
var n = toInteger(count);
if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
for (; n > 0; (n >>>= 1) && (str += str)) {
if (n & 1) res += str;
}
return res;
};
/***/ }),
/* 137 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(138);
module.exports = __w_pdfjs_require__(9).String.padEnd;
/***/ }),
/* 138 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var $pad = __w_pdfjs_require__(135);
var userAgent = __w_pdfjs_require__(95);
$export($export.P + $export.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(userAgent), 'String', {
padEnd: function padEnd(maxLength) {
return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
}
});
/***/ }),
/* 139 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
__w_pdfjs_require__(140);
module.exports = __w_pdfjs_require__(9).Object.values;
/***/ }),
/* 140 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var $export = __w_pdfjs_require__(7);
var $values = __w_pdfjs_require__(141)(false);
$export($export.S, 'Object', {
values: function values(it) {
return $values(it);
}
});
/***/ }),
/* 141 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var getKeys = __w_pdfjs_require__(54);
var toIObject = __w_pdfjs_require__(42);
var isEnum = __w_pdfjs_require__(73).f;
module.exports = function (isEntries) {
return function (it) {
var O = toIObject(it);
var keys = getKeys(O);
var length = keys.length;
var i = 0;
var result = [];
var key;
while (length > i) {
if (isEnum.call(O, key = keys[i++])) {
result.push(isEntries ? [key, O[key]] : O[key]);
}
}
return result;
};
};
/***/ }),
/* 142 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
{
var isReadableStreamSupported = false;
if (typeof ReadableStream !== 'undefined') {
try {
new ReadableStream({
start: function start(controller) {
controller.close();
}
});
isReadableStreamSupported = true;
} catch (e) {}
}
if (isReadableStreamSupported) {
exports.ReadableStream = ReadableStream;
} else {
exports.ReadableStream = __w_pdfjs_require__(143).ReadableStream;
}
}
/***/ }),
/* 143 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
(function (e, a) {
for (var i in a) {
e[i] = a[i];
}
})(exports, function (modules) {
var installedModules = {};
function __w_pdfjs_require__(moduleId) {
if (installedModules[moduleId]) return installedModules[moduleId].exports;
var module = installedModules[moduleId] = {
i: moduleId,
l: false,
exports: {}
};
modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
module.l = true;
return module.exports;
}
__w_pdfjs_require__.m = modules;
__w_pdfjs_require__.c = installedModules;
__w_pdfjs_require__.i = function (value) {
return value;
};
__w_pdfjs_require__.d = function (exports, name, getter) {
if (!__w_pdfjs_require__.o(exports, name)) {
Object.defineProperty(exports, name, {
configurable: false,
enumerable: true,
get: getter
});
}
};
__w_pdfjs_require__.n = function (module) {
var getter = module && module.__esModule ? function getDefault() {
return module['default'];
} : function getModuleExports() {
return module;
};
__w_pdfjs_require__.d(getter, 'a', getter);
return getter;
};
__w_pdfjs_require__.o = function (object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
};
__w_pdfjs_require__.p = "";
return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);
}([function (module, exports, __w_pdfjs_require__) {
"use strict";
var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
return _typeof2(obj);
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
};
var _require = __w_pdfjs_require__(1),
assert = _require.assert;
function IsPropertyKey(argument) {
return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';
}
exports.typeIsObject = function (x) {
return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';
};
exports.createDataProperty = function (o, p, v) {
assert(exports.typeIsObject(o));
Object.defineProperty(o, p, {
value: v,
writable: true,
enumerable: true,
configurable: true
});
};
exports.createArrayFromList = function (elements) {
return elements.slice();
};
exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {
new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);
};
exports.CreateIterResultObject = function (value, done) {
assert(typeof done === 'boolean');
var obj = {};
Object.defineProperty(obj, 'value', {
value: value,
enumerable: true,
writable: true,
configurable: true
});
Object.defineProperty(obj, 'done', {
value: done,
enumerable: true,
writable: true,
configurable: true
});
return obj;
};
exports.IsFiniteNonNegativeNumber = function (v) {
if (Number.isNaN(v)) {
return false;
}
if (v === Infinity) {
return false;
}
if (v < 0) {
return false;
}
return true;
};
function Call(F, V, args) {
if (typeof F !== 'function') {
throw new TypeError('Argument is not a function');
}
return Function.prototype.apply.call(F, V, args);
}
exports.InvokeOrNoop = function (O, P, args) {
assert(O !== undefined);
assert(IsPropertyKey(P));
assert(Array.isArray(args));
var method = O[P];
if (method === undefined) {
return undefined;
}
return Call(method, O, args);
};
exports.PromiseInvokeOrNoop = function (O, P, args) {
assert(O !== undefined);
assert(IsPropertyKey(P));
assert(Array.isArray(args));
try {
return Promise.resolve(exports.InvokeOrNoop(O, P, args));
} catch (returnValueE) {
return Promise.reject(returnValueE);
}
};
exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {
assert(O !== undefined);
assert(IsPropertyKey(P));
assert(Array.isArray(args));
assert(Array.isArray(argsF));
var method = void 0;
try {
method = O[P];
} catch (methodE) {
return Promise.reject(methodE);
}
if (method === undefined) {
return F.apply(null, argsF);
}
try {
return Promise.resolve(Call(method, O, args));
} catch (e) {
return Promise.reject(e);
}
};
exports.TransferArrayBuffer = function (O) {
return O.slice();
};
exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {
highWaterMark = Number(highWaterMark);
if (Number.isNaN(highWaterMark) || highWaterMark < 0) {
throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');
}
return highWaterMark;
};
exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {
if (size !== undefined && typeof size !== 'function') {
throw new TypeError('size property of a queuing strategy must be a function');
}
highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);
return {
size: size,
highWaterMark: highWaterMark
};
};
}, function (module, exports, __w_pdfjs_require__) {
"use strict";
function rethrowAssertionErrorRejection(e) {
if (e && e.constructor === AssertionError) {
setTimeout(function () {
throw e;
}, 0);
}
}
function AssertionError(message) {
this.name = 'AssertionError';
this.message = message || '';
this.stack = new Error().stack;
}
AssertionError.prototype = Object.create(Error.prototype);
AssertionError.prototype.constructor = AssertionError;
function assert(value, message) {
if (!value) {
throw new AssertionError(message);
}
}
module.exports = {
rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,
AssertionError: AssertionError,
assert: assert
};
}, function (module, exports, __w_pdfjs_require__) {
"use strict";
var _createClass = 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);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var _require = __w_pdfjs_require__(0),
InvokeOrNoop = _require.InvokeOrNoop,
PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
typeIsObject = _require.typeIsObject;
var _require2 = __w_pdfjs_require__(1),
assert = _require2.assert,
rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;
var _require3 = __w_pdfjs_require__(3),
DequeueValue = _require3.DequeueValue,
EnqueueValueWithSize = _require3.EnqueueValueWithSize,
PeekQueueValue = _require3.PeekQueueValue,
ResetQueue = _require3.ResetQueue;
var WritableStream = function () {
function WritableStream() {
var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
size = _ref.size,
_ref$highWaterMark = _ref.highWaterMark,
highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;
_classCallCheck(this, WritableStream);
this._state = 'writable';
this._storedError = undefined;
this._writer = undefined;
this._writableStreamController = undefined;
this._writeRequests = [];
this._inFlightWriteRequest = undefined;
this._closeRequest = undefined;
this._inFlightCloseRequest = undefined;
this._pendingAbortRequest = undefined;
this._backpressure = false;
var type = underlyingSink.type;
if (type !== undefined) {
throw new RangeError('Invalid type is specified');
}
this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);
this._writableStreamController.__startSteps();
}
_createClass(WritableStream, [{
key: 'abort',
value: function abort(reason) {
if (IsWritableStream(this) === false) {
return Promise.reject(streamBrandCheckException('abort'));
}
if (IsWritableStreamLocked(this) === true) {
return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));
}
return WritableStreamAbort(this, reason);
}
}, {
key: 'getWriter',
value: function getWriter() {
if (IsWritableStream(this) === false) {
throw streamBrandCheckException('getWriter');
}
return AcquireWritableStreamDefaultWriter(this);
}
}, {
key: 'locked',
get: function get() {
if (IsWritableStream(this) === false) {
throw streamBrandCheckException('locked');
}
return IsWritableStreamLocked(this);
}
}]);
return WritableStream;
}();
module.exports = {
AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,
IsWritableStream: IsWritableStream,
IsWritableStreamLocked: IsWritableStreamLocked,
WritableStream: WritableStream,
WritableStreamAbort: WritableStreamAbort,
WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,
WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,
WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,
WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,
WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight
};
function AcquireWritableStreamDefaultWriter(stream) {
return new WritableStreamDefaultWriter(stream);
}
function IsWritableStream(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {
return false;
}
return true;
}
function IsWritableStreamLocked(stream) {
assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');
if (stream._writer === undefined) {
return false;
}
return true;
}
function WritableStreamAbort(stream, reason) {
var state = stream._state;
if (state === 'closed') {
return Promise.resolve(undefined);
}
if (state === 'errored') {
return Promise.reject(stream._storedError);
}
var error = new TypeError('Requested to abort');
if (stream._pendingAbortRequest !== undefined) {
return Promise.reject(error);
}
assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');
var wasAlreadyErroring = false;
if (state === 'erroring') {
wasAlreadyErroring = true;
reason = undefined;
}
var promise = new Promise(function (resolve, reject) {
stream._pendingAbortRequest = {
_resolve: resolve,
_reject: reject,
_reason: reason,
_wasAlreadyErroring: wasAlreadyErroring
};
});
if (wasAlreadyErroring === false) {
WritableStreamStartErroring(stream, error);
}
return promise;
}
function WritableStreamAddWriteRequest(stream) {
assert(IsWritableStreamLocked(stream) === true);
assert(stream._state === 'writable');
var promise = new Promise(function (resolve, reject) {
var writeRequest = {
_resolve: resolve,
_reject: reject
};
stream._writeRequests.push(writeRequest);
});
return promise;
}
function WritableStreamDealWithRejection(stream, error) {
var state = stream._state;
if (state === 'writable') {
WritableStreamStartErroring(stream, error);
return;
}
assert(state === 'erroring');
WritableStreamFinishErroring(stream);
}
function WritableStreamStartErroring(stream, reason) {
assert(stream._storedError === undefined, 'stream._storedError === undefined');
assert(stream._state === 'writable', 'state must be writable');
var controller = stream._writableStreamController;
assert(controller !== undefined, 'controller must not be undefined');
stream._state = 'erroring';
stream._storedError = reason;
var writer = stream._writer;
if (writer !== undefined) {
WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);
}
if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {
WritableStreamFinishErroring(stream);
}
}
function WritableStreamFinishErroring(stream) {
assert(stream._state === 'erroring', 'stream._state === erroring');
assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');
stream._state = 'errored';
stream._writableStreamController.__errorSteps();
var storedError = stream._storedError;
for (var i = 0; i < stream._writeRequests.length; i++) {
var writeRequest = stream._writeRequests[i];
writeRequest._reject(storedError);
}
stream._writeRequests = [];
if (stream._pendingAbortRequest === undefined) {
WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
return;
}
var abortRequest = stream._pendingAbortRequest;
stream._pendingAbortRequest = undefined;
if (abortRequest._wasAlreadyErroring === true) {
abortRequest._reject(storedError);
WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
return;
}
var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);
promise.then(function () {
abortRequest._resolve();
WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
}, function (reason) {
abortRequest._reject(reason);
WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
});
}
function WritableStreamFinishInFlightWrite(stream) {
assert(stream._inFlightWriteRequest !== undefined);
stream._inFlightWriteRequest._resolve(undefined);
stream._inFlightWriteRequest = undefined;
}
function WritableStreamFinishInFlightWriteWithError(stream, error) {
assert(stream._inFlightWriteRequest !== undefined);
stream._inFlightWriteRequest._reject(error);
stream._inFlightWriteRequest = undefined;
assert(stream._state === 'writable' || stream._state === 'erroring');
WritableStreamDealWithRejection(stream, error);
}
function WritableStreamFinishInFlightClose(stream) {
assert(stream._inFlightCloseRequest !== undefined);
stream._inFlightCloseRequest._resolve(undefined);
stream._inFlightCloseRequest = undefined;
var state = stream._state;
assert(state === 'writable' || state === 'erroring');
if (state === 'erroring') {
stream._storedError = undefined;
if (stream._pendingAbortRequest !== undefined) {
stream._pendingAbortRequest._resolve();
stream._pendingAbortRequest = undefined;
}
}
stream._state = 'closed';
var writer = stream._writer;
if (writer !== undefined) {
defaultWriterClosedPromiseResolve(writer);
}
assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');
assert(stream._storedError === undefined, 'stream._storedError === undefined');
}
function WritableStreamFinishInFlightCloseWithError(stream, error) {
assert(stream._inFlightCloseRequest !== undefined);
stream._inFlightCloseRequest._reject(error);
stream._inFlightCloseRequest = undefined;
assert(stream._state === 'writable' || stream._state === 'erroring');
if (stream._pendingAbortRequest !== undefined) {
stream._pendingAbortRequest._reject(error);
stream._pendingAbortRequest = undefined;
}
WritableStreamDealWithRejection(stream, error);
}
function WritableStreamCloseQueuedOrInFlight(stream) {
if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {
return false;
}
return true;
}
function WritableStreamHasOperationMarkedInFlight(stream) {
if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {
return false;
}
return true;
}
function WritableStreamMarkCloseRequestInFlight(stream) {
assert(stream._inFlightCloseRequest === undefined);
assert(stream._closeRequest !== undefined);
stream._inFlightCloseRequest = stream._closeRequest;
stream._closeRequest = undefined;
}
function WritableStreamMarkFirstWriteRequestInFlight(stream) {
assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');
assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');
stream._inFlightWriteRequest = stream._writeRequests.shift();
}
function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {
assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`');
if (stream._closeRequest !== undefined) {
assert(stream._inFlightCloseRequest === undefined);
stream._closeRequest._reject(stream._storedError);
stream._closeRequest = undefined;
}
var writer = stream._writer;
if (writer !== undefined) {
defaultWriterClosedPromiseReject(writer, stream._storedError);
writer._closedPromise.catch(function () {});
}
}
function WritableStreamUpdateBackpressure(stream, backpressure) {
assert(stream._state === 'writable');
assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
var writer = stream._writer;
if (writer !== undefined && backpressure !== stream._backpressure) {
if (backpressure === true) {
defaultWriterReadyPromiseReset(writer);
} else {
assert(backpressure === false);
defaultWriterReadyPromiseResolve(writer);
}
}
stream._backpressure = backpressure;
}
var WritableStreamDefaultWriter = function () {
function WritableStreamDefaultWriter(stream) {
_classCallCheck(this, WritableStreamDefaultWriter);
if (IsWritableStream(stream) === false) {
throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');
}
if (IsWritableStreamLocked(stream) === true) {
throw new TypeError('This stream has already been locked for exclusive writing by another writer');
}
this._ownerWritableStream = stream;
stream._writer = this;
var state = stream._state;
if (state === 'writable') {
if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {
defaultWriterReadyPromiseInitialize(this);
} else {
defaultWriterReadyPromiseInitializeAsResolved(this);
}
defaultWriterClosedPromiseInitialize(this);
} else if (state === 'erroring') {
defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);
this._readyPromise.catch(function () {});
defaultWriterClosedPromiseInitialize(this);
} else if (state === 'closed') {
defaultWriterReadyPromiseInitializeAsResolved(this);
defaultWriterClosedPromiseInitializeAsResolved(this);
} else {
assert(state === 'errored', 'state must be errored');
var storedError = stream._storedError;
defaultWriterReadyPromiseInitializeAsRejected(this, storedError);
this._readyPromise.catch(function () {});
defaultWriterClosedPromiseInitializeAsRejected(this, storedError);
this._closedPromise.catch(function () {});
}
}
_createClass(WritableStreamDefaultWriter, [{
key: 'abort',
value: function abort(reason) {
if (IsWritableStreamDefaultWriter(this) === false) {
return Promise.reject(defaultWriterBrandCheckException('abort'));
}
if (this._ownerWritableStream === undefined) {
return Promise.reject(defaultWriterLockException('abort'));
}
return WritableStreamDefaultWriterAbort(this, reason);
}
}, {
key: 'close',
value: function close() {
if (IsWritableStreamDefaultWriter(this) === false) {
return Promise.reject(defaultWriterBrandCheckException('close'));
}
var stream = this._ownerWritableStream;
if (stream === undefined) {
return Promise.reject(defaultWriterLockException('close'));
}
if (WritableStreamCloseQueuedOrInFlight(stream) === true) {
return Promise.reject(new TypeError('cannot close an already-closing stream'));
}
return WritableStreamDefaultWriterClose(this);
}
}, {
key: 'releaseLock',
value: function releaseLock() {
if (IsWritableStreamDefaultWriter(this) === false) {
throw defaultWriterBrandCheckException('releaseLock');
}
var stream = this._ownerWritableStream;
if (stream === undefined) {
return;
}
assert(stream._writer !== undefined);
WritableStreamDefaultWriterRelease(this);
}
}, {
key: 'write',
value: function write(chunk) {
if (IsWritableStreamDefaultWriter(this) === false) {
return Promise.reject(defaultWriterBrandCheckException('write'));
}
if (this._ownerWritableStream === undefined) {
return Promise.reject(defaultWriterLockException('write to'));
}
return WritableStreamDefaultWriterWrite(this, chunk);
}
}, {
key: 'closed',
get: function get() {
if (IsWritableStreamDefaultWriter(this) === false) {
return Promise.reject(defaultWriterBrandCheckException('closed'));
}
return this._closedPromise;
}
}, {
key: 'desiredSize',
get: function get() {
if (IsWritableStreamDefaultWriter(this) === false) {
throw defaultWriterBrandCheckException('desiredSize');
}
if (this._ownerWritableStream === undefined) {
throw defaultWriterLockException('desiredSize');
}
return WritableStreamDefaultWriterGetDesiredSize(this);
}
}, {
key: 'ready',
get: function get() {
if (IsWritableStreamDefaultWriter(this) === false) {
return Promise.reject(defaultWriterBrandCheckException('ready'));
}
return this._readyPromise;
}
}]);
return WritableStreamDefaultWriter;
}();
function IsWritableStreamDefaultWriter(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {
return false;
}
return true;
}
function WritableStreamDefaultWriterAbort(writer, reason) {
var stream = writer._ownerWritableStream;
assert(stream !== undefined);
return WritableStreamAbort(stream, reason);
}
function WritableStreamDefaultWriterClose(writer) {
var stream = writer._ownerWritableStream;
assert(stream !== undefined);
var state = stream._state;
if (state === 'closed' || state === 'errored') {
return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));
}
assert(state === 'writable' || state === 'erroring');
assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
var promise = new Promise(function (resolve, reject) {
var closeRequest = {
_resolve: resolve,
_reject: reject
};
stream._closeRequest = closeRequest;
});
if (stream._backpressure === true && state === 'writable') {
defaultWriterReadyPromiseResolve(writer);
}
WritableStreamDefaultControllerClose(stream._writableStreamController);
return promise;
}
function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
var stream = writer._ownerWritableStream;
assert(stream !== undefined);
var state = stream._state;
if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
return Promise.resolve();
}
if (state === 'errored') {
return Promise.reject(stream._storedError);
}
assert(state === 'writable' || state === 'erroring');
return WritableStreamDefaultWriterClose(writer);
}
function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {
if (writer._closedPromiseState === 'pending') {
defaultWriterClosedPromiseReject(writer, error);
} else {
defaultWriterClosedPromiseResetToRejected(writer, error);
}
writer._closedPromise.catch(function () {});
}
function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {
if (writer._readyPromiseState === 'pending') {
defaultWriterReadyPromiseReject(writer, error);
} else {
defaultWriterReadyPromiseResetToRejected(writer, error);
}
writer._readyPromise.catch(function () {});
}
function WritableStreamDefaultWriterGetDesiredSize(writer) {
var stream = writer._ownerWritableStream;
var state = stream._state;
if (state === 'errored' || state === 'erroring') {
return null;
}
if (state === 'closed') {
return 0;
}
return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);
}
function WritableStreamDefaultWriterRelease(writer) {
var stream = writer._ownerWritableStream;
assert(stream !== undefined);
assert(stream._writer === writer);
var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness');
WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);
WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);
stream._writer = undefined;
writer._ownerWritableStream = undefined;
}
function WritableStreamDefaultWriterWrite(writer, chunk) {
var stream = writer._ownerWritableStream;
assert(stream !== undefined);
var controller = stream._writableStreamController;
var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);
if (stream !== writer._ownerWritableStream) {
return Promise.reject(defaultWriterLockException('write to'));
}
var state = stream._state;
if (state === 'errored') {
return Promise.reject(stream._storedError);
}
if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));
}
if (state === 'erroring') {
return Promise.reject(stream._storedError);
}
assert(state === 'writable');
var promise = WritableStreamAddWriteRequest(stream);
WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);
return promise;
}
var WritableStreamDefaultController = function () {
function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {
_classCallCheck(this, WritableStreamDefaultController);
if (IsWritableStream(stream) === false) {
throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');
}
if (stream._writableStreamController !== undefined) {
throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');
}
this._controlledWritableStream = stream;
this._underlyingSink = underlyingSink;
this._queue = undefined;
this._queueTotalSize = undefined;
ResetQueue(this);
this._started = false;
var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
this._strategySize = normalizedStrategy.size;
this._strategyHWM = normalizedStrategy.highWaterMark;
var backpressure = WritableStreamDefaultControllerGetBackpressure(this);
WritableStreamUpdateBackpressure(stream, backpressure);
}
_createClass(WritableStreamDefaultController, [{
key: 'error',
value: function error(e) {
if (IsWritableStreamDefaultController(this) === false) {
throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');
}
var state = this._controlledWritableStream._state;
if (state !== 'writable') {
return;
}
WritableStreamDefaultControllerError(this, e);
}
}, {
key: '__abortSteps',
value: function __abortSteps(reason) {
return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);
}
}, {
key: '__errorSteps',
value: function __errorSteps() {
ResetQueue(this);
}
}, {
key: '__startSteps',
value: function __startSteps() {
var _this = this;
var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);
var stream = this._controlledWritableStream;
Promise.resolve(startResult).then(function () {
assert(stream._state === 'writable' || stream._state === 'erroring');
_this._started = true;
WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);
}, function (r) {
assert(stream._state === 'writable' || stream._state === 'erroring');
_this._started = true;
WritableStreamDealWithRejection(stream, r);
}).catch(rethrowAssertionErrorRejection);
}
}]);
return WritableStreamDefaultController;
}();
function WritableStreamDefaultControllerClose(controller) {
EnqueueValueWithSize(controller, 'close', 0);
WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
}
function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {
var strategySize = controller._strategySize;
if (strategySize === undefined) {
return 1;
}
try {
return strategySize(chunk);
} catch (chunkSizeE) {
WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
return 1;
}
}
function WritableStreamDefaultControllerGetDesiredSize(controller) {
return controller._strategyHWM - controller._queueTotalSize;
}
function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {
var writeRecord = {
chunk: chunk
};
try {
EnqueueValueWithSize(controller, writeRecord, chunkSize);
} catch (enqueueE) {
WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
return;
}
var stream = controller._controlledWritableStream;
if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {
var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
WritableStreamUpdateBackpressure(stream, backpressure);
}
WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
}
function IsWritableStreamDefaultController(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {
return false;
}
return true;
}
function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {
var stream = controller._controlledWritableStream;
if (controller._started === false) {
return;
}
if (stream._inFlightWriteRequest !== undefined) {
return;
}
var state = stream._state;
if (state === 'closed' || state === 'errored') {
return;
}
if (state === 'erroring') {
WritableStreamFinishErroring(stream);
return;
}
if (controller._queue.length === 0) {
return;
}
var writeRecord = PeekQueueValue(controller);
if (writeRecord === 'close') {
WritableStreamDefaultControllerProcessClose(controller);
} else {
WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);
}
}
function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {
if (controller._controlledWritableStream._state === 'writable') {
WritableStreamDefaultControllerError(controller, error);
}
}
function WritableStreamDefaultControllerProcessClose(controller) {
var stream = controller._controlledWritableStream;
WritableStreamMarkCloseRequestInFlight(stream);
DequeueValue(controller);
assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');
var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);
sinkClosePromise.then(function () {
WritableStreamFinishInFlightClose(stream);
}, function (reason) {
WritableStreamFinishInFlightCloseWithError(stream, reason);
}).catch(rethrowAssertionErrorRejection);
}
function WritableStreamDefaultControllerProcessWrite(controller, chunk) {
var stream = controller._controlledWritableStream;
WritableStreamMarkFirstWriteRequestInFlight(stream);
var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);
sinkWritePromise.then(function () {
WritableStreamFinishInFlightWrite(stream);
var state = stream._state;
assert(state === 'writable' || state === 'erroring');
DequeueValue(controller);
if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {
var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
WritableStreamUpdateBackpressure(stream, backpressure);
}
WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
}, function (reason) {
WritableStreamFinishInFlightWriteWithError(stream, reason);
}).catch(rethrowAssertionErrorRejection);
}
function WritableStreamDefaultControllerGetBackpressure(controller) {
var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);
return desiredSize <= 0;
}
function WritableStreamDefaultControllerError(controller, error) {
var stream = controller._controlledWritableStream;
assert(stream._state === 'writable');
WritableStreamStartErroring(stream, error);
}
function streamBrandCheckException(name) {
return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');
}
function defaultWriterBrandCheckException(name) {
return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');
}
function defaultWriterLockException(name) {
return new TypeError('Cannot ' + name + ' a stream using a released writer');
}
function defaultWriterClosedPromiseInitialize(writer) {
writer._closedPromise = new Promise(function (resolve, reject) {
writer._closedPromise_resolve = resolve;
writer._closedPromise_reject = reject;
writer._closedPromiseState = 'pending';
});
}
function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {
writer._closedPromise = Promise.reject(reason);
writer._closedPromise_resolve = undefined;
writer._closedPromise_reject = undefined;
writer._closedPromiseState = 'rejected';
}
function defaultWriterClosedPromiseInitializeAsResolved(writer) {
writer._closedPromise = Promise.resolve(undefined);
writer._closedPromise_resolve = undefined;
writer._closedPromise_reject = undefined;
writer._closedPromiseState = 'resolved';
}
function defaultWriterClosedPromiseReject(writer, reason) {
assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
writer._closedPromise_reject(reason);
writer._closedPromise_resolve = undefined;
writer._closedPromise_reject = undefined;
writer._closedPromiseState = 'rejected';
}
function defaultWriterClosedPromiseResetToRejected(writer, reason) {
assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');
assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');
assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');
writer._closedPromise = Promise.reject(reason);
writer._closedPromiseState = 'rejected';
}
function defaultWriterClosedPromiseResolve(writer) {
assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
writer._closedPromise_resolve(undefined);
writer._closedPromise_resolve = undefined;
writer._closedPromise_reject = undefined;
writer._closedPromiseState = 'resolved';
}
function defaultWriterReadyPromiseInitialize(writer) {
writer._readyPromise = new Promise(function (resolve, reject) {
writer._readyPromise_resolve = resolve;
writer._readyPromise_reject = reject;
});
writer._readyPromiseState = 'pending';
}
function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {
writer._readyPromise = Promise.reject(reason);
writer._readyPromise_resolve = undefined;
writer._readyPromise_reject = undefined;
writer._readyPromiseState = 'rejected';
}
function defaultWriterReadyPromiseInitializeAsResolved(writer) {
writer._readyPromise = Promise.resolve(undefined);
writer._readyPromise_resolve = undefined;
writer._readyPromise_reject = undefined;
writer._readyPromiseState = 'fulfilled';
}
function defaultWriterReadyPromiseReject(writer, reason) {
assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
writer._readyPromise_reject(reason);
writer._readyPromise_resolve = undefined;
writer._readyPromise_reject = undefined;
writer._readyPromiseState = 'rejected';
}
function defaultWriterReadyPromiseReset(writer) {
assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
writer._readyPromise = new Promise(function (resolve, reject) {
writer._readyPromise_resolve = resolve;
writer._readyPromise_reject = reject;
});
writer._readyPromiseState = 'pending';
}
function defaultWriterReadyPromiseResetToRejected(writer, reason) {
assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
writer._readyPromise = Promise.reject(reason);
writer._readyPromiseState = 'rejected';
}
function defaultWriterReadyPromiseResolve(writer) {
assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
writer._readyPromise_resolve(undefined);
writer._readyPromise_resolve = undefined;
writer._readyPromise_reject = undefined;
writer._readyPromiseState = 'fulfilled';
}
}, function (module, exports, __w_pdfjs_require__) {
"use strict";
var _require = __w_pdfjs_require__(0),
IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;
var _require2 = __w_pdfjs_require__(1),
assert = _require2.assert;
exports.DequeueValue = function (container) {
assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');
var pair = container._queue.shift();
container._queueTotalSize -= pair.size;
if (container._queueTotalSize < 0) {
container._queueTotalSize = 0;
}
return pair.value;
};
exports.EnqueueValueWithSize = function (container, value, size) {
assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');
size = Number(size);
if (!IsFiniteNonNegativeNumber(size)) {
throw new RangeError('Size must be a finite, non-NaN, non-negative number.');
}
container._queue.push({
value: value,
size: size
});
container._queueTotalSize += size;
};
exports.PeekQueueValue = function (container) {
assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');
var pair = container._queue[0];
return pair.value;
};
exports.ResetQueue = function (container) {
assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');
container._queue = [];
container._queueTotalSize = 0;
};
}, function (module, exports, __w_pdfjs_require__) {
"use strict";
var _createClass = 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);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var _require = __w_pdfjs_require__(0),
ArrayBufferCopy = _require.ArrayBufferCopy,
CreateIterResultObject = _require.CreateIterResultObject,
IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,
InvokeOrNoop = _require.InvokeOrNoop,
PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
TransferArrayBuffer = _require.TransferArrayBuffer,
ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;
var _require2 = __w_pdfjs_require__(0),
createArrayFromList = _require2.createArrayFromList,
createDataProperty = _require2.createDataProperty,
typeIsObject = _require2.typeIsObject;
var _require3 = __w_pdfjs_require__(1),
assert = _require3.assert,
rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;
var _require4 = __w_pdfjs_require__(3),
DequeueValue = _require4.DequeueValue,
EnqueueValueWithSize = _require4.EnqueueValueWithSize,
ResetQueue = _require4.ResetQueue;
var _require5 = __w_pdfjs_require__(2),
AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,
IsWritableStream = _require5.IsWritableStream,
IsWritableStreamLocked = _require5.IsWritableStreamLocked,
WritableStreamAbort = _require5.WritableStreamAbort,
WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,
WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,
WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,
WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;
var ReadableStream = function () {
function ReadableStream() {
var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
size = _ref.size,
highWaterMark = _ref.highWaterMark;
_classCallCheck(this, ReadableStream);
this._state = 'readable';
this._reader = undefined;
this._storedError = undefined;
this._disturbed = false;
this._readableStreamController = undefined;
var type = underlyingSource.type;
var typeString = String(type);
if (typeString === 'bytes') {
if (highWaterMark === undefined) {
highWaterMark = 0;
}
this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);
} else if (type === undefined) {
if (highWaterMark === undefined) {
highWaterMark = 1;
}
this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);
} else {
throw new RangeError('Invalid type is specified');
}
}
_createClass(ReadableStream, [{
key: 'cancel',
value: function cancel(reason) {
if (IsReadableStream(this) === false) {
return Promise.reject(streamBrandCheckException('cancel'));
}
if (IsReadableStreamLocked(this) === true) {
return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));
}
return ReadableStreamCancel(this, reason);
}
}, {
key: 'getReader',
value: function getReader() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
mode = _ref2.mode;
if (IsReadableStream(this) === false) {
throw streamBrandCheckException('getReader');
}
if (mode === undefined) {
return AcquireReadableStreamDefaultReader(this);
}
mode = String(mode);
if (mode === 'byob') {
return AcquireReadableStreamBYOBReader(this);
}
throw new RangeError('Invalid mode is specified');
}
}, {
key: 'pipeThrough',
value: function pipeThrough(_ref3, options) {
var writable = _ref3.writable,
readable = _ref3.readable;
var promise = this.pipeTo(writable, options);
ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);
return readable;
}
}, {
key: 'pipeTo',
value: function pipeTo(dest) {
var _this = this;
var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
preventClose = _ref4.preventClose,
preventAbort = _ref4.preventAbort,
preventCancel = _ref4.preventCancel;
if (IsReadableStream(this) === false) {
return Promise.reject(streamBrandCheckException('pipeTo'));
}
if (IsWritableStream(dest) === false) {
return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream'));
}
preventClose = Boolean(preventClose);
preventAbort = Boolean(preventAbort);
preventCancel = Boolean(preventCancel);
if (IsReadableStreamLocked(this) === true) {
return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));
}
if (IsWritableStreamLocked(dest) === true) {
return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));
}
var reader = AcquireReadableStreamDefaultReader(this);
var writer = AcquireWritableStreamDefaultWriter(dest);
var shuttingDown = false;
var currentWrite = Promise.resolve();
return new Promise(function (resolve, reject) {
function pipeLoop() {
currentWrite = Promise.resolve();
if (shuttingDown === true) {
return Promise.resolve();
}
return writer._readyPromise.then(function () {
return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {
var value = _ref5.value,
done = _ref5.done;
if (done === true) {
return;
}
currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});
});
}).then(pipeLoop);
}
isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {
if (preventAbort === false) {
shutdownWithAction(function () {
return WritableStreamAbort(dest, storedError);
}, true, storedError);
} else {
shutdown(true, storedError);
}
});
isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {
if (preventCancel === false) {
shutdownWithAction(function () {
return ReadableStreamCancel(_this, storedError);
}, true, storedError);
} else {
shutdown(true, storedError);
}
});
isOrBecomesClosed(_this, reader._closedPromise, function () {
if (preventClose === false) {
shutdownWithAction(function () {
return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);
});
} else {
shutdown();
}
});
if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {
var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');
if (preventCancel === false) {
shutdownWithAction(function () {
return ReadableStreamCancel(_this, destClosed);
}, true, destClosed);
} else {
shutdown(true, destClosed);
}
}
pipeLoop().catch(function (err) {
currentWrite = Promise.resolve();
rethrowAssertionErrorRejection(err);
});
function waitForWritesToFinish() {
var oldCurrentWrite = currentWrite;
return currentWrite.then(function () {
return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;
});
}
function isOrBecomesErrored(stream, promise, action) {
if (stream._state === 'errored') {
action(stream._storedError);
} else {
promise.catch(action).catch(rethrowAssertionErrorRejection);
}
}
function isOrBecomesClosed(stream, promise, action) {
if (stream._state === 'closed') {
action();
} else {
promise.then(action).catch(rethrowAssertionErrorRejection);
}
}
function shutdownWithAction(action, originalIsError, originalError) {
if (shuttingDown === true) {
return;
}
shuttingDown = true;
if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
waitForWritesToFinish().then(doTheRest);
} else {
doTheRest();
}
function doTheRest() {
action().then(function () {
return finalize(originalIsError, originalError);
}, function (newError) {
return finalize(true, newError);
}).catch(rethrowAssertionErrorRejection);
}
}
function shutdown(isError, error) {
if (shuttingDown === true) {
return;
}
shuttingDown = true;
if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
waitForWritesToFinish().then(function () {
return finalize(isError, error);
}).catch(rethrowAssertionErrorRejection);
} else {
finalize(isError, error);
}
}
function finalize(isError, error) {
WritableStreamDefaultWriterRelease(writer);
ReadableStreamReaderGenericRelease(reader);
if (isError) {
reject(error);
} else {
resolve(undefined);
}
}
});
}
}, {
key: 'tee',
value: function tee() {
if (IsReadableStream(this) === false) {
throw streamBrandCheckException('tee');
}
var branches = ReadableStreamTee(this, false);
return createArrayFromList(branches);
}
}, {
key: 'locked',
get: function get() {
if (IsReadableStream(this) === false) {
throw streamBrandCheckException('locked');
}
return IsReadableStreamLocked(this);
}
}]);
return ReadableStream;
}();
module.exports = {
ReadableStream: ReadableStream,
IsReadableStreamDisturbed: IsReadableStreamDisturbed,
ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,
ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,
ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,
ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize
};
function AcquireReadableStreamBYOBReader(stream) {
return new ReadableStreamBYOBReader(stream);
}
function AcquireReadableStreamDefaultReader(stream) {
return new ReadableStreamDefaultReader(stream);
}
function IsReadableStream(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {
return false;
}
return true;
}
function IsReadableStreamDisturbed(stream) {
assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');
return stream._disturbed;
}
function IsReadableStreamLocked(stream) {
assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');
if (stream._reader === undefined) {
return false;
}
return true;
}
function ReadableStreamTee(stream, cloneForBranch2) {
assert(IsReadableStream(stream) === true);
assert(typeof cloneForBranch2 === 'boolean');
var reader = AcquireReadableStreamDefaultReader(stream);
var teeState = {
closedOrErrored: false,
canceled1: false,
canceled2: false,
reason1: undefined,
reason2: undefined
};
teeState.promise = new Promise(function (resolve) {
teeState._resolve = resolve;
});
var pull = create_ReadableStreamTeePullFunction();
pull._reader = reader;
pull._teeState = teeState;
pull._cloneForBranch2 = cloneForBranch2;
var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();
cancel1._stream = stream;
cancel1._teeState = teeState;
var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();
cancel2._stream = stream;
cancel2._teeState = teeState;
var underlyingSource1 = Object.create(Object.prototype);
createDataProperty(underlyingSource1, 'pull', pull);
createDataProperty(underlyingSource1, 'cancel', cancel1);
var branch1Stream = new ReadableStream(underlyingSource1);
var underlyingSource2 = Object.create(Object.prototype);
createDataProperty(underlyingSource2, 'pull', pull);
createDataProperty(underlyingSource2, 'cancel', cancel2);
var branch2Stream = new ReadableStream(underlyingSource2);
pull._branch1 = branch1Stream._readableStreamController;
pull._branch2 = branch2Stream._readableStreamController;
reader._closedPromise.catch(function (r) {
if (teeState.closedOrErrored === true) {
return;
}
ReadableStreamDefaultControllerError(pull._branch1, r);
ReadableStreamDefaultControllerError(pull._branch2, r);
teeState.closedOrErrored = true;
});
return [branch1Stream, branch2Stream];
}
function create_ReadableStreamTeePullFunction() {
function f() {
var reader = f._reader,
branch1 = f._branch1,
branch2 = f._branch2,
teeState = f._teeState;
return ReadableStreamDefaultReaderRead(reader).then(function (result) {
assert(typeIsObject(result));
var value = result.value;
var done = result.done;
assert(typeof done === 'boolean');
if (done === true && teeState.closedOrErrored === false) {
if (teeState.canceled1 === false) {
ReadableStreamDefaultControllerClose(branch1);
}
if (teeState.canceled2 === false) {
ReadableStreamDefaultControllerClose(branch2);
}
teeState.closedOrErrored = true;
}
if (teeState.closedOrErrored === true) {
return;
}
var value1 = value;
var value2 = value;
if (teeState.canceled1 === false) {
ReadableStreamDefaultControllerEnqueue(branch1, value1);
}
if (teeState.canceled2 === false) {
ReadableStreamDefaultControllerEnqueue(branch2, value2);
}
});
}
return f;
}
function create_ReadableStreamTeeBranch1CancelFunction() {
function f(reason) {
var stream = f._stream,
teeState = f._teeState;
teeState.canceled1 = true;
teeState.reason1 = reason;
if (teeState.canceled2 === true) {
var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
var cancelResult = ReadableStreamCancel(stream, compositeReason);
teeState._resolve(cancelResult);
}
return teeState.promise;
}
return f;
}
function create_ReadableStreamTeeBranch2CancelFunction() {
function f(reason) {
var stream = f._stream,
teeState = f._teeState;
teeState.canceled2 = true;
teeState.reason2 = reason;
if (teeState.canceled1 === true) {
var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
var cancelResult = ReadableStreamCancel(stream, compositeReason);
teeState._resolve(cancelResult);
}
return teeState.promise;
}
return f;
}
function ReadableStreamAddReadIntoRequest(stream) {
assert(IsReadableStreamBYOBReader(stream._reader) === true);
assert(stream._state === 'readable' || stream._state === 'closed');
var promise = new Promise(function (resolve, reject) {
var readIntoRequest = {
_resolve: resolve,
_reject: reject
};
stream._reader._readIntoRequests.push(readIntoRequest);
});
return promise;
}
function ReadableStreamAddReadRequest(stream) {
assert(IsReadableStreamDefaultReader(stream._reader) === true);
assert(stream._state === 'readable');
var promise = new Promise(function (resolve, reject) {
var readRequest = {
_resolve: resolve,
_reject: reject
};
stream._reader._readRequests.push(readRequest);
});
return promise;
}
function ReadableStreamCancel(stream, reason) {
stream._disturbed = true;
if (stream._state === 'closed') {
return Promise.resolve(undefined);
}
if (stream._state === 'errored') {
return Promise.reject(stream._storedError);
}
ReadableStreamClose(stream);
var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);
return sourceCancelPromise.then(function () {
return undefined;
});
}
function ReadableStreamClose(stream) {
assert(stream._state === 'readable');
stream._state = 'closed';
var reader = stream._reader;
if (reader === undefined) {
return undefined;
}
if (IsReadableStreamDefaultReader(reader) === true) {
for (var i = 0; i < reader._readRequests.length; i++) {
var _resolve = reader._readRequests[i]._resolve;
_resolve(CreateIterResultObject(undefined, true));
}
reader._readRequests = [];
}
defaultReaderClosedPromiseResolve(reader);
return undefined;
}
function ReadableStreamError(stream, e) {
assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');
assert(stream._state === 'readable', 'state must be readable');
stream._state = 'errored';
stream._storedError = e;
var reader = stream._reader;
if (reader === undefined) {
return undefined;
}
if (IsReadableStreamDefaultReader(reader) === true) {
for (var i = 0; i < reader._readRequests.length; i++) {
var readRequest = reader._readRequests[i];
readRequest._reject(e);
}
reader._readRequests = [];
} else {
assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');
for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {
var readIntoRequest = reader._readIntoRequests[_i];
readIntoRequest._reject(e);
}
reader._readIntoRequests = [];
}
defaultReaderClosedPromiseReject(reader, e);
reader._closedPromise.catch(function () {});
}
function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {
var reader = stream._reader;
assert(reader._readIntoRequests.length > 0);
var readIntoRequest = reader._readIntoRequests.shift();
readIntoRequest._resolve(CreateIterResultObject(chunk, done));
}
function ReadableStreamFulfillReadRequest(stream, chunk, done) {
var reader = stream._reader;
assert(reader._readRequests.length > 0);
var readRequest = reader._readRequests.shift();
readRequest._resolve(CreateIterResultObject(chunk, done));
}
function ReadableStreamGetNumReadIntoRequests(stream) {
return stream._reader._readIntoRequests.length;
}
function ReadableStreamGetNumReadRequests(stream) {
return stream._reader._readRequests.length;
}
function ReadableStreamHasBYOBReader(stream) {
var reader = stream._reader;
if (reader === undefined) {
return false;
}
if (IsReadableStreamBYOBReader(reader) === false) {
return false;
}
return true;
}
function ReadableStreamHasDefaultReader(stream) {
var reader = stream._reader;
if (reader === undefined) {
return false;
}
if (IsReadableStreamDefaultReader(reader) === false) {
return false;
}
return true;
}
var ReadableStreamDefaultReader = function () {
function ReadableStreamDefaultReader(stream) {
_classCallCheck(this, ReadableStreamDefaultReader);
if (IsReadableStream(stream) === false) {
throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');
}
if (IsReadableStreamLocked(stream) === true) {
throw new TypeError('This stream has already been locked for exclusive reading by another reader');
}
ReadableStreamReaderGenericInitialize(this, stream);
this._readRequests = [];
}
_createClass(ReadableStreamDefaultReader, [{
key: 'cancel',
value: function cancel(reason) {
if (IsReadableStreamDefaultReader(this) === false) {
return Promise.reject(defaultReaderBrandCheckException('cancel'));
}
if (this._ownerReadableStream === undefined) {
return Promise.reject(readerLockException('cancel'));
}
return ReadableStreamReaderGenericCancel(this, reason);
}
}, {
key: 'read',
value: function read() {
if (IsReadableStreamDefaultReader(this) === false) {
return Promise.reject(defaultReaderBrandCheckException('read'));
}
if (this._ownerReadableStream === undefined) {
return Promise.reject(readerLockException('read from'));
}
return ReadableStreamDefaultReaderRead(this);
}
}, {
key: 'releaseLock',
value: function releaseLock() {
if (IsReadableStreamDefaultReader(this) === false) {
throw defaultReaderBrandCheckException('releaseLock');
}
if (this._ownerReadableStream === undefined) {
return;
}
if (this._readRequests.length > 0) {
throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
}
ReadableStreamReaderGenericRelease(this);
}
}, {
key: 'closed',
get: function get() {
if (IsReadableStreamDefaultReader(this) === false) {
return Promise.reject(defaultReaderBrandCheckException('closed'));
}
return this._closedPromise;
}
}]);
return ReadableStreamDefaultReader;
}();
var ReadableStreamBYOBReader = function () {
function ReadableStreamBYOBReader(stream) {
_classCallCheck(this, ReadableStreamBYOBReader);
if (!IsReadableStream(stream)) {
throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');
}
if (IsReadableByteStreamController(stream._readableStreamController) === false) {
throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');
}
if (IsReadableStreamLocked(stream)) {
throw new TypeError('This stream has already been locked for exclusive reading by another reader');
}
ReadableStreamReaderGenericInitialize(this, stream);
this._readIntoRequests = [];
}
_createClass(ReadableStreamBYOBReader, [{
key: 'cancel',
value: function cancel(reason) {
if (!IsReadableStreamBYOBReader(this)) {
return Promise.reject(byobReaderBrandCheckException('cancel'));
}
if (this._ownerReadableStream === undefined) {
return Promise.reject(readerLockException('cancel'));
}
return ReadableStreamReaderGenericCancel(this, reason);
}
}, {
key: 'read',
value: function read(view) {
if (!IsReadableStreamBYOBReader(this)) {
return Promise.reject(byobReaderBrandCheckException('read'));
}
if (this._ownerReadableStream === undefined) {
return Promise.reject(readerLockException('read from'));
}
if (!ArrayBuffer.isView(view)) {
return Promise.reject(new TypeError('view must be an array buffer view'));
}
if (view.byteLength === 0) {
return Promise.reject(new TypeError('view must have non-zero byteLength'));
}
return ReadableStreamBYOBReaderRead(this, view);
}
}, {
key: 'releaseLock',
value: function releaseLock() {
if (!IsReadableStreamBYOBReader(this)) {
throw byobReaderBrandCheckException('releaseLock');
}
if (this._ownerReadableStream === undefined) {
return;
}
if (this._readIntoRequests.length > 0) {
throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
}
ReadableStreamReaderGenericRelease(this);
}
}, {
key: 'closed',
get: function get() {
if (!IsReadableStreamBYOBReader(this)) {
return Promise.reject(byobReaderBrandCheckException('closed'));
}
return this._closedPromise;
}
}]);
return ReadableStreamBYOBReader;
}();
function IsReadableStreamBYOBReader(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {
return false;
}
return true;
}
function IsReadableStreamDefaultReader(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {
return false;
}
return true;
}
function ReadableStreamReaderGenericInitialize(reader, stream) {
reader._ownerReadableStream = stream;
stream._reader = reader;
if (stream._state === 'readable') {
defaultReaderClosedPromiseInitialize(reader);
} else if (stream._state === 'closed') {
defaultReaderClosedPromiseInitializeAsResolved(reader);
} else {
assert(stream._state === 'errored', 'state must be errored');
defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);
reader._closedPromise.catch(function () {});
}
}
function ReadableStreamReaderGenericCancel(reader, reason) {
var stream = reader._ownerReadableStream;
assert(stream !== undefined);
return ReadableStreamCancel(stream, reason);
}
function ReadableStreamReaderGenericRelease(reader) {
assert(reader._ownerReadableStream !== undefined);
assert(reader._ownerReadableStream._reader === reader);
if (reader._ownerReadableStream._state === 'readable') {
defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
} else {
defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
}
reader._closedPromise.catch(function () {});
reader._ownerReadableStream._reader = undefined;
reader._ownerReadableStream = undefined;
}
function ReadableStreamBYOBReaderRead(reader, view) {
var stream = reader._ownerReadableStream;
assert(stream !== undefined);
stream._disturbed = true;
if (stream._state === 'errored') {
return Promise.reject(stream._storedError);
}
return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);
}
function ReadableStreamDefaultReaderRead(reader) {
var stream = reader._ownerReadableStream;
assert(stream !== undefined);
stream._disturbed = true;
if (stream._state === 'closed') {
return Promise.resolve(CreateIterResultObject(undefined, true));
}
if (stream._state === 'errored') {
return Promise.reject(stream._storedError);
}
assert(stream._state === 'readable');
return stream._readableStreamController.__pullSteps();
}
var ReadableStreamDefaultController = function () {
function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {
_classCallCheck(this, ReadableStreamDefaultController);
if (IsReadableStream(stream) === false) {
throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');
}
if (stream._readableStreamController !== undefined) {
throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');
}
this._controlledReadableStream = stream;
this._underlyingSource = underlyingSource;
this._queue = undefined;
this._queueTotalSize = undefined;
ResetQueue(this);
this._started = false;
this._closeRequested = false;
this._pullAgain = false;
this._pulling = false;
var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
this._strategySize = normalizedStrategy.size;
this._strategyHWM = normalizedStrategy.highWaterMark;
var controller = this;
var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);
Promise.resolve(startResult).then(function () {
controller._started = true;
assert(controller._pulling === false);
assert(controller._pullAgain === false);
ReadableStreamDefaultControllerCallPullIfNeeded(controller);
}, function (r) {
ReadableStreamDefaultControllerErrorIfNeeded(controller, r);
}).catch(rethrowAssertionErrorRejection);
}
_createClass(ReadableStreamDefaultController, [{
key: 'close',
value: function close() {
if (IsReadableStreamDefaultController(this) === false) {
throw defaultControllerBrandCheckException('close');
}
if (this._closeRequested === true) {
throw new TypeError('The stream has already been closed; do not close it again!');
}
var state = this._controlledReadableStream._state;
if (state !== 'readable') {
throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
}
ReadableStreamDefaultControllerClose(this);
}
}, {
key: 'enqueue',
value: function enqueue(chunk) {
if (IsReadableStreamDefaultController(this) === false) {
throw defaultControllerBrandCheckException('enqueue');
}
if (this._closeRequested === true) {
throw new TypeError('stream is closed or draining');
}
var state = this._controlledReadableStream._state;
if (state !== 'readable') {
throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
}
return ReadableStreamDefaultControllerEnqueue(this, chunk);
}
}, {
key: 'error',
value: function error(e) {
if (IsReadableStreamDefaultController(this) === false) {
throw defaultControllerBrandCheckException('error');
}
var stream = this._controlledReadableStream;
if (stream._state !== 'readable') {
throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
}
ReadableStreamDefaultControllerError(this, e);
}
}, {
key: '__cancelSteps',
value: function __cancelSteps(reason) {
ResetQueue(this);
return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);
}
}, {
key: '__pullSteps',
value: function __pullSteps() {
var stream = this._controlledReadableStream;
if (this._queue.length > 0) {
var chunk = DequeueValue(this);
if (this._closeRequested === true && this._queue.length === 0) {
ReadableStreamClose(stream);
} else {
ReadableStreamDefaultControllerCallPullIfNeeded(this);
}
return Promise.resolve(CreateIterResultObject(chunk, false));
}
var pendingPromise = ReadableStreamAddReadRequest(stream);
ReadableStreamDefaultControllerCallPullIfNeeded(this);
return pendingPromise;
}
}, {
key: 'desiredSize',
get: function get() {
if (IsReadableStreamDefaultController(this) === false) {
throw defaultControllerBrandCheckException('desiredSize');
}
return ReadableStreamDefaultControllerGetDesiredSize(this);
}
}]);
return ReadableStreamDefaultController;
}();
function IsReadableStreamDefaultController(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {
return false;
}
return true;
}
function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {
var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);
if (shouldPull === false) {
return undefined;
}
if (controller._pulling === true) {
controller._pullAgain = true;
return undefined;
}
assert(controller._pullAgain === false);
controller._pulling = true;
var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);
pullPromise.then(function () {
controller._pulling = false;
if (controller._pullAgain === true) {
controller._pullAgain = false;
return ReadableStreamDefaultControllerCallPullIfNeeded(controller);
}
return undefined;
}, function (e) {
ReadableStreamDefaultControllerErrorIfNeeded(controller, e);
}).catch(rethrowAssertionErrorRejection);
return undefined;
}
function ReadableStreamDefaultControllerShouldCallPull(controller) {
var stream = controller._controlledReadableStream;
if (stream._state === 'closed' || stream._state === 'errored') {
return false;
}
if (controller._closeRequested === true) {
return false;
}
if (controller._started === false) {
return false;
}
if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
return true;
}
var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
if (desiredSize > 0) {
return true;
}
return false;
}
function ReadableStreamDefaultControllerClose(controller) {
var stream = controller._controlledReadableStream;
assert(controller._closeRequested === false);
assert(stream._state === 'readable');
controller._closeRequested = true;
if (controller._queue.length === 0) {
ReadableStreamClose(stream);
}
}
function ReadableStreamDefaultControllerEnqueue(controller, chunk) {
var stream = controller._controlledReadableStream;
assert(controller._closeRequested === false);
assert(stream._state === 'readable');
if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
ReadableStreamFulfillReadRequest(stream, chunk, false);
} else {
var chunkSize = 1;
if (controller._strategySize !== undefined) {
var strategySize = controller._strategySize;
try {
chunkSize = strategySize(chunk);
} catch (chunkSizeE) {
ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
throw chunkSizeE;
}
}
try {
EnqueueValueWithSize(controller, chunk, chunkSize);
} catch (enqueueE) {
ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
throw enqueueE;
}
}
ReadableStreamDefaultControllerCallPullIfNeeded(controller);
return undefined;
}
function ReadableStreamDefaultControllerError(controller, e) {
var stream = controller._controlledReadableStream;
assert(stream._state === 'readable');
ResetQueue(controller);
ReadableStreamError(stream, e);
}
function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {
if (controller._controlledReadableStream._state === 'readable') {
ReadableStreamDefaultControllerError(controller, e);
}
}
function ReadableStreamDefaultControllerGetDesiredSize(controller) {
var stream = controller._controlledReadableStream;
var state = stream._state;
if (state === 'errored') {
return null;
}
if (state === 'closed') {
return 0;
}
return controller._strategyHWM - controller._queueTotalSize;
}
var ReadableStreamBYOBRequest = function () {
function ReadableStreamBYOBRequest(controller, view) {
_classCallCheck(this, ReadableStreamBYOBRequest);
this._associatedReadableByteStreamController = controller;
this._view = view;
}
_createClass(ReadableStreamBYOBRequest, [{
key: 'respond',
value: function respond(bytesWritten) {
if (IsReadableStreamBYOBRequest(this) === false) {
throw byobRequestBrandCheckException('respond');
}
if (this._associatedReadableByteStreamController === undefined) {
throw new TypeError('This BYOB request has been invalidated');
}
ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);
}
}, {
key: 'respondWithNewView',
value: function respondWithNewView(view) {
if (IsReadableStreamBYOBRequest(this) === false) {
throw byobRequestBrandCheckException('respond');
}
if (this._associatedReadableByteStreamController === undefined) {
throw new TypeError('This BYOB request has been invalidated');
}
if (!ArrayBuffer.isView(view)) {
throw new TypeError('You can only respond with array buffer views');
}
ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);
}
}, {
key: 'view',
get: function get() {
return this._view;
}
}]);
return ReadableStreamBYOBRequest;
}();
var ReadableByteStreamController = function () {
function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {
_classCallCheck(this, ReadableByteStreamController);
if (IsReadableStream(stream) === false) {
throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');
}
if (stream._readableStreamController !== undefined) {
throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');
}
this._controlledReadableStream = stream;
this._underlyingByteSource = underlyingByteSource;
this._pullAgain = false;
this._pulling = false;
ReadableByteStreamControllerClearPendingPullIntos(this);
this._queue = this._queueTotalSize = undefined;
ResetQueue(this);
this._closeRequested = false;
this._started = false;
this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);
var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;
if (autoAllocateChunkSize !== undefined) {
if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {
throw new RangeError('autoAllocateChunkSize must be a positive integer');
}
}
this._autoAllocateChunkSize = autoAllocateChunkSize;
this._pendingPullIntos = [];
var controller = this;
var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);
Promise.resolve(startResult).then(function () {
controller._started = true;
assert(controller._pulling === false);
assert(controller._pullAgain === false);
ReadableByteStreamControllerCallPullIfNeeded(controller);
}, function (r) {
if (stream._state === 'readable') {
ReadableByteStreamControllerError(controller, r);
}
}).catch(rethrowAssertionErrorRejection);
}
_createClass(ReadableByteStreamController, [{
key: 'close',
value: function close() {
if (IsReadableByteStreamController(this) === false) {
throw byteStreamControllerBrandCheckException('close');
}
if (this._closeRequested === true) {
throw new TypeError('The stream has already been closed; do not close it again!');
}
var state = this._controlledReadableStream._state;
if (state !== 'readable') {
throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
}
ReadableByteStreamControllerClose(this);
}
}, {
key: 'enqueue',
value: function enqueue(chunk) {
if (IsReadableByteStreamController(this) === false) {
throw byteStreamControllerBrandCheckException('enqueue');
}
if (this._closeRequested === true) {
throw new TypeError('stream is closed or draining');
}
var state = this._controlledReadableStream._state;
if (state !== 'readable') {
throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
}
if (!ArrayBuffer.isView(chunk)) {
throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');
}
ReadableByteStreamControllerEnqueue(this, chunk);
}
}, {
key: 'error',
value: function error(e) {
if (IsReadableByteStreamController(this) === false) {
throw byteStreamControllerBrandCheckException('error');
}
var stream = this._controlledReadableStream;
if (stream._state !== 'readable') {
throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
}
ReadableByteStreamControllerError(this, e);
}
}, {
key: '__cancelSteps',
value: function __cancelSteps(reason) {
if (this._pendingPullIntos.length > 0) {
var firstDescriptor = this._pendingPullIntos[0];
firstDescriptor.bytesFilled = 0;
}
ResetQueue(this);
return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);
}
}, {
key: '__pullSteps',
value: function __pullSteps() {
var stream = this._controlledReadableStream;
assert(ReadableStreamHasDefaultReader(stream) === true);
if (this._queueTotalSize > 0) {
assert(ReadableStreamGetNumReadRequests(stream) === 0);
var entry = this._queue.shift();
this._queueTotalSize -= entry.byteLength;
ReadableByteStreamControllerHandleQueueDrain(this);
var view = void 0;
try {
view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);
} catch (viewE) {
return Promise.reject(viewE);
}
return Promise.resolve(CreateIterResultObject(view, false));
}
var autoAllocateChunkSize = this._autoAllocateChunkSize;
if (autoAllocateChunkSize !== undefined) {
var buffer = void 0;
try {
buffer = new ArrayBuffer(autoAllocateChunkSize);
} catch (bufferE) {
return Promise.reject(bufferE);
}
var pullIntoDescriptor = {
buffer: buffer,
byteOffset: 0,
byteLength: autoAllocateChunkSize,
bytesFilled: 0,
elementSize: 1,
ctor: Uint8Array,
readerType: 'default'
};
this._pendingPullIntos.push(pullIntoDescriptor);
}
var promise = ReadableStreamAddReadRequest(stream);
ReadableByteStreamControllerCallPullIfNeeded(this);
return promise;
}
}, {
key: 'byobRequest',
get: function get() {
if (IsReadableByteStreamController(this) === false) {
throw byteStreamControllerBrandCheckException('byobRequest');
}
if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {
var firstDescriptor = this._pendingPullIntos[0];
var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);
this._byobRequest = new ReadableStreamBYOBRequest(this, view);
}
return this._byobRequest;
}
}, {
key: 'desiredSize',
get: function get() {
if (IsReadableByteStreamController(this) === false) {
throw byteStreamControllerBrandCheckException('desiredSize');
}
return ReadableByteStreamControllerGetDesiredSize(this);
}
}]);
return ReadableByteStreamController;
}();
function IsReadableByteStreamController(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {
return false;
}
return true;
}
function IsReadableStreamBYOBRequest(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {
return false;
}
return true;
}
function ReadableByteStreamControllerCallPullIfNeeded(controller) {
var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);
if (shouldPull === false) {
return undefined;
}
if (controller._pulling === true) {
controller._pullAgain = true;
return undefined;
}
assert(controller._pullAgain === false);
controller._pulling = true;
var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);
pullPromise.then(function () {
controller._pulling = false;
if (controller._pullAgain === true) {
controller._pullAgain = false;
ReadableByteStreamControllerCallPullIfNeeded(controller);
}
}, function (e) {
if (controller._controlledReadableStream._state === 'readable') {
ReadableByteStreamControllerError(controller, e);
}
}).catch(rethrowAssertionErrorRejection);
return undefined;
}
function ReadableByteStreamControllerClearPendingPullIntos(controller) {
ReadableByteStreamControllerInvalidateBYOBRequest(controller);
controller._pendingPullIntos = [];
}
function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {
assert(stream._state !== 'errored', 'state must not be errored');
var done = false;
if (stream._state === 'closed') {
assert(pullIntoDescriptor.bytesFilled === 0);
done = true;
}
var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
if (pullIntoDescriptor.readerType === 'default') {
ReadableStreamFulfillReadRequest(stream, filledView, done);
} else {
assert(pullIntoDescriptor.readerType === 'byob');
ReadableStreamFulfillReadIntoRequest(stream, filledView, done);
}
}
function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {
var bytesFilled = pullIntoDescriptor.bytesFilled;
var elementSize = pullIntoDescriptor.elementSize;
assert(bytesFilled <= pullIntoDescriptor.byteLength);
assert(bytesFilled % elementSize === 0);
return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);
}
function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {
controller._queue.push({
buffer: buffer,
byteOffset: byteOffset,
byteLength: byteLength
});
controller._queueTotalSize += byteLength;
}
function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {
var elementSize = pullIntoDescriptor.elementSize;
var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;
var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);
var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;
var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;
var totalBytesToCopyRemaining = maxBytesToCopy;
var ready = false;
if (maxAlignedBytes > currentAlignedBytes) {
totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;
ready = true;
}
var queue = controller._queue;
while (totalBytesToCopyRemaining > 0) {
var headOfQueue = queue[0];
var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);
var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);
if (headOfQueue.byteLength === bytesToCopy) {
queue.shift();
} else {
headOfQueue.byteOffset += bytesToCopy;
headOfQueue.byteLength -= bytesToCopy;
}
controller._queueTotalSize -= bytesToCopy;
ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);
totalBytesToCopyRemaining -= bytesToCopy;
}
if (ready === false) {
assert(controller._queueTotalSize === 0, 'queue must be empty');
assert(pullIntoDescriptor.bytesFilled > 0);
assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);
}
return ready;
}
function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {
assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);
ReadableByteStreamControllerInvalidateBYOBRequest(controller);
pullIntoDescriptor.bytesFilled += size;
}
function ReadableByteStreamControllerHandleQueueDrain(controller) {
assert(controller._controlledReadableStream._state === 'readable');
if (controller._queueTotalSize === 0 && controller._closeRequested === true) {
ReadableStreamClose(controller._controlledReadableStream);
} else {
ReadableByteStreamControllerCallPullIfNeeded(controller);
}
}
function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {
if (controller._byobRequest === undefined) {
return;
}
controller._byobRequest._associatedReadableByteStreamController = undefined;
controller._byobRequest._view = undefined;
controller._byobRequest = undefined;
}
function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {
assert(controller._closeRequested === false);
while (controller._pendingPullIntos.length > 0) {
if (controller._queueTotalSize === 0) {
return;
}
var pullIntoDescriptor = controller._pendingPullIntos[0];
if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
ReadableByteStreamControllerShiftPendingPullInto(controller);
ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
}
}
}
function ReadableByteStreamControllerPullInto(controller, view) {
var stream = controller._controlledReadableStream;
var elementSize = 1;
if (view.constructor !== DataView) {
elementSize = view.constructor.BYTES_PER_ELEMENT;
}
var ctor = view.constructor;
var pullIntoDescriptor = {
buffer: view.buffer,
byteOffset: view.byteOffset,
byteLength: view.byteLength,
bytesFilled: 0,
elementSize: elementSize,
ctor: ctor,
readerType: 'byob'
};
if (controller._pendingPullIntos.length > 0) {
pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
controller._pendingPullIntos.push(pullIntoDescriptor);
return ReadableStreamAddReadIntoRequest(stream);
}
if (stream._state === 'closed') {
var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);
return Promise.resolve(CreateIterResultObject(emptyView, true));
}
if (controller._queueTotalSize > 0) {
if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
ReadableByteStreamControllerHandleQueueDrain(controller);
return Promise.resolve(CreateIterResultObject(filledView, false));
}
if (controller._closeRequested === true) {
var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
ReadableByteStreamControllerError(controller, e);
return Promise.reject(e);
}
}
pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
controller._pendingPullIntos.push(pullIntoDescriptor);
var promise = ReadableStreamAddReadIntoRequest(stream);
ReadableByteStreamControllerCallPullIfNeeded(controller);
return promise;
}
function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {
firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);
assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');
var stream = controller._controlledReadableStream;
if (ReadableStreamHasBYOBReader(stream) === true) {
while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {
var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);
ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);
}
}
}
function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {
if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {
throw new RangeError('bytesWritten out of range');
}
ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);
if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {
return;
}
ReadableByteStreamControllerShiftPendingPullInto(controller);
var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;
if (remainderSize > 0) {
var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);
ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);
}
pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
pullIntoDescriptor.bytesFilled -= remainderSize;
ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
}
function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {
var firstDescriptor = controller._pendingPullIntos[0];
var stream = controller._controlledReadableStream;
if (stream._state === 'closed') {
if (bytesWritten !== 0) {
throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');
}
ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);
} else {
assert(stream._state === 'readable');
ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);
}
}
function ReadableByteStreamControllerShiftPendingPullInto(controller) {
var descriptor = controller._pendingPullIntos.shift();
ReadableByteStreamControllerInvalidateBYOBRequest(controller);
return descriptor;
}
function ReadableByteStreamControllerShouldCallPull(controller) {
var stream = controller._controlledReadableStream;
if (stream._state !== 'readable') {
return false;
}
if (controller._closeRequested === true) {
return false;
}
if (controller._started === false) {
return false;
}
if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
return true;
}
if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {
return true;
}
if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {
return true;
}
return false;
}
function ReadableByteStreamControllerClose(controller) {
var stream = controller._controlledReadableStream;
assert(controller._closeRequested === false);
assert(stream._state === 'readable');
if (controller._queueTotalSize > 0) {
controller._closeRequested = true;
return;
}
if (controller._pendingPullIntos.length > 0) {
var firstPendingPullInto = controller._pendingPullIntos[0];
if (firstPendingPullInto.bytesFilled > 0) {
var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
ReadableByteStreamControllerError(controller, e);
throw e;
}
}
ReadableStreamClose(stream);
}
function ReadableByteStreamControllerEnqueue(controller, chunk) {
var stream = controller._controlledReadableStream;
assert(controller._closeRequested === false);
assert(stream._state === 'readable');
var buffer = chunk.buffer;
var byteOffset = chunk.byteOffset;
var byteLength = chunk.byteLength;
var transferredBuffer = TransferArrayBuffer(buffer);
if (ReadableStreamHasDefaultReader(stream) === true) {
if (ReadableStreamGetNumReadRequests(stream) === 0) {
ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
} else {
assert(controller._queue.length === 0);
var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);
ReadableStreamFulfillReadRequest(stream, transferredView, false);
}
} else if (ReadableStreamHasBYOBReader(stream) === true) {
ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
} else {
assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');
ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
}
}
function ReadableByteStreamControllerError(controller, e) {
var stream = controller._controlledReadableStream;
assert(stream._state === 'readable');
ReadableByteStreamControllerClearPendingPullIntos(controller);
ResetQueue(controller);
ReadableStreamError(stream, e);
}
function ReadableByteStreamControllerGetDesiredSize(controller) {
var stream = controller._controlledReadableStream;
var state = stream._state;
if (state === 'errored') {
return null;
}
if (state === 'closed') {
return 0;
}
return controller._strategyHWM - controller._queueTotalSize;
}
function ReadableByteStreamControllerRespond(controller, bytesWritten) {
bytesWritten = Number(bytesWritten);
if (IsFiniteNonNegativeNumber(bytesWritten) === false) {
throw new RangeError('bytesWritten must be a finite');
}
assert(controller._pendingPullIntos.length > 0);
ReadableByteStreamControllerRespondInternal(controller, bytesWritten);
}
function ReadableByteStreamControllerRespondWithNewView(controller, view) {
assert(controller._pendingPullIntos.length > 0);
var firstDescriptor = controller._pendingPullIntos[0];
if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {
throw new RangeError('The region specified by view does not match byobRequest');
}
if (firstDescriptor.byteLength !== view.byteLength) {
throw new RangeError('The buffer of view has different capacity than byobRequest');
}
firstDescriptor.buffer = view.buffer;
ReadableByteStreamControllerRespondInternal(controller, view.byteLength);
}
function streamBrandCheckException(name) {
return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');
}
function readerLockException(name) {
return new TypeError('Cannot ' + name + ' a stream using a released reader');
}
function defaultReaderBrandCheckException(name) {
return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');
}
function defaultReaderClosedPromiseInitialize(reader) {
reader._closedPromise = new Promise(function (resolve, reject) {
reader._closedPromise_resolve = resolve;
reader._closedPromise_reject = reject;
});
}
function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {
reader._closedPromise = Promise.reject(reason);
reader._closedPromise_resolve = undefined;
reader._closedPromise_reject = undefined;
}
function defaultReaderClosedPromiseInitializeAsResolved(reader) {
reader._closedPromise = Promise.resolve(undefined);
reader._closedPromise_resolve = undefined;
reader._closedPromise_reject = undefined;
}
function defaultReaderClosedPromiseReject(reader, reason) {
assert(reader._closedPromise_resolve !== undefined);
assert(reader._closedPromise_reject !== undefined);
reader._closedPromise_reject(reason);
reader._closedPromise_resolve = undefined;
reader._closedPromise_reject = undefined;
}
function defaultReaderClosedPromiseResetToRejected(reader, reason) {
assert(reader._closedPromise_resolve === undefined);
assert(reader._closedPromise_reject === undefined);
reader._closedPromise = Promise.reject(reason);
}
function defaultReaderClosedPromiseResolve(reader) {
assert(reader._closedPromise_resolve !== undefined);
assert(reader._closedPromise_reject !== undefined);
reader._closedPromise_resolve(undefined);
reader._closedPromise_resolve = undefined;
reader._closedPromise_reject = undefined;
}
function byobReaderBrandCheckException(name) {
return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');
}
function defaultControllerBrandCheckException(name) {
return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');
}
function byobRequestBrandCheckException(name) {
return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');
}
function byteStreamControllerBrandCheckException(name) {
return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');
}
function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {
try {
Promise.prototype.then.call(promise, undefined, function () {});
} catch (e) {}
}
}, function (module, exports, __w_pdfjs_require__) {
"use strict";
var transformStream = __w_pdfjs_require__(6);
var readableStream = __w_pdfjs_require__(4);
var writableStream = __w_pdfjs_require__(2);
exports.TransformStream = transformStream.TransformStream;
exports.ReadableStream = readableStream.ReadableStream;
exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;
exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;
exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;
exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;
exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;
exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;
exports.IsWritableStream = writableStream.IsWritableStream;
exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;
exports.WritableStream = writableStream.WritableStream;
exports.WritableStreamAbort = writableStream.WritableStreamAbort;
exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;
exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;
exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;
exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;
}, function (module, exports, __w_pdfjs_require__) {
"use strict";
var _createClass = 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);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var _require = __w_pdfjs_require__(1),
assert = _require.assert;
var _require2 = __w_pdfjs_require__(0),
InvokeOrNoop = _require2.InvokeOrNoop,
PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,
PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,
typeIsObject = _require2.typeIsObject;
var _require3 = __w_pdfjs_require__(4),
ReadableStream = _require3.ReadableStream,
ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,
ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,
ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,
ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;
var _require4 = __w_pdfjs_require__(2),
WritableStream = _require4.WritableStream,
WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;
function TransformStreamCloseReadable(transformStream) {
if (transformStream._errored === true) {
throw new TypeError('TransformStream is already errored');
}
if (transformStream._readableClosed === true) {
throw new TypeError('Readable side is already closed');
}
TransformStreamCloseReadableInternal(transformStream);
}
function TransformStreamEnqueueToReadable(transformStream, chunk) {
if (transformStream._errored === true) {
throw new TypeError('TransformStream is already errored');
}
if (transformStream._readableClosed === true) {
throw new TypeError('Readable side is already closed');
}
var controller = transformStream._readableController;
try {
ReadableStreamDefaultControllerEnqueue(controller, chunk);
} catch (e) {
transformStream._readableClosed = true;
TransformStreamErrorIfNeeded(transformStream, e);
throw transformStream._storedError;
}
var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
var maybeBackpressure = desiredSize <= 0;
if (maybeBackpressure === true && transformStream._backpressure === false) {
TransformStreamSetBackpressure(transformStream, true);
}
}
function TransformStreamError(transformStream, e) {
if (transformStream._errored === true) {
throw new TypeError('TransformStream is already errored');
}
TransformStreamErrorInternal(transformStream, e);
}
function TransformStreamCloseReadableInternal(transformStream) {
assert(transformStream._errored === false);
assert(transformStream._readableClosed === false);
try {
ReadableStreamDefaultControllerClose(transformStream._readableController);
} catch (e) {
assert(false);
}
transformStream._readableClosed = true;
}
function TransformStreamErrorIfNeeded(transformStream, e) {
if (transformStream._errored === false) {
TransformStreamErrorInternal(transformStream, e);
}
}
function TransformStreamErrorInternal(transformStream, e) {
assert(transformStream._errored === false);
transformStream._errored = true;
transformStream._storedError = e;
if (transformStream._writableDone === false) {
WritableStreamDefaultControllerError(transformStream._writableController, e);
}
if (transformStream._readableClosed === false) {
ReadableStreamDefaultControllerError(transformStream._readableController, e);
}
}
function TransformStreamReadableReadyPromise(transformStream) {
assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
if (transformStream._backpressure === false) {
return Promise.resolve();
}
assert(transformStream._backpressure === true, '_backpressure should have been initialized');
return transformStream._backpressureChangePromise;
}
function TransformStreamSetBackpressure(transformStream, backpressure) {
assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');
if (transformStream._backpressureChangePromise !== undefined) {
transformStream._backpressureChangePromise_resolve(backpressure);
}
transformStream._backpressureChangePromise = new Promise(function (resolve) {
transformStream._backpressureChangePromise_resolve = resolve;
});
transformStream._backpressureChangePromise.then(function (resolution) {
assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');
});
transformStream._backpressure = backpressure;
}
function TransformStreamDefaultTransform(chunk, transformStreamController) {
var transformStream = transformStreamController._controlledTransformStream;
TransformStreamEnqueueToReadable(transformStream, chunk);
return Promise.resolve();
}
function TransformStreamTransform(transformStream, chunk) {
assert(transformStream._errored === false);
assert(transformStream._transforming === false);
assert(transformStream._backpressure === false);
transformStream._transforming = true;
var transformer = transformStream._transformer;
var controller = transformStream._transformStreamController;
var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);
return transformPromise.then(function () {
transformStream._transforming = false;
return TransformStreamReadableReadyPromise(transformStream);
}, function (e) {
TransformStreamErrorIfNeeded(transformStream, e);
return Promise.reject(e);
});
}
function IsTransformStreamDefaultController(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {
return false;
}
return true;
}
function IsTransformStream(x) {
if (!typeIsObject(x)) {
return false;
}
if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {
return false;
}
return true;
}
var TransformStreamSink = function () {
function TransformStreamSink(transformStream, startPromise) {
_classCallCheck(this, TransformStreamSink);
this._transformStream = transformStream;
this._startPromise = startPromise;
}
_createClass(TransformStreamSink, [{
key: 'start',
value: function start(c) {
var transformStream = this._transformStream;
transformStream._writableController = c;
return this._startPromise.then(function () {
return TransformStreamReadableReadyPromise(transformStream);
});
}
}, {
key: 'write',
value: function write(chunk) {
var transformStream = this._transformStream;
return TransformStreamTransform(transformStream, chunk);
}
}, {
key: 'abort',
value: function abort() {
var transformStream = this._transformStream;
transformStream._writableDone = true;
TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));
}
}, {
key: 'close',
value: function close() {
var transformStream = this._transformStream;
assert(transformStream._transforming === false);
transformStream._writableDone = true;
var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);
return flushPromise.then(function () {
if (transformStream._errored === true) {
return Promise.reject(transformStream._storedError);
}
if (transformStream._readableClosed === false) {
TransformStreamCloseReadableInternal(transformStream);
}
return Promise.resolve();
}).catch(function (r) {
TransformStreamErrorIfNeeded(transformStream, r);
return Promise.reject(transformStream._storedError);
});
}
}]);
return TransformStreamSink;
}();
var TransformStreamSource = function () {
function TransformStreamSource(transformStream, startPromise) {
_classCallCheck(this, TransformStreamSource);
this._transformStream = transformStream;
this._startPromise = startPromise;
}
_createClass(TransformStreamSource, [{
key: 'start',
value: function start(c) {
var transformStream = this._transformStream;
transformStream._readableController = c;
return this._startPromise.then(function () {
assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
if (transformStream._backpressure === true) {
return Promise.resolve();
}
assert(transformStream._backpressure === false, '_backpressure should have been initialized');
return transformStream._backpressureChangePromise;
});
}
}, {
key: 'pull',
value: function pull() {
var transformStream = this._transformStream;
assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');
assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
TransformStreamSetBackpressure(transformStream, false);
return transformStream._backpressureChangePromise;
}
}, {
key: 'cancel',
value: function cancel() {
var transformStream = this._transformStream;
transformStream._readableClosed = true;
TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));
}
}]);
return TransformStreamSource;
}();
var TransformStreamDefaultController = function () {
function TransformStreamDefaultController(transformStream) {
_classCallCheck(this, TransformStreamDefaultController);
if (IsTransformStream(transformStream) === false) {
throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');
}
if (transformStream._transformStreamController !== undefined) {
throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');
}
this._controlledTransformStream = transformStream;
}
_createClass(TransformStreamDefaultController, [{
key: 'enqueue',
value: function enqueue(chunk) {
if (IsTransformStreamDefaultController(this) === false) {
throw defaultControllerBrandCheckException('enqueue');
}
TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);
}
}, {
key: 'close',
value: function close() {
if (IsTransformStreamDefaultController(this) === false) {
throw defaultControllerBrandCheckException('close');
}
TransformStreamCloseReadable(this._controlledTransformStream);
}
}, {
key: 'error',
value: function error(reason) {
if (IsTransformStreamDefaultController(this) === false) {
throw defaultControllerBrandCheckException('error');
}
TransformStreamError(this._controlledTransformStream, reason);
}
}, {
key: 'desiredSize',
get: function get() {
if (IsTransformStreamDefaultController(this) === false) {
throw defaultControllerBrandCheckException('desiredSize');
}
var transformStream = this._controlledTransformStream;
var readableController = transformStream._readableController;
return ReadableStreamDefaultControllerGetDesiredSize(readableController);
}
}]);
return TransformStreamDefaultController;
}();
var TransformStream = function () {
function TransformStream() {
var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, TransformStream);
this._transformer = transformer;
var readableStrategy = transformer.readableStrategy,
writableStrategy = transformer.writableStrategy;
this._transforming = false;
this._errored = false;
this._storedError = undefined;
this._writableController = undefined;
this._readableController = undefined;
this._transformStreamController = undefined;
this._writableDone = false;
this._readableClosed = false;
this._backpressure = undefined;
this._backpressureChangePromise = undefined;
this._backpressureChangePromise_resolve = undefined;
this._transformStreamController = new TransformStreamDefaultController(this);
var startPromise_resolve = void 0;
var startPromise = new Promise(function (resolve) {
startPromise_resolve = resolve;
});
var source = new TransformStreamSource(this, startPromise);
this._readable = new ReadableStream(source, readableStrategy);
var sink = new TransformStreamSink(this, startPromise);
this._writable = new WritableStream(sink, writableStrategy);
assert(this._writableController !== undefined);
assert(this._readableController !== undefined);
var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);
TransformStreamSetBackpressure(this, desiredSize <= 0);
var transformStream = this;
var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);
startPromise_resolve(startResult);
startPromise.catch(function (e) {
if (transformStream._errored === false) {
transformStream._errored = true;
transformStream._storedError = e;
}
});
}
_createClass(TransformStream, [{
key: 'readable',
get: function get() {
if (IsTransformStream(this) === false) {
throw streamBrandCheckException('readable');
}
return this._readable;
}
}, {
key: 'writable',
get: function get() {
if (IsTransformStream(this) === false) {
throw streamBrandCheckException('writable');
}
return this._writable;
}
}]);
return TransformStream;
}();
module.exports = {
TransformStream: TransformStream
};
function defaultControllerBrandCheckException(name) {
return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');
}
function streamBrandCheckException(name) {
return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');
}
}, function (module, exports, __w_pdfjs_require__) {
module.exports = __w_pdfjs_require__(5);
}]));
/***/ }),
/* 144 */
/***/ (function(module, exports, __w_pdfjs_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 isURLSupported = false;
try {
if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) {
var u = new URL('b', 'http://a');
u.pathname = 'c%20d';
isURLSupported = u.href === 'http://a/c%20d';
}
} catch (ex) {}
if (isURLSupported) {
exports.URL = URL;
} else {
var PolyfillURL = __w_pdfjs_require__(145).URL;
var OriginalURL = __w_pdfjs_require__(3).URL;
if (OriginalURL) {
PolyfillURL.createObjectURL = function (blob) {
return OriginalURL.createObjectURL.apply(OriginalURL, arguments);
};
PolyfillURL.revokeObjectURL = function (url) {
OriginalURL.revokeObjectURL(url);
};
}
exports.URL = PolyfillURL;
}
}
/***/ }),
/* 145 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
(function URLConstructorClosure() {
'use strict';
var relative = Object.create(null);
relative['ftp'] = 21;
relative['file'] = 0;
relative['gopher'] = 70;
relative['http'] = 80;
relative['https'] = 443;
relative['ws'] = 80;
relative['wss'] = 443;
var relativePathDotMapping = Object.create(null);
relativePathDotMapping['%2e'] = '.';
relativePathDotMapping['.%2e'] = '..';
relativePathDotMapping['%2e.'] = '..';
relativePathDotMapping['%2e%2e'] = '..';
function isRelativeScheme(scheme) {
return relative[scheme] !== undefined;
}
function invalid() {
clear.call(this);
this._isInvalid = true;
}
function IDNAToASCII(h) {
if (h === '') {
invalid.call(this);
}
return h.toLowerCase();
}
function percentEscape(c) {
var unicode = c.charCodeAt(0);
if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) {
return c;
}
return encodeURIComponent(c);
}
function percentEscapeQuery(c) {
var unicode = c.charCodeAt(0);
if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) {
return c;
}
return encodeURIComponent(c);
}
var EOF,
ALPHA = /[a-zA-Z]/,
ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/;
function parse(input, stateOverride, base) {
function err(message) {
errors.push(message);
}
var state = stateOverride || 'scheme start',
cursor = 0,
buffer = '',
seenAt = false,
seenBracket = false,
errors = [];
loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) {
var c = input[cursor];
switch (state) {
case 'scheme start':
if (c && ALPHA.test(c)) {
buffer += c.toLowerCase();
state = 'scheme';
} else if (!stateOverride) {
buffer = '';
state = 'no scheme';
continue;
} else {
err('Invalid scheme.');
break loop;
}
break;
case 'scheme':
if (c && ALPHANUMERIC.test(c)) {
buffer += c.toLowerCase();
} else if (c === ':') {
this._scheme = buffer;
buffer = '';
if (stateOverride) {
break loop;
}
if (isRelativeScheme(this._scheme)) {
this._isRelative = true;
}
if (this._scheme === 'file') {
state = 'relative';
} else if (this._isRelative && base && base._scheme === this._scheme) {
state = 'relative or authority';
} else if (this._isRelative) {
state = 'authority first slash';
} else {
state = 'scheme data';
}
} else if (!stateOverride) {
buffer = '';
cursor = 0;
state = 'no scheme';
continue;
} else if (c === EOF) {
break loop;
} else {
err('Code point not allowed in scheme: ' + c);
break loop;
}
break;
case 'scheme data':
if (c === '?') {
this._query = '?';
state = 'query';
} else if (c === '#') {
this._fragment = '#';
state = 'fragment';
} else {
if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
this._schemeData += percentEscape(c);
}
}
break;
case 'no scheme':
if (!base || !isRelativeScheme(base._scheme)) {
err('Missing scheme.');
invalid.call(this);
} else {
state = 'relative';
continue;
}
break;
case 'relative or authority':
if (c === '/' && input[cursor + 1] === '/') {
state = 'authority ignore slashes';
} else {
err('Expected /, got: ' + c);
state = 'relative';
continue;
}
break;
case 'relative':
this._isRelative = true;
if (this._scheme !== 'file') {
this._scheme = base._scheme;
}
if (c === EOF) {
this._host = base._host;
this._port = base._port;
this._path = base._path.slice();
this._query = base._query;
this._username = base._username;
this._password = base._password;
break loop;
} else if (c === '/' || c === '\\') {
if (c === '\\') {
err('\\ is an invalid code point.');
}
state = 'relative slash';
} else if (c === '?') {
this._host = base._host;
this._port = base._port;
this._path = base._path.slice();
this._query = '?';
this._username = base._username;
this._password = base._password;
state = 'query';
} else if (c === '#') {
this._host = base._host;
this._port = base._port;
this._path = base._path.slice();
this._query = base._query;
this._fragment = '#';
this._username = base._username;
this._password = base._password;
state = 'fragment';
} else {
var nextC = input[cursor + 1];
var nextNextC = input[cursor + 2];
if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') {
this._host = base._host;
this._port = base._port;
this._username = base._username;
this._password = base._password;
this._path = base._path.slice();
this._path.pop();
}
state = 'relative path';
continue;
}
break;
case 'relative slash':
if (c === '/' || c === '\\') {
if (c === '\\') {
err('\\ is an invalid code point.');
}
if (this._scheme === 'file') {
state = 'file host';
} else {
state = 'authority ignore slashes';
}
} else {
if (this._scheme !== 'file') {
this._host = base._host;
this._port = base._port;
this._username = base._username;
this._password = base._password;
}
state = 'relative path';
continue;
}
break;
case 'authority first slash':
if (c === '/') {
state = 'authority second slash';
} else {
err('Expected \'/\', got: ' + c);
state = 'authority ignore slashes';
continue;
}
break;
case 'authority second slash':
state = 'authority ignore slashes';
if (c !== '/') {
err('Expected \'/\', got: ' + c);
continue;
}
break;
case 'authority ignore slashes':
if (c !== '/' && c !== '\\') {
state = 'authority';
continue;
} else {
err('Expected authority, got: ' + c);
}
break;
case 'authority':
if (c === '@') {
if (seenAt) {
err('@ already seen.');
buffer += '%40';
}
seenAt = true;
for (var i = 0; i < buffer.length; i++) {
var cp = buffer[i];
if (cp === '\t' || cp === '\n' || cp === '\r') {
err('Invalid whitespace in authority.');
continue;
}
if (cp === ':' && this._password === null) {
this._password = '';
continue;
}
var tempC = percentEscape(cp);
if (this._password !== null) {
this._password += tempC;
} else {
this._username += tempC;
}
}
buffer = '';
} else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
cursor -= buffer.length;
buffer = '';
state = 'host';
continue;
} else {
buffer += c;
}
break;
case 'file host':
if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) {
state = 'relative path';
} else if (buffer.length === 0) {
state = 'relative path start';
} else {
this._host = IDNAToASCII.call(this, buffer);
buffer = '';
state = 'relative path start';
}
continue;
} else if (c === '\t' || c === '\n' || c === '\r') {
err('Invalid whitespace in file host.');
} else {
buffer += c;
}
break;
case 'host':
case 'hostname':
if (c === ':' && !seenBracket) {
this._host = IDNAToASCII.call(this, buffer);
buffer = '';
state = 'port';
if (stateOverride === 'hostname') {
break loop;
}
} else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
this._host = IDNAToASCII.call(this, buffer);
buffer = '';
state = 'relative path start';
if (stateOverride) {
break loop;
}
continue;
} else if (c !== '\t' && c !== '\n' && c !== '\r') {
if (c === '[') {
seenBracket = true;
} else if (c === ']') {
seenBracket = false;
}
buffer += c;
} else {
err('Invalid code point in host/hostname: ' + c);
}
break;
case 'port':
if (/[0-9]/.test(c)) {
buffer += c;
} else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) {
if (buffer !== '') {
var temp = parseInt(buffer, 10);
if (temp !== relative[this._scheme]) {
this._port = temp + '';
}
buffer = '';
}
if (stateOverride) {
break loop;
}
state = 'relative path start';
continue;
} else if (c === '\t' || c === '\n' || c === '\r') {
err('Invalid code point in port: ' + c);
} else {
invalid.call(this);
}
break;
case 'relative path start':
if (c === '\\') {
err('\'\\\' not allowed in path.');
}
state = 'relative path';
if (c !== '/' && c !== '\\') {
continue;
}
break;
case 'relative path':
if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) {
if (c === '\\') {
err('\\ not allowed in relative path.');
}
var tmp;
if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {
buffer = tmp;
}
if (buffer === '..') {
this._path.pop();
if (c !== '/' && c !== '\\') {
this._path.push('');
}
} else if (buffer === '.' && c !== '/' && c !== '\\') {
this._path.push('');
} else if (buffer !== '.') {
if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') {
buffer = buffer[0] + ':';
}
this._path.push(buffer);
}
buffer = '';
if (c === '?') {
this._query = '?';
state = 'query';
} else if (c === '#') {
this._fragment = '#';
state = 'fragment';
}
} else if (c !== '\t' && c !== '\n' && c !== '\r') {
buffer += percentEscape(c);
}
break;
case 'query':
if (!stateOverride && c === '#') {
this._fragment = '#';
state = 'fragment';
} else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
this._query += percentEscapeQuery(c);
}
break;
case 'fragment':
if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
this._fragment += c;
}
break;
}
cursor++;
}
}
function clear() {
this._scheme = '';
this._schemeData = '';
this._username = '';
this._password = null;
this._host = '';
this._port = '';
this._path = [];
this._query = '';
this._fragment = '';
this._isInvalid = false;
this._isRelative = false;
}
function JURL(url, base) {
if (base !== undefined && !(base instanceof JURL)) {
base = new JURL(String(base));
}
this._url = url;
clear.call(this);
var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, '');
parse.call(this, input, null, base);
}
JURL.prototype = {
toString: function toString() {
return this.href;
},
get href() {
if (this._isInvalid) {
return this._url;
}
var authority = '';
if (this._username !== '' || this._password !== null) {
authority = this._username + (this._password !== null ? ':' + this._password : '') + '@';
}
return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment;
},
set href(value) {
clear.call(this);
parse.call(this, value);
},
get protocol() {
return this._scheme + ':';
},
set protocol(value) {
if (this._isInvalid) {
return;
}
parse.call(this, value + ':', 'scheme start');
},
get host() {
return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host;
},
set host(value) {
if (this._isInvalid || !this._isRelative) {
return;
}
parse.call(this, value, 'host');
},
get hostname() {
return this._host;
},
set hostname(value) {
if (this._isInvalid || !this._isRelative) {
return;
}
parse.call(this, value, 'hostname');
},
get port() {
return this._port;
},
set port(value) {
if (this._isInvalid || !this._isRelative) {
return;
}
parse.call(this, value, 'port');
},
get pathname() {
return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData;
},
set pathname(value) {
if (this._isInvalid || !this._isRelative) {
return;
}
this._path = [];
parse.call(this, value, 'relative path start');
},
get search() {
return this._isInvalid || !this._query || this._query === '?' ? '' : this._query;
},
set search(value) {
if (this._isInvalid || !this._isRelative) {
return;
}
this._query = '?';
if (value[0] === '?') {
value = value.slice(1);
}
parse.call(this, value, 'query');
},
get hash() {
return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment;
},
set hash(value) {
if (this._isInvalid) {
return;
}
this._fragment = '#';
if (value[0] === '#') {
value = value.slice(1);
}
parse.call(this, value, 'fragment');
},
get origin() {
var host;
if (this._isInvalid || !this._scheme) {
return '';
}
switch (this._scheme) {
case 'data':
case 'file':
case 'javascript':
case 'mailto':
return 'null';
case 'blob':
try {
return new JURL(this._schemeData).origin || 'null';
} catch (_) {}
return 'null';
}
host = this.host;
if (!host) {
return '';
}
return this._scheme + '://' + host;
}
};
exports.URL = JURL;
})();
/***/ }),
/* 146 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getDocument = getDocument;
exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
var _regenerator = _interopRequireDefault(__w_pdfjs_require__(147));
var _util = __w_pdfjs_require__(1);
var _dom_utils = __w_pdfjs_require__(151);
var _font_loader = __w_pdfjs_require__(152);
var _api_compatibility = __w_pdfjs_require__(153);
var _canvas = __w_pdfjs_require__(154);
var _global_scope = _interopRequireDefault(__w_pdfjs_require__(3));
var _worker_options = __w_pdfjs_require__(156);
var _message_handler = __w_pdfjs_require__(157);
var _metadata = __w_pdfjs_require__(158);
var _transport_stream = __w_pdfjs_require__(160);
var _webgl = __w_pdfjs_require__(161);
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 _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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
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); }
var DEFAULT_RANGE_CHUNK_SIZE = 65536;
var isWorkerDisabled = false;
var fallbackWorkerSrc;
var fakeWorkerFilesLoader = null;
{
var useRequireEnsure = false;
if (typeof window === 'undefined') {
isWorkerDisabled = true;
if (typeof require.ensure === 'undefined') {
require.ensure = require('node-ensure');
}
useRequireEnsure = true;
} else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {
useRequireEnsure = true;
}
if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');
}
var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load;
fakeWorkerFilesLoader = useRequireEnsure ? function () {
return new Promise(function (resolve, reject) {
require.ensure([], function () {
try {
var worker;
worker = require('./pdf.worker.js');
resolve(worker.WorkerMessageHandler);
} catch (ex) {
reject(ex);
}
}, reject, 'pdfjsWorker');
});
} : dynamicLoaderSupported ? function () {
return new Promise(function (resolve, reject) {
requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {
try {
resolve(worker.WorkerMessageHandler);
} catch (ex) {
reject(ex);
}
}, reject);
});
} : null;
if (!fallbackWorkerSrc && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && 'currentScript' in document) {
var pdfjsFilePath = document.currentScript && document.currentScript.src;
if (pdfjsFilePath) {
fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2');
}
}
}
var createPDFNetworkStream;
function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
createPDFNetworkStream = pdfNetworkStreamFactory;
}
function getDocument(src) {
var task = new PDFDocumentLoadingTask();
var source;
if (typeof src === 'string') {
source = {
url: src
};
} else if ((0, _util.isArrayBuffer)(src)) {
source = {
data: src
};
} else if (src instanceof PDFDataRangeTransport) {
source = {
range: src
};
} else {
if (_typeof(src) !== 'object') {
throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object');
}
if (!src.url && !src.data && !src.range) {
throw new Error('Invalid parameter object: need either .data, .range or .url');
}
source = src;
}
var params = Object.create(null);
var rangeTransport = null,
worker = null;
for (var key in source) {
if (key === 'url' && typeof window !== 'undefined') {
params[key] = new _util.URL(source[key], window.location).href;
continue;
} else if (key === 'range') {
rangeTransport = source[key];
continue;
} else if (key === 'worker') {
worker = source[key];
continue;
} else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
var pdfBytes = source[key];
if (typeof pdfBytes === 'string') {
params[key] = (0, _util.stringToBytes)(pdfBytes);
} else if (_typeof(pdfBytes) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {
params[key] = new Uint8Array(pdfBytes);
} else if ((0, _util.isArrayBuffer)(pdfBytes)) {
params[key] = new Uint8Array(pdfBytes);
} else {
throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.');
}
continue;
}
params[key] = source[key];
}
params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
params.CMapReaderFactory = params.CMapReaderFactory || _dom_utils.DOMCMapReaderFactory;
params.ignoreErrors = params.stopAtErrors !== true;
params.pdfBug = params.pdfBug === true;
var NativeImageDecoderValues = Object.values(_util.NativeImageDecoding);
if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {
params.nativeImageDecoderSupport = _api_compatibility.apiCompatibilityParams.nativeImageDecoderSupport || _util.NativeImageDecoding.DECODE;
}
if (!Number.isInteger(params.maxImageSize)) {
params.maxImageSize = -1;
}
if (typeof params.isEvalSupported !== 'boolean') {
params.isEvalSupported = true;
}
if (typeof params.disableFontFace !== 'boolean') {
params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;
}
if (typeof params.disableRange !== 'boolean') {
params.disableRange = false;
}
if (typeof params.disableStream !== 'boolean') {
params.disableStream = false;
}
if (typeof params.disableAutoFetch !== 'boolean') {
params.disableAutoFetch = false;
}
if (typeof params.disableCreateObjectURL !== 'boolean') {
params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false;
}
(0, _util.setVerbosityLevel)(params.verbosity);
if (!worker) {
var workerParams = {
postMessageTransfers: params.postMessageTransfers,
verbosity: params.verbosity,
port: _worker_options.GlobalWorkerOptions.workerPort
};
worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);
task._worker = worker;
}
var docId = task.docId;
worker.promise.then(function () {
if (task.destroyed) {
throw new Error('Loading aborted');
}
return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {
if (task.destroyed) {
throw new Error('Loading aborted');
}
var networkStream;
if (rangeTransport) {
networkStream = new _transport_stream.PDFDataTransportStream({
length: params.length,
initialData: params.initialData,
disableRange: params.disableRange,
disableStream: params.disableStream
}, rangeTransport);
} else if (!params.data) {
networkStream = createPDFNetworkStream({
url: params.url,
length: params.length,
httpHeaders: params.httpHeaders,
withCredentials: params.withCredentials,
rangeChunkSize: params.rangeChunkSize,
disableRange: params.disableRange,
disableStream: params.disableStream
});
}
var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
messageHandler.postMessageTransfers = worker.postMessageTransfers;
var transport = new WorkerTransport(messageHandler, task, networkStream, params);
task._transport = transport;
messageHandler.send('Ready', null);
});
}).catch(task._capability.reject);
return task;
}
function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
if (worker.destroyed) {
return Promise.reject(new Error('Worker was destroyed'));
}
if (pdfDataRangeTransport) {
source.length = pdfDataRangeTransport.length;
source.initialData = pdfDataRangeTransport.initialData;
}
return worker.messageHandler.sendWithPromise('GetDocRequest', {
docId: docId,
apiVersion: '2.1.266',
source: {
data: source.data,
url: source.url,
password: source.password,
disableAutoFetch: source.disableAutoFetch,
rangeChunkSize: source.rangeChunkSize,
length: source.length
},
maxImageSize: source.maxImageSize,
disableFontFace: source.disableFontFace,
disableCreateObjectURL: source.disableCreateObjectURL,
postMessageTransfers: worker.postMessageTransfers,
docBaseUrl: source.docBaseUrl,
nativeImageDecoderSupport: source.nativeImageDecoderSupport,
ignoreErrors: source.ignoreErrors,
isEvalSupported: source.isEvalSupported
}).then(function (workerId) {
if (worker.destroyed) {
throw new Error('Worker was destroyed');
}
return workerId;
});
}
var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
var nextDocumentId = 0;
var PDFDocumentLoadingTask =
/*#__PURE__*/
function () {
function PDFDocumentLoadingTask() {
_classCallCheck(this, PDFDocumentLoadingTask);
this._capability = (0, _util.createPromiseCapability)();
this._transport = null;
this._worker = null;
this.docId = 'd' + nextDocumentId++;
this.destroyed = false;
this.onPassword = null;
this.onProgress = null;
this.onUnsupportedFeature = null;
}
_createClass(PDFDocumentLoadingTask, [{
key: "destroy",
value: function destroy() {
var _this = this;
this.destroyed = true;
var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
return transportDestroyed.then(function () {
_this._transport = null;
if (_this._worker) {
_this._worker.destroy();
_this._worker = null;
}
});
}
}, {
key: "then",
value: function then(onFulfilled, onRejected) {
(0, _util.deprecated)('PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.');
return this.promise.then.apply(this.promise, arguments);
}
}, {
key: "promise",
get: function get() {
return this._capability.promise;
}
}]);
return PDFDocumentLoadingTask;
}();
return PDFDocumentLoadingTask;
}();
var PDFDataRangeTransport =
/*#__PURE__*/
function () {
function PDFDataRangeTransport(length, initialData) {
_classCallCheck(this, PDFDataRangeTransport);
this.length = length;
this.initialData = initialData;
this._rangeListeners = [];
this._progressListeners = [];
this._progressiveReadListeners = [];
this._readyCapability = (0, _util.createPromiseCapability)();
}
_createClass(PDFDataRangeTransport, [{
key: "addRangeListener",
value: function addRangeListener(listener) {
this._rangeListeners.push(listener);
}
}, {
key: "addProgressListener",
value: function addProgressListener(listener) {
this._progressListeners.push(listener);
}
}, {
key: "addProgressiveReadListener",
value: function addProgressiveReadListener(listener) {
this._progressiveReadListeners.push(listener);
}
}, {
key: "onDataRange",
value: function onDataRange(begin, chunk) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = this._rangeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var listener = _step.value;
listener(begin, chunk);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}, {
key: "onDataProgress",
value: function onDataProgress(loaded) {
var _this2 = this;
this._readyCapability.promise.then(function () {
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = _this2._progressListeners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var listener = _step2.value;
listener(loaded);
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
});
}
}, {
key: "onDataProgressiveRead",
value: function onDataProgressiveRead(chunk) {
var _this3 = this;
this._readyCapability.promise.then(function () {
var _iteratorNormalCompletion3 = true;
var _didIteratorError3 = false;
var _iteratorError3 = undefined;
try {
for (var _iterator3 = _this3._progressiveReadListeners[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
var listener = _step3.value;
listener(chunk);
}
} catch (err) {
_didIteratorError3 = true;
_iteratorError3 = err;
} finally {
try {
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
_iterator3.return();
}
} finally {
if (_didIteratorError3) {
throw _iteratorError3;
}
}
}
});
}
}, {
key: "transportReady",
value: function transportReady() {
this._readyCapability.resolve();
}
}, {
key: "requestDataRange",
value: function requestDataRange(begin, end) {
(0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');
}
}, {
key: "abort",
value: function abort() {}
}]);
return PDFDataRangeTransport;
}();
exports.PDFDataRangeTransport = PDFDataRangeTransport;
var PDFDocumentProxy =
/*#__PURE__*/
function () {
function PDFDocumentProxy(pdfInfo, transport, loadingTask) {
_classCallCheck(this, PDFDocumentProxy);
this.loadingTask = loadingTask;
this._pdfInfo = pdfInfo;
this._transport = transport;
}
_createClass(PDFDocumentProxy, [{
key: "getPage",
value: function getPage(pageNumber) {
return this._transport.getPage(pageNumber);
}
}, {
key: "getPageIndex",
value: function getPageIndex(ref) {
return this._transport.getPageIndex(ref);
}
}, {
key: "getDestinations",
value: function getDestinations() {
return this._transport.getDestinations();
}
}, {
key: "getDestination",
value: function getDestination(id) {
return this._transport.getDestination(id);
}
}, {
key: "getPageLabels",
value: function getPageLabels() {
return this._transport.getPageLabels();
}
}, {
key: "getPageMode",
value: function getPageMode() {
return this._transport.getPageMode();
}
}, {
key: "getOpenActionDestination",
value: function getOpenActionDestination() {
return this._transport.getOpenActionDestination();
}
}, {
key: "getAttachments",
value: function getAttachments() {
return this._transport.getAttachments();
}
}, {
key: "getJavaScript",
value: function getJavaScript() {
return this._transport.getJavaScript();
}
}, {
key: "getOutline",
value: function getOutline() {
return this._transport.getOutline();
}
}, {
key: "getPermissions",
value: function getPermissions() {
return this._transport.getPermissions();
}
}, {
key: "getMetadata",
value: function getMetadata() {
return this._transport.getMetadata();
}
}, {
key: "getData",
value: function getData() {
return this._transport.getData();
}
}, {
key: "getDownloadInfo",
value: function getDownloadInfo() {
return this._transport.downloadInfoCapability.promise;
}
}, {
key: "getStats",
value: function getStats() {
return this._transport.getStats();
}
}, {
key: "cleanup",
value: function cleanup() {
this._transport.startCleanup();
}
}, {
key: "destroy",
value: function destroy() {
return this.loadingTask.destroy();
}
}, {
key: "numPages",
get: function get() {
return this._pdfInfo.numPages;
}
}, {
key: "fingerprint",
get: function get() {
return this._pdfInfo.fingerprint;
}
}, {
key: "loadingParams",
get: function get() {
return this._transport.loadingParams;
}
}]);
return PDFDocumentProxy;
}();
exports.PDFDocumentProxy = PDFDocumentProxy;
var PDFPageProxy =
/*#__PURE__*/
function () {
function PDFPageProxy(pageIndex, pageInfo, transport) {
var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
_classCallCheck(this, PDFPageProxy);
this.pageIndex = pageIndex;
this._pageInfo = pageInfo;
this._transport = transport;
this._stats = pdfBug ? new _dom_utils.StatTimer() : _dom_utils.DummyStatTimer;
this._pdfBug = pdfBug;
this.commonObjs = transport.commonObjs;
this.objs = new PDFObjects();
this.cleanupAfterRender = false;
this.pendingCleanup = false;
this.intentStates = Object.create(null);
this.destroyed = false;
}
_createClass(PDFPageProxy, [{
key: "getViewport",
value: function getViewport() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
scale = _ref.scale,
_ref$rotation = _ref.rotation,
rotation = _ref$rotation === void 0 ? this.rotate : _ref$rotation,
_ref$dontFlip = _ref.dontFlip,
dontFlip = _ref$dontFlip === void 0 ? false : _ref$dontFlip;
if (arguments.length > 1 || typeof arguments[0] === 'number') {
(0, _util.deprecated)('getViewport is called with obsolete arguments.');
scale = arguments[0];
rotation = typeof arguments[1] === 'number' ? arguments[1] : this.rotate;
dontFlip = typeof arguments[2] === 'boolean' ? arguments[2] : false;
}
return new _dom_utils.PageViewport({
viewBox: this.view,
scale: scale,
rotation: rotation,
dontFlip: dontFlip
});
}
}, {
key: "getAnnotations",
value: function getAnnotations() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref2$intent = _ref2.intent,
intent = _ref2$intent === void 0 ? null : _ref2$intent;
if (!this.annotationsPromise || this.annotationsIntent !== intent) {
this.annotationsPromise = this._transport.getAnnotations(this.pageIndex, intent);
this.annotationsIntent = intent;
}
return this.annotationsPromise;
}
}, {
key: "render",
value: function render(_ref3) {
var _this4 = this;
var canvasContext = _ref3.canvasContext,
viewport = _ref3.viewport,
_ref3$intent = _ref3.intent,
intent = _ref3$intent === void 0 ? 'display' : _ref3$intent,
_ref3$enableWebGL = _ref3.enableWebGL,
enableWebGL = _ref3$enableWebGL === void 0 ? false : _ref3$enableWebGL,
_ref3$renderInteracti = _ref3.renderInteractiveForms,
renderInteractiveForms = _ref3$renderInteracti === void 0 ? false : _ref3$renderInteracti,
_ref3$transform = _ref3.transform,
transform = _ref3$transform === void 0 ? null : _ref3$transform,
_ref3$imageLayer = _ref3.imageLayer,
imageLayer = _ref3$imageLayer === void 0 ? null : _ref3$imageLayer,
_ref3$canvasFactory = _ref3.canvasFactory,
canvasFactory = _ref3$canvasFactory === void 0 ? null : _ref3$canvasFactory,
_ref3$background = _ref3.background,
background = _ref3$background === void 0 ? null : _ref3$background;
var stats = this._stats;
stats.time('Overall');
this.pendingCleanup = false;
var renderingIntent = intent === 'print' ? 'print' : 'display';
var canvasFactoryInstance = canvasFactory || new _dom_utils.DOMCanvasFactory();
var webGLContext = new _webgl.WebGLContext({
enable: enableWebGL
});
if (!this.intentStates[renderingIntent]) {
this.intentStates[renderingIntent] = Object.create(null);
}
var intentState = this.intentStates[renderingIntent];
if (!intentState.displayReadyCapability) {
intentState.receivingOperatorList = true;
intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
intentState.operatorList = {
fnArray: [],
argsArray: [],
lastChunk: false
};
stats.time('Page Request');
this._transport.messageHandler.send('RenderPageRequest', {
pageIndex: this.pageNumber - 1,
intent: renderingIntent,
renderInteractiveForms: renderInteractiveForms === true
});
}
var complete = function complete(error) {
var i = intentState.renderTasks.indexOf(internalRenderTask);
if (i >= 0) {
intentState.renderTasks.splice(i, 1);
}
if (_this4.cleanupAfterRender) {
_this4.pendingCleanup = true;
}
_this4._tryCleanup();
if (error) {
internalRenderTask.capability.reject(error);
} else {
internalRenderTask.capability.resolve();
}
stats.timeEnd('Rendering');
stats.timeEnd('Overall');
};
var internalRenderTask = new InternalRenderTask({
callback: complete,
params: {
canvasContext: canvasContext,
viewport: viewport,
transform: transform,
imageLayer: imageLayer,
background: background
},
objs: this.objs,
commonObjs: this.commonObjs,
operatorList: intentState.operatorList,
pageNumber: this.pageNumber,
canvasFactory: canvasFactoryInstance,
webGLContext: webGLContext,
useRequestAnimationFrame: renderingIntent !== 'print',
pdfBug: this._pdfBug
});
if (!intentState.renderTasks) {
intentState.renderTasks = [];
}
intentState.renderTasks.push(internalRenderTask);
var renderTask = internalRenderTask.task;
intentState.displayReadyCapability.promise.then(function (transparency) {
if (_this4.pendingCleanup) {
complete();
return;
}
stats.time('Rendering');
internalRenderTask.initializeGraphics(transparency);
internalRenderTask.operatorListChanged();
}).catch(complete);
return renderTask;
}
}, {
key: "getOperatorList",
value: function getOperatorList() {
function operatorListChanged() {
if (intentState.operatorList.lastChunk) {
intentState.opListReadCapability.resolve(intentState.operatorList);
var i = intentState.renderTasks.indexOf(opListTask);
if (i >= 0) {
intentState.renderTasks.splice(i, 1);
}
}
}
var renderingIntent = 'oplist';
if (!this.intentStates[renderingIntent]) {
this.intentStates[renderingIntent] = Object.create(null);
}
var intentState = this.intentStates[renderingIntent];
var opListTask;
if (!intentState.opListReadCapability) {
opListTask = {};
opListTask.operatorListChanged = operatorListChanged;
intentState.receivingOperatorList = true;
intentState.opListReadCapability = (0, _util.createPromiseCapability)();
intentState.renderTasks = [];
intentState.renderTasks.push(opListTask);
intentState.operatorList = {
fnArray: [],
argsArray: [],
lastChunk: false
};
this._stats.time('Page Request');
this._transport.messageHandler.send('RenderPageRequest', {
pageIndex: this.pageIndex,
intent: renderingIntent
});
}
return intentState.opListReadCapability.promise;
}
}, {
key: "streamTextContent",
value: function streamTextContent() {
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref4$normalizeWhites = _ref4.normalizeWhitespace,
normalizeWhitespace = _ref4$normalizeWhites === void 0 ? false : _ref4$normalizeWhites,
_ref4$disableCombineT = _ref4.disableCombineTextItems,
disableCombineTextItems = _ref4$disableCombineT === void 0 ? false : _ref4$disableCombineT;
var TEXT_CONTENT_CHUNK_SIZE = 100;
return this._transport.messageHandler.sendWithStream('GetTextContent', {
pageIndex: this.pageNumber - 1,
normalizeWhitespace: normalizeWhitespace === true,
combineTextItems: disableCombineTextItems !== true
}, {
highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
size: function size(textContent) {
return textContent.items.length;
}
});
}
}, {
key: "getTextContent",
value: function getTextContent() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var readableStream = this.streamTextContent(params);
return new Promise(function (resolve, reject) {
function pump() {
reader.read().then(function (_ref5) {
var _textContent$items;
var value = _ref5.value,
done = _ref5.done;
if (done) {
resolve(textContent);
return;
}
Object.assign(textContent.styles, value.styles);
(_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items));
pump();
}, reject);
}
var reader = readableStream.getReader();
var textContent = {
items: [],
styles: Object.create(null)
};
pump();
});
}
}, {
key: "_destroy",
value: function _destroy() {
this.destroyed = true;
this._transport.pageCache[this.pageIndex] = null;
var waitOn = [];
Object.keys(this.intentStates).forEach(function (intent) {
if (intent === 'oplist') {
return;
}
var intentState = this.intentStates[intent];
intentState.renderTasks.forEach(function (renderTask) {
var renderCompleted = renderTask.capability.promise.catch(function () {});
waitOn.push(renderCompleted);
renderTask.cancel();
});
}, this);
this.objs.clear();
this.annotationsPromise = null;
this.pendingCleanup = false;
return Promise.all(waitOn);
}
}, {
key: "cleanup",
value: function cleanup() {
var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
this.pendingCleanup = true;
this._tryCleanup(resetStats);
}
}, {
key: "_tryCleanup",
value: function _tryCleanup() {
var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
var intentState = this.intentStates[intent];
return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
}, this)) {
return;
}
Object.keys(this.intentStates).forEach(function (intent) {
delete this.intentStates[intent];
}, this);
this.objs.clear();
this.annotationsPromise = null;
if (resetStats && this._stats instanceof _dom_utils.StatTimer) {
this._stats = new _dom_utils.StatTimer();
}
this.pendingCleanup = false;
}
}, {
key: "_startRenderPage",
value: function _startRenderPage(transparency, intent) {
var intentState = this.intentStates[intent];
if (intentState.displayReadyCapability) {
intentState.displayReadyCapability.resolve(transparency);
}
}
}, {
key: "_renderPageChunk",
value: function _renderPageChunk(operatorListChunk, intent) {
var intentState = this.intentStates[intent];
for (var i = 0, ii = operatorListChunk.length; i < ii; i++) {
intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
}
intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
for (var _i = 0; _i < intentState.renderTasks.length; _i++) {
intentState.renderTasks[_i].operatorListChanged();
}
if (operatorListChunk.lastChunk) {
intentState.receivingOperatorList = false;
this._tryCleanup();
}
}
}, {
key: "pageNumber",
get: function get() {
return this.pageIndex + 1;
}
}, {
key: "rotate",
get: function get() {
return this._pageInfo.rotate;
}
}, {
key: "ref",
get: function get() {
return this._pageInfo.ref;
}
}, {
key: "userUnit",
get: function get() {
return this._pageInfo.userUnit;
}
}, {
key: "view",
get: function get() {
return this._pageInfo.view;
}
}, {
key: "stats",
get: function get() {
return this._stats instanceof _dom_utils.StatTimer ? this._stats : null;
}
}]);
return PDFPageProxy;
}();
exports.PDFPageProxy = PDFPageProxy;
var LoopbackPort =
/*#__PURE__*/
function () {
function LoopbackPort() {
var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
_classCallCheck(this, LoopbackPort);
this._listeners = [];
this._defer = defer;
this._deferred = Promise.resolve(undefined);
}
_createClass(LoopbackPort, [{
key: "postMessage",
value: function postMessage(obj, transfers) {
var _this5 = this;
function cloneValue(value) {
if (_typeof(value) !== 'object' || value === null) {
return value;
}
if (cloned.has(value)) {
return cloned.get(value);
}
var buffer, result;
if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
var transferable = transfers && transfers.includes(buffer);
if (value === buffer) {
result = value;
} else if (transferable) {
result = new value.constructor(buffer, value.byteOffset, value.byteLength);
} else {
result = new value.constructor(value);
}
cloned.set(value, result);
return result;
}
result = Array.isArray(value) ? [] : {};
cloned.set(value, result);
for (var i in value) {
var desc = void 0,
p = value;
while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
p = Object.getPrototypeOf(p);
}
if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {
continue;
}
result[i] = cloneValue(desc.value);
}
return result;
}
if (!this._defer) {
this._listeners.forEach(function (listener) {
listener.call(this, {
data: obj
});
}, this);
return;
}
var cloned = new WeakMap();
var e = {
data: cloneValue(obj)
};
this._deferred.then(function () {
_this5._listeners.forEach(function (listener) {
listener.call(this, e);
}, _this5);
});
}
}, {
key: "addEventListener",
value: function addEventListener(name, listener) {
this._listeners.push(listener);
}
}, {
key: "removeEventListener",
value: function removeEventListener(name, listener) {
var i = this._listeners.indexOf(listener);
this._listeners.splice(i, 1);
}
}, {
key: "terminate",
value: function terminate() {
this._listeners = [];
}
}]);
return LoopbackPort;
}();
exports.LoopbackPort = LoopbackPort;
var PDFWorker = function PDFWorkerClosure() {
var pdfWorkerPorts = new WeakMap();
var nextFakeWorkerId = 0;
var fakeWorkerFilesLoadedCapability;
function _getWorkerSrc() {
if (_worker_options.GlobalWorkerOptions.workerSrc) {
return _worker_options.GlobalWorkerOptions.workerSrc;
}
if (typeof fallbackWorkerSrc !== 'undefined') {
return fallbackWorkerSrc;
}
throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
}
function getMainThreadWorkerMessageHandler() {
try {
if (typeof window !== 'undefined') {
return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler;
}
} catch (ex) {}
return null;
}
function setupFakeWorkerGlobal() {
if (fakeWorkerFilesLoadedCapability) {
return fakeWorkerFilesLoadedCapability.promise;
}
fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)();
var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
if (mainWorkerMessageHandler) {
fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);
return fakeWorkerFilesLoadedCapability.promise;
}
var loader = fakeWorkerFilesLoader || function () {
return (0, _dom_utils.loadScript)(_getWorkerSrc()).then(function () {
return window.pdfjsWorker.WorkerMessageHandler;
});
};
loader().then(fakeWorkerFilesLoadedCapability.resolve, fakeWorkerFilesLoadedCapability.reject);
return fakeWorkerFilesLoadedCapability.promise;
}
function createCDNWrapper(url) {
var wrapper = 'importScripts(\'' + url + '\');';
return _util.URL.createObjectURL(new Blob([wrapper]));
}
var PDFWorker =
/*#__PURE__*/
function () {
function PDFWorker() {
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref6$name = _ref6.name,
name = _ref6$name === void 0 ? null : _ref6$name,
_ref6$port = _ref6.port,
port = _ref6$port === void 0 ? null : _ref6$port,
_ref6$postMessageTran = _ref6.postMessageTransfers,
postMessageTransfers = _ref6$postMessageTran === void 0 ? true : _ref6$postMessageTran,
_ref6$verbosity = _ref6.verbosity,
verbosity = _ref6$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref6$verbosity;
_classCallCheck(this, PDFWorker);
if (port && pdfWorkerPorts.has(port)) {
throw new Error('Cannot use more than one PDFWorker per port');
}
this.name = name;
this.destroyed = false;
this.postMessageTransfers = postMessageTransfers !== false;
this.verbosity = verbosity;
this._readyCapability = (0, _util.createPromiseCapability)();
this._port = null;
this._webWorker = null;
this._messageHandler = null;
if (port) {
pdfWorkerPorts.set(port, this);
this._initializeFromPort(port);
return;
}
this._initialize();
}
_createClass(PDFWorker, [{
key: "_initializeFromPort",
value: function _initializeFromPort(port) {
this._port = port;
this._messageHandler = new _message_handler.MessageHandler('main', 'worker', port);
this._messageHandler.on('ready', function () {});
this._readyCapability.resolve();
}
}, {
key: "_initialize",
value: function _initialize() {
var _this6 = this;
if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
var workerSrc = _getWorkerSrc();
try {
if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
workerSrc = createCDNWrapper(new _util.URL(workerSrc, window.location).href);
}
var worker = new Worker(workerSrc);
var messageHandler = new _message_handler.MessageHandler('main', 'worker', worker);
var terminateEarly = function terminateEarly() {
worker.removeEventListener('error', onWorkerError);
messageHandler.destroy();
worker.terminate();
if (_this6.destroyed) {
_this6._readyCapability.reject(new Error('Worker was destroyed'));
} else {
_this6._setupFakeWorker();
}
};
var onWorkerError = function onWorkerError() {
if (!_this6._webWorker) {
terminateEarly();
}
};
worker.addEventListener('error', onWorkerError);
messageHandler.on('test', function (data) {
worker.removeEventListener('error', onWorkerError);
if (_this6.destroyed) {
terminateEarly();
return;
}
if (data && data.supportTypedArray) {
_this6._messageHandler = messageHandler;
_this6._port = worker;
_this6._webWorker = worker;
if (!data.supportTransfers) {
_this6.postMessageTransfers = false;
}
_this6._readyCapability.resolve();
messageHandler.send('configure', {
verbosity: _this6.verbosity
});
} else {
_this6._setupFakeWorker();
messageHandler.destroy();
worker.terminate();
}
});
messageHandler.on('ready', function (data) {
worker.removeEventListener('error', onWorkerError);
if (_this6.destroyed) {
terminateEarly();
return;
}
try {
sendTest();
} catch (e) {
_this6._setupFakeWorker();
}
});
var sendTest = function sendTest() {
var testObj = new Uint8Array([_this6.postMessageTransfers ? 255 : 0]);
try {
messageHandler.send('test', testObj, [testObj.buffer]);
} catch (ex) {
(0, _util.info)('Cannot use postMessage transfers');
testObj[0] = 0;
messageHandler.send('test', testObj);
}
};
sendTest();
return;
} catch (e) {
(0, _util.info)('The worker has been disabled.');
}
}
this._setupFakeWorker();
}
}, {
key: "_setupFakeWorker",
value: function _setupFakeWorker() {
var _this7 = this;
if (!isWorkerDisabled) {
(0, _util.warn)('Setting up fake worker.');
isWorkerDisabled = true;
}
setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {
if (_this7.destroyed) {
_this7._readyCapability.reject(new Error('Worker was destroyed'));
return;
}
var port = new LoopbackPort();
_this7._port = port;
var id = 'fake' + nextFakeWorkerId++;
var workerHandler = new _message_handler.MessageHandler(id + '_worker', id, port);
WorkerMessageHandler.setup(workerHandler, port);
var messageHandler = new _message_handler.MessageHandler(id, id + '_worker', port);
_this7._messageHandler = messageHandler;
_this7._readyCapability.resolve();
}).catch(function (reason) {
_this7._readyCapability.reject(new Error("Setting up fake worker failed: \"".concat(reason.message, "\".")));
});
}
}, {
key: "destroy",
value: function destroy() {
this.destroyed = true;
if (this._webWorker) {
this._webWorker.terminate();
this._webWorker = null;
}
pdfWorkerPorts.delete(this._port);
this._port = null;
if (this._messageHandler) {
this._messageHandler.destroy();
this._messageHandler = null;
}
}
}, {
key: "promise",
get: function get() {
return this._readyCapability.promise;
}
}, {
key: "port",
get: function get() {
return this._port;
}
}, {
key: "messageHandler",
get: function get() {
return this._messageHandler;
}
}], [{
key: "fromPort",
value: function fromPort(params) {
if (!params || !params.port) {
throw new Error('PDFWorker.fromPort - invalid method signature.');
}
if (pdfWorkerPorts.has(params.port)) {
return pdfWorkerPorts.get(params.port);
}
return new PDFWorker(params);
}
}, {
key: "getWorkerSrc",
value: function getWorkerSrc() {
return _getWorkerSrc();
}
}]);
return PDFWorker;
}();
return PDFWorker;
}();
exports.PDFWorker = PDFWorker;
var WorkerTransport =
/*#__PURE__*/
function () {
function WorkerTransport(messageHandler, loadingTask, networkStream, params) {
_classCallCheck(this, WorkerTransport);
this.messageHandler = messageHandler;
this.loadingTask = loadingTask;
this.commonObjs = new PDFObjects();
this.fontLoader = new _font_loader.FontLoader({
docId: loadingTask.docId,
onUnsupportedFeature: this._onUnsupportedFeature.bind(this)
});
this._params = params;
this.CMapReaderFactory = new params.CMapReaderFactory({
baseUrl: params.cMapUrl,
isCompressed: params.cMapPacked
});
this.destroyed = false;
this.destroyCapability = null;
this._passwordCapability = null;
this._networkStream = networkStream;
this._fullReader = null;
this._lastProgress = null;
this.pageCache = [];
this.pagePromises = [];
this.downloadInfoCapability = (0, _util.createPromiseCapability)();
this.setupMessageHandler();
}
_createClass(WorkerTransport, [{
key: "destroy",
value: function destroy() {
var _this8 = this;
if (this.destroyCapability) {
return this.destroyCapability.promise;
}
this.destroyed = true;
this.destroyCapability = (0, _util.createPromiseCapability)();
if (this._passwordCapability) {
this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));
}
var waitOn = [];
this.pageCache.forEach(function (page) {
if (page) {
waitOn.push(page._destroy());
}
});
this.pageCache = [];
this.pagePromises = [];
var terminated = this.messageHandler.sendWithPromise('Terminate', null);
waitOn.push(terminated);
Promise.all(waitOn).then(function () {
_this8.fontLoader.clear();
if (_this8._networkStream) {
_this8._networkStream.cancelAllRequests();
}
if (_this8.messageHandler) {
_this8.messageHandler.destroy();
_this8.messageHandler = null;
}
_this8.destroyCapability.resolve();
}, this.destroyCapability.reject);
return this.destroyCapability.promise;
}
}, {
key: "setupMessageHandler",
value: function setupMessageHandler() {
var messageHandler = this.messageHandler,
loadingTask = this.loadingTask;
messageHandler.on('GetReader', function (data, sink) {
var _this9 = this;
(0, _util.assert)(this._networkStream);
this._fullReader = this._networkStream.getFullReader();
this._fullReader.onProgress = function (evt) {
_this9._lastProgress = {
loaded: evt.loaded,
total: evt.total
};
};
sink.onPull = function () {
_this9._fullReader.read().then(function (_ref7) {
var value = _ref7.value,
done = _ref7.done;
if (done) {
sink.close();
return;
}
(0, _util.assert)((0, _util.isArrayBuffer)(value));
sink.enqueue(new Uint8Array(value), 1, [value]);
}).catch(function (reason) {
sink.error(reason);
});
};
sink.onCancel = function (reason) {
_this9._fullReader.cancel(reason);
};
}, this);
messageHandler.on('ReaderHeadersReady', function (data) {
var _this10 = this;
var headersCapability = (0, _util.createPromiseCapability)();
var fullReader = this._fullReader;
fullReader.headersReady.then(function () {
if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
if (_this10._lastProgress && loadingTask.onProgress) {
loadingTask.onProgress(_this10._lastProgress);
}
fullReader.onProgress = function (evt) {
if (loadingTask.onProgress) {
loadingTask.onProgress({
loaded: evt.loaded,
total: evt.total
});
}
};
}
headersCapability.resolve({
isStreamingSupported: fullReader.isStreamingSupported,
isRangeSupported: fullReader.isRangeSupported,
contentLength: fullReader.contentLength
});
}, headersCapability.reject);
return headersCapability.promise;
}, this);
messageHandler.on('GetRangeReader', function (data, sink) {
(0, _util.assert)(this._networkStream);
var rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
sink.onPull = function () {
rangeReader.read().then(function (_ref8) {
var value = _ref8.value,
done = _ref8.done;
if (done) {
sink.close();
return;
}
(0, _util.assert)((0, _util.isArrayBuffer)(value));
sink.enqueue(new Uint8Array(value), 1, [value]);
}).catch(function (reason) {
sink.error(reason);
});
};
sink.onCancel = function (reason) {
rangeReader.cancel(reason);
};
}, this);
messageHandler.on('GetDoc', function (_ref9) {
var pdfInfo = _ref9.pdfInfo;
this.numPages = pdfInfo.numPages;
this.pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);
loadingTask._capability.resolve(this.pdfDocument);
}, this);
messageHandler.on('PasswordRequest', function (exception) {
var _this11 = this;
this._passwordCapability = (0, _util.createPromiseCapability)();
if (loadingTask.onPassword) {
var updatePassword = function updatePassword(password) {
_this11._passwordCapability.resolve({
password: password
});
};
try {
loadingTask.onPassword(updatePassword, exception.code);
} catch (ex) {
this._passwordCapability.reject(ex);
}
} else {
this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
}
return this._passwordCapability.promise;
}, this);
messageHandler.on('PasswordException', function (exception) {
loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code));
}, this);
messageHandler.on('InvalidPDF', function (exception) {
loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));
}, this);
messageHandler.on('MissingPDF', function (exception) {
loadingTask._capability.reject(new _util.MissingPDFException(exception.message));
}, this);
messageHandler.on('UnexpectedResponse', function (exception) {
loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));
}, this);
messageHandler.on('UnknownError', function (exception) {
loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));
}, this);
messageHandler.on('DataLoaded', function (data) {
if (loadingTask.onProgress) {
loadingTask.onProgress({
loaded: data.length,
total: data.length
});
}
this.downloadInfoCapability.resolve(data);
}, this);
messageHandler.on('StartRenderPage', function (data) {
if (this.destroyed) {
return;
}
var page = this.pageCache[data.pageIndex];
page._stats.timeEnd('Page Request');
page._startRenderPage(data.transparency, data.intent);
}, this);
messageHandler.on('RenderPageChunk', function (data) {
if (this.destroyed) {
return;
}
var page = this.pageCache[data.pageIndex];
page._renderPageChunk(data.operatorList, data.intent);
}, this);
messageHandler.on('commonobj', function (data) {
var _this12 = this;
if (this.destroyed) {
return;
}
var _data = _slicedToArray(data, 3),
id = _data[0],
type = _data[1],
exportedData = _data[2];
if (this.commonObjs.has(id)) {
return;
}
switch (type) {
case 'Font':
var params = this._params;
if ('error' in exportedData) {
var exportedError = exportedData.error;
(0, _util.warn)("Error during font loading: ".concat(exportedError));
this.commonObjs.resolve(id, exportedError);
break;
}
var fontRegistry = null;
if (params.pdfBug && _global_scope.default.FontInspector && _global_scope.default.FontInspector.enabled) {
fontRegistry = {
registerFont: function registerFont(font, url) {
_global_scope.default['FontInspector'].fontAdded(font, url);
}
};
}
var font = new _font_loader.FontFaceObject(exportedData, {
isEvalSupported: params.isEvalSupported,
disableFontFace: params.disableFontFace,
ignoreErrors: params.ignoreErrors,
onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
fontRegistry: fontRegistry
});
this.fontLoader.bind(font).then(function () {
_this12.commonObjs.resolve(id, font);
}, function (reason) {
messageHandler.sendWithPromise('FontFallback', {
id: id
}).finally(function () {
_this12.commonObjs.resolve(id, font);
});
});
break;
case 'FontPath':
this.commonObjs.resolve(id, exportedData);
break;
default:
throw new Error("Got unknown common object type ".concat(type));
}
}, this);
messageHandler.on('obj', function (data) {
if (this.destroyed) {
return;
}
var _data2 = _slicedToArray(data, 4),
id = _data2[0],
pageIndex = _data2[1],
type = _data2[2],
imageData = _data2[3];
var pageProxy = this.pageCache[pageIndex];
if (pageProxy.objs.has(id)) {
return;
}
switch (type) {
case 'JpegStream':
return new Promise(function (resolve, reject) {
var img = new Image();
img.onload = function () {
resolve(img);
};
img.onerror = function () {
reject(new Error('Error during JPEG image loading'));
};
img.src = imageData;
}).then(function (img) {
pageProxy.objs.resolve(id, img);
});
case 'Image':
pageProxy.objs.resolve(id, imageData);
var MAX_IMAGE_SIZE_TO_STORE = 8000000;
if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
pageProxy.cleanupAfterRender = true;
}
break;
default:
throw new Error("Got unknown object type ".concat(type));
}
}, this);
messageHandler.on('DocProgress', function (data) {
if (this.destroyed) {
return;
}
if (loadingTask.onProgress) {
loadingTask.onProgress({
loaded: data.loaded,
total: data.total
});
}
}, this);
messageHandler.on('PageError', function (data) {
if (this.destroyed) {
return;
}
var page = this.pageCache[data.pageNum - 1];
var intentState = page.intentStates[data.intent];
if (intentState.displayReadyCapability) {
intentState.displayReadyCapability.reject(data.error);
} else {
throw new Error(data.error);
}
if (intentState.operatorList) {
intentState.operatorList.lastChunk = true;
for (var i = 0; i < intentState.renderTasks.length; i++) {
intentState.renderTasks[i].operatorListChanged();
}
}
}, this);
messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);
messageHandler.on('JpegDecode', function (data) {
if (this.destroyed) {
return Promise.reject(new Error('Worker was destroyed'));
}
if (typeof document === 'undefined') {
return Promise.reject(new Error('"document" is not defined.'));
}
var _data3 = _slicedToArray(data, 2),
imageUrl = _data3[0],
components = _data3[1];
if (components !== 3 && components !== 1) {
return Promise.reject(new Error('Only 3 components or 1 component can be returned'));
}
return new Promise(function (resolve, reject) {
var img = new Image();
img.onload = function () {
var width = img.width;
var height = img.height;
var size = width * height;
var rgbaLength = size * 4;
var buf = new Uint8ClampedArray(size * components);
var tmpCanvas = document.createElement('canvas');
tmpCanvas.width = width;
tmpCanvas.height = height;
var tmpCtx = tmpCanvas.getContext('2d');
tmpCtx.drawImage(img, 0, 0);
var data = tmpCtx.getImageData(0, 0, width, height).data;
if (components === 3) {
for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
buf[j] = data[i];
buf[j + 1] = data[i + 1];
buf[j + 2] = data[i + 2];
}
} else if (components === 1) {
for (var _i2 = 0, _j = 0; _i2 < rgbaLength; _i2 += 4, _j++) {
buf[_j] = data[_i2];
}
}
resolve({
data: buf,
width: width,
height: height
});
};
img.onerror = function () {
reject(new Error('JpegDecode failed to load image'));
};
img.src = imageUrl;
});
}, this);
messageHandler.on('FetchBuiltInCMap', function (data) {
if (this.destroyed) {
return Promise.reject(new Error('Worker was destroyed'));
}
return this.CMapReaderFactory.fetch({
name: data.name
});
}, this);
}
}, {
key: "_onUnsupportedFeature",
value: function _onUnsupportedFeature(_ref10) {
var featureId = _ref10.featureId;
if (this.destroyed) {
return;
}
if (this.loadingTask.onUnsupportedFeature) {
this.loadingTask.onUnsupportedFeature(featureId);
}
}
}, {
key: "getData",
value: function getData() {
return this.messageHandler.sendWithPromise('GetData', null);
}
}, {
key: "getPage",
value: function getPage(pageNumber) {
var _this13 = this;
if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {
return Promise.reject(new Error('Invalid page request'));
}
var pageIndex = pageNumber - 1;
if (pageIndex in this.pagePromises) {
return this.pagePromises[pageIndex];
}
var promise = this.messageHandler.sendWithPromise('GetPage', {
pageIndex: pageIndex
}).then(function (pageInfo) {
if (_this13.destroyed) {
throw new Error('Transport destroyed');
}
var page = new PDFPageProxy(pageIndex, pageInfo, _this13, _this13._params.pdfBug);
_this13.pageCache[pageIndex] = page;
return page;
});
this.pagePromises[pageIndex] = promise;
return promise;
}
}, {
key: "getPageIndex",
value: function getPageIndex(ref) {
return this.messageHandler.sendWithPromise('GetPageIndex', {
ref: ref
}).catch(function (reason) {
return Promise.reject(new Error(reason));
});
}
}, {
key: "getAnnotations",
value: function getAnnotations(pageIndex, intent) {
return this.messageHandler.sendWithPromise('GetAnnotations', {
pageIndex: pageIndex,
intent: intent
});
}
}, {
key: "getDestinations",
value: function getDestinations() {
return this.messageHandler.sendWithPromise('GetDestinations', null);
}
}, {
key: "getDestination",
value: function getDestination(id) {
if (typeof id !== 'string') {
return Promise.reject(new Error('Invalid destination request.'));
}
return this.messageHandler.sendWithPromise('GetDestination', {
id: id
});
}
}, {
key: "getPageLabels",
value: function getPageLabels() {
return this.messageHandler.sendWithPromise('GetPageLabels', null);
}
}, {
key: "getPageMode",
value: function getPageMode() {
return this.messageHandler.sendWithPromise('GetPageMode', null);
}
}, {
key: "getOpenActionDestination",
value: function getOpenActionDestination() {
return this.messageHandler.sendWithPromise('getOpenActionDestination', null);
}
}, {
key: "getAttachments",
value: function getAttachments() {
return this.messageHandler.sendWithPromise('GetAttachments', null);
}
}, {
key: "getJavaScript",
value: function getJavaScript() {
return this.messageHandler.sendWithPromise('GetJavaScript', null);
}
}, {
key: "getOutline",
value: function getOutline() {
return this.messageHandler.sendWithPromise('GetOutline', null);
}
}, {
key: "getPermissions",
value: function getPermissions() {
return this.messageHandler.sendWithPromise('GetPermissions', null);
}
}, {
key: "getMetadata",
value: function getMetadata() {
var _this14 = this;
return this.messageHandler.sendWithPromise('GetMetadata', null).then(function (results) {
return {
info: results[0],
metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
contentDispositionFilename: _this14._fullReader ? _this14._fullReader.filename : null
};
});
}
}, {
key: "getStats",
value: function getStats() {
return this.messageHandler.sendWithPromise('GetStats', null);
}
}, {
key: "startCleanup",
value: function startCleanup() {
var _this15 = this;
this.messageHandler.sendWithPromise('Cleanup', null).then(function () {
for (var i = 0, ii = _this15.pageCache.length; i < ii; i++) {
var page = _this15.pageCache[i];
if (page) {
page.cleanup();
}
}
_this15.commonObjs.clear();
_this15.fontLoader.clear();
});
}
}, {
key: "loadingParams",
get: function get() {
var params = this._params;
return (0, _util.shadow)(this, 'loadingParams', {
disableAutoFetch: params.disableAutoFetch,
disableCreateObjectURL: params.disableCreateObjectURL,
disableFontFace: params.disableFontFace,
nativeImageDecoderSupport: params.nativeImageDecoderSupport
});
}
}]);
return WorkerTransport;
}();
var PDFObjects =
/*#__PURE__*/
function () {
function PDFObjects() {
_classCallCheck(this, PDFObjects);
this._objs = Object.create(null);
}
_createClass(PDFObjects, [{
key: "_ensureObj",
value: function _ensureObj(objId) {
if (this._objs[objId]) {
return this._objs[objId];
}
return this._objs[objId] = {
capability: (0, _util.createPromiseCapability)(),
data: null,
resolved: false
};
}
}, {
key: "get",
value: function get(objId) {
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (callback) {
this._ensureObj(objId).capability.promise.then(callback);
return null;
}
var obj = this._objs[objId];
if (!obj || !obj.resolved) {
throw new Error("Requesting object that isn't resolved yet ".concat(objId, "."));
}
return obj.data;
}
}, {
key: "has",
value: function has(objId) {
var obj = this._objs[objId];
return obj ? obj.resolved : false;
}
}, {
key: "resolve",
value: function resolve(objId, data) {
var obj = this._ensureObj(objId);
obj.resolved = true;
obj.data = data;
obj.capability.resolve(data);
}
}, {
key: "clear",
value: function clear() {
this._objs = Object.create(null);
}
}]);
return PDFObjects;
}();
var RenderTask =
/*#__PURE__*/
function () {
function RenderTask(internalRenderTask) {
_classCallCheck(this, RenderTask);
this._internalRenderTask = internalRenderTask;
this.onContinue = null;
}
_createClass(RenderTask, [{
key: "cancel",
value: function cancel() {
this._internalRenderTask.cancel();
}
}, {
key: "then",
value: function then(onFulfilled, onRejected) {
(0, _util.deprecated)('RenderTask.then method, use the `promise` getter instead.');
return this.promise.then.apply(this.promise, arguments);
}
}, {
key: "promise",
get: function get() {
return this._internalRenderTask.capability.promise;
}
}]);
return RenderTask;
}();
var InternalRenderTask = function InternalRenderTaskClosure() {
var canvasInRendering = new WeakSet();
var InternalRenderTask =
/*#__PURE__*/
function () {
function InternalRenderTask(_ref11) {
var callback = _ref11.callback,
params = _ref11.params,
objs = _ref11.objs,
commonObjs = _ref11.commonObjs,
operatorList = _ref11.operatorList,
pageNumber = _ref11.pageNumber,
canvasFactory = _ref11.canvasFactory,
webGLContext = _ref11.webGLContext,
_ref11$useRequestAnim = _ref11.useRequestAnimationFrame,
useRequestAnimationFrame = _ref11$useRequestAnim === void 0 ? false : _ref11$useRequestAnim,
_ref11$pdfBug = _ref11.pdfBug,
pdfBug = _ref11$pdfBug === void 0 ? false : _ref11$pdfBug;
_classCallCheck(this, InternalRenderTask);
this.callback = callback;
this.params = params;
this.objs = objs;
this.commonObjs = commonObjs;
this.operatorListIdx = null;
this.operatorList = operatorList;
this.pageNumber = pageNumber;
this.canvasFactory = canvasFactory;
this.webGLContext = webGLContext;
this._pdfBug = pdfBug;
this.running = false;
this.graphicsReadyCallback = null;
this.graphicsReady = false;
this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== 'undefined';
this.cancelled = false;
this.capability = (0, _util.createPromiseCapability)();
this.task = new RenderTask(this);
this._continueBound = this._continue.bind(this);
this._scheduleNextBound = this._scheduleNext.bind(this);
this._nextBound = this._next.bind(this);
this._canvas = params.canvasContext.canvas;
}
_createClass(InternalRenderTask, [{
key: "initializeGraphics",
value: function initializeGraphics() {
var transparency = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (this.cancelled) {
return;
}
if (this._canvas) {
if (canvasInRendering.has(this._canvas)) {
throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');
}
canvasInRendering.add(this._canvas);
}
if (this._pdfBug && _global_scope.default.StepperManager && _global_scope.default.StepperManager.enabled) {
this.stepper = _global_scope.default.StepperManager.create(this.pageNumber - 1);
this.stepper.init(this.operatorList);
this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
}
var _this$params = this.params,
canvasContext = _this$params.canvasContext,
viewport = _this$params.viewport,
transform = _this$params.transform,
imageLayer = _this$params.imageLayer,
background = _this$params.background;
this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer);
this.gfx.beginDrawing({
transform: transform,
viewport: viewport,
transparency: transparency,
background: background
});
this.operatorListIdx = 0;
this.graphicsReady = true;
if (this.graphicsReadyCallback) {
this.graphicsReadyCallback();
}
}
}, {
key: "cancel",
value: function cancel() {
var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
this.running = false;
this.cancelled = true;
if (this.gfx) {
this.gfx.endDrawing();
}
if (this._canvas) {
canvasInRendering.delete(this._canvas);
}
this.callback(error || new _dom_utils.RenderingCancelledException("Rendering cancelled, page ".concat(this.pageNumber), 'canvas'));
}
}, {
key: "operatorListChanged",
value: function operatorListChanged() {
if (!this.graphicsReady) {
if (!this.graphicsReadyCallback) {
this.graphicsReadyCallback = this._continueBound;
}
return;
}
if (this.stepper) {
this.stepper.updateOperatorList(this.operatorList);
}
if (this.running) {
return;
}
this._continue();
}
}, {
key: "_continue",
value: function _continue() {
this.running = true;
if (this.cancelled) {
return;
}
if (this.task.onContinue) {
this.task.onContinue(this._scheduleNextBound);
} else {
this._scheduleNext();
}
}
}, {
key: "_scheduleNext",
value: function _scheduleNext() {
var _this16 = this;
if (this._useRequestAnimationFrame) {
window.requestAnimationFrame(function () {
_this16._nextBound().catch(_this16.cancel.bind(_this16));
});
} else {
Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this));
}
}
}, {
key: "_next",
value: function () {
var _next2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!this.cancelled) {
_context.next = 2;
break;
}
return _context.abrupt("return");
case 2:
this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
if (this.operatorListIdx === this.operatorList.argsArray.length) {
this.running = false;
if (this.operatorList.lastChunk) {
this.gfx.endDrawing();
if (this._canvas) {
canvasInRendering.delete(this._canvas);
}
this.callback();
}
}
case 4:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function _next() {
return _next2.apply(this, arguments);
}
return _next;
}()
}]);
return InternalRenderTask;
}();
return InternalRenderTask;
}();
var version = '2.1.266';
exports.version = version;
var build = '81f5835c';
exports.build = build;
/***/ }),
/* 147 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = __w_pdfjs_require__(148);
/***/ }),
/* 148 */
/***/ (function(module, exports, __w_pdfjs_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 = __w_pdfjs_require__(149);
if (hadRuntime) {
g.regeneratorRuntime = oldRuntime;
} else {
try {
delete g.regeneratorRuntime;
} catch (e) {
g.regeneratorRuntime = undefined;
}
}
/***/ }),
/* 149 */
/***/ (function(module, exports, __w_pdfjs_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, __w_pdfjs_require__(150)(module)))
/***/ }),
/* 150 */
/***/ (function(module, exports, __w_pdfjs_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;
};
/***/ }),
/* 151 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addLinkAttributes = addLinkAttributes;
exports.getFilenameFromUrl = getFilenameFromUrl;
exports.loadScript = loadScript;
exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
var _util = __w_pdfjs_require__(1);
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_LINK_REL = 'noopener noreferrer nofollow';
exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
var SVG_NS = 'http://www.w3.org/2000/svg';
var DOMCanvasFactory =
/*#__PURE__*/
function () {
function DOMCanvasFactory() {
_classCallCheck(this, DOMCanvasFactory);
}
_createClass(DOMCanvasFactory, [{
key: "create",
value: function create(width, height) {
if (width <= 0 || height <= 0) {
throw new Error('invalid canvas size');
}
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.width = width;
canvas.height = height;
return {
canvas: canvas,
context: context
};
}
}, {
key: "reset",
value: function reset(canvasAndContext, width, height) {
if (!canvasAndContext.canvas) {
throw new Error('canvas is not specified');
}
if (width <= 0 || height <= 0) {
throw new Error('invalid canvas size');
}
canvasAndContext.canvas.width = width;
canvasAndContext.canvas.height = height;
}
}, {
key: "destroy",
value: function destroy(canvasAndContext) {
if (!canvasAndContext.canvas) {
throw new Error('canvas is not specified');
}
canvasAndContext.canvas.width = 0;
canvasAndContext.canvas.height = 0;
canvasAndContext.canvas = null;
canvasAndContext.context = null;
}
}]);
return DOMCanvasFactory;
}();
exports.DOMCanvasFactory = DOMCanvasFactory;
var DOMCMapReaderFactory =
/*#__PURE__*/
function () {
function DOMCMapReaderFactory(_ref) {
var _ref$baseUrl = _ref.baseUrl,
baseUrl = _ref$baseUrl === void 0 ? null : _ref$baseUrl,
_ref$isCompressed = _ref.isCompressed,
isCompressed = _ref$isCompressed === void 0 ? false : _ref$isCompressed;
_classCallCheck(this, DOMCMapReaderFactory);
this.baseUrl = baseUrl;
this.isCompressed = isCompressed;
}
_createClass(DOMCMapReaderFactory, [{
key: "fetch",
value: function fetch(_ref2) {
var _this = this;
var name = _ref2.name;
if (!this.baseUrl) {
return Promise.reject(new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'));
}
if (!name) {
return Promise.reject(new Error('CMap name must be specified.'));
}
return new Promise(function (resolve, reject) {
var url = _this.baseUrl + name + (_this.isCompressed ? '.bcmap' : '');
var request = new XMLHttpRequest();
request.open('GET', url, true);
if (_this.isCompressed) {
request.responseType = 'arraybuffer';
}
request.onreadystatechange = function () {
if (request.readyState !== XMLHttpRequest.DONE) {
return;
}
if (request.status === 200 || request.status === 0) {
var data;
if (_this.isCompressed && request.response) {
data = new Uint8Array(request.response);
} else if (!_this.isCompressed && request.responseText) {
data = (0, _util.stringToBytes)(request.responseText);
}
if (data) {
resolve({
cMapData: data,
compressionType: _this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE
});
return;
}
}
reject(new Error('Unable to load ' + (_this.isCompressed ? 'binary ' : '') + 'CMap at: ' + url));
};
request.send(null);
});
}
}]);
return DOMCMapReaderFactory;
}();
exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
var DOMSVGFactory =
/*#__PURE__*/
function () {
function DOMSVGFactory() {
_classCallCheck(this, DOMSVGFactory);
}
_createClass(DOMSVGFactory, [{
key: "create",
value: function create(width, height) {
(0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions');
var svg = document.createElementNS(SVG_NS, 'svg:svg');
svg.setAttribute('version', '1.1');
svg.setAttribute('width', width + 'px');
svg.setAttribute('height', height + 'px');
svg.setAttribute('preserveAspectRatio', 'none');
svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
return svg;
}
}, {
key: "createElement",
value: function createElement(type) {
(0, _util.assert)(typeof type === 'string', 'Invalid SVG element type');
return document.createElementNS(SVG_NS, type);
}
}]);
return DOMSVGFactory;
}();
exports.DOMSVGFactory = DOMSVGFactory;
var PageViewport =
/*#__PURE__*/
function () {
function PageViewport(_ref3) {
var viewBox = _ref3.viewBox,
scale = _ref3.scale,
rotation = _ref3.rotation,
_ref3$offsetX = _ref3.offsetX,
offsetX = _ref3$offsetX === void 0 ? 0 : _ref3$offsetX,
_ref3$offsetY = _ref3.offsetY,
offsetY = _ref3$offsetY === void 0 ? 0 : _ref3$offsetY,
_ref3$dontFlip = _ref3.dontFlip,
dontFlip = _ref3$dontFlip === void 0 ? false : _ref3$dontFlip;
_classCallCheck(this, PageViewport);
this.viewBox = viewBox;
this.scale = scale;
this.rotation = rotation;
this.offsetX = offsetX;
this.offsetY = offsetY;
var centerX = (viewBox[2] + viewBox[0]) / 2;
var centerY = (viewBox[3] + viewBox[1]) / 2;
var rotateA, rotateB, rotateC, rotateD;
rotation = rotation % 360;
rotation = rotation < 0 ? rotation + 360 : rotation;
switch (rotation) {
case 180:
rotateA = -1;
rotateB = 0;
rotateC = 0;
rotateD = 1;
break;
case 90:
rotateA = 0;
rotateB = 1;
rotateC = 1;
rotateD = 0;
break;
case 270:
rotateA = 0;
rotateB = -1;
rotateC = -1;
rotateD = 0;
break;
default:
rotateA = 1;
rotateB = 0;
rotateC = 0;
rotateD = -1;
break;
}
if (dontFlip) {
rotateC = -rotateC;
rotateD = -rotateD;
}
var offsetCanvasX, offsetCanvasY;
var width, height;
if (rotateA === 0) {
offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
width = Math.abs(viewBox[3] - viewBox[1]) * scale;
height = Math.abs(viewBox[2] - viewBox[0]) * scale;
} else {
offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
width = Math.abs(viewBox[2] - viewBox[0]) * scale;
height = Math.abs(viewBox[3] - viewBox[1]) * scale;
}
this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
this.width = width;
this.height = height;
}
_createClass(PageViewport, [{
key: "clone",
value: function clone() {
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref4$scale = _ref4.scale,
scale = _ref4$scale === void 0 ? this.scale : _ref4$scale,
_ref4$rotation = _ref4.rotation,
rotation = _ref4$rotation === void 0 ? this.rotation : _ref4$rotation,
_ref4$dontFlip = _ref4.dontFlip,
dontFlip = _ref4$dontFlip === void 0 ? false : _ref4$dontFlip;
return new PageViewport({
viewBox: this.viewBox.slice(),
scale: scale,
rotation: rotation,
offsetX: this.offsetX,
offsetY: this.offsetY,
dontFlip: dontFlip
});
}
}, {
key: "convertToViewportPoint",
value: function convertToViewportPoint(x, y) {
return _util.Util.applyTransform([x, y], this.transform);
}
}, {
key: "convertToViewportRectangle",
value: function convertToViewportRectangle(rect) {
var tl = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
var br = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
return [tl[0], tl[1], br[0], br[1]];
}
}, {
key: "convertToPdfPoint",
value: function convertToPdfPoint(x, y) {
return _util.Util.applyInverseTransform([x, y], this.transform);
}
}]);
return PageViewport;
}();
exports.PageViewport = PageViewport;
var RenderingCancelledException = function RenderingCancelledException() {
function RenderingCancelledException(msg, type) {
this.message = msg;
this.type = type;
}
RenderingCancelledException.prototype = new Error();
RenderingCancelledException.prototype.name = 'RenderingCancelledException';
RenderingCancelledException.constructor = RenderingCancelledException;
return RenderingCancelledException;
}();
exports.RenderingCancelledException = RenderingCancelledException;
var LinkTarget = {
NONE: 0,
SELF: 1,
BLANK: 2,
PARENT: 3,
TOP: 4
};
exports.LinkTarget = LinkTarget;
var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top'];
function addLinkAttributes(link) {
var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
url = _ref5.url,
target = _ref5.target,
rel = _ref5.rel;
link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : '';
if (url) {
var LinkTargetValues = Object.values(LinkTarget);
var targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE;
link.target = LinkTargetStringMap[targetIndex];
link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL;
}
}
function getFilenameFromUrl(url) {
var anchor = url.indexOf('#');
var query = url.indexOf('?');
var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
return url.substring(url.lastIndexOf('/', end) + 1, end);
}
var StatTimer =
/*#__PURE__*/
function () {
function StatTimer() {
var enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
_classCallCheck(this, StatTimer);
this.enabled = !!enable;
this.started = Object.create(null);
this.times = [];
}
_createClass(StatTimer, [{
key: "time",
value: function time(name) {
if (!this.enabled) {
return;
}
if (name in this.started) {
(0, _util.warn)('Timer is already running for ' + name);
}
this.started[name] = Date.now();
}
}, {
key: "timeEnd",
value: function timeEnd(name) {
if (!this.enabled) {
return;
}
if (!(name in this.started)) {
(0, _util.warn)('Timer has not been started for ' + name);
}
this.times.push({
'name': name,
'start': this.started[name],
'end': Date.now()
});
delete this.started[name];
}
}, {
key: "toString",
value: function toString() {
var times = this.times;
var out = '',
longest = 0;
for (var i = 0, ii = times.length; i < ii; ++i) {
var name = times[i]['name'];
if (name.length > longest) {
longest = name.length;
}
}
for (var _i = 0, _ii = times.length; _i < _ii; ++_i) {
var span = times[_i];
var duration = span.end - span.start;
out += "".concat(span['name'].padEnd(longest), " ").concat(duration, "ms\n");
}
return out;
}
}]);
return StatTimer;
}();
exports.StatTimer = StatTimer;
var DummyStatTimer =
/*#__PURE__*/
function () {
function DummyStatTimer() {
_classCallCheck(this, DummyStatTimer);
(0, _util.unreachable)('Cannot initialize DummyStatTimer.');
}
_createClass(DummyStatTimer, null, [{
key: "time",
value: function time(name) {}
}, {
key: "timeEnd",
value: function timeEnd(name) {}
}, {
key: "toString",
value: function toString() {
return '';
}
}]);
return DummyStatTimer;
}();
exports.DummyStatTimer = DummyStatTimer;
function loadScript(src) {
return new Promise(function (resolve, reject) {
var script = document.createElement('script');
script.src = src;
script.onload = resolve;
script.onerror = function () {
reject(new Error("Cannot load script at: ".concat(script.src)));
};
(document.head || document.documentElement).appendChild(script);
});
}
/***/ }),
/* 152 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FontLoader = exports.FontFaceObject = void 0;
var _regenerator = _interopRequireDefault(__w_pdfjs_require__(147));
var _util = __w_pdfjs_require__(1);
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 _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); }
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 BaseFontLoader =
/*#__PURE__*/
function () {
function BaseFontLoader(_ref) {
var docId = _ref.docId,
onUnsupportedFeature = _ref.onUnsupportedFeature;
_classCallCheck(this, BaseFontLoader);
if (this.constructor === BaseFontLoader) {
(0, _util.unreachable)('Cannot initialize BaseFontLoader.');
}
this.docId = docId;
this._onUnsupportedFeature = onUnsupportedFeature;
this.nativeFontFaces = [];
this.styleElement = null;
}
_createClass(BaseFontLoader, [{
key: "addNativeFontFace",
value: function addNativeFontFace(nativeFontFace) {
this.nativeFontFaces.push(nativeFontFace);
document.fonts.add(nativeFontFace);
}
}, {
key: "insertRule",
value: function insertRule(rule) {
var styleElement = this.styleElement;
if (!styleElement) {
styleElement = this.styleElement = document.createElement('style');
styleElement.id = "PDFJS_FONT_STYLE_TAG_".concat(this.docId);
document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement);
}
var styleSheet = styleElement.sheet;
styleSheet.insertRule(rule, styleSheet.cssRules.length);
}
}, {
key: "clear",
value: function clear() {
this.nativeFontFaces.forEach(function (nativeFontFace) {
document.fonts.delete(nativeFontFace);
});
this.nativeFontFaces.length = 0;
if (this.styleElement) {
this.styleElement.remove();
this.styleElement = null;
}
}
}, {
key: "bind",
value: function () {
var _bind = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee(font) {
var _this = this;
var nativeFontFace, rule;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!(font.attached || font.missingFile)) {
_context.next = 2;
break;
}
return _context.abrupt("return");
case 2:
font.attached = true;
if (!this.isFontLoadingAPISupported) {
_context.next = 19;
break;
}
nativeFontFace = font.createNativeFontFace();
if (!nativeFontFace) {
_context.next = 18;
break;
}
this.addNativeFontFace(nativeFontFace);
_context.prev = 7;
_context.next = 10;
return nativeFontFace.loaded;
case 10:
_context.next = 18;
break;
case 12:
_context.prev = 12;
_context.t0 = _context["catch"](7);
this._onUnsupportedFeature({
featureId: _util.UNSUPPORTED_FEATURES.font
});
(0, _util.warn)("Failed to load font '".concat(nativeFontFace.family, "': '").concat(_context.t0, "'."));
font.disableFontFace = true;
throw _context.t0;
case 18:
return _context.abrupt("return");
case 19:
rule = font.createFontFaceRule();
if (!rule) {
_context.next = 25;
break;
}
this.insertRule(rule);
if (!this.isSyncFontLoadingSupported) {
_context.next = 24;
break;
}
return _context.abrupt("return");
case 24:
return _context.abrupt("return", new Promise(function (resolve) {
var request = _this._queueLoadingCallback(resolve);
_this._prepareFontLoadEvent([rule], [font], request);
}));
case 25:
case "end":
return _context.stop();
}
}
}, _callee, this, [[7, 12]]);
}));
function bind(_x) {
return _bind.apply(this, arguments);
}
return bind;
}()
}, {
key: "_queueLoadingCallback",
value: function _queueLoadingCallback(callback) {
(0, _util.unreachable)('Abstract method `_queueLoadingCallback`.');
}
}, {
key: "_prepareFontLoadEvent",
value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {
(0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.');
}
}, {
key: "isFontLoadingAPISupported",
get: function get() {
(0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');
}
}, {
key: "isSyncFontLoadingSupported",
get: function get() {
(0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');
}
}, {
key: "_loadTestFont",
get: function get() {
(0, _util.unreachable)('Abstract method `_loadTestFont`.');
}
}]);
return BaseFontLoader;
}();
var FontLoader;
exports.FontLoader = FontLoader;
{
exports.FontLoader = FontLoader =
/*#__PURE__*/
function (_BaseFontLoader) {
_inherits(GenericFontLoader, _BaseFontLoader);
function GenericFontLoader(docId) {
var _this2;
_classCallCheck(this, GenericFontLoader);
_this2 = _possibleConstructorReturn(this, _getPrototypeOf(GenericFontLoader).call(this, docId));
_this2.loadingContext = {
requests: [],
nextRequestId: 0
};
_this2.loadTestFontId = 0;
return _this2;
}
_createClass(GenericFontLoader, [{
key: "_queueLoadingCallback",
value: function _queueLoadingCallback(callback) {
function completeRequest() {
(0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.');
request.done = true;
while (context.requests.length > 0 && context.requests[0].done) {
var otherRequest = context.requests.shift();
setTimeout(otherRequest.callback, 0);
}
}
var context = this.loadingContext;
var request = {
id: "pdfjs-font-loading-".concat(context.nextRequestId++),
done: false,
complete: completeRequest,
callback: callback
};
context.requests.push(request);
return request;
}
}, {
key: "_prepareFontLoadEvent",
value: function _prepareFontLoadEvent(rules, fonts, request) {
function int32(data, offset) {
return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
}
function spliceString(s, offset, remove, insert) {
var chunk1 = s.substring(0, offset);
var chunk2 = s.substring(offset + remove);
return chunk1 + insert + chunk2;
}
var i, ii;
var canvas = document.createElement('canvas');
canvas.width = 1;
canvas.height = 1;
var ctx = canvas.getContext('2d');
var called = 0;
function isFontReady(name, callback) {
called++;
if (called > 30) {
(0, _util.warn)('Load test font never loaded.');
callback();
return;
}
ctx.font = '30px ' + name;
ctx.fillText('.', 0, 20);
var imageData = ctx.getImageData(0, 0, 1, 1);
if (imageData.data[3] > 0) {
callback();
return;
}
setTimeout(isFontReady.bind(null, name, callback));
}
var loadTestFontId = "lt".concat(Date.now()).concat(this.loadTestFontId++);
var data = this._loadTestFont;
var COMMENT_OFFSET = 976;
data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
var CFF_CHECKSUM_OFFSET = 16;
var XXXX_VALUE = 0x58585858;
var checksum = int32(data, CFF_CHECKSUM_OFFSET);
for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
}
if (i < loadTestFontId.length) {
checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;
}
data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
var url = "url(data:font/opentype;base64,".concat(btoa(data), ");");
var rule = "@font-face {font-family:\"".concat(loadTestFontId, "\";src:").concat(url, "}");
this.insertRule(rule);
var names = [];
for (i = 0, ii = fonts.length; i < ii; i++) {
names.push(fonts[i].loadedName);
}
names.push(loadTestFontId);
var div = document.createElement('div');
div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;');
for (i = 0, ii = names.length; i < ii; ++i) {
var span = document.createElement('span');
span.textContent = 'Hi';
span.style.fontFamily = names[i];
div.appendChild(span);
}
document.body.appendChild(div);
isFontReady(loadTestFontId, function () {
document.body.removeChild(div);
request.complete();
});
}
}, {
key: "isFontLoadingAPISupported",
get: function get() {
var supported = typeof document !== 'undefined' && !!document.fonts;
if (supported && typeof navigator !== 'undefined') {
var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
if (m && m[1] < 63) {
supported = false;
}
}
return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported);
}
}, {
key: "isSyncFontLoadingSupported",
get: function get() {
var supported = false;
if (typeof navigator === 'undefined') {
supported = true;
} else {
var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
if (m && m[1] >= 14) {
supported = true;
}
}
return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported);
}
}, {
key: "_loadTestFont",
get: function get() {
var getLoadTestFont = function getLoadTestFont() {
return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA' + 'FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA' + 'ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA' + 'AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1' + 'AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD' + '6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM' + 'AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D' + 'IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA' + 'AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA' + 'AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB' + 'AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY' + 'AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA' + 'AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA' + 'AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC' + 'AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3' + 'Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj' + 'FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==');
};
return (0, _util.shadow)(this, '_loadTestFont', getLoadTestFont());
}
}]);
return GenericFontLoader;
}(BaseFontLoader);
}
var IsEvalSupportedCached = {
get value() {
return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
}
};
var FontFaceObject =
/*#__PURE__*/
function () {
function FontFaceObject(translatedData, _ref2) {
var _ref2$isEvalSupported = _ref2.isEvalSupported,
isEvalSupported = _ref2$isEvalSupported === void 0 ? true : _ref2$isEvalSupported,
_ref2$disableFontFace = _ref2.disableFontFace,
disableFontFace = _ref2$disableFontFace === void 0 ? false : _ref2$disableFontFace,
_ref2$ignoreErrors = _ref2.ignoreErrors,
ignoreErrors = _ref2$ignoreErrors === void 0 ? false : _ref2$ignoreErrors,
_ref2$onUnsupportedFe = _ref2.onUnsupportedFeature,
onUnsupportedFeature = _ref2$onUnsupportedFe === void 0 ? null : _ref2$onUnsupportedFe,
_ref2$fontRegistry = _ref2.fontRegistry,
fontRegistry = _ref2$fontRegistry === void 0 ? null : _ref2$fontRegistry;
_classCallCheck(this, FontFaceObject);
this.compiledGlyphs = Object.create(null);
for (var i in translatedData) {
this[i] = translatedData[i];
}
this.isEvalSupported = isEvalSupported !== false;
this.disableFontFace = disableFontFace === true;
this.ignoreErrors = ignoreErrors === true;
this._onUnsupportedFeature = onUnsupportedFeature;
this.fontRegistry = fontRegistry;
}
_createClass(FontFaceObject, [{
key: "createNativeFontFace",
value: function createNativeFontFace() {
if (!this.data || this.disableFontFace) {
return null;
}
var nativeFontFace = new FontFace(this.loadedName, this.data, {});
if (this.fontRegistry) {
this.fontRegistry.registerFont(this);
}
return nativeFontFace;
}
}, {
key: "createFontFaceRule",
value: function createFontFaceRule() {
if (!this.data || this.disableFontFace) {
return null;
}
var data = (0, _util.bytesToString)(new Uint8Array(this.data));
var url = "url(data:".concat(this.mimetype, ";base64,").concat(btoa(data), ");");
var rule = "@font-face {font-family:\"".concat(this.loadedName, "\";src:").concat(url, "}");
if (this.fontRegistry) {
this.fontRegistry.registerFont(this, url);
}
return rule;
}
}, {
key: "getPathGenerator",
value: function getPathGenerator(objs, character) {
if (this.compiledGlyphs[character] !== undefined) {
return this.compiledGlyphs[character];
}
var cmds, current;
try {
cmds = objs.get(this.loadedName + '_path_' + character);
} catch (ex) {
if (!this.ignoreErrors) {
throw ex;
}
if (this._onUnsupportedFeature) {
this._onUnsupportedFeature({
featureId: _util.UNSUPPORTED_FEATURES.font
});
}
(0, _util.warn)("getPathGenerator - ignoring character: \"".concat(ex, "\"."));
return this.compiledGlyphs[character] = function (c, size) {};
}
if (this.isEvalSupported && IsEvalSupportedCached.value) {
var args,
js = '';
for (var i = 0, ii = cmds.length; i < ii; i++) {
current = cmds[i];
if (current.args !== undefined) {
args = current.args.join(',');
} else {
args = '';
}
js += 'c.' + current.cmd + '(' + args + ');\n';
}
return this.compiledGlyphs[character] = new Function('c', 'size', js);
}
return this.compiledGlyphs[character] = function (c, size) {
for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {
current = cmds[_i];
if (current.cmd === 'scale') {
current.args = [size, -size];
}
c[current.cmd].apply(c, current.args);
}
};
}
}]);
return FontFaceObject;
}();
exports.FontFaceObject = FontFaceObject;
/***/ }),
/* 153 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
var compatibilityParams = Object.create(null);
{
var isNodeJS = __w_pdfjs_require__(4);
var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || '';
var isIE = /Trident/.test(userAgent);
var isIOSChrome = /CriOS/.test(userAgent);
(function checkOnBlobSupport() {
if (isIE || isIOSChrome) {
compatibilityParams.disableCreateObjectURL = true;
}
})();
(function checkFontFaceAndImage() {
if (isNodeJS()) {
compatibilityParams.disableFontFace = true;
compatibilityParams.nativeImageDecoderSupport = 'none';
}
})();
}
exports.apiCompatibilityParams = Object.freeze(compatibilityParams);
/***/ }),
/* 154 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CanvasGraphics = void 0;
var _util = __w_pdfjs_require__(1);
var _pattern_helper = __w_pdfjs_require__(155);
var MIN_FONT_SIZE = 16;
var MAX_FONT_SIZE = 100;
var MAX_GROUP_SIZE = 4096;
var MIN_WIDTH_FACTOR = 0.65;
var COMPILE_TYPE3_GLYPHS = true;
var MAX_SIZE_TO_COMPILE = 1000;
var FULL_CHUNK_HEIGHT = 16;
var IsLittleEndianCached = {
get value() {
return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)());
}
};
function addContextCurrentTransform(ctx) {
if (!ctx.mozCurrentTransform) {
ctx._originalSave = ctx.save;
ctx._originalRestore = ctx.restore;
ctx._originalRotate = ctx.rotate;
ctx._originalScale = ctx.scale;
ctx._originalTranslate = ctx.translate;
ctx._originalTransform = ctx.transform;
ctx._originalSetTransform = ctx.setTransform;
ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];
ctx._transformStack = [];
Object.defineProperty(ctx, 'mozCurrentTransform', {
get: function getCurrentTransform() {
return this._transformMatrix;
}
});
Object.defineProperty(ctx, 'mozCurrentTransformInverse', {
get: function getCurrentTransformInverse() {
var m = this._transformMatrix;
var a = m[0],
b = m[1],
c = m[2],
d = m[3],
e = m[4],
f = m[5];
var ad_bc = a * d - b * c;
var bc_ad = b * c - a * d;
return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];
}
});
ctx.save = function ctxSave() {
var old = this._transformMatrix;
this._transformStack.push(old);
this._transformMatrix = old.slice(0, 6);
this._originalSave();
};
ctx.restore = function ctxRestore() {
var prev = this._transformStack.pop();
if (prev) {
this._transformMatrix = prev;
this._originalRestore();
}
};
ctx.translate = function ctxTranslate(x, y) {
var m = this._transformMatrix;
m[4] = m[0] * x + m[2] * y + m[4];
m[5] = m[1] * x + m[3] * y + m[5];
this._originalTranslate(x, y);
};
ctx.scale = function ctxScale(x, y) {
var m = this._transformMatrix;
m[0] = m[0] * x;
m[1] = m[1] * x;
m[2] = m[2] * y;
m[3] = m[3] * y;
this._originalScale(x, y);
};
ctx.transform = function ctxTransform(a, b, c, d, e, f) {
var m = this._transformMatrix;
this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];
ctx._originalTransform(a, b, c, d, e, f);
};
ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
this._transformMatrix = [a, b, c, d, e, f];
ctx._originalSetTransform(a, b, c, d, e, f);
};
ctx.rotate = function ctxRotate(angle) {
var cosValue = Math.cos(angle);
var sinValue = Math.sin(angle);
var m = this._transformMatrix;
this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];
this._originalRotate(angle);
};
}
}
var CachedCanvases = function CachedCanvasesClosure() {
function CachedCanvases(canvasFactory) {
this.canvasFactory = canvasFactory;
this.cache = Object.create(null);
}
CachedCanvases.prototype = {
getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {
var canvasEntry;
if (this.cache[id] !== undefined) {
canvasEntry = this.cache[id];
this.canvasFactory.reset(canvasEntry, width, height);
canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);
} else {
canvasEntry = this.canvasFactory.create(width, height);
this.cache[id] = canvasEntry;
}
if (trackTransform) {
addContextCurrentTransform(canvasEntry.context);
}
return canvasEntry;
},
clear: function clear() {
for (var id in this.cache) {
var canvasEntry = this.cache[id];
this.canvasFactory.destroy(canvasEntry);
delete this.cache[id];
}
}
};
return CachedCanvases;
}();
function compileType3Glyph(imgData) {
var POINT_TO_PROCESS_LIMIT = 1000;
var width = imgData.width,
height = imgData.height;
var i,
j,
j0,
width1 = width + 1;
var points = new Uint8Array(width1 * (height + 1));
var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
var lineSize = width + 7 & ~7,
data0 = imgData.data;
var data = new Uint8Array(lineSize * height),
pos = 0,
ii;
for (i = 0, ii = data0.length; i < ii; i++) {
var mask = 128,
elem = data0[i];
while (mask > 0) {
data[pos++] = elem & mask ? 0 : 255;
mask >>= 1;
}
}
var count = 0;
pos = 0;
if (data[pos] !== 0) {
points[0] = 1;
++count;
}
for (j = 1; j < width; j++) {
if (data[pos] !== data[pos + 1]) {
points[j] = data[pos] ? 2 : 1;
++count;
}
pos++;
}
if (data[pos] !== 0) {
points[j] = 2;
++count;
}
for (i = 1; i < height; i++) {
pos = i * lineSize;
j0 = i * width1;
if (data[pos - lineSize] !== data[pos]) {
points[j0] = data[pos] ? 1 : 8;
++count;
}
var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
for (j = 1; j < width; j++) {
sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
if (POINT_TYPES[sum]) {
points[j0 + j] = POINT_TYPES[sum];
++count;
}
pos++;
}
if (data[pos - lineSize] !== data[pos]) {
points[j0 + j] = data[pos] ? 2 : 4;
++count;
}
if (count > POINT_TO_PROCESS_LIMIT) {
return null;
}
}
pos = lineSize * (height - 1);
j0 = i * width1;
if (data[pos] !== 0) {
points[j0] = 8;
++count;
}
for (j = 1; j < width; j++) {
if (data[pos] !== data[pos + 1]) {
points[j0 + j] = data[pos] ? 4 : 8;
++count;
}
pos++;
}
if (data[pos] !== 0) {
points[j0 + j] = 4;
++count;
}
if (count > POINT_TO_PROCESS_LIMIT) {
return null;
}
var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
var outlines = [];
for (i = 0; count && i <= height; i++) {
var p = i * width1;
var end = p + width;
while (p < end && !points[p]) {
p++;
}
if (p === end) {
continue;
}
var coords = [p % width1, i];
var type = points[p],
p0 = p,
pp;
do {
var step = steps[type];
do {
p += step;
} while (!points[p]);
pp = points[p];
if (pp !== 5 && pp !== 10) {
type = pp;
points[p] = 0;
} else {
type = pp & 0x33 * type >> 4;
points[p] &= type >> 2 | type << 2;
}
coords.push(p % width1);
coords.push(p / width1 | 0);
--count;
} while (p0 !== p);
outlines.push(coords);
--i;
}
var drawOutline = function drawOutline(c) {
c.save();
c.scale(1 / width, -1 / height);
c.translate(0, -height);
c.beginPath();
for (var i = 0, ii = outlines.length; i < ii; i++) {
var o = outlines[i];
c.moveTo(o[0], o[1]);
for (var j = 2, jj = o.length; j < jj; j += 2) {
c.lineTo(o[j], o[j + 1]);
}
}
c.fill();
c.beginPath();
c.restore();
};
return drawOutline;
}
var CanvasExtraState = function CanvasExtraStateClosure() {
function CanvasExtraState() {
this.alphaIsShape = false;
this.fontSize = 0;
this.fontSizeScale = 1;
this.textMatrix = _util.IDENTITY_MATRIX;
this.textMatrixScale = 1;
this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
this.leading = 0;
this.x = 0;
this.y = 0;
this.lineX = 0;
this.lineY = 0;
this.charSpacing = 0;
this.wordSpacing = 0;
this.textHScale = 1;
this.textRenderingMode = _util.TextRenderingMode.FILL;
this.textRise = 0;
this.fillColor = '#000000';
this.strokeColor = '#000000';
this.patternFill = false;
this.fillAlpha = 1;
this.strokeAlpha = 1;
this.lineWidth = 1;
this.activeSMask = null;
this.resumeSMaskCtx = null;
}
CanvasExtraState.prototype = {
clone: function CanvasExtraState_clone() {
return Object.create(this);
},
setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {
this.x = x;
this.y = y;
}
};
return CanvasExtraState;
}();
var CanvasGraphics = function CanvasGraphicsClosure() {
var EXECUTION_TIME = 15;
var EXECUTION_STEPS = 10;
function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer) {
this.ctx = canvasCtx;
this.current = new CanvasExtraState();
this.stateStack = [];
this.pendingClip = null;
this.pendingEOFill = false;
this.res = null;
this.xobjs = null;
this.commonObjs = commonObjs;
this.objs = objs;
this.canvasFactory = canvasFactory;
this.webGLContext = webGLContext;
this.imageLayer = imageLayer;
this.groupStack = [];
this.processingType3 = null;
this.baseTransform = null;
this.baseTransformStack = [];
this.groupLevel = 0;
this.smaskStack = [];
this.smaskCounter = 0;
this.tempSMask = null;
this.cachedCanvases = new CachedCanvases(this.canvasFactory);
if (canvasCtx) {
addContextCurrentTransform(canvasCtx);
}
this._cachedGetSinglePixelWidth = null;
}
function putBinaryImageData(ctx, imgData) {
if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {
ctx.putImageData(imgData, 0, 0);
return;
}
var height = imgData.height,
width = imgData.width;
var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
var srcPos = 0,
destPos;
var src = imgData.data;
var dest = chunkImgData.data;
var i, j, thisChunkHeight, elemsInThisChunk;
if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
var srcLength = src.byteLength;
var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
var dest32DataLength = dest32.length;
var fullSrcDiff = width + 7 >> 3;
var white = 0xFFFFFFFF;
var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;
for (i = 0; i < totalChunks; i++) {
thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
destPos = 0;
for (j = 0; j < thisChunkHeight; j++) {
var srcDiff = srcLength - srcPos;
var k = 0;
var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
var kEndUnrolled = kEnd & ~7;
var mask = 0;
var srcByte = 0;
for (; k < kEndUnrolled; k += 8) {
srcByte = src[srcPos++];
dest32[destPos++] = srcByte & 128 ? white : black;
dest32[destPos++] = srcByte & 64 ? white : black;
dest32[destPos++] = srcByte & 32 ? white : black;
dest32[destPos++] = srcByte & 16 ? white : black;
dest32[destPos++] = srcByte & 8 ? white : black;
dest32[destPos++] = srcByte & 4 ? white : black;
dest32[destPos++] = srcByte & 2 ? white : black;
dest32[destPos++] = srcByte & 1 ? white : black;
}
for (; k < kEnd; k++) {
if (mask === 0) {
srcByte = src[srcPos++];
mask = 128;
}
dest32[destPos++] = srcByte & mask ? white : black;
mask >>= 1;
}
}
while (destPos < dest32DataLength) {
dest32[destPos++] = 0;
}
ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
}
} else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {
j = 0;
elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
for (i = 0; i < fullChunks; i++) {
dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
srcPos += elemsInThisChunk;
ctx.putImageData(chunkImgData, 0, j);
j += FULL_CHUNK_HEIGHT;
}
if (i < totalChunks) {
elemsInThisChunk = width * partialChunkHeight * 4;
dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
ctx.putImageData(chunkImgData, 0, j);
}
} else if (imgData.kind === _util.ImageKind.RGB_24BPP) {
thisChunkHeight = FULL_CHUNK_HEIGHT;
elemsInThisChunk = width * thisChunkHeight;
for (i = 0; i < totalChunks; i++) {
if (i >= fullChunks) {
thisChunkHeight = partialChunkHeight;
elemsInThisChunk = width * thisChunkHeight;
}
destPos = 0;
for (j = elemsInThisChunk; j--;) {
dest[destPos++] = src[srcPos++];
dest[destPos++] = src[srcPos++];
dest[destPos++] = src[srcPos++];
dest[destPos++] = 255;
}
ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
}
} else {
throw new Error("bad image kind: ".concat(imgData.kind));
}
}
function putBinaryImageMask(ctx, imgData) {
var height = imgData.height,
width = imgData.width;
var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
var srcPos = 0;
var src = imgData.data;
var dest = chunkImgData.data;
for (var i = 0; i < totalChunks; i++) {
var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
var destPos = 3;
for (var j = 0; j < thisChunkHeight; j++) {
var mask = 0;
for (var k = 0; k < width; k++) {
if (!mask) {
var elem = src[srcPos++];
mask = 128;
}
dest[destPos] = elem & mask ? 0 : 255;
destPos += 4;
mask >>= 1;
}
}
ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
}
}
function copyCtxState(sourceCtx, destCtx) {
var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', 'globalCompositeOperation', 'font'];
for (var i = 0, ii = properties.length; i < ii; i++) {
var property = properties[i];
if (sourceCtx[property] !== undefined) {
destCtx[property] = sourceCtx[property];
}
}
if (sourceCtx.setLineDash !== undefined) {
destCtx.setLineDash(sourceCtx.getLineDash());
destCtx.lineDashOffset = sourceCtx.lineDashOffset;
}
}
function resetCtxToDefault(ctx) {
ctx.strokeStyle = '#000000';
ctx.fillStyle = '#000000';
ctx.fillRule = 'nonzero';
ctx.globalAlpha = 1;
ctx.lineWidth = 1;
ctx.lineCap = 'butt';
ctx.lineJoin = 'miter';
ctx.miterLimit = 10;
ctx.globalCompositeOperation = 'source-over';
ctx.font = '10px sans-serif';
if (ctx.setLineDash !== undefined) {
ctx.setLineDash([]);
ctx.lineDashOffset = 0;
}
}
function composeSMaskBackdrop(bytes, r0, g0, b0) {
var length = bytes.length;
for (var i = 3; i < length; i += 4) {
var alpha = bytes[i];
if (alpha === 0) {
bytes[i - 3] = r0;
bytes[i - 2] = g0;
bytes[i - 1] = b0;
} else if (alpha < 255) {
var alpha_ = 255 - alpha;
bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
}
}
}
function composeSMaskAlpha(maskData, layerData, transferMap) {
var length = maskData.length;
var scale = 1 / 255;
for (var i = 3; i < length; i += 4) {
var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
layerData[i] = layerData[i] * alpha * scale | 0;
}
}
function composeSMaskLuminosity(maskData, layerData, transferMap) {
var length = maskData.length;
for (var i = 3; i < length; i += 4) {
var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
}
}
function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
var hasBackdrop = !!backdrop;
var r0 = hasBackdrop ? backdrop[0] : 0;
var g0 = hasBackdrop ? backdrop[1] : 0;
var b0 = hasBackdrop ? backdrop[2] : 0;
var composeFn;
if (subtype === 'Luminosity') {
composeFn = composeSMaskLuminosity;
} else {
composeFn = composeSMaskAlpha;
}
var PIXELS_TO_PROCESS = 1048576;
var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
for (var row = 0; row < height; row += chunkSize) {
var chunkHeight = Math.min(chunkSize, height - row);
var maskData = maskCtx.getImageData(0, row, width, chunkHeight);
var layerData = layerCtx.getImageData(0, row, width, chunkHeight);
if (hasBackdrop) {
composeSMaskBackdrop(maskData.data, r0, g0, b0);
}
composeFn(maskData.data, layerData.data, transferMap);
maskCtx.putImageData(layerData, 0, row);
}
}
function composeSMask(ctx, smask, layerCtx, webGLContext) {
var mask = smask.canvas;
var maskCtx = smask.context;
ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
var backdrop = smask.backdrop || null;
if (!smask.transferMap && webGLContext.isEnabled) {
var composed = webGLContext.composeSMask({
layer: layerCtx.canvas,
mask: mask,
properties: {
subtype: smask.subtype,
backdrop: backdrop
}
});
ctx.setTransform(1, 0, 0, 1, 0, 0);
ctx.drawImage(composed, smask.offsetX, smask.offsetY);
return;
}
genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap);
ctx.drawImage(mask, 0, 0);
}
var LINE_CAP_STYLES = ['butt', 'round', 'square'];
var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
var NORMAL_CLIP = {};
var EO_CLIP = {};
CanvasGraphics.prototype = {
beginDrawing: function beginDrawing(_ref) {
var transform = _ref.transform,
viewport = _ref.viewport,
_ref$transparency = _ref.transparency,
transparency = _ref$transparency === void 0 ? false : _ref$transparency,
_ref$background = _ref.background,
background = _ref$background === void 0 ? null : _ref$background;
var width = this.ctx.canvas.width;
var height = this.ctx.canvas.height;
this.ctx.save();
this.ctx.fillStyle = background || 'rgb(255, 255, 255)';
this.ctx.fillRect(0, 0, width, height);
this.ctx.restore();
if (transparency) {
var transparentCanvas = this.cachedCanvases.getCanvas('transparent', width, height, true);
this.compositeCtx = this.ctx;
this.transparentCanvas = transparentCanvas.canvas;
this.ctx = transparentCanvas.context;
this.ctx.save();
this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
}
this.ctx.save();
resetCtxToDefault(this.ctx);
if (transform) {
this.ctx.transform.apply(this.ctx, transform);
}
this.ctx.transform.apply(this.ctx, viewport.transform);
this.baseTransform = this.ctx.mozCurrentTransform.slice();
if (this.imageLayer) {
this.imageLayer.beginLayout();
}
},
executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
var argsArray = operatorList.argsArray;
var fnArray = operatorList.fnArray;
var i = executionStartIdx || 0;
var argsArrayLen = argsArray.length;
if (argsArrayLen === i) {
return i;
}
var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function';
var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
var steps = 0;
var commonObjs = this.commonObjs;
var objs = this.objs;
var fnId;
while (true) {
if (stepper !== undefined && i === stepper.nextBreakPoint) {
stepper.breakIt(i, continueCallback);
return i;
}
fnId = fnArray[i];
if (fnId !== _util.OPS.dependency) {
this[fnId].apply(this, argsArray[i]);
} else {
var deps = argsArray[i];
for (var n = 0, nn = deps.length; n < nn; n++) {
var depObjId = deps[n];
var common = depObjId[0] === 'g' && depObjId[1] === '_';
var objsPool = common ? commonObjs : objs;
if (!objsPool.has(depObjId)) {
objsPool.get(depObjId, continueCallback);
return i;
}
}
}
i++;
if (i === argsArrayLen) {
return i;
}
if (chunkOperations && ++steps > EXECUTION_STEPS) {
if (Date.now() > endTime) {
continueCallback();
return i;
}
steps = 0;
}
}
},
endDrawing: function CanvasGraphics_endDrawing() {
if (this.current.activeSMask !== null) {
this.endSMaskGroup();
}
this.ctx.restore();
if (this.transparentCanvas) {
this.ctx = this.compositeCtx;
this.ctx.save();
this.ctx.setTransform(1, 0, 0, 1, 0, 0);
this.ctx.drawImage(this.transparentCanvas, 0, 0);
this.ctx.restore();
this.transparentCanvas = null;
}
this.cachedCanvases.clear();
this.webGLContext.clear();
if (this.imageLayer) {
this.imageLayer.endLayout();
}
},
setLineWidth: function CanvasGraphics_setLineWidth(width) {
this.current.lineWidth = width;
this.ctx.lineWidth = width;
},
setLineCap: function CanvasGraphics_setLineCap(style) {
this.ctx.lineCap = LINE_CAP_STYLES[style];
},
setLineJoin: function CanvasGraphics_setLineJoin(style) {
this.ctx.lineJoin = LINE_JOIN_STYLES[style];
},
setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {
this.ctx.miterLimit = limit;
},
setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
var ctx = this.ctx;
if (ctx.setLineDash !== undefined) {
ctx.setLineDash(dashArray);
ctx.lineDashOffset = dashPhase;
}
},
setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {},
setFlatness: function CanvasGraphics_setFlatness(flatness) {},
setGState: function CanvasGraphics_setGState(states) {
for (var i = 0, ii = states.length; i < ii; i++) {
var state = states[i];
var key = state[0];
var value = state[1];
switch (key) {
case 'LW':
this.setLineWidth(value);
break;
case 'LC':
this.setLineCap(value);
break;
case 'LJ':
this.setLineJoin(value);
break;
case 'ML':
this.setMiterLimit(value);
break;
case 'D':
this.setDash(value[0], value[1]);
break;
case 'RI':
this.setRenderingIntent(value);
break;
case 'FL':
this.setFlatness(value);
break;
case 'Font':
this.setFont(value[0], value[1]);
break;
case 'CA':
this.current.strokeAlpha = state[1];
break;
case 'ca':
this.current.fillAlpha = state[1];
this.ctx.globalAlpha = state[1];
break;
case 'BM':
this.ctx.globalCompositeOperation = value;
break;
case 'SMask':
if (this.current.activeSMask) {
if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {
this.suspendSMaskGroup();
} else {
this.endSMaskGroup();
}
}
this.current.activeSMask = value ? this.tempSMask : null;
if (this.current.activeSMask) {
this.beginSMaskGroup();
}
this.tempSMask = null;
break;
}
}
},
beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
var activeSMask = this.current.activeSMask;
var drawnWidth = activeSMask.canvas.width;
var drawnHeight = activeSMask.canvas.height;
var cacheId = 'smaskGroupAt' + this.groupLevel;
var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
var currentCtx = this.ctx;
var currentTransform = currentCtx.mozCurrentTransform;
this.ctx.save();
var groupCtx = scratchCanvas.context;
groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
groupCtx.transform.apply(groupCtx, currentTransform);
activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;
copyCtxState(currentCtx, groupCtx);
this.ctx = groupCtx;
this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);
this.groupStack.push(currentCtx);
this.groupLevel++;
},
suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
var groupCtx = this.ctx;
this.groupLevel--;
this.ctx = this.groupStack.pop();
composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
this.ctx.restore();
this.ctx.save();
copyCtxState(groupCtx, this.ctx);
this.current.resumeSMaskCtx = groupCtx;
var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
this.ctx.transform.apply(this.ctx, deltaTransform);
groupCtx.save();
groupCtx.setTransform(1, 0, 0, 1, 0, 0);
groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
groupCtx.restore();
},
resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
var groupCtx = this.current.resumeSMaskCtx;
var currentCtx = this.ctx;
this.ctx = groupCtx;
this.groupStack.push(currentCtx);
this.groupLevel++;
},
endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
var groupCtx = this.ctx;
this.groupLevel--;
this.ctx = this.groupStack.pop();
composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
this.ctx.restore();
copyCtxState(groupCtx, this.ctx);
var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
this.ctx.transform.apply(this.ctx, deltaTransform);
},
save: function CanvasGraphics_save() {
this.ctx.save();
var old = this.current;
this.stateStack.push(old);
this.current = old.clone();
this.current.resumeSMaskCtx = null;
},
restore: function CanvasGraphics_restore() {
if (this.current.resumeSMaskCtx) {
this.resumeSMaskGroup();
}
if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {
this.endSMaskGroup();
}
if (this.stateStack.length !== 0) {
this.current = this.stateStack.pop();
this.ctx.restore();
this.pendingClip = null;
this._cachedGetSinglePixelWidth = null;
}
},
transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
this.ctx.transform(a, b, c, d, e, f);
this._cachedGetSinglePixelWidth = null;
},
constructPath: function CanvasGraphics_constructPath(ops, args) {
var ctx = this.ctx;
var current = this.current;
var x = current.x,
y = current.y;
for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {
switch (ops[i] | 0) {
case _util.OPS.rectangle:
x = args[j++];
y = args[j++];
var width = args[j++];
var height = args[j++];
if (width === 0) {
width = this.getSinglePixelWidth();
}
if (height === 0) {
height = this.getSinglePixelWidth();
}
var xw = x + width;
var yh = y + height;
this.ctx.moveTo(x, y);
this.ctx.lineTo(xw, y);
this.ctx.lineTo(xw, yh);
this.ctx.lineTo(x, yh);
this.ctx.lineTo(x, y);
this.ctx.closePath();
break;
case _util.OPS.moveTo:
x = args[j++];
y = args[j++];
ctx.moveTo(x, y);
break;
case _util.OPS.lineTo:
x = args[j++];
y = args[j++];
ctx.lineTo(x, y);
break;
case _util.OPS.curveTo:
x = args[j + 4];
y = args[j + 5];
ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
j += 6;
break;
case _util.OPS.curveTo2:
ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
x = args[j + 2];
y = args[j + 3];
j += 4;
break;
case _util.OPS.curveTo3:
x = args[j + 2];
y = args[j + 3];
ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
j += 4;
break;
case _util.OPS.closePath:
ctx.closePath();
break;
}
}
current.setCurrentPoint(x, y);
},
closePath: function CanvasGraphics_closePath() {
this.ctx.closePath();
},
stroke: function CanvasGraphics_stroke(consumePath) {
consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
var ctx = this.ctx;
var strokeColor = this.current.strokeColor;
ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);
ctx.globalAlpha = this.current.strokeAlpha;
if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') {
ctx.save();
ctx.strokeStyle = strokeColor.getPattern(ctx, this);
ctx.stroke();
ctx.restore();
} else {
ctx.stroke();
}
if (consumePath) {
this.consumePath();
}
ctx.globalAlpha = this.current.fillAlpha;
},
closeStroke: function CanvasGraphics_closeStroke() {
this.closePath();
this.stroke();
},
fill: function CanvasGraphics_fill(consumePath) {
consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
var ctx = this.ctx;
var fillColor = this.current.fillColor;
var isPatternFill = this.current.patternFill;
var needRestore = false;
if (isPatternFill) {
ctx.save();
if (this.baseTransform) {
ctx.setTransform.apply(ctx, this.baseTransform);
}
ctx.fillStyle = fillColor.getPattern(ctx, this);
needRestore = true;
}
if (this.pendingEOFill) {
ctx.fill('evenodd');
this.pendingEOFill = false;
} else {
ctx.fill();
}
if (needRestore) {
ctx.restore();
}
if (consumePath) {
this.consumePath();
}
},
eoFill: function CanvasGraphics_eoFill() {
this.pendingEOFill = true;
this.fill();
},
fillStroke: function CanvasGraphics_fillStroke() {
this.fill(false);
this.stroke(false);
this.consumePath();
},
eoFillStroke: function CanvasGraphics_eoFillStroke() {
this.pendingEOFill = true;
this.fillStroke();
},
closeFillStroke: function CanvasGraphics_closeFillStroke() {
this.closePath();
this.fillStroke();
},
closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
this.pendingEOFill = true;
this.closePath();
this.fillStroke();
},
endPath: function CanvasGraphics_endPath() {
this.consumePath();
},
clip: function CanvasGraphics_clip() {
this.pendingClip = NORMAL_CLIP;
},
eoClip: function CanvasGraphics_eoClip() {
this.pendingClip = EO_CLIP;
},
beginText: function CanvasGraphics_beginText() {
this.current.textMatrix = _util.IDENTITY_MATRIX;
this.current.textMatrixScale = 1;
this.current.x = this.current.lineX = 0;
this.current.y = this.current.lineY = 0;
},
endText: function CanvasGraphics_endText() {
var paths = this.pendingTextPaths;
var ctx = this.ctx;
if (paths === undefined) {
ctx.beginPath();
return;
}
ctx.save();
ctx.beginPath();
for (var i = 0; i < paths.length; i++) {
var path = paths[i];
ctx.setTransform.apply(ctx, path.transform);
ctx.translate(path.x, path.y);
path.addToPath(ctx, path.fontSize);
}
ctx.restore();
ctx.clip();
ctx.beginPath();
delete this.pendingTextPaths;
},
setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {
this.current.charSpacing = spacing;
},
setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {
this.current.wordSpacing = spacing;
},
setHScale: function CanvasGraphics_setHScale(scale) {
this.current.textHScale = scale / 100;
},
setLeading: function CanvasGraphics_setLeading(leading) {
this.current.leading = -leading;
},
setFont: function CanvasGraphics_setFont(fontRefName, size) {
var fontObj = this.commonObjs.get(fontRefName);
var current = this.current;
if (!fontObj) {
throw new Error("Can't find font for ".concat(fontRefName));
}
current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
(0, _util.warn)('Invalid font matrix for font ' + fontRefName);
}
if (size < 0) {
size = -size;
current.fontDirection = -1;
} else {
current.fontDirection = 1;
}
this.current.font = fontObj;
this.current.fontSize = size;
if (fontObj.isType3Font) {
return;
}
var name = fontObj.loadedName || 'sans-serif';
var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal';
var italic = fontObj.italic ? 'italic' : 'normal';
var typeface = "\"".concat(name, "\", ").concat(fontObj.fallbackName);
var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;
this.current.fontSizeScale = size / browserFontSize;
this.ctx.font = "".concat(italic, " ").concat(bold, " ").concat(browserFontSize, "px ").concat(typeface);
},
setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {
this.current.textRenderingMode = mode;
},
setTextRise: function CanvasGraphics_setTextRise(rise) {
this.current.textRise = rise;
},
moveText: function CanvasGraphics_moveText(x, y) {
this.current.x = this.current.lineX += x;
this.current.y = this.current.lineY += y;
},
setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {
this.setLeading(-y);
this.moveText(x, y);
},
setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
this.current.textMatrix = [a, b, c, d, e, f];
this.current.textMatrixScale = Math.sqrt(a * a + b * b);
this.current.x = this.current.lineX = 0;
this.current.y = this.current.lineY = 0;
},
nextLine: function CanvasGraphics_nextLine() {
this.moveText(0, this.current.leading);
},
paintChar: function paintChar(character, x, y, patternTransform) {
var ctx = this.ctx;
var current = this.current;
var font = current.font;
var textRenderingMode = current.textRenderingMode;
var fontSize = current.fontSize / current.fontSizeScale;
var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
var patternFill = current.patternFill && font.data;
var addToPath;
if (font.disableFontFace || isAddToPathSet || patternFill) {
addToPath = font.getPathGenerator(this.commonObjs, character);
}
if (font.disableFontFace || patternFill) {
ctx.save();
ctx.translate(x, y);
ctx.beginPath();
addToPath(ctx, fontSize);
if (patternTransform) {
ctx.setTransform.apply(ctx, patternTransform);
}
if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
ctx.fill();
}
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
ctx.stroke();
}
ctx.restore();
} else {
if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
ctx.fillText(character, x, y);
}
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
ctx.strokeText(character, x, y);
}
}
if (isAddToPathSet) {
var paths = this.pendingTextPaths || (this.pendingTextPaths = []);
paths.push({
transform: ctx.mozCurrentTransform,
x: x,
y: y,
fontSize: fontSize,
addToPath: addToPath
});
}
},
get isFontSubpixelAAEnabled() {
var ctx = this.canvasFactory.create(10, 10).context;
ctx.scale(1.5, 1);
ctx.fillText('I', 0, 10);
var data = ctx.getImageData(0, 0, 10, 10).data;
var enabled = false;
for (var i = 3; i < data.length; i += 4) {
if (data[i] > 0 && data[i] < 255) {
enabled = true;
break;
}
}
return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled);
},
showText: function CanvasGraphics_showText(glyphs) {
var current = this.current;
var font = current.font;
if (font.isType3Font) {
return this.showType3Text(glyphs);
}
var fontSize = current.fontSize;
if (fontSize === 0) {
return;
}
var ctx = this.ctx;
var fontSizeScale = current.fontSizeScale;
var charSpacing = current.charSpacing;
var wordSpacing = current.wordSpacing;
var fontDirection = current.fontDirection;
var textHScale = current.textHScale * fontDirection;
var glyphsLength = glyphs.length;
var vertical = font.vertical;
var spacingDir = vertical ? 1 : -1;
var defaultVMetrics = font.defaultVMetrics;
var widthAdvanceScale = fontSize * current.fontMatrix[0];
var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
ctx.save();
var patternTransform;
if (current.patternFill) {
ctx.save();
var pattern = current.fillColor.getPattern(ctx, this);
patternTransform = ctx.mozCurrentTransform;
ctx.restore();
ctx.fillStyle = pattern;
}
ctx.transform.apply(ctx, current.textMatrix);
ctx.translate(current.x, current.y + current.textRise);
if (fontDirection > 0) {
ctx.scale(textHScale, -1);
} else {
ctx.scale(textHScale, 1);
}
var lineWidth = current.lineWidth;
var scale = current.textMatrixScale;
if (scale === 0 || lineWidth === 0) {
var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
this._cachedGetSinglePixelWidth = null;
lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;
}
} else {
lineWidth /= scale;
}
if (fontSizeScale !== 1.0) {
ctx.scale(fontSizeScale, fontSizeScale);
lineWidth /= fontSizeScale;
}
ctx.lineWidth = lineWidth;
var x = 0,
i;
for (i = 0; i < glyphsLength; ++i) {
var glyph = glyphs[i];
if ((0, _util.isNum)(glyph)) {
x += spacingDir * glyph * fontSize / 1000;
continue;
}
var restoreNeeded = false;
var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
var character = glyph.fontChar;
var accent = glyph.accent;
var scaledX, scaledY, scaledAccentX, scaledAccentY;
var width = glyph.width;
if (vertical) {
var vmetric, vx, vy;
vmetric = glyph.vmetric || defaultVMetrics;
vx = glyph.vmetric ? vmetric[1] : width * 0.5;
vx = -vx * widthAdvanceScale;
vy = vmetric[2] * widthAdvanceScale;
width = vmetric ? -vmetric[0] : width;
scaledX = vx / fontSizeScale;
scaledY = (x + vy) / fontSizeScale;
} else {
scaledX = x / fontSizeScale;
scaledY = 0;
}
if (font.remeasure && width > 0) {
var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
var characterScaleX = width / measuredWidth;
restoreNeeded = true;
ctx.save();
ctx.scale(characterScaleX, 1);
scaledX /= characterScaleX;
} else if (width !== measuredWidth) {
scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
}
}
if (glyph.isInFont || font.missingFile) {
if (simpleFillText && !accent) {
ctx.fillText(character, scaledX, scaledY);
} else {
this.paintChar(character, scaledX, scaledY, patternTransform);
if (accent) {
scaledAccentX = scaledX + accent.offset.x / fontSizeScale;
scaledAccentY = scaledY - accent.offset.y / fontSizeScale;
this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);
}
}
}
var charWidth = width * widthAdvanceScale + spacing * fontDirection;
x += charWidth;
if (restoreNeeded) {
ctx.restore();
}
}
if (vertical) {
current.y -= x * textHScale;
} else {
current.x += x * textHScale;
}
ctx.restore();
},
showType3Text: function CanvasGraphics_showType3Text(glyphs) {
var ctx = this.ctx;
var current = this.current;
var font = current.font;
var fontSize = current.fontSize;
var fontDirection = current.fontDirection;
var spacingDir = font.vertical ? 1 : -1;
var charSpacing = current.charSpacing;
var wordSpacing = current.wordSpacing;
var textHScale = current.textHScale * fontDirection;
var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
var glyphsLength = glyphs.length;
var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
var i, glyph, width, spacingLength;
if (isTextInvisible || fontSize === 0) {
return;
}
this._cachedGetSinglePixelWidth = null;
ctx.save();
ctx.transform.apply(ctx, current.textMatrix);
ctx.translate(current.x, current.y);
ctx.scale(textHScale, fontDirection);
for (i = 0; i < glyphsLength; ++i) {
glyph = glyphs[i];
if ((0, _util.isNum)(glyph)) {
spacingLength = spacingDir * glyph * fontSize / 1000;
this.ctx.translate(spacingLength, 0);
current.x += spacingLength * textHScale;
continue;
}
var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
var operatorList = font.charProcOperatorList[glyph.operatorListId];
if (!operatorList) {
(0, _util.warn)("Type3 character \"".concat(glyph.operatorListId, "\" is not available."));
continue;
}
this.processingType3 = glyph;
this.save();
ctx.scale(fontSize, fontSize);
ctx.transform.apply(ctx, fontMatrix);
this.executeOperatorList(operatorList);
this.restore();
var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
width = transformed[0] * fontSize + spacing;
ctx.translate(width, 0);
current.x += width * textHScale;
}
ctx.restore();
this.processingType3 = null;
},
setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {},
setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
this.ctx.rect(llx, lly, urx - llx, ury - lly);
this.clip();
this.endPath();
},
getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {
var _this = this;
var pattern;
if (IR[0] === 'TilingPattern') {
var color = IR[1];
var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
var canvasGraphicsFactory = {
createCanvasGraphics: function createCanvasGraphics(ctx) {
return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory, _this.webGLContext);
}
};
pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
} else {
pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR);
}
return pattern;
},
setStrokeColorN: function CanvasGraphics_setStrokeColorN() {
this.current.strokeColor = this.getColorN_Pattern(arguments);
},
setFillColorN: function CanvasGraphics_setFillColorN() {
this.current.fillColor = this.getColorN_Pattern(arguments);
this.current.patternFill = true;
},
setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
var color = _util.Util.makeCssRgb(r, g, b);
this.ctx.strokeStyle = color;
this.current.strokeColor = color;
},
setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
var color = _util.Util.makeCssRgb(r, g, b);
this.ctx.fillStyle = color;
this.current.fillColor = color;
this.current.patternFill = false;
},
shadingFill: function CanvasGraphics_shadingFill(patternIR) {
var ctx = this.ctx;
this.save();
var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);
ctx.fillStyle = pattern.getPattern(ctx, this, true);
var inv = ctx.mozCurrentTransformInverse;
if (inv) {
var canvas = ctx.canvas;
var width = canvas.width;
var height = canvas.height;
var bl = _util.Util.applyTransform([0, 0], inv);
var br = _util.Util.applyTransform([0, height], inv);
var ul = _util.Util.applyTransform([width, 0], inv);
var ur = _util.Util.applyTransform([width, height], inv);
var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
} else {
this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
}
this.restore();
},
beginInlineImage: function CanvasGraphics_beginInlineImage() {
(0, _util.unreachable)('Should not call beginInlineImage');
},
beginImageData: function CanvasGraphics_beginImageData() {
(0, _util.unreachable)('Should not call beginImageData');
},
paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) {
this.save();
this.baseTransformStack.push(this.baseTransform);
if (Array.isArray(matrix) && matrix.length === 6) {
this.transform.apply(this, matrix);
}
this.baseTransform = this.ctx.mozCurrentTransform;
if (bbox) {
var width = bbox[2] - bbox[0];
var height = bbox[3] - bbox[1];
this.ctx.rect(bbox[0], bbox[1], width, height);
this.clip();
this.endPath();
}
},
paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
this.restore();
this.baseTransform = this.baseTransformStack.pop();
},
beginGroup: function CanvasGraphics_beginGroup(group) {
this.save();
var currentCtx = this.ctx;
if (!group.isolated) {
(0, _util.info)('TODO: Support non-isolated groups.');
}
if (group.knockout) {
(0, _util.warn)('Knockout groups not supported.');
}
var currentTransform = currentCtx.mozCurrentTransform;
if (group.matrix) {
currentCtx.transform.apply(currentCtx, group.matrix);
}
if (!group.bbox) {
throw new Error('Bounding box is required.');
}
var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
var offsetX = Math.floor(bounds[0]);
var offsetY = Math.floor(bounds[1]);
var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
var scaleX = 1,
scaleY = 1;
if (drawnWidth > MAX_GROUP_SIZE) {
scaleX = drawnWidth / MAX_GROUP_SIZE;
drawnWidth = MAX_GROUP_SIZE;
}
if (drawnHeight > MAX_GROUP_SIZE) {
scaleY = drawnHeight / MAX_GROUP_SIZE;
drawnHeight = MAX_GROUP_SIZE;
}
var cacheId = 'groupAt' + this.groupLevel;
if (group.smask) {
cacheId += '_smask_' + this.smaskCounter++ % 2;
}
var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
var groupCtx = scratchCanvas.context;
groupCtx.scale(1 / scaleX, 1 / scaleY);
groupCtx.translate(-offsetX, -offsetY);
groupCtx.transform.apply(groupCtx, currentTransform);
if (group.smask) {
this.smaskStack.push({
canvas: scratchCanvas.canvas,
context: groupCtx,
offsetX: offsetX,
offsetY: offsetY,
scaleX: scaleX,
scaleY: scaleY,
subtype: group.smask.subtype,
backdrop: group.smask.backdrop,
transferMap: group.smask.transferMap || null,
startTransformInverse: null
});
} else {
currentCtx.setTransform(1, 0, 0, 1, 0, 0);
currentCtx.translate(offsetX, offsetY);
currentCtx.scale(scaleX, scaleY);
}
copyCtxState(currentCtx, groupCtx);
this.ctx = groupCtx;
this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);
this.groupStack.push(currentCtx);
this.groupLevel++;
this.current.activeSMask = null;
},
endGroup: function CanvasGraphics_endGroup(group) {
this.groupLevel--;
var groupCtx = this.ctx;
this.ctx = this.groupStack.pop();
if (this.ctx.imageSmoothingEnabled !== undefined) {
this.ctx.imageSmoothingEnabled = false;
} else {
this.ctx.mozImageSmoothingEnabled = false;
}
if (group.smask) {
this.tempSMask = this.smaskStack.pop();
} else {
this.ctx.drawImage(groupCtx.canvas, 0, 0);
}
this.restore();
},
beginAnnotations: function CanvasGraphics_beginAnnotations() {
this.save();
if (this.baseTransform) {
this.ctx.setTransform.apply(this.ctx, this.baseTransform);
}
},
endAnnotations: function CanvasGraphics_endAnnotations() {
this.restore();
},
beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) {
this.save();
resetCtxToDefault(this.ctx);
this.current = new CanvasExtraState();
if (Array.isArray(rect) && rect.length === 4) {
var width = rect[2] - rect[0];
var height = rect[3] - rect[1];
this.ctx.rect(rect[0], rect[1], width, height);
this.clip();
this.endPath();
}
this.transform.apply(this, transform);
this.transform.apply(this, matrix);
},
endAnnotation: function CanvasGraphics_endAnnotation() {
this.restore();
},
paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {
var domImage = this.objs.get(objId);
if (!domImage) {
(0, _util.warn)('Dependent image isn\'t ready yet');
return;
}
this.save();
var ctx = this.ctx;
ctx.scale(1 / w, -1 / h);
ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h);
if (this.imageLayer) {
var currentTransform = ctx.mozCurrentTransformInverse;
var position = this.getCanvasPosition(0, 0);
this.imageLayer.appendImage({
objId: objId,
left: position[0],
top: position[1],
width: w / currentTransform[0],
height: h / currentTransform[3]
});
}
this.restore();
},
paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {
var ctx = this.ctx;
var width = img.width,
height = img.height;
var fillColor = this.current.fillColor;
var isPatternFill = this.current.patternFill;
var glyph = this.processingType3;
if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
glyph.compiled = compileType3Glyph({
data: img.data,
width: width,
height: height
});
} else {
glyph.compiled = null;
}
}
if (glyph && glyph.compiled) {
glyph.compiled(ctx);
return;
}
var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
var maskCtx = maskCanvas.context;
maskCtx.save();
putBinaryImageMask(maskCtx, img);
maskCtx.globalCompositeOperation = 'source-in';
maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
maskCtx.fillRect(0, 0, width, height);
maskCtx.restore();
this.paintInlineImageXObject(maskCanvas.canvas);
},
paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) {
var width = imgData.width;
var height = imgData.height;
var fillColor = this.current.fillColor;
var isPatternFill = this.current.patternFill;
var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
var maskCtx = maskCanvas.context;
maskCtx.save();
putBinaryImageMask(maskCtx, imgData);
maskCtx.globalCompositeOperation = 'source-in';
maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
maskCtx.fillRect(0, 0, width, height);
maskCtx.restore();
var ctx = this.ctx;
for (var i = 0, ii = positions.length; i < ii; i += 2) {
ctx.save();
ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);
ctx.scale(1, -1);
ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
ctx.restore();
}
},
paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) {
var ctx = this.ctx;
var fillColor = this.current.fillColor;
var isPatternFill = this.current.patternFill;
for (var i = 0, ii = images.length; i < ii; i++) {
var image = images[i];
var width = image.width,
height = image.height;
var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
var maskCtx = maskCanvas.context;
maskCtx.save();
putBinaryImageMask(maskCtx, image);
maskCtx.globalCompositeOperation = 'source-in';
maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
maskCtx.fillRect(0, 0, width, height);
maskCtx.restore();
ctx.save();
ctx.transform.apply(ctx, image.transform);
ctx.scale(1, -1);
ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
ctx.restore();
}
},
paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {
var imgData = this.objs.get(objId);
if (!imgData) {
(0, _util.warn)('Dependent image isn\'t ready yet');
return;
}
this.paintInlineImageXObject(imgData);
},
paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
var imgData = this.objs.get(objId);
if (!imgData) {
(0, _util.warn)('Dependent image isn\'t ready yet');
return;
}
var width = imgData.width;
var height = imgData.height;
var map = [];
for (var i = 0, ii = positions.length; i < ii; i += 2) {
map.push({
transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
x: 0,
y: 0,
w: width,
h: height
});
}
this.paintInlineImageXObjectGroup(imgData, map);
},
paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) {
var width = imgData.width;
var height = imgData.height;
var ctx = this.ctx;
this.save();
ctx.scale(1 / width, -1 / height);
var currentTransform = ctx.mozCurrentTransformInverse;
var a = currentTransform[0],
b = currentTransform[1];
var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
var c = currentTransform[2],
d = currentTransform[3];
var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
var imgToPaint, tmpCanvas;
if (typeof HTMLElement === 'function' && imgData instanceof HTMLElement || !imgData.data) {
imgToPaint = imgData;
} else {
tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height);
var tmpCtx = tmpCanvas.context;
putBinaryImageData(tmpCtx, imgData);
imgToPaint = tmpCanvas.canvas;
}
var paintWidth = width,
paintHeight = height;
var tmpCanvasId = 'prescale1';
while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
var newWidth = paintWidth,
newHeight = paintHeight;
if (widthScale > 2 && paintWidth > 1) {
newWidth = Math.ceil(paintWidth / 2);
widthScale /= paintWidth / newWidth;
}
if (heightScale > 2 && paintHeight > 1) {
newHeight = Math.ceil(paintHeight / 2);
heightScale /= paintHeight / newHeight;
}
tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
tmpCtx = tmpCanvas.context;
tmpCtx.clearRect(0, 0, newWidth, newHeight);
tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
imgToPaint = tmpCanvas.canvas;
paintWidth = newWidth;
paintHeight = newHeight;
tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';
}
ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);
if (this.imageLayer) {
var position = this.getCanvasPosition(0, -height);
this.imageLayer.appendImage({
imgData: imgData,
left: position[0],
top: position[1],
width: width / currentTransform[0],
height: height / currentTransform[3]
});
}
this.restore();
},
paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {
var ctx = this.ctx;
var w = imgData.width;
var h = imgData.height;
var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);
var tmpCtx = tmpCanvas.context;
putBinaryImageData(tmpCtx, imgData);
for (var i = 0, ii = map.length; i < ii; i++) {
var entry = map[i];
ctx.save();
ctx.transform.apply(ctx, entry.transform);
ctx.scale(1, -1);
ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
if (this.imageLayer) {
var position = this.getCanvasPosition(entry.x, entry.y);
this.imageLayer.appendImage({
imgData: imgData,
left: position[0],
top: position[1],
width: w,
height: h
});
}
ctx.restore();
}
},
paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {
this.ctx.fillRect(0, 0, 1, 1);
},
paintXObject: function CanvasGraphics_paintXObject() {
(0, _util.warn)('Unsupported \'paintXObject\' command.');
},
markPoint: function CanvasGraphics_markPoint(tag) {},
markPointProps: function CanvasGraphics_markPointProps(tag, properties) {},
beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {},
beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {},
endMarkedContent: function CanvasGraphics_endMarkedContent() {},
beginCompat: function CanvasGraphics_beginCompat() {},
endCompat: function CanvasGraphics_endCompat() {},
consumePath: function CanvasGraphics_consumePath() {
var ctx = this.ctx;
if (this.pendingClip) {
if (this.pendingClip === EO_CLIP) {
ctx.clip('evenodd');
} else {
ctx.clip();
}
this.pendingClip = null;
}
ctx.beginPath();
},
getSinglePixelWidth: function getSinglePixelWidth(scale) {
if (this._cachedGetSinglePixelWidth === null) {
var inverse = this.ctx.mozCurrentTransformInverse;
this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));
}
return this._cachedGetSinglePixelWidth;
},
getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {
var transform = this.ctx.mozCurrentTransform;
return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];
}
};
for (var op in _util.OPS) {
CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
}
return CanvasGraphics;
}();
exports.CanvasGraphics = CanvasGraphics;
/***/ }),
/* 155 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getShadingPatternFromIR = getShadingPatternFromIR;
exports.TilingPattern = void 0;
var _util = __w_pdfjs_require__(1);
var ShadingIRs = {};
ShadingIRs.RadialAxial = {
fromIR: function RadialAxial_fromIR(raw) {
var type = raw[1];
var colorStops = raw[2];
var p0 = raw[3];
var p1 = raw[4];
var r0 = raw[5];
var r1 = raw[6];
return {
type: 'Pattern',
getPattern: function RadialAxial_getPattern(ctx) {
var grad;
if (type === 'axial') {
grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
} else if (type === 'radial') {
grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
}
for (var i = 0, ii = colorStops.length; i < ii; ++i) {
var c = colorStops[i];
grad.addColorStop(c[0], c[1]);
}
return grad;
}
};
}
};
var createMeshCanvas = function createMeshCanvasClosure() {
function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
var coords = context.coords,
colors = context.colors;
var bytes = data.data,
rowSize = data.width * 4;
var tmp;
if (coords[p1 + 1] > coords[p2 + 1]) {
tmp = p1;
p1 = p2;
p2 = tmp;
tmp = c1;
c1 = c2;
c2 = tmp;
}
if (coords[p2 + 1] > coords[p3 + 1]) {
tmp = p2;
p2 = p3;
p3 = tmp;
tmp = c2;
c2 = c3;
c3 = tmp;
}
if (coords[p1 + 1] > coords[p2 + 1]) {
tmp = p1;
p1 = p2;
p2 = tmp;
tmp = c1;
c1 = c2;
c2 = tmp;
}
var x1 = (coords[p1] + context.offsetX) * context.scaleX;
var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
var x2 = (coords[p2] + context.offsetX) * context.scaleX;
var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
var x3 = (coords[p3] + context.offsetX) * context.scaleX;
var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
if (y1 >= y3) {
return;
}
var c1r = colors[c1],
c1g = colors[c1 + 1],
c1b = colors[c1 + 2];
var c2r = colors[c2],
c2g = colors[c2 + 1],
c2b = colors[c2 + 2];
var c3r = colors[c3],
c3g = colors[c3 + 1],
c3b = colors[c3 + 2];
var minY = Math.round(y1),
maxY = Math.round(y3);
var xa, car, cag, cab;
var xb, cbr, cbg, cbb;
var k;
for (var y = minY; y <= maxY; y++) {
if (y < y2) {
k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);
xa = x1 - (x1 - x2) * k;
car = c1r - (c1r - c2r) * k;
cag = c1g - (c1g - c2g) * k;
cab = c1b - (c1b - c2b) * k;
} else {
k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);
xa = x2 - (x2 - x3) * k;
car = c2r - (c2r - c3r) * k;
cag = c2g - (c2g - c3g) * k;
cab = c2b - (c2b - c3b) * k;
}
k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);
xb = x1 - (x1 - x3) * k;
cbr = c1r - (c1r - c3r) * k;
cbg = c1g - (c1g - c3g) * k;
cbb = c1b - (c1b - c3b) * k;
var x1_ = Math.round(Math.min(xa, xb));
var x2_ = Math.round(Math.max(xa, xb));
var j = rowSize * y + x1_ * 4;
for (var x = x1_; x <= x2_; x++) {
k = (xa - x) / (xa - xb);
k = k < 0 ? 0 : k > 1 ? 1 : k;
bytes[j++] = car - (car - cbr) * k | 0;
bytes[j++] = cag - (cag - cbg) * k | 0;
bytes[j++] = cab - (cab - cbb) * k | 0;
bytes[j++] = 255;
}
}
}
function drawFigure(data, figure, context) {
var ps = figure.coords;
var cs = figure.colors;
var i, ii;
switch (figure.type) {
case 'lattice':
var verticesPerRow = figure.verticesPerRow;
var rows = Math.floor(ps.length / verticesPerRow) - 1;
var cols = verticesPerRow - 1;
for (i = 0; i < rows; i++) {
var q = i * verticesPerRow;
for (var j = 0; j < cols; j++, q++) {
drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
}
}
break;
case 'triangles':
for (i = 0, ii = ps.length; i < ii; i += 3) {
drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
}
break;
default:
throw new Error('illegal figure');
}
}
function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {
var EXPECTED_SCALE = 1.1;
var MAX_PATTERN_SIZE = 3000;
var BORDER_SIZE = 2;
var offsetX = Math.floor(bounds[0]);
var offsetY = Math.floor(bounds[1]);
var boundsWidth = Math.ceil(bounds[2]) - offsetX;
var boundsHeight = Math.ceil(bounds[3]) - offsetY;
var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
var scaleX = boundsWidth / width;
var scaleY = boundsHeight / height;
var context = {
coords: coords,
colors: colors,
offsetX: -offsetX,
offsetY: -offsetY,
scaleX: 1 / scaleX,
scaleY: 1 / scaleY
};
var paddedWidth = width + BORDER_SIZE * 2;
var paddedHeight = height + BORDER_SIZE * 2;
var canvas, tmpCanvas, i, ii;
if (webGLContext.isEnabled) {
canvas = webGLContext.drawFigures({
width: width,
height: height,
backgroundColor: backgroundColor,
figures: figures,
context: context
});
tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);
tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);
canvas = tmpCanvas.canvas;
} else {
tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);
var tmpCtx = tmpCanvas.context;
var data = tmpCtx.createImageData(width, height);
if (backgroundColor) {
var bytes = data.data;
for (i = 0, ii = bytes.length; i < ii; i += 4) {
bytes[i] = backgroundColor[0];
bytes[i + 1] = backgroundColor[1];
bytes[i + 2] = backgroundColor[2];
bytes[i + 3] = 255;
}
}
for (i = 0; i < figures.length; i++) {
drawFigure(data, figures[i], context);
}
tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);
canvas = tmpCanvas.canvas;
}
return {
canvas: canvas,
offsetX: offsetX - BORDER_SIZE * scaleX,
offsetY: offsetY - BORDER_SIZE * scaleY,
scaleX: scaleX,
scaleY: scaleY
};
}
return createMeshCanvas;
}();
ShadingIRs.Mesh = {
fromIR: function Mesh_fromIR(raw) {
var coords = raw[2];
var colors = raw[3];
var figures = raw[4];
var bounds = raw[5];
var matrix = raw[6];
var background = raw[8];
return {
type: 'Pattern',
getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
var scale;
if (shadingFill) {
scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
} else {
scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
if (matrix) {
var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
}
}
var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);
if (!shadingFill) {
ctx.setTransform.apply(ctx, owner.baseTransform);
if (matrix) {
ctx.transform.apply(ctx, matrix);
}
}
ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');
}
};
}
};
ShadingIRs.Dummy = {
fromIR: function Dummy_fromIR() {
return {
type: 'Pattern',
getPattern: function Dummy_fromIR_getPattern() {
return 'hotpink';
}
};
}
};
function getShadingPatternFromIR(raw) {
var shadingIR = ShadingIRs[raw[0]];
if (!shadingIR) {
throw new Error("Unknown IR type: ".concat(raw[0]));
}
return shadingIR.fromIR(raw);
}
var TilingPattern = function TilingPatternClosure() {
var PaintType = {
COLORED: 1,
UNCOLORED: 2
};
var MAX_PATTERN_SIZE = 3000;
function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
this.operatorList = IR[2];
this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
this.bbox = IR[4];
this.xstep = IR[5];
this.ystep = IR[6];
this.paintType = IR[7];
this.tilingType = IR[8];
this.color = color;
this.canvasGraphicsFactory = canvasGraphicsFactory;
this.baseTransform = baseTransform;
this.type = 'Pattern';
this.ctx = ctx;
}
TilingPattern.prototype = {
createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {
var operatorList = this.operatorList;
var bbox = this.bbox;
var xstep = this.xstep;
var ystep = this.ystep;
var paintType = this.paintType;
var tilingType = this.tilingType;
var color = this.color;
var canvasGraphicsFactory = this.canvasGraphicsFactory;
(0, _util.info)('TilingType: ' + tilingType);
var x0 = bbox[0],
y0 = bbox[1],
x1 = bbox[2],
y1 = bbox[3];
var topLeft = [x0, y0];
var botRight = [x0 + xstep, y0 + ystep];
var width = botRight[0] - topLeft[0];
var height = botRight[1] - topLeft[1];
var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE);
height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE);
var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', width, height, true);
var tmpCtx = tmpCanvas.context;
var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
graphics.groupLevel = owner.groupLevel;
this.setFillAndStrokeStyleToContext(graphics, paintType, color);
this.setScale(width, height, xstep, ystep);
this.transformToScale(graphics);
var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];
graphics.transform.apply(graphics, tmpTranslate);
this.clipBbox(graphics, bbox, x0, y0, x1, y1);
graphics.executeOperatorList(operatorList);
return tmpCanvas.canvas;
},
setScale: function TilingPattern_setScale(width, height, xstep, ystep) {
this.scale = [width / xstep, height / ystep];
},
transformToScale: function TilingPattern_transformToScale(graphics) {
var scale = this.scale;
var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];
graphics.transform.apply(graphics, tmpScale);
},
scaleToContext: function TilingPattern_scaleToContext() {
var scale = this.scale;
this.ctx.scale(1 / scale[0], 1 / scale[1]);
},
clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
if (Array.isArray(bbox) && bbox.length === 4) {
var bboxWidth = x1 - x0;
var bboxHeight = y1 - y0;
graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
graphics.clip();
graphics.endPath();
}
},
setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {
var context = graphics.ctx,
current = graphics.current;
switch (paintType) {
case PaintType.COLORED:
var ctx = this.ctx;
context.fillStyle = ctx.fillStyle;
context.strokeStyle = ctx.strokeStyle;
current.fillColor = ctx.fillStyle;
current.strokeColor = ctx.strokeStyle;
break;
case PaintType.UNCOLORED:
var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);
context.fillStyle = cssColor;
context.strokeStyle = cssColor;
current.fillColor = cssColor;
current.strokeColor = cssColor;
break;
default:
throw new _util.FormatError("Unsupported paint type: ".concat(paintType));
}
},
getPattern: function TilingPattern_getPattern(ctx, owner) {
var temporaryPatternCanvas = this.createPatternCanvas(owner);
ctx = this.ctx;
ctx.setTransform.apply(ctx, this.baseTransform);
ctx.transform.apply(ctx, this.matrix);
this.scaleToContext();
return ctx.createPattern(temporaryPatternCanvas, 'repeat');
}
};
return TilingPattern;
}();
exports.TilingPattern = TilingPattern;
/***/ }),
/* 156 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.GlobalWorkerOptions = void 0;
var GlobalWorkerOptions = Object.create(null);
exports.GlobalWorkerOptions = GlobalWorkerOptions;
GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;
GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? '' : GlobalWorkerOptions.workerSrc;
/***/ }),
/* 157 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MessageHandler = MessageHandler;
var _regenerator = _interopRequireDefault(__w_pdfjs_require__(147));
var _util = __w_pdfjs_require__(1);
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 resolveCall(_x, _x2) {
return _resolveCall.apply(this, arguments);
}
function _resolveCall() {
_resolveCall = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee(fn, args) {
var thisArg,
_args = arguments;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
thisArg = _args.length > 2 && _args[2] !== undefined ? _args[2] : null;
if (fn) {
_context.next = 3;
break;
}
return _context.abrupt("return");
case 3:
return _context.abrupt("return", fn.apply(thisArg, args));
case 4:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return _resolveCall.apply(this, arguments);
}
function wrapReason(reason) {
if (_typeof(reason) !== 'object') {
return reason;
}
switch (reason.name) {
case 'AbortException':
return new _util.AbortException(reason.message);
case 'MissingPDFException':
return new _util.MissingPDFException(reason.message);
case 'UnexpectedResponseException':
return new _util.UnexpectedResponseException(reason.message, reason.status);
default:
return new _util.UnknownErrorException(reason.message, reason.details);
}
}
function makeReasonSerializable(reason) {
if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) {
return reason;
}
return new _util.UnknownErrorException(reason.message, reason.toString());
}
function resolveOrReject(capability, success, reason) {
if (success) {
capability.resolve();
} else {
capability.reject(reason);
}
}
function finalize(promise) {
return Promise.resolve(promise).catch(function () {});
}
function MessageHandler(sourceName, targetName, comObj) {
var _this = this;
this.sourceName = sourceName;
this.targetName = targetName;
this.comObj = comObj;
this.callbackId = 1;
this.streamId = 1;
this.postMessageTransfers = true;
this.streamSinks = Object.create(null);
this.streamControllers = Object.create(null);
var callbacksCapabilities = this.callbacksCapabilities = Object.create(null);
var ah = this.actionHandler = Object.create(null);
this._onComObjOnMessage = function (event) {
var data = event.data;
if (data.targetName !== _this.sourceName) {
return;
}
if (data.stream) {
_this._processStreamMessage(data);
} else if (data.isReply) {
var callbackId = data.callbackId;
if (data.callbackId in callbacksCapabilities) {
var callback = callbacksCapabilities[callbackId];
delete callbacksCapabilities[callbackId];
if ('error' in data) {
callback.reject(wrapReason(data.error));
} else {
callback.resolve(data.data);
}
} else {
throw new Error("Cannot resolve callback ".concat(callbackId));
}
} else if (data.action in ah) {
var action = ah[data.action];
if (data.callbackId) {
var _sourceName = _this.sourceName;
var _targetName = data.sourceName;
Promise.resolve().then(function () {
return action[0].call(action[1], data.data);
}).then(function (result) {
comObj.postMessage({
sourceName: _sourceName,
targetName: _targetName,
isReply: true,
callbackId: data.callbackId,
data: result
});
}, function (reason) {
comObj.postMessage({
sourceName: _sourceName,
targetName: _targetName,
isReply: true,
callbackId: data.callbackId,
error: makeReasonSerializable(reason)
});
});
} else if (data.streamId) {
_this._createStreamSink(data);
} else {
action[0].call(action[1], data.data);
}
} else {
throw new Error("Unknown action from worker: ".concat(data.action));
}
};
comObj.addEventListener('message', this._onComObjOnMessage);
}
MessageHandler.prototype = {
on: function on(actionName, handler, scope) {
var ah = this.actionHandler;
if (ah[actionName]) {
throw new Error("There is already an actionName called \"".concat(actionName, "\""));
}
ah[actionName] = [handler, scope];
},
send: function send(actionName, data, transfers) {
var message = {
sourceName: this.sourceName,
targetName: this.targetName,
action: actionName,
data: data
};
this.postMessage(message, transfers);
},
sendWithPromise: function sendWithPromise(actionName, data, transfers) {
var callbackId = this.callbackId++;
var message = {
sourceName: this.sourceName,
targetName: this.targetName,
action: actionName,
data: data,
callbackId: callbackId
};
var capability = (0, _util.createPromiseCapability)();
this.callbacksCapabilities[callbackId] = capability;
try {
this.postMessage(message, transfers);
} catch (e) {
capability.reject(e);
}
return capability.promise;
},
sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) {
var _this2 = this;
var streamId = this.streamId++;
var sourceName = this.sourceName;
var targetName = this.targetName;
return new _util.ReadableStream({
start: function start(controller) {
var startCapability = (0, _util.createPromiseCapability)();
_this2.streamControllers[streamId] = {
controller: controller,
startCall: startCapability,
isClosed: false
};
_this2.postMessage({
sourceName: sourceName,
targetName: targetName,
action: actionName,
streamId: streamId,
data: data,
desiredSize: controller.desiredSize
});
return startCapability.promise;
},
pull: function pull(controller) {
var pullCapability = (0, _util.createPromiseCapability)();
_this2.streamControllers[streamId].pullCall = pullCapability;
_this2.postMessage({
sourceName: sourceName,
targetName: targetName,
stream: 'pull',
streamId: streamId,
desiredSize: controller.desiredSize
});
return pullCapability.promise;
},
cancel: function cancel(reason) {
var cancelCapability = (0, _util.createPromiseCapability)();
_this2.streamControllers[streamId].cancelCall = cancelCapability;
_this2.streamControllers[streamId].isClosed = true;
_this2.postMessage({
sourceName: sourceName,
targetName: targetName,
stream: 'cancel',
reason: reason,
streamId: streamId
});
return cancelCapability.promise;
}
}, queueingStrategy);
},
_createStreamSink: function _createStreamSink(data) {
var _this3 = this;
var self = this;
var action = this.actionHandler[data.action];
var streamId = data.streamId;
var desiredSize = data.desiredSize;
var sourceName = this.sourceName;
var targetName = data.sourceName;
var capability = (0, _util.createPromiseCapability)();
var sendStreamRequest = function sendStreamRequest(_ref) {
var stream = _ref.stream,
chunk = _ref.chunk,
transfers = _ref.transfers,
success = _ref.success,
reason = _ref.reason;
_this3.postMessage({
sourceName: sourceName,
targetName: targetName,
stream: stream,
streamId: streamId,
chunk: chunk,
success: success,
reason: reason
}, transfers);
};
var streamSink = {
enqueue: function enqueue(chunk) {
var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
var transfers = arguments.length > 2 ? arguments[2] : undefined;
if (this.isCancelled) {
return;
}
var lastDesiredSize = this.desiredSize;
this.desiredSize -= size;
if (lastDesiredSize > 0 && this.desiredSize <= 0) {
this.sinkCapability = (0, _util.createPromiseCapability)();
this.ready = this.sinkCapability.promise;
}
sendStreamRequest({
stream: 'enqueue',
chunk: chunk,
transfers: transfers
});
},
close: function close() {
if (this.isCancelled) {
return;
}
this.isCancelled = true;
sendStreamRequest({
stream: 'close'
});
delete self.streamSinks[streamId];
},
error: function error(reason) {
if (this.isCancelled) {
return;
}
this.isCancelled = true;
sendStreamRequest({
stream: 'error',
reason: reason
});
},
sinkCapability: capability,
onPull: null,
onCancel: null,
isCancelled: false,
desiredSize: desiredSize,
ready: null
};
streamSink.sinkCapability.resolve();
streamSink.ready = streamSink.sinkCapability.promise;
this.streamSinks[streamId] = streamSink;
resolveCall(action[0], [data.data, streamSink], action[1]).then(function () {
sendStreamRequest({
stream: 'start_complete',
success: true
});
}, function (reason) {
sendStreamRequest({
stream: 'start_complete',
success: false,
reason: reason
});
});
},
_processStreamMessage: function _processStreamMessage(data) {
var _this4 = this;
var sourceName = this.sourceName;
var targetName = data.sourceName;
var streamId = data.streamId;
var sendStreamResponse = function sendStreamResponse(_ref2) {
var stream = _ref2.stream,
success = _ref2.success,
reason = _ref2.reason;
_this4.comObj.postMessage({
sourceName: sourceName,
targetName: targetName,
stream: stream,
success: success,
streamId: streamId,
reason: reason
});
};
var deleteStreamController = function deleteStreamController() {
Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) {
return capability && finalize(capability.promise);
})).then(function () {
delete _this4.streamControllers[data.streamId];
});
};
switch (data.stream) {
case 'start_complete':
resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason));
break;
case 'pull_complete':
resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason));
break;
case 'pull':
if (!this.streamSinks[data.streamId]) {
sendStreamResponse({
stream: 'pull_complete',
success: true
});
break;
}
if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) {
this.streamSinks[data.streamId].sinkCapability.resolve();
}
this.streamSinks[data.streamId].desiredSize = data.desiredSize;
resolveCall(this.streamSinks[data.streamId].onPull).then(function () {
sendStreamResponse({
stream: 'pull_complete',
success: true
});
}, function (reason) {
sendStreamResponse({
stream: 'pull_complete',
success: false,
reason: reason
});
});
break;
case 'enqueue':
(0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller');
if (!this.streamControllers[data.streamId].isClosed) {
this.streamControllers[data.streamId].controller.enqueue(data.chunk);
}
break;
case 'close':
(0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller');
if (this.streamControllers[data.streamId].isClosed) {
break;
}
this.streamControllers[data.streamId].isClosed = true;
this.streamControllers[data.streamId].controller.close();
deleteStreamController();
break;
case 'error':
(0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller');
this.streamControllers[data.streamId].controller.error(wrapReason(data.reason));
deleteStreamController();
break;
case 'cancel_complete':
resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason));
deleteStreamController();
break;
case 'cancel':
if (!this.streamSinks[data.streamId]) {
break;
}
resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () {
sendStreamResponse({
stream: 'cancel_complete',
success: true
});
}, function (reason) {
sendStreamResponse({
stream: 'cancel_complete',
success: false,
reason: reason
});
});
this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason));
this.streamSinks[data.streamId].isCancelled = true;
delete this.streamSinks[data.streamId];
break;
default:
throw new Error('Unexpected stream case');
}
},
postMessage: function postMessage(message, transfers) {
if (transfers && this.postMessageTransfers) {
this.comObj.postMessage(message, transfers);
} else {
this.comObj.postMessage(message);
}
},
destroy: function destroy() {
this.comObj.removeEventListener('message', this._onComObjOnMessage);
}
};
/***/ }),
/* 158 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Metadata = void 0;
var _util = __w_pdfjs_require__(1);
var _xml_parser = __w_pdfjs_require__(159);
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 Metadata =
/*#__PURE__*/
function () {
function Metadata(data) {
_classCallCheck(this, Metadata);
(0, _util.assert)(typeof data === 'string', 'Metadata: input is not a string');
data = this._repair(data);
var parser = new _xml_parser.SimpleXMLParser();
var xmlDocument = parser.parseFromString(data);
this._metadata = Object.create(null);
if (xmlDocument) {
this._parse(xmlDocument);
}
}
_createClass(Metadata, [{
key: "_repair",
value: function _repair(data) {
return data.replace(/^([^<]+)/, '').replace(/>\\376\\377([^<]+)/g, function (all, codes) {
var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {
return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
}).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {
switch (name) {
case 'amp':
return '&';
case 'apos':
return '\'';
case 'gt':
return '>';
case 'lt':
return '<';
case 'quot':
return '\"';
}
throw new Error("_repair: ".concat(name, " isn't defined."));
});
var chars = '';
for (var i = 0, ii = bytes.length; i < ii; i += 2) {
var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {
chars += String.fromCharCode(code);
} else {
chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';';
}
}
return '>' + chars;
});
}
}, {
key: "_parse",
value: function _parse(xmlDocument) {
var rdf = xmlDocument.documentElement;
if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
rdf = rdf.firstChild;
while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
rdf = rdf.nextSibling;
}
}
var nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {
return;
}
var children = rdf.childNodes;
for (var i = 0, ii = children.length; i < ii; i++) {
var desc = children[i];
if (desc.nodeName.toLowerCase() !== 'rdf:description') {
continue;
}
for (var j = 0, jj = desc.childNodes.length; j < jj; j++) {
if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') {
var entry = desc.childNodes[j];
var name = entry.nodeName.toLowerCase();
this._metadata[name] = entry.textContent.trim();
}
}
}
}
}, {
key: "get",
value: function get(name) {
var data = this._metadata[name];
return typeof data !== 'undefined' ? data : null;
}
}, {
key: "getAll",
value: function getAll() {
return this._metadata;
}
}, {
key: "has",
value: function has(name) {
return typeof this._metadata[name] !== 'undefined';
}
}]);
return Metadata;
}();
exports.Metadata = Metadata;
/***/ }),
/* 159 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SimpleXMLParser = void 0;
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 _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); }
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 XMLParserErrorCode = {
NoError: 0,
EndOfDocument: -1,
UnterminatedCdat: -2,
UnterminatedXmlDeclaration: -3,
UnterminatedDoctypeDeclaration: -4,
UnterminatedComment: -5,
MalformedElement: -6,
OutOfMemory: -7,
UnterminatedAttributeValue: -8,
UnterminatedElement: -9,
ElementNeverBegun: -10
};
function isWhitespace(s, index) {
var ch = s[index];
return ch === ' ' || ch === '\n' || ch === '\r' || ch === '\t';
}
function isWhitespaceString(s) {
for (var i = 0, ii = s.length; i < ii; i++) {
if (!isWhitespace(s, i)) {
return false;
}
}
return true;
}
var XMLParserBase =
/*#__PURE__*/
function () {
function XMLParserBase() {
_classCallCheck(this, XMLParserBase);
}
_createClass(XMLParserBase, [{
key: "_resolveEntities",
value: function _resolveEntities(s) {
var _this = this;
return s.replace(/&([^;]+);/g, function (all, entity) {
if (entity.substring(0, 2) === '#x') {
return String.fromCharCode(parseInt(entity.substring(2), 16));
} else if (entity.substring(0, 1) === '#') {
return String.fromCharCode(parseInt(entity.substring(1), 10));
}
switch (entity) {
case 'lt':
return '<';
case 'gt':
return '>';
case 'amp':
return '&';
case 'quot':
return '\"';
}
return _this.onResolveEntity(entity);
});
}
}, {
key: "_parseContent",
value: function _parseContent(s, start) {
var pos = start,
name,
attributes = [];
function skipWs() {
while (pos < s.length && isWhitespace(s, pos)) {
++pos;
}
}
while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {
++pos;
}
name = s.substring(start, pos);
skipWs();
while (pos < s.length && s[pos] !== '>' && s[pos] !== '/' && s[pos] !== '?') {
skipWs();
var attrName = '',
attrValue = '';
while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '=') {
attrName += s[pos];
++pos;
}
skipWs();
if (s[pos] !== '=') {
return null;
}
++pos;
skipWs();
var attrEndChar = s[pos];
if (attrEndChar !== '\"' && attrEndChar !== '\'') {
return null;
}
var attrEndIndex = s.indexOf(attrEndChar, ++pos);
if (attrEndIndex < 0) {
return null;
}
attrValue = s.substring(pos, attrEndIndex);
attributes.push({
name: attrName,
value: this._resolveEntities(attrValue)
});
pos = attrEndIndex + 1;
skipWs();
}
return {
name: name,
attributes: attributes,
parsed: pos - start
};
}
}, {
key: "_parseProcessingInstruction",
value: function _parseProcessingInstruction(s, start) {
var pos = start,
name,
value;
function skipWs() {
while (pos < s.length && isWhitespace(s, pos)) {
++pos;
}
}
while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {
++pos;
}
name = s.substring(start, pos);
skipWs();
var attrStart = pos;
while (pos < s.length && (s[pos] !== '?' || s[pos + 1] !== '>')) {
++pos;
}
value = s.substring(attrStart, pos);
return {
name: name,
value: value,
parsed: pos - start
};
}
}, {
key: "parseXml",
value: function parseXml(s) {
var i = 0;
while (i < s.length) {
var ch = s[i];
var j = i;
if (ch === '<') {
++j;
var ch2 = s[j];
var q = void 0;
switch (ch2) {
case '/':
++j;
q = s.indexOf('>', j);
if (q < 0) {
this.onError(XMLParserErrorCode.UnterminatedElement);
return;
}
this.onEndElement(s.substring(j, q));
j = q + 1;
break;
case '?':
++j;
var pi = this._parseProcessingInstruction(s, j);
if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== '?>') {
this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);
return;
}
this.onPi(pi.name, pi.value);
j += pi.parsed + 2;
break;
case '!':
if (s.substring(j + 1, j + 3) === '--') {
q = s.indexOf('-->', j + 3);
if (q < 0) {
this.onError(XMLParserErrorCode.UnterminatedComment);
return;
}
this.onComment(s.substring(j + 3, q));
j = q + 3;
} else if (s.substring(j + 1, j + 8) === '[CDATA[') {
q = s.indexOf(']]>', j + 8);
if (q < 0) {
this.onError(XMLParserErrorCode.UnterminatedCdat);
return;
}
this.onCdata(s.substring(j + 8, q));
j = q + 3;
} else if (s.substring(j + 1, j + 8) === 'DOCTYPE') {
var q2 = s.indexOf('[', j + 8);
var complexDoctype = false;
q = s.indexOf('>', j + 8);
if (q < 0) {
this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
return;
}
if (q2 > 0 && q > q2) {
q = s.indexOf(']>', j + 8);
if (q < 0) {
this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
return;
}
complexDoctype = true;
}
var doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));
this.onDoctype(doctypeContent);
j = q + (complexDoctype ? 2 : 1);
} else {
this.onError(XMLParserErrorCode.MalformedElement);
return;
}
break;
default:
var content = this._parseContent(s, j);
if (content === null) {
this.onError(XMLParserErrorCode.MalformedElement);
return;
}
var isClosed = false;
if (s.substring(j + content.parsed, j + content.parsed + 2) === '/>') {
isClosed = true;
} else if (s.substring(j + content.parsed, j + content.parsed + 1) !== '>') {
this.onError(XMLParserErrorCode.UnterminatedElement);
return;
}
this.onBeginElement(content.name, content.attributes, isClosed);
j += content.parsed + (isClosed ? 2 : 1);
break;
}
} else {
while (j < s.length && s[j] !== '<') {
j++;
}
var text = s.substring(i, j);
this.onText(this._resolveEntities(text));
}
i = j;
}
}
}, {
key: "onResolveEntity",
value: function onResolveEntity(name) {
return "&".concat(name, ";");
}
}, {
key: "onPi",
value: function onPi(name, value) {}
}, {
key: "onComment",
value: function onComment(text) {}
}, {
key: "onCdata",
value: function onCdata(text) {}
}, {
key: "onDoctype",
value: function onDoctype(doctypeContent) {}
}, {
key: "onText",
value: function onText(text) {}
}, {
key: "onBeginElement",
value: function onBeginElement(name, attributes, isEmpty) {}
}, {
key: "onEndElement",
value: function onEndElement(name) {}
}, {
key: "onError",
value: function onError(code) {}
}]);
return XMLParserBase;
}();
var SimpleDOMNode =
/*#__PURE__*/
function () {
function SimpleDOMNode(nodeName, nodeValue) {
_classCallCheck(this, SimpleDOMNode);
this.nodeName = nodeName;
this.nodeValue = nodeValue;
Object.defineProperty(this, 'parentNode', {
value: null,
writable: true
});
}
_createClass(SimpleDOMNode, [{
key: "hasChildNodes",
value: function hasChildNodes() {
return this.childNodes && this.childNodes.length > 0;
}
}, {
key: "firstChild",
get: function get() {
return this.childNodes && this.childNodes[0];
}
}, {
key: "nextSibling",
get: function get() {
var childNodes = this.parentNode.childNodes;
if (!childNodes) {
return undefined;
}
var index = childNodes.indexOf(this);
if (index === -1) {
return undefined;
}
return childNodes[index + 1];
}
}, {
key: "textContent",
get: function get() {
if (!this.childNodes) {
return this.nodeValue || '';
}
return this.childNodes.map(function (child) {
return child.textContent;
}).join('');
}
}]);
return SimpleDOMNode;
}();
var SimpleXMLParser =
/*#__PURE__*/
function (_XMLParserBase) {
_inherits(SimpleXMLParser, _XMLParserBase);
function SimpleXMLParser() {
var _this2;
_classCallCheck(this, SimpleXMLParser);
_this2 = _possibleConstructorReturn(this, _getPrototypeOf(SimpleXMLParser).call(this));
_this2._currentFragment = null;
_this2._stack = null;
_this2._errorCode = XMLParserErrorCode.NoError;
return _this2;
}
_createClass(SimpleXMLParser, [{
key: "parseFromString",
value: function parseFromString(data) {
this._currentFragment = [];
this._stack = [];
this._errorCode = XMLParserErrorCode.NoError;
this.parseXml(data);
if (this._errorCode !== XMLParserErrorCode.NoError) {
return undefined;
}
var _this$_currentFragmen = _slicedToArray(this._currentFragment, 1),
documentElement = _this$_currentFragmen[0];
if (!documentElement) {
return undefined;
}
return {
documentElement: documentElement
};
}
}, {
key: "onResolveEntity",
value: function onResolveEntity(name) {
switch (name) {
case 'apos':
return '\'';
}
return _get(_getPrototypeOf(SimpleXMLParser.prototype), "onResolveEntity", this).call(this, name);
}
}, {
key: "onText",
value: function onText(text) {
if (isWhitespaceString(text)) {
return;
}
var node = new SimpleDOMNode('#text', text);
this._currentFragment.push(node);
}
}, {
key: "onCdata",
value: function onCdata(text) {
var node = new SimpleDOMNode('#text', text);
this._currentFragment.push(node);
}
}, {
key: "onBeginElement",
value: function onBeginElement(name, attributes, isEmpty) {
var node = new SimpleDOMNode(name);
node.childNodes = [];
this._currentFragment.push(node);
if (isEmpty) {
return;
}
this._stack.push(this._currentFragment);
this._currentFragment = node.childNodes;
}
}, {
key: "onEndElement",
value: function onEndElement(name) {
this._currentFragment = this._stack.pop() || [];
var lastElement = this._currentFragment[this._currentFragment.length - 1];
if (!lastElement) {
return;
}
for (var i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
lastElement.childNodes[i].parentNode = lastElement;
}
}
}, {
key: "onError",
value: function onError(code) {
this._errorCode = code;
}
}]);
return SimpleXMLParser;
}(XMLParserBase);
exports.SimpleXMLParser = SimpleXMLParser;
/***/ }),
/* 160 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFDataTransportStream = void 0;
var _regenerator = _interopRequireDefault(__w_pdfjs_require__(147));
var _util = __w_pdfjs_require__(1);
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); }); }; }
var PDFDataTransportStream = function PDFDataTransportStreamClosure() {
function PDFDataTransportStream(params, pdfDataRangeTransport) {
var _this = this;
(0, _util.assert)(pdfDataRangeTransport);
this._queuedChunks = [];
var initialData = params.initialData;
if (initialData && initialData.length > 0) {
var buffer = new Uint8Array(initialData).buffer;
this._queuedChunks.push(buffer);
}
this._pdfDataRangeTransport = pdfDataRangeTransport;
this._isStreamingSupported = !params.disableStream;
this._isRangeSupported = !params.disableRange;
this._contentLength = params.length;
this._fullRequestReader = null;
this._rangeReaders = [];
this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) {
_this._onReceiveData({
begin: begin,
chunk: chunk
});
});
this._pdfDataRangeTransport.addProgressListener(function (loaded) {
_this._onProgress({
loaded: loaded
});
});
this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) {
_this._onReceiveData({
chunk: chunk
});
});
this._pdfDataRangeTransport.transportReady();
}
PDFDataTransportStream.prototype = {
_onReceiveData: function PDFDataTransportStream_onReceiveData(args) {
var buffer = new Uint8Array(args.chunk).buffer;
if (args.begin === undefined) {
if (this._fullRequestReader) {
this._fullRequestReader._enqueue(buffer);
} else {
this._queuedChunks.push(buffer);
}
} else {
var found = this._rangeReaders.some(function (rangeReader) {
if (rangeReader._begin !== args.begin) {
return false;
}
rangeReader._enqueue(buffer);
return true;
});
(0, _util.assert)(found);
}
},
_onProgress: function PDFDataTransportStream_onDataProgress(evt) {
if (this._rangeReaders.length > 0) {
var firstReader = this._rangeReaders[0];
if (firstReader.onProgress) {
firstReader.onProgress({
loaded: evt.loaded
});
}
}
},
_removeRangeReader: function PDFDataTransportStream_removeRangeReader(reader) {
var i = this._rangeReaders.indexOf(reader);
if (i >= 0) {
this._rangeReaders.splice(i, 1);
}
},
getFullReader: function PDFDataTransportStream_getFullReader() {
(0, _util.assert)(!this._fullRequestReader);
var queuedChunks = this._queuedChunks;
this._queuedChunks = null;
return new PDFDataTransportStreamReader(this, queuedChunks);
},
getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) {
var reader = new PDFDataTransportStreamRangeReader(this, begin, end);
this._pdfDataRangeTransport.requestDataRange(begin, end);
this._rangeReaders.push(reader);
return reader;
},
cancelAllRequests: function PDFDataTransportStream_cancelAllRequests(reason) {
if (this._fullRequestReader) {
this._fullRequestReader.cancel(reason);
}
var readers = this._rangeReaders.slice(0);
readers.forEach(function (rangeReader) {
rangeReader.cancel(reason);
});
this._pdfDataRangeTransport.abort();
}
};
function PDFDataTransportStreamReader(stream, queuedChunks) {
this._stream = stream;
this._done = false;
this._filename = null;
this._queuedChunks = queuedChunks || [];
this._requests = [];
this._headersReady = Promise.resolve();
stream._fullRequestReader = this;
this.onProgress = null;
}
PDFDataTransportStreamReader.prototype = {
_enqueue: function PDFDataTransportStreamReader_enqueue(chunk) {
if (this._done) {
return;
}
if (this._requests.length > 0) {
var requestCapability = this._requests.shift();
requestCapability.resolve({
value: chunk,
done: false
});
return;
}
this._queuedChunks.push(chunk);
},
get headersReady() {
return this._headersReady;
},
get filename() {
return this._filename;
},
get isRangeSupported() {
return this._stream._isRangeSupported;
},
get isStreamingSupported() {
return this._stream._isStreamingSupported;
},
get contentLength() {
return this._stream._contentLength;
},
read: function () {
var _read = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var chunk, requestCapability;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!(this._queuedChunks.length > 0)) {
_context.next = 3;
break;
}
chunk = this._queuedChunks.shift();
return _context.abrupt("return", {
value: chunk,
done: false
});
case 3:
if (!this._done) {
_context.next = 5;
break;
}
return _context.abrupt("return", {
value: undefined,
done: true
});
case 5:
requestCapability = (0, _util.createPromiseCapability)();
this._requests.push(requestCapability);
return _context.abrupt("return", requestCapability.promise);
case 8:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function read() {
return _read.apply(this, arguments);
}
return read;
}(),
cancel: function PDFDataTransportStreamReader_cancel(reason) {
this._done = true;
this._requests.forEach(function (requestCapability) {
requestCapability.resolve({
value: undefined,
done: true
});
});
this._requests = [];
}
};
function PDFDataTransportStreamRangeReader(stream, begin, end) {
this._stream = stream;
this._begin = begin;
this._end = end;
this._queuedChunk = null;
this._requests = [];
this._done = false;
this.onProgress = null;
}
PDFDataTransportStreamRangeReader.prototype = {
_enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) {
if (this._done) {
return;
}
if (this._requests.length === 0) {
this._queuedChunk = chunk;
} else {
var requestsCapability = this._requests.shift();
requestsCapability.resolve({
value: chunk,
done: false
});
this._requests.forEach(function (requestCapability) {
requestCapability.resolve({
value: undefined,
done: true
});
});
this._requests = [];
}
this._done = true;
this._stream._removeRangeReader(this);
},
get isStreamingSupported() {
return false;
},
read: function () {
var _read2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2() {
var chunk, requestCapability;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
if (!this._queuedChunk) {
_context2.next = 4;
break;
}
chunk = this._queuedChunk;
this._queuedChunk = null;
return _context2.abrupt("return", {
value: chunk,
done: false
});
case 4:
if (!this._done) {
_context2.next = 6;
break;
}
return _context2.abrupt("return", {
value: undefined,
done: true
});
case 6:
requestCapability = (0, _util.createPromiseCapability)();
this._requests.push(requestCapability);
return _context2.abrupt("return", requestCapability.promise);
case 9:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function read() {
return _read2.apply(this, arguments);
}
return read;
}(),
cancel: function PDFDataTransportStreamRangeReader_cancel(reason) {
this._done = true;
this._requests.forEach(function (requestCapability) {
requestCapability.resolve({
value: undefined,
done: true
});
});
this._requests = [];
this._stream._removeRangeReader(this);
}
};
return PDFDataTransportStream;
}();
exports.PDFDataTransportStream = PDFDataTransportStream;
/***/ }),
/* 161 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.WebGLContext = void 0;
var _util = __w_pdfjs_require__(1);
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 WebGLContext =
/*#__PURE__*/
function () {
function WebGLContext(_ref) {
var _ref$enable = _ref.enable,
enable = _ref$enable === void 0 ? false : _ref$enable;
_classCallCheck(this, WebGLContext);
this._enabled = enable === true;
}
_createClass(WebGLContext, [{
key: "composeSMask",
value: function composeSMask(_ref2) {
var layer = _ref2.layer,
mask = _ref2.mask,
properties = _ref2.properties;
return WebGLUtils.composeSMask(layer, mask, properties);
}
}, {
key: "drawFigures",
value: function drawFigures(_ref3) {
var width = _ref3.width,
height = _ref3.height,
backgroundColor = _ref3.backgroundColor,
figures = _ref3.figures,
context = _ref3.context;
return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);
}
}, {
key: "clear",
value: function clear() {
WebGLUtils.cleanup();
}
}, {
key: "isEnabled",
get: function get() {
var enabled = this._enabled;
if (enabled) {
enabled = WebGLUtils.tryInitGL();
}
return (0, _util.shadow)(this, 'isEnabled', enabled);
}
}]);
return WebGLContext;
}();
exports.WebGLContext = WebGLContext;
var WebGLUtils = function WebGLUtilsClosure() {
function loadShader(gl, code, shaderType) {
var shader = gl.createShader(shaderType);
gl.shaderSource(shader, code);
gl.compileShader(shader);
var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
if (!compiled) {
var errorMsg = gl.getShaderInfoLog(shader);
throw new Error('Error during shader compilation: ' + errorMsg);
}
return shader;
}
function createVertexShader(gl, code) {
return loadShader(gl, code, gl.VERTEX_SHADER);
}
function createFragmentShader(gl, code) {
return loadShader(gl, code, gl.FRAGMENT_SHADER);
}
function createProgram(gl, shaders) {
var program = gl.createProgram();
for (var i = 0, ii = shaders.length; i < ii; ++i) {
gl.attachShader(program, shaders[i]);
}
gl.linkProgram(program);
var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
if (!linked) {
var errorMsg = gl.getProgramInfoLog(program);
throw new Error('Error during program linking: ' + errorMsg);
}
return program;
}
function createTexture(gl, image, textureId) {
gl.activeTexture(textureId);
var texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
return texture;
}
var currentGL, currentCanvas;
function generateGL() {
if (currentGL) {
return;
}
currentCanvas = document.createElement('canvas');
currentGL = currentCanvas.getContext('webgl', {
premultipliedalpha: false
});
}
var smaskVertexShaderCode = '\
attribute vec2 a_position; \
attribute vec2 a_texCoord; \
\
uniform vec2 u_resolution; \
\
varying vec2 v_texCoord; \
\
void main() { \
vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \
gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \
\
v_texCoord = a_texCoord; \
} ';
var smaskFragmentShaderCode = '\
precision mediump float; \
\
uniform vec4 u_backdrop; \
uniform int u_subtype; \
uniform sampler2D u_image; \
uniform sampler2D u_mask; \
\
varying vec2 v_texCoord; \
\
void main() { \
vec4 imageColor = texture2D(u_image, v_texCoord); \
vec4 maskColor = texture2D(u_mask, v_texCoord); \
if (u_backdrop.a > 0.0) { \
maskColor.rgb = maskColor.rgb * maskColor.a + \
u_backdrop.rgb * (1.0 - maskColor.a); \
} \
float lum; \
if (u_subtype == 0) { \
lum = maskColor.a; \
} else { \
lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \
maskColor.b * 0.11; \
} \
imageColor.a *= lum; \
imageColor.rgb *= imageColor.a; \
gl_FragColor = imageColor; \
} ';
var smaskCache = null;
function initSmaskGL() {
var canvas, gl;
generateGL();
canvas = currentCanvas;
currentCanvas = null;
gl = currentGL;
currentGL = null;
var vertexShader = createVertexShader(gl, smaskVertexShaderCode);
var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
var program = createProgram(gl, [vertexShader, fragmentShader]);
gl.useProgram(program);
var cache = {};
cache.gl = gl;
cache.canvas = canvas;
cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
cache.positionLocation = gl.getAttribLocation(program, 'a_position');
cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');
cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');
var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');
var texLayerLocation = gl.getUniformLocation(program, 'u_image');
var texMaskLocation = gl.getUniformLocation(program, 'u_mask');
var texCoordBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);
gl.enableVertexAttribArray(texCoordLocation);
gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);
gl.uniform1i(texLayerLocation, 0);
gl.uniform1i(texMaskLocation, 1);
smaskCache = cache;
}
function composeSMask(layer, mask, properties) {
var width = layer.width,
height = layer.height;
if (!smaskCache) {
initSmaskGL();
}
var cache = smaskCache,
canvas = cache.canvas,
gl = cache.gl;
canvas.width = width;
canvas.height = height;
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
gl.uniform2f(cache.resolutionLocation, width, height);
if (properties.backdrop) {
gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);
} else {
gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);
}
gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0);
var texture = createTexture(gl, layer, gl.TEXTURE0);
var maskTexture = createTexture(gl, mask, gl.TEXTURE1);
var buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);
gl.enableVertexAttribArray(cache.positionLocation);
gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
gl.clearColor(0, 0, 0, 0);
gl.enable(gl.BLEND);
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
gl.clear(gl.COLOR_BUFFER_BIT);
gl.drawArrays(gl.TRIANGLES, 0, 6);
gl.flush();
gl.deleteTexture(texture);
gl.deleteTexture(maskTexture);
gl.deleteBuffer(buffer);
return canvas;
}
var figuresVertexShaderCode = '\
attribute vec2 a_position; \
attribute vec3 a_color; \
\
uniform vec2 u_resolution; \
uniform vec2 u_scale; \
uniform vec2 u_offset; \
\
varying vec4 v_color; \
\
void main() { \
vec2 position = (a_position + u_offset) * u_scale; \
vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \
gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \
\
v_color = vec4(a_color / 255.0, 1.0); \
} ';
var figuresFragmentShaderCode = '\
precision mediump float; \
\
varying vec4 v_color; \
\
void main() { \
gl_FragColor = v_color; \
} ';
var figuresCache = null;
function initFiguresGL() {
var canvas, gl;
generateGL();
canvas = currentCanvas;
currentCanvas = null;
gl = currentGL;
currentGL = null;
var vertexShader = createVertexShader(gl, figuresVertexShaderCode);
var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
var program = createProgram(gl, [vertexShader, fragmentShader]);
gl.useProgram(program);
var cache = {};
cache.gl = gl;
cache.canvas = canvas;
cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');
cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');
cache.positionLocation = gl.getAttribLocation(program, 'a_position');
cache.colorLocation = gl.getAttribLocation(program, 'a_color');
figuresCache = cache;
}
function drawFigures(width, height, backgroundColor, figures, context) {
if (!figuresCache) {
initFiguresGL();
}
var cache = figuresCache,
canvas = cache.canvas,
gl = cache.gl;
canvas.width = width;
canvas.height = height;
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
gl.uniform2f(cache.resolutionLocation, width, height);
var count = 0;
var i, ii, rows;
for (i = 0, ii = figures.length; i < ii; i++) {
switch (figures[i].type) {
case 'lattice':
rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;
break;
case 'triangles':
count += figures[i].coords.length;
break;
}
}
var coords = new Float32Array(count * 2);
var colors = new Uint8Array(count * 3);
var coordsMap = context.coords,
colorsMap = context.colors;
var pIndex = 0,
cIndex = 0;
for (i = 0, ii = figures.length; i < ii; i++) {
var figure = figures[i],
ps = figure.coords,
cs = figure.colors;
switch (figure.type) {
case 'lattice':
var cols = figure.verticesPerRow;
rows = ps.length / cols | 0;
for (var row = 1; row < rows; row++) {
var offset = row * cols + 1;
for (var col = 1; col < cols; col++, offset++) {
coords[pIndex] = coordsMap[ps[offset - cols - 1]];
coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];
coords[pIndex + 2] = coordsMap[ps[offset - cols]];
coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];
coords[pIndex + 4] = coordsMap[ps[offset - 1]];
coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];
colors[cIndex] = colorsMap[cs[offset - cols - 1]];
colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];
colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];
colors[cIndex + 3] = colorsMap[cs[offset - cols]];
colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];
colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];
colors[cIndex + 6] = colorsMap[cs[offset - 1]];
colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];
colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];
coords[pIndex + 6] = coords[pIndex + 2];
coords[pIndex + 7] = coords[pIndex + 3];
coords[pIndex + 8] = coords[pIndex + 4];
coords[pIndex + 9] = coords[pIndex + 5];
coords[pIndex + 10] = coordsMap[ps[offset]];
coords[pIndex + 11] = coordsMap[ps[offset] + 1];
colors[cIndex + 9] = colors[cIndex + 3];
colors[cIndex + 10] = colors[cIndex + 4];
colors[cIndex + 11] = colors[cIndex + 5];
colors[cIndex + 12] = colors[cIndex + 6];
colors[cIndex + 13] = colors[cIndex + 7];
colors[cIndex + 14] = colors[cIndex + 8];
colors[cIndex + 15] = colorsMap[cs[offset]];
colors[cIndex + 16] = colorsMap[cs[offset] + 1];
colors[cIndex + 17] = colorsMap[cs[offset] + 2];
pIndex += 12;
cIndex += 18;
}
}
break;
case 'triangles':
for (var j = 0, jj = ps.length; j < jj; j++) {
coords[pIndex] = coordsMap[ps[j]];
coords[pIndex + 1] = coordsMap[ps[j] + 1];
colors[cIndex] = colorsMap[cs[j]];
colors[cIndex + 1] = colorsMap[cs[j] + 1];
colors[cIndex + 2] = colorsMap[cs[j] + 2];
pIndex += 2;
cIndex += 3;
}
break;
}
}
if (backgroundColor) {
gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);
} else {
gl.clearColor(0, 0, 0, 0);
}
gl.clear(gl.COLOR_BUFFER_BIT);
var coordsBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);
gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);
gl.enableVertexAttribArray(cache.positionLocation);
gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
var colorsBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);
gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);
gl.enableVertexAttribArray(cache.colorLocation);
gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);
gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);
gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);
gl.drawArrays(gl.TRIANGLES, 0, count);
gl.flush();
gl.deleteBuffer(coordsBuffer);
gl.deleteBuffer(colorsBuffer);
return canvas;
}
return {
tryInitGL: function tryInitGL() {
try {
generateGL();
return !!currentGL;
} catch (ex) {}
return false;
},
composeSMask: composeSMask,
drawFigures: drawFigures,
cleanup: function cleanup() {
if (smaskCache && smaskCache.canvas) {
smaskCache.canvas.width = 0;
smaskCache.canvas.height = 0;
}
if (figuresCache && figuresCache.canvas) {
figuresCache.canvas.width = 0;
figuresCache.canvas.height = 0;
}
smaskCache = null;
figuresCache = null;
}
};
}();
/***/ }),
/* 162 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.renderTextLayer = void 0;
var _util = __w_pdfjs_require__(1);
var _global_scope = _interopRequireDefault(__w_pdfjs_require__(3));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var renderTextLayer = function renderTextLayerClosure() {
var MAX_TEXT_DIVS_TO_RENDER = 100000;
var NonWhitespaceRegexp = /\S/;
function isAllWhitespace(str) {
return !NonWhitespaceRegexp.test(str);
}
var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';'];
function appendText(task, geom, styles) {
var textDiv = document.createElement('span');
var textDivProperties = {
style: null,
angle: 0,
canvasWidth: 0,
isWhitespace: false,
originalTransform: null,
paddingBottom: 0,
paddingLeft: 0,
paddingRight: 0,
paddingTop: 0,
scale: 1
};
task._textDivs.push(textDiv);
if (isAllWhitespace(geom.str)) {
textDivProperties.isWhitespace = true;
task._textDivProperties.set(textDiv, textDivProperties);
return;
}
var tx = _util.Util.transform(task._viewport.transform, geom.transform);
var angle = Math.atan2(tx[1], tx[0]);
var style = styles[geom.fontName];
if (style.vertical) {
angle += Math.PI / 2;
}
var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
var fontAscent = fontHeight;
if (style.ascent) {
fontAscent = style.ascent * fontAscent;
} else if (style.descent) {
fontAscent = (1 + style.descent) * fontAscent;
}
var left;
var top;
if (angle === 0) {
left = tx[4];
top = tx[5] - fontAscent;
} else {
left = tx[4] + fontAscent * Math.sin(angle);
top = tx[5] - fontAscent * Math.cos(angle);
}
styleBuf[1] = left;
styleBuf[3] = top;
styleBuf[5] = fontHeight;
styleBuf[7] = style.fontFamily;
textDivProperties.style = styleBuf.join('');
textDiv.setAttribute('style', textDivProperties.style);
textDiv.textContent = geom.str;
if (task._fontInspectorEnabled) {
textDiv.dataset.fontName = geom.fontName;
}
if (angle !== 0) {
textDivProperties.angle = angle * (180 / Math.PI);
}
if (geom.str.length > 1) {
if (style.vertical) {
textDivProperties.canvasWidth = geom.height * task._viewport.scale;
} else {
textDivProperties.canvasWidth = geom.width * task._viewport.scale;
}
}
task._textDivProperties.set(textDiv, textDivProperties);
if (task._textContentStream) {
task._layoutText(textDiv);
}
if (task._enhanceTextSelection) {
var angleCos = 1,
angleSin = 0;
if (angle !== 0) {
angleCos = Math.cos(angle);
angleSin = Math.sin(angle);
}
var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
var divHeight = fontHeight;
var m, b;
if (angle !== 0) {
m = [angleCos, angleSin, -angleSin, angleCos, left, top];
b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);
} else {
b = [left, top, left + divWidth, top + divHeight];
}
task._bounds.push({
left: b[0],
top: b[1],
right: b[2],
bottom: b[3],
div: textDiv,
size: [divWidth, divHeight],
m: m
});
}
}
function render(task) {
if (task._canceled) {
return;
}
var textDivs = task._textDivs;
var capability = task._capability;
var textDivsLength = textDivs.length;
if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
task._renderingDone = true;
capability.resolve();
return;
}
if (!task._textContentStream) {
for (var i = 0; i < textDivsLength; i++) {
task._layoutText(textDivs[i]);
}
}
task._renderingDone = true;
capability.resolve();
}
function expand(task) {
var bounds = task._bounds;
var viewport = task._viewport;
var expanded = expandBounds(viewport.width, viewport.height, bounds);
for (var i = 0; i < expanded.length; i++) {
var div = bounds[i].div;
var divProperties = task._textDivProperties.get(div);
if (divProperties.angle === 0) {
divProperties.paddingLeft = bounds[i].left - expanded[i].left;
divProperties.paddingTop = bounds[i].top - expanded[i].top;
divProperties.paddingRight = expanded[i].right - bounds[i].right;
divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;
task._textDivProperties.set(div, divProperties);
continue;
}
var e = expanded[i],
b = bounds[i];
var m = b.m,
c = m[0],
s = m[1];
var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
var ts = new Float64Array(64);
points.forEach(function (p, i) {
var t = _util.Util.applyTransform(p, m);
ts[i + 0] = c && (e.left - t[0]) / c;
ts[i + 4] = s && (e.top - t[1]) / s;
ts[i + 8] = c && (e.right - t[0]) / c;
ts[i + 12] = s && (e.bottom - t[1]) / s;
ts[i + 16] = s && (e.left - t[0]) / -s;
ts[i + 20] = c && (e.top - t[1]) / c;
ts[i + 24] = s && (e.right - t[0]) / -s;
ts[i + 28] = c && (e.bottom - t[1]) / c;
ts[i + 32] = c && (e.left - t[0]) / -c;
ts[i + 36] = s && (e.top - t[1]) / -s;
ts[i + 40] = c && (e.right - t[0]) / -c;
ts[i + 44] = s && (e.bottom - t[1]) / -s;
ts[i + 48] = s && (e.left - t[0]) / s;
ts[i + 52] = c && (e.top - t[1]) / -c;
ts[i + 56] = s && (e.right - t[0]) / s;
ts[i + 60] = c && (e.bottom - t[1]) / -c;
});
var findPositiveMin = function findPositiveMin(ts, offset, count) {
var result = 0;
for (var i = 0; i < count; i++) {
var t = ts[offset++];
if (t > 0) {
result = result ? Math.min(t, result) : t;
}
}
return result;
};
var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;
task._textDivProperties.set(div, divProperties);
}
}
function expandBounds(width, height, boxes) {
var bounds = boxes.map(function (box, i) {
return {
x1: box.left,
y1: box.top,
x2: box.right,
y2: box.bottom,
index: i,
x1New: undefined,
x2New: undefined
};
});
expandBoundsLTR(width, bounds);
var expanded = new Array(boxes.length);
bounds.forEach(function (b) {
var i = b.index;
expanded[i] = {
left: b.x1New,
top: 0,
right: b.x2New,
bottom: 0
};
});
boxes.map(function (box, i) {
var e = expanded[i],
b = bounds[i];
b.x1 = box.top;
b.y1 = width - e.right;
b.x2 = box.bottom;
b.y2 = width - e.left;
b.index = i;
b.x1New = undefined;
b.x2New = undefined;
});
expandBoundsLTR(height, bounds);
bounds.forEach(function (b) {
var i = b.index;
expanded[i].top = b.x1New;
expanded[i].bottom = b.x2New;
});
return expanded;
}
function expandBoundsLTR(width, bounds) {
bounds.sort(function (a, b) {
return a.x1 - b.x1 || a.index - b.index;
});
var fakeBoundary = {
x1: -Infinity,
y1: -Infinity,
x2: 0,
y2: Infinity,
index: -1,
x1New: 0,
x2New: 0
};
var horizon = [{
start: -Infinity,
end: Infinity,
boundary: fakeBoundary
}];
bounds.forEach(function (boundary) {
var i = 0;
while (i < horizon.length && horizon[i].end <= boundary.y1) {
i++;
}
var j = horizon.length - 1;
while (j >= 0 && horizon[j].start >= boundary.y2) {
j--;
}
var horizonPart, affectedBoundary;
var q,
k,
maxXNew = -Infinity;
for (q = i; q <= j; q++) {
horizonPart = horizon[q];
affectedBoundary = horizonPart.boundary;
var xNew;
if (affectedBoundary.x2 > boundary.x1) {
xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
} else if (affectedBoundary.x2New === undefined) {
xNew = (affectedBoundary.x2 + boundary.x1) / 2;
} else {
xNew = affectedBoundary.x2New;
}
if (xNew > maxXNew) {
maxXNew = xNew;
}
}
boundary.x1New = maxXNew;
for (q = i; q <= j; q++) {
horizonPart = horizon[q];
affectedBoundary = horizonPart.boundary;
if (affectedBoundary.x2New === undefined) {
if (affectedBoundary.x2 > boundary.x1) {
if (affectedBoundary.index > boundary.index) {
affectedBoundary.x2New = affectedBoundary.x2;
}
} else {
affectedBoundary.x2New = maxXNew;
}
} else if (affectedBoundary.x2New > maxXNew) {
affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
}
}
var changedHorizon = [],
lastBoundary = null;
for (q = i; q <= j; q++) {
horizonPart = horizon[q];
affectedBoundary = horizonPart.boundary;
var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
if (lastBoundary === useBoundary) {
changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
} else {
changedHorizon.push({
start: horizonPart.start,
end: horizonPart.end,
boundary: useBoundary
});
lastBoundary = useBoundary;
}
}
if (horizon[i].start < boundary.y1) {
changedHorizon[0].start = boundary.y1;
changedHorizon.unshift({
start: horizon[i].start,
end: boundary.y1,
boundary: horizon[i].boundary
});
}
if (boundary.y2 < horizon[j].end) {
changedHorizon[changedHorizon.length - 1].end = boundary.y2;
changedHorizon.push({
start: boundary.y2,
end: horizon[j].end,
boundary: horizon[j].boundary
});
}
for (q = i; q <= j; q++) {
horizonPart = horizon[q];
affectedBoundary = horizonPart.boundary;
if (affectedBoundary.x2New !== undefined) {
continue;
}
var used = false;
for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
used = horizon[k].boundary === affectedBoundary;
}
for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {
used = horizon[k].boundary === affectedBoundary;
}
for (k = 0; !used && k < changedHorizon.length; k++) {
used = changedHorizon[k].boundary === affectedBoundary;
}
if (!used) {
affectedBoundary.x2New = maxXNew;
}
}
Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
});
horizon.forEach(function (horizonPart) {
var affectedBoundary = horizonPart.boundary;
if (affectedBoundary.x2New === undefined) {
affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
}
});
}
function TextLayerRenderTask(_ref) {
var textContent = _ref.textContent,
textContentStream = _ref.textContentStream,
container = _ref.container,
viewport = _ref.viewport,
textDivs = _ref.textDivs,
textContentItemsStr = _ref.textContentItemsStr,
enhanceTextSelection = _ref.enhanceTextSelection;
this._textContent = textContent;
this._textContentStream = textContentStream;
this._container = container;
this._viewport = viewport;
this._textDivs = textDivs || [];
this._textContentItemsStr = textContentItemsStr || [];
this._enhanceTextSelection = !!enhanceTextSelection;
this._fontInspectorEnabled = !!(_global_scope.default.FontInspector && _global_scope.default.FontInspector.enabled);
this._reader = null;
this._layoutTextLastFontSize = null;
this._layoutTextLastFontFamily = null;
this._layoutTextCtx = null;
this._textDivProperties = new WeakMap();
this._renderingDone = false;
this._canceled = false;
this._capability = (0, _util.createPromiseCapability)();
this._renderTimer = null;
this._bounds = [];
}
TextLayerRenderTask.prototype = {
get promise() {
return this._capability.promise;
},
cancel: function TextLayer_cancel() {
if (this._reader) {
this._reader.cancel(new _util.AbortException('text layer task cancelled'));
this._reader = null;
}
this._canceled = true;
if (this._renderTimer !== null) {
clearTimeout(this._renderTimer);
this._renderTimer = null;
}
this._capability.reject('canceled');
},
_processItems: function _processItems(items, styleCache) {
for (var i = 0, len = items.length; i < len; i++) {
this._textContentItemsStr.push(items[i].str);
appendText(this, items[i], styleCache);
}
},
_layoutText: function _layoutText(textDiv) {
var textLayerFrag = this._container;
var textDivProperties = this._textDivProperties.get(textDiv);
if (textDivProperties.isWhitespace) {
return;
}
var fontSize = textDiv.style.fontSize;
var fontFamily = textDiv.style.fontFamily;
if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {
this._layoutTextCtx.font = fontSize + ' ' + fontFamily;
this._layoutTextLastFontSize = fontSize;
this._layoutTextLastFontFamily = fontFamily;
}
var width = this._layoutTextCtx.measureText(textDiv.textContent).width;
var transform = '';
if (textDivProperties.canvasWidth !== 0 && width > 0) {
textDivProperties.scale = textDivProperties.canvasWidth / width;
transform = "scaleX(".concat(textDivProperties.scale, ")");
}
if (textDivProperties.angle !== 0) {
transform = "rotate(".concat(textDivProperties.angle, "deg) ").concat(transform);
}
if (transform.length > 0) {
textDivProperties.originalTransform = transform;
textDiv.style.transform = transform;
}
this._textDivProperties.set(textDiv, textDivProperties);
textLayerFrag.appendChild(textDiv);
},
_render: function TextLayer_render(timeout) {
var _this = this;
var capability = (0, _util.createPromiseCapability)();
var styleCache = Object.create(null);
var canvas = document.createElement('canvas');
canvas.mozOpaque = true;
this._layoutTextCtx = canvas.getContext('2d', {
alpha: false
});
if (this._textContent) {
var textItems = this._textContent.items;
var textStyles = this._textContent.styles;
this._processItems(textItems, textStyles);
capability.resolve();
} else if (this._textContentStream) {
var pump = function pump() {
_this._reader.read().then(function (_ref2) {
var value = _ref2.value,
done = _ref2.done;
if (done) {
capability.resolve();
return;
}
Object.assign(styleCache, value.styles);
_this._processItems(value.items, styleCache);
pump();
}, capability.reject);
};
this._reader = this._textContentStream.getReader();
pump();
} else {
throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.');
}
capability.promise.then(function () {
styleCache = null;
if (!timeout) {
render(_this);
} else {
_this._renderTimer = setTimeout(function () {
render(_this);
_this._renderTimer = null;
}, timeout);
}
}, this._capability.reject);
},
expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {
if (!this._enhanceTextSelection || !this._renderingDone) {
return;
}
if (this._bounds !== null) {
expand(this);
this._bounds = null;
}
for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
var div = this._textDivs[i];
var divProperties = this._textDivProperties.get(div);
if (divProperties.isWhitespace) {
continue;
}
if (expandDivs) {
var transform = '',
padding = '';
if (divProperties.scale !== 1) {
transform = 'scaleX(' + divProperties.scale + ')';
}
if (divProperties.angle !== 0) {
transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;
}
if (divProperties.paddingLeft !== 0) {
padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;';
transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)';
}
if (divProperties.paddingTop !== 0) {
padding += ' padding-top: ' + divProperties.paddingTop + 'px;';
transform += ' translateY(' + -divProperties.paddingTop + 'px)';
}
if (divProperties.paddingRight !== 0) {
padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;';
}
if (divProperties.paddingBottom !== 0) {
padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;';
}
if (padding !== '') {
div.setAttribute('style', divProperties.style + padding);
}
if (transform !== '') {
div.style.transform = transform;
}
} else {
div.style.padding = 0;
div.style.transform = divProperties.originalTransform || '';
}
}
}
};
function renderTextLayer(renderParameters) {
var task = new TextLayerRenderTask({
textContent: renderParameters.textContent,
textContentStream: renderParameters.textContentStream,
container: renderParameters.container,
viewport: renderParameters.viewport,
textDivs: renderParameters.textDivs,
textContentItemsStr: renderParameters.textContentItemsStr,
enhanceTextSelection: renderParameters.enhanceTextSelection
});
task._render(renderParameters.timeout);
return task;
}
return renderTextLayer;
}();
exports.renderTextLayer = renderTextLayer;
/***/ }),
/* 163 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AnnotationLayer = void 0;
var _dom_utils = __w_pdfjs_require__(151);
var _util = __w_pdfjs_require__(1);
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 _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 _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); }
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 AnnotationElementFactory =
/*#__PURE__*/
function () {
function AnnotationElementFactory() {
_classCallCheck(this, AnnotationElementFactory);
}
_createClass(AnnotationElementFactory, null, [{
key: "create",
value: function create(parameters) {
var subtype = parameters.data.annotationType;
switch (subtype) {
case _util.AnnotationType.LINK:
return new LinkAnnotationElement(parameters);
case _util.AnnotationType.TEXT:
return new TextAnnotationElement(parameters);
case _util.AnnotationType.WIDGET:
var fieldType = parameters.data.fieldType;
switch (fieldType) {
case 'Tx':
return new TextWidgetAnnotationElement(parameters);
case 'Btn':
if (parameters.data.radioButton) {
return new RadioButtonWidgetAnnotationElement(parameters);
} else if (parameters.data.checkBox) {
return new CheckboxWidgetAnnotationElement(parameters);
}
return new PushButtonWidgetAnnotationElement(parameters);
case 'Ch':
return new ChoiceWidgetAnnotationElement(parameters);
}
return new WidgetAnnotationElement(parameters);
case _util.AnnotationType.POPUP:
return new PopupAnnotationElement(parameters);
case _util.AnnotationType.LINE:
return new LineAnnotationElement(parameters);
case _util.AnnotationType.SQUARE:
return new SquareAnnotationElement(parameters);
case _util.AnnotationType.CIRCLE:
return new CircleAnnotationElement(parameters);
case _util.AnnotationType.POLYLINE:
return new PolylineAnnotationElement(parameters);
case _util.AnnotationType.INK:
return new InkAnnotationElement(parameters);
case _util.AnnotationType.POLYGON:
return new PolygonAnnotationElement(parameters);
case _util.AnnotationType.HIGHLIGHT:
return new HighlightAnnotationElement(parameters);
case _util.AnnotationType.UNDERLINE:
return new UnderlineAnnotationElement(parameters);
case _util.AnnotationType.SQUIGGLY:
return new SquigglyAnnotationElement(parameters);
case _util.AnnotationType.STRIKEOUT:
return new StrikeOutAnnotationElement(parameters);
case _util.AnnotationType.STAMP:
return new StampAnnotationElement(parameters);
case _util.AnnotationType.FILEATTACHMENT:
return new FileAttachmentAnnotationElement(parameters);
default:
return new AnnotationElement(parameters);
}
}
}]);
return AnnotationElementFactory;
}();
var AnnotationElement =
/*#__PURE__*/
function () {
function AnnotationElement(parameters) {
var isRenderable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var ignoreBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
_classCallCheck(this, AnnotationElement);
this.isRenderable = isRenderable;
this.data = parameters.data;
this.layer = parameters.layer;
this.page = parameters.page;
this.viewport = parameters.viewport;
this.linkService = parameters.linkService;
this.downloadManager = parameters.downloadManager;
this.imageResourcesPath = parameters.imageResourcesPath;
this.renderInteractiveForms = parameters.renderInteractiveForms;
this.svgFactory = parameters.svgFactory;
if (isRenderable) {
this.container = this._createContainer(ignoreBorder);
}
}
_createClass(AnnotationElement, [{
key: "_createContainer",
value: function _createContainer() {
var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var data = this.data,
page = this.page,
viewport = this.viewport;
var container = document.createElement('section');
var width = data.rect[2] - data.rect[0];
var height = data.rect[3] - data.rect[1];
container.setAttribute('data-annotation-id', data.id);
var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);
container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';
container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';
if (!ignoreBorder && data.borderStyle.width > 0) {
container.style.borderWidth = data.borderStyle.width + 'px';
if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {
width = width - 2 * data.borderStyle.width;
height = height - 2 * data.borderStyle.width;
}
var horizontalRadius = data.borderStyle.horizontalCornerRadius;
var verticalRadius = data.borderStyle.verticalCornerRadius;
if (horizontalRadius > 0 || verticalRadius > 0) {
var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';
container.style.borderRadius = radius;
}
switch (data.borderStyle.style) {
case _util.AnnotationBorderStyleType.SOLID:
container.style.borderStyle = 'solid';
break;
case _util.AnnotationBorderStyleType.DASHED:
container.style.borderStyle = 'dashed';
break;
case _util.AnnotationBorderStyleType.BEVELED:
(0, _util.warn)('Unimplemented border style: beveled');
break;
case _util.AnnotationBorderStyleType.INSET:
(0, _util.warn)('Unimplemented border style: inset');
break;
case _util.AnnotationBorderStyleType.UNDERLINE:
container.style.borderBottomStyle = 'solid';
break;
default:
break;
}
if (data.color) {
container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
} else {
container.style.borderWidth = 0;
}
}
container.style.left = rect[0] + 'px';
container.style.top = rect[1] + 'px';
container.style.width = width + 'px';
container.style.height = height + 'px';
return container;
}
}, {
key: "_createPopup",
value: function _createPopup(container, trigger, data) {
if (!trigger) {
trigger = document.createElement('div');
trigger.style.height = container.style.height;
trigger.style.width = container.style.width;
container.appendChild(trigger);
}
var popupElement = new PopupElement({
container: container,
trigger: trigger,
color: data.color,
title: data.title,
contents: data.contents,
hideWrapper: true
});
var popup = popupElement.render();
popup.style.left = container.style.width;
container.appendChild(popup);
}
}, {
key: "render",
value: function render() {
(0, _util.unreachable)('Abstract method `AnnotationElement.render` called');
}
}]);
return AnnotationElement;
}();
var LinkAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement) {
_inherits(LinkAnnotationElement, _AnnotationElement);
function LinkAnnotationElement(parameters) {
_classCallCheck(this, LinkAnnotationElement);
var isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);
return _possibleConstructorReturn(this, _getPrototypeOf(LinkAnnotationElement).call(this, parameters, isRenderable));
}
_createClass(LinkAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'linkAnnotation';
var data = this.data,
linkService = this.linkService;
var link = document.createElement('a');
(0, _dom_utils.addLinkAttributes)(link, {
url: data.url,
target: data.newWindow ? _dom_utils.LinkTarget.BLANK : linkService.externalLinkTarget,
rel: linkService.externalLinkRel
});
if (!data.url) {
if (data.action) {
this._bindNamedAction(link, data.action);
} else {
this._bindLink(link, data.dest);
}
}
this.container.appendChild(link);
return this.container;
}
}, {
key: "_bindLink",
value: function _bindLink(link, destination) {
var _this = this;
link.href = this.linkService.getDestinationHash(destination);
link.onclick = function () {
if (destination) {
_this.linkService.navigateTo(destination);
}
return false;
};
if (destination) {
link.className = 'internalLink';
}
}
}, {
key: "_bindNamedAction",
value: function _bindNamedAction(link, action) {
var _this2 = this;
link.href = this.linkService.getAnchorUrl('');
link.onclick = function () {
_this2.linkService.executeNamedAction(action);
return false;
};
link.className = 'internalLink';
}
}]);
return LinkAnnotationElement;
}(AnnotationElement);
var TextAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement2) {
_inherits(TextAnnotationElement, _AnnotationElement2);
function TextAnnotationElement(parameters) {
_classCallCheck(this, TextAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(TextAnnotationElement).call(this, parameters, isRenderable));
}
_createClass(TextAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'textAnnotation';
var image = document.createElement('img');
image.style.height = this.container.style.height;
image.style.width = this.container.style.width;
image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg';
image.alt = '[{{type}} Annotation]';
image.dataset.l10nId = 'text_annotation_type';
image.dataset.l10nArgs = JSON.stringify({
type: this.data.name
});
if (!this.data.hasPopup) {
this._createPopup(this.container, image, this.data);
}
this.container.appendChild(image);
return this.container;
}
}]);
return TextAnnotationElement;
}(AnnotationElement);
var WidgetAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement3) {
_inherits(WidgetAnnotationElement, _AnnotationElement3);
function WidgetAnnotationElement() {
_classCallCheck(this, WidgetAnnotationElement);
return _possibleConstructorReturn(this, _getPrototypeOf(WidgetAnnotationElement).apply(this, arguments));
}
_createClass(WidgetAnnotationElement, [{
key: "render",
value: function render() {
return this.container;
}
}]);
return WidgetAnnotationElement;
}(AnnotationElement);
var TextWidgetAnnotationElement =
/*#__PURE__*/
function (_WidgetAnnotationElem) {
_inherits(TextWidgetAnnotationElement, _WidgetAnnotationElem);
function TextWidgetAnnotationElement(parameters) {
_classCallCheck(this, TextWidgetAnnotationElement);
var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
return _possibleConstructorReturn(this, _getPrototypeOf(TextWidgetAnnotationElement).call(this, parameters, isRenderable));
}
_createClass(TextWidgetAnnotationElement, [{
key: "render",
value: function render() {
var TEXT_ALIGNMENT = ['left', 'center', 'right'];
this.container.className = 'textWidgetAnnotation';
var element = null;
if (this.renderInteractiveForms) {
if (this.data.multiLine) {
element = document.createElement('textarea');
element.textContent = this.data.fieldValue;
} else {
element = document.createElement('input');
element.type = 'text';
element.setAttribute('value', this.data.fieldValue);
}
element.disabled = this.data.readOnly;
if (this.data.maxLen !== null) {
element.maxLength = this.data.maxLen;
}
if (this.data.comb) {
var fieldWidth = this.data.rect[2] - this.data.rect[0];
var combWidth = fieldWidth / this.data.maxLen;
element.classList.add('comb');
element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';
}
} else {
element = document.createElement('div');
element.textContent = this.data.fieldValue;
element.style.verticalAlign = 'middle';
element.style.display = 'table-cell';
var font = null;
if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) {
font = this.page.commonObjs.get(this.data.fontRefName);
}
this._setTextStyle(element, font);
}
if (this.data.textAlignment !== null) {
element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
}
this.container.appendChild(element);
return this.container;
}
}, {
key: "_setTextStyle",
value: function _setTextStyle(element, font) {
var style = element.style;
style.fontSize = this.data.fontSize + 'px';
style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr';
if (!font) {
return;
}
style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal';
style.fontStyle = font.italic ? 'italic' : 'normal';
var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : '';
var fallbackName = font.fallbackName || 'Helvetica, sans-serif';
style.fontFamily = fontFamily + fallbackName;
}
}]);
return TextWidgetAnnotationElement;
}(WidgetAnnotationElement);
var CheckboxWidgetAnnotationElement =
/*#__PURE__*/
function (_WidgetAnnotationElem2) {
_inherits(CheckboxWidgetAnnotationElement, _WidgetAnnotationElem2);
function CheckboxWidgetAnnotationElement(parameters) {
_classCallCheck(this, CheckboxWidgetAnnotationElement);
return _possibleConstructorReturn(this, _getPrototypeOf(CheckboxWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms));
}
_createClass(CheckboxWidgetAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'buttonWidgetAnnotation checkBox';
var element = document.createElement('input');
element.disabled = this.data.readOnly;
element.type = 'checkbox';
if (this.data.fieldValue && this.data.fieldValue !== 'Off') {
element.setAttribute('checked', true);
}
this.container.appendChild(element);
return this.container;
}
}]);
return CheckboxWidgetAnnotationElement;
}(WidgetAnnotationElement);
var RadioButtonWidgetAnnotationElement =
/*#__PURE__*/
function (_WidgetAnnotationElem3) {
_inherits(RadioButtonWidgetAnnotationElement, _WidgetAnnotationElem3);
function RadioButtonWidgetAnnotationElement(parameters) {
_classCallCheck(this, RadioButtonWidgetAnnotationElement);
return _possibleConstructorReturn(this, _getPrototypeOf(RadioButtonWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms));
}
_createClass(RadioButtonWidgetAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'buttonWidgetAnnotation radioButton';
var element = document.createElement('input');
element.disabled = this.data.readOnly;
element.type = 'radio';
element.name = this.data.fieldName;
if (this.data.fieldValue === this.data.buttonValue) {
element.setAttribute('checked', true);
}
this.container.appendChild(element);
return this.container;
}
}]);
return RadioButtonWidgetAnnotationElement;
}(WidgetAnnotationElement);
var PushButtonWidgetAnnotationElement =
/*#__PURE__*/
function (_LinkAnnotationElemen) {
_inherits(PushButtonWidgetAnnotationElement, _LinkAnnotationElemen);
function PushButtonWidgetAnnotationElement() {
_classCallCheck(this, PushButtonWidgetAnnotationElement);
return _possibleConstructorReturn(this, _getPrototypeOf(PushButtonWidgetAnnotationElement).apply(this, arguments));
}
_createClass(PushButtonWidgetAnnotationElement, [{
key: "render",
value: function render() {
var container = _get(_getPrototypeOf(PushButtonWidgetAnnotationElement.prototype), "render", this).call(this);
container.className = 'buttonWidgetAnnotation pushButton';
return container;
}
}]);
return PushButtonWidgetAnnotationElement;
}(LinkAnnotationElement);
var ChoiceWidgetAnnotationElement =
/*#__PURE__*/
function (_WidgetAnnotationElem4) {
_inherits(ChoiceWidgetAnnotationElement, _WidgetAnnotationElem4);
function ChoiceWidgetAnnotationElement(parameters) {
_classCallCheck(this, ChoiceWidgetAnnotationElement);
return _possibleConstructorReturn(this, _getPrototypeOf(ChoiceWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms));
}
_createClass(ChoiceWidgetAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'choiceWidgetAnnotation';
var selectElement = document.createElement('select');
selectElement.disabled = this.data.readOnly;
if (!this.data.combo) {
selectElement.size = this.data.options.length;
if (this.data.multiSelect) {
selectElement.multiple = true;
}
}
for (var i = 0, ii = this.data.options.length; i < ii; i++) {
var option = this.data.options[i];
var optionElement = document.createElement('option');
optionElement.textContent = option.displayValue;
optionElement.value = option.exportValue;
if (this.data.fieldValue.includes(option.displayValue)) {
optionElement.setAttribute('selected', true);
}
selectElement.appendChild(optionElement);
}
this.container.appendChild(selectElement);
return this.container;
}
}]);
return ChoiceWidgetAnnotationElement;
}(WidgetAnnotationElement);
var PopupAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement4) {
_inherits(PopupAnnotationElement, _AnnotationElement4);
function PopupAnnotationElement(parameters) {
_classCallCheck(this, PopupAnnotationElement);
var isRenderable = !!(parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(PopupAnnotationElement).call(this, parameters, isRenderable));
}
_createClass(PopupAnnotationElement, [{
key: "render",
value: function render() {
var IGNORE_TYPES = ['Line', 'Square', 'Circle', 'PolyLine', 'Polygon', 'Ink'];
this.container.className = 'popupAnnotation';
if (IGNORE_TYPES.includes(this.data.parentType)) {
return this.container;
}
var selector = '[data-annotation-id="' + this.data.parentId + '"]';
var parentElement = this.layer.querySelector(selector);
if (!parentElement) {
return this.container;
}
var popup = new PopupElement({
container: this.container,
trigger: parentElement,
color: this.data.color,
title: this.data.title,
contents: this.data.contents
});
var parentLeft = parseFloat(parentElement.style.left);
var parentWidth = parseFloat(parentElement.style.width);
this.container.style.transformOrigin = -(parentLeft + parentWidth) + 'px -' + parentElement.style.top;
this.container.style.left = parentLeft + parentWidth + 'px';
this.container.appendChild(popup.render());
return this.container;
}
}]);
return PopupAnnotationElement;
}(AnnotationElement);
var PopupElement =
/*#__PURE__*/
function () {
function PopupElement(parameters) {
_classCallCheck(this, PopupElement);
this.container = parameters.container;
this.trigger = parameters.trigger;
this.color = parameters.color;
this.title = parameters.title;
this.contents = parameters.contents;
this.hideWrapper = parameters.hideWrapper || false;
this.pinned = false;
}
_createClass(PopupElement, [{
key: "render",
value: function render() {
var BACKGROUND_ENLIGHT = 0.7;
var wrapper = document.createElement('div');
wrapper.className = 'popupWrapper';
this.hideElement = this.hideWrapper ? wrapper : this.container;
this.hideElement.setAttribute('hidden', true);
var popup = document.createElement('div');
popup.className = 'popup';
var color = this.color;
if (color) {
var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);
}
var contents = this._formatContents(this.contents);
var title = document.createElement('h1');
title.textContent = this.title;
this.trigger.addEventListener('click', this._toggle.bind(this));
this.trigger.addEventListener('mouseover', this._show.bind(this, false));
this.trigger.addEventListener('mouseout', this._hide.bind(this, false));
popup.addEventListener('click', this._hide.bind(this, true));
popup.appendChild(title);
popup.appendChild(contents);
wrapper.appendChild(popup);
return wrapper;
}
}, {
key: "_formatContents",
value: function _formatContents(contents) {
var p = document.createElement('p');
var lines = contents.split(/(?:\r\n?|\n)/);
for (var i = 0, ii = lines.length; i < ii; ++i) {
var line = lines[i];
p.appendChild(document.createTextNode(line));
if (i < ii - 1) {
p.appendChild(document.createElement('br'));
}
}
return p;
}
}, {
key: "_toggle",
value: function _toggle() {
if (this.pinned) {
this._hide(true);
} else {
this._show(true);
}
}
}, {
key: "_show",
value: function _show() {
var pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (pin) {
this.pinned = true;
}
if (this.hideElement.hasAttribute('hidden')) {
this.hideElement.removeAttribute('hidden');
this.container.style.zIndex += 1;
}
}
}, {
key: "_hide",
value: function _hide() {
var unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
if (unpin) {
this.pinned = false;
}
if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {
this.hideElement.setAttribute('hidden', true);
this.container.style.zIndex -= 1;
}
}
}]);
return PopupElement;
}();
var LineAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement5) {
_inherits(LineAnnotationElement, _AnnotationElement5);
function LineAnnotationElement(parameters) {
_classCallCheck(this, LineAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(LineAnnotationElement).call(this, parameters, isRenderable, true));
}
_createClass(LineAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'lineAnnotation';
var data = this.data;
var width = data.rect[2] - data.rect[0];
var height = data.rect[3] - data.rect[1];
var svg = this.svgFactory.create(width, height);
var line = this.svgFactory.createElement('svg:line');
line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);
line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);
line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);
line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);
line.setAttribute('stroke-width', data.borderStyle.width);
line.setAttribute('stroke', 'transparent');
svg.appendChild(line);
this.container.append(svg);
this._createPopup(this.container, line, data);
return this.container;
}
}]);
return LineAnnotationElement;
}(AnnotationElement);
var SquareAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement6) {
_inherits(SquareAnnotationElement, _AnnotationElement6);
function SquareAnnotationElement(parameters) {
_classCallCheck(this, SquareAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(SquareAnnotationElement).call(this, parameters, isRenderable, true));
}
_createClass(SquareAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'squareAnnotation';
var data = this.data;
var width = data.rect[2] - data.rect[0];
var height = data.rect[3] - data.rect[1];
var svg = this.svgFactory.create(width, height);
var borderWidth = data.borderStyle.width;
var square = this.svgFactory.createElement('svg:rect');
square.setAttribute('x', borderWidth / 2);
square.setAttribute('y', borderWidth / 2);
square.setAttribute('width', width - borderWidth);
square.setAttribute('height', height - borderWidth);
square.setAttribute('stroke-width', borderWidth);
square.setAttribute('stroke', 'transparent');
square.setAttribute('fill', 'none');
svg.appendChild(square);
this.container.append(svg);
this._createPopup(this.container, square, data);
return this.container;
}
}]);
return SquareAnnotationElement;
}(AnnotationElement);
var CircleAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement7) {
_inherits(CircleAnnotationElement, _AnnotationElement7);
function CircleAnnotationElement(parameters) {
_classCallCheck(this, CircleAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(CircleAnnotationElement).call(this, parameters, isRenderable, true));
}
_createClass(CircleAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'circleAnnotation';
var data = this.data;
var width = data.rect[2] - data.rect[0];
var height = data.rect[3] - data.rect[1];
var svg = this.svgFactory.create(width, height);
var borderWidth = data.borderStyle.width;
var circle = this.svgFactory.createElement('svg:ellipse');
circle.setAttribute('cx', width / 2);
circle.setAttribute('cy', height / 2);
circle.setAttribute('rx', width / 2 - borderWidth / 2);
circle.setAttribute('ry', height / 2 - borderWidth / 2);
circle.setAttribute('stroke-width', borderWidth);
circle.setAttribute('stroke', 'transparent');
circle.setAttribute('fill', 'none');
svg.appendChild(circle);
this.container.append(svg);
this._createPopup(this.container, circle, data);
return this.container;
}
}]);
return CircleAnnotationElement;
}(AnnotationElement);
var PolylineAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement8) {
_inherits(PolylineAnnotationElement, _AnnotationElement8);
function PolylineAnnotationElement(parameters) {
var _this3;
_classCallCheck(this, PolylineAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
_this3 = _possibleConstructorReturn(this, _getPrototypeOf(PolylineAnnotationElement).call(this, parameters, isRenderable, true));
_this3.containerClassName = 'polylineAnnotation';
_this3.svgElementName = 'svg:polyline';
return _this3;
}
_createClass(PolylineAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = this.containerClassName;
var data = this.data;
var width = data.rect[2] - data.rect[0];
var height = data.rect[3] - data.rect[1];
var svg = this.svgFactory.create(width, height);
var vertices = data.vertices;
var points = [];
for (var i = 0, ii = vertices.length; i < ii; i++) {
var x = vertices[i].x - data.rect[0];
var y = data.rect[3] - vertices[i].y;
points.push(x + ',' + y);
}
points = points.join(' ');
var borderWidth = data.borderStyle.width;
var polyline = this.svgFactory.createElement(this.svgElementName);
polyline.setAttribute('points', points);
polyline.setAttribute('stroke-width', borderWidth);
polyline.setAttribute('stroke', 'transparent');
polyline.setAttribute('fill', 'none');
svg.appendChild(polyline);
this.container.append(svg);
this._createPopup(this.container, polyline, data);
return this.container;
}
}]);
return PolylineAnnotationElement;
}(AnnotationElement);
var PolygonAnnotationElement =
/*#__PURE__*/
function (_PolylineAnnotationEl) {
_inherits(PolygonAnnotationElement, _PolylineAnnotationEl);
function PolygonAnnotationElement(parameters) {
var _this4;
_classCallCheck(this, PolygonAnnotationElement);
_this4 = _possibleConstructorReturn(this, _getPrototypeOf(PolygonAnnotationElement).call(this, parameters));
_this4.containerClassName = 'polygonAnnotation';
_this4.svgElementName = 'svg:polygon';
return _this4;
}
return PolygonAnnotationElement;
}(PolylineAnnotationElement);
var InkAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement9) {
_inherits(InkAnnotationElement, _AnnotationElement9);
function InkAnnotationElement(parameters) {
var _this5;
_classCallCheck(this, InkAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
_this5 = _possibleConstructorReturn(this, _getPrototypeOf(InkAnnotationElement).call(this, parameters, isRenderable, true));
_this5.containerClassName = 'inkAnnotation';
_this5.svgElementName = 'svg:polyline';
return _this5;
}
_createClass(InkAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = this.containerClassName;
var data = this.data;
var width = data.rect[2] - data.rect[0];
var height = data.rect[3] - data.rect[1];
var svg = this.svgFactory.create(width, height);
var inkLists = data.inkLists;
for (var i = 0, ii = inkLists.length; i < ii; i++) {
var inkList = inkLists[i];
var points = [];
for (var j = 0, jj = inkList.length; j < jj; j++) {
var x = inkList[j].x - data.rect[0];
var y = data.rect[3] - inkList[j].y;
points.push(x + ',' + y);
}
points = points.join(' ');
var borderWidth = data.borderStyle.width;
var polyline = this.svgFactory.createElement(this.svgElementName);
polyline.setAttribute('points', points);
polyline.setAttribute('stroke-width', borderWidth);
polyline.setAttribute('stroke', 'transparent');
polyline.setAttribute('fill', 'none');
this._createPopup(this.container, polyline, data);
svg.appendChild(polyline);
}
this.container.append(svg);
return this.container;
}
}]);
return InkAnnotationElement;
}(AnnotationElement);
var HighlightAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement10) {
_inherits(HighlightAnnotationElement, _AnnotationElement10);
function HighlightAnnotationElement(parameters) {
_classCallCheck(this, HighlightAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(HighlightAnnotationElement).call(this, parameters, isRenderable, true));
}
_createClass(HighlightAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'highlightAnnotation';
if (!this.data.hasPopup) {
this._createPopup(this.container, null, this.data);
}
return this.container;
}
}]);
return HighlightAnnotationElement;
}(AnnotationElement);
var UnderlineAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement11) {
_inherits(UnderlineAnnotationElement, _AnnotationElement11);
function UnderlineAnnotationElement(parameters) {
_classCallCheck(this, UnderlineAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(UnderlineAnnotationElement).call(this, parameters, isRenderable, true));
}
_createClass(UnderlineAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'underlineAnnotation';
if (!this.data.hasPopup) {
this._createPopup(this.container, null, this.data);
}
return this.container;
}
}]);
return UnderlineAnnotationElement;
}(AnnotationElement);
var SquigglyAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement12) {
_inherits(SquigglyAnnotationElement, _AnnotationElement12);
function SquigglyAnnotationElement(parameters) {
_classCallCheck(this, SquigglyAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(SquigglyAnnotationElement).call(this, parameters, isRenderable, true));
}
_createClass(SquigglyAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'squigglyAnnotation';
if (!this.data.hasPopup) {
this._createPopup(this.container, null, this.data);
}
return this.container;
}
}]);
return SquigglyAnnotationElement;
}(AnnotationElement);
var StrikeOutAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement13) {
_inherits(StrikeOutAnnotationElement, _AnnotationElement13);
function StrikeOutAnnotationElement(parameters) {
_classCallCheck(this, StrikeOutAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(StrikeOutAnnotationElement).call(this, parameters, isRenderable, true));
}
_createClass(StrikeOutAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'strikeoutAnnotation';
if (!this.data.hasPopup) {
this._createPopup(this.container, null, this.data);
}
return this.container;
}
}]);
return StrikeOutAnnotationElement;
}(AnnotationElement);
var StampAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement14) {
_inherits(StampAnnotationElement, _AnnotationElement14);
function StampAnnotationElement(parameters) {
_classCallCheck(this, StampAnnotationElement);
var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
return _possibleConstructorReturn(this, _getPrototypeOf(StampAnnotationElement).call(this, parameters, isRenderable, true));
}
_createClass(StampAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'stampAnnotation';
if (!this.data.hasPopup) {
this._createPopup(this.container, null, this.data);
}
return this.container;
}
}]);
return StampAnnotationElement;
}(AnnotationElement);
var FileAttachmentAnnotationElement =
/*#__PURE__*/
function (_AnnotationElement15) {
_inherits(FileAttachmentAnnotationElement, _AnnotationElement15);
function FileAttachmentAnnotationElement(parameters) {
var _this6;
_classCallCheck(this, FileAttachmentAnnotationElement);
_this6 = _possibleConstructorReturn(this, _getPrototypeOf(FileAttachmentAnnotationElement).call(this, parameters, true));
var _this6$data$file = _this6.data.file,
filename = _this6$data$file.filename,
content = _this6$data$file.content;
_this6.filename = (0, _dom_utils.getFilenameFromUrl)(filename);
_this6.content = content;
if (_this6.linkService.eventBus) {
_this6.linkService.eventBus.dispatch('fileattachmentannotation', {
source: _assertThisInitialized(_assertThisInitialized(_this6)),
id: (0, _util.stringToPDFString)(filename),
filename: filename,
content: content
});
}
return _this6;
}
_createClass(FileAttachmentAnnotationElement, [{
key: "render",
value: function render() {
this.container.className = 'fileAttachmentAnnotation';
var trigger = document.createElement('div');
trigger.style.height = this.container.style.height;
trigger.style.width = this.container.style.width;
trigger.addEventListener('dblclick', this._download.bind(this));
if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
this._createPopup(this.container, trigger, this.data);
}
this.container.appendChild(trigger);
return this.container;
}
}, {
key: "_download",
value: function _download() {
if (!this.downloadManager) {
(0, _util.warn)('Download cannot be started due to unavailable download manager');
return;
}
this.downloadManager.downloadData(this.content, this.filename, '');
}
}]);
return FileAttachmentAnnotationElement;
}(AnnotationElement);
var AnnotationLayer =
/*#__PURE__*/
function () {
function AnnotationLayer() {
_classCallCheck(this, AnnotationLayer);
}
_createClass(AnnotationLayer, null, [{
key: "render",
value: function render(parameters) {
for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
var data = parameters.annotations[i];
if (!data) {
continue;
}
var element = AnnotationElementFactory.create({
data: data,
layer: parameters.div,
page: parameters.page,
viewport: parameters.viewport,
linkService: parameters.linkService,
downloadManager: parameters.downloadManager,
imageResourcesPath: parameters.imageResourcesPath || '',
renderInteractiveForms: parameters.renderInteractiveForms || false,
svgFactory: new _dom_utils.DOMSVGFactory()
});
if (element.isRenderable) {
parameters.div.appendChild(element.render());
}
}
}
}, {
key: "update",
value: function update(parameters) {
for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
var data = parameters.annotations[i];
var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]');
if (element) {
element.style.transform = 'matrix(' + parameters.viewport.transform.join(',') + ')';
}
}
parameters.div.removeAttribute('hidden');
}
}]);
return AnnotationLayer;
}();
exports.AnnotationLayer = AnnotationLayer;
/***/ }),
/* 164 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SVGGraphics = void 0;
var _util = __w_pdfjs_require__(1);
var _dom_utils = __w_pdfjs_require__(151);
var _is_node = _interopRequireDefault(__w_pdfjs_require__(4));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var SVGGraphics = function SVGGraphics() {
throw new Error('Not implemented: SVGGraphics');
};
exports.SVGGraphics = SVGGraphics;
{
var SVG_DEFAULTS = {
fontStyle: 'normal',
fontWeight: 'normal',
fillColor: '#000000'
};
var convertImgDataToPng = function convertImgDataToPngClosure() {
var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
var CHUNK_WRAPPER_SIZE = 12;
var crcTable = new Int32Array(256);
for (var i = 0; i < 256; i++) {
var c = i;
for (var h = 0; h < 8; h++) {
if (c & 1) {
c = 0xedB88320 ^ c >> 1 & 0x7fffffff;
} else {
c = c >> 1 & 0x7fffffff;
}
}
crcTable[i] = c;
}
function crc32(data, start, end) {
var crc = -1;
for (var i = start; i < end; i++) {
var a = (crc ^ data[i]) & 0xff;
var b = crcTable[a];
crc = crc >>> 8 ^ b;
}
return crc ^ -1;
}
function writePngChunk(type, body, data, offset) {
var p = offset;
var len = body.length;
data[p] = len >> 24 & 0xff;
data[p + 1] = len >> 16 & 0xff;
data[p + 2] = len >> 8 & 0xff;
data[p + 3] = len & 0xff;
p += 4;
data[p] = type.charCodeAt(0) & 0xff;
data[p + 1] = type.charCodeAt(1) & 0xff;
data[p + 2] = type.charCodeAt(2) & 0xff;
data[p + 3] = type.charCodeAt(3) & 0xff;
p += 4;
data.set(body, p);
p += body.length;
var crc = crc32(data, offset + 4, p);
data[p] = crc >> 24 & 0xff;
data[p + 1] = crc >> 16 & 0xff;
data[p + 2] = crc >> 8 & 0xff;
data[p + 3] = crc & 0xff;
}
function adler32(data, start, end) {
var a = 1;
var b = 0;
for (var i = start; i < end; ++i) {
a = (a + (data[i] & 0xff)) % 65521;
b = (b + a) % 65521;
}
return b << 16 | a;
}
function deflateSync(literals) {
if (!(0, _is_node.default)()) {
return deflateSyncUncompressed(literals);
}
try {
var input;
if (parseInt(process.versions.node) >= 8) {
input = literals;
} else {
input = new Buffer(literals);
}
var output = require('zlib').deflateSync(input, {
level: 9
});
return output instanceof Uint8Array ? output : new Uint8Array(output);
} catch (e) {
(0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);
}
return deflateSyncUncompressed(literals);
}
function deflateSyncUncompressed(literals) {
var len = literals.length;
var maxBlockLength = 0xFFFF;
var deflateBlocks = Math.ceil(len / maxBlockLength);
var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);
var pi = 0;
idat[pi++] = 0x78;
idat[pi++] = 0x9c;
var pos = 0;
while (len > maxBlockLength) {
idat[pi++] = 0x00;
idat[pi++] = 0xff;
idat[pi++] = 0xff;
idat[pi++] = 0x00;
idat[pi++] = 0x00;
idat.set(literals.subarray(pos, pos + maxBlockLength), pi);
pi += maxBlockLength;
pos += maxBlockLength;
len -= maxBlockLength;
}
idat[pi++] = 0x01;
idat[pi++] = len & 0xff;
idat[pi++] = len >> 8 & 0xff;
idat[pi++] = ~len & 0xffff & 0xff;
idat[pi++] = (~len & 0xffff) >> 8 & 0xff;
idat.set(literals.subarray(pos), pi);
pi += literals.length - pos;
var adler = adler32(literals, 0, literals.length);
idat[pi++] = adler >> 24 & 0xff;
idat[pi++] = adler >> 16 & 0xff;
idat[pi++] = adler >> 8 & 0xff;
idat[pi++] = adler & 0xff;
return idat;
}
function encode(imgData, kind, forceDataSchema, isMask) {
var width = imgData.width;
var height = imgData.height;
var bitDepth, colorType, lineSize;
var bytes = imgData.data;
switch (kind) {
case _util.ImageKind.GRAYSCALE_1BPP:
colorType = 0;
bitDepth = 1;
lineSize = width + 7 >> 3;
break;
case _util.ImageKind.RGB_24BPP:
colorType = 2;
bitDepth = 8;
lineSize = width * 3;
break;
case _util.ImageKind.RGBA_32BPP:
colorType = 6;
bitDepth = 8;
lineSize = width * 4;
break;
default:
throw new Error('invalid format');
}
var literals = new Uint8Array((1 + lineSize) * height);
var offsetLiterals = 0,
offsetBytes = 0;
var y, i;
for (y = 0; y < height; ++y) {
literals[offsetLiterals++] = 0;
literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);
offsetBytes += lineSize;
offsetLiterals += lineSize;
}
if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {
offsetLiterals = 0;
for (y = 0; y < height; y++) {
offsetLiterals++;
for (i = 0; i < lineSize; i++) {
literals[offsetLiterals++] ^= 0xFF;
}
}
}
var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);
var idat = deflateSync(literals);
var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;
var data = new Uint8Array(pngLength);
var offset = 0;
data.set(PNG_HEADER, offset);
offset += PNG_HEADER.length;
writePngChunk('IHDR', ihdr, data, offset);
offset += CHUNK_WRAPPER_SIZE + ihdr.length;
writePngChunk('IDATA', idat, data, offset);
offset += CHUNK_WRAPPER_SIZE + idat.length;
writePngChunk('IEND', new Uint8Array(0), data, offset);
return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema);
}
return function convertImgDataToPng(imgData, forceDataSchema, isMask) {
var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;
return encode(imgData, kind, forceDataSchema, isMask);
};
}();
var SVGExtraState = function SVGExtraStateClosure() {
function SVGExtraState() {
this.fontSizeScale = 1;
this.fontWeight = SVG_DEFAULTS.fontWeight;
this.fontSize = 0;
this.textMatrix = _util.IDENTITY_MATRIX;
this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
this.leading = 0;
this.textRenderingMode = _util.TextRenderingMode.FILL;
this.x = 0;
this.y = 0;
this.lineX = 0;
this.lineY = 0;
this.charSpacing = 0;
this.wordSpacing = 0;
this.textHScale = 1;
this.textRise = 0;
this.fillColor = SVG_DEFAULTS.fillColor;
this.strokeColor = '#000000';
this.fillAlpha = 1;
this.strokeAlpha = 1;
this.lineWidth = 1;
this.lineJoin = '';
this.lineCap = '';
this.miterLimit = 0;
this.dashArray = [];
this.dashPhase = 0;
this.dependencies = [];
this.activeClipUrl = null;
this.clipGroup = null;
this.maskId = '';
}
SVGExtraState.prototype = {
clone: function SVGExtraState_clone() {
return Object.create(this);
},
setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {
this.x = x;
this.y = y;
}
};
return SVGExtraState;
}();
exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() {
function opListToTree(opList) {
var opTree = [];
var tmp = [];
var opListLen = opList.length;
for (var x = 0; x < opListLen; x++) {
if (opList[x].fn === 'save') {
opTree.push({
'fnId': 92,
'fn': 'group',
'items': []
});
tmp.push(opTree);
opTree = opTree[opTree.length - 1].items;
continue;
}
if (opList[x].fn === 'restore') {
opTree = tmp.pop();
} else {
opTree.push(opList[x]);
}
}
return opTree;
}
function pf(value) {
if (Number.isInteger(value)) {
return value.toString();
}
var s = value.toFixed(10);
var i = s.length - 1;
if (s[i] !== '0') {
return s;
}
do {
i--;
} while (s[i] === '0');
return s.substring(0, s[i] === '.' ? i : i + 1);
}
function pm(m) {
if (m[4] === 0 && m[5] === 0) {
if (m[1] === 0 && m[2] === 0) {
if (m[0] === 1 && m[3] === 1) {
return '';
}
return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';
}
if (m[0] === m[3] && m[1] === -m[2]) {
var a = Math.acos(m[0]) * 180 / Math.PI;
return 'rotate(' + pf(a) + ')';
}
} else {
if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';
}
}
return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';
}
function SVGGraphics(commonObjs, objs, forceDataSchema) {
this.svgFactory = new _dom_utils.DOMSVGFactory();
this.current = new SVGExtraState();
this.transformMatrix = _util.IDENTITY_MATRIX;
this.transformStack = [];
this.extraStack = [];
this.commonObjs = commonObjs;
this.objs = objs;
this.pendingClip = null;
this.pendingEOFill = false;
this.embedFonts = false;
this.embeddedFonts = Object.create(null);
this.cssStyle = null;
this.forceDataSchema = !!forceDataSchema;
}
var XML_NS = 'http://www.w3.org/XML/1998/namespace';
var XLINK_NS = 'http://www.w3.org/1999/xlink';
var LINE_CAP_STYLES = ['butt', 'round', 'square'];
var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
var clipCount = 0;
var maskCount = 0;
SVGGraphics.prototype = {
save: function SVGGraphics_save() {
this.transformStack.push(this.transformMatrix);
var old = this.current;
this.extraStack.push(old);
this.current = old.clone();
},
restore: function SVGGraphics_restore() {
this.transformMatrix = this.transformStack.pop();
this.current = this.extraStack.pop();
this.pendingClip = null;
this.tgrp = null;
},
group: function SVGGraphics_group(items) {
this.save();
this.executeOpTree(items);
this.restore();
},
loadDependencies: function SVGGraphics_loadDependencies(operatorList) {
var _this = this;
var fnArray = operatorList.fnArray;
var fnArrayLen = fnArray.length;
var argsArray = operatorList.argsArray;
for (var i = 0; i < fnArrayLen; i++) {
if (_util.OPS.dependency === fnArray[i]) {
var deps = argsArray[i];
for (var n = 0, nn = deps.length; n < nn; n++) {
var obj = deps[n];
var common = obj.substring(0, 2) === 'g_';
var promise;
if (common) {
promise = new Promise(function (resolve) {
_this.commonObjs.get(obj, resolve);
});
} else {
promise = new Promise(function (resolve) {
_this.objs.get(obj, resolve);
});
}
this.current.dependencies.push(promise);
}
}
}
return Promise.all(this.current.dependencies);
},
transform: function SVGGraphics_transform(a, b, c, d, e, f) {
var transformMatrix = [a, b, c, d, e, f];
this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);
this.tgrp = null;
},
getSVG: function SVGGraphics_getSVG(operatorList, viewport) {
var _this2 = this;
this.viewport = viewport;
var svgElement = this._initialize(viewport);
return this.loadDependencies(operatorList).then(function () {
_this2.transformMatrix = _util.IDENTITY_MATRIX;
var opTree = _this2.convertOpList(operatorList);
_this2.executeOpTree(opTree);
return svgElement;
});
},
convertOpList: function SVGGraphics_convertOpList(operatorList) {
var argsArray = operatorList.argsArray;
var fnArray = operatorList.fnArray;
var fnArrayLen = fnArray.length;
var REVOPS = [];
var opList = [];
for (var op in _util.OPS) {
REVOPS[_util.OPS[op]] = op;
}
for (var x = 0; x < fnArrayLen; x++) {
var fnId = fnArray[x];
opList.push({
'fnId': fnId,
'fn': REVOPS[fnId],
'args': argsArray[x]
});
}
return opListToTree(opList);
},
executeOpTree: function SVGGraphics_executeOpTree(opTree) {
var opTreeLen = opTree.length;
for (var x = 0; x < opTreeLen; x++) {
var fn = opTree[x].fn;
var fnId = opTree[x].fnId;
var args = opTree[x].args;
switch (fnId | 0) {
case _util.OPS.beginText:
this.beginText();
break;
case _util.OPS.dependency:
break;
case _util.OPS.setLeading:
this.setLeading(args);
break;
case _util.OPS.setLeadingMoveText:
this.setLeadingMoveText(args[0], args[1]);
break;
case _util.OPS.setFont:
this.setFont(args);
break;
case _util.OPS.showText:
this.showText(args[0]);
break;
case _util.OPS.showSpacedText:
this.showText(args[0]);
break;
case _util.OPS.endText:
this.endText();
break;
case _util.OPS.moveText:
this.moveText(args[0], args[1]);
break;
case _util.OPS.setCharSpacing:
this.setCharSpacing(args[0]);
break;
case _util.OPS.setWordSpacing:
this.setWordSpacing(args[0]);
break;
case _util.OPS.setHScale:
this.setHScale(args[0]);
break;
case _util.OPS.setTextMatrix:
this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
break;
case _util.OPS.setTextRise:
this.setTextRise(args[0]);
break;
case _util.OPS.setTextRenderingMode:
this.setTextRenderingMode(args[0]);
break;
case _util.OPS.setLineWidth:
this.setLineWidth(args[0]);
break;
case _util.OPS.setLineJoin:
this.setLineJoin(args[0]);
break;
case _util.OPS.setLineCap:
this.setLineCap(args[0]);
break;
case _util.OPS.setMiterLimit:
this.setMiterLimit(args[0]);
break;
case _util.OPS.setFillRGBColor:
this.setFillRGBColor(args[0], args[1], args[2]);
break;
case _util.OPS.setStrokeRGBColor:
this.setStrokeRGBColor(args[0], args[1], args[2]);
break;
case _util.OPS.setDash:
this.setDash(args[0], args[1]);
break;
case _util.OPS.setGState:
this.setGState(args[0]);
break;
case _util.OPS.fill:
this.fill();
break;
case _util.OPS.eoFill:
this.eoFill();
break;
case _util.OPS.stroke:
this.stroke();
break;
case _util.OPS.fillStroke:
this.fillStroke();
break;
case _util.OPS.eoFillStroke:
this.eoFillStroke();
break;
case _util.OPS.clip:
this.clip('nonzero');
break;
case _util.OPS.eoClip:
this.clip('evenodd');
break;
case _util.OPS.paintSolidColorImageMask:
this.paintSolidColorImageMask();
break;
case _util.OPS.paintJpegXObject:
this.paintJpegXObject(args[0], args[1], args[2]);
break;
case _util.OPS.paintImageXObject:
this.paintImageXObject(args[0]);
break;
case _util.OPS.paintInlineImageXObject:
this.paintInlineImageXObject(args[0]);
break;
case _util.OPS.paintImageMaskXObject:
this.paintImageMaskXObject(args[0]);
break;
case _util.OPS.paintFormXObjectBegin:
this.paintFormXObjectBegin(args[0], args[1]);
break;
case _util.OPS.paintFormXObjectEnd:
this.paintFormXObjectEnd();
break;
case _util.OPS.closePath:
this.closePath();
break;
case _util.OPS.closeStroke:
this.closeStroke();
break;
case _util.OPS.closeFillStroke:
this.closeFillStroke();
break;
case _util.OPS.closeEOFillStroke:
this.closeEOFillStroke();
break;
case _util.OPS.nextLine:
this.nextLine();
break;
case _util.OPS.transform:
this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
break;
case _util.OPS.constructPath:
this.constructPath(args[0], args[1]);
break;
case _util.OPS.endPath:
this.endPath();
break;
case 92:
this.group(opTree[x].items);
break;
default:
(0, _util.warn)('Unimplemented operator ' + fn);
break;
}
}
},
setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {
this.current.wordSpacing = wordSpacing;
},
setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {
this.current.charSpacing = charSpacing;
},
nextLine: function SVGGraphics_nextLine() {
this.moveText(0, this.current.leading);
},
setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {
var current = this.current;
this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f];
this.current.x = this.current.lineX = 0;
this.current.y = this.current.lineY = 0;
current.xcoords = [];
current.tspan = this.svgFactory.createElement('svg:tspan');
current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
current.txtElement = this.svgFactory.createElement('svg:text');
current.txtElement.appendChild(current.tspan);
},
beginText: function SVGGraphics_beginText() {
this.current.x = this.current.lineX = 0;
this.current.y = this.current.lineY = 0;
this.current.textMatrix = _util.IDENTITY_MATRIX;
this.current.lineMatrix = _util.IDENTITY_MATRIX;
this.current.tspan = this.svgFactory.createElement('svg:tspan');
this.current.txtElement = this.svgFactory.createElement('svg:text');
this.current.txtgrp = this.svgFactory.createElement('svg:g');
this.current.xcoords = [];
},
moveText: function SVGGraphics_moveText(x, y) {
var current = this.current;
this.current.x = this.current.lineX += x;
this.current.y = this.current.lineY += y;
current.xcoords = [];
current.tspan = this.svgFactory.createElement('svg:tspan');
current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
},
showText: function SVGGraphics_showText(glyphs) {
var current = this.current;
var font = current.font;
var fontSize = current.fontSize;
if (fontSize === 0) {
return;
}
var charSpacing = current.charSpacing;
var wordSpacing = current.wordSpacing;
var fontDirection = current.fontDirection;
var textHScale = current.textHScale * fontDirection;
var glyphsLength = glyphs.length;
var vertical = font.vertical;
var widthAdvanceScale = fontSize * current.fontMatrix[0];
var x = 0,
i;
for (i = 0; i < glyphsLength; ++i) {
var glyph = glyphs[i];
if (glyph === null) {
x += fontDirection * wordSpacing;
continue;
} else if ((0, _util.isNum)(glyph)) {
x += -glyph * fontSize * 0.001;
continue;
}
var width = glyph.width;
var character = glyph.fontChar;
var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
var charWidth = width * widthAdvanceScale + spacing * fontDirection;
if (!glyph.isInFont && !font.missingFile) {
x += charWidth;
continue;
}
current.xcoords.push(current.x + x * textHScale);
current.tspan.textContent += character;
x += charWidth;
}
if (vertical) {
current.y -= x * textHScale;
} else {
current.x += x * textHScale;
}
current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' '));
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);
}
if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);
}
var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
if (current.fillColor !== SVG_DEFAULTS.fillColor) {
current.tspan.setAttributeNS(null, 'fill', current.fillColor);
}
if (current.fillAlpha < 1) {
current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
}
} else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {
current.tspan.setAttributeNS(null, 'fill', 'transparent');
} else {
current.tspan.setAttributeNS(null, 'fill', 'none');
}
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
this._setStrokeAttributes(current.tspan);
}
var textMatrix = current.textMatrix;
if (current.textRise !== 0) {
textMatrix = textMatrix.slice();
textMatrix[5] += current.textRise;
}
current.txtElement.setAttributeNS(null, 'transform', pm(textMatrix) + ' scale(1, -1)');
current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');
current.txtElement.appendChild(current.tspan);
current.txtgrp.appendChild(current.txtElement);
this._ensureTransformGroup().appendChild(current.txtElement);
},
setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {
this.setLeading(-y);
this.moveText(x, y);
},
addFontStyle: function SVGGraphics_addFontStyle(fontObj) {
if (!this.cssStyle) {
this.cssStyle = this.svgFactory.createElement('svg:style');
this.cssStyle.setAttributeNS(null, 'type', 'text/css');
this.defs.appendChild(this.cssStyle);
}
var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);
this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n';
},
setFont: function SVGGraphics_setFont(details) {
var current = this.current;
var fontObj = this.commonObjs.get(details[0]);
var size = details[1];
this.current.font = fontObj;
if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {
this.addFontStyle(fontObj);
this.embeddedFonts[fontObj.loadedName] = fontObj;
}
current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal';
var italic = fontObj.italic ? 'italic' : 'normal';
if (size < 0) {
size = -size;
current.fontDirection = -1;
} else {
current.fontDirection = 1;
}
current.fontSize = size;
current.fontFamily = fontObj.loadedName;
current.fontWeight = bold;
current.fontStyle = italic;
current.tspan = this.svgFactory.createElement('svg:tspan');
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
current.xcoords = [];
},
endText: function endText() {
var current = this.current;
if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {
current.element = current.txtElement;
this.clip('nonzero');
this.endPath();
}
},
setLineWidth: function SVGGraphics_setLineWidth(width) {
if (width > 0) {
this.current.lineWidth = width;
}
},
setLineCap: function SVGGraphics_setLineCap(style) {
this.current.lineCap = LINE_CAP_STYLES[style];
},
setLineJoin: function SVGGraphics_setLineJoin(style) {
this.current.lineJoin = LINE_JOIN_STYLES[style];
},
setMiterLimit: function SVGGraphics_setMiterLimit(limit) {
this.current.miterLimit = limit;
},
setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) {
this.current.strokeAlpha = strokeAlpha;
},
setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {
var color = _util.Util.makeCssRgb(r, g, b);
this.current.strokeColor = color;
},
setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {
this.current.fillAlpha = fillAlpha;
},
setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {
var color = _util.Util.makeCssRgb(r, g, b);
this.current.fillColor = color;
this.current.tspan = this.svgFactory.createElement('svg:tspan');
this.current.xcoords = [];
},
setDash: function SVGGraphics_setDash(dashArray, dashPhase) {
this.current.dashArray = dashArray;
this.current.dashPhase = dashPhase;
},
constructPath: function SVGGraphics_constructPath(ops, args) {
var current = this.current;
var x = current.x,
y = current.y;
current.path = this.svgFactory.createElement('svg:path');
var d = [];
var opLength = ops.length;
for (var i = 0, j = 0; i < opLength; i++) {
switch (ops[i] | 0) {
case _util.OPS.rectangle:
x = args[j++];
y = args[j++];
var width = args[j++];
var height = args[j++];
var xw = x + width;
var yh = y + height;
d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z');
break;
case _util.OPS.moveTo:
x = args[j++];
y = args[j++];
d.push('M', pf(x), pf(y));
break;
case _util.OPS.lineTo:
x = args[j++];
y = args[j++];
d.push('L', pf(x), pf(y));
break;
case _util.OPS.curveTo:
x = args[j + 4];
y = args[j + 5];
d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
j += 6;
break;
case _util.OPS.curveTo2:
x = args[j + 2];
y = args[j + 3];
d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
j += 4;
break;
case _util.OPS.curveTo3:
x = args[j + 2];
y = args[j + 3];
d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
j += 4;
break;
case _util.OPS.closePath:
d.push('Z');
break;
}
}
current.path.setAttributeNS(null, 'd', d.join(' '));
current.path.setAttributeNS(null, 'fill', 'none');
this._ensureTransformGroup().appendChild(current.path);
current.element = current.path;
current.setCurrentPoint(x, y);
},
endPath: function SVGGraphics_endPath() {
if (!this.pendingClip) {
return;
}
var current = this.current;
var clipId = 'clippath' + clipCount;
clipCount++;
var clipPath = this.svgFactory.createElement('svg:clipPath');
clipPath.setAttributeNS(null, 'id', clipId);
clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));
var clipElement = current.element.cloneNode(true);
if (this.pendingClip === 'evenodd') {
clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');
} else {
clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');
}
this.pendingClip = null;
clipPath.appendChild(clipElement);
this.defs.appendChild(clipPath);
if (current.activeClipUrl) {
current.clipGroup = null;
this.extraStack.forEach(function (prev) {
prev.clipGroup = null;
});
clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);
}
current.activeClipUrl = 'url(#' + clipId + ')';
this.tgrp = null;
},
clip: function SVGGraphics_clip(type) {
this.pendingClip = type;
},
closePath: function SVGGraphics_closePath() {
var current = this.current;
if (current.path) {
var d = current.path.getAttributeNS(null, 'd');
d += 'Z';
current.path.setAttributeNS(null, 'd', d);
}
},
setLeading: function SVGGraphics_setLeading(leading) {
this.current.leading = -leading;
},
setTextRise: function SVGGraphics_setTextRise(textRise) {
this.current.textRise = textRise;
},
setTextRenderingMode: function setTextRenderingMode(textRenderingMode) {
this.current.textRenderingMode = textRenderingMode;
},
setHScale: function SVGGraphics_setHScale(scale) {
this.current.textHScale = scale / 100;
},
setGState: function SVGGraphics_setGState(states) {
for (var i = 0, ii = states.length; i < ii; i++) {
var state = states[i];
var key = state[0];
var value = state[1];
switch (key) {
case 'LW':
this.setLineWidth(value);
break;
case 'LC':
this.setLineCap(value);
break;
case 'LJ':
this.setLineJoin(value);
break;
case 'ML':
this.setMiterLimit(value);
break;
case 'D':
this.setDash(value[0], value[1]);
break;
case 'Font':
this.setFont(value);
break;
case 'CA':
this.setStrokeAlpha(value);
break;
case 'ca':
this.setFillAlpha(value);
break;
default:
(0, _util.warn)('Unimplemented graphic state ' + key);
break;
}
}
},
fill: function SVGGraphics_fill() {
var current = this.current;
if (current.element) {
current.element.setAttributeNS(null, 'fill', current.fillColor);
current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
this.endPath();
}
},
stroke: function SVGGraphics_stroke() {
var current = this.current;
if (current.element) {
this._setStrokeAttributes(current.element);
current.element.setAttributeNS(null, 'fill', 'none');
this.endPath();
}
},
_setStrokeAttributes: function _setStrokeAttributes(element) {
var current = this.current;
element.setAttributeNS(null, 'stroke', current.strokeColor);
element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha);
element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));
element.setAttributeNS(null, 'stroke-linecap', current.lineCap);
element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
element.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px');
element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' '));
element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px');
},
eoFill: function SVGGraphics_eoFill() {
if (this.current.element) {
this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
}
this.fill();
},
fillStroke: function SVGGraphics_fillStroke() {
this.stroke();
this.fill();
},
eoFillStroke: function SVGGraphics_eoFillStroke() {
if (this.current.element) {
this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
}
this.fillStroke();
},
closeStroke: function SVGGraphics_closeStroke() {
this.closePath();
this.stroke();
},
closeFillStroke: function SVGGraphics_closeFillStroke() {
this.closePath();
this.fillStroke();
},
closeEOFillStroke: function closeEOFillStroke() {
this.closePath();
this.eoFillStroke();
},
paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() {
var current = this.current;
var rect = this.svgFactory.createElement('svg:rect');
rect.setAttributeNS(null, 'x', '0');
rect.setAttributeNS(null, 'y', '0');
rect.setAttributeNS(null, 'width', '1px');
rect.setAttributeNS(null, 'height', '1px');
rect.setAttributeNS(null, 'fill', current.fillColor);
this._ensureTransformGroup().appendChild(rect);
},
paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {
var imgObj = this.objs.get(objId);
var imgEl = this.svgFactory.createElement('svg:image');
imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);
imgEl.setAttributeNS(null, 'width', pf(w));
imgEl.setAttributeNS(null, 'height', pf(h));
imgEl.setAttributeNS(null, 'x', '0');
imgEl.setAttributeNS(null, 'y', pf(-h));
imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');
this._ensureTransformGroup().appendChild(imgEl);
},
paintImageXObject: function SVGGraphics_paintImageXObject(objId) {
var imgData = this.objs.get(objId);
if (!imgData) {
(0, _util.warn)('Dependent image isn\'t ready yet');
return;
}
this.paintInlineImageXObject(imgData);
},
paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) {
var width = imgData.width;
var height = imgData.height;
var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);
var cliprect = this.svgFactory.createElement('svg:rect');
cliprect.setAttributeNS(null, 'x', '0');
cliprect.setAttributeNS(null, 'y', '0');
cliprect.setAttributeNS(null, 'width', pf(width));
cliprect.setAttributeNS(null, 'height', pf(height));
this.current.element = cliprect;
this.clip('nonzero');
var imgEl = this.svgFactory.createElement('svg:image');
imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);
imgEl.setAttributeNS(null, 'x', '0');
imgEl.setAttributeNS(null, 'y', pf(-height));
imgEl.setAttributeNS(null, 'width', pf(width) + 'px');
imgEl.setAttributeNS(null, 'height', pf(height) + 'px');
imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')');
if (mask) {
mask.appendChild(imgEl);
} else {
this._ensureTransformGroup().appendChild(imgEl);
}
},
paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) {
var current = this.current;
var width = imgData.width;
var height = imgData.height;
var fillColor = current.fillColor;
current.maskId = 'mask' + maskCount++;
var mask = this.svgFactory.createElement('svg:mask');
mask.setAttributeNS(null, 'id', current.maskId);
var rect = this.svgFactory.createElement('svg:rect');
rect.setAttributeNS(null, 'x', '0');
rect.setAttributeNS(null, 'y', '0');
rect.setAttributeNS(null, 'width', pf(width));
rect.setAttributeNS(null, 'height', pf(height));
rect.setAttributeNS(null, 'fill', fillColor);
rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');
this.defs.appendChild(mask);
this._ensureTransformGroup().appendChild(rect);
this.paintInlineImageXObject(imgData, mask);
},
paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {
if (Array.isArray(matrix) && matrix.length === 6) {
this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
}
if (bbox) {
var width = bbox[2] - bbox[0];
var height = bbox[3] - bbox[1];
var cliprect = this.svgFactory.createElement('svg:rect');
cliprect.setAttributeNS(null, 'x', bbox[0]);
cliprect.setAttributeNS(null, 'y', bbox[1]);
cliprect.setAttributeNS(null, 'width', pf(width));
cliprect.setAttributeNS(null, 'height', pf(height));
this.current.element = cliprect;
this.clip('nonzero');
this.endPath();
}
},
paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {},
_initialize: function _initialize(viewport) {
var svg = this.svgFactory.create(viewport.width, viewport.height);
var definitions = this.svgFactory.createElement('svg:defs');
svg.appendChild(definitions);
this.defs = definitions;
var rootGroup = this.svgFactory.createElement('svg:g');
rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));
svg.appendChild(rootGroup);
this.svg = rootGroup;
return svg;
},
_ensureClipGroup: function SVGGraphics_ensureClipGroup() {
if (!this.current.clipGroup) {
var clipGroup = this.svgFactory.createElement('svg:g');
clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl);
this.svg.appendChild(clipGroup);
this.current.clipGroup = clipGroup;
}
return this.current.clipGroup;
},
_ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {
if (!this.tgrp) {
this.tgrp = this.svgFactory.createElement('svg:g');
this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
if (this.current.activeClipUrl) {
this._ensureClipGroup().appendChild(this.tgrp);
} else {
this.svg.appendChild(this.tgrp);
}
}
return this.tgrp;
}
};
return SVGGraphics;
}();
}
/***/ }),
/* 165 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFNodeStream = void 0;
var _regenerator = _interopRequireDefault(__w_pdfjs_require__(147));
var _util = __w_pdfjs_require__(1);
var _network_utils = __w_pdfjs_require__(166);
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 _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); }
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 fs = require('fs');
var http = require('http');
var https = require('https');
var url = require('url');
var fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//;
function parseUrl(sourceUrl) {
var parsedUrl = url.parse(sourceUrl);
if (parsedUrl.protocol === 'file:' || parsedUrl.host) {
return parsedUrl;
}
if (/^[a-z]:[/\\]/i.test(sourceUrl)) {
return url.parse("file:///".concat(sourceUrl));
}
if (!parsedUrl.host) {
parsedUrl.protocol = 'file:';
}
return parsedUrl;
}
var PDFNodeStream =
/*#__PURE__*/
function () {
function PDFNodeStream(source) {
_classCallCheck(this, PDFNodeStream);
this.source = source;
this.url = parseUrl(source.url);
this.isHttp = this.url.protocol === 'http:' || this.url.protocol === 'https:';
this.isFsUrl = this.url.protocol === 'file:';
this.httpHeaders = this.isHttp && source.httpHeaders || {};
this._fullRequest = null;
this._rangeRequestReaders = [];
}
_createClass(PDFNodeStream, [{
key: "getFullReader",
value: function getFullReader() {
(0, _util.assert)(!this._fullRequest);
this._fullRequest = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);
return this._fullRequest;
}
}, {
key: "getRangeReader",
value: function getRangeReader(start, end) {
var rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);
this._rangeRequestReaders.push(rangeReader);
return rangeReader;
}
}, {
key: "cancelAllRequests",
value: function cancelAllRequests(reason) {
if (this._fullRequest) {
this._fullRequest.cancel(reason);
}
var readers = this._rangeRequestReaders.slice(0);
readers.forEach(function (reader) {
reader.cancel(reason);
});
}
}]);
return PDFNodeStream;
}();
exports.PDFNodeStream = PDFNodeStream;
var BaseFullReader =
/*#__PURE__*/
function () {
function BaseFullReader(stream) {
_classCallCheck(this, BaseFullReader);
this._url = stream.url;
this._done = false;
this._storedError = null;
this.onProgress = null;
var source = stream.source;
this._contentLength = source.length;
this._loaded = 0;
this._filename = null;
this._disableRange = source.disableRange || false;
this._rangeChunkSize = source.rangeChunkSize;
if (!this._rangeChunkSize && !this._disableRange) {
this._disableRange = true;
}
this._isStreamingSupported = !source.disableStream;
this._isRangeSupported = !source.disableRange;
this._readableStream = null;
this._readCapability = (0, _util.createPromiseCapability)();
this._headersCapability = (0, _util.createPromiseCapability)();
}
_createClass(BaseFullReader, [{
key: "read",
value: function () {
var _read = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var chunk, buffer;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this._readCapability.promise;
case 2:
if (!this._done) {
_context.next = 4;
break;
}
return _context.abrupt("return", {
value: undefined,
done: true
});
case 4:
if (!this._storedError) {
_context.next = 6;
break;
}
throw this._storedError;
case 6:
chunk = this._readableStream.read();
if (!(chunk === null)) {
_context.next = 10;
break;
}
this._readCapability = (0, _util.createPromiseCapability)();
return _context.abrupt("return", this.read());
case 10:
this._loaded += chunk.length;
if (this.onProgress) {
this.onProgress({
loaded: this._loaded,
total: this._contentLength
});
}
buffer = new Uint8Array(chunk).buffer;
return _context.abrupt("return", {
value: buffer,
done: false
});
case 14:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function read() {
return _read.apply(this, arguments);
}
return read;
}()
}, {
key: "cancel",
value: function cancel(reason) {
if (!this._readableStream) {
this._error(reason);
return;
}
this._readableStream.destroy(reason);
}
}, {
key: "_error",
value: function _error(reason) {
this._storedError = reason;
this._readCapability.resolve();
}
}, {
key: "_setReadableStream",
value: function _setReadableStream(readableStream) {
var _this = this;
this._readableStream = readableStream;
readableStream.on('readable', function () {
_this._readCapability.resolve();
});
readableStream.on('end', function () {
readableStream.destroy();
_this._done = true;
_this._readCapability.resolve();
});
readableStream.on('error', function (reason) {
_this._error(reason);
});
if (!this._isStreamingSupported && this._isRangeSupported) {
this._error(new _util.AbortException('streaming is disabled'));
}
if (this._storedError) {
this._readableStream.destroy(this._storedError);
}
}
}, {
key: "headersReady",
get: function get() {
return this._headersCapability.promise;
}
}, {
key: "filename",
get: function get() {
return this._filename;
}
}, {
key: "contentLength",
get: function get() {
return this._contentLength;
}
}, {
key: "isRangeSupported",
get: function get() {
return this._isRangeSupported;
}
}, {
key: "isStreamingSupported",
get: function get() {
return this._isStreamingSupported;
}
}]);
return BaseFullReader;
}();
var BaseRangeReader =
/*#__PURE__*/
function () {
function BaseRangeReader(stream) {
_classCallCheck(this, BaseRangeReader);
this._url = stream.url;
this._done = false;
this._storedError = null;
this.onProgress = null;
this._loaded = 0;
this._readableStream = null;
this._readCapability = (0, _util.createPromiseCapability)();
var source = stream.source;
this._isStreamingSupported = !source.disableStream;
}
_createClass(BaseRangeReader, [{
key: "read",
value: function () {
var _read2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2() {
var chunk, buffer;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return this._readCapability.promise;
case 2:
if (!this._done) {
_context2.next = 4;
break;
}
return _context2.abrupt("return", {
value: undefined,
done: true
});
case 4:
if (!this._storedError) {
_context2.next = 6;
break;
}
throw this._storedError;
case 6:
chunk = this._readableStream.read();
if (!(chunk === null)) {
_context2.next = 10;
break;
}
this._readCapability = (0, _util.createPromiseCapability)();
return _context2.abrupt("return", this.read());
case 10:
this._loaded += chunk.length;
if (this.onProgress) {
this.onProgress({
loaded: this._loaded
});
}
buffer = new Uint8Array(chunk).buffer;
return _context2.abrupt("return", {
value: buffer,
done: false
});
case 14:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function read() {
return _read2.apply(this, arguments);
}
return read;
}()
}, {
key: "cancel",
value: function cancel(reason) {
if (!this._readableStream) {
this._error(reason);
return;
}
this._readableStream.destroy(reason);
}
}, {
key: "_error",
value: function _error(reason) {
this._storedError = reason;
this._readCapability.resolve();
}
}, {
key: "_setReadableStream",
value: function _setReadableStream(readableStream) {
var _this2 = this;
this._readableStream = readableStream;
readableStream.on('readable', function () {
_this2._readCapability.resolve();
});
readableStream.on('end', function () {
readableStream.destroy();
_this2._done = true;
_this2._readCapability.resolve();
});
readableStream.on('error', function (reason) {
_this2._error(reason);
});
if (this._storedError) {
this._readableStream.destroy(this._storedError);
}
}
}, {
key: "isStreamingSupported",
get: function get() {
return this._isStreamingSupported;
}
}]);
return BaseRangeReader;
}();
function createRequestOptions(url, headers) {
return {
protocol: url.protocol,
auth: url.auth,
host: url.hostname,
port: url.port,
path: url.path,
method: 'GET',
headers: headers
};
}
var PDFNodeStreamFullReader =
/*#__PURE__*/
function (_BaseFullReader) {
_inherits(PDFNodeStreamFullReader, _BaseFullReader);
function PDFNodeStreamFullReader(stream) {
var _this3;
_classCallCheck(this, PDFNodeStreamFullReader);
_this3 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFullReader).call(this, stream));
var handleResponse = function handleResponse(response) {
if (response.statusCode === 404) {
var error = new _util.MissingPDFException("Missing PDF \"".concat(_this3._url, "\"."));
_this3._storedError = error;
_this3._headersCapability.reject(error);
return;
}
_this3._headersCapability.resolve();
_this3._setReadableStream(response);
var getResponseHeader = function getResponseHeader(name) {
return _this3._readableStream.headers[name.toLowerCase()];
};
var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
getResponseHeader: getResponseHeader,
isHttp: stream.isHttp,
rangeChunkSize: _this3._rangeChunkSize,
disableRange: _this3._disableRange
}),
allowRangeRequests = _validateRangeRequest.allowRangeRequests,
suggestedLength = _validateRangeRequest.suggestedLength;
_this3._isRangeSupported = allowRangeRequests;
_this3._contentLength = suggestedLength || _this3._contentLength;
_this3._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
};
_this3._request = null;
if (_this3._url.protocol === 'http:') {
_this3._request = http.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);
} else {
_this3._request = https.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);
}
_this3._request.on('error', function (reason) {
_this3._storedError = reason;
_this3._headersCapability.reject(reason);
});
_this3._request.end();
return _this3;
}
return PDFNodeStreamFullReader;
}(BaseFullReader);
var PDFNodeStreamRangeReader =
/*#__PURE__*/
function (_BaseRangeReader) {
_inherits(PDFNodeStreamRangeReader, _BaseRangeReader);
function PDFNodeStreamRangeReader(stream, start, end) {
var _this4;
_classCallCheck(this, PDFNodeStreamRangeReader);
_this4 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamRangeReader).call(this, stream));
_this4._httpHeaders = {};
for (var property in stream.httpHeaders) {
var value = stream.httpHeaders[property];
if (typeof value === 'undefined') {
continue;
}
_this4._httpHeaders[property] = value;
}
_this4._httpHeaders['Range'] = "bytes=".concat(start, "-").concat(end - 1);
var handleResponse = function handleResponse(response) {
if (response.statusCode === 404) {
var error = new _util.MissingPDFException("Missing PDF \"".concat(_this4._url, "\"."));
_this4._storedError = error;
return;
}
_this4._setReadableStream(response);
};
_this4._request = null;
if (_this4._url.protocol === 'http:') {
_this4._request = http.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);
} else {
_this4._request = https.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);
}
_this4._request.on('error', function (reason) {
_this4._storedError = reason;
});
_this4._request.end();
return _this4;
}
return PDFNodeStreamRangeReader;
}(BaseRangeReader);
var PDFNodeStreamFsFullReader =
/*#__PURE__*/
function (_BaseFullReader2) {
_inherits(PDFNodeStreamFsFullReader, _BaseFullReader2);
function PDFNodeStreamFsFullReader(stream) {
var _this5;
_classCallCheck(this, PDFNodeStreamFsFullReader);
_this5 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFsFullReader).call(this, stream));
var path = decodeURIComponent(_this5._url.path);
if (fileUriRegex.test(_this5._url.href)) {
path = path.replace(/^\//, '');
}
fs.lstat(path, function (error, stat) {
if (error) {
if (error.code === 'ENOENT') {
error = new _util.MissingPDFException("Missing PDF \"".concat(path, "\"."));
}
_this5._storedError = error;
_this5._headersCapability.reject(error);
return;
}
_this5._contentLength = stat.size;
_this5._setReadableStream(fs.createReadStream(path));
_this5._headersCapability.resolve();
});
return _this5;
}
return PDFNodeStreamFsFullReader;
}(BaseFullReader);
var PDFNodeStreamFsRangeReader =
/*#__PURE__*/
function (_BaseRangeReader2) {
_inherits(PDFNodeStreamFsRangeReader, _BaseRangeReader2);
function PDFNodeStreamFsRangeReader(stream, start, end) {
var _this6;
_classCallCheck(this, PDFNodeStreamFsRangeReader);
_this6 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFsRangeReader).call(this, stream));
var path = decodeURIComponent(_this6._url.path);
if (fileUriRegex.test(_this6._url.href)) {
path = path.replace(/^\//, '');
}
_this6._setReadableStream(fs.createReadStream(path, {
start: start,
end: end - 1
}));
return _this6;
}
return PDFNodeStreamFsRangeReader;
}(BaseRangeReader);
/***/ }),
/* 166 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createResponseStatusError = createResponseStatusError;
exports.extractFilenameFromHeader = extractFilenameFromHeader;
exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
exports.validateResponseStatus = validateResponseStatus;
var _util = __w_pdfjs_require__(1);
var _content_disposition = __w_pdfjs_require__(167);
function validateRangeRequestCapabilities(_ref) {
var getResponseHeader = _ref.getResponseHeader,
isHttp = _ref.isHttp,
rangeChunkSize = _ref.rangeChunkSize,
disableRange = _ref.disableRange;
(0, _util.assert)(rangeChunkSize > 0, 'Range chunk size must be larger than zero');
var returnValues = {
allowRangeRequests: false,
suggestedLength: undefined
};
var length = parseInt(getResponseHeader('Content-Length'), 10);
if (!Number.isInteger(length)) {
return returnValues;
}
returnValues.suggestedLength = length;
if (length <= 2 * rangeChunkSize) {
return returnValues;
}
if (disableRange || !isHttp) {
return returnValues;
}
if (getResponseHeader('Accept-Ranges') !== 'bytes') {
return returnValues;
}
var contentEncoding = getResponseHeader('Content-Encoding') || 'identity';
if (contentEncoding !== 'identity') {
return returnValues;
}
returnValues.allowRangeRequests = true;
return returnValues;
}
function extractFilenameFromHeader(getResponseHeader) {
var contentDisposition = getResponseHeader('Content-Disposition');
if (contentDisposition) {
var filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);
if (/\.pdf$/i.test(filename)) {
return filename;
}
}
return null;
}
function createResponseStatusError(status, url) {
if (status === 404 || status === 0 && /^file:/.test(url)) {
return new _util.MissingPDFException('Missing PDF "' + url + '".');
}
return new _util.UnexpectedResponseException('Unexpected server response (' + status + ') while retrieving PDF "' + url + '".', status);
}
function validateResponseStatus(status) {
return status === 200 || status === 206;
}
/***/ }),
/* 167 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
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 getFilenameFromContentDispositionHeader(contentDisposition) {
var needsEncodingFixup = true;
var tmp = toParamRegExp('filename\\*', 'i').exec(contentDisposition);
if (tmp) {
tmp = tmp[1];
var filename = rfc2616unquote(tmp);
filename = unescape(filename);
filename = rfc5987decode(filename);
filename = rfc2047decode(filename);
return fixupEncoding(filename);
}
tmp = rfc2231getparam(contentDisposition);
if (tmp) {
var _filename = rfc2047decode(tmp);
return fixupEncoding(_filename);
}
tmp = toParamRegExp('filename', 'i').exec(contentDisposition);
if (tmp) {
tmp = tmp[1];
var _filename2 = rfc2616unquote(tmp);
_filename2 = rfc2047decode(_filename2);
return fixupEncoding(_filename2);
}
function toParamRegExp(attributePattern, flags) {
return new RegExp('(?:^|;)\\s*' + attributePattern + '\\s*=\\s*' + '(' + '[^";\\s][^;\\s]*' + '|' + '"(?:[^"\\\\]|\\\\"?)+"?' + ')', flags);
}
function textdecode(encoding, value) {
if (encoding) {
if (!/^[\x00-\xFF]+$/.test(value)) {
return value;
}
try {
var decoder = new TextDecoder(encoding, {
fatal: true
});
var bytes = Array.from(value, function (ch) {
return ch.charCodeAt(0) & 0xFF;
});
value = decoder.decode(new Uint8Array(bytes));
needsEncodingFixup = false;
} catch (e) {
if (/^utf-?8$/i.test(encoding)) {
try {
value = decodeURIComponent(escape(value));
needsEncodingFixup = false;
} catch (err) {}
}
}
}
return value;
}
function fixupEncoding(value) {
if (needsEncodingFixup && /[\x80-\xff]/.test(value)) {
value = textdecode('utf-8', value);
if (needsEncodingFixup) {
value = textdecode('iso-8859-1', value);
}
}
return value;
}
function rfc2231getparam(contentDisposition) {
var matches = [],
match;
var iter = toParamRegExp('filename\\*((?!0\\d)\\d+)(\\*?)', 'ig');
while ((match = iter.exec(contentDisposition)) !== null) {
var _match = match,
_match2 = _slicedToArray(_match, 4),
n = _match2[1],
quot = _match2[2],
part = _match2[3];
n = parseInt(n, 10);
if (n in matches) {
if (n === 0) {
break;
}
continue;
}
matches[n] = [quot, part];
}
var parts = [];
for (var n = 0; n < matches.length; ++n) {
if (!(n in matches)) {
break;
}
var _matches$n = _slicedToArray(matches[n], 2),
quot = _matches$n[0],
part = _matches$n[1];
part = rfc2616unquote(part);
if (quot) {
part = unescape(part);
if (n === 0) {
part = rfc5987decode(part);
}
}
parts.push(part);
}
return parts.join('');
}
function rfc2616unquote(value) {
if (value.startsWith('"')) {
var parts = value.slice(1).split('\\"');
for (var i = 0; i < parts.length; ++i) {
var quotindex = parts[i].indexOf('"');
if (quotindex !== -1) {
parts[i] = parts[i].slice(0, quotindex);
parts.length = i + 1;
}
parts[i] = parts[i].replace(/\\(.)/g, '$1');
}
value = parts.join('"');
}
return value;
}
function rfc5987decode(extvalue) {
var encodingend = extvalue.indexOf('\'');
if (encodingend === -1) {
return extvalue;
}
var encoding = extvalue.slice(0, encodingend);
var langvalue = extvalue.slice(encodingend + 1);
var value = langvalue.replace(/^[^']*'/, '');
return textdecode(encoding, value);
}
function rfc2047decode(value) {
if (!value.startsWith('=?') || /[\x00-\x19\x80-\xff]/.test(value)) {
return value;
}
return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (_, charset, encoding, text) {
if (encoding === 'q' || encoding === 'Q') {
text = text.replace(/_/g, ' ');
text = text.replace(/=([0-9a-fA-F]{2})/g, function (_, hex) {
return String.fromCharCode(parseInt(hex, 16));
});
return textdecode(charset, text);
}
try {
text = atob(text);
} catch (e) {}
return textdecode(charset, text);
});
}
return '';
}
/***/ }),
/* 168 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFFetchStream = void 0;
var _regenerator = _interopRequireDefault(__w_pdfjs_require__(147));
var _util = __w_pdfjs_require__(1);
var _network_utils = __w_pdfjs_require__(166);
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; }
function createFetchOptions(headers, withCredentials, abortController) {
return {
method: 'GET',
headers: headers,
signal: abortController && abortController.signal,
mode: 'cors',
credentials: withCredentials ? 'include' : 'same-origin',
redirect: 'follow'
};
}
var PDFFetchStream =
/*#__PURE__*/
function () {
function PDFFetchStream(source) {
_classCallCheck(this, PDFFetchStream);
this.source = source;
this.isHttp = /^https?:/i.test(source.url);
this.httpHeaders = this.isHttp && source.httpHeaders || {};
this._fullRequestReader = null;
this._rangeRequestReaders = [];
}
_createClass(PDFFetchStream, [{
key: "getFullReader",
value: function getFullReader() {
(0, _util.assert)(!this._fullRequestReader);
this._fullRequestReader = new PDFFetchStreamReader(this);
return this._fullRequestReader;
}
}, {
key: "getRangeReader",
value: function getRangeReader(begin, end) {
var reader = new PDFFetchStreamRangeReader(this, begin, end);
this._rangeRequestReaders.push(reader);
return reader;
}
}, {
key: "cancelAllRequests",
value: function cancelAllRequests(reason) {
if (this._fullRequestReader) {
this._fullRequestReader.cancel(reason);
}
var readers = this._rangeRequestReaders.slice(0);
readers.forEach(function (reader) {
reader.cancel(reason);
});
}
}]);
return PDFFetchStream;
}();
exports.PDFFetchStream = PDFFetchStream;
var PDFFetchStreamReader =
/*#__PURE__*/
function () {
function PDFFetchStreamReader(stream) {
var _this = this;
_classCallCheck(this, PDFFetchStreamReader);
this._stream = stream;
this._reader = null;
this._loaded = 0;
this._filename = null;
var source = stream.source;
this._withCredentials = source.withCredentials;
this._contentLength = source.length;
this._headersCapability = (0, _util.createPromiseCapability)();
this._disableRange = source.disableRange || false;
this._rangeChunkSize = source.rangeChunkSize;
if (!this._rangeChunkSize && !this._disableRange) {
this._disableRange = true;
}
if (typeof AbortController !== 'undefined') {
this._abortController = new AbortController();
}
this._isStreamingSupported = !source.disableStream;
this._isRangeSupported = !source.disableRange;
this._headers = new Headers();
for (var property in this._stream.httpHeaders) {
var value = this._stream.httpHeaders[property];
if (typeof value === 'undefined') {
continue;
}
this._headers.append(property, value);
}
var url = source.url;
fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {
if (!(0, _network_utils.validateResponseStatus)(response.status)) {
throw (0, _network_utils.createResponseStatusError)(response.status, url);
}
_this._reader = response.body.getReader();
_this._headersCapability.resolve();
var getResponseHeader = function getResponseHeader(name) {
return response.headers.get(name);
};
var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
getResponseHeader: getResponseHeader,
isHttp: _this._stream.isHttp,
rangeChunkSize: _this._rangeChunkSize,
disableRange: _this._disableRange
}),
allowRangeRequests = _validateRangeRequest.allowRangeRequests,
suggestedLength = _validateRangeRequest.suggestedLength;
_this._isRangeSupported = allowRangeRequests;
_this._contentLength = suggestedLength || _this._contentLength;
_this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
if (!_this._isStreamingSupported && _this._isRangeSupported) {
_this.cancel(new _util.AbortException('streaming is disabled'));
}
}).catch(this._headersCapability.reject);
this.onProgress = null;
}
_createClass(PDFFetchStreamReader, [{
key: "read",
value: function () {
var _read = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var _ref, value, done, buffer;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this._headersCapability.promise;
case 2:
_context.next = 4;
return this._reader.read();
case 4:
_ref = _context.sent;
value = _ref.value;
done = _ref.done;
if (!done) {
_context.next = 9;
break;
}
return _context.abrupt("return", {
value: value,
done: done
});
case 9:
this._loaded += value.byteLength;
if (this.onProgress) {
this.onProgress({
loaded: this._loaded,
total: this._contentLength
});
}
buffer = new Uint8Array(value).buffer;
return _context.abrupt("return", {
value: buffer,
done: false
});
case 13:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function read() {
return _read.apply(this, arguments);
}
return read;
}()
}, {
key: "cancel",
value: function cancel(reason) {
if (this._reader) {
this._reader.cancel(reason);
}
if (this._abortController) {
this._abortController.abort();
}
}
}, {
key: "headersReady",
get: function get() {
return this._headersCapability.promise;
}
}, {
key: "filename",
get: function get() {
return this._filename;
}
}, {
key: "contentLength",
get: function get() {
return this._contentLength;
}
}, {
key: "isRangeSupported",
get: function get() {
return this._isRangeSupported;
}
}, {
key: "isStreamingSupported",
get: function get() {
return this._isStreamingSupported;
}
}]);
return PDFFetchStreamReader;
}();
var PDFFetchStreamRangeReader =
/*#__PURE__*/
function () {
function PDFFetchStreamRangeReader(stream, begin, end) {
var _this2 = this;
_classCallCheck(this, PDFFetchStreamRangeReader);
this._stream = stream;
this._reader = null;
this._loaded = 0;
var source = stream.source;
this._withCredentials = source.withCredentials;
this._readCapability = (0, _util.createPromiseCapability)();
this._isStreamingSupported = !source.disableStream;
if (typeof AbortController !== 'undefined') {
this._abortController = new AbortController();
}
this._headers = new Headers();
for (var property in this._stream.httpHeaders) {
var value = this._stream.httpHeaders[property];
if (typeof value === 'undefined') {
continue;
}
this._headers.append(property, value);
}
var rangeStr = begin + '-' + (end - 1);
this._headers.append('Range', 'bytes=' + rangeStr);
var url = source.url;
fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {
if (!(0, _network_utils.validateResponseStatus)(response.status)) {
throw (0, _network_utils.createResponseStatusError)(response.status, url);
}
_this2._readCapability.resolve();
_this2._reader = response.body.getReader();
});
this.onProgress = null;
}
_createClass(PDFFetchStreamRangeReader, [{
key: "read",
value: function () {
var _read2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2() {
var _ref2, value, done, buffer;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return this._readCapability.promise;
case 2:
_context2.next = 4;
return this._reader.read();
case 4:
_ref2 = _context2.sent;
value = _ref2.value;
done = _ref2.done;
if (!done) {
_context2.next = 9;
break;
}
return _context2.abrupt("return", {
value: value,
done: done
});
case 9:
this._loaded += value.byteLength;
if (this.onProgress) {
this.onProgress({
loaded: this._loaded
});
}
buffer = new Uint8Array(value).buffer;
return _context2.abrupt("return", {
value: buffer,
done: false
});
case 13:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function read() {
return _read2.apply(this, arguments);
}
return read;
}()
}, {
key: "cancel",
value: function cancel(reason) {
if (this._reader) {
this._reader.cancel(reason);
}
if (this._abortController) {
this._abortController.abort();
}
}
}, {
key: "isStreamingSupported",
get: function get() {
return this._isStreamingSupported;
}
}]);
return PDFFetchStreamRangeReader;
}();
/***/ }),
/* 169 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFNetworkStream = PDFNetworkStream;
exports.NetworkManager = NetworkManager;
var _regenerator = _interopRequireDefault(__w_pdfjs_require__(147));
var _util = __w_pdfjs_require__(1);
var _network_utils = __w_pdfjs_require__(166);
var _global_scope = _interopRequireDefault(__w_pdfjs_require__(3));
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); }); }; }
;
var OK_RESPONSE = 200;
var PARTIAL_CONTENT_RESPONSE = 206;
function NetworkManager(url, args) {
this.url = url;
args = args || {};
this.isHttp = /^https?:/i.test(url);
this.httpHeaders = this.isHttp && args.httpHeaders || {};
this.withCredentials = args.withCredentials || false;
this.getXhr = args.getXhr || function NetworkManager_getXhr() {
return new XMLHttpRequest();
};
this.currXhrId = 0;
this.pendingRequests = Object.create(null);
this.loadedRequests = Object.create(null);
}
function getArrayBuffer(xhr) {
var data = xhr.response;
if (typeof data !== 'string') {
return data;
}
var array = (0, _util.stringToBytes)(data);
return array.buffer;
}
var supportsMozChunked = function supportsMozChunkedClosure() {
try {
var x = new XMLHttpRequest();
x.open('GET', _global_scope.default.location.href);
x.responseType = 'moz-chunked-arraybuffer';
return x.responseType === 'moz-chunked-arraybuffer';
} catch (e) {
return false;
}
}();
NetworkManager.prototype = {
requestRange: function NetworkManager_requestRange(begin, end, listeners) {
var args = {
begin: begin,
end: end
};
for (var prop in listeners) {
args[prop] = listeners[prop];
}
return this.request(args);
},
requestFull: function NetworkManager_requestFull(listeners) {
return this.request(listeners);
},
request: function NetworkManager_request(args) {
var xhr = this.getXhr();
var xhrId = this.currXhrId++;
var pendingRequest = this.pendingRequests[xhrId] = {
xhr: xhr
};
xhr.open('GET', this.url);
xhr.withCredentials = this.withCredentials;
for (var property in this.httpHeaders) {
var value = this.httpHeaders[property];
if (typeof value === 'undefined') {
continue;
}
xhr.setRequestHeader(property, value);
}
if (this.isHttp && 'begin' in args && 'end' in args) {
var rangeStr = args.begin + '-' + (args.end - 1);
xhr.setRequestHeader('Range', 'bytes=' + rangeStr);
pendingRequest.expectedStatus = 206;
} else {
pendingRequest.expectedStatus = 200;
}
var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData;
if (useMozChunkedLoading) {
xhr.responseType = 'moz-chunked-arraybuffer';
pendingRequest.onProgressiveData = args.onProgressiveData;
pendingRequest.mozChunked = true;
} else {
xhr.responseType = 'arraybuffer';
}
if (args.onError) {
xhr.onerror = function (evt) {
args.onError(xhr.status);
};
}
xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);
xhr.onprogress = this.onProgress.bind(this, xhrId);
pendingRequest.onHeadersReceived = args.onHeadersReceived;
pendingRequest.onDone = args.onDone;
pendingRequest.onError = args.onError;
pendingRequest.onProgress = args.onProgress;
xhr.send(null);
return xhrId;
},
onProgress: function NetworkManager_onProgress(xhrId, evt) {
var pendingRequest = this.pendingRequests[xhrId];
if (!pendingRequest) {
return;
}
if (pendingRequest.mozChunked) {
var chunk = getArrayBuffer(pendingRequest.xhr);
pendingRequest.onProgressiveData(chunk);
}
var onProgress = pendingRequest.onProgress;
if (onProgress) {
onProgress(evt);
}
},
onStateChange: function NetworkManager_onStateChange(xhrId, evt) {
var pendingRequest = this.pendingRequests[xhrId];
if (!pendingRequest) {
return;
}
var xhr = pendingRequest.xhr;
if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {
pendingRequest.onHeadersReceived();
delete pendingRequest.onHeadersReceived;
}
if (xhr.readyState !== 4) {
return;
}
if (!(xhrId in this.pendingRequests)) {
return;
}
delete this.pendingRequests[xhrId];
if (xhr.status === 0 && this.isHttp) {
if (pendingRequest.onError) {
pendingRequest.onError(xhr.status);
}
return;
}
var xhrStatus = xhr.status || OK_RESPONSE;
var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;
if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {
if (pendingRequest.onError) {
pendingRequest.onError(xhr.status);
}
return;
}
this.loadedRequests[xhrId] = true;
var chunk = getArrayBuffer(xhr);
if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {
var rangeHeader = xhr.getResponseHeader('Content-Range');
var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader);
var begin = parseInt(matches[1], 10);
pendingRequest.onDone({
begin: begin,
chunk: chunk
});
} else if (pendingRequest.onProgressiveData) {
pendingRequest.onDone(null);
} else if (chunk) {
pendingRequest.onDone({
begin: 0,
chunk: chunk
});
} else if (pendingRequest.onError) {
pendingRequest.onError(xhr.status);
}
},
hasPendingRequests: function NetworkManager_hasPendingRequests() {
for (var xhrId in this.pendingRequests) {
return true;
}
return false;
},
getRequestXhr: function NetworkManager_getXhr(xhrId) {
return this.pendingRequests[xhrId].xhr;
},
isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) {
return !!this.pendingRequests[xhrId].onProgressiveData;
},
isPendingRequest: function NetworkManager_isPendingRequest(xhrId) {
return xhrId in this.pendingRequests;
},
isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) {
return xhrId in this.loadedRequests;
},
abortAllRequests: function NetworkManager_abortAllRequests() {
for (var xhrId in this.pendingRequests) {
this.abortRequest(xhrId | 0);
}
},
abortRequest: function NetworkManager_abortRequest(xhrId) {
var xhr = this.pendingRequests[xhrId].xhr;
delete this.pendingRequests[xhrId];
xhr.abort();
}
};
function PDFNetworkStream(source) {
this._source = source;
this._manager = new NetworkManager(source.url, {
httpHeaders: source.httpHeaders,
withCredentials: source.withCredentials
});
this._rangeChunkSize = source.rangeChunkSize;
this._fullRequestReader = null;
this._rangeRequestReaders = [];
}
PDFNetworkStream.prototype = {
_onRangeRequestReaderClosed: function PDFNetworkStream_onRangeRequestReaderClosed(reader) {
var i = this._rangeRequestReaders.indexOf(reader);
if (i >= 0) {
this._rangeRequestReaders.splice(i, 1);
}
},
getFullReader: function PDFNetworkStream_getFullReader() {
(0, _util.assert)(!this._fullRequestReader);
this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);
return this._fullRequestReader;
},
getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) {
var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);
reader.onClosed = this._onRangeRequestReaderClosed.bind(this);
this._rangeRequestReaders.push(reader);
return reader;
},
cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) {
if (this._fullRequestReader) {
this._fullRequestReader.cancel(reason);
}
var readers = this._rangeRequestReaders.slice(0);
readers.forEach(function (reader) {
reader.cancel(reason);
});
}
};
function PDFNetworkStreamFullRequestReader(manager, source) {
this._manager = manager;
var args = {
onHeadersReceived: this._onHeadersReceived.bind(this),
onProgressiveData: source.disableStream ? null : this._onProgressiveData.bind(this),
onDone: this._onDone.bind(this),
onError: this._onError.bind(this),
onProgress: this._onProgress.bind(this)
};
this._url = source.url;
this._fullRequestId = manager.requestFull(args);
this._headersReceivedCapability = (0, _util.createPromiseCapability)();
this._disableRange = source.disableRange || false;
this._contentLength = source.length;
this._rangeChunkSize = source.rangeChunkSize;
if (!this._rangeChunkSize && !this._disableRange) {
this._disableRange = true;
}
this._isStreamingSupported = false;
this._isRangeSupported = false;
this._cachedChunks = [];
this._requests = [];
this._done = false;
this._storedError = undefined;
this._filename = null;
this.onProgress = null;
}
PDFNetworkStreamFullRequestReader.prototype = {
_onHeadersReceived: function PDFNetworkStreamFullRequestReader_onHeadersReceived() {
var fullRequestXhrId = this._fullRequestId;
var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);
var getResponseHeader = function getResponseHeader(name) {
return fullRequestXhr.getResponseHeader(name);
};
var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
getResponseHeader: getResponseHeader,
isHttp: this._manager.isHttp,
rangeChunkSize: this._rangeChunkSize,
disableRange: this._disableRange
}),
allowRangeRequests = _validateRangeRequest.allowRangeRequests,
suggestedLength = _validateRangeRequest.suggestedLength;
if (allowRangeRequests) {
this._isRangeSupported = true;
}
this._contentLength = suggestedLength || this._contentLength;
this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
var networkManager = this._manager;
if (networkManager.isStreamingRequest(fullRequestXhrId)) {
this._isStreamingSupported = true;
} else if (this._isRangeSupported) {
networkManager.abortRequest(fullRequestXhrId);
}
this._headersReceivedCapability.resolve();
},
_onProgressiveData: function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) {
if (this._requests.length > 0) {
var requestCapability = this._requests.shift();
requestCapability.resolve({
value: chunk,
done: false
});
} else {
this._cachedChunks.push(chunk);
}
},
_onDone: function PDFNetworkStreamFullRequestReader_onDone(args) {
if (args) {
this._onProgressiveData(args.chunk);
}
this._done = true;
if (this._cachedChunks.length > 0) {
return;
}
this._requests.forEach(function (requestCapability) {
requestCapability.resolve({
value: undefined,
done: true
});
});
this._requests = [];
},
_onError: function PDFNetworkStreamFullRequestReader_onError(status) {
var url = this._url;
var exception = (0, _network_utils.createResponseStatusError)(status, url);
this._storedError = exception;
this._headersReceivedCapability.reject(exception);
this._requests.forEach(function (requestCapability) {
requestCapability.reject(exception);
});
this._requests = [];
this._cachedChunks = [];
},
_onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) {
if (this.onProgress) {
this.onProgress({
loaded: data.loaded,
total: data.lengthComputable ? data.total : this._contentLength
});
}
},
get filename() {
return this._filename;
},
get isRangeSupported() {
return this._isRangeSupported;
},
get isStreamingSupported() {
return this._isStreamingSupported;
},
get contentLength() {
return this._contentLength;
},
get headersReady() {
return this._headersReceivedCapability.promise;
},
read: function () {
var _read = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var chunk, requestCapability;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (!this._storedError) {
_context.next = 2;
break;
}
throw this._storedError;
case 2:
if (!(this._cachedChunks.length > 0)) {
_context.next = 5;
break;
}
chunk = this._cachedChunks.shift();
return _context.abrupt("return", {
value: chunk,
done: false
});
case 5:
if (!this._done) {
_context.next = 7;
break;
}
return _context.abrupt("return", {
value: undefined,
done: true
});
case 7:
requestCapability = (0, _util.createPromiseCapability)();
this._requests.push(requestCapability);
return _context.abrupt("return", requestCapability.promise);
case 10:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function read() {
return _read.apply(this, arguments);
}
return read;
}(),
cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) {
this._done = true;
this._headersReceivedCapability.reject(reason);
this._requests.forEach(function (requestCapability) {
requestCapability.resolve({
value: undefined,
done: true
});
});
this._requests = [];
if (this._manager.isPendingRequest(this._fullRequestId)) {
this._manager.abortRequest(this._fullRequestId);
}
this._fullRequestReader = null;
}
};
function PDFNetworkStreamRangeRequestReader(manager, begin, end) {
this._manager = manager;
var args = {
onDone: this._onDone.bind(this),
onProgress: this._onProgress.bind(this)
};
this._requestId = manager.requestRange(begin, end, args);
this._requests = [];
this._queuedChunk = null;
this._done = false;
this.onProgress = null;
this.onClosed = null;
}
PDFNetworkStreamRangeRequestReader.prototype = {
_close: function PDFNetworkStreamRangeRequestReader_close() {
if (this.onClosed) {
this.onClosed(this);
}
},
_onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) {
var chunk = data.chunk;
if (this._requests.length > 0) {
var requestCapability = this._requests.shift();
requestCapability.resolve({
value: chunk,
done: false
});
} else {
this._queuedChunk = chunk;
}
this._done = true;
this._requests.forEach(function (requestCapability) {
requestCapability.resolve({
value: undefined,
done: true
});
});
this._requests = [];
this._close();
},
_onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) {
if (!this.isStreamingSupported && this.onProgress) {
this.onProgress({
loaded: evt.loaded
});
}
},
get isStreamingSupported() {
return false;
},
read: function () {
var _read2 = _asyncToGenerator(
/*#__PURE__*/
_regenerator.default.mark(function _callee2() {
var chunk, requestCapability;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
if (!(this._queuedChunk !== null)) {
_context2.next = 4;
break;
}
chunk = this._queuedChunk;
this._queuedChunk = null;
return _context2.abrupt("return", {
value: chunk,
done: false
});
case 4:
if (!this._done) {
_context2.next = 6;
break;
}
return _context2.abrupt("return", {
value: undefined,
done: true
});
case 6:
requestCapability = (0, _util.createPromiseCapability)();
this._requests.push(requestCapability);
return _context2.abrupt("return", requestCapability.promise);
case 9:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function read() {
return _read2.apply(this, arguments);
}
return read;
}(),
cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) {
this._done = true;
this._requests.forEach(function (requestCapability) {
requestCapability.resolve({
value: undefined,
done: true
});
});
this._requests = [];
if (this._manager.isPendingRequest(this._requestId)) {
this._manager.abortRequest(this._requestId);
}
this._close();
}
};
/***/ })
/******/ ]);
});
//# sourceMappingURL=pdf.js.map