From a11223bcd4b8f18def7c481b495d47473702b64b Mon Sep 17 00:00:00 2001 From: Mateus Rambo Strey <mars11@inf.ufpr.br> Date: Wed, 23 Mar 2016 10:58:11 -0300 Subject: [PATCH] remove useless gems --- Gemfile | 56 +- Gemfile.lock | 85 +- public/pdfjs/LICENSE | 177 - public/pdfjs/build/pdf.js | 8295 ---- public/pdfjs/build/pdf.worker.js | 39959 ---------------- public/pdfjs/web/cmaps/78-EUC-H.bcmap | Bin 2404 -> 0 bytes public/pdfjs/web/cmaps/78-EUC-V.bcmap | Bin 173 -> 0 bytes public/pdfjs/web/cmaps/78-H.bcmap | Bin 2379 -> 0 bytes public/pdfjs/web/cmaps/78-RKSJ-H.bcmap | Bin 2398 -> 0 bytes public/pdfjs/web/cmaps/78-RKSJ-V.bcmap | Bin 173 -> 0 bytes public/pdfjs/web/cmaps/78-V.bcmap | Bin 169 -> 0 bytes public/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap | Bin 2651 -> 0 bytes public/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap | Bin 290 -> 0 bytes public/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap | Bin 905 -> 0 bytes public/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap | Bin 721 -> 0 bytes public/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap | Bin 290 -> 0 bytes public/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap | Bin 715 -> 0 bytes public/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap | Bin 291 -> 0 bytes public/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap | Bin 982 -> 0 bytes public/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap | Bin 260 -> 0 bytes public/pdfjs/web/cmaps/Add-H.bcmap | Bin 2419 -> 0 bytes public/pdfjs/web/cmaps/Add-RKSJ-H.bcmap | Bin 2413 -> 0 bytes public/pdfjs/web/cmaps/Add-RKSJ-V.bcmap | Bin 287 -> 0 bytes public/pdfjs/web/cmaps/Add-V.bcmap | Bin 282 -> 0 bytes public/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap | Bin 317 -> 0 bytes public/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap | Bin 371 -> 0 bytes public/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap | Bin 376 -> 0 bytes public/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap | Bin 401 -> 0 bytes public/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap | Bin 405 -> 0 bytes public/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap | Bin 406 -> 0 bytes public/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap | Bin 406 -> 0 bytes public/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap | Bin 41193 -> 0 bytes public/pdfjs/web/cmaps/Adobe-GB1-0.bcmap | Bin 217 -> 0 bytes public/pdfjs/web/cmaps/Adobe-GB1-1.bcmap | Bin 250 -> 0 bytes public/pdfjs/web/cmaps/Adobe-GB1-2.bcmap | Bin 465 -> 0 bytes public/pdfjs/web/cmaps/Adobe-GB1-3.bcmap | Bin 470 -> 0 bytes public/pdfjs/web/cmaps/Adobe-GB1-4.bcmap | Bin 601 -> 0 bytes public/pdfjs/web/cmaps/Adobe-GB1-5.bcmap | Bin 625 -> 0 bytes public/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap | Bin 33974 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap | Bin 225 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap | Bin 226 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap | Bin 233 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap | Bin 242 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap | Bin 337 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap | Bin 430 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap | Bin 485 -> 0 bytes .../pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap | Bin 40951 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap | Bin 241 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap | Bin 386 -> 0 bytes public/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap | Bin 391 -> 0 bytes .../pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap | Bin 23293 -> 0 bytes public/pdfjs/web/cmaps/B5-H.bcmap | Bin 1086 -> 0 bytes public/pdfjs/web/cmaps/B5-V.bcmap | Bin 142 -> 0 bytes public/pdfjs/web/cmaps/B5pc-H.bcmap | Bin 1099 -> 0 bytes public/pdfjs/web/cmaps/B5pc-V.bcmap | Bin 144 -> 0 bytes public/pdfjs/web/cmaps/CNS-EUC-H.bcmap | Bin 1780 -> 0 bytes public/pdfjs/web/cmaps/CNS-EUC-V.bcmap | Bin 1920 -> 0 bytes public/pdfjs/web/cmaps/CNS1-H.bcmap | Bin 706 -> 0 bytes public/pdfjs/web/cmaps/CNS1-V.bcmap | Bin 143 -> 0 bytes public/pdfjs/web/cmaps/CNS2-H.bcmap | Bin 504 -> 0 bytes public/pdfjs/web/cmaps/CNS2-V.bcmap | 3 - public/pdfjs/web/cmaps/ETHK-B5-H.bcmap | Bin 4426 -> 0 bytes public/pdfjs/web/cmaps/ETHK-B5-V.bcmap | Bin 158 -> 0 bytes public/pdfjs/web/cmaps/ETen-B5-H.bcmap | Bin 1125 -> 0 bytes public/pdfjs/web/cmaps/ETen-B5-V.bcmap | Bin 158 -> 0 bytes public/pdfjs/web/cmaps/ETenms-B5-H.bcmap | 3 - public/pdfjs/web/cmaps/ETenms-B5-V.bcmap | Bin 172 -> 0 bytes public/pdfjs/web/cmaps/EUC-H.bcmap | Bin 578 -> 0 bytes public/pdfjs/web/cmaps/EUC-V.bcmap | Bin 170 -> 0 bytes public/pdfjs/web/cmaps/Ext-H.bcmap | Bin 2536 -> 0 bytes public/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap | Bin 2542 -> 0 bytes public/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap | Bin 218 -> 0 bytes public/pdfjs/web/cmaps/Ext-V.bcmap | Bin 215 -> 0 bytes public/pdfjs/web/cmaps/GB-EUC-H.bcmap | Bin 549 -> 0 bytes public/pdfjs/web/cmaps/GB-EUC-V.bcmap | Bin 179 -> 0 bytes public/pdfjs/web/cmaps/GB-H.bcmap | 4 - public/pdfjs/web/cmaps/GB-V.bcmap | Bin 175 -> 0 bytes public/pdfjs/web/cmaps/GBK-EUC-H.bcmap | Bin 14692 -> 0 bytes public/pdfjs/web/cmaps/GBK-EUC-V.bcmap | Bin 180 -> 0 bytes public/pdfjs/web/cmaps/GBK2K-H.bcmap | Bin 19662 -> 0 bytes public/pdfjs/web/cmaps/GBK2K-V.bcmap | Bin 219 -> 0 bytes public/pdfjs/web/cmaps/GBKp-EUC-H.bcmap | Bin 14686 -> 0 bytes public/pdfjs/web/cmaps/GBKp-EUC-V.bcmap | Bin 181 -> 0 bytes public/pdfjs/web/cmaps/GBT-EUC-H.bcmap | Bin 7290 -> 0 bytes public/pdfjs/web/cmaps/GBT-EUC-V.bcmap | Bin 180 -> 0 bytes public/pdfjs/web/cmaps/GBT-H.bcmap | Bin 7269 -> 0 bytes public/pdfjs/web/cmaps/GBT-V.bcmap | Bin 176 -> 0 bytes public/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap | Bin 7298 -> 0 bytes public/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap | Bin 182 -> 0 bytes public/pdfjs/web/cmaps/GBpc-EUC-H.bcmap | Bin 557 -> 0 bytes public/pdfjs/web/cmaps/GBpc-EUC-V.bcmap | Bin 181 -> 0 bytes public/pdfjs/web/cmaps/H.bcmap | Bin 553 -> 0 bytes public/pdfjs/web/cmaps/HKdla-B5-H.bcmap | Bin 2654 -> 0 bytes public/pdfjs/web/cmaps/HKdla-B5-V.bcmap | Bin 148 -> 0 bytes public/pdfjs/web/cmaps/HKdlb-B5-H.bcmap | Bin 2414 -> 0 bytes public/pdfjs/web/cmaps/HKdlb-B5-V.bcmap | Bin 148 -> 0 bytes public/pdfjs/web/cmaps/HKgccs-B5-H.bcmap | Bin 2292 -> 0 bytes public/pdfjs/web/cmaps/HKgccs-B5-V.bcmap | Bin 149 -> 0 bytes public/pdfjs/web/cmaps/HKm314-B5-H.bcmap | Bin 1772 -> 0 bytes public/pdfjs/web/cmaps/HKm314-B5-V.bcmap | Bin 149 -> 0 bytes public/pdfjs/web/cmaps/HKm471-B5-H.bcmap | Bin 2171 -> 0 bytes public/pdfjs/web/cmaps/HKm471-B5-V.bcmap | Bin 149 -> 0 bytes public/pdfjs/web/cmaps/HKscs-B5-H.bcmap | Bin 4437 -> 0 bytes public/pdfjs/web/cmaps/HKscs-B5-V.bcmap | Bin 159 -> 0 bytes public/pdfjs/web/cmaps/Hankaku.bcmap | Bin 132 -> 0 bytes public/pdfjs/web/cmaps/Hiragana.bcmap | Bin 124 -> 0 bytes public/pdfjs/web/cmaps/KSC-EUC-H.bcmap | Bin 1848 -> 0 bytes public/pdfjs/web/cmaps/KSC-EUC-V.bcmap | Bin 164 -> 0 bytes public/pdfjs/web/cmaps/KSC-H.bcmap | Bin 1831 -> 0 bytes public/pdfjs/web/cmaps/KSC-Johab-H.bcmap | Bin 16791 -> 0 bytes public/pdfjs/web/cmaps/KSC-Johab-V.bcmap | Bin 166 -> 0 bytes public/pdfjs/web/cmaps/KSC-V.bcmap | Bin 160 -> 0 bytes public/pdfjs/web/cmaps/KSCms-UHC-H.bcmap | Bin 2787 -> 0 bytes public/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap | Bin 2789 -> 0 bytes public/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap | Bin 169 -> 0 bytes public/pdfjs/web/cmaps/KSCms-UHC-V.bcmap | Bin 166 -> 0 bytes public/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap | Bin 2024 -> 0 bytes public/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap | Bin 166 -> 0 bytes public/pdfjs/web/cmaps/Katakana.bcmap | Bin 100 -> 0 bytes public/pdfjs/web/cmaps/LICENSE | 36 - public/pdfjs/web/cmaps/NWP-H.bcmap | Bin 2765 -> 0 bytes public/pdfjs/web/cmaps/NWP-V.bcmap | Bin 252 -> 0 bytes public/pdfjs/web/cmaps/RKSJ-H.bcmap | Bin 534 -> 0 bytes public/pdfjs/web/cmaps/RKSJ-V.bcmap | Bin 170 -> 0 bytes public/pdfjs/web/cmaps/Roman.bcmap | Bin 96 -> 0 bytes public/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap | Bin 48280 -> 0 bytes public/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap | Bin 156 -> 0 bytes public/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap | Bin 50419 -> 0 bytes public/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap | Bin 156 -> 0 bytes public/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap | Bin 52679 -> 0 bytes public/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap | Bin 160 -> 0 bytes public/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap | Bin 53629 -> 0 bytes public/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap | Bin 157 -> 0 bytes public/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap | Bin 43366 -> 0 bytes public/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap | Bin 193 -> 0 bytes public/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap | Bin 44086 -> 0 bytes public/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap | Bin 178 -> 0 bytes public/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap | Bin 45738 -> 0 bytes public/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap | Bin 182 -> 0 bytes public/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap | Bin 46837 -> 0 bytes public/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap | Bin 181 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap | Bin 25439 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap | Bin 119 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap | Bin 680 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap | Bin 664 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap | Bin 39443 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap | Bin 643 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap | Bin 40539 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap | Bin 677 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap | Bin 41695 -> 0 bytes public/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap | Bin 678 -> 0 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap | Bin 39534 -> 0 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap | Bin 647 -> 0 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap | Bin 40630 -> 0 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap | Bin 681 -> 0 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap | Bin 41779 -> 0 bytes .../pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap | Bin 682 -> 0 bytes .../pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap | Bin 705 -> 0 bytes public/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap | Bin 689 -> 0 bytes public/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap | Bin 726 -> 0 bytes .../pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap | Bin 40517 -> 0 bytes .../pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap | Bin 684 -> 0 bytes .../web/cmaps/UniJISX02132004-UTF32-H.bcmap | Bin 40608 -> 0 bytes .../web/cmaps/UniJISX02132004-UTF32-V.bcmap | Bin 688 -> 0 bytes public/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap | Bin 25783 -> 0 bytes public/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap | Bin 178 -> 0 bytes public/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap | Bin 26327 -> 0 bytes public/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap | Bin 164 -> 0 bytes public/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap | Bin 26451 -> 0 bytes public/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap | Bin 168 -> 0 bytes public/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap | Bin 27790 -> 0 bytes public/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap | Bin 169 -> 0 bytes public/pdfjs/web/cmaps/V.bcmap | Bin 166 -> 0 bytes public/pdfjs/web/cmaps/WP-Symbol.bcmap | Bin 179 -> 0 bytes public/pdfjs/web/compatibility.js | 595 - .../web/compressed.tracemonkey-pldi-09.pdf | Bin 1016315 -> 0 bytes public/pdfjs/web/debugger.js | 620 - public/pdfjs/web/images/annotation-check.svg | 11 - .../pdfjs/web/images/annotation-comment.svg | 16 - public/pdfjs/web/images/annotation-help.svg | 26 - public/pdfjs/web/images/annotation-insert.svg | 10 - public/pdfjs/web/images/annotation-key.svg | 11 - .../web/images/annotation-newparagraph.svg | 11 - public/pdfjs/web/images/annotation-noicon.svg | 7 - public/pdfjs/web/images/annotation-note.svg | 42 - .../pdfjs/web/images/annotation-paragraph.svg | 16 - .../web/images/findbarButton-next-rtl.png | Bin 199 -> 0 bytes .../web/images/findbarButton-next-rtl@2x.png | Bin 304 -> 0 bytes .../pdfjs/web/images/findbarButton-next.png | Bin 193 -> 0 bytes .../web/images/findbarButton-next@2x.png | Bin 296 -> 0 bytes .../web/images/findbarButton-previous-rtl.png | Bin 193 -> 0 bytes .../images/findbarButton-previous-rtl@2x.png | Bin 296 -> 0 bytes .../web/images/findbarButton-previous.png | Bin 199 -> 0 bytes .../web/images/findbarButton-previous@2x.png | Bin 304 -> 0 bytes public/pdfjs/web/images/grab.cur | Bin 326 -> 0 bytes public/pdfjs/web/images/grabbing.cur | Bin 326 -> 0 bytes public/pdfjs/web/images/loading-icon.gif | Bin 2545 -> 0 bytes public/pdfjs/web/images/loading-small.png | Bin 7402 -> 0 bytes public/pdfjs/web/images/loading-small@2x.png | Bin 16131 -> 0 bytes ...ondaryToolbarButton-documentProperties.png | Bin 403 -> 0 bytes ...aryToolbarButton-documentProperties@2x.png | Bin 933 -> 0 bytes .../secondaryToolbarButton-firstPage.png | Bin 179 -> 0 bytes .../secondaryToolbarButton-firstPage@2x.png | Bin 266 -> 0 bytes .../secondaryToolbarButton-handTool.png | Bin 301 -> 0 bytes .../secondaryToolbarButton-handTool@2x.png | Bin 583 -> 0 bytes .../secondaryToolbarButton-lastPage.png | Bin 175 -> 0 bytes .../secondaryToolbarButton-lastPage@2x.png | Bin 276 -> 0 bytes .../secondaryToolbarButton-rotateCcw.png | Bin 360 -> 0 bytes .../secondaryToolbarButton-rotateCcw@2x.png | Bin 731 -> 0 bytes .../secondaryToolbarButton-rotateCw.png | Bin 359 -> 0 bytes .../secondaryToolbarButton-rotateCw@2x.png | Bin 714 -> 0 bytes public/pdfjs/web/images/shadow.png | Bin 290 -> 0 bytes public/pdfjs/web/images/texture.png | Bin 2418 -> 0 bytes .../web/images/toolbarButton-bookmark.png | Bin 174 -> 0 bytes .../web/images/toolbarButton-bookmark@2x.png | Bin 260 -> 0 bytes .../web/images/toolbarButton-download.png | Bin 259 -> 0 bytes .../web/images/toolbarButton-download@2x.png | Bin 425 -> 0 bytes .../web/images/toolbarButton-menuArrows.png | Bin 108 -> 0 bytes .../images/toolbarButton-menuArrows@2x.png | Bin 152 -> 0 bytes .../web/images/toolbarButton-openFile.png | Bin 295 -> 0 bytes .../web/images/toolbarButton-openFile@2x.png | Bin 550 -> 0 bytes .../web/images/toolbarButton-pageDown-rtl.png | Bin 242 -> 0 bytes .../images/toolbarButton-pageDown-rtl@2x.png | Bin 398 -> 0 bytes .../web/images/toolbarButton-pageDown.png | Bin 238 -> 0 bytes .../web/images/toolbarButton-pageDown@2x.png | Bin 396 -> 0 bytes .../web/images/toolbarButton-pageUp-rtl.png | Bin 245 -> 0 bytes .../images/toolbarButton-pageUp-rtl@2x.png | Bin 405 -> 0 bytes .../pdfjs/web/images/toolbarButton-pageUp.png | Bin 246 -> 0 bytes .../web/images/toolbarButton-pageUp@2x.png | Bin 403 -> 0 bytes .../images/toolbarButton-presentationMode.png | Bin 321 -> 0 bytes .../toolbarButton-presentationMode@2x.png | Bin 586 -> 0 bytes .../pdfjs/web/images/toolbarButton-print.png | Bin 257 -> 0 bytes .../web/images/toolbarButton-print@2x.png | Bin 464 -> 0 bytes .../pdfjs/web/images/toolbarButton-search.png | Bin 309 -> 0 bytes .../web/images/toolbarButton-search@2x.png | Bin 653 -> 0 bytes ...olbarButton-secondaryToolbarToggle-rtl.png | Bin 246 -> 0 bytes ...arButton-secondaryToolbarToggle-rtl@2x.png | Bin 456 -> 0 bytes .../toolbarButton-secondaryToolbarToggle.png | Bin 243 -> 0 bytes ...oolbarButton-secondaryToolbarToggle@2x.png | Bin 458 -> 0 bytes .../toolbarButton-sidebarToggle-rtl.png | Bin 225 -> 0 bytes .../toolbarButton-sidebarToggle-rtl@2x.png | Bin 344 -> 0 bytes .../images/toolbarButton-sidebarToggle.png | Bin 225 -> 0 bytes .../images/toolbarButton-sidebarToggle@2x.png | Bin 331 -> 0 bytes .../images/toolbarButton-viewAttachments.png | Bin 384 -> 0 bytes .../toolbarButton-viewAttachments@2x.png | Bin 871 -> 0 bytes .../images/toolbarButton-viewOutline-rtl.png | Bin 177 -> 0 bytes .../toolbarButton-viewOutline-rtl@2x.png | Bin 394 -> 0 bytes .../web/images/toolbarButton-viewOutline.png | Bin 178 -> 0 bytes .../images/toolbarButton-viewOutline@2x.png | Bin 331 -> 0 bytes .../images/toolbarButton-viewThumbnail.png | Bin 185 -> 0 bytes .../images/toolbarButton-viewThumbnail@2x.png | Bin 220 -> 0 bytes .../pdfjs/web/images/toolbarButton-zoomIn.png | Bin 136 -> 0 bytes .../web/images/toolbarButton-zoomIn@2x.png | Bin 160 -> 0 bytes .../web/images/toolbarButton-zoomOut.png | Bin 88 -> 0 bytes .../web/images/toolbarButton-zoomOut@2x.png | Bin 109 -> 0 bytes .../web/images/treeitem-collapsed-rtl.png | Bin 183 -> 0 bytes .../web/images/treeitem-collapsed-rtl@2x.png | Bin 205 -> 0 bytes .../pdfjs/web/images/treeitem-collapsed.png | Bin 128 -> 0 bytes .../web/images/treeitem-collapsed@2x.png | Bin 149 -> 0 bytes public/pdfjs/web/images/treeitem-expanded.png | Bin 125 -> 0 bytes .../pdfjs/web/images/treeitem-expanded@2x.png | Bin 172 -> 0 bytes public/pdfjs/web/l10n.js | 1033 - public/pdfjs/web/locale/ach/viewer.properties | 173 - public/pdfjs/web/locale/af/viewer.properties | 173 - public/pdfjs/web/locale/ak/viewer.properties | 131 - public/pdfjs/web/locale/an/viewer.properties | 173 - public/pdfjs/web/locale/ar/viewer.properties | 173 - public/pdfjs/web/locale/as/viewer.properties | 172 - public/pdfjs/web/locale/ast/viewer.properties | 111 - public/pdfjs/web/locale/az/viewer.properties | 173 - public/pdfjs/web/locale/be/viewer.properties | 105 - public/pdfjs/web/locale/bg/viewer.properties | 173 - .../pdfjs/web/locale/bn-BD/viewer.properties | 173 - .../pdfjs/web/locale/bn-IN/viewer.properties | 173 - public/pdfjs/web/locale/br/viewer.properties | 173 - public/pdfjs/web/locale/bs/viewer.properties | 173 - public/pdfjs/web/locale/ca/viewer.properties | 173 - public/pdfjs/web/locale/cs/viewer.properties | 167 - public/pdfjs/web/locale/csb/viewer.properties | 134 - public/pdfjs/web/locale/cy/viewer.properties | 173 - public/pdfjs/web/locale/da/viewer.properties | 167 - public/pdfjs/web/locale/de/viewer.properties | 167 - public/pdfjs/web/locale/el/viewer.properties | 173 - .../pdfjs/web/locale/en-GB/viewer.properties | 167 - .../pdfjs/web/locale/en-US/viewer.properties | 173 - .../pdfjs/web/locale/en-ZA/viewer.properties | 173 - public/pdfjs/web/locale/eo/viewer.properties | 173 - .../pdfjs/web/locale/es-AR/viewer.properties | 167 - .../pdfjs/web/locale/es-CL/viewer.properties | 130 - .../pdfjs/web/locale/es-ES/viewer.properties | 111 - .../pdfjs/web/locale/es-MX/viewer.properties | 173 - public/pdfjs/web/locale/et/viewer.properties | 167 - public/pdfjs/web/locale/eu/viewer.properties | 173 - public/pdfjs/web/locale/fa/viewer.properties | 173 - public/pdfjs/web/locale/ff/viewer.properties | 173 - public/pdfjs/web/locale/fi/viewer.properties | 167 - public/pdfjs/web/locale/fr/viewer.properties | 167 - .../pdfjs/web/locale/fy-NL/viewer.properties | 179 - .../pdfjs/web/locale/ga-IE/viewer.properties | 173 - public/pdfjs/web/locale/gd/viewer.properties | 173 - public/pdfjs/web/locale/gl/viewer.properties | 173 - .../pdfjs/web/locale/gu-IN/viewer.properties | 167 - public/pdfjs/web/locale/he/viewer.properties | 173 - .../pdfjs/web/locale/hi-IN/viewer.properties | 173 - public/pdfjs/web/locale/hr/viewer.properties | 173 - public/pdfjs/web/locale/hu/viewer.properties | 173 - .../pdfjs/web/locale/hy-AM/viewer.properties | 173 - public/pdfjs/web/locale/id/viewer.properties | 173 - public/pdfjs/web/locale/is/viewer.properties | 173 - public/pdfjs/web/locale/it/viewer.properties | 111 - public/pdfjs/web/locale/ja/viewer.properties | 167 - public/pdfjs/web/locale/ka/viewer.properties | 78 - public/pdfjs/web/locale/kk/viewer.properties | 173 - public/pdfjs/web/locale/km/viewer.properties | 173 - public/pdfjs/web/locale/kn/viewer.properties | 173 - public/pdfjs/web/locale/ko/viewer.properties | 173 - public/pdfjs/web/locale/ku/viewer.properties | 147 - public/pdfjs/web/locale/lg/viewer.properties | 111 - public/pdfjs/web/locale/lij/viewer.properties | 116 - public/pdfjs/web/locale/locale.properties | 312 - public/pdfjs/web/locale/lt/viewer.properties | 173 - public/pdfjs/web/locale/lv/viewer.properties | 173 - public/pdfjs/web/locale/mai/viewer.properties | 171 - public/pdfjs/web/locale/mk/viewer.properties | 126 - public/pdfjs/web/locale/ml/viewer.properties | 173 - public/pdfjs/web/locale/mn/viewer.properties | 79 - public/pdfjs/web/locale/mr/viewer.properties | 173 - public/pdfjs/web/locale/ms/viewer.properties | 171 - public/pdfjs/web/locale/my/viewer.properties | 173 - .../pdfjs/web/locale/nb-NO/viewer.properties | 167 - public/pdfjs/web/locale/nl/viewer.properties | 173 - .../pdfjs/web/locale/nn-NO/viewer.properties | 167 - public/pdfjs/web/locale/nso/viewer.properties | 131 - public/pdfjs/web/locale/oc/viewer.properties | 171 - public/pdfjs/web/locale/or/viewer.properties | 172 - .../pdfjs/web/locale/pa-IN/viewer.properties | 181 - public/pdfjs/web/locale/pl/viewer.properties | 152 - .../pdfjs/web/locale/pt-BR/viewer.properties | 173 - .../pdfjs/web/locale/pt-PT/viewer.properties | 173 - public/pdfjs/web/locale/rm/viewer.properties | 167 - public/pdfjs/web/locale/ro/viewer.properties | 173 - public/pdfjs/web/locale/ru/viewer.properties | 111 - public/pdfjs/web/locale/rw/viewer.properties | 79 - public/pdfjs/web/locale/sah/viewer.properties | 171 - public/pdfjs/web/locale/si/viewer.properties | 173 - public/pdfjs/web/locale/sk/viewer.properties | 173 - public/pdfjs/web/locale/sl/viewer.properties | 173 - public/pdfjs/web/locale/son/viewer.properties | 173 - public/pdfjs/web/locale/sq/viewer.properties | 165 - public/pdfjs/web/locale/sr/viewer.properties | 167 - .../pdfjs/web/locale/sv-SE/viewer.properties | 173 - public/pdfjs/web/locale/sw/viewer.properties | 129 - .../pdfjs/web/locale/ta-LK/viewer.properties | 72 - public/pdfjs/web/locale/ta/viewer.properties | 173 - public/pdfjs/web/locale/te/viewer.properties | 173 - public/pdfjs/web/locale/th/viewer.properties | 173 - public/pdfjs/web/locale/tl/viewer.properties | 94 - public/pdfjs/web/locale/tn/viewer.properties | 83 - public/pdfjs/web/locale/tr/viewer.properties | 173 - public/pdfjs/web/locale/uk/viewer.properties | 173 - public/pdfjs/web/locale/ur/viewer.properties | 161 - public/pdfjs/web/locale/vi/viewer.properties | 173 - public/pdfjs/web/locale/wo/viewer.properties | 124 - public/pdfjs/web/locale/xh/viewer.properties | 173 - .../pdfjs/web/locale/zh-CN/viewer.properties | 173 - .../pdfjs/web/locale/zh-TW/viewer.properties | 174 - public/pdfjs/web/locale/zu/viewer.properties | 132 - public/pdfjs/web/viewer.css | 2088 - public/pdfjs/web/viewer.html | 423 - public/pdfjs/web/viewer.js | 8197 ---- 370 files changed, 6 insertions(+), 78541 deletions(-) delete mode 100644 public/pdfjs/LICENSE delete mode 100644 public/pdfjs/build/pdf.js delete mode 100644 public/pdfjs/build/pdf.worker.js delete mode 100644 public/pdfjs/web/cmaps/78-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/78-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/78-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/78-RKSJ-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/78-RKSJ-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/78-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/Add-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/Add-RKSJ-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/Add-RKSJ-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/Add-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-GB1-0.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-GB1-1.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-GB1-2.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-GB1-3.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-GB1-4.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-GB1-5.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap delete mode 100644 public/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap delete mode 100644 public/pdfjs/web/cmaps/B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/B5pc-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/B5pc-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/CNS-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/CNS-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/CNS1-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/CNS1-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/CNS2-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/CNS2-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/ETHK-B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/ETHK-B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/ETen-B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/ETen-B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/ETenms-B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/ETenms-B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/Ext-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/Ext-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/GB-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/GB-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/GB-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/GB-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBK-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBK-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBK2K-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBK2K-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBKp-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBKp-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBT-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBT-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBT-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBT-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBpc-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/GBpc-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/H.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKdla-B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKdla-B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKdlb-B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKdlb-B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKgccs-B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKgccs-B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKm314-B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKm314-B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKm471-B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKm471-B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKscs-B5-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/HKscs-B5-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/Hankaku.bcmap delete mode 100644 public/pdfjs/web/cmaps/Hiragana.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSC-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSC-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSC-Johab-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSC-Johab-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSCms-UHC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSCms-UHC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/Katakana.bcmap delete mode 100644 public/pdfjs/web/cmaps/LICENSE delete mode 100644 public/pdfjs/web/cmaps/NWP-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/NWP-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/RKSJ-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/RKSJ-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/Roman.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap delete mode 100644 public/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap delete mode 100644 public/pdfjs/web/cmaps/V.bcmap delete mode 100644 public/pdfjs/web/cmaps/WP-Symbol.bcmap delete mode 100644 public/pdfjs/web/compatibility.js delete mode 100644 public/pdfjs/web/compressed.tracemonkey-pldi-09.pdf delete mode 100644 public/pdfjs/web/debugger.js delete mode 100644 public/pdfjs/web/images/annotation-check.svg delete mode 100644 public/pdfjs/web/images/annotation-comment.svg delete mode 100644 public/pdfjs/web/images/annotation-help.svg delete mode 100644 public/pdfjs/web/images/annotation-insert.svg delete mode 100644 public/pdfjs/web/images/annotation-key.svg delete mode 100644 public/pdfjs/web/images/annotation-newparagraph.svg delete mode 100644 public/pdfjs/web/images/annotation-noicon.svg delete mode 100644 public/pdfjs/web/images/annotation-note.svg delete mode 100644 public/pdfjs/web/images/annotation-paragraph.svg delete mode 100644 public/pdfjs/web/images/findbarButton-next-rtl.png delete mode 100644 public/pdfjs/web/images/findbarButton-next-rtl@2x.png delete mode 100644 public/pdfjs/web/images/findbarButton-next.png delete mode 100644 public/pdfjs/web/images/findbarButton-next@2x.png delete mode 100644 public/pdfjs/web/images/findbarButton-previous-rtl.png delete mode 100644 public/pdfjs/web/images/findbarButton-previous-rtl@2x.png delete mode 100644 public/pdfjs/web/images/findbarButton-previous.png delete mode 100644 public/pdfjs/web/images/findbarButton-previous@2x.png delete mode 100644 public/pdfjs/web/images/grab.cur delete mode 100644 public/pdfjs/web/images/grabbing.cur delete mode 100644 public/pdfjs/web/images/loading-icon.gif delete mode 100644 public/pdfjs/web/images/loading-small.png delete mode 100644 public/pdfjs/web/images/loading-small@2x.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-documentProperties.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-documentProperties@2x.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-firstPage.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-firstPage@2x.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-handTool.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-handTool@2x.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-lastPage.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-lastPage@2x.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-rotateCcw.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-rotateCcw@2x.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-rotateCw.png delete mode 100644 public/pdfjs/web/images/secondaryToolbarButton-rotateCw@2x.png delete mode 100644 public/pdfjs/web/images/shadow.png delete mode 100644 public/pdfjs/web/images/texture.png delete mode 100644 public/pdfjs/web/images/toolbarButton-bookmark.png delete mode 100644 public/pdfjs/web/images/toolbarButton-bookmark@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-download.png delete mode 100644 public/pdfjs/web/images/toolbarButton-download@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-menuArrows.png delete mode 100644 public/pdfjs/web/images/toolbarButton-menuArrows@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-openFile.png delete mode 100644 public/pdfjs/web/images/toolbarButton-openFile@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-pageDown-rtl.png delete mode 100644 public/pdfjs/web/images/toolbarButton-pageDown-rtl@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-pageDown.png delete mode 100644 public/pdfjs/web/images/toolbarButton-pageDown@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-pageUp-rtl.png delete mode 100644 public/pdfjs/web/images/toolbarButton-pageUp-rtl@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-pageUp.png delete mode 100644 public/pdfjs/web/images/toolbarButton-pageUp@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-presentationMode.png delete mode 100644 public/pdfjs/web/images/toolbarButton-presentationMode@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-print.png delete mode 100644 public/pdfjs/web/images/toolbarButton-print@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-search.png delete mode 100644 public/pdfjs/web/images/toolbarButton-search@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl.png delete mode 100644 public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.png delete mode 100644 public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-sidebarToggle-rtl.png delete mode 100644 public/pdfjs/web/images/toolbarButton-sidebarToggle-rtl@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-sidebarToggle.png delete mode 100644 public/pdfjs/web/images/toolbarButton-sidebarToggle@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-viewAttachments.png delete mode 100644 public/pdfjs/web/images/toolbarButton-viewAttachments@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-viewOutline-rtl.png delete mode 100644 public/pdfjs/web/images/toolbarButton-viewOutline-rtl@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-viewOutline.png delete mode 100644 public/pdfjs/web/images/toolbarButton-viewOutline@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-viewThumbnail.png delete mode 100644 public/pdfjs/web/images/toolbarButton-viewThumbnail@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-zoomIn.png delete mode 100644 public/pdfjs/web/images/toolbarButton-zoomIn@2x.png delete mode 100644 public/pdfjs/web/images/toolbarButton-zoomOut.png delete mode 100644 public/pdfjs/web/images/toolbarButton-zoomOut@2x.png delete mode 100644 public/pdfjs/web/images/treeitem-collapsed-rtl.png delete mode 100644 public/pdfjs/web/images/treeitem-collapsed-rtl@2x.png delete mode 100644 public/pdfjs/web/images/treeitem-collapsed.png delete mode 100644 public/pdfjs/web/images/treeitem-collapsed@2x.png delete mode 100644 public/pdfjs/web/images/treeitem-expanded.png delete mode 100644 public/pdfjs/web/images/treeitem-expanded@2x.png delete mode 100644 public/pdfjs/web/l10n.js delete mode 100644 public/pdfjs/web/locale/ach/viewer.properties delete mode 100644 public/pdfjs/web/locale/af/viewer.properties delete mode 100644 public/pdfjs/web/locale/ak/viewer.properties delete mode 100644 public/pdfjs/web/locale/an/viewer.properties delete mode 100644 public/pdfjs/web/locale/ar/viewer.properties delete mode 100644 public/pdfjs/web/locale/as/viewer.properties delete mode 100644 public/pdfjs/web/locale/ast/viewer.properties delete mode 100644 public/pdfjs/web/locale/az/viewer.properties delete mode 100644 public/pdfjs/web/locale/be/viewer.properties delete mode 100644 public/pdfjs/web/locale/bg/viewer.properties delete mode 100644 public/pdfjs/web/locale/bn-BD/viewer.properties delete mode 100644 public/pdfjs/web/locale/bn-IN/viewer.properties delete mode 100644 public/pdfjs/web/locale/br/viewer.properties delete mode 100644 public/pdfjs/web/locale/bs/viewer.properties delete mode 100644 public/pdfjs/web/locale/ca/viewer.properties delete mode 100644 public/pdfjs/web/locale/cs/viewer.properties delete mode 100644 public/pdfjs/web/locale/csb/viewer.properties delete mode 100644 public/pdfjs/web/locale/cy/viewer.properties delete mode 100644 public/pdfjs/web/locale/da/viewer.properties delete mode 100644 public/pdfjs/web/locale/de/viewer.properties delete mode 100644 public/pdfjs/web/locale/el/viewer.properties delete mode 100644 public/pdfjs/web/locale/en-GB/viewer.properties delete mode 100644 public/pdfjs/web/locale/en-US/viewer.properties delete mode 100644 public/pdfjs/web/locale/en-ZA/viewer.properties delete mode 100644 public/pdfjs/web/locale/eo/viewer.properties delete mode 100644 public/pdfjs/web/locale/es-AR/viewer.properties delete mode 100644 public/pdfjs/web/locale/es-CL/viewer.properties delete mode 100644 public/pdfjs/web/locale/es-ES/viewer.properties delete mode 100644 public/pdfjs/web/locale/es-MX/viewer.properties delete mode 100644 public/pdfjs/web/locale/et/viewer.properties delete mode 100644 public/pdfjs/web/locale/eu/viewer.properties delete mode 100644 public/pdfjs/web/locale/fa/viewer.properties delete mode 100644 public/pdfjs/web/locale/ff/viewer.properties delete mode 100644 public/pdfjs/web/locale/fi/viewer.properties delete mode 100644 public/pdfjs/web/locale/fr/viewer.properties delete mode 100644 public/pdfjs/web/locale/fy-NL/viewer.properties delete mode 100644 public/pdfjs/web/locale/ga-IE/viewer.properties delete mode 100644 public/pdfjs/web/locale/gd/viewer.properties delete mode 100644 public/pdfjs/web/locale/gl/viewer.properties delete mode 100644 public/pdfjs/web/locale/gu-IN/viewer.properties delete mode 100644 public/pdfjs/web/locale/he/viewer.properties delete mode 100644 public/pdfjs/web/locale/hi-IN/viewer.properties delete mode 100644 public/pdfjs/web/locale/hr/viewer.properties delete mode 100644 public/pdfjs/web/locale/hu/viewer.properties delete mode 100644 public/pdfjs/web/locale/hy-AM/viewer.properties delete mode 100644 public/pdfjs/web/locale/id/viewer.properties delete mode 100644 public/pdfjs/web/locale/is/viewer.properties delete mode 100644 public/pdfjs/web/locale/it/viewer.properties delete mode 100644 public/pdfjs/web/locale/ja/viewer.properties delete mode 100644 public/pdfjs/web/locale/ka/viewer.properties delete mode 100644 public/pdfjs/web/locale/kk/viewer.properties delete mode 100644 public/pdfjs/web/locale/km/viewer.properties delete mode 100644 public/pdfjs/web/locale/kn/viewer.properties delete mode 100644 public/pdfjs/web/locale/ko/viewer.properties delete mode 100644 public/pdfjs/web/locale/ku/viewer.properties delete mode 100644 public/pdfjs/web/locale/lg/viewer.properties delete mode 100644 public/pdfjs/web/locale/lij/viewer.properties delete mode 100644 public/pdfjs/web/locale/locale.properties delete mode 100644 public/pdfjs/web/locale/lt/viewer.properties delete mode 100644 public/pdfjs/web/locale/lv/viewer.properties delete mode 100644 public/pdfjs/web/locale/mai/viewer.properties delete mode 100644 public/pdfjs/web/locale/mk/viewer.properties delete mode 100644 public/pdfjs/web/locale/ml/viewer.properties delete mode 100644 public/pdfjs/web/locale/mn/viewer.properties delete mode 100644 public/pdfjs/web/locale/mr/viewer.properties delete mode 100644 public/pdfjs/web/locale/ms/viewer.properties delete mode 100644 public/pdfjs/web/locale/my/viewer.properties delete mode 100644 public/pdfjs/web/locale/nb-NO/viewer.properties delete mode 100644 public/pdfjs/web/locale/nl/viewer.properties delete mode 100644 public/pdfjs/web/locale/nn-NO/viewer.properties delete mode 100644 public/pdfjs/web/locale/nso/viewer.properties delete mode 100644 public/pdfjs/web/locale/oc/viewer.properties delete mode 100644 public/pdfjs/web/locale/or/viewer.properties delete mode 100644 public/pdfjs/web/locale/pa-IN/viewer.properties delete mode 100644 public/pdfjs/web/locale/pl/viewer.properties delete mode 100644 public/pdfjs/web/locale/pt-BR/viewer.properties delete mode 100644 public/pdfjs/web/locale/pt-PT/viewer.properties delete mode 100644 public/pdfjs/web/locale/rm/viewer.properties delete mode 100644 public/pdfjs/web/locale/ro/viewer.properties delete mode 100644 public/pdfjs/web/locale/ru/viewer.properties delete mode 100644 public/pdfjs/web/locale/rw/viewer.properties delete mode 100644 public/pdfjs/web/locale/sah/viewer.properties delete mode 100644 public/pdfjs/web/locale/si/viewer.properties delete mode 100644 public/pdfjs/web/locale/sk/viewer.properties delete mode 100644 public/pdfjs/web/locale/sl/viewer.properties delete mode 100644 public/pdfjs/web/locale/son/viewer.properties delete mode 100644 public/pdfjs/web/locale/sq/viewer.properties delete mode 100644 public/pdfjs/web/locale/sr/viewer.properties delete mode 100644 public/pdfjs/web/locale/sv-SE/viewer.properties delete mode 100644 public/pdfjs/web/locale/sw/viewer.properties delete mode 100644 public/pdfjs/web/locale/ta-LK/viewer.properties delete mode 100644 public/pdfjs/web/locale/ta/viewer.properties delete mode 100644 public/pdfjs/web/locale/te/viewer.properties delete mode 100644 public/pdfjs/web/locale/th/viewer.properties delete mode 100644 public/pdfjs/web/locale/tl/viewer.properties delete mode 100644 public/pdfjs/web/locale/tn/viewer.properties delete mode 100644 public/pdfjs/web/locale/tr/viewer.properties delete mode 100644 public/pdfjs/web/locale/uk/viewer.properties delete mode 100644 public/pdfjs/web/locale/ur/viewer.properties delete mode 100644 public/pdfjs/web/locale/vi/viewer.properties delete mode 100644 public/pdfjs/web/locale/wo/viewer.properties delete mode 100644 public/pdfjs/web/locale/xh/viewer.properties delete mode 100644 public/pdfjs/web/locale/zh-CN/viewer.properties delete mode 100644 public/pdfjs/web/locale/zh-TW/viewer.properties delete mode 100644 public/pdfjs/web/locale/zu/viewer.properties delete mode 100644 public/pdfjs/web/viewer.css delete mode 100644 public/pdfjs/web/viewer.html delete mode 100644 public/pdfjs/web/viewer.js diff --git a/Gemfile b/Gemfile index 224591bb..3e2c143d 100644 --- a/Gemfile +++ b/Gemfile @@ -4,36 +4,15 @@ source 'https://rubygems.org' gem 'rails', '4.2.6' # Use postgresql as the database for Active Record gem 'pg' -# Use SCSS for stylesheets -gem 'sass-rails', '~> 5.0' -# Use Uglifier as compressor for JavaScript assets -gem 'uglifier', '>= 1.3.0' -# Use CoffeeScript for .coffee assets and views -gem 'coffee-rails', '~> 4.1.0' - -gem 'therubyracer' - -# Use jquery as the JavaScript library -gem 'jquery-rails' -# autocomplete for search -gem 'jquery-ui-rails' -# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks -gem 'turbolinks' -gem 'jquery-turbolinks' + # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder -gem 'jbuilder', '~> 2.0' +gem 'jbuilder', '~> 2.0' # leave or not? # bundle exec rake doc:rails generates the API under doc/api. gem 'sdoc', '~> 0.4.0', group: :doc # Use ActiveModel has_secure_password gem 'bcrypt', '~> 3.1.7' -# Use Unicorn as the app server -# gem 'unicorn' - -# Use Capistrano for deployment -# gem 'capistrano-rails', group: :development - # memcached gem 'dalli' @@ -53,42 +32,21 @@ gem 'paperclip' gem 'devise_token_auth' gem 'rack-cors', require: 'rack/cors' -# bootstrap -gem 'bootstrap-sass' - -# select box used in search -gem 'select2-rails' - gem 'rmagick' -# Gruff (graphs and charts) -# gem 'gruff' - # Dspace REST API Integration gem 'dspace_rest_client' # pretty logs gem 'rainbow' -# chart js -gem 'chart-js-rails' - # depoyment gem 'mina' -# management visual framework -gem 'locastyle' - -# paginate results -gem 'kaminari' - # docs gem 'rdoc' gem 'stackprof' -# awesome font icons -gem 'font-awesome-rails' - group :development do gem 'immigrant' @@ -144,9 +102,6 @@ gem 'libarchive-static' gem 'gitlab' -# upload -gem 'resumablejs-rails' - # authorization gem 'pundit' @@ -160,22 +115,15 @@ gem 'feature' gem 'activerecord-import' # social connect -gem 'social-share-button' -gem 'meta-tags' gem 'omniauth-facebook' gem 'omniauth-twitter' gem 'omniauth-google-oauth2' -# edit in place with ajax -gem 'best_in_place' - # get mime type gem 'mimemagic' # html screenshot gem 'screencap' -gem 'wicked' - # using while rails 5 isn't released gem 'rails-api' diff --git a/Gemfile.lock b/Gemfile.lock index 36a29235..5792d824 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -42,8 +42,6 @@ GEM ansi (1.5.0) arel (6.0.3) ast (2.2.0) - autoprefixer-rails (6.3.4) - execjs axiom-types (0.1.1) descendants_tracker (~> 0.0.4) ice_nine (~> 0.11.0) @@ -51,18 +49,12 @@ GEM bcrypt (3.1.11) bcrypt-ruby (3.1.5) bcrypt (>= 3.1.3) - best_in_place (3.1.0) - actionpack (>= 3.2) - railties (>= 3.2) better_errors (2.1.1) coderay (>= 1.0.0) erubis (>= 2.6.6) rack (>= 0.9.0) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) - bootstrap-sass (3.3.6) - autoprefixer-rails (>= 5.2.1) - sass (>= 3.3.4) brakeman (3.2.1) erubis (~> 2.6) haml (>= 3.0, < 5.0) @@ -78,8 +70,6 @@ GEM activesupport (>= 3.0.0) uniform_notifier (~> 1.9.0) byebug (8.2.2) - chart-js-rails (0.0.9) - railties (> 3.1) chronic (0.10.2) climate_control (0.0.3) activesupport (>= 3.0) @@ -90,13 +80,6 @@ GEM coderay (1.1.1) coercible (1.0.0) descendants_tracker (~> 0.0.1) - coffee-rails (4.1.1) - coffee-script (>= 2.2.0) - railties (>= 4.0.0, < 5.1.x) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.10.0) colorize (0.7.7) concurrent-ruby (1.0.1) connection_pool (2.2.0) @@ -210,8 +193,6 @@ GEM flog (4.3.2) ruby_parser (~> 3.1, > 3.1.0) sexp_processor (~> 4.4) - font-awesome-rails (4.5.0.1) - railties (>= 3.2, < 5.1) gitlab (3.6.1) httparty terminal-table @@ -231,34 +212,18 @@ GEM jbuilder (2.4.1) activesupport (>= 3.0.0, < 5.1) multi_json (~> 1.2) - jquery-rails (4.1.1) - rails-dom-testing (>= 1, < 3) - railties (>= 4.2.0) - thor (>= 0.14, < 2.0) - jquery-turbolinks (2.1.0) - railties (>= 3.1.0) - turbolinks - jquery-ui-rails (5.0.5) - railties (>= 3.2.16) json (1.8.3) json_pure (1.8.3) justify (1.0.2) jwt (1.5.1) - kaminari (0.16.3) - actionpack (>= 3.0.0) - activesupport (>= 3.0.0) launchy (2.4.3) addressable (~> 2.3) libarchive-static (1.0.5) - libv8 (3.16.14.13) - locastyle (0.0.4) logger-colors (1.0.0) loofah (2.0.3) nokogiri (>= 1.5.9) mail (2.6.3) mime-types (>= 1.16, < 3) - meta-tags (2.1.0) - actionpack (>= 3.0.0) mime-types (2.99.1) mimemagic (0.3.0) mina (0.3.8) @@ -319,8 +284,6 @@ GEM puma (3.2.0) pundit (1.1.0) activesupport (>= 3.0.0) - quiet_assets (1.1.0) - railties (>= 3.1, < 5.0) rack (1.6.4) rack-cors (0.4.0) rack-mini-profiler (0.9.9.2) @@ -340,6 +303,9 @@ GEM bundler (>= 1.3.0, < 2.0) railties (= 4.2.6) sprockets-rails + rails-api (0.4.0) + actionpack (>= 3.2.11) + railties (>= 3.2.11) rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) rails-dom-testing (1.0.7) @@ -364,13 +330,10 @@ GEM codeclimate-engine-rb (~> 0.3.1) parser (~> 2.3, >= 2.3.0.6) rainbow (~> 2.0) - ref (2.0.0) resource_kit (0.1.5) addressable (~> 2.3.6) responders (2.1.2) railties (>= 4.2.0, < 5.1) - resumablejs-rails (1.1) - railties (> 3.1, < 5) rmagick (2.15.4) ruby-progressbar (1.7.5) ruby2ruby (2.3.0) @@ -389,12 +352,6 @@ GEM virtus (~> 1.0) safe_yaml (1.0.4) sass (3.4.21) - sass-rails (5.0.4) - railties (>= 4.0.0, < 5.0) - sass (~> 3.1) - sprockets (>= 2.8, < 4.0) - sprockets-rails (>= 2.0, < 4.0) - tilt (>= 1.1, < 3) screencap (0.1.4) phantomjs sdoc (0.4.1) @@ -404,8 +361,6 @@ GEM activemodel elasticsearch (>= 1) hashie - select2-rails (4.0.1.1) - thor (~> 0.14) sexp_processor (4.7.0) shoulda (3.5.0) shoulda-context (~> 1.0, >= 1.0.1) @@ -424,9 +379,6 @@ GEM slim (3.0.6) temple (~> 0.7.3) tilt (>= 1.3.3, < 2.1) - social-share-button (0.1.10) - coffee-rails - sass-rails spring (1.6.4) sprockets (3.5.2) concurrent-ruby (~> 1.0) @@ -443,19 +395,11 @@ GEM ffi (>= 1.0.0) temple (0.7.6) terminal-table (1.5.2) - therubyracer (0.12.2) - libv8 (~> 3.16.14.0) - ref thor (0.19.1) thread_safe (0.3.5) tilt (2.0.2) - turbolinks (2.5.3) - coffee-rails tzinfo (1.2.2) thread_safe (~> 0.1) - uglifier (2.7.2) - execjs (>= 0.3.0) - json (>= 1.8.0) uniform_notifier (1.9.0) uuidtools (2.1.5) virtus (1.0.5) @@ -472,8 +416,6 @@ GEM sprockets-rails (>= 2.0, < 4.0) whenever (0.9.4) chronic (>= 0.6.3) - wicked (1.2.1) - railties (>= 3.0.7) PLATFORMS ruby @@ -481,14 +423,10 @@ PLATFORMS DEPENDENCIES activerecord-import bcrypt (~> 3.1.7) - best_in_place better_errors - bootstrap-sass brakeman bullet byebug - chart-js-rails - coffee-rails (~> 4.1.0) curb (~> 0.8.8) dalli dawnscanner @@ -498,17 +436,10 @@ DEPENDENCIES execjs feature flamegraph - font-awesome-rails gitlab immigrant jbuilder (~> 2.0) - jquery-rails - jquery-turbolinks - jquery-ui-rails - kaminari libarchive-static - locastyle - meta-tags mimemagic mina minitest-reporters @@ -519,34 +450,26 @@ DEPENDENCIES pg puma pundit - quiet_assets rack-cors rack-mini-profiler rails (= 4.2.6) + rails-api rainbow rdoc - resumablejs-rails rmagick rubycritic - sass-rails (~> 5.0) screencap sdoc (~> 0.4.0) searchkick - select2-rails shoulda sidekiq sinatra slim - social-share-button spring stackprof streamio-ffmpeg (~> 1.0.0) - therubyracer - turbolinks - uglifier (>= 1.3.0) web-console (~> 2.0) whenever - wicked BUNDLED WITH 1.11.2 diff --git a/public/pdfjs/LICENSE b/public/pdfjs/LICENSE deleted file mode 100644 index f433b1a5..00000000 --- a/public/pdfjs/LICENSE +++ /dev/null @@ -1,177 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/public/pdfjs/build/pdf.js b/public/pdfjs/build/pdf.js deleted file mode 100644 index 33c911a7..00000000 --- a/public/pdfjs/build/pdf.js +++ /dev/null @@ -1,8295 +0,0 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ -/* Copyright 2012 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. - */ -/*jshint globalstrict: false */ -/* globals PDFJS */ - -// Initializing PDFJS global object (if still undefined) -if (typeof PDFJS === 'undefined') { - (typeof window !== 'undefined' ? window : this).PDFJS = {}; -} - -PDFJS.version = '1.2.109'; -PDFJS.build = '875588d'; - -(function pdfjsWrapper() { - // Use strict in our context only - users might not want it - 'use strict'; - - - -var globalScope = (typeof window === 'undefined') ? this : window; - -var isWorker = (typeof window === 'undefined'); - -var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; - -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 -}; - -var ImageKind = { - GRAYSCALE_1BPP: 1, - RGB_24BPP: 2, - RGBA_32BPP: 3 -}; - -var AnnotationType = { - WIDGET: 1, - TEXT: 2, - LINK: 3 -}; - -var AnnotationBorderStyleType = { - SOLID: 1, - DASHED: 2, - BEVELED: 3, - INSET: 4, - UNDERLINE: 5 -}; - -var StreamType = { - UNKNOWN: 0, - FLATE: 1, - LZW: 2, - DCT: 3, - JPX: 4, - JBIG: 5, - A85: 6, - AHX: 7, - CCF: 8, - RL: 9 -}; - -var FontType = { - UNKNOWN: 0, - TYPE1: 1, - TYPE1C: 2, - CIDFONTTYPE0: 3, - CIDFONTTYPE0C: 4, - TRUETYPE: 5, - CIDFONTTYPE2: 6, - TYPE3: 7, - OPENTYPE: 8, - TYPE0: 9, - MMTYPE1: 10 -}; - -// The global PDFJS object exposes the API -// In production, it will be declared outside a global wrapper -// In development, it will be declared here -if (!globalScope.PDFJS) { - globalScope.PDFJS = {}; -} - -globalScope.PDFJS.pdfBug = false; - -PDFJS.VERBOSITY_LEVELS = { - errors: 0, - warnings: 1, - infos: 5 -}; - -// All the possible operations for an operator list. -var OPS = PDFJS.OPS = { - // Intentionally start from 1 so it is easy to spot bad operators that will be - // 0's. - 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 -}; - -// A notice for devs. These are good for things that are helpful to devs, such -// as warning that Workers were disabled, which is important to devs but not -// end users. -function info(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.infos) { - console.log('Info: ' + msg); - } -} - -// Non-fatal warnings. -function warn(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.warnings) { - console.log('Warning: ' + msg); - } -} - -// Deprecated API function -- treated as warnings. -function deprecated(details) { - warn('Deprecated API usage: ' + details); -} - -// Fatal errors that should trigger the fallback UI and halt execution by -// throwing an exception. -function error(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.errors) { - console.log('Error: ' + msg); - console.log(backtrace()); - } - UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown); - throw new Error(msg); -} - -function backtrace() { - try { - throw new Error(); - } catch (e) { - return e.stack ? e.stack.split('\n').slice(2).join('\n') : ''; - } -} - -function assert(cond, msg) { - if (!cond) { - error(msg); - } -} - -var UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = { - unknown: 'unknown', - forms: 'forms', - javaScript: 'javaScript', - smask: 'smask', - shadingPattern: 'shadingPattern', - font: 'font' -}; - -var UnsupportedManager = PDFJS.UnsupportedManager = - (function UnsupportedManagerClosure() { - var listeners = []; - return { - listen: function (cb) { - listeners.push(cb); - }, - notify: function (featureId) { - warn('Unsupported feature "' + featureId + '"'); - for (var i = 0, ii = listeners.length; i < ii; i++) { - listeners[i](featureId); - } - } - }; -})(); - -// Combines two URLs. The baseUrl shall be absolute URL. If the url is an -// absolute URL, it will be returned as is. -function combineUrl(baseUrl, url) { - if (!url) { - return baseUrl; - } - if (/^[a-z][a-z0-9+\-.]*:/i.test(url)) { - return url; - } - var i; - if (url.charAt(0) === '/') { - // absolute path - i = baseUrl.indexOf('://'); - if (url.charAt(1) === '/') { - ++i; - } else { - i = baseUrl.indexOf('/', i + 3); - } - return baseUrl.substring(0, i) + url; - } else { - // relative path - var pathLength = baseUrl.length; - i = baseUrl.lastIndexOf('#'); - pathLength = i >= 0 ? i : pathLength; - i = baseUrl.lastIndexOf('?', pathLength); - pathLength = i >= 0 ? i : pathLength; - var prefixLength = baseUrl.lastIndexOf('/', pathLength); - return baseUrl.substring(0, prefixLength + 1) + url; - } -} - -// Validates if URL is safe and allowed, e.g. to avoid XSS. -function isValidUrl(url, allowRelative) { - if (!url) { - return false; - } - // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1) - // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) - var protocol = /^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url); - if (!protocol) { - return allowRelative; - } - protocol = protocol[0].toLowerCase(); - switch (protocol) { - case 'http': - case 'https': - case 'ftp': - case 'mailto': - case 'tel': - return true; - default: - return false; - } -} -PDFJS.isValidUrl = isValidUrl; - -function shadow(obj, prop, value) { - Object.defineProperty(obj, prop, { value: value, - enumerable: true, - configurable: true, - writable: false }); - return value; -} -PDFJS.shadow = shadow; - -var LinkTarget = PDFJS.LinkTarget = { - NONE: 0, // Default value. - SELF: 1, - BLANK: 2, - PARENT: 3, - TOP: 4, -}; -var LinkTargetStringMap = [ - '', - '_self', - '_blank', - '_parent', - '_top' -]; - -function isExternalLinkTargetSet() { - if (PDFJS.openExternalLinksInNewWindow) { - warn('PDFJS.openExternalLinksInNewWindow is deprecated, ' + - 'use PDFJS.externalLinkTarget instead.'); - if (PDFJS.externalLinkTarget === LinkTarget.NONE) { - PDFJS.externalLinkTarget = LinkTarget.BLANK; - } - // Reset the deprecated parameter, to suppress further warnings. - PDFJS.openExternalLinksInNewWindow = false; - } - switch (PDFJS.externalLinkTarget) { - case LinkTarget.NONE: - return false; - case LinkTarget.SELF: - case LinkTarget.BLANK: - case LinkTarget.PARENT: - case LinkTarget.TOP: - return true; - } - warn('PDFJS.externalLinkTarget is invalid: ' + PDFJS.externalLinkTarget); - // Reset the external link target, to suppress further warnings. - PDFJS.externalLinkTarget = LinkTarget.NONE; - return false; -} -PDFJS.isExternalLinkTargetSet = isExternalLinkTargetSet; - -var PasswordResponses = PDFJS.PasswordResponses = { - NEED_PASSWORD: 1, - INCORRECT_PASSWORD: 2 -}; - -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; -})(); -PDFJS.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; -})(); -PDFJS.UnknownErrorException = UnknownErrorException; - -var InvalidPDFException = (function InvalidPDFExceptionClosure() { - function InvalidPDFException(msg) { - this.name = 'InvalidPDFException'; - this.message = msg; - } - - InvalidPDFException.prototype = new Error(); - InvalidPDFException.constructor = InvalidPDFException; - - return InvalidPDFException; -})(); -PDFJS.InvalidPDFException = InvalidPDFException; - -var MissingPDFException = (function MissingPDFExceptionClosure() { - function MissingPDFException(msg) { - this.name = 'MissingPDFException'; - this.message = msg; - } - - MissingPDFException.prototype = new Error(); - MissingPDFException.constructor = MissingPDFException; - - return MissingPDFException; -})(); -PDFJS.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; -})(); -PDFJS.UnexpectedResponseException = UnexpectedResponseException; - -var NotImplementedException = (function NotImplementedExceptionClosure() { - function NotImplementedException(msg) { - this.message = msg; - } - - NotImplementedException.prototype = new Error(); - NotImplementedException.prototype.name = 'NotImplementedException'; - NotImplementedException.constructor = NotImplementedException; - - return NotImplementedException; -})(); - -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; -})(); - -var XRefParseException = (function XRefParseExceptionClosure() { - function XRefParseException(msg) { - this.message = msg; - } - - XRefParseException.prototype = new Error(); - XRefParseException.prototype.name = 'XRefParseException'; - XRefParseException.constructor = XRefParseException; - - return XRefParseException; -})(); - - -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 string32(value) { - return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff, - (value >> 8) & 0xff, value & 0xff); -} - -function log2(x) { - var n = 1, i = 0; - while (x > n) { - n <<= 1; - i++; - } - return i; -} - -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; -} - -// Lazy test the endianness of the platform -// NOTE: This will be 'true' for simulated TypedArrays -function isLittleEndian() { - var buffer8 = new Uint8Array(2); - buffer8[0] = 1; - var buffer16 = new Uint16Array(buffer8.buffer); - return (buffer16[0] === 1); -} - -Object.defineProperty(PDFJS, 'isLittleEndian', { - configurable: true, - get: function PDFJS_isLittleEndian() { - return shadow(PDFJS, 'isLittleEndian', isLittleEndian()); - } -}); - - // Lazy test if the userAgent support CanvasTypedArrays -function hasCanvasTypedArrays() { - var canvas = document.createElement('canvas'); - canvas.width = canvas.height = 1; - var ctx = canvas.getContext('2d'); - var imageData = ctx.createImageData(1, 1); - return (typeof imageData.data.buffer !== 'undefined'); -} - -Object.defineProperty(PDFJS, 'hasCanvasTypedArrays', { - configurable: true, - get: function PDFJS_hasCanvasTypedArrays() { - return shadow(PDFJS, 'hasCanvasTypedArrays', hasCanvasTypedArrays()); - } -}); - -var Uint32ArrayView = (function Uint32ArrayViewClosure() { - - function Uint32ArrayView(buffer, length) { - this.buffer = buffer; - this.byteLength = buffer.length; - this.length = length === undefined ? (this.byteLength >> 2) : length; - ensureUint32ArrayViewProps(this.length); - } - Uint32ArrayView.prototype = Object.create(null); - - var uint32ArrayViewSetters = 0; - function createUint32ArrayProp(index) { - return { - get: function () { - var buffer = this.buffer, offset = index << 2; - return (buffer[offset] | (buffer[offset + 1] << 8) | - (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0; - }, - set: function (value) { - var buffer = this.buffer, offset = index << 2; - buffer[offset] = value & 255; - buffer[offset + 1] = (value >> 8) & 255; - buffer[offset + 2] = (value >> 16) & 255; - buffer[offset + 3] = (value >>> 24) & 255; - } - }; - } - - function ensureUint32ArrayViewProps(length) { - while (uint32ArrayViewSetters < length) { - Object.defineProperty(Uint32ArrayView.prototype, - uint32ArrayViewSetters, - createUint32ArrayProp(uint32ArrayViewSetters)); - uint32ArrayViewSetters++; - } - } - - return Uint32ArrayView; -})(); - -var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; - -var Util = PDFJS.Util = (function UtilClosure() { - function Util() {} - - var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; - - // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids - // creating many intermediate strings. - Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(''); - }; - - // Concatenates two transformation matrices together and returns the result. - 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] - ]; - }; - - // For 2d affine transforms - 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]; - }; - - // Applies the transform to the rectangle and finds the minimum axially - // aligned bounding box. - 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]; - }; - - // Apply a generic 3d matrix M on a 3-vector v: - // | a b c | | X | - // | d e f | x | Y | - // | g h i | | Z | - // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i], - // with v as [X,Y,Z] - 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] - ]; - }; - - // This calculation uses Singular Value Decomposition. - // The SVD can be represented with formula A = USV. We are interested in the - // matrix S here because it represents the scale values. - Util.singularValueDecompose2dScale = - function Util_singularValueDecompose2dScale(m) { - - var transpose = [m[0], m[2], m[1], m[3]]; - - // Multiply matrix m with its transpose. - 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]; - - // Solve the second degree polynomial to get roots. - 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; - - // Scale values are the square roots of the eigenvalues. - return [Math.sqrt(sx), Math.sqrt(sy)]; - }; - - // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2) - // For coordinate systems whose origin lies in the bottom-left, this - // means normalization to (BL,TR) ordering. For systems with origin in the - // top-left, this means (TL,BR) ordering. - Util.normalizeRect = function Util_normalizeRect(rect) { - var r = rect.slice(0); // clone rect - 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; - }; - - // Returns a rectangle [x1, y1, x2, y2] corresponding to the - // intersection of rect1 and rect2. If no intersection, returns 'false' - // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2] - Util.intersect = function Util_intersect(rect1, rect2) { - function compare(a, b) { - return a - b; - } - - // Order points along the axes - 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); - - // X: first and second points belong to different rectangles? - if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) || - (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) { - // Intersection must be between second and third points - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { - return false; - } - - // Y: first and second points belong to different rectangles? - if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) || - (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) { - // Intersection must be between second and third points - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { - return false; - } - - return result; - }; - - Util.sign = function Util_sign(num) { - return num < 0 ? -1 : 1; - }; - - Util.appendToArray = function Util_appendToArray(arr1, arr2) { - Array.prototype.push.apply(arr1, arr2); - }; - - Util.prependToArray = function Util_prependToArray(arr1, arr2) { - Array.prototype.unshift.apply(arr1, arr2); - }; - - Util.extendObj = function extendObj(obj1, obj2) { - for (var key in obj2) { - obj1[key] = obj2[key]; - } - }; - - Util.getInheritableProperty = function Util_getInheritableProperty(dict, - name) { - while (dict && !dict.has(name)) { - dict = dict.get('Parent'); - } - if (!dict) { - return null; - } - return dict.get(name); - }; - - Util.inherit = function Util_inherit(sub, base, prototype) { - sub.prototype = Object.create(base.prototype); - sub.prototype.constructor = sub; - for (var prop in prototype) { - sub.prototype[prop] = prototype[prop]; - } - }; - - Util.loadScript = function Util_loadScript(src, callback) { - var script = document.createElement('script'); - var loaded = false; - script.setAttribute('src', src); - if (callback) { - script.onload = function() { - if (!loaded) { - callback(); - } - loaded = true; - }; - } - document.getElementsByTagName('head')[0].appendChild(script); - }; - - return Util; -})(); - -/** - * PDF page viewport created based on scale, rotation and offset. - * @class - * @alias PDFJS.PageViewport - */ -var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() { - /** - * @constructor - * @private - * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates. - * @param scale {number} scale of the viewport. - * @param rotation {number} rotations of the viewport in degrees. - * @param offsetX {number} offset X - * @param offsetY {number} offset Y - * @param dontFlip {boolean} if true, axis Y will not be flipped. - */ - function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) { - this.viewBox = viewBox; - this.scale = scale; - this.rotation = rotation; - this.offsetX = offsetX; - this.offsetY = offsetY; - - // creating transform to convert pdf coordinate system to the normal - // canvas like coordinates taking in account scale and rotation - 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; - //case 0: - 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; - } - // creating transform for the following operations: - // translate(-centerX, -centerY), rotate and flip vertically, - // scale, and translate(offsetCanvasX, offsetCanvasY) - 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; - this.fontScale = scale; - } - PageViewport.prototype = /** @lends PDFJS.PageViewport.prototype */ { - /** - * Clones viewport with additional properties. - * @param args {Object} (optional) If specified, may contain the 'scale' or - * 'rotation' properties to override the corresponding properties in - * the cloned viewport. - * @returns {PDFJS.PageViewport} Cloned viewport. - */ - clone: function PageViewPort_clone(args) { - args = args || {}; - var scale = 'scale' in args ? args.scale : this.scale; - var rotation = 'rotation' in args ? args.rotation : this.rotation; - return new PageViewport(this.viewBox.slice(), scale, rotation, - this.offsetX, this.offsetY, args.dontFlip); - }, - /** - * Converts PDF point to the viewport coordinates. For examples, useful for - * converting PDF location into canvas pixel coordinates. - * @param x {number} X coordinate. - * @param y {number} Y coordinate. - * @returns {Object} Object that contains 'x' and 'y' properties of the - * point in the viewport coordinate space. - * @see {@link convertToPdfPoint} - * @see {@link convertToViewportRectangle} - */ - convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) { - return Util.applyTransform([x, y], this.transform); - }, - /** - * Converts PDF rectangle to the viewport coordinates. - * @param rect {Array} xMin, yMin, xMax and yMax coordinates. - * @returns {Array} Contains corresponding coordinates of the rectangle - * in the viewport coordinate space. - * @see {@link convertToViewportPoint} - */ - convertToViewportRectangle: - function PageViewport_convertToViewportRectangle(rect) { - var tl = Util.applyTransform([rect[0], rect[1]], this.transform); - var br = Util.applyTransform([rect[2], rect[3]], this.transform); - return [tl[0], tl[1], br[0], br[1]]; - }, - /** - * Converts viewport coordinates to the PDF location. For examples, useful - * for converting canvas pixel location into PDF one. - * @param x {number} X coordinate. - * @param y {number} Y coordinate. - * @returns {Object} Object that contains 'x' and 'y' properties of the - * point in the PDF coordinate space. - * @see {@link convertToViewportPoint} - */ - convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) { - return Util.applyInverseTransform([x, y], this.transform); - } - }; - return PageViewport; -})(); - -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') { - // UTF16BE BOM - 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 isInt(v) { - return typeof v === 'number' && ((v | 0) === v); -} - -function isNum(v) { - return typeof v === 'number'; -} - -function isString(v) { - return typeof v === 'string'; -} - -function isName(v) { - return v instanceof Name; -} - -function isCmd(v, cmd) { - return v instanceof Cmd && (cmd === undefined || v.cmd === cmd); -} - -function isDict(v, type) { - if (!(v instanceof Dict)) { - return false; - } - if (!type) { - return true; - } - var dictType = v.get('Type'); - return isName(dictType) && dictType.name === type; -} - -function isArray(v) { - return v instanceof Array; -} - -function isStream(v) { - return typeof v === 'object' && v !== null && v.getBytes !== undefined; -} - -function isArrayBuffer(v) { - return typeof v === 'object' && v !== null && v.byteLength !== undefined; -} - -function isRef(v) { - return v instanceof Ref; -} - -/** - * Promise Capability object. - * - * @typedef {Object} PromiseCapability - * @property {Promise} promise - A promise object. - * @property {function} resolve - Fullfills the promise. - * @property {function} reject - Rejects the promise. - */ - -/** - * Creates a promise capability object. - * @alias PDFJS.createPromiseCapability - * - * @return {PromiseCapability} A capability object contains: - * - a Promise, resolve and reject methods. - */ -function createPromiseCapability() { - var capability = {}; - capability.promise = new Promise(function (resolve, reject) { - capability.resolve = resolve; - capability.reject = reject; - }); - return capability; -} - -PDFJS.createPromiseCapability = createPromiseCapability; - -/** - * Polyfill for Promises: - * The following promise implementation tries to generally implement the - * Promise/A+ spec. Some notable differences from other promise libaries are: - * - There currently isn't a seperate deferred and promise object. - * - Unhandled rejections eventually show an error if they aren't handled. - * - * Based off of the work in: - * https://bugzilla.mozilla.org/show_bug.cgi?id=810490 - */ -(function PromiseClosure() { - if (globalScope.Promise) { - // Promises existing in the DOM/Worker, checking presence of all/resolve - if (typeof globalScope.Promise.all !== 'function') { - globalScope.Promise.all = function (iterable) { - var count = 0, results = [], resolve, reject; - var promise = new globalScope.Promise(function (resolve_, reject_) { - resolve = resolve_; - reject = reject_; - }); - iterable.forEach(function (p, i) { - count++; - p.then(function (result) { - results[i] = result; - count--; - if (count === 0) { - resolve(results); - } - }, reject); - }); - if (count === 0) { - resolve(results); - } - return promise; - }; - } - if (typeof globalScope.Promise.resolve !== 'function') { - globalScope.Promise.resolve = function (value) { - return new globalScope.Promise(function (resolve) { resolve(value); }); - }; - } - if (typeof globalScope.Promise.reject !== 'function') { - globalScope.Promise.reject = function (reason) { - return new globalScope.Promise(function (resolve, reject) { - reject(reason); - }); - }; - } - if (typeof globalScope.Promise.prototype.catch !== 'function') { - globalScope.Promise.prototype.catch = function (onReject) { - return globalScope.Promise.prototype.then(undefined, onReject); - }; - } - return; - } - var STATUS_PENDING = 0; - var STATUS_RESOLVED = 1; - var STATUS_REJECTED = 2; - - // In an attempt to avoid silent exceptions, unhandled rejections are - // tracked and if they aren't handled in a certain amount of time an - // error is logged. - var REJECTION_TIMEOUT = 500; - - var HandlerManager = { - handlers: [], - running: false, - unhandledRejections: [], - pendingRejectionCheck: false, - - scheduleHandlers: function scheduleHandlers(promise) { - if (promise._status === STATUS_PENDING) { - return; - } - - this.handlers = this.handlers.concat(promise._handlers); - promise._handlers = []; - - if (this.running) { - return; - } - this.running = true; - - setTimeout(this.runHandlers.bind(this), 0); - }, - - runHandlers: function runHandlers() { - var RUN_TIMEOUT = 1; // ms - var timeoutAt = Date.now() + RUN_TIMEOUT; - while (this.handlers.length > 0) { - var handler = this.handlers.shift(); - - var nextStatus = handler.thisPromise._status; - var nextValue = handler.thisPromise._value; - - try { - if (nextStatus === STATUS_RESOLVED) { - if (typeof handler.onResolve === 'function') { - nextValue = handler.onResolve(nextValue); - } - } else if (typeof handler.onReject === 'function') { - nextValue = handler.onReject(nextValue); - nextStatus = STATUS_RESOLVED; - - if (handler.thisPromise._unhandledRejection) { - this.removeUnhandeledRejection(handler.thisPromise); - } - } - } catch (ex) { - nextStatus = STATUS_REJECTED; - nextValue = ex; - } - - handler.nextPromise._updateStatus(nextStatus, nextValue); - if (Date.now() >= timeoutAt) { - break; - } - } - - if (this.handlers.length > 0) { - setTimeout(this.runHandlers.bind(this), 0); - return; - } - - this.running = false; - }, - - addUnhandledRejection: function addUnhandledRejection(promise) { - this.unhandledRejections.push({ - promise: promise, - time: Date.now() - }); - this.scheduleRejectionCheck(); - }, - - removeUnhandeledRejection: function removeUnhandeledRejection(promise) { - promise._unhandledRejection = false; - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (this.unhandledRejections[i].promise === promise) { - this.unhandledRejections.splice(i); - i--; - } - } - }, - - scheduleRejectionCheck: function scheduleRejectionCheck() { - if (this.pendingRejectionCheck) { - return; - } - this.pendingRejectionCheck = true; - setTimeout(function rejectionCheck() { - this.pendingRejectionCheck = false; - var now = Date.now(); - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) { - var unhandled = this.unhandledRejections[i].promise._value; - var msg = 'Unhandled rejection: ' + unhandled; - if (unhandled.stack) { - msg += '\n' + unhandled.stack; - } - warn(msg); - this.unhandledRejections.splice(i); - i--; - } - } - if (this.unhandledRejections.length) { - this.scheduleRejectionCheck(); - } - }.bind(this), REJECTION_TIMEOUT); - } - }; - - function Promise(resolver) { - this._status = STATUS_PENDING; - this._handlers = []; - try { - resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); - } catch (e) { - this._reject(e); - } - } - /** - * Builds a promise that is resolved when all the passed in promises are - * resolved. - * @param {array} array of data and/or promises to wait for. - * @return {Promise} New dependant promise. - */ - Promise.all = function Promise_all(promises) { - var resolveAll, rejectAll; - var deferred = new Promise(function (resolve, reject) { - resolveAll = resolve; - rejectAll = reject; - }); - var unresolved = promises.length; - var results = []; - if (unresolved === 0) { - resolveAll(results); - return deferred; - } - function reject(reason) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results = []; - rejectAll(reason); - } - for (var i = 0, ii = promises.length; i < ii; ++i) { - var promise = promises[i]; - var resolve = (function(i) { - return function(value) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results[i] = value; - unresolved--; - if (unresolved === 0) { - resolveAll(results); - } - }; - })(i); - if (Promise.isPromise(promise)) { - promise.then(resolve, reject); - } else { - resolve(promise); - } - } - return deferred; - }; - - /** - * Checks if the value is likely a promise (has a 'then' function). - * @return {boolean} true if value is thenable - */ - Promise.isPromise = function Promise_isPromise(value) { - return value && typeof value.then === 'function'; - }; - - /** - * Creates resolved promise - * @param value resolve value - * @returns {Promise} - */ - Promise.resolve = function Promise_resolve(value) { - return new Promise(function (resolve) { resolve(value); }); - }; - - /** - * Creates rejected promise - * @param reason rejection value - * @returns {Promise} - */ - Promise.reject = function Promise_reject(reason) { - return new Promise(function (resolve, reject) { reject(reason); }); - }; - - Promise.prototype = { - _status: null, - _value: null, - _handlers: null, - _unhandledRejection: null, - - _updateStatus: function Promise__updateStatus(status, value) { - if (this._status === STATUS_RESOLVED || - this._status === STATUS_REJECTED) { - return; - } - - if (status === STATUS_RESOLVED && - Promise.isPromise(value)) { - value.then(this._updateStatus.bind(this, STATUS_RESOLVED), - this._updateStatus.bind(this, STATUS_REJECTED)); - return; - } - - this._status = status; - this._value = value; - - if (status === STATUS_REJECTED && this._handlers.length === 0) { - this._unhandledRejection = true; - HandlerManager.addUnhandledRejection(this); - } - - HandlerManager.scheduleHandlers(this); - }, - - _resolve: function Promise_resolve(value) { - this._updateStatus(STATUS_RESOLVED, value); - }, - - _reject: function Promise_reject(reason) { - this._updateStatus(STATUS_REJECTED, reason); - }, - - then: function Promise_then(onResolve, onReject) { - var nextPromise = new Promise(function (resolve, reject) { - this.resolve = resolve; - this.reject = reject; - }); - this._handlers.push({ - thisPromise: this, - onResolve: onResolve, - onReject: onReject, - nextPromise: nextPromise - }); - HandlerManager.scheduleHandlers(this); - return nextPromise; - }, - - catch: function Promise_catch(onReject) { - return this.then(undefined, onReject); - } - }; - - globalScope.Promise = Promise; -})(); - -var StatTimer = (function StatTimerClosure() { - function rpad(str, pad, length) { - while (str.length < length) { - str += pad; - } - return str; - } - function StatTimer() { - this.started = {}; - this.times = []; - this.enabled = true; - } - StatTimer.prototype = { - time: function StatTimer_time(name) { - if (!this.enabled) { - return; - } - if (name in this.started) { - warn('Timer is already running for ' + name); - } - this.started[name] = Date.now(); - }, - timeEnd: function StatTimer_timeEnd(name) { - if (!this.enabled) { - return; - } - if (!(name in this.started)) { - warn('Timer has not been started for ' + name); - } - this.times.push({ - 'name': name, - 'start': this.started[name], - 'end': Date.now() - }); - // Remove timer from started so it can be called again. - delete this.started[name]; - }, - toString: function StatTimer_toString() { - var i, ii; - var times = this.times; - var out = ''; - // Find the longest name for padding purposes. - var longest = 0; - for (i = 0, ii = times.length; i < ii; ++i) { - var name = times[i]['name']; - if (name.length > longest) { - longest = name.length; - } - } - for (i = 0, ii = times.length; i < ii; ++i) { - var span = times[i]; - var duration = span.end - span.start; - out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n'; - } - return out; - } - }; - return StatTimer; -})(); - -PDFJS.createBlob = function createBlob(data, contentType) { - if (typeof Blob !== 'undefined') { - return new Blob([data], { type: contentType }); - } - // Blob builder is deprecated in FF14 and removed in FF18. - var bb = new MozBlobBuilder(); - bb.append(data); - return bb.getBlob(contentType); -}; - -PDFJS.createObjectURL = (function createObjectURLClosure() { - // Blob/createObjectURL is not available, falling back to data schema. - var digits = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - - return function createObjectURL(data, contentType) { - if (!PDFJS.disableCreateObjectURL && - typeof URL !== 'undefined' && URL.createObjectURL) { - var blob = PDFJS.createBlob(data, contentType); - return 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; - }; -})(); - -function MessageHandler(name, comObj) { - this.name = name; - this.comObj = comObj; - this.callbackIndex = 1; - this.postMessageTransfers = true; - var callbacksCapabilities = this.callbacksCapabilities = {}; - var ah = this.actionHandler = {}; - - ah['console_log'] = [function ahConsoleLog(data) { - console.log.apply(console, data); - }]; - ah['console_error'] = [function ahConsoleError(data) { - console.error.apply(console, data); - }]; - ah['_unsupported_feature'] = [function ah_unsupportedFeature(data) { - UnsupportedManager.notify(data); - }]; - - comObj.onmessage = function messageHandlerComObjOnMessage(event) { - var data = event.data; - 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(data.error); - } else { - callback.resolve(data.data); - } - } else { - error('Cannot resolve callback ' + callbackId); - } - } else if (data.action in ah) { - var action = ah[data.action]; - if (data.callbackId) { - Promise.resolve().then(function () { - return action[0].call(action[1], data.data); - }).then(function (result) { - comObj.postMessage({ - isReply: true, - callbackId: data.callbackId, - data: result - }); - }, function (reason) { - if (reason instanceof Error) { - // Serialize error to avoid "DataCloneError" - reason = reason + ''; - } - comObj.postMessage({ - isReply: true, - callbackId: data.callbackId, - error: reason - }); - }); - } else { - action[0].call(action[1], data.data); - } - } else { - error('Unknown action from worker: ' + data.action); - } - }; -} - -MessageHandler.prototype = { - on: function messageHandlerOn(actionName, handler, scope) { - var ah = this.actionHandler; - if (ah[actionName]) { - error('There is already an actionName called "' + actionName + '"'); - } - ah[actionName] = [handler, scope]; - }, - /** - * Sends a message to the comObj to invoke the action with the supplied data. - * @param {String} actionName Action to call. - * @param {JSON} data JSON data to send. - * @param {Array} [transfers] Optional list of transfers/ArrayBuffers - */ - send: function messageHandlerSend(actionName, data, transfers) { - var message = { - action: actionName, - data: data - }; - this.postMessage(message, transfers); - }, - /** - * Sends a message to the comObj to invoke the action with the supplied data. - * Expects that other side will callback with the response. - * @param {String} actionName Action to call. - * @param {JSON} data JSON data to send. - * @param {Array} [transfers] Optional list of transfers/ArrayBuffers. - * @returns {Promise} Promise to be resolved with response data. - */ - sendWithPromise: - function messageHandlerSendWithPromise(actionName, data, transfers) { - var callbackId = this.callbackIndex++; - var message = { - action: actionName, - data: data, - callbackId: callbackId - }; - var capability = createPromiseCapability(); - this.callbacksCapabilities[callbackId] = capability; - try { - this.postMessage(message, transfers); - } catch (e) { - capability.reject(e); - } - return capability.promise; - }, - /** - * Sends raw message to the comObj. - * @private - * @param message {Object} Raw message. - * @param transfers List of transfers/ArrayBuffers, or undefined. - */ - postMessage: function (message, transfers) { - if (transfers && this.postMessageTransfers) { - this.comObj.postMessage(message, transfers); - } else { - this.comObj.postMessage(message); - } - } -}; - -function loadJpegStream(id, imageUrl, objs) { - var img = new Image(); - img.onload = (function loadJpegStream_onloadClosure() { - objs.resolve(id, img); - }); - img.onerror = (function loadJpegStream_onerrorClosure() { - objs.resolve(id, null); - warn('Error during JPEG image loading'); - }); - img.src = imageUrl; -} - - -var DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536 - -/** - * The maximum allowed image size in total pixels e.g. width * height. Images - * above this value will not be drawn. Use -1 for no limit. - * @var {number} - */ -PDFJS.maxImageSize = (PDFJS.maxImageSize === undefined ? - -1 : PDFJS.maxImageSize); - -/** - * The url of where the predefined Adobe CMaps are located. Include trailing - * slash. - * @var {string} - */ -PDFJS.cMapUrl = (PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl); - -/** - * Specifies if CMaps are binary packed. - * @var {boolean} - */ -PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked; - -/** - * By default fonts are converted to OpenType fonts and loaded via font face - * rules. If disabled, the font will be rendered using a built in font renderer - * that constructs the glyphs with primitive path commands. - * @var {boolean} - */ -PDFJS.disableFontFace = (PDFJS.disableFontFace === undefined ? - false : PDFJS.disableFontFace); - -/** - * Path for image resources, mainly for annotation icons. Include trailing - * slash. - * @var {string} - */ -PDFJS.imageResourcesPath = (PDFJS.imageResourcesPath === undefined ? - '' : PDFJS.imageResourcesPath); - -/** - * Disable the web worker and run all code on the main thread. This will happen - * automatically if the browser doesn't support workers or sending typed arrays - * to workers. - * @var {boolean} - */ -PDFJS.disableWorker = (PDFJS.disableWorker === undefined ? - false : PDFJS.disableWorker); - -/** - * Path and filename of the worker file. Required when the worker is enabled in - * development mode. If unspecified in the production build, the worker will be - * loaded based on the location of the pdf.js file. It is recommended that - * the workerSrc is set in a custom application to prevent issues caused by - * third-party frameworks and libraries. - * @var {string} - */ -PDFJS.workerSrc = (PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc); - -/** - * Disable range request loading of PDF files. When enabled and if the server - * supports partial content requests then the PDF will be fetched in chunks. - * Enabled (false) by default. - * @var {boolean} - */ -PDFJS.disableRange = (PDFJS.disableRange === undefined ? - false : PDFJS.disableRange); - -/** - * Disable streaming of PDF file data. By default PDF.js attempts to load PDF - * in chunks. This default behavior can be disabled. - * @var {boolean} - */ -PDFJS.disableStream = (PDFJS.disableStream === undefined ? - false : PDFJS.disableStream); - -/** - * Disable pre-fetching of PDF file data. When range requests are enabled PDF.js - * will automatically keep fetching more data even if it isn't needed to display - * the current page. This default behavior can be disabled. - * - * NOTE: It is also necessary to disable streaming, see above, - * in order for disabling of pre-fetching to work correctly. - * @var {boolean} - */ -PDFJS.disableAutoFetch = (PDFJS.disableAutoFetch === undefined ? - false : PDFJS.disableAutoFetch); - -/** - * Enables special hooks for debugging PDF.js. - * @var {boolean} - */ -PDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug); - -/** - * Enables transfer usage in postMessage for ArrayBuffers. - * @var {boolean} - */ -PDFJS.postMessageTransfers = (PDFJS.postMessageTransfers === undefined ? - true : PDFJS.postMessageTransfers); - -/** - * Disables URL.createObjectURL usage. - * @var {boolean} - */ -PDFJS.disableCreateObjectURL = (PDFJS.disableCreateObjectURL === undefined ? - false : PDFJS.disableCreateObjectURL); - -/** - * Disables WebGL usage. - * @var {boolean} - */ -PDFJS.disableWebGL = (PDFJS.disableWebGL === undefined ? - true : PDFJS.disableWebGL); - -/** - * Disables fullscreen support, and by extension Presentation Mode, - * in browsers which support the fullscreen API. - * @var {boolean} - */ -PDFJS.disableFullscreen = (PDFJS.disableFullscreen === undefined ? - false : PDFJS.disableFullscreen); - -/** - * Enables CSS only zooming. - * @var {boolean} - */ -PDFJS.useOnlyCssZoom = (PDFJS.useOnlyCssZoom === undefined ? - false : PDFJS.useOnlyCssZoom); - -/** - * Controls the logging level. - * The constants from PDFJS.VERBOSITY_LEVELS should be used: - * - errors - * - warnings [default] - * - infos - * @var {number} - */ -PDFJS.verbosity = (PDFJS.verbosity === undefined ? - PDFJS.VERBOSITY_LEVELS.warnings : PDFJS.verbosity); - -/** - * The maximum supported canvas size in total pixels e.g. width * height. - * The default value is 4096 * 4096. Use -1 for no limit. - * @var {number} - */ -PDFJS.maxCanvasPixels = (PDFJS.maxCanvasPixels === undefined ? - 16777216 : PDFJS.maxCanvasPixels); - -/** - * (Deprecated) Opens external links in a new window if enabled. - * The default behavior opens external links in the PDF.js window. - * @var {boolean} - */ -PDFJS.openExternalLinksInNewWindow = ( - PDFJS.openExternalLinksInNewWindow === undefined ? - false : PDFJS.openExternalLinksInNewWindow); - -/** - * Specifies the |target| attribute for external links. - * The constants from PDFJS.LinkTarget should be used: - * - NONE [default] - * - SELF - * - BLANK - * - PARENT - * - TOP - * @var {number} - */ -PDFJS.externalLinkTarget = (PDFJS.externalLinkTarget === undefined ? - PDFJS.LinkTarget.NONE : PDFJS.externalLinkTarget); - -/** - * Determines if we can eval strings as JS. Primarily used to improve - * performance for font rendering. - * @var {boolean} - */ -PDFJS.isEvalSupported = (PDFJS.isEvalSupported === undefined ? - true : PDFJS.isEvalSupported); - -/** - * Document initialization / loading parameters object. - * - * @typedef {Object} DocumentInitParameters - * @property {string} url - The URL of the PDF. - * @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays - * (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded, - * use atob() to convert it to a binary string first. - * @property {Object} httpHeaders - Basic authentication headers. - * @property {boolean} withCredentials - Indicates whether or not cross-site - * Access-Control requests should be made using credentials such as cookies - * or authorization headers. The default is false. - * @property {string} password - For decrypting password-protected PDFs. - * @property {TypedArray} initialData - A typed array with the first portion or - * all of the pdf data. Used by the extension since some data is already - * loaded before the switch to range requests. - * @property {number} length - The PDF file length. It's used for progress - * reports and range requests operations. - * @property {PDFDataRangeTransport} range - * @property {number} rangeChunkSize - Optional parameter to specify - * maximum number of bytes fetched per range request. The default value is - * 2^16 = 65536. - */ - -/** - * @typedef {Object} PDFDocumentStats - * @property {Array} streamTypes - Used stream types in the document (an item - * is set to true if specific stream ID was used in the document). - * @property {Array} fontTypes - Used font type in the document (an item is set - * to true if specific font ID was used in the document). - */ - -/** - * This is the main entry point for loading a PDF and interacting with it. - * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR) - * is used, which means it must follow the same origin rules that any XHR does - * e.g. No cross domain requests without CORS. - * - * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src - * Can be a url to where a PDF is located, a typed array (Uint8Array) - * already populated with data or parameter object. - * - * @param {PDFDataRangeTransport} pdfDataRangeTransport (deprecated) It is used - * if you want to manually serve range requests for data in the PDF. - * - * @param {function} passwordCallback (deprecated) It is used to request a - * password if wrong or no password was provided. The callback receives two - * parameters: function that needs to be called with new password and reason - * (see {PasswordResponses}). - * - * @param {function} progressCallback (deprecated) It is used to be able to - * monitor the loading progress of the PDF file (necessary to implement e.g. - * a loading bar). The callback receives an {Object} with the properties: - * {number} loaded and {number} total. - * - * @return {PDFDocumentLoadingTask} - */ -PDFJS.getDocument = function getDocument(src, - pdfDataRangeTransport, - passwordCallback, - progressCallback) { - var task = new PDFDocumentLoadingTask(); - - // Support of the obsolete arguments (for compatibility with API v1.0) - if (arguments.length > 1) { - deprecated('getDocument is called with pdfDataRangeTransport, ' + - 'passwordCallback or progressCallback argument'); - } - if (pdfDataRangeTransport) { - if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) { - // Not a PDFDataRangeTransport instance, trying to add missing properties. - pdfDataRangeTransport = Object.create(pdfDataRangeTransport); - pdfDataRangeTransport.length = src.length; - pdfDataRangeTransport.initialData = src.initialData; - if (!pdfDataRangeTransport.abort) { - pdfDataRangeTransport.abort = function () {}; - } - } - src = Object.create(src); - src.range = pdfDataRangeTransport; - } - task.onPassword = passwordCallback || null; - task.onProgress = progressCallback || null; - - var workerInitializedCapability, transport; - var source; - if (typeof src === 'string') { - source = { url: src }; - } else if (isArrayBuffer(src)) { - source = { data: src }; - } else if (src instanceof PDFDataRangeTransport) { - source = { range: src }; - } else { - if (typeof src !== 'object') { - error('Invalid parameter in getDocument, need either Uint8Array, ' + - 'string or a parameter object'); - } - if (!src.url && !src.data && !src.range) { - error('Invalid parameter object: need either .data, .range or .url'); - } - - source = src; - } - - var params = {}; - for (var key in source) { - if (key === 'url' && typeof window !== 'undefined') { - // The full path is required in the 'url' field. - params[key] = combineUrl(window.location.href, source[key]); - continue; - } else if (key === 'range') { - continue; - } else if (key === 'data' && !(source[key] instanceof Uint8Array)) { - // Converting string or array-like data to Uint8Array. - var pdfBytes = source[key]; - if (typeof pdfBytes === 'string') { - params[key] = stringToBytes(pdfBytes); - } else if (typeof pdfBytes === 'object' && pdfBytes !== null && - !isNaN(pdfBytes.length)) { - params[key] = new Uint8Array(pdfBytes); - } else if (isArrayBuffer(pdfBytes)) { - params[key] = new Uint8Array(pdfBytes); - } else { - 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 = source.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; - - workerInitializedCapability = createPromiseCapability(); - transport = new WorkerTransport(workerInitializedCapability, source.range); - workerInitializedCapability.promise.then(function transportInitialized() { - transport.fetchDocument(task, params); - }); - task._transport = transport; - - return task; -}; - -/** - * PDF document loading operation. - * @class - * @alias PDFDocumentLoadingTask - */ -var PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() { - function PDFDocumentLoadingTask() { - this._capability = createPromiseCapability(); - this._transport = null; - - /** - * Callback to request a password if wrong or no password was provided. - * The callback receives two parameters: function that needs to be called - * with new password and reason (see {PasswordResponses}). - */ - this.onPassword = null; - - /** - * Callback to be able to monitor the loading progress of the PDF file - * (necessary to implement e.g. a loading bar). The callback receives - * an {Object} with the properties: {number} loaded and {number} total. - */ - this.onProgress = null; - } - - PDFDocumentLoadingTask.prototype = - /** @lends PDFDocumentLoadingTask.prototype */ { - /** - * @return {Promise} - */ - get promise() { - return this._capability.promise; - }, - - /** - * Aborts all network requests and destroys worker. - * @return {Promise} A promise that is resolved after destruction activity - * is completed. - */ - destroy: function () { - return this._transport.destroy(); - }, - - /** - * Registers callbacks to indicate the document loading completion. - * - * @param {function} onFulfilled The callback for the loading completion. - * @param {function} onRejected The callback for the loading failure. - * @return {Promise} A promise that is resolved after the onFulfilled or - * onRejected callback. - */ - then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) { - return this.promise.then.apply(this.promise, arguments); - } - }; - - return PDFDocumentLoadingTask; -})(); - -/** - * Abstract class to support range requests file loading. - * @class - * @alias PDFJS.PDFDataRangeTransport - * @param {number} length - * @param {Uint8Array} initialData - */ -var PDFDataRangeTransport = (function pdfDataRangeTransportClosure() { - function PDFDataRangeTransport(length, initialData) { - this.length = length; - this.initialData = initialData; - - this._rangeListeners = []; - this._progressListeners = []; - this._progressiveReadListeners = []; - this._readyCapability = createPromiseCapability(); - } - PDFDataRangeTransport.prototype = - /** @lends PDFDataRangeTransport.prototype */ { - addRangeListener: - function PDFDataRangeTransport_addRangeListener(listener) { - this._rangeListeners.push(listener); - }, - - addProgressListener: - function PDFDataRangeTransport_addProgressListener(listener) { - this._progressListeners.push(listener); - }, - - addProgressiveReadListener: - function PDFDataRangeTransport_addProgressiveReadListener(listener) { - this._progressiveReadListeners.push(listener); - }, - - onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) { - var listeners = this._rangeListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](begin, chunk); - } - }, - - onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) { - this._readyCapability.promise.then(function () { - var listeners = this._progressListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](loaded); - } - }.bind(this)); - }, - - onDataProgressiveRead: - function PDFDataRangeTransport_onDataProgress(chunk) { - this._readyCapability.promise.then(function () { - var listeners = this._progressiveReadListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](chunk); - } - }.bind(this)); - }, - - transportReady: function PDFDataRangeTransport_transportReady() { - this._readyCapability.resolve(); - }, - - requestDataRange: - function PDFDataRangeTransport_requestDataRange(begin, end) { - throw new Error('Abstract method PDFDataRangeTransport.requestDataRange'); - }, - - abort: function PDFDataRangeTransport_abort() { - } - }; - return PDFDataRangeTransport; -})(); - -PDFJS.PDFDataRangeTransport = PDFDataRangeTransport; - -/** - * Proxy to a PDFDocument in the worker thread. Also, contains commonly used - * properties that can be read synchronously. - * @class - * @alias PDFDocumentProxy - */ -var PDFDocumentProxy = (function PDFDocumentProxyClosure() { - function PDFDocumentProxy(pdfInfo, transport, loadingTask) { - this.pdfInfo = pdfInfo; - this.transport = transport; - this.loadingTask = loadingTask; - } - PDFDocumentProxy.prototype = /** @lends PDFDocumentProxy.prototype */ { - /** - * @return {number} Total number of pages the PDF contains. - */ - get numPages() { - return this.pdfInfo.numPages; - }, - /** - * @return {string} A unique ID to identify a PDF. Not guaranteed to be - * unique. - */ - get fingerprint() { - return this.pdfInfo.fingerprint; - }, - /** - * @param {number} pageNumber The page number to get. The first page is 1. - * @return {Promise} A promise that is resolved with a {@link PDFPageProxy} - * object. - */ - getPage: function PDFDocumentProxy_getPage(pageNumber) { - return this.transport.getPage(pageNumber); - }, - /** - * @param {{num: number, gen: number}} ref The page reference. Must have - * the 'num' and 'gen' properties. - * @return {Promise} A promise that is resolved with the page index that is - * associated with the reference. - */ - getPageIndex: function PDFDocumentProxy_getPageIndex(ref) { - return this.transport.getPageIndex(ref); - }, - /** - * @return {Promise} A promise that is resolved with a lookup table for - * mapping named destinations to reference numbers. - * - * This can be slow for large documents: use getDestination instead - */ - getDestinations: function PDFDocumentProxy_getDestinations() { - return this.transport.getDestinations(); - }, - /** - * @param {string} id The named destination to get. - * @return {Promise} A promise that is resolved with all information - * of the given named destination. - */ - getDestination: function PDFDocumentProxy_getDestination(id) { - return this.transport.getDestination(id); - }, - /** - * @return {Promise} A promise that is resolved with a lookup table for - * mapping named attachments to their content. - */ - getAttachments: function PDFDocumentProxy_getAttachments() { - return this.transport.getAttachments(); - }, - /** - * @return {Promise} A promise that is resolved with an array of all the - * JavaScript strings in the name tree. - */ - getJavaScript: function PDFDocumentProxy_getJavaScript() { - return this.transport.getJavaScript(); - }, - /** - * @return {Promise} A promise that is resolved with an {Array} that is a - * tree outline (if it has one) of the PDF. The tree is in the format of: - * [ - * { - * title: string, - * bold: boolean, - * italic: boolean, - * color: rgb array, - * dest: dest obj, - * items: array of more items like this - * }, - * ... - * ]. - */ - getOutline: function PDFDocumentProxy_getOutline() { - return this.transport.getOutline(); - }, - /** - * @return {Promise} A promise that is resolved with an {Object} that has - * info and metadata properties. Info is an {Object} filled with anything - * available in the information dictionary and similarly metadata is a - * {Metadata} object with information from the metadata section of the PDF. - */ - getMetadata: function PDFDocumentProxy_getMetadata() { - return this.transport.getMetadata(); - }, - /** - * @return {Promise} A promise that is resolved with a TypedArray that has - * the raw data from the PDF. - */ - getData: function PDFDocumentProxy_getData() { - return this.transport.getData(); - }, - /** - * @return {Promise} A promise that is resolved when the document's data - * is loaded. It is resolved with an {Object} that contains the length - * property that indicates size of the PDF data in bytes. - */ - getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() { - return this.transport.downloadInfoCapability.promise; - }, - /** - * @return {Promise} A promise this is resolved with current stats about - * document structures (see {@link PDFDocumentStats}). - */ - getStats: function PDFDocumentProxy_getStats() { - return this.transport.getStats(); - }, - /** - * Cleans up resources allocated by the document, e.g. created @font-face. - */ - cleanup: function PDFDocumentProxy_cleanup() { - this.transport.startCleanup(); - }, - /** - * Destroys current document instance and terminates worker. - */ - destroy: function PDFDocumentProxy_destroy() { - return this.transport.destroy(); - } - }; - return PDFDocumentProxy; -})(); - -/** - * Page text content. - * - * @typedef {Object} TextContent - * @property {array} items - array of {@link TextItem} - * @property {Object} styles - {@link TextStyles} objects, indexed by font - * name. - */ - -/** - * Page text content part. - * - * @typedef {Object} TextItem - * @property {string} str - text content. - * @property {string} dir - text direction: 'ttb', 'ltr' or 'rtl'. - * @property {array} transform - transformation matrix. - * @property {number} width - width in device space. - * @property {number} height - height in device space. - * @property {string} fontName - font name used by pdf.js for converted font. - */ - -/** - * Text style. - * - * @typedef {Object} TextStyle - * @property {number} ascent - font ascent. - * @property {number} descent - font descent. - * @property {boolean} vertical - text is in vertical mode. - * @property {string} fontFamily - possible font family - */ - -/** - * Page render parameters. - * - * @typedef {Object} RenderParameters - * @property {Object} canvasContext - A 2D context of a DOM Canvas object. - * @property {PDFJS.PageViewport} viewport - Rendering viewport obtained by - * calling of PDFPage.getViewport method. - * @property {string} intent - Rendering intent, can be 'display' or 'print' - * (default value is 'display'). - * @property {Object} imageLayer - (optional) An object that has beginLayout, - * endLayout and appendImage functions. - * @property {function} continueCallback - (deprecated) A function that will be - * called each time the rendering is paused. To continue - * rendering call the function that is the first argument - * to the callback. - */ - -/** - * PDF page operator list. - * - * @typedef {Object} PDFOperatorList - * @property {Array} fnArray - Array containing the operator functions. - * @property {Array} argsArray - Array containing the arguments of the - * functions. - */ - -/** - * Proxy to a PDFPage in the worker thread. - * @class - * @alias PDFPageProxy - */ -var PDFPageProxy = (function PDFPageProxyClosure() { - function PDFPageProxy(pageIndex, pageInfo, transport) { - this.pageIndex = pageIndex; - this.pageInfo = pageInfo; - this.transport = transport; - this.stats = new StatTimer(); - this.stats.enabled = !!globalScope.PDFJS.enableStats; - this.commonObjs = transport.commonObjs; - this.objs = new PDFObjects(); - this.cleanupAfterRender = false; - this.pendingCleanup = false; - this.intentStates = {}; - this.destroyed = false; - } - PDFPageProxy.prototype = /** @lends PDFPageProxy.prototype */ { - /** - * @return {number} Page number of the page. First page is 1. - */ - get pageNumber() { - return this.pageIndex + 1; - }, - /** - * @return {number} The number of degrees the page is rotated clockwise. - */ - get rotate() { - return this.pageInfo.rotate; - }, - /** - * @return {Object} The reference that points to this page. It has 'num' and - * 'gen' properties. - */ - get ref() { - return this.pageInfo.ref; - }, - /** - * @return {Array} An array of the visible portion of the PDF page in the - * user space units - [x1, y1, x2, y2]. - */ - get view() { - return this.pageInfo.view; - }, - /** - * @param {number} scale The desired scale of the viewport. - * @param {number} rotate Degrees to rotate the viewport. If omitted this - * defaults to the page rotation. - * @return {PDFJS.PageViewport} Contains 'width' and 'height' properties - * along with transforms required for rendering. - */ - getViewport: function PDFPageProxy_getViewport(scale, rotate) { - if (arguments.length < 2) { - rotate = this.rotate; - } - return new PDFJS.PageViewport(this.view, scale, rotate, 0, 0); - }, - /** - * @return {Promise} A promise that is resolved with an {Array} of the - * annotation objects. - */ - getAnnotations: function PDFPageProxy_getAnnotations() { - if (!this.annotationsPromise) { - this.annotationsPromise = this.transport.getAnnotations(this.pageIndex); - } - return this.annotationsPromise; - }, - /** - * Begins the process of rendering a page to the desired context. - * @param {RenderParameters} params Page render parameters. - * @return {RenderTask} An object that contains the promise, which - * is resolved when the page finishes rendering. - */ - render: function PDFPageProxy_render(params) { - var stats = this.stats; - stats.time('Overall'); - - // If there was a pending destroy cancel it so no cleanup happens during - // this call to render. - this.pendingCleanup = false; - - var renderingIntent = (params.intent === 'print' ? 'print' : 'display'); - - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = {}; - } - var intentState = this.intentStates[renderingIntent]; - - // If there's no displayReadyCapability yet, then the operatorList - // was never requested before. Make the request and create the promise. - if (!intentState.displayReadyCapability) { - intentState.receivingOperatorList = true; - intentState.displayReadyCapability = createPromiseCapability(); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - - this.stats.time('Page Request'); - this.transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageNumber - 1, - intent: renderingIntent - }); - } - - var internalRenderTask = new InternalRenderTask(complete, params, - this.objs, - this.commonObjs, - intentState.operatorList, - this.pageNumber); - internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print'; - if (!intentState.renderTasks) { - intentState.renderTasks = []; - } - intentState.renderTasks.push(internalRenderTask); - var renderTask = internalRenderTask.task; - - // Obsolete parameter support - if (params.continueCallback) { - deprecated('render is used with continueCallback parameter'); - renderTask.onContinue = params.continueCallback; - } - - var self = this; - intentState.displayReadyCapability.promise.then( - function pageDisplayReadyPromise(transparency) { - if (self.pendingCleanup) { - complete(); - return; - } - stats.time('Rendering'); - internalRenderTask.initalizeGraphics(transparency); - internalRenderTask.operatorListChanged(); - }, - function pageDisplayReadPromiseError(reason) { - complete(reason); - } - ); - - function complete(error) { - var i = intentState.renderTasks.indexOf(internalRenderTask); - if (i >= 0) { - intentState.renderTasks.splice(i, 1); - } - - if (self.cleanupAfterRender) { - self.pendingCleanup = true; - } - self._tryCleanup(); - - if (error) { - internalRenderTask.capability.reject(error); - } else { - internalRenderTask.capability.resolve(); - } - stats.timeEnd('Rendering'); - stats.timeEnd('Overall'); - } - - return renderTask; - }, - - /** - * @return {Promise} A promise resolved with an {@link PDFOperatorList} - * object that represents page's operator list. - */ - getOperatorList: function PDFPageProxy_getOperatorList() { - function operatorListChanged() { - if (intentState.operatorList.lastChunk) { - intentState.opListReadCapability.resolve(intentState.operatorList); - } - } - - var renderingIntent = 'oplist'; - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = {}; - } - var intentState = this.intentStates[renderingIntent]; - - if (!intentState.opListReadCapability) { - var opListTask = {}; - opListTask.operatorListChanged = operatorListChanged; - intentState.receivingOperatorList = true; - intentState.opListReadCapability = createPromiseCapability(); - intentState.renderTasks = []; - intentState.renderTasks.push(opListTask); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - - this.transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageIndex, - intent: renderingIntent - }); - } - return intentState.opListReadCapability.promise; - }, - - /** - * @return {Promise} That is resolved a {@link TextContent} - * object that represent the page text content. - */ - getTextContent: function PDFPageProxy_getTextContent() { - return this.transport.messageHandler.sendWithPromise('GetTextContent', { - pageIndex: this.pageNumber - 1 - }); - }, - - /** - * Destroys page object. - */ - _destroy: function PDFPageProxy_destroy() { - this.destroyed = true; - this.transport.pageCache[this.pageIndex] = null; - - var waitOn = []; - Object.keys(this.intentStates).forEach(function(intent) { - var intentState = this.intentStates[intent]; - intentState.renderTasks.forEach(function(renderTask) { - var renderCompleted = renderTask.capability.promise. - catch(function () {}); // ignoring failures - waitOn.push(renderCompleted); - renderTask.cancel(); - }); - }, this); - this.objs.clear(); - this.annotationsPromise = null; - this.pendingCleanup = false; - return Promise.all(waitOn); - }, - - /** - * Cleans up resources allocated by the page. (deprecated) - */ - destroy: function() { - deprecated('page destroy method, use cleanup() instead'); - this.cleanup(); - }, - - /** - * Cleans up resources allocated by the page. - */ - cleanup: function PDFPageProxy_cleanup() { - this.pendingCleanup = true; - this._tryCleanup(); - }, - /** - * For internal use only. Attempts to clean up if rendering is in a state - * where that's possible. - * @ignore - */ - _tryCleanup: function PDFPageProxy_tryCleanup() { - 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; - this.pendingCleanup = false; - }, - /** - * For internal use only. - * @ignore - */ - _startRenderPage: function PDFPageProxy_startRenderPage(transparency, - intent) { - var intentState = this.intentStates[intent]; - // TODO Refactor RenderPageRequest to separate rendering - // and operator list logic - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.resolve(transparency); - } - }, - /** - * For internal use only. - * @ignore - */ - _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, - intent) { - var intentState = this.intentStates[intent]; - var i, ii; - // Add the new chunk to the current operator list. - for (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; - - // Notify all the rendering tasks there are more operators to be consumed. - for (i = 0; i < intentState.renderTasks.length; i++) { - intentState.renderTasks[i].operatorListChanged(); - } - - if (operatorListChunk.lastChunk) { - intentState.receivingOperatorList = false; - this._tryCleanup(); - } - } - }; - return PDFPageProxy; -})(); - -/** - * For internal use only. - * @ignore - */ -var WorkerTransport = (function WorkerTransportClosure() { - function WorkerTransport(workerInitializedCapability, pdfDataRangeTransport) { - this.pdfDataRangeTransport = pdfDataRangeTransport; - this.workerInitializedCapability = workerInitializedCapability; - this.commonObjs = new PDFObjects(); - - this.loadingTask = null; - this.destroyed = false; - this.destroyCapability = null; - - this.pageCache = []; - this.pagePromises = []; - this.downloadInfoCapability = createPromiseCapability(); - - // If worker support isn't disabled explicit and the browser has worker - // support, create a new web worker and test if it/the browser fullfills - // all requirements to run parts of pdf.js in a web worker. - // Right now, the requirement is, that an Uint8Array is still an Uint8Array - // as it arrives on the worker. Chrome added this with version 15. - if (!globalScope.PDFJS.disableWorker && typeof Worker !== 'undefined') { - var workerSrc = PDFJS.workerSrc; - if (!workerSrc) { - error('No PDFJS.workerSrc specified'); - } - - try { - // Some versions of FF can't create a worker on localhost, see: - // https://bugzilla.mozilla.org/show_bug.cgi?id=683280 - var worker = new Worker(workerSrc); - var messageHandler = new MessageHandler('main', worker); - this.messageHandler = messageHandler; - - messageHandler.on('test', function transportTest(data) { - var supportTypedArray = data && data.supportTypedArray; - if (supportTypedArray) { - this.worker = worker; - if (!data.supportTransfers) { - PDFJS.postMessageTransfers = false; - } - this.setupMessageHandler(messageHandler); - workerInitializedCapability.resolve(); - } else { - this.setupFakeWorker(); - } - }.bind(this)); - - var testObj = new Uint8Array([PDFJS.postMessageTransfers ? 255 : 0]); - // Some versions of Opera throw a DATA_CLONE_ERR on serializing the - // typed array. Also, checking if we can use transfers. - try { - messageHandler.send('test', testObj, [testObj.buffer]); - } catch (ex) { - info('Cannot use postMessage transfers'); - testObj[0] = 0; - messageHandler.send('test', testObj); - } - return; - } catch (e) { - info('The worker has been disabled.'); - } - } - // Either workers are disabled, not supported or have thrown an exception. - // Thus, we fallback to a faked worker. - this.setupFakeWorker(); - } - WorkerTransport.prototype = { - destroy: function WorkerTransport_destroy() { - if (this.destroyCapability) { - return this.destroyCapability.promise; - } - - this.destroyed = true; - this.destroyCapability = createPromiseCapability(); - - var waitOn = []; - // We need to wait for all renderings to be completed, e.g. - // timeout/rAF can take a long time. - this.pageCache.forEach(function (page) { - if (page) { - waitOn.push(page._destroy()); - } - }); - this.pageCache = []; - this.pagePromises = []; - var self = this; - // We also need to wait for the worker to finish its long running tasks. - var terminated = this.messageHandler.sendWithPromise('Terminate', null); - waitOn.push(terminated); - Promise.all(waitOn).then(function () { - FontLoader.clear(); - if (self.worker) { - self.worker.terminate(); - } - if (self.pdfDataRangeTransport) { - self.pdfDataRangeTransport.abort(); - self.pdfDataRangeTransport = null; - } - self.messageHandler = null; - self.destroyCapability.resolve(); - }, this.destroyCapability.reject); - return this.destroyCapability.promise; - }, - - setupFakeWorker: function WorkerTransport_setupFakeWorker() { - globalScope.PDFJS.disableWorker = true; - - if (!PDFJS.fakeWorkerFilesLoadedCapability) { - PDFJS.fakeWorkerFilesLoadedCapability = createPromiseCapability(); - // In the developer build load worker_loader which in turn loads all the - // other files and resolves the promise. In production only the - // pdf.worker.js file is needed. - Util.loadScript(PDFJS.workerSrc, function() { - PDFJS.fakeWorkerFilesLoadedCapability.resolve(); - }); - } - PDFJS.fakeWorkerFilesLoadedCapability.promise.then(function () { - warn('Setting up fake worker.'); - // If we don't use a worker, just post/sendMessage to the main thread. - var fakeWorker = { - postMessage: function WorkerTransport_postMessage(obj) { - fakeWorker.onmessage({data: obj}); - }, - terminate: function WorkerTransport_terminate() {} - }; - - var messageHandler = new MessageHandler('main', fakeWorker); - this.setupMessageHandler(messageHandler); - - // If the main thread is our worker, setup the handling for the messages - // the main thread sends to it self. - PDFJS.WorkerMessageHandler.setup(messageHandler); - - this.workerInitializedCapability.resolve(); - }.bind(this)); - }, - - setupMessageHandler: - function WorkerTransport_setupMessageHandler(messageHandler) { - this.messageHandler = messageHandler; - - function updatePassword(password) { - messageHandler.send('UpdatePassword', password); - } - - var pdfDataRangeTransport = this.pdfDataRangeTransport; - if (pdfDataRangeTransport) { - pdfDataRangeTransport.addRangeListener(function(begin, chunk) { - messageHandler.send('OnDataRange', { - begin: begin, - chunk: chunk - }); - }); - - pdfDataRangeTransport.addProgressListener(function(loaded) { - messageHandler.send('OnDataProgress', { - loaded: loaded - }); - }); - - pdfDataRangeTransport.addProgressiveReadListener(function(chunk) { - messageHandler.send('OnDataRange', { - chunk: chunk - }); - }); - - messageHandler.on('RequestDataRange', - function transportDataRange(data) { - pdfDataRangeTransport.requestDataRange(data.begin, data.end); - }, this); - } - - messageHandler.on('GetDoc', function transportDoc(data) { - var pdfInfo = data.pdfInfo; - this.numPages = data.pdfInfo.numPages; - var loadingTask = this.loadingTask; - var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask); - this.pdfDocument = pdfDocument; - loadingTask._capability.resolve(pdfDocument); - }, this); - - messageHandler.on('NeedPassword', - function transportNeedPassword(exception) { - var loadingTask = this.loadingTask; - if (loadingTask.onPassword) { - return loadingTask.onPassword(updatePassword, - PasswordResponses.NEED_PASSWORD); - } - loadingTask._capability.reject( - new PasswordException(exception.message, exception.code)); - }, this); - - messageHandler.on('IncorrectPassword', - function transportIncorrectPassword(exception) { - var loadingTask = this.loadingTask; - if (loadingTask.onPassword) { - return loadingTask.onPassword(updatePassword, - PasswordResponses.INCORRECT_PASSWORD); - } - loadingTask._capability.reject( - new PasswordException(exception.message, exception.code)); - }, this); - - messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) { - this.loadingTask._capability.reject( - new InvalidPDFException(exception.message)); - }, this); - - messageHandler.on('MissingPDF', function transportMissingPDF(exception) { - this.loadingTask._capability.reject( - new MissingPDFException(exception.message)); - }, this); - - messageHandler.on('UnexpectedResponse', - function transportUnexpectedResponse(exception) { - this.loadingTask._capability.reject( - new UnexpectedResponseException(exception.message, exception.status)); - }, this); - - messageHandler.on('UnknownError', - function transportUnknownError(exception) { - this.loadingTask._capability.reject( - new UnknownErrorException(exception.message, exception.details)); - }, this); - - messageHandler.on('DataLoaded', function transportPage(data) { - this.downloadInfoCapability.resolve(data); - }, this); - - messageHandler.on('PDFManagerReady', function transportPage(data) { - if (this.pdfDataRangeTransport) { - this.pdfDataRangeTransport.transportReady(); - } - }, this); - - messageHandler.on('StartRenderPage', function transportRender(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - var page = this.pageCache[data.pageIndex]; - - page.stats.timeEnd('Page Request'); - page._startRenderPage(data.transparency, data.intent); - }, this); - - messageHandler.on('RenderPageChunk', function transportRender(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - var page = this.pageCache[data.pageIndex]; - - page._renderPageChunk(data.operatorList, data.intent); - }, this); - - messageHandler.on('commonobj', function transportObj(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - - var id = data[0]; - var type = data[1]; - if (this.commonObjs.hasData(id)) { - return; - } - - switch (type) { - case 'Font': - var exportedData = data[2]; - - var font; - if ('error' in exportedData) { - var error = exportedData.error; - warn('Error during font loading: ' + error); - this.commonObjs.resolve(id, error); - break; - } else { - font = new FontFaceObject(exportedData); - } - - FontLoader.bind( - [font], - function fontReady(fontObjs) { - this.commonObjs.resolve(id, font); - }.bind(this) - ); - break; - case 'FontPath': - this.commonObjs.resolve(id, data[2]); - break; - default: - error('Got unknown common object type ' + type); - } - }, this); - - messageHandler.on('obj', function transportObj(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - - var id = data[0]; - var pageIndex = data[1]; - var type = data[2]; - var pageProxy = this.pageCache[pageIndex]; - var imageData; - if (pageProxy.objs.hasData(id)) { - return; - } - - switch (type) { - case 'JpegStream': - imageData = data[3]; - loadJpegStream(id, imageData, pageProxy.objs); - break; - case 'Image': - imageData = data[3]; - pageProxy.objs.resolve(id, imageData); - - // heuristics that will allow not to store large data - 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: - error('Got unknown object type ' + type); - } - }, this); - - messageHandler.on('DocProgress', function transportDocProgress(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - - var loadingTask = this.loadingTask; - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: data.loaded, - total: data.total - }); - } - }, this); - - messageHandler.on('PageError', function transportError(data) { - if (this.destroyed) { - return; // Ignore any pending requests if the worker was terminated. - } - - var page = this.pageCache[data.pageNum - 1]; - var intentState = page.intentStates[data.intent]; - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.reject(data.error); - } else { - error(data.error); - } - }, this); - - messageHandler.on('JpegDecode', function(data) { - if (this.destroyed) { - return Promise.reject('Worker was terminated'); - } - - var imageUrl = data[0]; - var components = data[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 Uint8Array(size * components); - var tmpCanvas = createScratchCanvas(width, height); - var tmpCtx = tmpCanvas.getContext('2d'); - tmpCtx.drawImage(img, 0, 0); - var data = tmpCtx.getImageData(0, 0, width, height).data; - var i, j; - - if (components === 3) { - for (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 (i = 0, j = 0; i < rgbaLength; i += 4, j++) { - buf[j] = data[i]; - } - } - resolve({ data: buf, width: width, height: height}); - }; - img.onerror = function () { - reject(new Error('JpegDecode failed to load image')); - }; - img.src = imageUrl; - }); - }, this); - }, - - fetchDocument: function WorkerTransport_fetchDocument(loadingTask, source) { - if (this.destroyed) { - loadingTask._capability.reject(new Error('Loading aborted')); - this.destroyCapability.resolve(); - return; - } - - this.loadingTask = loadingTask; - - source.disableAutoFetch = PDFJS.disableAutoFetch; - source.disableStream = PDFJS.disableStream; - source.chunkedViewerLoading = !!this.pdfDataRangeTransport; - if (this.pdfDataRangeTransport) { - source.length = this.pdfDataRangeTransport.length; - source.initialData = this.pdfDataRangeTransport.initialData; - } - this.messageHandler.send('GetDocRequest', { - source: source, - disableRange: PDFJS.disableRange, - maxImageSize: PDFJS.maxImageSize, - cMapUrl: PDFJS.cMapUrl, - cMapPacked: PDFJS.cMapPacked, - disableFontFace: PDFJS.disableFontFace, - disableCreateObjectURL: PDFJS.disableCreateObjectURL, - verbosity: PDFJS.verbosity - }); - }, - - getData: function WorkerTransport_getData() { - return this.messageHandler.sendWithPromise('GetData', null); - }, - - getPage: function WorkerTransport_getPage(pageNumber, capability) { - if (pageNumber <= 0 || pageNumber > this.numPages || - (pageNumber|0) !== pageNumber) { - 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 (this.destroyed) { - throw new Error('Transport destroyed'); - } - var page = new PDFPageProxy(pageIndex, pageInfo, this); - this.pageCache[pageIndex] = page; - return page; - }.bind(this)); - this.pagePromises[pageIndex] = promise; - return promise; - }, - - getPageIndex: function WorkerTransport_getPageIndexByRef(ref) { - return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref }); - }, - - getAnnotations: function WorkerTransport_getAnnotations(pageIndex) { - return this.messageHandler.sendWithPromise('GetAnnotations', - { pageIndex: pageIndex }); - }, - - getDestinations: function WorkerTransport_getDestinations() { - return this.messageHandler.sendWithPromise('GetDestinations', null); - }, - - getDestination: function WorkerTransport_getDestination(id) { - return this.messageHandler.sendWithPromise('GetDestination', { id: id } ); - }, - - getAttachments: function WorkerTransport_getAttachments() { - return this.messageHandler.sendWithPromise('GetAttachments', null); - }, - - getJavaScript: function WorkerTransport_getJavaScript() { - return this.messageHandler.sendWithPromise('GetJavaScript', null); - }, - - getOutline: function WorkerTransport_getOutline() { - return this.messageHandler.sendWithPromise('GetOutline', null); - }, - - getMetadata: function WorkerTransport_getMetadata() { - return this.messageHandler.sendWithPromise('GetMetadata', null). - then(function transportMetadata(results) { - return { - info: results[0], - metadata: (results[1] ? new PDFJS.Metadata(results[1]) : null) - }; - }); - }, - - getStats: function WorkerTransport_getStats() { - return this.messageHandler.sendWithPromise('GetStats', null); - }, - - startCleanup: function WorkerTransport_startCleanup() { - this.messageHandler.sendWithPromise('Cleanup', null). - then(function endCleanup() { - for (var i = 0, ii = this.pageCache.length; i < ii; i++) { - var page = this.pageCache[i]; - if (page) { - page.cleanup(); - } - } - this.commonObjs.clear(); - FontLoader.clear(); - }.bind(this)); - } - }; - return WorkerTransport; - -})(); - -/** - * A PDF document and page is built of many objects. E.g. there are objects - * for fonts, images, rendering code and such. These objects might get processed - * inside of a worker. The `PDFObjects` implements some basic functions to - * manage these objects. - * @ignore - */ -var PDFObjects = (function PDFObjectsClosure() { - function PDFObjects() { - this.objs = {}; - } - - PDFObjects.prototype = { - /** - * Internal function. - * Ensures there is an object defined for `objId`. - */ - ensureObj: function PDFObjects_ensureObj(objId) { - if (this.objs[objId]) { - return this.objs[objId]; - } - - var obj = { - capability: createPromiseCapability(), - data: null, - resolved: false - }; - this.objs[objId] = obj; - - return obj; - }, - - /** - * If called *without* callback, this returns the data of `objId` but the - * object needs to be resolved. If it isn't, this function throws. - * - * If called *with* a callback, the callback is called with the data of the - * object once the object is resolved. That means, if you call this - * function and the object is already resolved, the callback gets called - * right away. - */ - get: function PDFObjects_get(objId, callback) { - // If there is a callback, then the get can be async and the object is - // not required to be resolved right now - if (callback) { - this.ensureObj(objId).capability.promise.then(callback); - return null; - } - - // If there isn't a callback, the user expects to get the resolved data - // directly. - var obj = this.objs[objId]; - - // If there isn't an object yet or the object isn't resolved, then the - // data isn't ready yet! - if (!obj || !obj.resolved) { - error('Requesting object that isn\'t resolved yet ' + objId); - } - - return obj.data; - }, - - /** - * Resolves the object `objId` with optional `data`. - */ - resolve: function PDFObjects_resolve(objId, data) { - var obj = this.ensureObj(objId); - - obj.resolved = true; - obj.data = data; - obj.capability.resolve(data); - }, - - isResolved: function PDFObjects_isResolved(objId) { - var objs = this.objs; - - if (!objs[objId]) { - return false; - } else { - return objs[objId].resolved; - } - }, - - hasData: function PDFObjects_hasData(objId) { - return this.isResolved(objId); - }, - - /** - * Returns the data of `objId` if object exists, null otherwise. - */ - getData: function PDFObjects_getData(objId) { - var objs = this.objs; - if (!objs[objId] || !objs[objId].resolved) { - return null; - } else { - return objs[objId].data; - } - }, - - clear: function PDFObjects_clear() { - this.objs = {}; - } - }; - return PDFObjects; -})(); - -/** - * Allows controlling of the rendering tasks. - * @class - * @alias RenderTask - */ -var RenderTask = (function RenderTaskClosure() { - function RenderTask(internalRenderTask) { - this._internalRenderTask = internalRenderTask; - - /** - * Callback for incremental rendering -- a function that will be called - * each time the rendering is paused. To continue rendering call the - * function that is the first argument to the callback. - * @type {function} - */ - this.onContinue = null; - } - - RenderTask.prototype = /** @lends RenderTask.prototype */ { - /** - * Promise for rendering task completion. - * @return {Promise} - */ - get promise() { - return this._internalRenderTask.capability.promise; - }, - - /** - * Cancels the rendering task. If the task is currently rendering it will - * not be cancelled until graphics pauses with a timeout. The promise that - * this object extends will resolved when cancelled. - */ - cancel: function RenderTask_cancel() { - this._internalRenderTask.cancel(); - }, - - /** - * Registers callbacks to indicate the rendering task completion. - * - * @param {function} onFulfilled The callback for the rendering completion. - * @param {function} onRejected The callback for the rendering failure. - * @return {Promise} A promise that is resolved after the onFulfilled or - * onRejected callback. - */ - then: function RenderTask_then(onFulfilled, onRejected) { - return this.promise.then.apply(this.promise, arguments); - } - }; - - return RenderTask; -})(); - -/** - * For internal use only. - * @ignore - */ -var InternalRenderTask = (function InternalRenderTaskClosure() { - - function InternalRenderTask(callback, params, objs, commonObjs, operatorList, - pageNumber) { - this.callback = callback; - this.params = params; - this.objs = objs; - this.commonObjs = commonObjs; - this.operatorListIdx = null; - this.operatorList = operatorList; - this.pageNumber = pageNumber; - this.running = false; - this.graphicsReadyCallback = null; - this.graphicsReady = false; - this.useRequestAnimationFrame = false; - this.cancelled = false; - this.capability = createPromiseCapability(); - this.task = new RenderTask(this); - // caching this-bound methods - this._continueBound = this._continue.bind(this); - this._scheduleNextBound = this._scheduleNext.bind(this); - this._nextBound = this._next.bind(this); - } - - InternalRenderTask.prototype = { - - initalizeGraphics: - function InternalRenderTask_initalizeGraphics(transparency) { - - if (this.cancelled) { - return; - } - if (PDFJS.pdfBug && 'StepperManager' in globalScope && - globalScope.StepperManager.enabled) { - this.stepper = globalScope.StepperManager.create(this.pageNumber - 1); - this.stepper.init(this.operatorList); - this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); - } - - var params = this.params; - this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs, - this.objs, params.imageLayer); - - this.gfx.beginDrawing(params.viewport, transparency); - this.operatorListIdx = 0; - this.graphicsReady = true; - if (this.graphicsReadyCallback) { - this.graphicsReadyCallback(); - } - }, - - cancel: function InternalRenderTask_cancel() { - this.running = false; - this.cancelled = true; - this.callback('cancelled'); - }, - - operatorListChanged: function InternalRenderTask_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(); - }, - - _continue: function InternalRenderTask__continue() { - this.running = true; - if (this.cancelled) { - return; - } - if (this.task.onContinue) { - this.task.onContinue.call(this.task, this._scheduleNextBound); - } else { - this._scheduleNext(); - } - }, - - _scheduleNext: function InternalRenderTask__scheduleNext() { - if (this.useRequestAnimationFrame) { - window.requestAnimationFrame(this._nextBound); - } else { - Promise.resolve(undefined).then(this._nextBound); - } - }, - - _next: function InternalRenderTask__next() { - if (this.cancelled) { - return; - } - 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(); - this.callback(); - } - } - } - - }; - - return InternalRenderTask; -})(); - - -var Metadata = PDFJS.Metadata = (function MetadataClosure() { - function fixMetadata(meta) { - return meta.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); - }); - var chars = ''; - for (var i = 0; i < bytes.length; i += 2) { - var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); - chars += code >= 32 && code < 127 && code !== 60 && code !== 62 && - code !== 38 && false ? String.fromCharCode(code) : - '&#x' + (0x10000 + code).toString(16).substring(1) + ';'; - } - return '>' + chars; - }); - } - - function Metadata(meta) { - if (typeof meta === 'string') { - // Ghostscript produces invalid metadata - meta = fixMetadata(meta); - - var parser = new DOMParser(); - meta = parser.parseFromString(meta, 'application/xml'); - } else if (!(meta instanceof Document)) { - error('Metadata: Invalid metadata object'); - } - - this.metaDocument = meta; - this.metadata = {}; - this.parse(); - } - - Metadata.prototype = { - parse: function Metadata_parse() { - var doc = this.metaDocument; - var rdf = doc.documentElement; - - if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in <xmpmeta> - 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, desc, entry, name, i, ii, length, iLength; - for (i = 0, length = children.length; i < length; i++) { - desc = children[i]; - if (desc.nodeName.toLowerCase() !== 'rdf:description') { - continue; - } - - for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) { - if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') { - entry = desc.childNodes[ii]; - name = entry.nodeName.toLowerCase(); - this.metadata[name] = entry.textContent.trim(); - } - } - } - }, - - get: function Metadata_get(name) { - return this.metadata[name] || null; - }, - - has: function Metadata_has(name) { - return typeof this.metadata[name] !== 'undefined'; - } - }; - - return Metadata; -})(); - - -// <canvas> contexts store most of the state we need natively. -// However, PDF needs a bit more state, which we store here. - -// Minimal font size that would be used during canvas fillText operations. -var MIN_FONT_SIZE = 16; -// Maximum font size that would be used during canvas fillText operations. -var MAX_FONT_SIZE = 100; -var MAX_GROUP_SIZE = 4096; - -// Heuristic value used when enforcing minimum line widths. -var MIN_WIDTH_FACTOR = 0.65; - -var COMPILE_TYPE3_GLYPHS = true; -var MAX_SIZE_TO_COMPILE = 1000; - -var FULL_CHUNK_HEIGHT = 16; - -function createScratchCanvas(width, height) { - var canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - return canvas; -} - -function addContextCurrentTransform(ctx) { - // If the context doesn't expose a `mozCurrentTransform`, add a JS based one. - 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() { - // Calculation done using WolframAlpha: - // http://www.wolframalpha.com/input/? - // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}} - - 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() { - var cache = {}; - return { - getCanvas: function CachedCanvases_getCanvas(id, width, height, - trackTransform) { - var canvasEntry; - if (cache[id] !== undefined) { - canvasEntry = cache[id]; - canvasEntry.canvas.width = width; - canvasEntry.canvas.height = height; - // reset canvas transform for emulated mozCurrentTransform, if needed - canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); - } else { - var canvas = createScratchCanvas(width, height); - var ctx = canvas.getContext('2d'); - if (trackTransform) { - addContextCurrentTransform(ctx); - } - cache[id] = canvasEntry = {canvas: canvas, context: ctx}; - } - return canvasEntry; - }, - clear: function () { - for (var id in cache) { - var canvasEntry = cache[id]; - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - canvasEntry.canvas.width = 0; - canvasEntry.canvas.height = 0; - delete cache[id]; - } - } - }; -})(); - -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]); - - // decodes bit-packed mask data - 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; - } - } - - // finding iteresting points: every point is located between mask pixels, - // so there will be points of the (width + 1)x(height + 1) grid. Every point - // will have flags assigned based on neighboring mask pixels: - // 4 | 8 - // --P-- - // 2 | 1 - // We are interested only in points with the flags: - // - outside corners: 1, 2, 4, 8; - // - inside corners: 7, 11, 13, 14; - // - and, intersections: 5, 10. - 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; - } - // 'sum' is the position of the current pixel configuration in the 'TYPES' - // array (in order 8-1-2-4, so we can use '>>2' to shift the column). - 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; - } - - // building outlines - 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) { - // set new direction - type = pp; - // delete mark - points[p] = 0; - } else { // type is 5 or 10, ie, a crossing - // set new direction - type = pp & ((0x33 * type) >> 4); - // set new type for "future hit" - 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(c) { - c.save(); - // the path shall be painted in [0..1]x[0..1] space - 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(old) { - // Are soft masks and alpha values shapes or opacities? - this.alphaIsShape = false; - this.fontSize = 0; - this.fontSizeScale = 1; - this.textMatrix = IDENTITY_MATRIX; - this.textMatrixScale = 1; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.leading = 0; - // Current point (in user coordinates) - this.x = 0; - this.y = 0; - // Start of text line (in text coordinates) - this.lineX = 0; - this.lineY = 0; - // Character and word spacing - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRenderingMode = TextRenderingMode.FILL; - this.textRise = 0; - // Default fore and background colors - this.fillColor = '#000000'; - this.strokeColor = '#000000'; - this.patternFill = false; - // Note: fill alpha applies to all non-stroking operations - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.activeSMask = null; // nonclonable field (see the save method below) - - this.old = old; - } - - 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() { - // Defines the time the executeOperatorList is going to be executing - // before it stops and shedules a continue of execution. - var EXECUTION_TIME = 15; - // Defines the number of steps before checking the execution time - var EXECUTION_STEPS = 10; - - function CanvasGraphics(canvasCtx, commonObjs, objs, 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.imageLayer = imageLayer; - this.groupStack = []; - this.processingType3 = null; - // Patterns are painted relative to the initial page/form transform, see pdf - // spec 8.7.2 NOTE 1. - this.baseTransform = null; - this.baseTransformStack = []; - this.groupLevel = 0; - this.smaskStack = []; - this.smaskCounter = 0; - this.tempSMask = null; - if (canvasCtx) { - // NOTE: if mozCurrentTransform is polyfilled, then the current state of - // the transformation must already be set in canvasCtx._transformMatrix. - addContextCurrentTransform(canvasCtx); - } - this.cachedGetSinglePixelWidth = null; - } - - function putBinaryImageData(ctx, imgData) { - if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) { - ctx.putImageData(imgData, 0, 0); - return; - } - - // Put the image data to the canvas in chunks, rather than putting the - // whole image at once. This saves JS memory, because the ImageData object - // is smaller. It also possibly saves C++ memory within the implementation - // of putImageData(). (E.g. in Firefox we make two short-lived copies of - // the data passed to putImageData()). |n| shouldn't be too small, however, - // because too many putImageData() calls will slow things down. - // - // Note: as written, if the last chunk is partial, the putImageData() call - // will (conceptually) put pixels past the bounds of the canvas. But - // that's ok; any such pixels are ignored. - - 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; - - // There are multiple forms in which the pixel data can be passed, and - // imgData.kind tells us which one this is. - if (imgData.kind === ImageKind.GRAYSCALE_1BPP) { - // Grayscale, 1 bit per pixel (i.e. black-and-white). - var srcLength = src.byteLength; - var dest32 = PDFJS.hasCanvasTypedArrays ? new Uint32Array(dest.buffer) : - new Uint32ArrayView(dest); - var dest32DataLength = dest32.length; - var fullSrcDiff = (width + 7) >> 3; - var white = 0xFFFFFFFF; - var black = (PDFJS.isLittleEndian || !PDFJS.hasCanvasTypedArrays) ? - 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; - } - } - // We ran out of input. Make all remaining pixels transparent. - while (destPos < dest32DataLength) { - dest32[destPos++] = 0; - } - - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else if (imgData.kind === ImageKind.RGBA_32BPP) { - // RGBA, 32-bits per pixel. - - 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 === ImageKind.RGB_24BPP) { - // RGB, 24-bits per pixel. - 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 { - error('bad image kind: ' + 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; - - // Expand the mask so it can be used by the canvas. Any required - // inversion has already been handled. - var destPos = 3; // alpha component offset - 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; - } else if (sourceCtx.mozDashOffset !== undefined) { - destCtx.mozDash = sourceCtx.mozDash; - destCtx.mozDashOffset = sourceCtx.mozDashOffset; - } - } - - 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) { - var length = maskData.length; - var scale = 1 / 255; - for (var i = 3; i < length; i += 4) { - var alpha = maskData[i]; - layerData[i] = (layerData[i] * alpha * scale) | 0; - } - } - - function composeSMaskLuminosity(maskData, layerData) { - var length = maskData.length; - for (var i = 3; i < length; i += 4) { - var y = (maskData[i - 3] * 77) + // * 0.3 / 255 * 0x10000 - (maskData[i - 2] * 152) + // * 0.59 .... - (maskData[i - 1] * 28); // * 0.11 .... - layerData[i] = (layerData[i] * y) >> 16; - } - } - - function genericComposeSMask(maskCtx, layerCtx, width, height, - subtype, backdrop) { - 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; - } - - // processing image in chunks to save memory - 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); - - maskCtx.putImageData(layerData, 0, row); - } - } - - function composeSMask(ctx, smask, layerCtx) { - 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 (WebGLUtils.isEnabled) { - var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask, - {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); - 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 CanvasGraphics_beginDrawing(viewport, transparency) { - // For pdfs that use blend modes we have to clear the canvas else certain - // blend modes can look wrong since we'd be blending with a white - // backdrop. The problem with a transparent backdrop though is we then - // don't get sub pixel anti aliasing on text, so we fill with white if - // we can. - var width = this.ctx.canvas.width; - var height = this.ctx.canvas.height; - if (transparency) { - this.ctx.clearRect(0, 0, width, height); - } else { - this.ctx.mozOpaque = true; - this.ctx.save(); - this.ctx.fillStyle = 'rgb(255, 255, 255)'; - this.ctx.fillRect(0, 0, width, height); - this.ctx.restore(); - } - - var transform = viewport.transform; - - this.ctx.save(); - this.ctx.transform.apply(this.ctx, 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; - - // Sometimes the OperatorList to execute is empty. - 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 !== 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 the promise isn't resolved yet, add the continueCallback - // to the promise and bail out. - if (!objsPool.isResolved(depObjId)) { - objsPool.get(depObjId, continueCallback); - return i; - } - } - } - - i++; - - // If the entire operatorList was executed, stop as were done. - if (i === argsArrayLen) { - return i; - } - - // If the execution took longer then a certain amount of time and - // `continueCallback` is specified, interrupt the execution. - if (chunkOperations && ++steps > EXECUTION_STEPS) { - if (Date.now() > endTime) { - continueCallback(); - return i; - } - steps = 0; - } - - // If the operatorList isn't executed completely yet OR the execution - // time was short enough, do another execution round. - } - }, - - endDrawing: function CanvasGraphics_endDrawing() { - this.ctx.restore(); - CachedCanvases.clear(); - WebGLUtils.clear(); - - if (this.imageLayer) { - this.imageLayer.endLayout(); - } - }, - - // Graphics state - 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; - } else { - ctx.mozDash = dashArray; - ctx.mozDashOffset = dashPhase; - } - }, - setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) { - // Maybe if we one day fully support color spaces this will be important - // for now we can ignore. - // TODO set rendering intent? - }, - setFlatness: function CanvasGraphics_setFlatness(flatness) { - // There's no way to control this with canvas, but we can safely ignore. - // TODO set 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': - if (value && value.name && (value.name !== 'Normal')) { - var mode = value.name.replace(/([A-Z])/g, - function(c) { - return '-' + c.toLowerCase(); - } - ).substring(1); - this.ctx.globalCompositeOperation = mode; - if (this.ctx.globalCompositeOperation !== mode) { - warn('globalCompositeOperation "' + mode + - '" is not supported'); - } - } else { - this.ctx.globalCompositeOperation = 'source-over'; - } - break; - case 'SMask': - if (this.current.activeSMask) { - 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 = 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); - - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([ - ['BM', 'Normal'], - ['ca', 1], - ['CA', 1] - ]); - 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.ctx.restore(); - }, - save: function CanvasGraphics_save() { - this.ctx.save(); - var old = this.current; - this.stateStack.push(old); - this.current = old.clone(); - this.current.activeSMask = null; - }, - restore: function CanvasGraphics_restore() { - if (this.stateStack.length !== 0) { - if (this.current.activeSMask !== null) { - this.endSMaskGroup(); - } - - this.current = this.stateStack.pop(); - this.ctx.restore(); - - // Ensure that the clipping path is reset (fixes issue6413.pdf). - 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; - }, - - // Path - 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 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 OPS.moveTo: - x = args[j++]; - y = args[j++]; - ctx.moveTo(x, y); - break; - case OPS.lineTo: - x = args[j++]; - y = args[j++]; - ctx.lineTo(x, y); - break; - case 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 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 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 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; - // Prevent drawing too thin lines by enforcing a minimum line width. - ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, - this.current.lineWidth); - // For stroke we want to temporarily change the global alpha to the - // stroking alpha. - ctx.globalAlpha = this.current.strokeAlpha; - if (strokeColor && strokeColor.hasOwnProperty('type') && - strokeColor.type === 'Pattern') { - // for patterns, we transform to pattern space, calculate - // the pattern, call stroke, and restore to user space - ctx.save(); - ctx.strokeStyle = strokeColor.getPattern(ctx, this); - ctx.stroke(); - ctx.restore(); - } else { - ctx.stroke(); - } - if (consumePath) { - this.consumePath(); - } - // Restore the global alpha to the fill alpha - 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(); - ctx.fillStyle = fillColor.getPattern(ctx, this); - needRestore = true; - } - - if (this.pendingEOFill) { - if (ctx.mozFillRule !== undefined) { - ctx.mozFillRule = 'evenodd'; - ctx.fill(); - ctx.mozFillRule = 'nonzero'; - } else { - 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(); - }, - - // Clipping - clip: function CanvasGraphics_clip() { - this.pendingClip = NORMAL_CLIP; - }, - eoClip: function CanvasGraphics_eoClip() { - this.pendingClip = EO_CLIP; - }, - - // Text - beginText: function CanvasGraphics_beginText() { - this.current.textMatrix = 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) { - error('Can\'t find font for ' + fontRefName); - } - - current.fontMatrix = (fontObj.fontMatrix ? - fontObj.fontMatrix : FONT_IDENTITY_MATRIX); - - // A valid matrix needs all main diagonal elements to be non-zero - // This also ensures we bypass FF bugzilla bug #719844. - if (current.fontMatrix[0] === 0 || - current.fontMatrix[3] === 0) { - warn('Invalid font matrix for font ' + fontRefName); - } - - // The spec for Tf (setFont) says that 'size' specifies the font 'scale', - // and in some docs this can be negative (inverted x-y axes). - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - - this.current.font = fontObj; - this.current.fontSize = size; - - if (fontObj.isType3Font) { - return; // we don't need ctx.font for Type3 fonts - } - - var name = fontObj.loadedName || 'sans-serif'; - var bold = fontObj.black ? (fontObj.bold ? '900' : 'bold') : - (fontObj.bold ? 'bold' : 'normal'); - - var italic = fontObj.italic ? 'italic' : 'normal'; - var typeface = '"' + name + '", ' + fontObj.fallbackName; - - // Some font backends cannot handle fonts below certain size. - // Keeping the font at minimal size and using the fontSizeScale to change - // the current transformation matrix before the fillText/strokeText. - // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227 - var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : - size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size; - this.current.fontSizeScale = size / browserFontSize; - - var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface; - this.ctx.font = rule; - }, - 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 CanvasGraphics_paintChar(character, x, y) { - 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 & - TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & - TextRenderingMode.ADD_TO_PATH_FLAG); - - var addToPath; - if (font.disableFontFace || isAddToPathSet) { - addToPath = font.getPathGenerator(this.commonObjs, character); - } - - if (font.disableFontFace) { - ctx.save(); - ctx.translate(x, y); - ctx.beginPath(); - addToPath(ctx, fontSize); - if (fillStrokeMode === TextRenderingMode.FILL || - fillStrokeMode === TextRenderingMode.FILL_STROKE) { - ctx.fill(); - } - if (fillStrokeMode === TextRenderingMode.STROKE || - fillStrokeMode === TextRenderingMode.FILL_STROKE) { - ctx.stroke(); - } - ctx.restore(); - } else { - if (fillStrokeMode === TextRenderingMode.FILL || - fillStrokeMode === TextRenderingMode.FILL_STROKE) { - ctx.fillText(character, x, y); - } - if (fillStrokeMode === TextRenderingMode.STROKE || - fillStrokeMode === 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() { - // Checks if anti-aliasing is enabled when scaled text is painted. - // On Windows GDI scaled fonts looks bad. - var ctx = document.createElement('canvas').getContext('2d'); - 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 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 === TextRenderingMode.FILL && - !font.disableFontFace; - - ctx.save(); - 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 & - TextRenderingMode.FILL_STROKE_MASK; - if (fillStrokeMode === TextRenderingMode.STROKE || - fillStrokeMode === 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 (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 && this.isFontSubpixelAAEnabled) { - // some standard fonts may not have the exact width, trying to - // rescale per character - var measuredWidth = ctx.measureText(character).width * 1000 / - fontSize * fontSizeScale; - var characterScaleX = width / measuredWidth; - restoreNeeded = true; - ctx.save(); - ctx.scale(characterScaleX, 1); - scaledX /= characterScaleX; - } - - if (simpleFillText && !accent) { - // common case - ctx.fillText(character, scaledX, scaledY); - } else { - this.paintChar(character, scaledX, scaledY); - if (accent) { - scaledAccentX = scaledX + accent.offset.x / fontSizeScale; - scaledAccentY = scaledY - accent.offset.y / fontSizeScale; - this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY); - } - } - - 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) { - // Type3 fonts - each glyph is a "mini-PDF" - 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 || FONT_IDENTITY_MATRIX; - var glyphsLength = glyphs.length; - var isTextInvisible = - current.textRenderingMode === 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 (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) { - warn('Type3 character \"' + 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.applyTransform([glyph.width, 0], fontMatrix); - width = transformed[0] * fontSize + spacing; - - ctx.translate(width, 0); - current.x += width * textHScale; - } - ctx.restore(); - this.processingType3 = null; - }, - - // Type3 fonts - setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) { - // We can safely ignore this since the width should be the same - // as the width in the Widths array. - }, - setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, - yWidth, - llx, - lly, - urx, - ury) { - // TODO According to the spec we're also suppose to ignore any operators - // that set color or include images while processing this type3 font. - this.ctx.rect(llx, lly, urx - llx, ury - lly); - this.clip(); - this.endPath(); - }, - - // Color - getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) { - var pattern; - if (IR[0] === 'TilingPattern') { - var color = IR[1]; - var baseTransform = this.baseTransform || - this.ctx.mozCurrentTransform.slice(); - pattern = new TilingPattern(IR, color, this.ctx, this.objs, - this.commonObjs, baseTransform); - } else { - pattern = 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.makeCssRgb(r, g, b); - this.ctx.strokeStyle = color; - this.current.strokeColor = color; - }, - setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = 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 = 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.applyTransform([0, 0], inv); - var br = Util.applyTransform([0, height], inv); - var ul = Util.applyTransform([width, 0], inv); - var ur = 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 { - // HACK to draw the gradient onto an infinite rectangle. - // PDF gradients are drawn across the entire image while - // Canvas only allows gradients to be drawn in a rectangle - // The following bug should allow us to remove this. - // https://bugzilla.mozilla.org/show_bug.cgi?id=664884 - - this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); - } - - this.restore(); - }, - - // Images - beginInlineImage: function CanvasGraphics_beginInlineImage() { - error('Should not call beginInlineImage'); - }, - beginImageData: function CanvasGraphics_beginImageData() { - error('Should not call beginImageData'); - }, - - paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, - bbox) { - this.save(); - this.baseTransformStack.push(this.baseTransform); - - if (isArray(matrix) && 6 === matrix.length) { - this.transform.apply(this, matrix); - } - - this.baseTransform = this.ctx.mozCurrentTransform; - - if (isArray(bbox) && 4 === bbox.length) { - 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; - // TODO non-isolated groups - according to Rik at adobe non-isolated - // group results aren't usually that different and they even have tools - // that ignore this setting. Notes from Rik on implmenting: - // - When you encounter an transparency group, create a new canvas with - // the dimensions of the bbox - // - copy the content from the previous canvas to the new canvas - // - draw as usual - // - remove the backdrop alpha: - // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha - // value of your transparency group and 'alphaBackdrop' the alpha of the - // backdrop - // - remove background color: - // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew) - if (!group.isolated) { - info('TODO: Support non-isolated groups.'); - } - - // TODO knockout - supposedly possible with the clever use of compositing - // modes. - if (group.knockout) { - warn('Knockout groups not supported.'); - } - - var currentTransform = currentCtx.mozCurrentTransform; - if (group.matrix) { - currentCtx.transform.apply(currentCtx, group.matrix); - } - assert(group.bbox, 'Bounding box is required.'); - - // Based on the current transform figure out how big the bounding box - // will actually be. - var bounds = Util.getAxialAlignedBoundingBox( - group.bbox, - currentCtx.mozCurrentTransform); - // Clip the bounding box to the current canvas. - var canvasBounds = [0, - 0, - currentCtx.canvas.width, - currentCtx.canvas.height]; - bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; - // Use ceil in case we're between sizes so we don't create canvas that is - // too small and make the canvas at least 1x1 pixels. - 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) { - // Using two cache entries is case if masks are used one after another. - cacheId += '_smask_' + ((this.smaskCounter++) % 2); - } - var scratchCanvas = CachedCanvases.getCanvas( - cacheId, drawnWidth, drawnHeight, true); - var groupCtx = scratchCanvas.context; - - // Since we created a new canvas that is just the size of the bounding box - // we have to translate the group ctx. - groupCtx.scale(1 / scaleX, 1 / scaleY); - groupCtx.translate(-offsetX, -offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - - if (group.smask) { - // Saving state and cached mask to be used in setGState. - this.smaskStack.push({ - canvas: scratchCanvas.canvas, - context: groupCtx, - offsetX: offsetX, - offsetY: offsetY, - scaleX: scaleX, - scaleY: scaleY, - subtype: group.smask.subtype, - backdrop: group.smask.backdrop - }); - } else { - // Setup the current ctx so when the group is popped we draw it at the - // right location. - currentCtx.setTransform(1, 0, 0, 1, 0, 0); - currentCtx.translate(offsetX, offsetY); - currentCtx.scale(scaleX, scaleY); - } - // The transparency group inherits all off the current graphics state - // except the blend mode, soft mask, and alpha constants. - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([ - ['BM', 'Normal'], - ['ca', 1], - ['CA', 1] - ]); - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - - endGroup: function CanvasGraphics_endGroup(group) { - this.groupLevel--; - var groupCtx = this.ctx; - this.ctx = this.groupStack.pop(); - // Turn off image smoothing to avoid sub pixel interpolation which can - // look kind of blurry for some pdfs. - 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(); - this.current = new CanvasExtraState(); - }, - - endAnnotations: function CanvasGraphics_endAnnotations() { - this.restore(); - }, - - beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, - matrix) { - this.save(); - - if (isArray(rect) && 4 === rect.length) { - 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) { - warn('Dependent image isn\'t ready yet'); - return; - } - - this.save(); - - var ctx = this.ctx; - // scale the image to the unit square - 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 = 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 = 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 = 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) { - 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) { - 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(); - // scale the image to the unit square - 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; - // instanceof HTMLElement does not work in jsdom node.js module - if (imgData instanceof HTMLElement || !imgData.data) { - imgToPaint = imgData; - } else { - tmpCanvas = CachedCanvases.getCanvas('inlineImage', width, height); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData); - imgToPaint = tmpCanvas.canvas; - } - - var paintWidth = width, paintHeight = height; - var tmpCanvasId = 'prescale1'; - // Vertial or horizontal scaling shall not be more than 2 to not loose the - // pixels during drawImage operation, painting on the temporary canvas(es) - // that are twice smaller in size - 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 = 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 = 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() { - UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown); - warn('Unsupported \'paintXObject\' command.'); - }, - - // Marked content - - markPoint: function CanvasGraphics_markPoint(tag) { - // TODO Marked content. - }, - markPointProps: function CanvasGraphics_markPointProps(tag, properties) { - // TODO Marked content. - }, - beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) { - // TODO Marked content. - }, - beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps( - tag, properties) { - // TODO Marked content. - }, - endMarkedContent: function CanvasGraphics_endMarkedContent() { - // TODO Marked content. - }, - - // Compatibility - - beginCompat: function CanvasGraphics_beginCompat() { - // TODO ignore undefined operators (should we do that anyway?) - }, - endCompat: function CanvasGraphics_endCompat() { - // TODO stop ignoring undefined operators - }, - - // Helper functions - - consumePath: function CanvasGraphics_consumePath() { - var ctx = this.ctx; - if (this.pendingClip) { - if (this.pendingClip === EO_CLIP) { - if (ctx.mozFillRule !== undefined) { - ctx.mozFillRule = 'evenodd'; - ctx.clip(); - ctx.mozFillRule = 'nonzero'; - } else { - ctx.clip('evenodd'); - } - } else { - ctx.clip(); - } - this.pendingClip = null; - } - ctx.beginPath(); - }, - getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) { - if (this.cachedGetSinglePixelWidth === null) { - var inverse = this.ctx.mozCurrentTransformInverse; - // max of the current horizontal and vertical scale - 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 OPS) { - CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op]; - } - - return CanvasGraphics; -})(); - - -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); - - // Set the parameters so we can render any size image. - 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); - - // Upload the image into the texture. - 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; - - // setup a GLSL program - 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'); - - // provide texture coordinates for the rectangle. - 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); - - // Create a textures - var texture = createTexture(gl, layer, gl.TEXTURE0); - var maskTexture = createTexture(gl, mask, gl.TEXTURE1); - - - // Create a buffer and put a single clipspace rectangle in - // it (2 triangles) - 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); - - // draw - 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; - - // setup a GLSL program - 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); - - // count triangle points - 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; - } - } - // transfer data - 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; - } - } - - // draw - 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; - } - - 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; - } - - return { - get isEnabled() { - if (PDFJS.disableWebGL) { - return false; - } - var enabled = false; - try { - generateGL(); - enabled = !!currentGL; - } catch (e) { } - return shadow(this, 'isEnabled', enabled); - }, - composeSMask: composeSMask, - drawFigures: drawFigures, - clear: cleanup - }; -})(); - - -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) { - // Very basic Gouraud-shaded triangle rasterization algorithm. - 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: - error('illigal figure'); - break; - } - } - - function createMeshCanvas(bounds, combinesScale, coords, colors, figures, - backgroundColor) { - // we will increase scale on some weird factor to let antialiasing take - // care of "rough" edges - var EXPECTED_SCALE = 1.1; - // MAX_PATTERN_SIZE is used to avoid OOM situation. - var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough - - 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 canvas, tmpCanvas, i, ii; - if (WebGLUtils.isEnabled) { - canvas = WebGLUtils.drawFigures(width, height, backgroundColor, - figures, context); - - // https://bugzilla.mozilla.org/show_bug.cgi?id=972126 - tmpCanvas = CachedCanvases.getCanvas('mesh', width, height, false); - tmpCanvas.context.drawImage(canvas, 0, 0); - canvas = tmpCanvas.canvas; - } else { - tmpCanvas = CachedCanvases.getCanvas('mesh', width, height, 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, 0, 0); - canvas = tmpCanvas.canvas; - } - - return {canvas: canvas, offsetX: offsetX, offsetY: offsetY, - scaleX: scaleX, scaleY: scaleY}; - } - return createMeshCanvas; -})(); - -ShadingIRs.Mesh = { - fromIR: function Mesh_fromIR(raw) { - //var type = raw[1]; - var coords = raw[2]; - var colors = raw[3]; - var figures = raw[4]; - var bounds = raw[5]; - var matrix = raw[6]; - //var bbox = raw[7]; - var background = raw[8]; - return { - type: 'Pattern', - getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { - var scale; - if (shadingFill) { - scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); - } else { - // Obtain scale from matrix and current transformation matrix. - scale = Util.singularValueDecompose2dScale(owner.baseTransform); - if (matrix) { - var matrixScale = Util.singularValueDecompose2dScale(matrix); - scale = [scale[0] * matrixScale[0], - scale[1] * matrixScale[1]]; - } - } - - - // Rasterizing on the main thread since sending/queue large canvases - // might cause OOM. - var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, - colors, figures, shadingFill ? null : background); - - 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) { - error('Unknown IR type: ' + raw[0]); - } - return shadingIR.fromIR(raw); -} - -var TilingPattern = (function TilingPatternClosure() { - var PaintType = { - COLORED: 1, - UNCOLORED: 2 - }; - - var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough - - function TilingPattern(IR, color, ctx, objs, commonObjs, 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.objs = objs; - this.commonObjs = commonObjs; - 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 objs = this.objs; - var commonObjs = this.commonObjs; - - info('TilingType: ' + tilingType); - - var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3]; - - var topLeft = [x0, y0]; - // we want the canvas to be as large as the step size - var botRight = [x0 + xstep, y0 + ystep]; - - var width = botRight[0] - topLeft[0]; - var height = botRight[1] - topLeft[1]; - - // Obtain scale from matrix and current transformation matrix. - var matrixScale = Util.singularValueDecompose2dScale(this.matrix); - var curMatrixScale = Util.singularValueDecompose2dScale( - this.baseTransform); - var combinedScale = [matrixScale[0] * curMatrixScale[0], - matrixScale[1] * curMatrixScale[1]]; - - // MAX_PATTERN_SIZE is used to avoid OOM situation. - // Use width and height values that are as close as possible to the end - // result when the pattern is used. Too low value makes the pattern look - // blurry. Too large value makes it look too crispy. - 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 = CachedCanvases.getCanvas('pattern', width, height, true); - var tmpCtx = tmpCanvas.context; - var graphics = new CanvasGraphics(tmpCtx, commonObjs, objs); - graphics.groupLevel = owner.groupLevel; - - this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color); - - this.setScale(width, height, xstep, ystep); - this.transformToScale(graphics); - - // transform coordinates to pattern space - 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 (bbox && 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(context, paintType, color) { - switch (paintType) { - case PaintType.COLORED: - var ctx = this.ctx; - context.fillStyle = ctx.fillStyle; - context.strokeStyle = ctx.strokeStyle; - break; - case PaintType.UNCOLORED: - var cssColor = Util.makeCssRgb(color[0], color[1], color[2]); - context.fillStyle = cssColor; - context.strokeStyle = cssColor; - break; - default: - error('Unsupported paint type: ' + 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; -})(); - - -PDFJS.disableFontFace = false; - -var FontLoader = { - insertRule: function fontLoaderInsertRule(rule) { - var styleElement = document.getElementById('PDFJS_FONT_STYLE_TAG'); - if (!styleElement) { - styleElement = document.createElement('style'); - styleElement.id = 'PDFJS_FONT_STYLE_TAG'; - document.documentElement.getElementsByTagName('head')[0].appendChild( - styleElement); - } - - var styleSheet = styleElement.sheet; - styleSheet.insertRule(rule, styleSheet.cssRules.length); - }, - - clear: function fontLoaderClear() { - var styleElement = document.getElementById('PDFJS_FONT_STYLE_TAG'); - if (styleElement) { - styleElement.parentNode.removeChild(styleElement); - } - this.nativeFontFaces.forEach(function(nativeFontFace) { - document.fonts.delete(nativeFontFace); - }); - this.nativeFontFaces.length = 0; - }, - get loadTestFont() { - // This is a CFF font with 1 glyph for '.' that fills its entire width and - // height. - return shadow(this, 'loadTestFont', atob( - 'T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + - 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + - 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + - 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + - 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + - 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + - 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + - 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + - 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + - 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + - 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + - 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + - 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + - 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + - 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + - 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + - 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + - 'ABAAAAAAAAAAAD6AAAAAAAAA==' - )); - }, - - get isEvalSupported() { - var evalSupport = false; - if (PDFJS.isEvalSupported) { - try { - /* jshint evil: true */ - new Function(''); - evalSupport = true; - } catch (e) {} - } - return shadow(this, 'isEvalSupported', evalSupport); - }, - - loadTestFontId: 0, - - loadingContext: { - requests: [], - nextRequestId: 0 - }, - - isSyncFontLoadingSupported: (function detectSyncFontLoadingSupport() { - if (isWorker) { - return false; - } - - // User agent string sniffing is bad, but there is no reliable way to tell - // if font is fully loaded and ready to be used with canvas. - var userAgent = window.navigator.userAgent; - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(userAgent); - if (m && m[1] >= 14) { - return true; - } - // TODO other browsers - if (userAgent === 'node') { - return true; - } - return false; - })(), - - nativeFontFaces: [], - - isFontLoadingAPISupported: (!isWorker && typeof document !== 'undefined' && - !!document.fonts), - - addNativeFontFace: function fontLoader_addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - document.fonts.add(nativeFontFace); - }, - - bind: function fontLoaderBind(fonts, callback) { - assert(!isWorker, 'bind() shall be called from main thread'); - - var rules = []; - var fontsToLoad = []; - var fontLoadPromises = []; - var getNativeFontPromise = function(nativeFontFace) { - // Return a promise that is always fulfilled, even when the font fails to - // load. - return nativeFontFace.loaded.catch(function(e) { - warn('Failed to load font "' + nativeFontFace.family + '": ' + e); - }); - }; - for (var i = 0, ii = fonts.length; i < ii; i++) { - var font = fonts[i]; - - // Add the font to the DOM only once or skip if the font - // is already loaded. - if (font.attached || font.loading === false) { - continue; - } - font.attached = true; - - if (this.isFontLoadingAPISupported) { - var nativeFontFace = font.createNativeFontFace(); - if (nativeFontFace) { - fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); - } - } else { - var rule = font.bindDOM(); - if (rule) { - rules.push(rule); - fontsToLoad.push(font); - } - } - } - - var request = FontLoader.queueLoadingCallback(callback); - if (this.isFontLoadingAPISupported) { - Promise.all(fontLoadPromises).then(function() { - request.complete(); - }); - } else if (rules.length > 0 && !this.isSyncFontLoadingSupported) { - FontLoader.prepareFontLoadEvent(rules, fontsToLoad, request); - } else { - request.complete(); - } - }, - - queueLoadingCallback: function FontLoader_queueLoadingCallback(callback) { - function LoadLoader_completeRequest() { - assert(!request.end, 'completeRequest() cannot be called twice'); - request.end = Date.now(); - - // sending all completed requests in order how they were queued - while (context.requests.length > 0 && context.requests[0].end) { - var otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - - var context = FontLoader.loadingContext; - var requestId = 'pdfjs-font-loading-' + (context.nextRequestId++); - var request = { - id: requestId, - complete: LoadLoader_completeRequest, - callback: callback, - started: Date.now() - }; - context.requests.push(request); - return request; - }, - - prepareFontLoadEvent: function fontLoaderPrepareFontLoadEvent(rules, - fonts, - request) { - /** Hack begin */ - // There's currently no event when a font has finished downloading so the - // following code is a dirty hack to 'guess' when a font is - // ready. It's assumed fonts are loaded in order, so add a known test - // font after the desired fonts and then test for the loading of that - // test font. - - 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.substr(0, offset); - var chunk2 = s.substr(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++; - // With setTimeout clamping this gives the font ~100ms to load. - if(called > 30) { - 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' + Date.now() + this.loadTestFontId++; - // Chromium seems to cache fonts based on a hash of the actual font data, - // so the font must be modified for each load test else it will appear to - // be loaded already. - // TODO: This could maybe be made faster by avoiding the btoa of the full - // font by splitting it in chunks before hand and padding the font id. - var data = this.loadTestFont; - var COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum) - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, - loadTestFontId); - // CFF checksum is important for IE, adjusting it - var CFF_CHECKSUM_OFFSET = 16; - var XXXX_VALUE = 0x58585858; // the "comment" filled with 'X' - 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) { // align to 4 bytes boundary - checksum = (checksum - XXXX_VALUE + - int32(loadTestFontId + 'XXX', i)) | 0; - } - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum)); - - var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; - var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + - url + '}'; - FontLoader.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(); - }); - /** Hack end */ - } -}; - -var FontFaceObject = (function FontFaceObjectClosure() { - function FontFaceObject(name, file, properties) { - this.compiledGlyphs = {}; - if (arguments.length === 1) { - // importing translated data - var data = arguments[0]; - for (var i in data) { - this[i] = data[i]; - } - return; - } - } - FontFaceObject.prototype = { - createNativeFontFace: function FontFaceObject_createNativeFontFace() { - if (!this.data) { - return null; - } - - if (PDFJS.disableFontFace) { - this.disableFontFace = true; - return null; - } - - var nativeFontFace = new FontFace(this.loadedName, this.data, {}); - - FontLoader.addNativeFontFace(nativeFontFace); - - if (PDFJS.pdfBug && 'FontInspector' in globalScope && - globalScope['FontInspector'].enabled) { - globalScope['FontInspector'].fontAdded(this); - } - return nativeFontFace; - }, - - bindDOM: function FontFaceObject_bindDOM() { - if (!this.data) { - return null; - } - - if (PDFJS.disableFontFace) { - this.disableFontFace = true; - return null; - } - - var data = bytesToString(new Uint8Array(this.data)); - var fontName = this.loadedName; - - // Add the font-face rule to the document - var url = ('url(data:' + this.mimetype + ';base64,' + - window.btoa(data) + ');'); - var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}'; - FontLoader.insertRule(rule); - - if (PDFJS.pdfBug && 'FontInspector' in globalScope && - globalScope['FontInspector'].enabled) { - globalScope['FontInspector'].fontAdded(this, url); - } - - return rule; - }, - - getPathGenerator: function FontLoader_getPathGenerator(objs, character) { - if (!(character in this.compiledGlyphs)) { - var cmds = objs.get(this.loadedName + '_path_' + character); - var current, i, len; - - // If we can, compile cmds into JS for MAXIMUM SPEED - if (FontLoader.isEvalSupported) { - var args, js = ''; - for (i = 0, len = cmds.length; i < len; i++) { - current = cmds[i]; - - if (current.args !== undefined) { - args = current.args.join(','); - } else { - args = ''; - } - - js += 'c.' + current.cmd + '(' + args + ');\n'; - } - /* jshint -W054 */ - this.compiledGlyphs[character] = new Function('c', 'size', js); - } else { - // But fall back on using Function.prototype.apply() if we're - // blocked from using eval() for whatever reason (like CSP policies) - this.compiledGlyphs[character] = function(c, size) { - for (i = 0, len = cmds.length; i < len; i++) { - current = cmds[i]; - - if (current.cmd === 'scale') { - current.args = [size, -size]; - } - - c[current.cmd].apply(c, current.args); - } - }; - } - } - return this.compiledGlyphs[character]; - } - }; - return FontFaceObject; -})(); - - -var ANNOT_MIN_SIZE = 10; // px - -var AnnotationUtils = (function AnnotationUtilsClosure() { - // TODO(mack): This dupes some of the logic in CanvasGraphics.setFont() - function setTextStyles(element, item, fontObj) { - - var style = element.style; - style.fontSize = item.fontSize + 'px'; - style.direction = item.fontDirection < 0 ? 'rtl': 'ltr'; - - if (!fontObj) { - return; - } - - style.fontWeight = fontObj.black ? - (fontObj.bold ? 'bolder' : 'bold') : - (fontObj.bold ? 'bold' : 'normal'); - style.fontStyle = fontObj.italic ? 'italic' : 'normal'; - - var fontName = fontObj.loadedName; - var fontFamily = fontName ? '"' + fontName + '", ' : ''; - // Use a reasonable default font if the font doesn't specify a fallback - var fallbackName = fontObj.fallbackName || 'Helvetica, sans-serif'; - style.fontFamily = fontFamily + fallbackName; - } - - function initContainer(item) { - var container = document.createElement('section'); - var cstyle = container.style; - var width = item.rect[2] - item.rect[0]; - var height = item.rect[3] - item.rect[1]; - - // Border - if (item.borderStyle.width > 0) { - // Border width - container.style.borderWidth = item.borderStyle.width + 'px'; - if (item.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) { - // Underline styles only have a bottom border, so we do not need - // to adjust for all borders. This yields a similar result as - // Adobe Acrobat/Reader. - width = width - 2 * item.borderStyle.width; - height = height - 2 * item.borderStyle.width; - } - - // Horizontal and vertical border radius - var horizontalRadius = item.borderStyle.horizontalCornerRadius; - var verticalRadius = item.borderStyle.verticalCornerRadius; - if (horizontalRadius > 0 || verticalRadius > 0) { - var radius = horizontalRadius + 'px / ' + verticalRadius + 'px'; - CustomStyle.setProp('borderRadius', container, radius); - } - - // Border style - switch (item.borderStyle.style) { - case AnnotationBorderStyleType.SOLID: - container.style.borderStyle = 'solid'; - break; - - case AnnotationBorderStyleType.DASHED: - container.style.borderStyle = 'dashed'; - break; - - case AnnotationBorderStyleType.BEVELED: - warn('Unimplemented border style: beveled'); - break; - - case AnnotationBorderStyleType.INSET: - warn('Unimplemented border style: inset'); - break; - - case AnnotationBorderStyleType.UNDERLINE: - container.style.borderBottomStyle = 'solid'; - break; - - default: - break; - } - - // Border color - if (item.color) { - container.style.borderColor = - Util.makeCssRgb(item.color[0] | 0, - item.color[1] | 0, - item.color[2] | 0); - } else { - // Transparent (invisible) border, so do not draw it at all. - container.style.borderWidth = 0; - } - } - - cstyle.width = width + 'px'; - cstyle.height = height + 'px'; - return container; - } - - function getHtmlElementForTextWidgetAnnotation(item, commonObjs) { - var element = document.createElement('div'); - var width = item.rect[2] - item.rect[0]; - var height = item.rect[3] - item.rect[1]; - element.style.width = width + 'px'; - element.style.height = height + 'px'; - element.style.display = 'table'; - - var content = document.createElement('div'); - content.textContent = item.fieldValue; - var textAlignment = item.textAlignment; - content.style.textAlign = ['left', 'center', 'right'][textAlignment]; - content.style.verticalAlign = 'middle'; - content.style.display = 'table-cell'; - - var fontObj = item.fontRefName ? - commonObjs.getData(item.fontRefName) : null; - setTextStyles(content, item, fontObj); - - element.appendChild(content); - - return element; - } - - function getHtmlElementForTextAnnotation(item) { - var rect = item.rect; - - // sanity check because of OOo-generated PDFs - if ((rect[3] - rect[1]) < ANNOT_MIN_SIZE) { - rect[3] = rect[1] + ANNOT_MIN_SIZE; - } - if ((rect[2] - rect[0]) < ANNOT_MIN_SIZE) { - rect[2] = rect[0] + (rect[3] - rect[1]); // make it square - } - - var container = initContainer(item); - container.className = 'annotText'; - - var image = document.createElement('img'); - image.style.height = container.style.height; - image.style.width = container.style.width; - var iconName = item.name; - image.src = PDFJS.imageResourcesPath + 'annotation-' + - iconName.toLowerCase() + '.svg'; - image.alt = '[{{type}} Annotation]'; - image.dataset.l10nId = 'text_annotation_type'; - image.dataset.l10nArgs = JSON.stringify({type: iconName}); - - var contentWrapper = document.createElement('div'); - contentWrapper.className = 'annotTextContentWrapper'; - contentWrapper.style.left = Math.floor(rect[2] - rect[0] + 5) + 'px'; - contentWrapper.style.top = '-10px'; - - var content = document.createElement('div'); - content.className = 'annotTextContent'; - content.setAttribute('hidden', true); - - var i, ii; - if (item.hasBgColor && item.color) { - var color = item.color; - - // Enlighten the color (70%) - var BACKGROUND_ENLIGHT = 0.7; - 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]; - content.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0); - } - - var title = document.createElement('h1'); - var text = document.createElement('p'); - title.textContent = item.title; - - if (!item.content && !item.title) { - content.setAttribute('hidden', true); - } else { - var e = document.createElement('span'); - var lines = item.content.split(/(?:\r\n?|\n)/); - for (i = 0, ii = lines.length; i < ii; ++i) { - var line = lines[i]; - e.appendChild(document.createTextNode(line)); - if (i < (ii - 1)) { - e.appendChild(document.createElement('br')); - } - } - text.appendChild(e); - - var pinned = false; - - var showAnnotation = function showAnnotation(pin) { - if (pin) { - pinned = true; - } - if (content.hasAttribute('hidden')) { - container.style.zIndex += 1; - content.removeAttribute('hidden'); - } - }; - - var hideAnnotation = function hideAnnotation(unpin) { - if (unpin) { - pinned = false; - } - if (!content.hasAttribute('hidden') && !pinned) { - container.style.zIndex -= 1; - content.setAttribute('hidden', true); - } - }; - - var toggleAnnotation = function toggleAnnotation() { - if (pinned) { - hideAnnotation(true); - } else { - showAnnotation(true); - } - }; - - image.addEventListener('click', function image_clickHandler() { - toggleAnnotation(); - }, false); - image.addEventListener('mouseover', function image_mouseOverHandler() { - showAnnotation(); - }, false); - image.addEventListener('mouseout', function image_mouseOutHandler() { - hideAnnotation(); - }, false); - - content.addEventListener('click', function content_clickHandler() { - hideAnnotation(true); - }, false); - } - - content.appendChild(title); - content.appendChild(text); - contentWrapper.appendChild(content); - container.appendChild(image); - container.appendChild(contentWrapper); - - return container; - } - - function getHtmlElementForLinkAnnotation(item) { - var container = initContainer(item); - container.className = 'annotLink'; - - var link = document.createElement('a'); - link.href = link.title = item.url || ''; - - if (item.url && isExternalLinkTargetSet()) { - link.target = LinkTargetStringMap[PDFJS.externalLinkTarget]; - } - - container.appendChild(link); - - return container; - } - - function getHtmlElement(data, objs) { - switch (data.annotationType) { - case AnnotationType.WIDGET: - return getHtmlElementForTextWidgetAnnotation(data, objs); - case AnnotationType.TEXT: - return getHtmlElementForTextAnnotation(data); - case AnnotationType.LINK: - return getHtmlElementForLinkAnnotation(data); - default: - throw new Error('Unsupported annotationType: ' + data.annotationType); - } - } - - return { - getHtmlElement: getHtmlElement - }; -})(); -PDFJS.AnnotationUtils = AnnotationUtils; - - -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 encode(imgData, kind) { - var width = imgData.width; - var height = imgData.height; - var bitDepth, colorType, lineSize; - var bytes = imgData.data; - - switch (kind) { - case ImageKind.GRAYSCALE_1BPP: - colorType = 0; - bitDepth = 1; - lineSize = (width + 7) >> 3; - break; - case ImageKind.RGB_24BPP: - colorType = 2; - bitDepth = 8; - lineSize = width * 3; - break; - case ImageKind.RGBA_32BPP: - colorType = 6; - bitDepth = 8; - lineSize = width * 4; - break; - default: - throw new Error('invalid format'); - } - - // prefix every row with predictor 0 - var literals = new Uint8Array((1 + lineSize) * height); - var offsetLiterals = 0, offsetBytes = 0; - var y, i; - for (y = 0; y < height; ++y) { - literals[offsetLiterals++] = 0; // no prediction - literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), - offsetLiterals); - offsetBytes += lineSize; - offsetLiterals += lineSize; - } - - if (kind === ImageKind.GRAYSCALE_1BPP) { - // inverting for B/W - offsetLiterals = 0; - for (y = 0; y < height; y++) { - offsetLiterals++; // skipping predictor - 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, // bit depth - colorType, // color type - 0x00, // compression method - 0x00, // filter method - 0x00 // interlace method - ]); - - 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; // compression method and flags - idat[pi++] = 0x9c; // flags - - var pos = 0; - while (len > maxBlockLength) { - // writing non-final DEFLATE blocks type 0 and length of 65535 - 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; - } - - // writing non-final DEFLATE blocks type 0 - 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); // checksum - idat[pi++] = adler >> 24 & 0xff; - idat[pi++] = adler >> 16 & 0xff; - idat[pi++] = adler >> 8 & 0xff; - idat[pi++] = adler & 0xff; - - // PNG will consists: header, IHDR+data, IDAT+data, and IEND. - 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 PDFJS.createObjectURL(data, 'image/png'); - } - - return function convertImgDataToPng(imgData) { - var kind = (imgData.kind === undefined ? - ImageKind.GRAYSCALE_1BPP : imgData.kind); - return encode(imgData, kind); - }; -})(); - -var SVGExtraState = (function SVGExtraStateClosure() { - function SVGExtraState() { - this.fontSizeScale = 1; - this.fontWeight = SVG_DEFAULTS.fontWeight; - this.fontSize = 0; - - this.textMatrix = IDENTITY_MATRIX; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.leading = 0; - - // Current point (in user coordinates) - this.x = 0; - this.y = 0; - - // Start of text line (in text coordinates) - this.lineX = 0; - this.lineY = 0; - - // Character and word spacing - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRise = 0; - - // Default foreground and background colors - 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 = []; - - // Clipping - this.clipId = ''; - this.pendingClip = false; - - 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; -})(); - -var SVGGraphics = (function SVGGraphicsClosure() { - function createScratchSVG(width, height) { - var NS = 'http://www.w3.org/2000/svg'; - var svg = document.createElementNS(NS, 'svg:svg'); - svg.setAttributeNS(null, 'version', '1.1'); - svg.setAttributeNS(null, 'width', width + 'px'); - svg.setAttributeNS(null, 'height', height + 'px'); - svg.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height); - return svg; - } - - 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; - } - - /** - * Formats float number. - * @param value {number} number to format. - * @returns {string} - */ - function pf(value) { - if (value === (value | 0)) { // integer number - return value.toString(); - } - var s = value.toFixed(10); - var i = s.length - 1; - if (s[i] !== '0') { - return s; - } - // removing trailing zeros - do { - i--; - } while (s[i] === '0'); - return s.substr(0, s[i] === '.' ? i : i + 1); - } - - /** - * Formats transform matrix. The standard rotation, scale and translate - * matrices are replaced by their shorter forms, and for identity matrix - * returns empty string to save the memory. - * @param m {Array} matrix to format. - * @returns {string} - */ - 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) { - this.current = new SVGExtraState(); - this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix - this.transformStack = []; - this.extraStack = []; - this.commonObjs = commonObjs; - this.objs = objs; - this.pendingEOFill = false; - - this.embedFonts = false; - this.embeddedFonts = {}; - this.cssStyle = null; - } - - var NS = 'http://www.w3.org/2000/svg'; - 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.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - this.pgrp.appendChild(this.tgrp); - }, - - group: function SVGGraphics_group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - }, - - loadDependencies: function SVGGraphics_loadDependencies(operatorList) { - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var argsArray = operatorList.argsArray; - - var self = this; - for (var i = 0; i < fnArrayLen; i++) { - if (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) { - self.commonObjs.get(obj, resolve); - }); - } else { - promise = new Promise(function(resolve) { - self.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 = PDFJS.Util.transform(this.transformMatrix, - transformMatrix); - - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - }, - - getSVG: function SVGGraphics_getSVG(operatorList, viewport) { - this.svg = createScratchSVG(viewport.width, viewport.height); - this.viewport = viewport; - - return this.loadDependencies(operatorList).then(function () { - this.transformMatrix = IDENTITY_MATRIX; - this.pgrp = document.createElementNS(NS, 'svg:g'); // Parent group - this.pgrp.setAttributeNS(null, 'transform', pm(viewport.transform)); - this.tgrp = document.createElementNS(NS, 'svg:g'); // Transform group - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - this.defs = document.createElementNS(NS, 'svg:defs'); - this.pgrp.appendChild(this.defs); - this.pgrp.appendChild(this.tgrp); - this.svg.appendChild(this.pgrp); - var opTree = this.convertOpList(operatorList); - this.executeOpTree(opTree); - return this.svg; - }.bind(this)); - }, - - 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 OPS) { - REVOPS[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 OPS.beginText: - this.beginText(); - break; - case OPS.setLeading: - this.setLeading(args); - break; - case OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - case OPS.setFont: - this.setFont(args); - break; - case OPS.showText: - this.showText(args[0]); - break; - case OPS.showSpacedText: - this.showText(args[0]); - break; - case OPS.endText: - this.endText(); - break; - case OPS.moveText: - this.moveText(args[0], args[1]); - break; - case OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - case OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - case OPS.setHScale: - this.setHScale(args[0]); - break; - case OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], - args[3], args[4], args[5]); - break; - case OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - case OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - case OPS.setLineCap: - this.setLineCap(args[0]); - break; - case OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - case OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - case OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - case OPS.setDash: - this.setDash(args[0], args[1]); - break; - case OPS.setGState: - this.setGState(args[0]); - break; - case OPS.fill: - this.fill(); - break; - case OPS.eoFill: - this.eoFill(); - break; - case OPS.stroke: - this.stroke(); - break; - case OPS.fillStroke: - this.fillStroke(); - break; - case OPS.eoFillStroke: - this.eoFillStroke(); - break; - case OPS.clip: - this.clip('nonzero'); - break; - case OPS.eoClip: - this.clip('evenodd'); - break; - case OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - case OPS.paintJpegXObject: - this.paintJpegXObject(args[0], args[1], args[2]); - break; - case OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - case OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - case OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - case OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - case OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - case OPS.closePath: - this.closePath(); - break; - case OPS.closeStroke: - this.closeStroke(); - break; - case OPS.closeFillStroke: - this.closeFillStroke(); - break; - case OPS.nextLine: - this.nextLine(); - break; - case OPS.transform: - this.transform(args[0], args[1], args[2], args[3], - args[4], args[5]); - break; - case OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - case OPS.endPath: - this.endPath(); - break; - case 92: - this.group(opTree[x].items); - break; - default: - warn('Unimplemented method '+ 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 = document.createElementNS(NS, '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 = document.createElementNS(NS, '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 = IDENTITY_MATRIX; - this.current.lineMatrix = IDENTITY_MATRIX; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.txtElement = document.createElementNS(NS, 'svg:text'); - this.current.txtgrp = document.createElementNS(NS, '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 = document.createElementNS(NS, '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) { - // word break - x += fontDirection * wordSpacing; - continue; - } else if (isNum(glyph)) { - x += -glyph * fontSize * 0.001; - continue; - } - current.xcoords.push(current.x + x * textHScale); - - var width = glyph.width; - var character = glyph.fontChar; - var charWidth = width * widthAdvanceScale + charSpacing * fontDirection; - x += charWidth; - - current.tspan.textContent += character; - } - 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); - } - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, 'fill', current.fillColor); - } - - current.txtElement.setAttributeNS(null, 'transform', - pm(current.textMatrix) + - ' scale(1, -1)' ); - current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - - this.tgrp.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 = document.createElementNS(NS, 'svg:style'); - this.cssStyle.setAttributeNS(null, 'type', 'text/css'); - this.defs.appendChild(this.cssStyle); - } - - var url = PDFJS.createObjectURL(fontObj.data, fontObj.mimetype); - 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 : 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 = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.xcoords = []; - }, - - endText: function SVGGraphics_endText() { - if (this.current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - }, - - // Path properties - setLineWidth: function SVGGraphics_setLineWidth(width) { - 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; - }, - setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.strokeColor = color; - }, - setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.fillColor = color; - this.current.tspan = document.createElementNS(NS, '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 = document.createElementNS(NS, 'svg:path'); - var d = []; - var opLength = ops.length; - - for (var i = 0, j = 0; i < opLength; i++) { - switch (ops[i] | 0) { - case 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 OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push('M', pf(x), pf(y)); - break; - case OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push('L', pf(x) , pf(y)); - break; - case 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 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 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 OPS.closePath: - d.push('Z'); - break; - } - } - current.path.setAttributeNS(null, 'd', d.join(' ')); - current.path.setAttributeNS(null, 'stroke-miterlimit', - pf(current.miterLimit)); - current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap); - current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); - current.path.setAttributeNS(null, 'stroke-width', - pf(current.lineWidth) + 'px'); - current.path.setAttributeNS(null, 'stroke-dasharray', - current.dashArray.map(pf).join(' ')); - current.path.setAttributeNS(null, 'stroke-dashoffset', - pf(current.dashPhase) + 'px'); - current.path.setAttributeNS(null, 'fill', 'none'); - - this.tgrp.appendChild(current.path); - if (current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - // Saving a reference in current.element so that it can be addressed - // in 'fill' and 'stroke' - current.element = current.path; - current.setCurrentPoint(x, y); - }, - - endPath: function SVGGraphics_endPath() { - var current = this.current; - if (current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - }, - - clip: function SVGGraphics_clip(type) { - var current = this.current; - // Add current path to clipping path - current.clipId = 'clippath' + clipCount; - clipCount++; - this.clippath = document.createElementNS(NS, 'svg:clipPath'); - this.clippath.setAttributeNS(null, 'id', current.clipId); - var clipElement = current.element.cloneNode(); - if (type === 'evenodd') { - clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); - } else { - clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); - } - this.clippath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - this.clippath.appendChild(clipElement); - this.defs.appendChild(this.clippath); - - // Create a new group with that attribute - current.pendingClip = true; - this.cgrp = document.createElementNS(NS, 'svg:g'); - this.cgrp.setAttributeNS(null, 'clip-path', - 'url(#' + current.clipId + ')'); - this.pgrp.appendChild(this.cgrp); - }, - - closePath: function SVGGraphics_closePath() { - var current = this.current; - 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; - }, - - 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 'RI': - break; - case 'FL': - break; - case 'Font': - this.setFont(value); - break; - case 'CA': - break; - case 'ca': - break; - case 'BM': - break; - case 'SMask': - break; - } - } - }, - - fill: function SVGGraphics_fill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - }, - - stroke: function SVGGraphics_stroke() { - var current = this.current; - current.element.setAttributeNS(null, 'stroke', current.strokeColor); - current.element.setAttributeNS(null, 'fill', 'none'); - }, - - eoFill: function SVGGraphics_eoFill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - }, - - fillStroke: function SVGGraphics_fillStroke() { - // Order is important since stroke wants fill to be none. - // First stroke, then if fill needed, it will be overwritten. - this.stroke(); - this.fill(); - }, - - eoFillStroke: function SVGGraphics_eoFillStroke() { - 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(); - }, - - paintSolidColorImageMask: - function SVGGraphics_paintSolidColorImageMask() { - var current = this.current; - var rect = document.createElementNS(NS, '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.tgrp.appendChild(rect); - }, - - paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { - var current = this.current; - var imgObj = this.objs.get(objId); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); - imgEl.setAttributeNS(null, 'width', imgObj.width + 'px'); - imgEl.setAttributeNS(null, 'height', imgObj.height + 'px'); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-h)); - imgEl.setAttributeNS(null, 'transform', - 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); - - this.tgrp.appendChild(imgEl); - if (current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - }, - - paintImageXObject: function SVGGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - warn('Dependent image isn\'t ready yet'); - return; - } - this.paintInlineImageXObject(imgData); - }, - - paintInlineImageXObject: - function SVGGraphics_paintInlineImageXObject(imgData, mask) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - - var imgSrc = convertImgDataToPng(imgData); - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', '0'); - cliprect.setAttributeNS(null, 'y', '0'); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - current.element = cliprect; - this.clip('nonzero'); - var imgEl = document.createElementNS(NS, '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.tgrp.appendChild(imgEl); - } - if (current.pendingClip) { - this.cgrp.appendChild(this.tgrp); - this.pgrp.appendChild(this.cgrp); - } else { - this.pgrp.appendChild(this.tgrp); - } - }, - - 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 = document.createElementNS(NS, 'svg:mask'); - mask.setAttributeNS(null, 'id', current.maskId); - - var rect = document.createElementNS(NS, '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.tgrp.appendChild(rect); - - this.paintInlineImageXObject(imgData, mask); - }, - - paintFormXObjectBegin: - function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { - this.save(); - - if (isArray(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], - matrix[3], matrix[4], matrix[5]); - } - - if (isArray(bbox) && bbox.length === 4) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - - var cliprect = document.createElementNS(NS, '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() { - this.restore(); - } - }; - return SVGGraphics; -})(); - -PDFJS.SVGGraphics = SVGGraphics; - - -}).call((typeof window === 'undefined') ? this : window); - -if (!PDFJS.workerSrc && typeof document !== 'undefined') { - // workerSrc is not set -- using last script url to define default location - PDFJS.workerSrc = (function () { - 'use strict'; - var pdfJsSrc = document.currentScript.src; - return pdfJsSrc && pdfJsSrc.replace(/\.js$/i, '.worker.js'); - })(); -} - - diff --git a/public/pdfjs/build/pdf.worker.js b/public/pdfjs/build/pdf.worker.js deleted file mode 100644 index fa30a1f0..00000000 --- a/public/pdfjs/build/pdf.worker.js +++ /dev/null @@ -1,39959 +0,0 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ -/* Copyright 2012 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. - */ -/*jshint globalstrict: false */ -/* globals PDFJS */ - -// Initializing PDFJS global object (if still undefined) -if (typeof PDFJS === 'undefined') { - (typeof window !== 'undefined' ? window : this).PDFJS = {}; -} - -PDFJS.version = '1.2.109'; -PDFJS.build = '875588d'; - -(function pdfjsWrapper() { - // Use strict in our context only - users might not want it - 'use strict'; - - - -var globalScope = (typeof window === 'undefined') ? this : window; - -var isWorker = (typeof window === 'undefined'); - -var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; - -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 -}; - -var ImageKind = { - GRAYSCALE_1BPP: 1, - RGB_24BPP: 2, - RGBA_32BPP: 3 -}; - -var AnnotationType = { - WIDGET: 1, - TEXT: 2, - LINK: 3 -}; - -var AnnotationBorderStyleType = { - SOLID: 1, - DASHED: 2, - BEVELED: 3, - INSET: 4, - UNDERLINE: 5 -}; - -var StreamType = { - UNKNOWN: 0, - FLATE: 1, - LZW: 2, - DCT: 3, - JPX: 4, - JBIG: 5, - A85: 6, - AHX: 7, - CCF: 8, - RL: 9 -}; - -var FontType = { - UNKNOWN: 0, - TYPE1: 1, - TYPE1C: 2, - CIDFONTTYPE0: 3, - CIDFONTTYPE0C: 4, - TRUETYPE: 5, - CIDFONTTYPE2: 6, - TYPE3: 7, - OPENTYPE: 8, - TYPE0: 9, - MMTYPE1: 10 -}; - -// The global PDFJS object exposes the API -// In production, it will be declared outside a global wrapper -// In development, it will be declared here -if (!globalScope.PDFJS) { - globalScope.PDFJS = {}; -} - -globalScope.PDFJS.pdfBug = false; - -PDFJS.VERBOSITY_LEVELS = { - errors: 0, - warnings: 1, - infos: 5 -}; - -// All the possible operations for an operator list. -var OPS = PDFJS.OPS = { - // Intentionally start from 1 so it is easy to spot bad operators that will be - // 0's. - 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 -}; - -// A notice for devs. These are good for things that are helpful to devs, such -// as warning that Workers were disabled, which is important to devs but not -// end users. -function info(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.infos) { - console.log('Info: ' + msg); - } -} - -// Non-fatal warnings. -function warn(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.warnings) { - console.log('Warning: ' + msg); - } -} - -// Deprecated API function -- treated as warnings. -function deprecated(details) { - warn('Deprecated API usage: ' + details); -} - -// Fatal errors that should trigger the fallback UI and halt execution by -// throwing an exception. -function error(msg) { - if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.errors) { - console.log('Error: ' + msg); - console.log(backtrace()); - } - UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown); - throw new Error(msg); -} - -function backtrace() { - try { - throw new Error(); - } catch (e) { - return e.stack ? e.stack.split('\n').slice(2).join('\n') : ''; - } -} - -function assert(cond, msg) { - if (!cond) { - error(msg); - } -} - -var UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = { - unknown: 'unknown', - forms: 'forms', - javaScript: 'javaScript', - smask: 'smask', - shadingPattern: 'shadingPattern', - font: 'font' -}; - -var UnsupportedManager = PDFJS.UnsupportedManager = - (function UnsupportedManagerClosure() { - var listeners = []; - return { - listen: function (cb) { - listeners.push(cb); - }, - notify: function (featureId) { - warn('Unsupported feature "' + featureId + '"'); - for (var i = 0, ii = listeners.length; i < ii; i++) { - listeners[i](featureId); - } - } - }; -})(); - -// Combines two URLs. The baseUrl shall be absolute URL. If the url is an -// absolute URL, it will be returned as is. -function combineUrl(baseUrl, url) { - if (!url) { - return baseUrl; - } - if (/^[a-z][a-z0-9+\-.]*:/i.test(url)) { - return url; - } - var i; - if (url.charAt(0) === '/') { - // absolute path - i = baseUrl.indexOf('://'); - if (url.charAt(1) === '/') { - ++i; - } else { - i = baseUrl.indexOf('/', i + 3); - } - return baseUrl.substring(0, i) + url; - } else { - // relative path - var pathLength = baseUrl.length; - i = baseUrl.lastIndexOf('#'); - pathLength = i >= 0 ? i : pathLength; - i = baseUrl.lastIndexOf('?', pathLength); - pathLength = i >= 0 ? i : pathLength; - var prefixLength = baseUrl.lastIndexOf('/', pathLength); - return baseUrl.substring(0, prefixLength + 1) + url; - } -} - -// Validates if URL is safe and allowed, e.g. to avoid XSS. -function isValidUrl(url, allowRelative) { - if (!url) { - return false; - } - // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1) - // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) - var protocol = /^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url); - if (!protocol) { - return allowRelative; - } - protocol = protocol[0].toLowerCase(); - switch (protocol) { - case 'http': - case 'https': - case 'ftp': - case 'mailto': - case 'tel': - return true; - default: - return false; - } -} -PDFJS.isValidUrl = isValidUrl; - -function shadow(obj, prop, value) { - Object.defineProperty(obj, prop, { value: value, - enumerable: true, - configurable: true, - writable: false }); - return value; -} -PDFJS.shadow = shadow; - -var LinkTarget = PDFJS.LinkTarget = { - NONE: 0, // Default value. - SELF: 1, - BLANK: 2, - PARENT: 3, - TOP: 4, -}; -var LinkTargetStringMap = [ - '', - '_self', - '_blank', - '_parent', - '_top' -]; - -function isExternalLinkTargetSet() { - if (PDFJS.openExternalLinksInNewWindow) { - warn('PDFJS.openExternalLinksInNewWindow is deprecated, ' + - 'use PDFJS.externalLinkTarget instead.'); - if (PDFJS.externalLinkTarget === LinkTarget.NONE) { - PDFJS.externalLinkTarget = LinkTarget.BLANK; - } - // Reset the deprecated parameter, to suppress further warnings. - PDFJS.openExternalLinksInNewWindow = false; - } - switch (PDFJS.externalLinkTarget) { - case LinkTarget.NONE: - return false; - case LinkTarget.SELF: - case LinkTarget.BLANK: - case LinkTarget.PARENT: - case LinkTarget.TOP: - return true; - } - warn('PDFJS.externalLinkTarget is invalid: ' + PDFJS.externalLinkTarget); - // Reset the external link target, to suppress further warnings. - PDFJS.externalLinkTarget = LinkTarget.NONE; - return false; -} -PDFJS.isExternalLinkTargetSet = isExternalLinkTargetSet; - -var PasswordResponses = PDFJS.PasswordResponses = { - NEED_PASSWORD: 1, - INCORRECT_PASSWORD: 2 -}; - -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; -})(); -PDFJS.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; -})(); -PDFJS.UnknownErrorException = UnknownErrorException; - -var InvalidPDFException = (function InvalidPDFExceptionClosure() { - function InvalidPDFException(msg) { - this.name = 'InvalidPDFException'; - this.message = msg; - } - - InvalidPDFException.prototype = new Error(); - InvalidPDFException.constructor = InvalidPDFException; - - return InvalidPDFException; -})(); -PDFJS.InvalidPDFException = InvalidPDFException; - -var MissingPDFException = (function MissingPDFExceptionClosure() { - function MissingPDFException(msg) { - this.name = 'MissingPDFException'; - this.message = msg; - } - - MissingPDFException.prototype = new Error(); - MissingPDFException.constructor = MissingPDFException; - - return MissingPDFException; -})(); -PDFJS.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; -})(); -PDFJS.UnexpectedResponseException = UnexpectedResponseException; - -var NotImplementedException = (function NotImplementedExceptionClosure() { - function NotImplementedException(msg) { - this.message = msg; - } - - NotImplementedException.prototype = new Error(); - NotImplementedException.prototype.name = 'NotImplementedException'; - NotImplementedException.constructor = NotImplementedException; - - return NotImplementedException; -})(); - -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; -})(); - -var XRefParseException = (function XRefParseExceptionClosure() { - function XRefParseException(msg) { - this.message = msg; - } - - XRefParseException.prototype = new Error(); - XRefParseException.prototype.name = 'XRefParseException'; - XRefParseException.constructor = XRefParseException; - - return XRefParseException; -})(); - - -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 string32(value) { - return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff, - (value >> 8) & 0xff, value & 0xff); -} - -function log2(x) { - var n = 1, i = 0; - while (x > n) { - n <<= 1; - i++; - } - return i; -} - -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; -} - -// Lazy test the endianness of the platform -// NOTE: This will be 'true' for simulated TypedArrays -function isLittleEndian() { - var buffer8 = new Uint8Array(2); - buffer8[0] = 1; - var buffer16 = new Uint16Array(buffer8.buffer); - return (buffer16[0] === 1); -} - -Object.defineProperty(PDFJS, 'isLittleEndian', { - configurable: true, - get: function PDFJS_isLittleEndian() { - return shadow(PDFJS, 'isLittleEndian', isLittleEndian()); - } -}); - - // Lazy test if the userAgent support CanvasTypedArrays -function hasCanvasTypedArrays() { - var canvas = document.createElement('canvas'); - canvas.width = canvas.height = 1; - var ctx = canvas.getContext('2d'); - var imageData = ctx.createImageData(1, 1); - return (typeof imageData.data.buffer !== 'undefined'); -} - -Object.defineProperty(PDFJS, 'hasCanvasTypedArrays', { - configurable: true, - get: function PDFJS_hasCanvasTypedArrays() { - return shadow(PDFJS, 'hasCanvasTypedArrays', hasCanvasTypedArrays()); - } -}); - -var Uint32ArrayView = (function Uint32ArrayViewClosure() { - - function Uint32ArrayView(buffer, length) { - this.buffer = buffer; - this.byteLength = buffer.length; - this.length = length === undefined ? (this.byteLength >> 2) : length; - ensureUint32ArrayViewProps(this.length); - } - Uint32ArrayView.prototype = Object.create(null); - - var uint32ArrayViewSetters = 0; - function createUint32ArrayProp(index) { - return { - get: function () { - var buffer = this.buffer, offset = index << 2; - return (buffer[offset] | (buffer[offset + 1] << 8) | - (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0; - }, - set: function (value) { - var buffer = this.buffer, offset = index << 2; - buffer[offset] = value & 255; - buffer[offset + 1] = (value >> 8) & 255; - buffer[offset + 2] = (value >> 16) & 255; - buffer[offset + 3] = (value >>> 24) & 255; - } - }; - } - - function ensureUint32ArrayViewProps(length) { - while (uint32ArrayViewSetters < length) { - Object.defineProperty(Uint32ArrayView.prototype, - uint32ArrayViewSetters, - createUint32ArrayProp(uint32ArrayViewSetters)); - uint32ArrayViewSetters++; - } - } - - return Uint32ArrayView; -})(); - -var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; - -var Util = PDFJS.Util = (function UtilClosure() { - function Util() {} - - var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; - - // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids - // creating many intermediate strings. - Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(''); - }; - - // Concatenates two transformation matrices together and returns the result. - 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] - ]; - }; - - // For 2d affine transforms - 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]; - }; - - // Applies the transform to the rectangle and finds the minimum axially - // aligned bounding box. - 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]; - }; - - // Apply a generic 3d matrix M on a 3-vector v: - // | a b c | | X | - // | d e f | x | Y | - // | g h i | | Z | - // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i], - // with v as [X,Y,Z] - 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] - ]; - }; - - // This calculation uses Singular Value Decomposition. - // The SVD can be represented with formula A = USV. We are interested in the - // matrix S here because it represents the scale values. - Util.singularValueDecompose2dScale = - function Util_singularValueDecompose2dScale(m) { - - var transpose = [m[0], m[2], m[1], m[3]]; - - // Multiply matrix m with its transpose. - 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]; - - // Solve the second degree polynomial to get roots. - 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; - - // Scale values are the square roots of the eigenvalues. - return [Math.sqrt(sx), Math.sqrt(sy)]; - }; - - // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2) - // For coordinate systems whose origin lies in the bottom-left, this - // means normalization to (BL,TR) ordering. For systems with origin in the - // top-left, this means (TL,BR) ordering. - Util.normalizeRect = function Util_normalizeRect(rect) { - var r = rect.slice(0); // clone rect - 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; - }; - - // Returns a rectangle [x1, y1, x2, y2] corresponding to the - // intersection of rect1 and rect2. If no intersection, returns 'false' - // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2] - Util.intersect = function Util_intersect(rect1, rect2) { - function compare(a, b) { - return a - b; - } - - // Order points along the axes - 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); - - // X: first and second points belong to different rectangles? - if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) || - (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) { - // Intersection must be between second and third points - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { - return false; - } - - // Y: first and second points belong to different rectangles? - if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) || - (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) { - // Intersection must be between second and third points - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { - return false; - } - - return result; - }; - - Util.sign = function Util_sign(num) { - return num < 0 ? -1 : 1; - }; - - Util.appendToArray = function Util_appendToArray(arr1, arr2) { - Array.prototype.push.apply(arr1, arr2); - }; - - Util.prependToArray = function Util_prependToArray(arr1, arr2) { - Array.prototype.unshift.apply(arr1, arr2); - }; - - Util.extendObj = function extendObj(obj1, obj2) { - for (var key in obj2) { - obj1[key] = obj2[key]; - } - }; - - Util.getInheritableProperty = function Util_getInheritableProperty(dict, - name) { - while (dict && !dict.has(name)) { - dict = dict.get('Parent'); - } - if (!dict) { - return null; - } - return dict.get(name); - }; - - Util.inherit = function Util_inherit(sub, base, prototype) { - sub.prototype = Object.create(base.prototype); - sub.prototype.constructor = sub; - for (var prop in prototype) { - sub.prototype[prop] = prototype[prop]; - } - }; - - Util.loadScript = function Util_loadScript(src, callback) { - var script = document.createElement('script'); - var loaded = false; - script.setAttribute('src', src); - if (callback) { - script.onload = function() { - if (!loaded) { - callback(); - } - loaded = true; - }; - } - document.getElementsByTagName('head')[0].appendChild(script); - }; - - return Util; -})(); - -/** - * PDF page viewport created based on scale, rotation and offset. - * @class - * @alias PDFJS.PageViewport - */ -var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() { - /** - * @constructor - * @private - * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates. - * @param scale {number} scale of the viewport. - * @param rotation {number} rotations of the viewport in degrees. - * @param offsetX {number} offset X - * @param offsetY {number} offset Y - * @param dontFlip {boolean} if true, axis Y will not be flipped. - */ - function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) { - this.viewBox = viewBox; - this.scale = scale; - this.rotation = rotation; - this.offsetX = offsetX; - this.offsetY = offsetY; - - // creating transform to convert pdf coordinate system to the normal - // canvas like coordinates taking in account scale and rotation - 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; - //case 0: - 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; - } - // creating transform for the following operations: - // translate(-centerX, -centerY), rotate and flip vertically, - // scale, and translate(offsetCanvasX, offsetCanvasY) - 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; - this.fontScale = scale; - } - PageViewport.prototype = /** @lends PDFJS.PageViewport.prototype */ { - /** - * Clones viewport with additional properties. - * @param args {Object} (optional) If specified, may contain the 'scale' or - * 'rotation' properties to override the corresponding properties in - * the cloned viewport. - * @returns {PDFJS.PageViewport} Cloned viewport. - */ - clone: function PageViewPort_clone(args) { - args = args || {}; - var scale = 'scale' in args ? args.scale : this.scale; - var rotation = 'rotation' in args ? args.rotation : this.rotation; - return new PageViewport(this.viewBox.slice(), scale, rotation, - this.offsetX, this.offsetY, args.dontFlip); - }, - /** - * Converts PDF point to the viewport coordinates. For examples, useful for - * converting PDF location into canvas pixel coordinates. - * @param x {number} X coordinate. - * @param y {number} Y coordinate. - * @returns {Object} Object that contains 'x' and 'y' properties of the - * point in the viewport coordinate space. - * @see {@link convertToPdfPoint} - * @see {@link convertToViewportRectangle} - */ - convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) { - return Util.applyTransform([x, y], this.transform); - }, - /** - * Converts PDF rectangle to the viewport coordinates. - * @param rect {Array} xMin, yMin, xMax and yMax coordinates. - * @returns {Array} Contains corresponding coordinates of the rectangle - * in the viewport coordinate space. - * @see {@link convertToViewportPoint} - */ - convertToViewportRectangle: - function PageViewport_convertToViewportRectangle(rect) { - var tl = Util.applyTransform([rect[0], rect[1]], this.transform); - var br = Util.applyTransform([rect[2], rect[3]], this.transform); - return [tl[0], tl[1], br[0], br[1]]; - }, - /** - * Converts viewport coordinates to the PDF location. For examples, useful - * for converting canvas pixel location into PDF one. - * @param x {number} X coordinate. - * @param y {number} Y coordinate. - * @returns {Object} Object that contains 'x' and 'y' properties of the - * point in the PDF coordinate space. - * @see {@link convertToViewportPoint} - */ - convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) { - return Util.applyInverseTransform([x, y], this.transform); - } - }; - return PageViewport; -})(); - -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') { - // UTF16BE BOM - 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 isInt(v) { - return typeof v === 'number' && ((v | 0) === v); -} - -function isNum(v) { - return typeof v === 'number'; -} - -function isString(v) { - return typeof v === 'string'; -} - -function isName(v) { - return v instanceof Name; -} - -function isCmd(v, cmd) { - return v instanceof Cmd && (cmd === undefined || v.cmd === cmd); -} - -function isDict(v, type) { - if (!(v instanceof Dict)) { - return false; - } - if (!type) { - return true; - } - var dictType = v.get('Type'); - return isName(dictType) && dictType.name === type; -} - -function isArray(v) { - return v instanceof Array; -} - -function isStream(v) { - return typeof v === 'object' && v !== null && v.getBytes !== undefined; -} - -function isArrayBuffer(v) { - return typeof v === 'object' && v !== null && v.byteLength !== undefined; -} - -function isRef(v) { - return v instanceof Ref; -} - -/** - * Promise Capability object. - * - * @typedef {Object} PromiseCapability - * @property {Promise} promise - A promise object. - * @property {function} resolve - Fullfills the promise. - * @property {function} reject - Rejects the promise. - */ - -/** - * Creates a promise capability object. - * @alias PDFJS.createPromiseCapability - * - * @return {PromiseCapability} A capability object contains: - * - a Promise, resolve and reject methods. - */ -function createPromiseCapability() { - var capability = {}; - capability.promise = new Promise(function (resolve, reject) { - capability.resolve = resolve; - capability.reject = reject; - }); - return capability; -} - -PDFJS.createPromiseCapability = createPromiseCapability; - -/** - * Polyfill for Promises: - * The following promise implementation tries to generally implement the - * Promise/A+ spec. Some notable differences from other promise libaries are: - * - There currently isn't a seperate deferred and promise object. - * - Unhandled rejections eventually show an error if they aren't handled. - * - * Based off of the work in: - * https://bugzilla.mozilla.org/show_bug.cgi?id=810490 - */ -(function PromiseClosure() { - if (globalScope.Promise) { - // Promises existing in the DOM/Worker, checking presence of all/resolve - if (typeof globalScope.Promise.all !== 'function') { - globalScope.Promise.all = function (iterable) { - var count = 0, results = [], resolve, reject; - var promise = new globalScope.Promise(function (resolve_, reject_) { - resolve = resolve_; - reject = reject_; - }); - iterable.forEach(function (p, i) { - count++; - p.then(function (result) { - results[i] = result; - count--; - if (count === 0) { - resolve(results); - } - }, reject); - }); - if (count === 0) { - resolve(results); - } - return promise; - }; - } - if (typeof globalScope.Promise.resolve !== 'function') { - globalScope.Promise.resolve = function (value) { - return new globalScope.Promise(function (resolve) { resolve(value); }); - }; - } - if (typeof globalScope.Promise.reject !== 'function') { - globalScope.Promise.reject = function (reason) { - return new globalScope.Promise(function (resolve, reject) { - reject(reason); - }); - }; - } - if (typeof globalScope.Promise.prototype.catch !== 'function') { - globalScope.Promise.prototype.catch = function (onReject) { - return globalScope.Promise.prototype.then(undefined, onReject); - }; - } - return; - } - var STATUS_PENDING = 0; - var STATUS_RESOLVED = 1; - var STATUS_REJECTED = 2; - - // In an attempt to avoid silent exceptions, unhandled rejections are - // tracked and if they aren't handled in a certain amount of time an - // error is logged. - var REJECTION_TIMEOUT = 500; - - var HandlerManager = { - handlers: [], - running: false, - unhandledRejections: [], - pendingRejectionCheck: false, - - scheduleHandlers: function scheduleHandlers(promise) { - if (promise._status === STATUS_PENDING) { - return; - } - - this.handlers = this.handlers.concat(promise._handlers); - promise._handlers = []; - - if (this.running) { - return; - } - this.running = true; - - setTimeout(this.runHandlers.bind(this), 0); - }, - - runHandlers: function runHandlers() { - var RUN_TIMEOUT = 1; // ms - var timeoutAt = Date.now() + RUN_TIMEOUT; - while (this.handlers.length > 0) { - var handler = this.handlers.shift(); - - var nextStatus = handler.thisPromise._status; - var nextValue = handler.thisPromise._value; - - try { - if (nextStatus === STATUS_RESOLVED) { - if (typeof handler.onResolve === 'function') { - nextValue = handler.onResolve(nextValue); - } - } else if (typeof handler.onReject === 'function') { - nextValue = handler.onReject(nextValue); - nextStatus = STATUS_RESOLVED; - - if (handler.thisPromise._unhandledRejection) { - this.removeUnhandeledRejection(handler.thisPromise); - } - } - } catch (ex) { - nextStatus = STATUS_REJECTED; - nextValue = ex; - } - - handler.nextPromise._updateStatus(nextStatus, nextValue); - if (Date.now() >= timeoutAt) { - break; - } - } - - if (this.handlers.length > 0) { - setTimeout(this.runHandlers.bind(this), 0); - return; - } - - this.running = false; - }, - - addUnhandledRejection: function addUnhandledRejection(promise) { - this.unhandledRejections.push({ - promise: promise, - time: Date.now() - }); - this.scheduleRejectionCheck(); - }, - - removeUnhandeledRejection: function removeUnhandeledRejection(promise) { - promise._unhandledRejection = false; - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (this.unhandledRejections[i].promise === promise) { - this.unhandledRejections.splice(i); - i--; - } - } - }, - - scheduleRejectionCheck: function scheduleRejectionCheck() { - if (this.pendingRejectionCheck) { - return; - } - this.pendingRejectionCheck = true; - setTimeout(function rejectionCheck() { - this.pendingRejectionCheck = false; - var now = Date.now(); - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) { - var unhandled = this.unhandledRejections[i].promise._value; - var msg = 'Unhandled rejection: ' + unhandled; - if (unhandled.stack) { - msg += '\n' + unhandled.stack; - } - warn(msg); - this.unhandledRejections.splice(i); - i--; - } - } - if (this.unhandledRejections.length) { - this.scheduleRejectionCheck(); - } - }.bind(this), REJECTION_TIMEOUT); - } - }; - - function Promise(resolver) { - this._status = STATUS_PENDING; - this._handlers = []; - try { - resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); - } catch (e) { - this._reject(e); - } - } - /** - * Builds a promise that is resolved when all the passed in promises are - * resolved. - * @param {array} array of data and/or promises to wait for. - * @return {Promise} New dependant promise. - */ - Promise.all = function Promise_all(promises) { - var resolveAll, rejectAll; - var deferred = new Promise(function (resolve, reject) { - resolveAll = resolve; - rejectAll = reject; - }); - var unresolved = promises.length; - var results = []; - if (unresolved === 0) { - resolveAll(results); - return deferred; - } - function reject(reason) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results = []; - rejectAll(reason); - } - for (var i = 0, ii = promises.length; i < ii; ++i) { - var promise = promises[i]; - var resolve = (function(i) { - return function(value) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results[i] = value; - unresolved--; - if (unresolved === 0) { - resolveAll(results); - } - }; - })(i); - if (Promise.isPromise(promise)) { - promise.then(resolve, reject); - } else { - resolve(promise); - } - } - return deferred; - }; - - /** - * Checks if the value is likely a promise (has a 'then' function). - * @return {boolean} true if value is thenable - */ - Promise.isPromise = function Promise_isPromise(value) { - return value && typeof value.then === 'function'; - }; - - /** - * Creates resolved promise - * @param value resolve value - * @returns {Promise} - */ - Promise.resolve = function Promise_resolve(value) { - return new Promise(function (resolve) { resolve(value); }); - }; - - /** - * Creates rejected promise - * @param reason rejection value - * @returns {Promise} - */ - Promise.reject = function Promise_reject(reason) { - return new Promise(function (resolve, reject) { reject(reason); }); - }; - - Promise.prototype = { - _status: null, - _value: null, - _handlers: null, - _unhandledRejection: null, - - _updateStatus: function Promise__updateStatus(status, value) { - if (this._status === STATUS_RESOLVED || - this._status === STATUS_REJECTED) { - return; - } - - if (status === STATUS_RESOLVED && - Promise.isPromise(value)) { - value.then(this._updateStatus.bind(this, STATUS_RESOLVED), - this._updateStatus.bind(this, STATUS_REJECTED)); - return; - } - - this._status = status; - this._value = value; - - if (status === STATUS_REJECTED && this._handlers.length === 0) { - this._unhandledRejection = true; - HandlerManager.addUnhandledRejection(this); - } - - HandlerManager.scheduleHandlers(this); - }, - - _resolve: function Promise_resolve(value) { - this._updateStatus(STATUS_RESOLVED, value); - }, - - _reject: function Promise_reject(reason) { - this._updateStatus(STATUS_REJECTED, reason); - }, - - then: function Promise_then(onResolve, onReject) { - var nextPromise = new Promise(function (resolve, reject) { - this.resolve = resolve; - this.reject = reject; - }); - this._handlers.push({ - thisPromise: this, - onResolve: onResolve, - onReject: onReject, - nextPromise: nextPromise - }); - HandlerManager.scheduleHandlers(this); - return nextPromise; - }, - - catch: function Promise_catch(onReject) { - return this.then(undefined, onReject); - } - }; - - globalScope.Promise = Promise; -})(); - -var StatTimer = (function StatTimerClosure() { - function rpad(str, pad, length) { - while (str.length < length) { - str += pad; - } - return str; - } - function StatTimer() { - this.started = {}; - this.times = []; - this.enabled = true; - } - StatTimer.prototype = { - time: function StatTimer_time(name) { - if (!this.enabled) { - return; - } - if (name in this.started) { - warn('Timer is already running for ' + name); - } - this.started[name] = Date.now(); - }, - timeEnd: function StatTimer_timeEnd(name) { - if (!this.enabled) { - return; - } - if (!(name in this.started)) { - warn('Timer has not been started for ' + name); - } - this.times.push({ - 'name': name, - 'start': this.started[name], - 'end': Date.now() - }); - // Remove timer from started so it can be called again. - delete this.started[name]; - }, - toString: function StatTimer_toString() { - var i, ii; - var times = this.times; - var out = ''; - // Find the longest name for padding purposes. - var longest = 0; - for (i = 0, ii = times.length; i < ii; ++i) { - var name = times[i]['name']; - if (name.length > longest) { - longest = name.length; - } - } - for (i = 0, ii = times.length; i < ii; ++i) { - var span = times[i]; - var duration = span.end - span.start; - out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n'; - } - return out; - } - }; - return StatTimer; -})(); - -PDFJS.createBlob = function createBlob(data, contentType) { - if (typeof Blob !== 'undefined') { - return new Blob([data], { type: contentType }); - } - // Blob builder is deprecated in FF14 and removed in FF18. - var bb = new MozBlobBuilder(); - bb.append(data); - return bb.getBlob(contentType); -}; - -PDFJS.createObjectURL = (function createObjectURLClosure() { - // Blob/createObjectURL is not available, falling back to data schema. - var digits = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - - return function createObjectURL(data, contentType) { - if (!PDFJS.disableCreateObjectURL && - typeof URL !== 'undefined' && URL.createObjectURL) { - var blob = PDFJS.createBlob(data, contentType); - return 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; - }; -})(); - -function MessageHandler(name, comObj) { - this.name = name; - this.comObj = comObj; - this.callbackIndex = 1; - this.postMessageTransfers = true; - var callbacksCapabilities = this.callbacksCapabilities = {}; - var ah = this.actionHandler = {}; - - ah['console_log'] = [function ahConsoleLog(data) { - console.log.apply(console, data); - }]; - ah['console_error'] = [function ahConsoleError(data) { - console.error.apply(console, data); - }]; - ah['_unsupported_feature'] = [function ah_unsupportedFeature(data) { - UnsupportedManager.notify(data); - }]; - - comObj.onmessage = function messageHandlerComObjOnMessage(event) { - var data = event.data; - 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(data.error); - } else { - callback.resolve(data.data); - } - } else { - error('Cannot resolve callback ' + callbackId); - } - } else if (data.action in ah) { - var action = ah[data.action]; - if (data.callbackId) { - Promise.resolve().then(function () { - return action[0].call(action[1], data.data); - }).then(function (result) { - comObj.postMessage({ - isReply: true, - callbackId: data.callbackId, - data: result - }); - }, function (reason) { - if (reason instanceof Error) { - // Serialize error to avoid "DataCloneError" - reason = reason + ''; - } - comObj.postMessage({ - isReply: true, - callbackId: data.callbackId, - error: reason - }); - }); - } else { - action[0].call(action[1], data.data); - } - } else { - error('Unknown action from worker: ' + data.action); - } - }; -} - -MessageHandler.prototype = { - on: function messageHandlerOn(actionName, handler, scope) { - var ah = this.actionHandler; - if (ah[actionName]) { - error('There is already an actionName called "' + actionName + '"'); - } - ah[actionName] = [handler, scope]; - }, - /** - * Sends a message to the comObj to invoke the action with the supplied data. - * @param {String} actionName Action to call. - * @param {JSON} data JSON data to send. - * @param {Array} [transfers] Optional list of transfers/ArrayBuffers - */ - send: function messageHandlerSend(actionName, data, transfers) { - var message = { - action: actionName, - data: data - }; - this.postMessage(message, transfers); - }, - /** - * Sends a message to the comObj to invoke the action with the supplied data. - * Expects that other side will callback with the response. - * @param {String} actionName Action to call. - * @param {JSON} data JSON data to send. - * @param {Array} [transfers] Optional list of transfers/ArrayBuffers. - * @returns {Promise} Promise to be resolved with response data. - */ - sendWithPromise: - function messageHandlerSendWithPromise(actionName, data, transfers) { - var callbackId = this.callbackIndex++; - var message = { - action: actionName, - data: data, - callbackId: callbackId - }; - var capability = createPromiseCapability(); - this.callbacksCapabilities[callbackId] = capability; - try { - this.postMessage(message, transfers); - } catch (e) { - capability.reject(e); - } - return capability.promise; - }, - /** - * Sends raw message to the comObj. - * @private - * @param message {Object} Raw message. - * @param transfers List of transfers/ArrayBuffers, or undefined. - */ - postMessage: function (message, transfers) { - if (transfers && this.postMessageTransfers) { - this.comObj.postMessage(message, transfers); - } else { - this.comObj.postMessage(message); - } - } -}; - -function loadJpegStream(id, imageUrl, objs) { - var img = new Image(); - img.onload = (function loadJpegStream_onloadClosure() { - objs.resolve(id, img); - }); - img.onerror = (function loadJpegStream_onerrorClosure() { - objs.resolve(id, null); - warn('Error during JPEG image loading'); - }); - img.src = imageUrl; -} - - - - -var NetworkManager = (function NetworkManagerClosure() { - - 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 = {}; - this.loadedRequests = {}; - } - - function getArrayBuffer(xhr) { - var data = xhr.response; - if (typeof data !== 'string') { - return data; - } - var length = data.length; - var array = new Uint8Array(length); - for (var i = 0; i < length; i++) { - array[i] = data.charCodeAt(i) & 0xFF; - } - return array.buffer; - } - - var supportsMozChunked = (function supportsMozChunkedClosure() { - try { - var x = new XMLHttpRequest(); - // Firefox 37- required .open() to be called before setting responseType. - // https://bugzilla.mozilla.org/show_bug.cgi?id=707484 - // Even though the URL is not visited, .open() could fail if the URL is - // blocked, e.g. via the connect-src CSP directive or the NoScript addon. - // When this error occurs, this feature detection method will mistakenly - // report that moz-chunked-arraybuffer is not supported in Firefox 37-. - x.open('GET', 'https://example.com'); - 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) { - // Maybe abortRequest was called... - 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) { - // Maybe abortRequest was called... - 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)) { - // The XHR request might have been aborted in onHeadersReceived() - // callback, in which case we should abort request - return; - } - - delete this.pendingRequests[xhrId]; - - // success status == 0 can be on ftp, file and other protocols - if (xhr.status === 0 && this.isHttp) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - return; - } - var xhrStatus = xhr.status || OK_RESPONSE; - - // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2: - // "A server MAY ignore the Range header". This means it's possible to - // get a 200 rather than a 206 response from a range request. - 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(); - } - }; - - return NetworkManager; -})(); - - -var ChunkedStream = (function ChunkedStreamClosure() { - function ChunkedStream(length, chunkSize, manager) { - this.bytes = new Uint8Array(length); - this.start = 0; - this.pos = 0; - this.end = length; - this.chunkSize = chunkSize; - this.loadedChunks = []; - this.numChunksLoaded = 0; - this.numChunks = Math.ceil(length / chunkSize); - this.manager = manager; - this.progressiveDataLength = 0; - this.lastSuccessfulEnsureByteChunk = -1; // a single-entry cache - } - - // required methods for a stream. if a particular stream does not - // implement these, an error should be thrown - ChunkedStream.prototype = { - - getMissingChunks: function ChunkedStream_getMissingChunks() { - var chunks = []; - for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) { - if (!this.loadedChunks[chunk]) { - chunks.push(chunk); - } - } - return chunks; - }, - - getBaseStreams: function ChunkedStream_getBaseStreams() { - return [this]; - }, - - allChunksLoaded: function ChunkedStream_allChunksLoaded() { - return this.numChunksLoaded === this.numChunks; - }, - - onReceiveData: function ChunkedStream_onReceiveData(begin, chunk) { - var end = begin + chunk.byteLength; - - assert(begin % this.chunkSize === 0, 'Bad begin offset: ' + begin); - // Using this.length is inaccurate here since this.start can be moved - // See ChunkedStream.moveStart() - var length = this.bytes.length; - assert(end % this.chunkSize === 0 || end === length, - 'Bad end offset: ' + end); - - this.bytes.set(new Uint8Array(chunk), begin); - var chunkSize = this.chunkSize; - var beginChunk = Math.floor(begin / chunkSize); - var endChunk = Math.floor((end - 1) / chunkSize) + 1; - var curChunk; - - for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) { - if (!this.loadedChunks[curChunk]) { - this.loadedChunks[curChunk] = true; - ++this.numChunksLoaded; - } - } - }, - - onReceiveProgressiveData: - function ChunkedStream_onReceiveProgressiveData(data) { - var position = this.progressiveDataLength; - var beginChunk = Math.floor(position / this.chunkSize); - - this.bytes.set(new Uint8Array(data), position); - position += data.byteLength; - this.progressiveDataLength = position; - var endChunk = position >= this.end ? this.numChunks : - Math.floor(position / this.chunkSize); - var curChunk; - for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) { - if (!this.loadedChunks[curChunk]) { - this.loadedChunks[curChunk] = true; - ++this.numChunksLoaded; - } - } - }, - - ensureByte: function ChunkedStream_ensureByte(pos) { - var chunk = Math.floor(pos / this.chunkSize); - if (chunk === this.lastSuccessfulEnsureByteChunk) { - return; - } - - if (!this.loadedChunks[chunk]) { - throw new MissingDataException(pos, pos + 1); - } - this.lastSuccessfulEnsureByteChunk = chunk; - }, - - ensureRange: function ChunkedStream_ensureRange(begin, end) { - if (begin >= end) { - return; - } - - if (end <= this.progressiveDataLength) { - return; - } - - var chunkSize = this.chunkSize; - var beginChunk = Math.floor(begin / chunkSize); - var endChunk = Math.floor((end - 1) / chunkSize) + 1; - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!this.loadedChunks[chunk]) { - throw new MissingDataException(begin, end); - } - } - }, - - nextEmptyChunk: function ChunkedStream_nextEmptyChunk(beginChunk) { - var chunk, numChunks = this.numChunks; - for (var i = 0; i < numChunks; ++i) { - chunk = (beginChunk + i) % numChunks; // Wrap around to beginning - if (!this.loadedChunks[chunk]) { - return chunk; - } - } - return null; - }, - - hasChunk: function ChunkedStream_hasChunk(chunk) { - return !!this.loadedChunks[chunk]; - }, - - get length() { - return this.end - this.start; - }, - - get isEmpty() { - return this.length === 0; - }, - - getByte: function ChunkedStream_getByte() { - var pos = this.pos; - if (pos >= this.end) { - return -1; - } - this.ensureByte(pos); - return this.bytes[this.pos++]; - }, - - getUint16: function ChunkedStream_getUint16() { - var b0 = this.getByte(); - var b1 = this.getByte(); - if (b0 === -1 || b1 === -1) { - return -1; - } - return (b0 << 8) + b1; - }, - - getInt32: function ChunkedStream_getInt32() { - var b0 = this.getByte(); - var b1 = this.getByte(); - var b2 = this.getByte(); - var b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - }, - - // returns subarray of original buffer - // should only be read - getBytes: function ChunkedStream_getBytes(length) { - var bytes = this.bytes; - var pos = this.pos; - var strEnd = this.end; - - if (!length) { - this.ensureRange(pos, strEnd); - return bytes.subarray(pos, strEnd); - } - - var end = pos + length; - if (end > strEnd) { - end = strEnd; - } - this.ensureRange(pos, end); - - this.pos = end; - return bytes.subarray(pos, end); - }, - - peekByte: function ChunkedStream_peekByte() { - var peekedByte = this.getByte(); - this.pos--; - return peekedByte; - }, - - peekBytes: function ChunkedStream_peekBytes(length) { - var bytes = this.getBytes(length); - this.pos -= bytes.length; - return bytes; - }, - - getByteRange: function ChunkedStream_getBytes(begin, end) { - this.ensureRange(begin, end); - return this.bytes.subarray(begin, end); - }, - - skip: function ChunkedStream_skip(n) { - if (!n) { - n = 1; - } - this.pos += n; - }, - - reset: function ChunkedStream_reset() { - this.pos = this.start; - }, - - moveStart: function ChunkedStream_moveStart() { - this.start = this.pos; - }, - - makeSubStream: function ChunkedStream_makeSubStream(start, length, dict) { - this.ensureRange(start, start + length); - - function ChunkedStreamSubstream() {} - ChunkedStreamSubstream.prototype = Object.create(this); - ChunkedStreamSubstream.prototype.getMissingChunks = function() { - var chunkSize = this.chunkSize; - var beginChunk = Math.floor(this.start / chunkSize); - var endChunk = Math.floor((this.end - 1) / chunkSize) + 1; - var missingChunks = []; - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!this.loadedChunks[chunk]) { - missingChunks.push(chunk); - } - } - return missingChunks; - }; - var subStream = new ChunkedStreamSubstream(); - subStream.pos = subStream.start = start; - subStream.end = start + length || this.end; - subStream.dict = dict; - return subStream; - }, - - isStream: true - }; - - return ChunkedStream; -})(); - -var ChunkedStreamManager = (function ChunkedStreamManagerClosure() { - - function ChunkedStreamManager(length, chunkSize, url, args) { - this.stream = new ChunkedStream(length, chunkSize, this); - this.length = length; - this.chunkSize = chunkSize; - this.url = url; - this.disableAutoFetch = args.disableAutoFetch; - var msgHandler = this.msgHandler = args.msgHandler; - - if (args.chunkedViewerLoading) { - msgHandler.on('OnDataRange', this.onReceiveData.bind(this)); - msgHandler.on('OnDataProgress', this.onProgress.bind(this)); - this.sendRequest = function ChunkedStreamManager_sendRequest(begin, end) { - msgHandler.send('RequestDataRange', { begin: begin, end: end }); - }; - } else { - - var getXhr = function getXhr() { - return new XMLHttpRequest(); - }; - this.networkManager = new NetworkManager(this.url, { - getXhr: getXhr, - httpHeaders: args.httpHeaders, - withCredentials: args.withCredentials - }); - this.sendRequest = function ChunkedStreamManager_sendRequest(begin, end) { - this.networkManager.requestRange(begin, end, { - onDone: this.onReceiveData.bind(this), - onProgress: this.onProgress.bind(this) - }); - }; - } - - this.currRequestId = 0; - - this.chunksNeededByRequest = {}; - this.requestsByChunk = {}; - this.promisesByRequest = {}; - this.progressiveDataLength = 0; - - this._loadedStreamCapability = createPromiseCapability(); - - if (args.initialData) { - this.onReceiveData({chunk: args.initialData}); - } - } - - ChunkedStreamManager.prototype = { - onLoadedStream: function ChunkedStreamManager_getLoadedStream() { - return this._loadedStreamCapability.promise; - }, - - // Get all the chunks that are not yet loaded and groups them into - // contiguous ranges to load in as few requests as possible - requestAllChunks: function ChunkedStreamManager_requestAllChunks() { - var missingChunks = this.stream.getMissingChunks(); - this._requestChunks(missingChunks); - return this._loadedStreamCapability.promise; - }, - - _requestChunks: function ChunkedStreamManager_requestChunks(chunks) { - var requestId = this.currRequestId++; - - var chunksNeeded; - var i, ii; - this.chunksNeededByRequest[requestId] = chunksNeeded = {}; - for (i = 0, ii = chunks.length; i < ii; i++) { - if (!this.stream.hasChunk(chunks[i])) { - chunksNeeded[chunks[i]] = true; - } - } - - if (isEmptyObj(chunksNeeded)) { - return Promise.resolve(); - } - - var capability = createPromiseCapability(); - this.promisesByRequest[requestId] = capability; - - var chunksToRequest = []; - for (var chunk in chunksNeeded) { - chunk = chunk | 0; - if (!(chunk in this.requestsByChunk)) { - this.requestsByChunk[chunk] = []; - chunksToRequest.push(chunk); - } - this.requestsByChunk[chunk].push(requestId); - } - - if (!chunksToRequest.length) { - return capability.promise; - } - - var groupedChunksToRequest = this.groupChunks(chunksToRequest); - - for (i = 0; i < groupedChunksToRequest.length; ++i) { - var groupedChunk = groupedChunksToRequest[i]; - var begin = groupedChunk.beginChunk * this.chunkSize; - var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length); - this.sendRequest(begin, end); - } - - return capability.promise; - }, - - getStream: function ChunkedStreamManager_getStream() { - return this.stream; - }, - - // Loads any chunks in the requested range that are not yet loaded - requestRange: function ChunkedStreamManager_requestRange(begin, end) { - - end = Math.min(end, this.length); - - var beginChunk = this.getBeginChunk(begin); - var endChunk = this.getEndChunk(end); - - var chunks = []; - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - chunks.push(chunk); - } - - return this._requestChunks(chunks); - }, - - requestRanges: function ChunkedStreamManager_requestRanges(ranges) { - ranges = ranges || []; - var chunksToRequest = []; - - for (var i = 0; i < ranges.length; i++) { - var beginChunk = this.getBeginChunk(ranges[i].begin); - var endChunk = this.getEndChunk(ranges[i].end); - for (var chunk = beginChunk; chunk < endChunk; ++chunk) { - if (chunksToRequest.indexOf(chunk) < 0) { - chunksToRequest.push(chunk); - } - } - } - - chunksToRequest.sort(function(a, b) { return a - b; }); - return this._requestChunks(chunksToRequest); - }, - - // Groups a sorted array of chunks into as few contiguous larger - // chunks as possible - groupChunks: function ChunkedStreamManager_groupChunks(chunks) { - var groupedChunks = []; - var beginChunk = -1; - var prevChunk = -1; - for (var i = 0; i < chunks.length; ++i) { - var chunk = chunks[i]; - - if (beginChunk < 0) { - beginChunk = chunk; - } - - if (prevChunk >= 0 && prevChunk + 1 !== chunk) { - groupedChunks.push({ beginChunk: beginChunk, - endChunk: prevChunk + 1 }); - beginChunk = chunk; - } - if (i + 1 === chunks.length) { - groupedChunks.push({ beginChunk: beginChunk, - endChunk: chunk + 1 }); - } - - prevChunk = chunk; - } - return groupedChunks; - }, - - onProgress: function ChunkedStreamManager_onProgress(args) { - var bytesLoaded = (this.stream.numChunksLoaded * this.chunkSize + - args.loaded); - this.msgHandler.send('DocProgress', { - loaded: bytesLoaded, - total: this.length - }); - }, - - onReceiveData: function ChunkedStreamManager_onReceiveData(args) { - var chunk = args.chunk; - var isProgressive = args.begin === undefined; - var begin = isProgressive ? this.progressiveDataLength : args.begin; - var end = begin + chunk.byteLength; - - var beginChunk = Math.floor(begin / this.chunkSize); - var endChunk = end < this.length ? Math.floor(end / this.chunkSize) : - Math.ceil(end / this.chunkSize); - - if (isProgressive) { - this.stream.onReceiveProgressiveData(chunk); - this.progressiveDataLength = end; - } else { - this.stream.onReceiveData(begin, chunk); - } - - if (this.stream.allChunksLoaded()) { - this._loadedStreamCapability.resolve(this.stream); - } - - var loadedRequests = []; - var i, requestId; - for (chunk = beginChunk; chunk < endChunk; ++chunk) { - // The server might return more chunks than requested - var requestIds = this.requestsByChunk[chunk] || []; - delete this.requestsByChunk[chunk]; - - for (i = 0; i < requestIds.length; ++i) { - requestId = requestIds[i]; - var chunksNeeded = this.chunksNeededByRequest[requestId]; - if (chunk in chunksNeeded) { - delete chunksNeeded[chunk]; - } - - if (!isEmptyObj(chunksNeeded)) { - continue; - } - - loadedRequests.push(requestId); - } - } - - // If there are no pending requests, automatically fetch the next - // unfetched chunk of the PDF - if (!this.disableAutoFetch && isEmptyObj(this.requestsByChunk)) { - var nextEmptyChunk; - if (this.stream.numChunksLoaded === 1) { - // This is a special optimization so that after fetching the first - // chunk, rather than fetching the second chunk, we fetch the last - // chunk. - var lastChunk = this.stream.numChunks - 1; - if (!this.stream.hasChunk(lastChunk)) { - nextEmptyChunk = lastChunk; - } - } else { - nextEmptyChunk = this.stream.nextEmptyChunk(endChunk); - } - if (isInt(nextEmptyChunk)) { - this._requestChunks([nextEmptyChunk]); - } - } - - for (i = 0; i < loadedRequests.length; ++i) { - requestId = loadedRequests[i]; - var capability = this.promisesByRequest[requestId]; - delete this.promisesByRequest[requestId]; - capability.resolve(); - } - - this.msgHandler.send('DocProgress', { - loaded: this.stream.numChunksLoaded * this.chunkSize, - total: this.length - }); - }, - - onError: function ChunkedStreamManager_onError(err) { - this._loadedStreamCapability.reject(err); - }, - - getBeginChunk: function ChunkedStreamManager_getBeginChunk(begin) { - var chunk = Math.floor(begin / this.chunkSize); - return chunk; - }, - - getEndChunk: function ChunkedStreamManager_getEndChunk(end) { - var chunk = Math.floor((end - 1) / this.chunkSize) + 1; - return chunk; - }, - - abort: function ChunkedStreamManager_abort() { - if (this.networkManager) { - this.networkManager.abortAllRequests(); - } - for(var requestId in this.promisesByRequest) { - var capability = this.promisesByRequest[requestId]; - capability.reject(new Error('Request was aborted')); - } - } - }; - - return ChunkedStreamManager; -})(); - - -// TODO(mack): Make use of PDFJS.Util.inherit() when it becomes available -var BasePdfManager = (function BasePdfManagerClosure() { - function BasePdfManager() { - throw new Error('Cannot initialize BaseManagerManager'); - } - - BasePdfManager.prototype = { - onLoadedStream: function BasePdfManager_onLoadedStream() { - throw new NotImplementedException(); - }, - - ensureDoc: function BasePdfManager_ensureDoc(prop, args) { - return this.ensure(this.pdfDocument, prop, args); - }, - - ensureXRef: function BasePdfManager_ensureXRef(prop, args) { - return this.ensure(this.pdfDocument.xref, prop, args); - }, - - ensureCatalog: function BasePdfManager_ensureCatalog(prop, args) { - return this.ensure(this.pdfDocument.catalog, prop, args); - }, - - getPage: function BasePdfManager_pagePage(pageIndex) { - return this.pdfDocument.getPage(pageIndex); - }, - - cleanup: function BasePdfManager_cleanup() { - return this.pdfDocument.cleanup(); - }, - - ensure: function BasePdfManager_ensure(obj, prop, args) { - return new NotImplementedException(); - }, - - requestRange: function BasePdfManager_ensure(begin, end) { - return new NotImplementedException(); - }, - - requestLoadedStream: function BasePdfManager_requestLoadedStream() { - return new NotImplementedException(); - }, - - sendProgressiveData: function BasePdfManager_sendProgressiveData(chunk) { - return new NotImplementedException(); - }, - - updatePassword: function BasePdfManager_updatePassword(password) { - this.pdfDocument.xref.password = this.password = password; - if (this._passwordChangedCapability) { - this._passwordChangedCapability.resolve(); - } - }, - - passwordChanged: function BasePdfManager_passwordChanged() { - this._passwordChangedCapability = createPromiseCapability(); - return this._passwordChangedCapability.promise; - }, - - terminate: function BasePdfManager_terminate() { - return new NotImplementedException(); - } - }; - - return BasePdfManager; -})(); - -var LocalPdfManager = (function LocalPdfManagerClosure() { - function LocalPdfManager(data, password) { - var stream = new Stream(data); - this.pdfDocument = new PDFDocument(this, stream, password); - this._loadedStreamCapability = createPromiseCapability(); - this._loadedStreamCapability.resolve(stream); - } - - LocalPdfManager.prototype = Object.create(BasePdfManager.prototype); - LocalPdfManager.prototype.constructor = LocalPdfManager; - - LocalPdfManager.prototype.ensure = - function LocalPdfManager_ensure(obj, prop, args) { - return new Promise(function (resolve, reject) { - try { - var value = obj[prop]; - var result; - if (typeof value === 'function') { - result = value.apply(obj, args); - } else { - result = value; - } - resolve(result); - } catch (e) { - reject(e); - } - }); - }; - - LocalPdfManager.prototype.requestRange = - function LocalPdfManager_requestRange(begin, end) { - return Promise.resolve(); - }; - - LocalPdfManager.prototype.requestLoadedStream = - function LocalPdfManager_requestLoadedStream() { - }; - - LocalPdfManager.prototype.onLoadedStream = - function LocalPdfManager_getLoadedStream() { - return this._loadedStreamCapability.promise; - }; - - LocalPdfManager.prototype.terminate = - function LocalPdfManager_terminate() { - return; - }; - - return LocalPdfManager; -})(); - -var NetworkPdfManager = (function NetworkPdfManagerClosure() { - function NetworkPdfManager(args, msgHandler) { - - this.msgHandler = msgHandler; - - var params = { - msgHandler: msgHandler, - httpHeaders: args.httpHeaders, - withCredentials: args.withCredentials, - chunkedViewerLoading: args.chunkedViewerLoading, - disableAutoFetch: args.disableAutoFetch, - initialData: args.initialData - }; - this.streamManager = new ChunkedStreamManager(args.length, - args.rangeChunkSize, - args.url, params); - - this.pdfDocument = new PDFDocument(this, this.streamManager.getStream(), - args.password); - } - - NetworkPdfManager.prototype = Object.create(BasePdfManager.prototype); - NetworkPdfManager.prototype.constructor = NetworkPdfManager; - - NetworkPdfManager.prototype.ensure = - function NetworkPdfManager_ensure(obj, prop, args) { - var pdfManager = this; - - return new Promise(function (resolve, reject) { - function ensureHelper() { - try { - var result; - var value = obj[prop]; - if (typeof value === 'function') { - result = value.apply(obj, args); - } else { - result = value; - } - resolve(result); - } catch(e) { - if (!(e instanceof MissingDataException)) { - reject(e); - return; - } - pdfManager.streamManager.requestRange(e.begin, e.end). - then(ensureHelper, reject); - } - } - - ensureHelper(); - }); - }; - - NetworkPdfManager.prototype.requestRange = - function NetworkPdfManager_requestRange(begin, end) { - return this.streamManager.requestRange(begin, end); - }; - - NetworkPdfManager.prototype.requestLoadedStream = - function NetworkPdfManager_requestLoadedStream() { - this.streamManager.requestAllChunks(); - }; - - NetworkPdfManager.prototype.sendProgressiveData = - function NetworkPdfManager_sendProgressiveData(chunk) { - this.streamManager.onReceiveData({ chunk: chunk }); - }; - - NetworkPdfManager.prototype.onLoadedStream = - function NetworkPdfManager_getLoadedStream() { - return this.streamManager.onLoadedStream(); - }; - - NetworkPdfManager.prototype.terminate = - function NetworkPdfManager_terminate() { - this.streamManager.abort(); - }; - - return NetworkPdfManager; -})(); - - -var Page = (function PageClosure() { - - var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; - - function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache) { - this.pdfManager = pdfManager; - this.pageIndex = pageIndex; - this.pageDict = pageDict; - this.xref = xref; - this.ref = ref; - this.fontCache = fontCache; - this.idCounters = { - obj: 0 - }; - this.resourcesPromise = null; - } - - Page.prototype = { - getPageProp: function Page_getPageProp(key) { - return this.pageDict.get(key); - }, - - getInheritedPageProp: function Page_getInheritedPageProp(key) { - var dict = this.pageDict, valueArray = null, loopCount = 0; - var MAX_LOOP_COUNT = 100; - // Always walk up the entire parent chain, to be able to find - // e.g. \Resources placed on multiple levels of the tree. - while (dict) { - var value = dict.get(key); - if (value) { - if (!valueArray) { - valueArray = []; - } - valueArray.push(value); - } - if (++loopCount > MAX_LOOP_COUNT) { - warn('Page_getInheritedPageProp: maximum loop count exceeded.'); - break; - } - dict = dict.get('Parent'); - } - if (!valueArray) { - return Dict.empty; - } - if (valueArray.length === 1 || !isDict(valueArray[0]) || - loopCount > MAX_LOOP_COUNT) { - return valueArray[0]; - } - return Dict.merge(this.xref, valueArray); - }, - - get content() { - return this.getPageProp('Contents'); - }, - - get resources() { - // For robustness: The spec states that a \Resources entry has to be - // present, but can be empty. Some document omit it still, in this case - // we return an empty dictionary. - return shadow(this, 'resources', this.getInheritedPageProp('Resources')); - }, - - get mediaBox() { - var obj = this.getInheritedPageProp('MediaBox'); - // Reset invalid media box to letter size. - if (!isArray(obj) || obj.length !== 4) { - obj = LETTER_SIZE_MEDIABOX; - } - return shadow(this, 'mediaBox', obj); - }, - - get view() { - var mediaBox = this.mediaBox; - var cropBox = this.getInheritedPageProp('CropBox'); - if (!isArray(cropBox) || cropBox.length !== 4) { - return shadow(this, 'view', mediaBox); - } - - // From the spec, 6th ed., p.963: - // "The crop, bleed, trim, and art boxes should not ordinarily - // extend beyond the boundaries of the media box. If they do, they are - // effectively reduced to their intersection with the media box." - cropBox = Util.intersect(cropBox, mediaBox); - if (!cropBox) { - return shadow(this, 'view', mediaBox); - } - return shadow(this, 'view', cropBox); - }, - - get rotate() { - var rotate = this.getInheritedPageProp('Rotate') || 0; - // Normalize rotation so it's a multiple of 90 and between 0 and 270 - if (rotate % 90 !== 0) { - rotate = 0; - } else if (rotate >= 360) { - rotate = rotate % 360; - } else if (rotate < 0) { - // The spec doesn't cover negatives, assume its counterclockwise - // rotation. The following is the other implementation of modulo. - rotate = ((rotate % 360) + 360) % 360; - } - return shadow(this, 'rotate', rotate); - }, - - getContentStream: function Page_getContentStream() { - var content = this.content; - var stream; - if (isArray(content)) { - // fetching items - var xref = this.xref; - var i, n = content.length; - var streams = []; - for (i = 0; i < n; ++i) { - streams.push(xref.fetchIfRef(content[i])); - } - stream = new StreamsSequenceStream(streams); - } else if (isStream(content)) { - stream = content; - } else { - // replacing non-existent page content with empty one - stream = new NullStream(); - } - return stream; - }, - - loadResources: function Page_loadResources(keys) { - if (!this.resourcesPromise) { - // TODO: add async getInheritedPageProp and remove this. - this.resourcesPromise = this.pdfManager.ensure(this, 'resources'); - } - return this.resourcesPromise.then(function resourceSuccess() { - var objectLoader = new ObjectLoader(this.resources.map, - keys, - this.xref); - return objectLoader.load(); - }.bind(this)); - }, - - getOperatorList: function Page_getOperatorList(handler, task, intent) { - var self = this; - - var pdfManager = this.pdfManager; - var contentStreamPromise = pdfManager.ensure(this, 'getContentStream', - []); - var resourcesPromise = this.loadResources([ - 'ExtGState', - 'ColorSpace', - 'Pattern', - 'Shading', - 'XObject', - 'Font' - // ProcSet - // Properties - ]); - - var partialEvaluator = new PartialEvaluator(pdfManager, this.xref, - handler, this.pageIndex, - 'p' + this.pageIndex + '_', - this.idCounters, - this.fontCache); - - var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); - var pageListPromise = dataPromises.then(function(data) { - var contentStream = data[0]; - var opList = new OperatorList(intent, handler, self.pageIndex); - - handler.send('StartRenderPage', { - transparency: partialEvaluator.hasBlendModes(self.resources), - pageIndex: self.pageIndex, - intent: intent - }); - return partialEvaluator.getOperatorList(contentStream, task, - self.resources, opList).then(function () { - return opList; - }); - }); - - var annotationsPromise = pdfManager.ensure(this, 'annotations'); - return Promise.all([pageListPromise, annotationsPromise]).then( - function(datas) { - var pageOpList = datas[0]; - var annotations = datas[1]; - - if (annotations.length === 0) { - pageOpList.flush(true); - return pageOpList; - } - - var annotationsReadyPromise = Annotation.appendToOperatorList( - annotations, pageOpList, pdfManager, partialEvaluator, task, intent); - return annotationsReadyPromise.then(function () { - pageOpList.flush(true); - return pageOpList; - }); - }); - }, - - extractTextContent: function Page_extractTextContent(task) { - var handler = { - on: function nullHandlerOn() {}, - send: function nullHandlerSend() {} - }; - - var self = this; - - var pdfManager = this.pdfManager; - var contentStreamPromise = pdfManager.ensure(this, 'getContentStream', - []); - - var resourcesPromise = this.loadResources([ - 'ExtGState', - 'XObject', - 'Font' - ]); - - var dataPromises = Promise.all([contentStreamPromise, - resourcesPromise]); - return dataPromises.then(function(data) { - var contentStream = data[0]; - var partialEvaluator = new PartialEvaluator(pdfManager, self.xref, - handler, self.pageIndex, - 'p' + self.pageIndex + '_', - self.idCounters, - self.fontCache); - - return partialEvaluator.getTextContent(contentStream, - task, - self.resources); - }); - }, - - getAnnotationsData: function Page_getAnnotationsData() { - var annotations = this.annotations; - var annotationsData = []; - for (var i = 0, n = annotations.length; i < n; ++i) { - annotationsData.push(annotations[i].data); - } - return annotationsData; - }, - - get annotations() { - var annotations = []; - var annotationRefs = this.getInheritedPageProp('Annots') || []; - var annotationFactory = new AnnotationFactory(); - for (var i = 0, n = annotationRefs.length; i < n; ++i) { - var annotationRef = annotationRefs[i]; - var annotation = annotationFactory.create(this.xref, annotationRef); - if (annotation && - (annotation.isViewable() || annotation.isPrintable())) { - annotations.push(annotation); - } - } - return shadow(this, 'annotations', annotations); - } - }; - - return Page; -})(); - -/** - * The `PDFDocument` holds all the data of the PDF file. Compared to the - * `PDFDoc`, this one doesn't have any job management code. - * Right now there exists one PDFDocument on the main thread + one object - * for each worker. If there is no worker support enabled, there are two - * `PDFDocument` objects on the main thread created. - */ -var PDFDocument = (function PDFDocumentClosure() { - var FINGERPRINT_FIRST_BYTES = 1024; - var EMPTY_FINGERPRINT = '\x00\x00\x00\x00\x00\x00\x00' + - '\x00\x00\x00\x00\x00\x00\x00\x00\x00'; - - function PDFDocument(pdfManager, arg, password) { - if (isStream(arg)) { - init.call(this, pdfManager, arg, password); - } else if (isArrayBuffer(arg)) { - init.call(this, pdfManager, new Stream(arg), password); - } else { - error('PDFDocument: Unknown argument type'); - } - } - - function init(pdfManager, stream, password) { - assert(stream.length > 0, 'stream must have data'); - this.pdfManager = pdfManager; - this.stream = stream; - var xref = new XRef(this.stream, password, pdfManager); - this.xref = xref; - } - - function find(stream, needle, limit, backwards) { - var pos = stream.pos; - var end = stream.end; - var strBuf = []; - if (pos + limit > end) { - limit = end - pos; - } - for (var n = 0; n < limit; ++n) { - strBuf.push(String.fromCharCode(stream.getByte())); - } - var str = strBuf.join(''); - stream.pos = pos; - var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle); - if (index === -1) { - return false; /* not found */ - } - stream.pos += index; - return true; /* found */ - } - - var DocumentInfoValidators = { - get entries() { - // Lazily build this since all the validation functions below are not - // defined until after this file loads. - return shadow(this, 'entries', { - Title: isString, - Author: isString, - Subject: isString, - Keywords: isString, - Creator: isString, - Producer: isString, - CreationDate: isString, - ModDate: isString, - Trapped: isName - }); - } - }; - - PDFDocument.prototype = { - parse: function PDFDocument_parse(recoveryMode) { - this.setup(recoveryMode); - var version = this.catalog.catDict.get('Version'); - if (isName(version)) { - this.pdfFormatVersion = version.name; - } - try { - // checking if AcroForm is present - this.acroForm = this.catalog.catDict.get('AcroForm'); - if (this.acroForm) { - this.xfa = this.acroForm.get('XFA'); - var fields = this.acroForm.get('Fields'); - if ((!fields || !isArray(fields) || fields.length === 0) && - !this.xfa) { - // no fields and no XFA -- not a form (?) - this.acroForm = null; - } - } - } catch (ex) { - info('Something wrong with AcroForm entry'); - this.acroForm = null; - } - }, - - get linearization() { - var linearization = null; - if (this.stream.length) { - try { - linearization = Linearization.create(this.stream); - } catch (err) { - if (err instanceof MissingDataException) { - throw err; - } - info(err); - } - } - // shadow the prototype getter with a data property - return shadow(this, 'linearization', linearization); - }, - get startXRef() { - var stream = this.stream; - var startXRef = 0; - var linearization = this.linearization; - if (linearization) { - // Find end of first obj. - stream.reset(); - if (find(stream, 'endobj', 1024)) { - startXRef = stream.pos + 6; - } - } else { - // Find startxref by jumping backward from the end of the file. - var step = 1024; - var found = false, pos = stream.end; - while (!found && pos > 0) { - pos -= step - 'startxref'.length; - if (pos < 0) { - pos = 0; - } - stream.pos = pos; - found = find(stream, 'startxref', step, true); - } - if (found) { - stream.skip(9); - var ch; - do { - ch = stream.getByte(); - } while (Lexer.isSpace(ch)); - var str = ''; - while (ch >= 0x20 && ch <= 0x39) { // < '9' - str += String.fromCharCode(ch); - ch = stream.getByte(); - } - startXRef = parseInt(str, 10); - if (isNaN(startXRef)) { - startXRef = 0; - } - } - } - // shadow the prototype getter with a data property - return shadow(this, 'startXRef', startXRef); - }, - get mainXRefEntriesOffset() { - var mainXRefEntriesOffset = 0; - var linearization = this.linearization; - if (linearization) { - mainXRefEntriesOffset = linearization.mainXRefEntriesOffset; - } - // shadow the prototype getter with a data property - return shadow(this, 'mainXRefEntriesOffset', mainXRefEntriesOffset); - }, - // Find the header, remove leading garbage and setup the stream - // starting from the header. - checkHeader: function PDFDocument_checkHeader() { - var stream = this.stream; - stream.reset(); - if (find(stream, '%PDF-', 1024)) { - // Found the header, trim off any garbage before it. - stream.moveStart(); - // Reading file format version - var MAX_VERSION_LENGTH = 12; - var version = '', ch; - while ((ch = stream.getByte()) > 0x20) { // SPACE - if (version.length >= MAX_VERSION_LENGTH) { - break; - } - version += String.fromCharCode(ch); - } - if (!this.pdfFormatVersion) { - // removing "%PDF-"-prefix - this.pdfFormatVersion = version.substring(5); - } - return; - } - // May not be a PDF file, continue anyway. - }, - parseStartXRef: function PDFDocument_parseStartXRef() { - var startXRef = this.startXRef; - this.xref.setStartXRef(startXRef); - }, - setup: function PDFDocument_setup(recoveryMode) { - this.xref.parse(recoveryMode); - this.catalog = new Catalog(this.pdfManager, this.xref); - }, - get numPages() { - var linearization = this.linearization; - var num = linearization ? linearization.numPages : this.catalog.numPages; - // shadow the prototype getter - return shadow(this, 'numPages', num); - }, - get documentInfo() { - var docInfo = { - PDFFormatVersion: this.pdfFormatVersion, - IsAcroFormPresent: !!this.acroForm, - IsXFAPresent: !!this.xfa - }; - var infoDict; - try { - infoDict = this.xref.trailer.get('Info'); - } catch (err) { - info('The document information dictionary is invalid.'); - } - if (infoDict) { - var validEntries = DocumentInfoValidators.entries; - // Only fill the document info with valid entries from the spec. - for (var key in validEntries) { - if (infoDict.has(key)) { - var value = infoDict.get(key); - // Make sure the value conforms to the spec. - if (validEntries[key](value)) { - docInfo[key] = (typeof value !== 'string' ? - value : stringToPDFString(value)); - } else { - info('Bad value in document info for "' + key + '"'); - } - } - } - } - return shadow(this, 'documentInfo', docInfo); - }, - get fingerprint() { - var xref = this.xref, hash, fileID = ''; - var idArray = xref.trailer.get('ID'); - - if (idArray && isArray(idArray) && idArray[0] && isString(idArray[0]) && - idArray[0] !== EMPTY_FINGERPRINT) { - hash = stringToBytes(idArray[0]); - } else { - if (this.stream.ensureRange) { - this.stream.ensureRange(0, - Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end)); - } - hash = calculateMD5(this.stream.bytes.subarray(0, - FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES); - } - - for (var i = 0, n = hash.length; i < n; i++) { - var hex = hash[i].toString(16); - fileID += hex.length === 1 ? '0' + hex : hex; - } - - return shadow(this, 'fingerprint', fileID); - }, - - getPage: function PDFDocument_getPage(pageIndex) { - return this.catalog.getPage(pageIndex); - }, - - cleanup: function PDFDocument_cleanup() { - return this.catalog.cleanup(); - } - }; - - return PDFDocument; -})(); - - -var Name = (function NameClosure() { - function Name(name) { - this.name = name; - } - - Name.prototype = {}; - - var nameCache = {}; - - Name.get = function Name_get(name) { - var nameValue = nameCache[name]; - return (nameValue ? nameValue : (nameCache[name] = new Name(name))); - }; - - return Name; -})(); - -var Cmd = (function CmdClosure() { - function Cmd(cmd) { - this.cmd = cmd; - } - - Cmd.prototype = {}; - - var cmdCache = {}; - - Cmd.get = function Cmd_get(cmd) { - var cmdValue = cmdCache[cmd]; - return (cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd))); - }; - - return Cmd; -})(); - -var Dict = (function DictClosure() { - var nonSerializable = function nonSerializableClosure() { - return nonSerializable; // creating closure on some variable - }; - - var GETALL_DICTIONARY_TYPES_WHITELIST = { - 'Background': true, - 'ExtGState': true, - 'Halftone': true, - 'Layout': true, - 'Mask': true, - 'Pagination': true, - 'Printing': true - }; - - function isRecursionAllowedFor(dict) { - if (!isName(dict.Type)) { - return true; - } - var dictType = dict.Type.name; - return GETALL_DICTIONARY_TYPES_WHITELIST[dictType] === true; - } - - // xref is optional - function Dict(xref) { - // Map should only be used internally, use functions below to access. - this.map = Object.create(null); - this.xref = xref; - this.objId = null; - this.__nonSerializable__ = nonSerializable; // disable cloning of the Dict - } - - Dict.prototype = { - assignXref: function Dict_assignXref(newXref) { - this.xref = newXref; - }, - - // automatically dereferences Ref objects - get: function Dict_get(key1, key2, key3) { - var value; - var xref = this.xref; - if (typeof (value = this.map[key1]) !== 'undefined' || key1 in this.map || - typeof key2 === 'undefined') { - return xref ? xref.fetchIfRef(value) : value; - } - if (typeof (value = this.map[key2]) !== 'undefined' || key2 in this.map || - typeof key3 === 'undefined') { - return xref ? xref.fetchIfRef(value) : value; - } - value = this.map[key3] || null; - return xref ? xref.fetchIfRef(value) : value; - }, - - // Same as get(), but returns a promise and uses fetchIfRefAsync(). - getAsync: function Dict_getAsync(key1, key2, key3) { - var value; - var xref = this.xref; - if (typeof (value = this.map[key1]) !== 'undefined' || key1 in this.map || - typeof key2 === 'undefined') { - if (xref) { - return xref.fetchIfRefAsync(value); - } - return Promise.resolve(value); - } - if (typeof (value = this.map[key2]) !== 'undefined' || key2 in this.map || - typeof key3 === 'undefined') { - if (xref) { - return xref.fetchIfRefAsync(value); - } - return Promise.resolve(value); - } - value = this.map[key3] || null; - if (xref) { - return xref.fetchIfRefAsync(value); - } - return Promise.resolve(value); - }, - - // Same as get(), but dereferences all elements if the result is an Array. - getArray: function Dict_getArray(key1, key2, key3) { - var value = this.get(key1, key2, key3); - var xref = this.xref; - if (!isArray(value) || !xref) { - return value; - } - value = value.slice(); // Ensure that we don't modify the Dict data. - for (var i = 0, ii = value.length; i < ii; i++) { - if (!isRef(value[i])) { - continue; - } - value[i] = xref.fetch(value[i]); - } - return value; - }, - - // no dereferencing - getRaw: function Dict_getRaw(key) { - return this.map[key]; - }, - - // creates new map and dereferences all Refs - getAll: function Dict_getAll() { - var all = Object.create(null); - var queue = null; - var key, obj; - for (key in this.map) { - obj = this.get(key); - if (obj instanceof Dict) { - if (isRecursionAllowedFor(obj)) { - (queue || (queue = [])).push({target: all, key: key, obj: obj}); - } else { - all[key] = this.getRaw(key); - } - } else { - all[key] = obj; - } - } - if (!queue) { - return all; - } - - // trying to take cyclic references into the account - var processed = Object.create(null); - while (queue.length > 0) { - var item = queue.shift(); - var itemObj = item.obj; - var objId = itemObj.objId; - if (objId && objId in processed) { - item.target[item.key] = processed[objId]; - continue; - } - var dereferenced = Object.create(null); - for (key in itemObj.map) { - obj = itemObj.get(key); - if (obj instanceof Dict) { - if (isRecursionAllowedFor(obj)) { - queue.push({target: dereferenced, key: key, obj: obj}); - } else { - dereferenced[key] = itemObj.getRaw(key); - } - } else { - dereferenced[key] = obj; - } - } - if (objId) { - processed[objId] = dereferenced; - } - item.target[item.key] = dereferenced; - } - return all; - }, - - getKeys: function Dict_getKeys() { - return Object.keys(this.map); - }, - - set: function Dict_set(key, value) { - this.map[key] = value; - }, - - has: function Dict_has(key) { - return key in this.map; - }, - - forEach: function Dict_forEach(callback) { - for (var key in this.map) { - callback(key, this.get(key)); - } - } - }; - - Dict.empty = new Dict(null); - - Dict.merge = function Dict_merge(xref, dictArray) { - var mergedDict = new Dict(xref); - - for (var i = 0, ii = dictArray.length; i < ii; i++) { - var dict = dictArray[i]; - if (!isDict(dict)) { - continue; - } - for (var keyName in dict.map) { - if (mergedDict.map[keyName]) { - continue; - } - mergedDict.map[keyName] = dict.map[keyName]; - } - } - return mergedDict; - }; - - return Dict; -})(); - -var Ref = (function RefClosure() { - function Ref(num, gen) { - this.num = num; - this.gen = gen; - } - - Ref.prototype = { - toString: function Ref_toString() { - // This function is hot, so we make the string as compact as possible. - // |this.gen| is almost always zero, so we treat that case specially. - var str = this.num + 'R'; - if (this.gen !== 0) { - str += this.gen; - } - return str; - } - }; - - return Ref; -})(); - -// The reference is identified by number and generation. -// This structure stores only one instance of the reference. -var RefSet = (function RefSetClosure() { - function RefSet() { - this.dict = {}; - } - - RefSet.prototype = { - has: function RefSet_has(ref) { - return ref.toString() in this.dict; - }, - - put: function RefSet_put(ref) { - this.dict[ref.toString()] = true; - }, - - remove: function RefSet_remove(ref) { - delete this.dict[ref.toString()]; - } - }; - - return RefSet; -})(); - -var RefSetCache = (function RefSetCacheClosure() { - function RefSetCache() { - this.dict = Object.create(null); - } - - RefSetCache.prototype = { - get: function RefSetCache_get(ref) { - return this.dict[ref.toString()]; - }, - - has: function RefSetCache_has(ref) { - return ref.toString() in this.dict; - }, - - put: function RefSetCache_put(ref, obj) { - this.dict[ref.toString()] = obj; - }, - - putAlias: function RefSetCache_putAlias(ref, aliasRef) { - this.dict[ref.toString()] = this.get(aliasRef); - }, - - forEach: function RefSetCache_forEach(fn, thisArg) { - for (var i in this.dict) { - fn.call(thisArg, this.dict[i]); - } - }, - - clear: function RefSetCache_clear() { - this.dict = Object.create(null); - } - }; - - return RefSetCache; -})(); - -var Catalog = (function CatalogClosure() { - function Catalog(pdfManager, xref) { - this.pdfManager = pdfManager; - this.xref = xref; - this.catDict = xref.getCatalogObj(); - this.fontCache = new RefSetCache(); - assert(isDict(this.catDict), - 'catalog object is not a dictionary'); - - this.pagePromises = []; - } - - Catalog.prototype = { - get metadata() { - var streamRef = this.catDict.getRaw('Metadata'); - if (!isRef(streamRef)) { - return shadow(this, 'metadata', null); - } - - var encryptMetadata = (!this.xref.encrypt ? false : - this.xref.encrypt.encryptMetadata); - - var stream = this.xref.fetch(streamRef, !encryptMetadata); - var metadata; - if (stream && isDict(stream.dict)) { - var type = stream.dict.get('Type'); - var subtype = stream.dict.get('Subtype'); - - if (isName(type) && isName(subtype) && - type.name === 'Metadata' && subtype.name === 'XML') { - // XXX: This should examine the charset the XML document defines, - // however since there are currently no real means to decode - // arbitrary charsets, let's just hope that the author of the PDF - // was reasonable enough to stick with the XML default charset, - // which is UTF-8. - try { - metadata = stringToUTF8String(bytesToString(stream.getBytes())); - } catch (e) { - info('Skipping invalid metadata.'); - } - } - } - - return shadow(this, 'metadata', metadata); - }, - get toplevelPagesDict() { - var pagesObj = this.catDict.get('Pages'); - assert(isDict(pagesObj), 'invalid top-level pages dictionary'); - // shadow the prototype getter - return shadow(this, 'toplevelPagesDict', pagesObj); - }, - get documentOutline() { - var obj = null; - try { - obj = this.readDocumentOutline(); - } catch (ex) { - if (ex instanceof MissingDataException) { - throw ex; - } - warn('Unable to read document outline'); - } - return shadow(this, 'documentOutline', obj); - }, - readDocumentOutline: function Catalog_readDocumentOutline() { - var xref = this.xref; - var obj = this.catDict.get('Outlines'); - var root = { items: [] }; - if (isDict(obj)) { - obj = obj.getRaw('First'); - var processed = new RefSet(); - if (isRef(obj)) { - var queue = [{obj: obj, parent: root}]; - // to avoid recursion keeping track of the items - // in the processed dictionary - processed.put(obj); - while (queue.length > 0) { - var i = queue.shift(); - var outlineDict = xref.fetchIfRef(i.obj); - if (outlineDict === null) { - continue; - } - if (!outlineDict.has('Title')) { - error('Invalid outline item'); - } - var dest = outlineDict.get('A'); - if (dest) { - dest = dest.get('D'); - } else if (outlineDict.has('Dest')) { - dest = outlineDict.getRaw('Dest'); - if (isName(dest)) { - dest = dest.name; - } - } - var title = outlineDict.get('Title'); - var outlineItem = { - dest: dest, - title: stringToPDFString(title), - color: outlineDict.get('C') || [0, 0, 0], - count: outlineDict.get('Count'), - bold: !!(outlineDict.get('F') & 2), - italic: !!(outlineDict.get('F') & 1), - items: [] - }; - i.parent.items.push(outlineItem); - obj = outlineDict.getRaw('First'); - if (isRef(obj) && !processed.has(obj)) { - queue.push({obj: obj, parent: outlineItem}); - processed.put(obj); - } - obj = outlineDict.getRaw('Next'); - if (isRef(obj) && !processed.has(obj)) { - queue.push({obj: obj, parent: i.parent}); - processed.put(obj); - } - } - } - } - return (root.items.length > 0 ? root.items : null); - }, - get numPages() { - var obj = this.toplevelPagesDict.get('Count'); - assert( - isInt(obj), - 'page count in top level pages object is not an integer' - ); - // shadow the prototype getter - return shadow(this, 'num', obj); - }, - get destinations() { - function fetchDestination(dest) { - return isDict(dest) ? dest.get('D') : dest; - } - - var xref = this.xref; - var dests = {}, nameTreeRef, nameDictionaryRef; - var obj = this.catDict.get('Names'); - if (obj && obj.has('Dests')) { - nameTreeRef = obj.getRaw('Dests'); - } else if (this.catDict.has('Dests')) { - nameDictionaryRef = this.catDict.get('Dests'); - } - - if (nameDictionaryRef) { - // reading simple destination dictionary - obj = nameDictionaryRef; - obj.forEach(function catalogForEach(key, value) { - if (!value) { - return; - } - dests[key] = fetchDestination(value); - }); - } - if (nameTreeRef) { - var nameTree = new NameTree(nameTreeRef, xref); - var names = nameTree.getAll(); - for (var name in names) { - if (!names.hasOwnProperty(name)) { - continue; - } - dests[name] = fetchDestination(names[name]); - } - } - return shadow(this, 'destinations', dests); - }, - getDestination: function Catalog_getDestination(destinationId) { - function fetchDestination(dest) { - return isDict(dest) ? dest.get('D') : dest; - } - - var xref = this.xref; - var dest = null, nameTreeRef, nameDictionaryRef; - var obj = this.catDict.get('Names'); - if (obj && obj.has('Dests')) { - nameTreeRef = obj.getRaw('Dests'); - } else if (this.catDict.has('Dests')) { - nameDictionaryRef = this.catDict.get('Dests'); - } - - if (nameDictionaryRef) { // Simple destination dictionary. - var value = nameDictionaryRef.get(destinationId); - if (value) { - dest = fetchDestination(value); - } - } - if (nameTreeRef) { - var nameTree = new NameTree(nameTreeRef, xref); - dest = fetchDestination(nameTree.get(destinationId)); - } - return dest; - }, - get attachments() { - var xref = this.xref; - var attachments = null, nameTreeRef; - var obj = this.catDict.get('Names'); - if (obj) { - nameTreeRef = obj.getRaw('EmbeddedFiles'); - } - - if (nameTreeRef) { - var nameTree = new NameTree(nameTreeRef, xref); - var names = nameTree.getAll(); - for (var name in names) { - if (!names.hasOwnProperty(name)) { - continue; - } - var fs = new FileSpec(names[name], xref); - if (!attachments) { - attachments = {}; - } - attachments[stringToPDFString(name)] = fs.serializable; - } - } - return shadow(this, 'attachments', attachments); - }, - get javaScript() { - var xref = this.xref; - var obj = this.catDict.get('Names'); - - var javaScript = []; - function appendIfJavaScriptDict(jsDict) { - var type = jsDict.get('S'); - if (!isName(type) || type.name !== 'JavaScript') { - return; - } - var js = jsDict.get('JS'); - if (isStream(js)) { - js = bytesToString(js.getBytes()); - } else if (!isString(js)) { - return; - } - javaScript.push(stringToPDFString(js)); - } - if (obj && obj.has('JavaScript')) { - var nameTree = new NameTree(obj.getRaw('JavaScript'), xref); - var names = nameTree.getAll(); - for (var name in names) { - if (!names.hasOwnProperty(name)) { - continue; - } - // We don't really use the JavaScript right now. This code is - // defensive so we don't cause errors on document load. - var jsDict = names[name]; - if (isDict(jsDict)) { - appendIfJavaScriptDict(jsDict); - } - } - } - - // Append OpenAction actions to javaScript array - var openactionDict = this.catDict.get('OpenAction'); - if (isDict(openactionDict, 'Action')) { - var actionType = openactionDict.get('S'); - if (isName(actionType) && actionType.name === 'Named') { - // The named Print action is not a part of the PDF 1.7 specification, - // but is supported by many PDF readers/writers (including Adobe's). - var action = openactionDict.get('N'); - if (isName(action) && action.name === 'Print') { - javaScript.push('print({});'); - } - } else { - appendIfJavaScriptDict(openactionDict); - } - } - - return shadow(this, 'javaScript', javaScript); - }, - - cleanup: function Catalog_cleanup() { - var promises = []; - this.fontCache.forEach(function (promise) { - promises.push(promise); - }); - return Promise.all(promises).then(function (translatedFonts) { - for (var i = 0, ii = translatedFonts.length; i < ii; i++) { - var font = translatedFonts[i].dict; - delete font.translated; - } - this.fontCache.clear(); - }.bind(this)); - }, - - getPage: function Catalog_getPage(pageIndex) { - if (!(pageIndex in this.pagePromises)) { - this.pagePromises[pageIndex] = this.getPageDict(pageIndex).then( - function (a) { - var dict = a[0]; - var ref = a[1]; - return new Page(this.pdfManager, this.xref, pageIndex, dict, ref, - this.fontCache); - }.bind(this) - ); - } - return this.pagePromises[pageIndex]; - }, - - getPageDict: function Catalog_getPageDict(pageIndex) { - var capability = createPromiseCapability(); - var nodesToVisit = [this.catDict.getRaw('Pages')]; - var currentPageIndex = 0; - var xref = this.xref; - var checkAllKids = false; - - function next() { - while (nodesToVisit.length) { - var currentNode = nodesToVisit.pop(); - - if (isRef(currentNode)) { - xref.fetchAsync(currentNode).then(function (obj) { - if (isDict(obj, 'Page') || (isDict(obj) && !obj.has('Kids'))) { - if (pageIndex === currentPageIndex) { - capability.resolve([obj, currentNode]); - } else { - currentPageIndex++; - next(); - } - return; - } - nodesToVisit.push(obj); - next(); - }, capability.reject); - return; - } - - // Must be a child page dictionary. - assert( - isDict(currentNode), - 'page dictionary kid reference points to wrong type of object' - ); - var count = currentNode.get('Count'); - // If the current node doesn't have any children, avoid getting stuck - // in an empty node further down in the tree (see issue5644.pdf). - if (count === 0) { - checkAllKids = true; - } - // Skip nodes where the page can't be. - if (currentPageIndex + count <= pageIndex) { - currentPageIndex += count; - continue; - } - - var kids = currentNode.get('Kids'); - assert(isArray(kids), 'page dictionary kids object is not an array'); - if (!checkAllKids && count === kids.length) { - // Nodes that don't have the page have been skipped and this is the - // bottom of the tree which means the page requested must be a - // descendant of this pages node. Ideally we would just resolve the - // promise with the page ref here, but there is the case where more - // pages nodes could link to single a page (see issue 3666 pdf). To - // handle this push it back on the queue so if it is a pages node it - // will be descended into. - nodesToVisit = [kids[pageIndex - currentPageIndex]]; - currentPageIndex = pageIndex; - continue; - } else { - for (var last = kids.length - 1; last >= 0; last--) { - nodesToVisit.push(kids[last]); - } - } - } - capability.reject('Page index ' + pageIndex + ' not found.'); - } - next(); - return capability.promise; - }, - - getPageIndex: function Catalog_getPageIndex(ref) { - // The page tree nodes have the count of all the leaves below them. To get - // how many pages are before we just have to walk up the tree and keep - // adding the count of siblings to the left of the node. - var xref = this.xref; - function pagesBeforeRef(kidRef) { - var total = 0; - var parentRef; - return xref.fetchAsync(kidRef).then(function (node) { - if (!node) { - return null; - } - parentRef = node.getRaw('Parent'); - return node.getAsync('Parent'); - }).then(function (parent) { - if (!parent) { - return null; - } - return parent.getAsync('Kids'); - }).then(function (kids) { - if (!kids) { - return null; - } - var kidPromises = []; - var found = false; - for (var i = 0; i < kids.length; i++) { - var kid = kids[i]; - assert(isRef(kid), 'kids must be a ref'); - if (kid.num === kidRef.num) { - found = true; - break; - } - kidPromises.push(xref.fetchAsync(kid).then(function (kid) { - if (kid.has('Count')) { - var count = kid.get('Count'); - total += count; - } else { // page leaf node - total++; - } - })); - } - if (!found) { - error('kid ref not found in parents kids'); - } - return Promise.all(kidPromises).then(function () { - return [total, parentRef]; - }); - }); - } - - var total = 0; - function next(ref) { - return pagesBeforeRef(ref).then(function (args) { - if (!args) { - return total; - } - var count = args[0]; - var parentRef = args[1]; - total += count; - return next(parentRef); - }); - } - - return next(ref); - } - }; - - return Catalog; -})(); - -var XRef = (function XRefClosure() { - function XRef(stream, password) { - this.stream = stream; - this.entries = []; - this.xrefstms = {}; - // prepare the XRef cache - this.cache = []; - this.password = password; - this.stats = { - streamTypes: [], - fontTypes: [] - }; - } - - XRef.prototype = { - setStartXRef: function XRef_setStartXRef(startXRef) { - // Store the starting positions of xref tables as we process them - // so we can recover from missing data errors - this.startXRefQueue = [startXRef]; - }, - - parse: function XRef_parse(recoveryMode) { - var trailerDict; - if (!recoveryMode) { - trailerDict = this.readXRef(); - } else { - warn('Indexing all PDF objects'); - trailerDict = this.indexObjects(); - } - trailerDict.assignXref(this); - this.trailer = trailerDict; - var encrypt = trailerDict.get('Encrypt'); - if (encrypt) { - var ids = trailerDict.get('ID'); - var fileId = (ids && ids.length) ? ids[0] : ''; - this.encrypt = new CipherTransformFactory(encrypt, fileId, - this.password); - } - - // get the root dictionary (catalog) object - if (!(this.root = trailerDict.get('Root'))) { - error('Invalid root reference'); - } - }, - - processXRefTable: function XRef_processXRefTable(parser) { - if (!('tableState' in this)) { - // Stores state of the table as we process it so we can resume - // from middle of table in case of missing data error - this.tableState = { - entryNum: 0, - streamPos: parser.lexer.stream.pos, - parserBuf1: parser.buf1, - parserBuf2: parser.buf2 - }; - } - - var obj = this.readXRefTable(parser); - - // Sanity check - if (!isCmd(obj, 'trailer')) { - error('Invalid XRef table: could not find trailer dictionary'); - } - // Read trailer dictionary, e.g. - // trailer - // << /Size 22 - // /Root 20R - // /Info 10R - // /ID [ <81b14aafa313db63dbd6f981e49f94f4> ] - // >> - // The parser goes through the entire stream << ... >> and provides - // a getter interface for the key-value table - var dict = parser.getObj(); - - // The pdflib PDF generator can generate a nested trailer dictionary - if (!isDict(dict) && dict.dict) { - dict = dict.dict; - } - if (!isDict(dict)) { - error('Invalid XRef table: could not parse trailer dictionary'); - } - delete this.tableState; - - return dict; - }, - - readXRefTable: function XRef_readXRefTable(parser) { - // Example of cross-reference table: - // xref - // 0 1 <-- subsection header (first obj #, obj count) - // 0000000000 65535 f <-- actual object (offset, generation #, f/n) - // 23 2 <-- subsection header ... and so on ... - // 0000025518 00002 n - // 0000025635 00000 n - // trailer - // ... - - var stream = parser.lexer.stream; - var tableState = this.tableState; - stream.pos = tableState.streamPos; - parser.buf1 = tableState.parserBuf1; - parser.buf2 = tableState.parserBuf2; - - // Outer loop is over subsection headers - var obj; - - while (true) { - if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) { - if (isCmd(obj = parser.getObj(), 'trailer')) { - break; - } - tableState.firstEntryNum = obj; - tableState.entryCount = parser.getObj(); - } - - var first = tableState.firstEntryNum; - var count = tableState.entryCount; - if (!isInt(first) || !isInt(count)) { - error('Invalid XRef table: wrong types in subsection header'); - } - // Inner loop is over objects themselves - for (var i = tableState.entryNum; i < count; i++) { - tableState.streamPos = stream.pos; - tableState.entryNum = i; - tableState.parserBuf1 = parser.buf1; - tableState.parserBuf2 = parser.buf2; - - var entry = {}; - entry.offset = parser.getObj(); - entry.gen = parser.getObj(); - var type = parser.getObj(); - - if (isCmd(type, 'f')) { - entry.free = true; - } else if (isCmd(type, 'n')) { - entry.uncompressed = true; - } - - // Validate entry obj - if (!isInt(entry.offset) || !isInt(entry.gen) || - !(entry.free || entry.uncompressed)) { - error('Invalid entry in XRef subsection: ' + first + ', ' + count); - } - - if (!this.entries[i + first]) { - this.entries[i + first] = entry; - } - } - - tableState.entryNum = 0; - tableState.streamPos = stream.pos; - tableState.parserBuf1 = parser.buf1; - tableState.parserBuf2 = parser.buf2; - delete tableState.firstEntryNum; - delete tableState.entryCount; - } - - // Per issue 3248: hp scanners generate bad XRef - if (first === 1 && this.entries[1] && this.entries[1].free) { - // shifting the entries - this.entries.shift(); - } - - // Sanity check: as per spec, first object must be free - if (this.entries[0] && !this.entries[0].free) { - error('Invalid XRef table: unexpected first object'); - } - return obj; - }, - - processXRefStream: function XRef_processXRefStream(stream) { - if (!('streamState' in this)) { - // Stores state of the stream as we process it so we can resume - // from middle of stream in case of missing data error - var streamParameters = stream.dict; - var byteWidths = streamParameters.get('W'); - var range = streamParameters.get('Index'); - if (!range) { - range = [0, streamParameters.get('Size')]; - } - - this.streamState = { - entryRanges: range, - byteWidths: byteWidths, - entryNum: 0, - streamPos: stream.pos - }; - } - this.readXRefStream(stream); - delete this.streamState; - - return stream.dict; - }, - - readXRefStream: function XRef_readXRefStream(stream) { - var i, j; - var streamState = this.streamState; - stream.pos = streamState.streamPos; - - var byteWidths = streamState.byteWidths; - var typeFieldWidth = byteWidths[0]; - var offsetFieldWidth = byteWidths[1]; - var generationFieldWidth = byteWidths[2]; - - var entryRanges = streamState.entryRanges; - while (entryRanges.length > 0) { - var first = entryRanges[0]; - var n = entryRanges[1]; - - if (!isInt(first) || !isInt(n)) { - error('Invalid XRef range fields: ' + first + ', ' + n); - } - if (!isInt(typeFieldWidth) || !isInt(offsetFieldWidth) || - !isInt(generationFieldWidth)) { - error('Invalid XRef entry fields length: ' + first + ', ' + n); - } - for (i = streamState.entryNum; i < n; ++i) { - streamState.entryNum = i; - streamState.streamPos = stream.pos; - - var type = 0, offset = 0, generation = 0; - for (j = 0; j < typeFieldWidth; ++j) { - type = (type << 8) | stream.getByte(); - } - // if type field is absent, its default value is 1 - if (typeFieldWidth === 0) { - type = 1; - } - for (j = 0; j < offsetFieldWidth; ++j) { - offset = (offset << 8) | stream.getByte(); - } - for (j = 0; j < generationFieldWidth; ++j) { - generation = (generation << 8) | stream.getByte(); - } - var entry = {}; - entry.offset = offset; - entry.gen = generation; - switch (type) { - case 0: - entry.free = true; - break; - case 1: - entry.uncompressed = true; - break; - case 2: - break; - default: - error('Invalid XRef entry type: ' + type); - } - if (!this.entries[first + i]) { - this.entries[first + i] = entry; - } - } - - streamState.entryNum = 0; - streamState.streamPos = stream.pos; - entryRanges.splice(0, 2); - } - }, - - indexObjects: function XRef_indexObjects() { - // Simple scan through the PDF content to find objects, - // trailers and XRef streams. - var TAB = 0x9, LF = 0xA, CR = 0xD, SPACE = 0x20; - var PERCENT = 0x25, LT = 0x3C; - - function readToken(data, offset) { - var token = '', ch = data[offset]; - while (ch !== LF && ch !== CR && ch !== LT) { - if (++offset >= data.length) { - break; - } - token += String.fromCharCode(ch); - ch = data[offset]; - } - return token; - } - function skipUntil(data, offset, what) { - var length = what.length, dataLength = data.length; - var skipped = 0; - // finding byte sequence - while (offset < dataLength) { - var i = 0; - while (i < length && data[offset + i] === what[i]) { - ++i; - } - if (i >= length) { - break; // sequence found - } - offset++; - skipped++; - } - return skipped; - } - var objRegExp = /^(\d+)\s+(\d+)\s+obj\b/; - var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]); - var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, - 101, 102]); - var endobjBytes = new Uint8Array([101, 110, 100, 111, 98, 106]); - var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]); - - // Clear out any existing entries, since they may be bogus. - this.entries.length = 0; - - var stream = this.stream; - stream.pos = 0; - var buffer = stream.getBytes(); - var position = stream.start, length = buffer.length; - var trailers = [], xrefStms = []; - while (position < length) { - var ch = buffer[position]; - if (ch === TAB || ch === LF || ch === CR || ch === SPACE) { - ++position; - continue; - } - if (ch === PERCENT) { // %-comment - do { - ++position; - if (position >= length) { - break; - } - ch = buffer[position]; - } while (ch !== LF && ch !== CR); - continue; - } - var token = readToken(buffer, position); - var m; - if (token.indexOf('xref') === 0 && - (token.length === 4 || /\s/.test(token[4]))) { - position += skipUntil(buffer, position, trailerBytes); - trailers.push(position); - position += skipUntil(buffer, position, startxrefBytes); - } else if ((m = objRegExp.exec(token))) { - if (typeof this.entries[m[1]] === 'undefined') { - this.entries[m[1]] = { - offset: position - stream.start, - gen: m[2] | 0, - uncompressed: true - }; - } - var contentLength = skipUntil(buffer, position, endobjBytes) + 7; - var content = buffer.subarray(position, position + contentLength); - - // checking XRef stream suspect - // (it shall have '/XRef' and next char is not a letter) - var xrefTagOffset = skipUntil(content, 0, xrefBytes); - if (xrefTagOffset < contentLength && - content[xrefTagOffset + 5] < 64) { - xrefStms.push(position - stream.start); - this.xrefstms[position - stream.start] = 1; // Avoid recursion - } - - position += contentLength; - } else if (token.indexOf('trailer') === 0 && - (token.length === 7 || /\s/.test(token[7]))) { - trailers.push(position); - position += skipUntil(buffer, position, startxrefBytes); - } else { - position += token.length + 1; - } - } - // reading XRef streams - var i, ii; - for (i = 0, ii = xrefStms.length; i < ii; ++i) { - this.startXRefQueue.push(xrefStms[i]); - this.readXRef(/* recoveryMode */ true); - } - // finding main trailer - var dict; - for (i = 0, ii = trailers.length; i < ii; ++i) { - stream.pos = trailers[i]; - var parser = new Parser(new Lexer(stream), true, this); - var obj = parser.getObj(); - if (!isCmd(obj, 'trailer')) { - continue; - } - // read the trailer dictionary - if (!isDict(dict = parser.getObj())) { - continue; - } - // taking the first one with 'ID' - if (dict.has('ID')) { - return dict; - } - } - // no tailer with 'ID', taking last one (if exists) - if (dict) { - return dict; - } - // nothing helps - // calling error() would reject worker with an UnknownErrorException. - throw new InvalidPDFException('Invalid PDF structure'); - }, - - readXRef: function XRef_readXRef(recoveryMode) { - var stream = this.stream; - - try { - while (this.startXRefQueue.length) { - var startXRef = this.startXRefQueue[0]; - - stream.pos = startXRef + stream.start; - - var parser = new Parser(new Lexer(stream), true, this); - var obj = parser.getObj(); - var dict; - - // Get dictionary - if (isCmd(obj, 'xref')) { - // Parse end-of-file XRef - dict = this.processXRefTable(parser); - if (!this.topDict) { - this.topDict = dict; - } - - // Recursively get other XRefs 'XRefStm', if any - obj = dict.get('XRefStm'); - if (isInt(obj)) { - var pos = obj; - // ignore previously loaded xref streams - // (possible infinite recursion) - if (!(pos in this.xrefstms)) { - this.xrefstms[pos] = 1; - this.startXRefQueue.push(pos); - } - } - } else if (isInt(obj)) { - // Parse in-stream XRef - if (!isInt(parser.getObj()) || - !isCmd(parser.getObj(), 'obj') || - !isStream(obj = parser.getObj())) { - error('Invalid XRef stream'); - } - dict = this.processXRefStream(obj); - if (!this.topDict) { - this.topDict = dict; - } - if (!dict) { - error('Failed to read XRef stream'); - } - } else { - error('Invalid XRef stream header'); - } - - // Recursively get previous dictionary, if any - obj = dict.get('Prev'); - if (isInt(obj)) { - this.startXRefQueue.push(obj); - } else if (isRef(obj)) { - // The spec says Prev must not be a reference, i.e. "/Prev NNN" - // This is a fallback for non-compliant PDFs, i.e. "/Prev NNN 0 R" - this.startXRefQueue.push(obj.num); - } - - this.startXRefQueue.shift(); - } - - return this.topDict; - } catch (e) { - if (e instanceof MissingDataException) { - throw e; - } - info('(while reading XRef): ' + e); - } - - if (recoveryMode) { - return; - } - throw new XRefParseException(); - }, - - getEntry: function XRef_getEntry(i) { - var xrefEntry = this.entries[i]; - if (xrefEntry && !xrefEntry.free && xrefEntry.offset) { - return xrefEntry; - } - return null; - }, - - fetchIfRef: function XRef_fetchIfRef(obj) { - if (!isRef(obj)) { - return obj; - } - return this.fetch(obj); - }, - - fetch: function XRef_fetch(ref, suppressEncryption) { - assert(isRef(ref), 'ref object is not a reference'); - var num = ref.num; - if (num in this.cache) { - var cacheEntry = this.cache[num]; - return cacheEntry; - } - - var xrefEntry = this.getEntry(num); - - // the referenced entry can be free - if (xrefEntry === null) { - return (this.cache[num] = null); - } - - if (xrefEntry.uncompressed) { - xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption); - } else { - xrefEntry = this.fetchCompressed(xrefEntry, suppressEncryption); - } - if (isDict(xrefEntry)){ - xrefEntry.objId = ref.toString(); - } else if (isStream(xrefEntry)) { - xrefEntry.dict.objId = ref.toString(); - } - return xrefEntry; - }, - - fetchUncompressed: function XRef_fetchUncompressed(ref, xrefEntry, - suppressEncryption) { - var gen = ref.gen; - var num = ref.num; - if (xrefEntry.gen !== gen) { - error('inconsistent generation in XRef'); - } - var stream = this.stream.makeSubStream(xrefEntry.offset + - this.stream.start); - var parser = new Parser(new Lexer(stream), true, this); - var obj1 = parser.getObj(); - var obj2 = parser.getObj(); - var obj3 = parser.getObj(); - if (!isInt(obj1) || parseInt(obj1, 10) !== num || - !isInt(obj2) || parseInt(obj2, 10) !== gen || - !isCmd(obj3)) { - error('bad XRef entry'); - } - if (!isCmd(obj3, 'obj')) { - // some bad PDFs use "obj1234" and really mean 1234 - if (obj3.cmd.indexOf('obj') === 0) { - num = parseInt(obj3.cmd.substring(3), 10); - if (!isNaN(num)) { - return num; - } - } - error('bad XRef entry'); - } - if (this.encrypt && !suppressEncryption) { - xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen)); - } else { - xrefEntry = parser.getObj(); - } - if (!isStream(xrefEntry)) { - this.cache[num] = xrefEntry; - } - return xrefEntry; - }, - - fetchCompressed: function XRef_fetchCompressed(xrefEntry, - suppressEncryption) { - var tableOffset = xrefEntry.offset; - var stream = this.fetch(new Ref(tableOffset, 0)); - if (!isStream(stream)) { - error('bad ObjStm stream'); - } - var first = stream.dict.get('First'); - var n = stream.dict.get('N'); - if (!isInt(first) || !isInt(n)) { - error('invalid first and n parameters for ObjStm stream'); - } - var parser = new Parser(new Lexer(stream), false, this); - parser.allowStreams = true; - var i, entries = [], num, nums = []; - // read the object numbers to populate cache - for (i = 0; i < n; ++i) { - num = parser.getObj(); - if (!isInt(num)) { - error('invalid object number in the ObjStm stream: ' + num); - } - nums.push(num); - var offset = parser.getObj(); - if (!isInt(offset)) { - error('invalid object offset in the ObjStm stream: ' + offset); - } - } - // read stream objects for cache - for (i = 0; i < n; ++i) { - entries.push(parser.getObj()); - num = nums[i]; - var entry = this.entries[num]; - if (entry && entry.offset === tableOffset && entry.gen === i) { - this.cache[num] = entries[i]; - } - } - xrefEntry = entries[xrefEntry.gen]; - if (xrefEntry === undefined) { - error('bad XRef entry for compressed object'); - } - return xrefEntry; - }, - - fetchIfRefAsync: function XRef_fetchIfRefAsync(obj) { - if (!isRef(obj)) { - return Promise.resolve(obj); - } - return this.fetchAsync(obj); - }, - - fetchAsync: function XRef_fetchAsync(ref, suppressEncryption) { - var streamManager = this.stream.manager; - var xref = this; - return new Promise(function tryFetch(resolve, reject) { - try { - resolve(xref.fetch(ref, suppressEncryption)); - } catch (e) { - if (e instanceof MissingDataException) { - streamManager.requestRange(e.begin, e.end).then(function () { - tryFetch(resolve, reject); - }, reject); - return; - } - reject(e); - } - }); - }, - - getCatalogObj: function XRef_getCatalogObj() { - return this.root; - } - }; - - return XRef; -})(); - -/** - * A NameTree is like a Dict but has some advantageous properties, see the - * spec (7.9.6) for more details. - * TODO: implement all the Dict functions and make this more efficent. - */ -var NameTree = (function NameTreeClosure() { - function NameTree(root, xref) { - this.root = root; - this.xref = xref; - } - - NameTree.prototype = { - getAll: function NameTree_getAll() { - var dict = {}; - if (!this.root) { - return dict; - } - var xref = this.xref; - // reading name tree - var processed = new RefSet(); - processed.put(this.root); - var queue = [this.root]; - while (queue.length > 0) { - var i, n; - var obj = xref.fetchIfRef(queue.shift()); - if (!isDict(obj)) { - continue; - } - if (obj.has('Kids')) { - var kids = obj.get('Kids'); - for (i = 0, n = kids.length; i < n; i++) { - var kid = kids[i]; - if (processed.has(kid)) { - error('invalid destinations'); - } - queue.push(kid); - processed.put(kid); - } - continue; - } - var names = obj.get('Names'); - if (names) { - for (i = 0, n = names.length; i < n; i += 2) { - dict[xref.fetchIfRef(names[i])] = xref.fetchIfRef(names[i + 1]); - } - } - } - return dict; - }, - - get: function NameTree_get(destinationId) { - if (!this.root) { - return null; - } - - var xref = this.xref; - var kidsOrNames = xref.fetchIfRef(this.root); - var loopCount = 0; - var MAX_NAMES_LEVELS = 10; - var l, r, m; - - // Perform a binary search to quickly find the entry that - // contains the named destination we are looking for. - while (kidsOrNames.has('Kids')) { - loopCount++; - if (loopCount > MAX_NAMES_LEVELS) { - warn('Search depth limit for named destionations has been reached.'); - return null; - } - - var kids = kidsOrNames.get('Kids'); - if (!isArray(kids)) { - return null; - } - - l = 0; - r = kids.length - 1; - while (l <= r) { - m = (l + r) >> 1; - var kid = xref.fetchIfRef(kids[m]); - var limits = kid.get('Limits'); - - if (destinationId < xref.fetchIfRef(limits[0])) { - r = m - 1; - } else if (destinationId > xref.fetchIfRef(limits[1])) { - l = m + 1; - } else { - kidsOrNames = xref.fetchIfRef(kids[m]); - break; - } - } - if (l > r) { - return null; - } - } - - // If we get here, then we have found the right entry. Now - // go through the named destinations in the Named dictionary - // until we find the exact destination we're looking for. - var names = kidsOrNames.get('Names'); - if (isArray(names)) { - // Perform a binary search to reduce the lookup time. - l = 0; - r = names.length - 2; - while (l <= r) { - // Check only even indices (0, 2, 4, ...) because the - // odd indices contain the actual D array. - m = (l + r) & ~1; - if (destinationId < xref.fetchIfRef(names[m])) { - r = m - 2; - } else if (destinationId > xref.fetchIfRef(names[m])) { - l = m + 2; - } else { - return xref.fetchIfRef(names[m + 1]); - } - } - } - return null; - } - }; - return NameTree; -})(); - -/** - * "A PDF file can refer to the contents of another file by using a File - * Specification (PDF 1.1)", see the spec (7.11) for more details. - * NOTE: Only embedded files are supported (as part of the attachments support) - * TODO: support the 'URL' file system (with caching if !/V), portable - * collections attributes and related files (/RF) - */ -var FileSpec = (function FileSpecClosure() { - function FileSpec(root, xref) { - if (!root || !isDict(root)) { - return; - } - this.xref = xref; - this.root = root; - if (root.has('FS')) { - this.fs = root.get('FS'); - } - this.description = root.has('Desc') ? - stringToPDFString(root.get('Desc')) : - ''; - if (root.has('RF')) { - warn('Related file specifications are not supported'); - } - this.contentAvailable = true; - if (!root.has('EF')) { - this.contentAvailable = false; - warn('Non-embedded file specifications are not supported'); - } - } - - function pickPlatformItem(dict) { - // Look for the filename in this order: - // UF, F, Unix, Mac, DOS - if (dict.has('UF')) { - return dict.get('UF'); - } else if (dict.has('F')) { - return dict.get('F'); - } else if (dict.has('Unix')) { - return dict.get('Unix'); - } else if (dict.has('Mac')) { - return dict.get('Mac'); - } else if (dict.has('DOS')) { - return dict.get('DOS'); - } else { - return null; - } - } - - FileSpec.prototype = { - get filename() { - if (!this._filename && this.root) { - var filename = pickPlatformItem(this.root) || 'unnamed'; - this._filename = stringToPDFString(filename). - replace(/\\\\/g, '\\'). - replace(/\\\//g, '/'). - replace(/\\/g, '/'); - } - return this._filename; - }, - get content() { - if (!this.contentAvailable) { - return null; - } - if (!this.contentRef && this.root) { - this.contentRef = pickPlatformItem(this.root.get('EF')); - } - var content = null; - if (this.contentRef) { - var xref = this.xref; - var fileObj = xref.fetchIfRef(this.contentRef); - if (fileObj && isStream(fileObj)) { - content = fileObj.getBytes(); - } else { - warn('Embedded file specification points to non-existing/invalid ' + - 'content'); - } - } else { - warn('Embedded file specification does not have a content'); - } - return content; - }, - get serializable() { - return { - filename: this.filename, - content: this.content - }; - } - }; - return FileSpec; -})(); - -/** - * A helper for loading missing data in object graphs. It traverses the graph - * depth first and queues up any objects that have missing data. Once it has - * has traversed as many objects that are available it attempts to bundle the - * missing data requests and then resume from the nodes that weren't ready. - * - * NOTE: It provides protection from circular references by keeping track of - * of loaded references. However, you must be careful not to load any graphs - * that have references to the catalog or other pages since that will cause the - * entire PDF document object graph to be traversed. - */ -var ObjectLoader = (function() { - function mayHaveChildren(value) { - return isRef(value) || isDict(value) || isArray(value) || isStream(value); - } - - function addChildren(node, nodesToVisit) { - var value; - if (isDict(node) || isStream(node)) { - var map; - if (isDict(node)) { - map = node.map; - } else { - map = node.dict.map; - } - for (var key in map) { - value = map[key]; - if (mayHaveChildren(value)) { - nodesToVisit.push(value); - } - } - } else if (isArray(node)) { - for (var i = 0, ii = node.length; i < ii; i++) { - value = node[i]; - if (mayHaveChildren(value)) { - nodesToVisit.push(value); - } - } - } - } - - function ObjectLoader(obj, keys, xref) { - this.obj = obj; - this.keys = keys; - this.xref = xref; - this.refSet = null; - this.capability = null; - } - - ObjectLoader.prototype = { - load: function ObjectLoader_load() { - var keys = this.keys; - this.capability = createPromiseCapability(); - // Don't walk the graph if all the data is already loaded. - if (!(this.xref.stream instanceof ChunkedStream) || - this.xref.stream.getMissingChunks().length === 0) { - this.capability.resolve(); - return this.capability.promise; - } - - this.refSet = new RefSet(); - // Setup the initial nodes to visit. - var nodesToVisit = []; - for (var i = 0; i < keys.length; i++) { - nodesToVisit.push(this.obj[keys[i]]); - } - - this._walk(nodesToVisit); - return this.capability.promise; - }, - - _walk: function ObjectLoader_walk(nodesToVisit) { - var nodesToRevisit = []; - var pendingRequests = []; - // DFS walk of the object graph. - while (nodesToVisit.length) { - var currentNode = nodesToVisit.pop(); - - // Only references or chunked streams can cause missing data exceptions. - if (isRef(currentNode)) { - // Skip nodes that have already been visited. - if (this.refSet.has(currentNode)) { - continue; - } - try { - var ref = currentNode; - this.refSet.put(ref); - currentNode = this.xref.fetch(currentNode); - } catch (e) { - if (!(e instanceof MissingDataException)) { - throw e; - } - nodesToRevisit.push(currentNode); - pendingRequests.push({ begin: e.begin, end: e.end }); - } - } - if (currentNode && currentNode.getBaseStreams) { - var baseStreams = currentNode.getBaseStreams(); - var foundMissingData = false; - for (var i = 0; i < baseStreams.length; i++) { - var stream = baseStreams[i]; - if (stream.getMissingChunks && stream.getMissingChunks().length) { - foundMissingData = true; - pendingRequests.push({ - begin: stream.start, - end: stream.end - }); - } - } - if (foundMissingData) { - nodesToRevisit.push(currentNode); - } - } - - addChildren(currentNode, nodesToVisit); - } - - if (pendingRequests.length) { - this.xref.stream.manager.requestRanges(pendingRequests).then( - function pendingRequestCallback() { - nodesToVisit = nodesToRevisit; - for (var i = 0; i < nodesToRevisit.length; i++) { - var node = nodesToRevisit[i]; - // Remove any reference nodes from the currrent refset so they - // aren't skipped when we revist them. - if (isRef(node)) { - this.refSet.remove(node); - } - } - this._walk(nodesToVisit); - }.bind(this), this.capability.reject); - return; - } - // Everything is loaded. - this.refSet = null; - this.capability.resolve(); - } - }; - - return ObjectLoader; -})(); - - -var ISOAdobeCharset = [ - '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', - 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', - 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', - 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', - 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', - 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', - 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', - 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', - 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', - 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', - 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', - 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', - 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', - 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', - 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', - 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', - 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', - 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', - 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', - 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', - 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', - 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', - 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', - 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', - 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', - 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', - 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', - 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', - 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', - 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', - 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', - 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', - 'ugrave', 'yacute', 'ydieresis', 'zcaron' -]; - -var ExpertCharset = [ - '.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', - 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', - 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', - 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', - 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', - 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', - 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', - 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', - 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', - 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', - 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', - 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', - 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', - 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', - 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', - 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', - 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', - 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', - 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', - 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', - 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', - 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', - 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', - 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', - 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', - 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', - 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', - 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', - 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', - 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', - 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', - 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', - 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', - 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', - 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', - 'Ydieresissmall' -]; - -var ExpertSubsetCharset = [ - '.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', - 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', - 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', - 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', - 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', - 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', - 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', - 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', - 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', - 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', - 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', - 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', - 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', - 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', - 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', - 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', - 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', - 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', - 'periodinferior', 'commainferior' -]; - - -var DEFAULT_ICON_SIZE = 22; // px - -/** - * @class - * @alias AnnotationFactory - */ -function AnnotationFactory() {} -AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ { - /** - * @param {XRef} xref - * @param {Object} ref - * @returns {Annotation} - */ - create: function AnnotationFactory_create(xref, ref) { - var dict = xref.fetchIfRef(ref); - if (!isDict(dict)) { - return; - } - - // Determine the annotation's subtype. - var subtype = dict.get('Subtype'); - subtype = isName(subtype) ? subtype.name : ''; - - // Return the right annotation object based on the subtype and field type. - var parameters = { - dict: dict, - ref: ref - }; - - switch (subtype) { - case 'Link': - return new LinkAnnotation(parameters); - - case 'Text': - return new TextAnnotation(parameters); - - case 'Widget': - var fieldType = Util.getInheritableProperty(dict, 'FT'); - if (isName(fieldType) && fieldType.name === 'Tx') { - return new TextWidgetAnnotation(parameters); - } - return new WidgetAnnotation(parameters); - - default: - warn('Unimplemented annotation type "' + subtype + '", ' + - 'falling back to base annotation'); - return new Annotation(parameters); - } - } -}; - -var Annotation = (function AnnotationClosure() { - // 12.5.5: Algorithm: Appearance streams - function getTransformMatrix(rect, bbox, matrix) { - var bounds = Util.getAxialAlignedBoundingBox(bbox, matrix); - var minX = bounds[0]; - var minY = bounds[1]; - var maxX = bounds[2]; - var maxY = bounds[3]; - - if (minX === maxX || minY === maxY) { - // From real-life file, bbox was [0, 0, 0, 0]. In this case, - // just apply the transform for rect - return [1, 0, 0, 1, rect[0], rect[1]]; - } - - var xRatio = (rect[2] - rect[0]) / (maxX - minX); - var yRatio = (rect[3] - rect[1]) / (maxY - minY); - return [ - xRatio, - 0, - 0, - yRatio, - rect[0] - minX * xRatio, - rect[1] - minY * yRatio - ]; - } - - function getDefaultAppearance(dict) { - var appearanceState = dict.get('AP'); - if (!isDict(appearanceState)) { - return; - } - - var appearance; - var appearances = appearanceState.get('N'); - if (isDict(appearances)) { - var as = dict.get('AS'); - if (as && appearances.has(as.name)) { - appearance = appearances.get(as.name); - } - } else { - appearance = appearances; - } - return appearance; - } - - function Annotation(params) { - var dict = params.dict; - var data = this.data = {}; - - data.subtype = dict.get('Subtype').name; - data.annotationFlags = dict.get('F'); - - this.setRectangle(dict.get('Rect')); - data.rect = this.rectangle; - - this.setColor(dict.get('C')); - data.color = this.color; - - this.borderStyle = data.borderStyle = new AnnotationBorderStyle(); - this.setBorderStyle(dict); - - this.appearance = getDefaultAppearance(dict); - data.hasAppearance = !!this.appearance; - data.id = params.ref.num; - } - - Annotation.prototype = { - /** - * Set the rectangle. - * - * @public - * @memberof Annotation - * @param {Array} rectangle - The rectangle array with exactly four entries - */ - setRectangle: function Annotation_setRectangle(rectangle) { - if (isArray(rectangle) && rectangle.length === 4) { - this.rectangle = Util.normalizeRect(rectangle); - } else { - this.rectangle = [0, 0, 0, 0]; - } - }, - - /** - * Set the color and take care of color space conversion. - * - * @public - * @memberof Annotation - * @param {Array} color - The color array containing either 0 - * (transparent), 1 (grayscale), 3 (RGB) or - * 4 (CMYK) elements - */ - setColor: function Annotation_setColor(color) { - var rgbColor = new Uint8Array(3); // Black in RGB color space (default) - if (!isArray(color)) { - this.color = rgbColor; - return; - } - - switch (color.length) { - case 0: // Transparent, which we indicate with a null value - this.color = null; - break; - - case 1: // Convert grayscale to RGB - ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0); - this.color = rgbColor; - break; - - case 3: // Convert RGB percentages to RGB - ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0); - this.color = rgbColor; - break; - - case 4: // Convert CMYK to RGB - ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0); - this.color = rgbColor; - break; - - default: - this.color = rgbColor; - break; - } - }, - - /** - * Set the border style (as AnnotationBorderStyle object). - * - * @public - * @memberof Annotation - * @param {Dict} borderStyle - The border style dictionary - */ - setBorderStyle: function Annotation_setBorderStyle(borderStyle) { - if (!isDict(borderStyle)) { - return; - } - if (borderStyle.has('BS')) { - var dict = borderStyle.get('BS'); - var dictType; - - if (!dict.has('Type') || (isName(dictType = dict.get('Type')) && - dictType.name === 'Border')) { - this.borderStyle.setWidth(dict.get('W')); - this.borderStyle.setStyle(dict.get('S')); - this.borderStyle.setDashArray(dict.get('D')); - } - } else if (borderStyle.has('Border')) { - var array = borderStyle.get('Border'); - if (isArray(array) && array.length >= 3) { - this.borderStyle.setHorizontalCornerRadius(array[0]); - this.borderStyle.setVerticalCornerRadius(array[1]); - this.borderStyle.setWidth(array[2]); - - if (array.length === 4) { // Dash array available - this.borderStyle.setDashArray(array[3]); - } - } - } else { - // There are no border entries in the dictionary. According to the - // specification, we should draw a solid border of width 1 in that - // case, but Adobe Reader did not implement that part of the - // specification and instead draws no border at all, so we do the same. - // See also https://github.com/mozilla/pdf.js/issues/6179. - this.borderStyle.setWidth(0); - } - }, - - isInvisible: function Annotation_isInvisible() { - var data = this.data; - return !!(data && - data.annotationFlags && // Default: not invisible - data.annotationFlags & 0x1); // Invisible - }, - - isViewable: function Annotation_isViewable() { - var data = this.data; - return !!(!this.isInvisible() && - data && - (!data.annotationFlags || - !(data.annotationFlags & 0x22)) && // Hidden or NoView - data.rect); // rectangle is necessary - }, - - isPrintable: function Annotation_isPrintable() { - var data = this.data; - return !!(!this.isInvisible() && - data && - data.annotationFlags && // Default: not printable - data.annotationFlags & 0x4 && // Print - !(data.annotationFlags & 0x2) && // Hidden - data.rect); // rectangle is necessary - }, - - loadResources: function Annotation_loadResources(keys) { - return new Promise(function (resolve, reject) { - this.appearance.dict.getAsync('Resources').then(function (resources) { - if (!resources) { - resolve(); - return; - } - var objectLoader = new ObjectLoader(resources.map, - keys, - resources.xref); - objectLoader.load().then(function() { - resolve(resources); - }, reject); - }, reject); - }.bind(this)); - }, - - getOperatorList: function Annotation_getOperatorList(evaluator, task) { - - if (!this.appearance) { - return Promise.resolve(new OperatorList()); - } - - var data = this.data; - - var appearanceDict = this.appearance.dict; - var resourcesPromise = this.loadResources([ - 'ExtGState', - 'ColorSpace', - 'Pattern', - 'Shading', - 'XObject', - 'Font' - // ProcSet - // Properties - ]); - var bbox = appearanceDict.get('BBox') || [0, 0, 1, 1]; - var matrix = appearanceDict.get('Matrix') || [1, 0, 0, 1, 0 ,0]; - var transform = getTransformMatrix(data.rect, bbox, matrix); - var self = this; - - return resourcesPromise.then(function(resources) { - var opList = new OperatorList(); - opList.addOp(OPS.beginAnnotation, [data.rect, transform, matrix]); - return evaluator.getOperatorList(self.appearance, task, - resources, opList). - then(function () { - opList.addOp(OPS.endAnnotation, []); - self.appearance.reset(); - return opList; - }); - }); - } - }; - - Annotation.appendToOperatorList = function Annotation_appendToOperatorList( - annotations, opList, pdfManager, partialEvaluator, task, intent) { - - function reject(e) { - annotationsReadyCapability.reject(e); - } - - var annotationsReadyCapability = createPromiseCapability(); - - var annotationPromises = []; - for (var i = 0, n = annotations.length; i < n; ++i) { - if (intent === 'display' && annotations[i].isViewable() || - intent === 'print' && annotations[i].isPrintable()) { - annotationPromises.push( - annotations[i].getOperatorList(partialEvaluator, task)); - } - } - Promise.all(annotationPromises).then(function(datas) { - opList.addOp(OPS.beginAnnotations, []); - for (var i = 0, n = datas.length; i < n; ++i) { - var annotOpList = datas[i]; - opList.addOpList(annotOpList); - } - opList.addOp(OPS.endAnnotations, []); - annotationsReadyCapability.resolve(); - }, reject); - - return annotationsReadyCapability.promise; - }; - - return Annotation; -})(); - -/** - * Contains all data regarding an annotation's border style. - * - * @class - */ -var AnnotationBorderStyle = (function AnnotationBorderStyleClosure() { - /** - * @constructor - * @private - */ - function AnnotationBorderStyle() { - this.width = 1; - this.style = AnnotationBorderStyleType.SOLID; - this.dashArray = [3]; - this.horizontalCornerRadius = 0; - this.verticalCornerRadius = 0; - } - - AnnotationBorderStyle.prototype = { - /** - * Set the width. - * - * @public - * @memberof AnnotationBorderStyle - * @param {integer} width - The width - */ - setWidth: function AnnotationBorderStyle_setWidth(width) { - if (width === (width | 0)) { - this.width = width; - } - }, - - /** - * Set the style. - * - * @public - * @memberof AnnotationBorderStyle - * @param {Object} style - The style object - * @see {@link shared/util.js} - */ - setStyle: function AnnotationBorderStyle_setStyle(style) { - if (!style) { - return; - } - switch (style.name) { - case 'S': - this.style = AnnotationBorderStyleType.SOLID; - break; - - case 'D': - this.style = AnnotationBorderStyleType.DASHED; - break; - - case 'B': - this.style = AnnotationBorderStyleType.BEVELED; - break; - - case 'I': - this.style = AnnotationBorderStyleType.INSET; - break; - - case 'U': - this.style = AnnotationBorderStyleType.UNDERLINE; - break; - - default: - break; - } - }, - - /** - * Set the dash array. - * - * @public - * @memberof AnnotationBorderStyle - * @param {Array} dashArray - The dash array with at least one element - */ - setDashArray: function AnnotationBorderStyle_setDashArray(dashArray) { - // We validate the dash array, but we do not use it because CSS does not - // allow us to change spacing of dashes. For more information, visit - // http://www.w3.org/TR/css3-background/#the-border-style. - if (isArray(dashArray) && dashArray.length > 0) { - // According to the PDF specification: the elements in a dashArray - // shall be numbers that are nonnegative and not all equal to zero. - var isValid = true; - var allZeros = true; - for (var i = 0, len = dashArray.length; i < len; i++) { - var element = dashArray[i]; - var validNumber = (+element >= 0); - if (!validNumber) { - isValid = false; - break; - } else if (element > 0) { - allZeros = false; - } - } - if (isValid && !allZeros) { - this.dashArray = dashArray; - } else { - this.width = 0; // Adobe behavior when the array is invalid. - } - } else if (dashArray) { - this.width = 0; // Adobe behavior when the array is invalid. - } - }, - - /** - * Set the horizontal corner radius (from a Border dictionary). - * - * @public - * @memberof AnnotationBorderStyle - * @param {integer} radius - The horizontal corner radius - */ - setHorizontalCornerRadius: - function AnnotationBorderStyle_setHorizontalCornerRadius(radius) { - if (radius === (radius | 0)) { - this.horizontalCornerRadius = radius; - } - }, - - /** - * Set the vertical corner radius (from a Border dictionary). - * - * @public - * @memberof AnnotationBorderStyle - * @param {integer} radius - The vertical corner radius - */ - setVerticalCornerRadius: - function AnnotationBorderStyle_setVerticalCornerRadius(radius) { - if (radius === (radius | 0)) { - this.verticalCornerRadius = radius; - } - } - }; - - return AnnotationBorderStyle; -})(); - -var WidgetAnnotation = (function WidgetAnnotationClosure() { - - function WidgetAnnotation(params) { - Annotation.call(this, params); - - var dict = params.dict; - var data = this.data; - - data.fieldValue = stringToPDFString( - Util.getInheritableProperty(dict, 'V') || ''); - data.alternativeText = stringToPDFString(dict.get('TU') || ''); - data.defaultAppearance = Util.getInheritableProperty(dict, 'DA') || ''; - var fieldType = Util.getInheritableProperty(dict, 'FT'); - data.fieldType = isName(fieldType) ? fieldType.name : ''; - data.fieldFlags = Util.getInheritableProperty(dict, 'Ff') || 0; - this.fieldResources = Util.getInheritableProperty(dict, 'DR') || Dict.empty; - - // Building the full field name by collecting the field and - // its ancestors 'T' data and joining them using '.'. - var fieldName = []; - var namedItem = dict; - var ref = params.ref; - while (namedItem) { - var parent = namedItem.get('Parent'); - var parentRef = namedItem.getRaw('Parent'); - var name = namedItem.get('T'); - if (name) { - fieldName.unshift(stringToPDFString(name)); - } else if (parent && ref) { - // The field name is absent, that means more than one field - // with the same name may exist. Replacing the empty name - // with the '`' plus index in the parent's 'Kids' array. - // This is not in the PDF spec but necessary to id the - // the input controls. - var kids = parent.get('Kids'); - var j, jj; - for (j = 0, jj = kids.length; j < jj; j++) { - var kidRef = kids[j]; - if (kidRef.num === ref.num && kidRef.gen === ref.gen) { - break; - } - } - fieldName.unshift('`' + j); - } - namedItem = parent; - ref = parentRef; - } - data.fullName = fieldName.join('.'); - } - - var parent = Annotation.prototype; - Util.inherit(WidgetAnnotation, Annotation, { - isViewable: function WidgetAnnotation_isViewable() { - if (this.data.fieldType === 'Sig') { - warn('unimplemented annotation type: Widget signature'); - return false; - } - - return parent.isViewable.call(this); - } - }); - - return WidgetAnnotation; -})(); - -var TextWidgetAnnotation = (function TextWidgetAnnotationClosure() { - function TextWidgetAnnotation(params) { - WidgetAnnotation.call(this, params); - - this.data.textAlignment = Util.getInheritableProperty(params.dict, 'Q'); - this.data.annotationType = AnnotationType.WIDGET; - this.data.hasHtml = !this.data.hasAppearance && !!this.data.fieldValue; - } - - Util.inherit(TextWidgetAnnotation, WidgetAnnotation, { - getOperatorList: function TextWidgetAnnotation_getOperatorList(evaluator, - task) { - if (this.appearance) { - return Annotation.prototype.getOperatorList.call(this, evaluator, task); - } - - var opList = new OperatorList(); - var data = this.data; - - // Even if there is an appearance stream, ignore it. This is the - // behaviour used by Adobe Reader. - if (!data.defaultAppearance) { - return Promise.resolve(opList); - } - - var stream = new Stream(stringToBytes(data.defaultAppearance)); - return evaluator.getOperatorList(stream, task, - this.fieldResources, opList). - then(function () { - return opList; - }); - } - }); - - return TextWidgetAnnotation; -})(); - -var TextAnnotation = (function TextAnnotationClosure() { - function TextAnnotation(params) { - Annotation.call(this, params); - - var dict = params.dict; - var data = this.data; - - var content = dict.get('Contents'); - var title = dict.get('T'); - data.annotationType = AnnotationType.TEXT; - data.content = stringToPDFString(content || ''); - data.title = stringToPDFString(title || ''); - data.hasHtml = true; - - if (data.hasAppearance) { - data.name = 'NoIcon'; - } else { - data.rect[1] = data.rect[3] - DEFAULT_ICON_SIZE; - data.rect[2] = data.rect[0] + DEFAULT_ICON_SIZE; - data.name = dict.has('Name') ? dict.get('Name').name : 'Note'; - } - - if (dict.has('C')) { - data.hasBgColor = true; - } - } - - Util.inherit(TextAnnotation, Annotation, { }); - - return TextAnnotation; -})(); - -var LinkAnnotation = (function LinkAnnotationClosure() { - function LinkAnnotation(params) { - Annotation.call(this, params); - - var dict = params.dict; - var data = this.data; - data.annotationType = AnnotationType.LINK; - data.hasHtml = true; - - var action = dict.get('A'); - if (action && isDict(action)) { - var linkType = action.get('S').name; - if (linkType === 'URI') { - var url = action.get('URI'); - if (isName(url)) { - // Some bad PDFs do not put parentheses around relative URLs. - url = '/' + url.name; - } else if (url) { - url = addDefaultProtocolToUrl(url); - } - // TODO: pdf spec mentions urls can be relative to a Base - // entry in the dictionary. - if (!isValidUrl(url, false)) { - url = ''; - } - // According to ISO 32000-1:2008, section 12.6.4.7, - // URI should to be encoded in 7-bit ASCII. - // Some bad PDFs may have URIs in UTF-8 encoding, see Bugzilla 1122280. - try { - data.url = stringToUTF8String(url); - } catch (e) { - // Fall back to a simple copy. - data.url = url; - } - } else if (linkType === 'GoTo') { - data.dest = action.get('D'); - } else if (linkType === 'GoToR') { - var urlDict = action.get('F'); - if (isDict(urlDict)) { - // We assume that the 'url' is a Filspec dictionary - // and fetch the url without checking any further - url = urlDict.get('F') || ''; - } - - // TODO: pdf reference says that GoToR - // can also have 'NewWindow' attribute - if (!isValidUrl(url, false)) { - url = ''; - } - data.url = url; - data.dest = action.get('D'); - } else if (linkType === 'Named') { - data.action = action.get('N').name; - } else { - warn('unrecognized link type: ' + linkType); - } - } else if (dict.has('Dest')) { - // simple destination link - var dest = dict.get('Dest'); - data.dest = isName(dest) ? dest.name : dest; - } - } - - // Lets URLs beginning with 'www.' default to using the 'http://' protocol. - function addDefaultProtocolToUrl(url) { - if (url && url.indexOf('www.') === 0) { - return ('http://' + url); - } - return url; - } - - Util.inherit(LinkAnnotation, Annotation, { }); - - return LinkAnnotation; -})(); - - -var PDFFunction = (function PDFFunctionClosure() { - var CONSTRUCT_SAMPLED = 0; - var CONSTRUCT_INTERPOLATED = 2; - var CONSTRUCT_STICHED = 3; - var CONSTRUCT_POSTSCRIPT = 4; - - return { - getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps, - str) { - var i, ii; - var length = 1; - for (i = 0, ii = size.length; i < ii; i++) { - length *= size[i]; - } - length *= outputSize; - - var array = new Array(length); - var codeSize = 0; - var codeBuf = 0; - // 32 is a valid bps so shifting won't work - var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1); - - var strBytes = str.getBytes((length * bps + 7) / 8); - var strIdx = 0; - for (i = 0; i < length; i++) { - while (codeSize < bps) { - codeBuf <<= 8; - codeBuf |= strBytes[strIdx++]; - codeSize += 8; - } - codeSize -= bps; - array[i] = (codeBuf >> codeSize) * sampleMul; - codeBuf &= (1 << codeSize) - 1; - } - return array; - }, - - getIR: function PDFFunction_getIR(xref, fn) { - var dict = fn.dict; - if (!dict) { - dict = fn; - } - - var types = [this.constructSampled, - null, - this.constructInterpolated, - this.constructStiched, - this.constructPostScript]; - - var typeNum = dict.get('FunctionType'); - var typeFn = types[typeNum]; - if (!typeFn) { - error('Unknown type of function'); - } - - return typeFn.call(this, fn, dict, xref); - }, - - fromIR: function PDFFunction_fromIR(IR) { - var type = IR[0]; - switch (type) { - case CONSTRUCT_SAMPLED: - return this.constructSampledFromIR(IR); - case CONSTRUCT_INTERPOLATED: - return this.constructInterpolatedFromIR(IR); - case CONSTRUCT_STICHED: - return this.constructStichedFromIR(IR); - //case CONSTRUCT_POSTSCRIPT: - default: - return this.constructPostScriptFromIR(IR); - } - }, - - parse: function PDFFunction_parse(xref, fn) { - var IR = this.getIR(xref, fn); - return this.fromIR(IR); - }, - - parseArray: function PDFFunction_parseArray(xref, fnObj) { - if (!isArray(fnObj)) { - // not an array -- parsing as regular function - return this.parse(xref, fnObj); - } - - var fnArray = []; - for (var j = 0, jj = fnObj.length; j < jj; j++) { - var obj = xref.fetchIfRef(fnObj[j]); - fnArray.push(PDFFunction.parse(xref, obj)); - } - return function (src, srcOffset, dest, destOffset) { - for (var i = 0, ii = fnArray.length; i < ii; i++) { - fnArray[i](src, srcOffset, dest, destOffset + i); - } - }; - }, - - constructSampled: function PDFFunction_constructSampled(str, dict) { - function toMultiArray(arr) { - var inputLength = arr.length; - var out = []; - var index = 0; - for (var i = 0; i < inputLength; i += 2) { - out[index] = [arr[i], arr[i + 1]]; - ++index; - } - return out; - } - var domain = dict.get('Domain'); - var range = dict.get('Range'); - - if (!domain || !range) { - error('No domain or range'); - } - - var inputSize = domain.length / 2; - var outputSize = range.length / 2; - - domain = toMultiArray(domain); - range = toMultiArray(range); - - var size = dict.get('Size'); - var bps = dict.get('BitsPerSample'); - var order = dict.get('Order') || 1; - if (order !== 1) { - // No description how cubic spline interpolation works in PDF32000:2008 - // As in poppler, ignoring order, linear interpolation may work as good - info('No support for cubic spline interpolation: ' + order); - } - - var encode = dict.get('Encode'); - if (!encode) { - encode = []; - for (var i = 0; i < inputSize; ++i) { - encode.push(0); - encode.push(size[i] - 1); - } - } - encode = toMultiArray(encode); - - var decode = dict.get('Decode'); - if (!decode) { - decode = range; - } else { - decode = toMultiArray(decode); - } - - var samples = this.getSampleArray(size, outputSize, bps, str); - - return [ - CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, - outputSize, Math.pow(2, bps) - 1, range - ]; - }, - - constructSampledFromIR: function PDFFunction_constructSampledFromIR(IR) { - // See chapter 3, page 109 of the PDF reference - function interpolate(x, xmin, xmax, ymin, ymax) { - return ymin + ((x - xmin) * ((ymax - ymin) / (xmax - xmin))); - } - - return function constructSampledFromIRResult(src, srcOffset, - dest, destOffset) { - // See chapter 3, page 110 of the PDF reference. - var m = IR[1]; - var domain = IR[2]; - var encode = IR[3]; - var decode = IR[4]; - var samples = IR[5]; - var size = IR[6]; - var n = IR[7]; - //var mask = IR[8]; - var range = IR[9]; - - // Building the cube vertices: its part and sample index - // http://rjwagner49.com/Mathematics/Interpolation.pdf - var cubeVertices = 1 << m; - var cubeN = new Float64Array(cubeVertices); - var cubeVertex = new Uint32Array(cubeVertices); - var i, j; - for (j = 0; j < cubeVertices; j++) { - cubeN[j] = 1; - } - - var k = n, pos = 1; - // Map x_i to y_j for 0 <= i < m using the sampled function. - for (i = 0; i < m; ++i) { - // x_i' = min(max(x_i, Domain_2i), Domain_2i+1) - var domain_2i = domain[i][0]; - var domain_2i_1 = domain[i][1]; - var xi = Math.min(Math.max(src[srcOffset +i], domain_2i), - domain_2i_1); - - // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1, - // Encode_2i, Encode_2i+1) - var e = interpolate(xi, domain_2i, domain_2i_1, - encode[i][0], encode[i][1]); - - // e_i' = min(max(e_i, 0), Size_i - 1) - var size_i = size[i]; - e = Math.min(Math.max(e, 0), size_i - 1); - - // Adjusting the cube: N and vertex sample index - var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1; - var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0); - var n1 = e - e0; // (e - e0) / (e1 - e0); - var offset0 = e0 * k; - var offset1 = offset0 + k; // e1 * k - for (j = 0; j < cubeVertices; j++) { - if (j & pos) { - cubeN[j] *= n1; - cubeVertex[j] += offset1; - } else { - cubeN[j] *= n0; - cubeVertex[j] += offset0; - } - } - - k *= size_i; - pos <<= 1; - } - - for (j = 0; j < n; ++j) { - // Sum all cube vertices' samples portions - var rj = 0; - for (i = 0; i < cubeVertices; i++) { - rj += samples[cubeVertex[i] + j] * cubeN[i]; - } - - // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1, - // Decode_2j, Decode_2j+1) - rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); - - // y_j = min(max(r_j, range_2j), range_2j+1) - dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), - range[j][1]); - } - }; - }, - - constructInterpolated: function PDFFunction_constructInterpolated(str, - dict) { - var c0 = dict.get('C0') || [0]; - var c1 = dict.get('C1') || [1]; - var n = dict.get('N'); - - if (!isArray(c0) || !isArray(c1)) { - error('Illegal dictionary for interpolated function'); - } - - var length = c0.length; - var diff = []; - for (var i = 0; i < length; ++i) { - diff.push(c1[i] - c0[i]); - } - - return [CONSTRUCT_INTERPOLATED, c0, diff, n]; - }, - - constructInterpolatedFromIR: - function PDFFunction_constructInterpolatedFromIR(IR) { - var c0 = IR[1]; - var diff = IR[2]; - var n = IR[3]; - - var length = diff.length; - - return function constructInterpolatedFromIRResult(src, srcOffset, - dest, destOffset) { - var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n); - - for (var j = 0; j < length; ++j) { - dest[destOffset + j] = c0[j] + (x * diff[j]); - } - }; - }, - - constructStiched: function PDFFunction_constructStiched(fn, dict, xref) { - var domain = dict.get('Domain'); - - if (!domain) { - error('No domain'); - } - - var inputSize = domain.length / 2; - if (inputSize !== 1) { - error('Bad domain for stiched function'); - } - - var fnRefs = dict.get('Functions'); - var fns = []; - for (var i = 0, ii = fnRefs.length; i < ii; ++i) { - fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i]))); - } - - var bounds = dict.get('Bounds'); - var encode = dict.get('Encode'); - - return [CONSTRUCT_STICHED, domain, bounds, encode, fns]; - }, - - constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) { - var domain = IR[1]; - var bounds = IR[2]; - var encode = IR[3]; - var fnsIR = IR[4]; - var fns = []; - var tmpBuf = new Float32Array(1); - - for (var i = 0, ii = fnsIR.length; i < ii; i++) { - fns.push(PDFFunction.fromIR(fnsIR[i])); - } - - return function constructStichedFromIRResult(src, srcOffset, - dest, destOffset) { - var clip = function constructStichedFromIRClip(v, min, max) { - if (v > max) { - v = max; - } else if (v < min) { - v = min; - } - return v; - }; - - // clip to domain - var v = clip(src[srcOffset], domain[0], domain[1]); - // calulate which bound the value is in - for (var i = 0, ii = bounds.length; i < ii; ++i) { - if (v < bounds[i]) { - break; - } - } - - // encode value into domain of function - var dmin = domain[0]; - if (i > 0) { - dmin = bounds[i - 1]; - } - var dmax = domain[1]; - if (i < bounds.length) { - dmax = bounds[i]; - } - - var rmin = encode[2 * i]; - var rmax = encode[2 * i + 1]; - - // Prevent the value from becoming NaN as a result - // of division by zero (fixes issue6113.pdf). - tmpBuf[0] = dmin === dmax ? rmin : - rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); - - // call the appropriate function - fns[i](tmpBuf, 0, dest, destOffset); - }; - }, - - constructPostScript: function PDFFunction_constructPostScript(fn, dict, - xref) { - var domain = dict.get('Domain'); - var range = dict.get('Range'); - - if (!domain) { - error('No domain.'); - } - - if (!range) { - error('No range.'); - } - - var lexer = new PostScriptLexer(fn); - var parser = new PostScriptParser(lexer); - var code = parser.parse(); - - return [CONSTRUCT_POSTSCRIPT, domain, range, code]; - }, - - constructPostScriptFromIR: function PDFFunction_constructPostScriptFromIR( - IR) { - var domain = IR[1]; - var range = IR[2]; - var code = IR[3]; - - var compiled = (new PostScriptCompiler()).compile(code, domain, range); - if (compiled) { - // Compiled function consists of simple expressions such as addition, - // subtraction, Math.max, and also contains 'var' and 'return' - // statements. See the generation in the PostScriptCompiler below. - /*jshint -W054 */ - return new Function('src', 'srcOffset', 'dest', 'destOffset', compiled); - } - - info('Unable to compile PS function'); - - var numOutputs = range.length >> 1; - var numInputs = domain.length >> 1; - var evaluator = new PostScriptEvaluator(code); - // Cache the values for a big speed up, the cache size is limited though - // since the number of possible values can be huge from a PS function. - var cache = {}; - // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values - // seen in our tests. - var MAX_CACHE_SIZE = 2048 * 4; - var cache_available = MAX_CACHE_SIZE; - var tmpBuf = new Float32Array(numInputs); - - return function constructPostScriptFromIRResult(src, srcOffset, - dest, destOffset) { - var i, value; - var key = ''; - var input = tmpBuf; - for (i = 0; i < numInputs; i++) { - value = src[srcOffset + i]; - input[i] = value; - key += value + '_'; - } - - var cachedValue = cache[key]; - if (cachedValue !== undefined) { - dest.set(cachedValue, destOffset); - return; - } - - var output = new Float32Array(numOutputs); - var stack = evaluator.execute(input); - var stackIndex = stack.length - numOutputs; - for (i = 0; i < numOutputs; i++) { - value = stack[stackIndex + i]; - var bound = range[i * 2]; - if (value < bound) { - value = bound; - } else { - bound = range[i * 2 +1]; - if (value > bound) { - value = bound; - } - } - output[i] = value; - } - if (cache_available > 0) { - cache_available--; - cache[key] = output; - } - dest.set(output, destOffset); - }; - } - }; -})(); - -function isPDFFunction(v) { - var fnDict; - if (typeof v !== 'object') { - return false; - } else if (isDict(v)) { - fnDict = v; - } else if (isStream(v)) { - fnDict = v.dict; - } else { - return false; - } - return fnDict.has('FunctionType'); -} - -var PostScriptStack = (function PostScriptStackClosure() { - var MAX_STACK_SIZE = 100; - function PostScriptStack(initialStack) { - this.stack = !initialStack ? [] : - Array.prototype.slice.call(initialStack, 0); - } - - PostScriptStack.prototype = { - push: function PostScriptStack_push(value) { - if (this.stack.length >= MAX_STACK_SIZE) { - error('PostScript function stack overflow.'); - } - this.stack.push(value); - }, - pop: function PostScriptStack_pop() { - if (this.stack.length <= 0) { - error('PostScript function stack underflow.'); - } - return this.stack.pop(); - }, - copy: function PostScriptStack_copy(n) { - if (this.stack.length + n >= MAX_STACK_SIZE) { - error('PostScript function stack overflow.'); - } - var stack = this.stack; - for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) { - stack.push(stack[i]); - } - }, - index: function PostScriptStack_index(n) { - this.push(this.stack[this.stack.length - n - 1]); - }, - // rotate the last n stack elements p times - roll: function PostScriptStack_roll(n, p) { - var stack = this.stack; - var l = stack.length - n; - var r = stack.length - 1, c = l + (p - Math.floor(p / n) * n), i, j, t; - for (i = l, j = r; i < j; i++, j--) { - t = stack[i]; stack[i] = stack[j]; stack[j] = t; - } - for (i = l, j = c - 1; i < j; i++, j--) { - t = stack[i]; stack[i] = stack[j]; stack[j] = t; - } - for (i = c, j = r; i < j; i++, j--) { - t = stack[i]; stack[i] = stack[j]; stack[j] = t; - } - } - }; - return PostScriptStack; -})(); -var PostScriptEvaluator = (function PostScriptEvaluatorClosure() { - function PostScriptEvaluator(operators) { - this.operators = operators; - } - PostScriptEvaluator.prototype = { - execute: function PostScriptEvaluator_execute(initialStack) { - var stack = new PostScriptStack(initialStack); - var counter = 0; - var operators = this.operators; - var length = operators.length; - var operator, a, b; - while (counter < length) { - operator = operators[counter++]; - if (typeof operator === 'number') { - // Operator is really an operand and should be pushed to the stack. - stack.push(operator); - continue; - } - switch (operator) { - // non standard ps operators - case 'jz': // jump if false - b = stack.pop(); - a = stack.pop(); - if (!a) { - counter = b; - } - break; - case 'j': // jump - a = stack.pop(); - counter = a; - break; - - // all ps operators in alphabetical order (excluding if/ifelse) - case 'abs': - a = stack.pop(); - stack.push(Math.abs(a)); - break; - case 'add': - b = stack.pop(); - a = stack.pop(); - stack.push(a + b); - break; - case 'and': - b = stack.pop(); - a = stack.pop(); - if (isBool(a) && isBool(b)) { - stack.push(a && b); - } else { - stack.push(a & b); - } - break; - case 'atan': - a = stack.pop(); - stack.push(Math.atan(a)); - break; - case 'bitshift': - b = stack.pop(); - a = stack.pop(); - if (a > 0) { - stack.push(a << b); - } else { - stack.push(a >> b); - } - break; - case 'ceiling': - a = stack.pop(); - stack.push(Math.ceil(a)); - break; - case 'copy': - a = stack.pop(); - stack.copy(a); - break; - case 'cos': - a = stack.pop(); - stack.push(Math.cos(a)); - break; - case 'cvi': - a = stack.pop() | 0; - stack.push(a); - break; - case 'cvr': - // noop - break; - case 'div': - b = stack.pop(); - a = stack.pop(); - stack.push(a / b); - break; - case 'dup': - stack.copy(1); - break; - case 'eq': - b = stack.pop(); - a = stack.pop(); - stack.push(a === b); - break; - case 'exch': - stack.roll(2, 1); - break; - case 'exp': - b = stack.pop(); - a = stack.pop(); - stack.push(Math.pow(a, b)); - break; - case 'false': - stack.push(false); - break; - case 'floor': - a = stack.pop(); - stack.push(Math.floor(a)); - break; - case 'ge': - b = stack.pop(); - a = stack.pop(); - stack.push(a >= b); - break; - case 'gt': - b = stack.pop(); - a = stack.pop(); - stack.push(a > b); - break; - case 'idiv': - b = stack.pop(); - a = stack.pop(); - stack.push((a / b) | 0); - break; - case 'index': - a = stack.pop(); - stack.index(a); - break; - case 'le': - b = stack.pop(); - a = stack.pop(); - stack.push(a <= b); - break; - case 'ln': - a = stack.pop(); - stack.push(Math.log(a)); - break; - case 'log': - a = stack.pop(); - stack.push(Math.log(a) / Math.LN10); - break; - case 'lt': - b = stack.pop(); - a = stack.pop(); - stack.push(a < b); - break; - case 'mod': - b = stack.pop(); - a = stack.pop(); - stack.push(a % b); - break; - case 'mul': - b = stack.pop(); - a = stack.pop(); - stack.push(a * b); - break; - case 'ne': - b = stack.pop(); - a = stack.pop(); - stack.push(a !== b); - break; - case 'neg': - a = stack.pop(); - stack.push(-a); - break; - case 'not': - a = stack.pop(); - if (isBool(a)) { - stack.push(!a); - } else { - stack.push(~a); - } - break; - case 'or': - b = stack.pop(); - a = stack.pop(); - if (isBool(a) && isBool(b)) { - stack.push(a || b); - } else { - stack.push(a | b); - } - break; - case 'pop': - stack.pop(); - break; - case 'roll': - b = stack.pop(); - a = stack.pop(); - stack.roll(a, b); - break; - case 'round': - a = stack.pop(); - stack.push(Math.round(a)); - break; - case 'sin': - a = stack.pop(); - stack.push(Math.sin(a)); - break; - case 'sqrt': - a = stack.pop(); - stack.push(Math.sqrt(a)); - break; - case 'sub': - b = stack.pop(); - a = stack.pop(); - stack.push(a - b); - break; - case 'true': - stack.push(true); - break; - case 'truncate': - a = stack.pop(); - a = a < 0 ? Math.ceil(a) : Math.floor(a); - stack.push(a); - break; - case 'xor': - b = stack.pop(); - a = stack.pop(); - if (isBool(a) && isBool(b)) { - stack.push(a !== b); - } else { - stack.push(a ^ b); - } - break; - default: - error('Unknown operator ' + operator); - break; - } - } - return stack.stack; - } - }; - return PostScriptEvaluator; -})(); - -// Most of the PDFs functions consist of simple operations such as: -// roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add. -// -// We can compile most of such programs, and at the same moment, we can -// optimize some expressions using basic math properties. Keeping track of -// min/max values will allow us to avoid extra Math.min/Math.max calls. -var PostScriptCompiler = (function PostScriptCompilerClosure() { - function AstNode(type) { - this.type = type; - } - AstNode.prototype.visit = function (visitor) { - throw new Error('abstract method'); - }; - - function AstArgument(index, min, max) { - AstNode.call(this, 'args'); - this.index = index; - this.min = min; - this.max = max; - } - AstArgument.prototype = Object.create(AstNode.prototype); - AstArgument.prototype.visit = function (visitor) { - visitor.visitArgument(this); - }; - - function AstLiteral(number) { - AstNode.call(this, 'literal'); - this.number = number; - this.min = number; - this.max = number; - } - AstLiteral.prototype = Object.create(AstNode.prototype); - AstLiteral.prototype.visit = function (visitor) { - visitor.visitLiteral(this); - }; - - function AstBinaryOperation(op, arg1, arg2, min, max) { - AstNode.call(this, 'binary'); - this.op = op; - this.arg1 = arg1; - this.arg2 = arg2; - this.min = min; - this.max = max; - } - AstBinaryOperation.prototype = Object.create(AstNode.prototype); - AstBinaryOperation.prototype.visit = function (visitor) { - visitor.visitBinaryOperation(this); - }; - - function AstMin(arg, max) { - AstNode.call(this, 'max'); - this.arg = arg; - this.min = arg.min; - this.max = max; - } - AstMin.prototype = Object.create(AstNode.prototype); - AstMin.prototype.visit = function (visitor) { - visitor.visitMin(this); - }; - - function AstVariable(index, min, max) { - AstNode.call(this, 'var'); - this.index = index; - this.min = min; - this.max = max; - } - AstVariable.prototype = Object.create(AstNode.prototype); - AstVariable.prototype.visit = function (visitor) { - visitor.visitVariable(this); - }; - - function AstVariableDefinition(variable, arg) { - AstNode.call(this, 'definition'); - this.variable = variable; - this.arg = arg; - } - AstVariableDefinition.prototype = Object.create(AstNode.prototype); - AstVariableDefinition.prototype.visit = function (visitor) { - visitor.visitVariableDefinition(this); - }; - - function ExpressionBuilderVisitor() { - this.parts = []; - } - ExpressionBuilderVisitor.prototype = { - visitArgument: function (arg) { - this.parts.push('Math.max(', arg.min, ', Math.min(', - arg.max, ', src[srcOffset + ', arg.index, ']))'); - }, - visitVariable: function (variable) { - this.parts.push('v', variable.index); - }, - visitLiteral: function (literal) { - this.parts.push(literal.number); - }, - visitBinaryOperation: function (operation) { - this.parts.push('('); - operation.arg1.visit(this); - this.parts.push(' ', operation.op, ' '); - operation.arg2.visit(this); - this.parts.push(')'); - }, - visitVariableDefinition: function (definition) { - this.parts.push('var '); - definition.variable.visit(this); - this.parts.push(' = '); - definition.arg.visit(this); - this.parts.push(';'); - }, - visitMin: function (max) { - this.parts.push('Math.min('); - max.arg.visit(this); - this.parts.push(', ', max.max, ')'); - }, - toString: function () { - return this.parts.join(''); - } - }; - - function buildAddOperation(num1, num2) { - if (num2.type === 'literal' && num2.number === 0) { - // optimization: second operand is 0 - return num1; - } - if (num1.type === 'literal' && num1.number === 0) { - // optimization: first operand is 0 - return num2; - } - if (num2.type === 'literal' && num1.type === 'literal') { - // optimization: operands operand are literals - return new AstLiteral(num1.number + num2.number); - } - return new AstBinaryOperation('+', num1, num2, - num1.min + num2.min, num1.max + num2.max); - } - - function buildMulOperation(num1, num2) { - if (num2.type === 'literal') { - // optimization: second operands is a literal... - if (num2.number === 0) { - return new AstLiteral(0); // and it's 0 - } else if (num2.number === 1) { - return num1; // and it's 1 - } else if (num1.type === 'literal') { - // ... and first operands is a literal too - return new AstLiteral(num1.number * num2.number); - } - } - if (num1.type === 'literal') { - // optimization: first operands is a literal... - if (num1.number === 0) { - return new AstLiteral(0); // and it's 0 - } else if (num1.number === 1) { - return num2; // and it's 1 - } - } - var min = Math.min(num1.min * num2.min, num1.min * num2.max, - num1.max * num2.min, num1.max * num2.max); - var max = Math.max(num1.min * num2.min, num1.min * num2.max, - num1.max * num2.min, num1.max * num2.max); - return new AstBinaryOperation('*', num1, num2, min, max); - } - - function buildSubOperation(num1, num2) { - if (num2.type === 'literal') { - // optimization: second operands is a literal... - if (num2.number === 0) { - return num1; // ... and it's 0 - } else if (num1.type === 'literal') { - // ... and first operands is a literal too - return new AstLiteral(num1.number - num2.number); - } - } - if (num2.type === 'binary' && num2.op === '-' && - num1.type === 'literal' && num1.number === 1 && - num2.arg1.type === 'literal' && num2.arg1.number === 1) { - // optimization for case: 1 - (1 - x) - return num2.arg2; - } - return new AstBinaryOperation('-', num1, num2, - num1.min - num2.max, num1.max - num2.min); - } - - function buildMinOperation(num1, max) { - if (num1.min >= max) { - // optimization: num1 min value is not less than required max - return new AstLiteral(max); // just returning max - } else if (num1.max <= max) { - // optimization: num1 max value is not greater than required max - return num1; // just returning an argument - } - return new AstMin(num1, max); - } - - function PostScriptCompiler() {} - PostScriptCompiler.prototype = { - compile: function PostScriptCompiler_compile(code, domain, range) { - var stack = []; - var i, ii; - var instructions = []; - var inputSize = domain.length >> 1, outputSize = range.length >> 1; - var lastRegister = 0; - var n, j, min, max; - var num1, num2, ast1, ast2, tmpVar, item; - for (i = 0; i < inputSize; i++) { - stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1])); - } - - for (i = 0, ii = code.length; i < ii; i++) { - item = code[i]; - if (typeof item === 'number') { - stack.push(new AstLiteral(item)); - continue; - } - - switch (item) { - case 'add': - if (stack.length < 2) { - return null; - } - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildAddOperation(num1, num2)); - break; - case 'cvr': - if (stack.length < 1) { - return null; - } - break; - case 'mul': - if (stack.length < 2) { - return null; - } - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildMulOperation(num1, num2)); - break; - case 'sub': - if (stack.length < 2) { - return null; - } - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildSubOperation(num1, num2)); - break; - case 'exch': - if (stack.length < 2) { - return null; - } - ast1 = stack.pop(); ast2 = stack.pop(); - stack.push(ast1, ast2); - break; - case 'pop': - if (stack.length < 1) { - return null; - } - stack.pop(); - break; - case 'index': - if (stack.length < 1) { - return null; - } - num1 = stack.pop(); - if (num1.type !== 'literal') { - return null; - } - n = num1.number; - if (n < 0 || (n|0) !== n || stack.length < n) { - return null; - } - ast1 = stack[stack.length - n - 1]; - if (ast1.type === 'literal' || ast1.type === 'var') { - stack.push(ast1); - break; - } - tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); - stack[stack.length - n - 1] = tmpVar; - stack.push(tmpVar); - instructions.push(new AstVariableDefinition(tmpVar, ast1)); - break; - case 'dup': - if (stack.length < 1) { - return null; - } - if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' && - code[i + 3] === i + 7 && code[i + 4] === 'jz' && - code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) { - // special case of the commands sequence for the min operation - num1 = stack.pop(); - stack.push(buildMinOperation(num1, code[i + 1])); - i += 6; - break; - } - ast1 = stack[stack.length - 1]; - if (ast1.type === 'literal' || ast1.type === 'var') { - // we don't have to save into intermediate variable a literal or - // variable. - stack.push(ast1); - break; - } - tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); - stack[stack.length - 1] = tmpVar; - stack.push(tmpVar); - instructions.push(new AstVariableDefinition(tmpVar, ast1)); - break; - case 'roll': - if (stack.length < 2) { - return null; - } - num2 = stack.pop(); - num1 = stack.pop(); - if (num2.type !== 'literal' || num1.type !== 'literal') { - // both roll operands must be numbers - return null; - } - j = num2.number; - n = num1.number; - if (n <= 0 || (n|0) !== n || (j|0) !== j || stack.length < n) { - // ... and integers - return null; - } - j = ((j % n) + n) % n; - if (j === 0) { - break; // just skipping -- there are nothing to rotate - } - Array.prototype.push.apply(stack, - stack.splice(stack.length - n, n - j)); - break; - default: - return null; // unsupported operator - } - } - - if (stack.length !== outputSize) { - return null; - } - - var result = []; - instructions.forEach(function (instruction) { - var statementBuilder = new ExpressionBuilderVisitor(); - instruction.visit(statementBuilder); - result.push(statementBuilder.toString()); - }); - stack.forEach(function (expr, i) { - var statementBuilder = new ExpressionBuilderVisitor(); - expr.visit(statementBuilder); - var min = range[i * 2], max = range[i * 2 + 1]; - var out = [statementBuilder.toString()]; - if (min > expr.min) { - out.unshift('Math.max(', min, ', '); - out.push(')'); - } - if (max < expr.max) { - out.unshift('Math.min(', max, ', '); - out.push(')'); - } - out.unshift('dest[destOffset + ', i, '] = '); - out.push(';'); - result.push(out.join('')); - }); - return result.join('\n'); - } - }; - - return PostScriptCompiler; -})(); - - -var ColorSpace = (function ColorSpaceClosure() { - // Constructor should define this.numComps, this.defaultColor, this.name - function ColorSpace() { - error('should not call ColorSpace constructor'); - } - - ColorSpace.prototype = { - /** - * Converts the color value to the RGB color. The color components are - * located in the src array starting from the srcOffset. Returns the array - * of the rgb components, each value ranging from [0,255]. - */ - getRgb: function ColorSpace_getRgb(src, srcOffset) { - var rgb = new Uint8Array(3); - this.getRgbItem(src, srcOffset, rgb, 0); - return rgb; - }, - /** - * Converts the color value to the RGB color, similar to the getRgb method. - * The result placed into the dest array starting from the destOffset. - */ - getRgbItem: function ColorSpace_getRgbItem(src, srcOffset, - dest, destOffset) { - error('Should not call ColorSpace.getRgbItem'); - }, - /** - * Converts the specified number of the color values to the RGB colors. - * The colors are located in the src array starting from the srcOffset. - * The result is placed into the dest array starting from the destOffset. - * The src array items shall be in [0,2^bits) range, the dest array items - * will be in [0,255] range. alpha01 indicates how many alpha components - * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA - * array). - */ - getRgbBuffer: function ColorSpace_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - error('Should not call ColorSpace.getRgbBuffer'); - }, - /** - * Determines the number of bytes required to store the result of the - * conversion done by the getRgbBuffer method. As in getRgbBuffer, - * |alpha01| is either 0 (RGB output) or 1 (RGBA output). - */ - getOutputLength: function ColorSpace_getOutputLength(inputLength, - alpha01) { - error('Should not call ColorSpace.getOutputLength'); - }, - /** - * Returns true if source data will be equal the result/output data. - */ - isPassthrough: function ColorSpace_isPassthrough(bits) { - return false; - }, - /** - * Fills in the RGB colors in the destination buffer. alpha01 indicates - * how many alpha components there are in the dest array; it will be either - * 0 (RGB array) or 1 (RGBA array). - */ - fillRgb: function ColorSpace_fillRgb(dest, originalWidth, - originalHeight, width, height, - actualHeight, bpc, comps, alpha01) { - var count = originalWidth * originalHeight; - var rgbBuf = null; - var numComponentColors = 1 << bpc; - var needsResizing = originalHeight !== height || originalWidth !== width; - var i, ii; - - if (this.isPassthrough(bpc)) { - rgbBuf = comps; - } else if (this.numComps === 1 && count > numComponentColors && - this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') { - // Optimization: create a color map when there is just one component and - // we are converting more colors than the size of the color map. We - // don't build the map if the colorspace is gray or rgb since those - // methods are faster than building a map. This mainly offers big speed - // ups for indexed and alternate colorspaces. - // - // TODO it may be worth while to cache the color map. While running - // testing I never hit a cache so I will leave that out for now (perhaps - // we are reparsing colorspaces too much?). - var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : - new Uint16Array(numComponentColors); - var key; - for (i = 0; i < numComponentColors; i++) { - allColors[i] = i; - } - var colorMap = new Uint8Array(numComponentColors * 3); - this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, - /* alpha01 = */ 0); - - var destPos, rgbPos; - if (!needsResizing) { - // Fill in the RGB values directly into |dest|. - destPos = 0; - for (i = 0; i < count; ++i) { - key = comps[i] * 3; - dest[destPos++] = colorMap[key]; - dest[destPos++] = colorMap[key + 1]; - dest[destPos++] = colorMap[key + 2]; - destPos += alpha01; - } - } else { - rgbBuf = new Uint8Array(count * 3); - rgbPos = 0; - for (i = 0; i < count; ++i) { - key = comps[i] * 3; - rgbBuf[rgbPos++] = colorMap[key]; - rgbBuf[rgbPos++] = colorMap[key + 1]; - rgbBuf[rgbPos++] = colorMap[key + 2]; - } - } - } else { - if (!needsResizing) { - // Fill in the RGB values directly into |dest|. - this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, - alpha01); - } else { - rgbBuf = new Uint8Array(count * 3); - this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, - /* alpha01 = */ 0); - } - } - - if (rgbBuf) { - if (needsResizing) { - PDFImage.resize(rgbBuf, bpc, 3, originalWidth, originalHeight, width, - height, dest, alpha01); - } else { - rgbPos = 0; - destPos = 0; - for (i = 0, ii = width * actualHeight; i < ii; i++) { - dest[destPos++] = rgbBuf[rgbPos++]; - dest[destPos++] = rgbBuf[rgbPos++]; - dest[destPos++] = rgbBuf[rgbPos++]; - destPos += alpha01; - } - } - } - }, - /** - * True if the colorspace has components in the default range of [0, 1]. - * This should be true for all colorspaces except for lab color spaces - * which are [0,100], [-128, 127], [-128, 127]. - */ - usesZeroToOneRange: true - }; - - ColorSpace.parse = function ColorSpace_parse(cs, xref, res) { - var IR = ColorSpace.parseToIR(cs, xref, res); - if (IR instanceof AlternateCS) { - return IR; - } - return ColorSpace.fromIR(IR); - }; - - ColorSpace.fromIR = function ColorSpace_fromIR(IR) { - var name = isArray(IR) ? IR[0] : IR; - var whitePoint, blackPoint, gamma; - - switch (name) { - case 'DeviceGrayCS': - return this.singletons.gray; - case 'DeviceRgbCS': - return this.singletons.rgb; - case 'DeviceCmykCS': - return this.singletons.cmyk; - case 'CalGrayCS': - whitePoint = IR[1].WhitePoint; - blackPoint = IR[1].BlackPoint; - gamma = IR[1].Gamma; - return new CalGrayCS(whitePoint, blackPoint, gamma); - case 'CalRGBCS': - whitePoint = IR[1].WhitePoint; - blackPoint = IR[1].BlackPoint; - gamma = IR[1].Gamma; - var matrix = IR[1].Matrix; - return new CalRGBCS(whitePoint, blackPoint, gamma, matrix); - case 'PatternCS': - var basePatternCS = IR[1]; - if (basePatternCS) { - basePatternCS = ColorSpace.fromIR(basePatternCS); - } - return new PatternCS(basePatternCS); - case 'IndexedCS': - var baseIndexedCS = IR[1]; - var hiVal = IR[2]; - var lookup = IR[3]; - return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup); - case 'AlternateCS': - var numComps = IR[1]; - var alt = IR[2]; - var tintFnIR = IR[3]; - - return new AlternateCS(numComps, ColorSpace.fromIR(alt), - PDFFunction.fromIR(tintFnIR)); - case 'LabCS': - whitePoint = IR[1].WhitePoint; - blackPoint = IR[1].BlackPoint; - var range = IR[1].Range; - return new LabCS(whitePoint, blackPoint, range); - default: - error('Unknown name ' + name); - } - return null; - }; - - ColorSpace.parseToIR = function ColorSpace_parseToIR(cs, xref, res) { - if (isName(cs)) { - var colorSpaces = res.get('ColorSpace'); - if (isDict(colorSpaces)) { - var refcs = colorSpaces.get(cs.name); - if (refcs) { - cs = refcs; - } - } - } - - cs = xref.fetchIfRef(cs); - var mode; - - if (isName(cs)) { - mode = cs.name; - this.mode = mode; - - switch (mode) { - case 'DeviceGray': - case 'G': - return 'DeviceGrayCS'; - case 'DeviceRGB': - case 'RGB': - return 'DeviceRgbCS'; - case 'DeviceCMYK': - case 'CMYK': - return 'DeviceCmykCS'; - case 'Pattern': - return ['PatternCS', null]; - default: - error('unrecognized colorspace ' + mode); - } - } else if (isArray(cs)) { - mode = xref.fetchIfRef(cs[0]).name; - this.mode = mode; - var numComps, params, alt; - - switch (mode) { - case 'DeviceGray': - case 'G': - return 'DeviceGrayCS'; - case 'DeviceRGB': - case 'RGB': - return 'DeviceRgbCS'; - case 'DeviceCMYK': - case 'CMYK': - return 'DeviceCmykCS'; - case 'CalGray': - params = xref.fetchIfRef(cs[1]).getAll(); - return ['CalGrayCS', params]; - case 'CalRGB': - params = xref.fetchIfRef(cs[1]).getAll(); - return ['CalRGBCS', params]; - case 'ICCBased': - var stream = xref.fetchIfRef(cs[1]); - var dict = stream.dict; - numComps = dict.get('N'); - alt = dict.get('Alternate'); - if (alt) { - var altIR = ColorSpace.parseToIR(alt, xref, res); - // Parse the /Alternate CS to ensure that the number of components - // are correct, and also (indirectly) that it is not a PatternCS. - var altCS = ColorSpace.fromIR(altIR); - if (altCS.numComps === numComps) { - return altIR; - } - warn('ICCBased color space: Ignoring incorrect /Alternate entry.'); - } - if (numComps === 1) { - return 'DeviceGrayCS'; - } else if (numComps === 3) { - return 'DeviceRgbCS'; - } else if (numComps === 4) { - return 'DeviceCmykCS'; - } - break; - case 'Pattern': - var basePatternCS = cs[1] || null; - if (basePatternCS) { - basePatternCS = ColorSpace.parseToIR(basePatternCS, xref, res); - } - return ['PatternCS', basePatternCS]; - case 'Indexed': - case 'I': - var baseIndexedCS = ColorSpace.parseToIR(cs[1], xref, res); - var hiVal = xref.fetchIfRef(cs[2]) + 1; - var lookup = xref.fetchIfRef(cs[3]); - if (isStream(lookup)) { - lookup = lookup.getBytes(); - } - return ['IndexedCS', baseIndexedCS, hiVal, lookup]; - case 'Separation': - case 'DeviceN': - var name = xref.fetchIfRef(cs[1]); - numComps = 1; - if (isName(name)) { - numComps = 1; - } else if (isArray(name)) { - numComps = name.length; - } - alt = ColorSpace.parseToIR(cs[2], xref, res); - var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3])); - return ['AlternateCS', numComps, alt, tintFnIR]; - case 'Lab': - params = xref.fetchIfRef(cs[1]).getAll(); - return ['LabCS', params]; - default: - error('unimplemented color space object "' + mode + '"'); - } - } else { - error('unrecognized color space object: "' + cs + '"'); - } - return null; - }; - /** - * Checks if a decode map matches the default decode map for a color space. - * This handles the general decode maps where there are two values per - * component. e.g. [0, 1, 0, 1, 0, 1] for a RGB color. - * This does not handle Lab, Indexed, or Pattern decode maps since they are - * slightly different. - * @param {Array} decode Decode map (usually from an image). - * @param {Number} n Number of components the color space has. - */ - ColorSpace.isDefaultDecode = function ColorSpace_isDefaultDecode(decode, n) { - if (!isArray(decode)) { - return true; - } - - if (n * 2 !== decode.length) { - warn('The decode map is not the correct length'); - return true; - } - for (var i = 0, ii = decode.length; i < ii; i += 2) { - if (decode[i] !== 0 || decode[i + 1] !== 1) { - return false; - } - } - return true; - }; - - ColorSpace.singletons = { - get gray() { - return shadow(this, 'gray', new DeviceGrayCS()); - }, - get rgb() { - return shadow(this, 'rgb', new DeviceRgbCS()); - }, - get cmyk() { - return shadow(this, 'cmyk', new DeviceCmykCS()); - } - }; - - return ColorSpace; -})(); - -/** - * Alternate color space handles both Separation and DeviceN color spaces. A - * Separation color space is actually just a DeviceN with one color component. - * Both color spaces use a tinting function to convert colors to a base color - * space. - */ -var AlternateCS = (function AlternateCSClosure() { - function AlternateCS(numComps, base, tintFn) { - this.name = 'Alternate'; - this.numComps = numComps; - this.defaultColor = new Float32Array(numComps); - for (var i = 0; i < numComps; ++i) { - this.defaultColor[i] = 1; - } - this.base = base; - this.tintFn = tintFn; - this.tmpBuf = new Float32Array(base.numComps); - } - - AlternateCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function AlternateCS_getRgbItem(src, srcOffset, - dest, destOffset) { - var tmpBuf = this.tmpBuf; - this.tintFn(src, srcOffset, tmpBuf, 0); - this.base.getRgbItem(tmpBuf, 0, dest, destOffset); - }, - getRgbBuffer: function AlternateCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var tintFn = this.tintFn; - var base = this.base; - var scale = 1 / ((1 << bits) - 1); - var baseNumComps = base.numComps; - var usesZeroToOneRange = base.usesZeroToOneRange; - var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && - alpha01 === 0; - var pos = isPassthrough ? destOffset : 0; - var baseBuf = isPassthrough ? dest : new Uint8Array(baseNumComps * count); - var numComps = this.numComps; - - var scaled = new Float32Array(numComps); - var tinted = new Float32Array(baseNumComps); - var i, j; - if (usesZeroToOneRange) { - for (i = 0; i < count; i++) { - for (j = 0; j < numComps; j++) { - scaled[j] = src[srcOffset++] * scale; - } - tintFn(scaled, 0, tinted, 0); - for (j = 0; j < baseNumComps; j++) { - baseBuf[pos++] = tinted[j] * 255; - } - } - } else { - for (i = 0; i < count; i++) { - for (j = 0; j < numComps; j++) { - scaled[j] = src[srcOffset++] * scale; - } - tintFn(scaled, 0, tinted, 0); - base.getRgbItem(tinted, 0, baseBuf, pos); - pos += baseNumComps; - } - } - if (!isPassthrough) { - base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01); - } - }, - getOutputLength: function AlternateCS_getOutputLength(inputLength, - alpha01) { - return this.base.getOutputLength(inputLength * - this.base.numComps / this.numComps, - alpha01); - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function AlternateCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - - return AlternateCS; -})(); - -var PatternCS = (function PatternCSClosure() { - function PatternCS(baseCS) { - this.name = 'Pattern'; - this.base = baseCS; - } - PatternCS.prototype = {}; - - return PatternCS; -})(); - -var IndexedCS = (function IndexedCSClosure() { - function IndexedCS(base, highVal, lookup) { - this.name = 'Indexed'; - this.numComps = 1; - this.defaultColor = new Uint8Array([0]); - this.base = base; - this.highVal = highVal; - - var baseNumComps = base.numComps; - var length = baseNumComps * highVal; - var lookupArray; - - if (isStream(lookup)) { - lookupArray = new Uint8Array(length); - var bytes = lookup.getBytes(length); - lookupArray.set(bytes); - } else if (isString(lookup)) { - lookupArray = new Uint8Array(length); - for (var i = 0; i < length; ++i) { - lookupArray[i] = lookup.charCodeAt(i); - } - } else if (lookup instanceof Uint8Array || lookup instanceof Array) { - lookupArray = lookup; - } else { - error('Unrecognized lookup table: ' + lookup); - } - this.lookup = lookupArray; - } - - IndexedCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function IndexedCS_getRgbItem(src, srcOffset, - dest, destOffset) { - var numComps = this.base.numComps; - var start = src[srcOffset] * numComps; - this.base.getRgbItem(this.lookup, start, dest, destOffset); - }, - getRgbBuffer: function IndexedCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var base = this.base; - var numComps = base.numComps; - var outputDelta = base.getOutputLength(numComps, alpha01); - var lookup = this.lookup; - - for (var i = 0; i < count; ++i) { - var lookupPos = src[srcOffset++] * numComps; - base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01); - destOffset += outputDelta; - } - }, - getOutputLength: function IndexedCS_getOutputLength(inputLength, alpha01) { - return this.base.getOutputLength(inputLength * this.base.numComps, - alpha01); - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function IndexedCS_isDefaultDecode(decodeMap) { - // indexed color maps shouldn't be changed - return true; - }, - usesZeroToOneRange: true - }; - return IndexedCS; -})(); - -var DeviceGrayCS = (function DeviceGrayCSClosure() { - function DeviceGrayCS() { - this.name = 'DeviceGray'; - this.numComps = 1; - this.defaultColor = new Float32Array([0]); - } - - DeviceGrayCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function DeviceGrayCS_getRgbItem(src, srcOffset, - dest, destOffset) { - var c = (src[srcOffset] * 255) | 0; - c = c < 0 ? 0 : c > 255 ? 255 : c; - dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c; - }, - getRgbBuffer: function DeviceGrayCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var scale = 255 / ((1 << bits) - 1); - var j = srcOffset, q = destOffset; - for (var i = 0; i < count; ++i) { - var c = (scale * src[j++]) | 0; - dest[q++] = c; - dest[q++] = c; - dest[q++] = c; - q += alpha01; - } - }, - getOutputLength: function DeviceGrayCS_getOutputLength(inputLength, - alpha01) { - return inputLength * (3 + alpha01); - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function DeviceGrayCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - return DeviceGrayCS; -})(); - -var DeviceRgbCS = (function DeviceRgbCSClosure() { - function DeviceRgbCS() { - this.name = 'DeviceRGB'; - this.numComps = 3; - this.defaultColor = new Float32Array([0, 0, 0]); - } - DeviceRgbCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function DeviceRgbCS_getRgbItem(src, srcOffset, - dest, destOffset) { - var r = (src[srcOffset] * 255) | 0; - var g = (src[srcOffset + 1] * 255) | 0; - var b = (src[srcOffset + 2] * 255) | 0; - dest[destOffset] = r < 0 ? 0 : r > 255 ? 255 : r; - dest[destOffset + 1] = g < 0 ? 0 : g > 255 ? 255 : g; - dest[destOffset + 2] = b < 0 ? 0 : b > 255 ? 255 : b; - }, - getRgbBuffer: function DeviceRgbCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - if (bits === 8 && alpha01 === 0) { - dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset); - return; - } - var scale = 255 / ((1 << bits) - 1); - var j = srcOffset, q = destOffset; - for (var i = 0; i < count; ++i) { - dest[q++] = (scale * src[j++]) | 0; - dest[q++] = (scale * src[j++]) | 0; - dest[q++] = (scale * src[j++]) | 0; - q += alpha01; - } - }, - getOutputLength: function DeviceRgbCS_getOutputLength(inputLength, - alpha01) { - return (inputLength * (3 + alpha01) / 3) | 0; - }, - isPassthrough: function DeviceRgbCS_isPassthrough(bits) { - return bits === 8; - }, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function DeviceRgbCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - return DeviceRgbCS; -})(); - -var DeviceCmykCS = (function DeviceCmykCSClosure() { - // The coefficients below was found using numerical analysis: the method of - // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors, - // where color_value is the tabular value from the table of sampled RGB colors - // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding - // CMYK color conversion using the estimation below: - // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255 - function convertToRgb(src, srcOffset, srcScale, dest, destOffset) { - var c = src[srcOffset + 0] * srcScale; - var m = src[srcOffset + 1] * srcScale; - var y = src[srcOffset + 2] * srcScale; - var k = src[srcOffset + 3] * srcScale; - - var r = - (c * (-4.387332384609988 * c + 54.48615194189176 * m + - 18.82290502165302 * y + 212.25662451639585 * k + - -285.2331026137004) + - m * (1.7149763477362134 * m - 5.6096736904047315 * y + - -17.873870861415444 * k - 5.497006427196366) + - y * (-2.5217340131683033 * y - 21.248923337353073 * k + - 17.5119270841813) + - k * (-21.86122147463605 * k - 189.48180835922747) + 255) | 0; - var g = - (c * (8.841041422036149 * c + 60.118027045597366 * m + - 6.871425592049007 * y + 31.159100130055922 * k + - -79.2970844816548) + - m * (-15.310361306967817 * m + 17.575251261109482 * y + - 131.35250912493976 * k - 190.9453302588951) + - y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + - k * (-20.737325471181034 * k - 187.80453709719578) + 255) | 0; - var b = - (c * (0.8842522430003296 * c + 8.078677503112928 * m + - 30.89978309703729 * y - 0.23883238689178934 * k + - -14.183576799673286) + - m * (10.49593273432072 * m + 63.02378494754052 * y + - 50.606957656360734 * k - 112.23884253719248) + - y * (0.03296041114873217 * y + 115.60384449646641 * k + - -193.58209356861505) + - k * (-22.33816807309886 * k - 180.12613974708367) + 255) | 0; - - dest[destOffset] = r > 255 ? 255 : r < 0 ? 0 : r; - dest[destOffset + 1] = g > 255 ? 255 : g < 0 ? 0 : g; - dest[destOffset + 2] = b > 255 ? 255 : b < 0 ? 0 : b; - } - - function DeviceCmykCS() { - this.name = 'DeviceCMYK'; - this.numComps = 4; - this.defaultColor = new Float32Array([0, 0, 0, 1]); - } - DeviceCmykCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function DeviceCmykCS_getRgbItem(src, srcOffset, - dest, destOffset) { - convertToRgb(src, srcOffset, 1, dest, destOffset); - }, - getRgbBuffer: function DeviceCmykCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var scale = 1 / ((1 << bits) - 1); - for (var i = 0; i < count; i++) { - convertToRgb(src, srcOffset, scale, dest, destOffset); - srcOffset += 4; - destOffset += 3 + alpha01; - } - }, - getOutputLength: function DeviceCmykCS_getOutputLength(inputLength, - alpha01) { - return (inputLength / 4 * (3 + alpha01)) | 0; - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function DeviceCmykCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - - return DeviceCmykCS; -})(); - -// -// CalGrayCS: Based on "PDF Reference, Sixth Ed", p.245 -// -var CalGrayCS = (function CalGrayCSClosure() { - function CalGrayCS(whitePoint, blackPoint, gamma) { - this.name = 'CalGray'; - this.numComps = 1; - this.defaultColor = new Float32Array([0]); - - if (!whitePoint) { - error('WhitePoint missing - required for color space CalGray'); - } - blackPoint = blackPoint || [0, 0, 0]; - gamma = gamma || 1; - - // Translate arguments to spec variables. - this.XW = whitePoint[0]; - this.YW = whitePoint[1]; - this.ZW = whitePoint[2]; - - this.XB = blackPoint[0]; - this.YB = blackPoint[1]; - this.ZB = blackPoint[2]; - - this.G = gamma; - - // Validate variables as per spec. - if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { - error('Invalid WhitePoint components for ' + this.name + - ', no fallback available'); - } - - if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { - info('Invalid BlackPoint for ' + this.name + ', falling back to default'); - this.XB = this.YB = this.ZB = 0; - } - - if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) { - warn(this.name + ', BlackPoint: XB: ' + this.XB + ', YB: ' + this.YB + - ', ZB: ' + this.ZB + ', only default values are supported.'); - } - - if (this.G < 1) { - info('Invalid Gamma: ' + this.G + ' for ' + this.name + - ', falling back to default'); - this.G = 1; - } - } - - function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { - // A represents a gray component of a calibrated gray space. - // A <---> AG in the spec - var A = src[srcOffset] * scale; - var AG = Math.pow(A, cs.G); - - // Computes L as per spec. ( = cs.YW * AG ) - // Except if other than default BlackPoint values are used. - var L = cs.YW * AG; - // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4. - // Convert values to rgb range [0, 255]. - var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0) | 0; - dest[destOffset] = val; - dest[destOffset + 1] = val; - dest[destOffset + 2] = val; - } - - CalGrayCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function CalGrayCS_getRgbItem(src, srcOffset, - dest, destOffset) { - convertToRgb(this, src, srcOffset, dest, destOffset, 1); - }, - getRgbBuffer: function CalGrayCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var scale = 1 / ((1 << bits) - 1); - - for (var i = 0; i < count; ++i) { - convertToRgb(this, src, srcOffset, dest, destOffset, scale); - srcOffset += 1; - destOffset += 3 + alpha01; - } - }, - getOutputLength: function CalGrayCS_getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01); - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function CalGrayCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - return CalGrayCS; -})(); - -// -// CalRGBCS: Based on "PDF Reference, Sixth Ed", p.247 -// -var CalRGBCS = (function CalRGBCSClosure() { - - // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these - // matrices. - var BRADFORD_SCALE_MATRIX = new Float32Array([ - 0.8951, 0.2664, -0.1614, - -0.7502, 1.7135, 0.0367, - 0.0389, -0.0685, 1.0296]); - - var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([ - 0.9869929, -0.1470543, 0.1599627, - 0.4323053, 0.5183603, 0.0492912, - -0.0085287, 0.0400428, 0.9684867]); - - // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html. - var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([ - 3.2404542, -1.5371385, -0.4985314, - -0.9692660, 1.8760108, 0.0415560, - 0.0556434, -0.2040259, 1.0572252]); - - var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]); - - var tempNormalizeMatrix = new Float32Array(3); - var tempConvertMatrix1 = new Float32Array(3); - var tempConvertMatrix2 = new Float32Array(3); - - var DECODE_L_CONSTANT = Math.pow(((8 + 16) / 116), 3) / 8.0; - - function CalRGBCS(whitePoint, blackPoint, gamma, matrix) { - this.name = 'CalRGB'; - this.numComps = 3; - this.defaultColor = new Float32Array(3); - - if (!whitePoint) { - error('WhitePoint missing - required for color space CalRGB'); - } - blackPoint = blackPoint || new Float32Array(3); - gamma = gamma || new Float32Array([1, 1, 1]); - matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); - - // Translate arguments to spec variables. - var XW = whitePoint[0]; - var YW = whitePoint[1]; - var ZW = whitePoint[2]; - this.whitePoint = whitePoint; - - var XB = blackPoint[0]; - var YB = blackPoint[1]; - var ZB = blackPoint[2]; - this.blackPoint = blackPoint; - - this.GR = gamma[0]; - this.GG = gamma[1]; - this.GB = gamma[2]; - - this.MXA = matrix[0]; - this.MYA = matrix[1]; - this.MZA = matrix[2]; - this.MXB = matrix[3]; - this.MYB = matrix[4]; - this.MZB = matrix[5]; - this.MXC = matrix[6]; - this.MYC = matrix[7]; - this.MZC = matrix[8]; - - // Validate variables as per spec. - if (XW < 0 || ZW < 0 || YW !== 1) { - error('Invalid WhitePoint components for ' + this.name + - ', no fallback available'); - } - - if (XB < 0 || YB < 0 || ZB < 0) { - info('Invalid BlackPoint for ' + this.name + ' [' + XB + ', ' + YB + - ', ' + ZB + '], falling back to default'); - this.blackPoint = new Float32Array(3); - } - - if (this.GR < 0 || this.GG < 0 || this.GB < 0) { - info('Invalid Gamma [' + this.GR + ', ' + this.GG + ', ' + this.GB + - '] for ' + this.name + ', falling back to default'); - this.GR = this.GG = this.GB = 1; - } - - if (this.MXA < 0 || this.MYA < 0 || this.MZA < 0 || - this.MXB < 0 || this.MYB < 0 || this.MZB < 0 || - this.MXC < 0 || this.MYC < 0 || this.MZC < 0) { - info('Invalid Matrix for ' + this.name + ' [' + - this.MXA + ', ' + this.MYA + ', ' + this.MZA + - this.MXB + ', ' + this.MYB + ', ' + this.MZB + - this.MXC + ', ' + this.MYC + ', ' + this.MZC + - '], falling back to default'); - this.MXA = this.MYB = this.MZC = 1; - this.MXB = this.MYA = this.MZA = this.MXC = this.MYC = this.MZB = 0; - } - } - - function matrixProduct(a, b, result) { - result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; - result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2]; - result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2]; - } - - function convertToFlat(sourceWhitePoint, LMS, result) { - result[0] = LMS[0] * 1 / sourceWhitePoint[0]; - result[1] = LMS[1] * 1 / sourceWhitePoint[1]; - result[2] = LMS[2] * 1 / sourceWhitePoint[2]; - } - - function convertToD65(sourceWhitePoint, LMS, result) { - var D65X = 0.95047; - var D65Y = 1; - var D65Z = 1.08883; - - result[0] = LMS[0] * D65X / sourceWhitePoint[0]; - result[1] = LMS[1] * D65Y / sourceWhitePoint[1]; - result[2] = LMS[2] * D65Z / sourceWhitePoint[2]; - } - - function sRGBTransferFunction(color) { - // See http://en.wikipedia.org/wiki/SRGB. - if (color <= 0.0031308){ - return adjustToRange(0, 1, 12.92 * color); - } - - return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055); - } - - function adjustToRange(min, max, value) { - return Math.max(min, Math.min(max, value)); - } - - function decodeL(L) { - if (L < 0) { - return -decodeL(-L); - } - - if (L > 8.0) { - return Math.pow(((L + 16) / 116), 3); - } - - return L * DECODE_L_CONSTANT; - } - - function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) { - - // In case the blackPoint is already the default blackPoint then there is - // no need to do compensation. - if (sourceBlackPoint[0] === 0 && - sourceBlackPoint[1] === 0 && - sourceBlackPoint[2] === 0) { - result[0] = XYZ_Flat[0]; - result[1] = XYZ_Flat[1]; - result[2] = XYZ_Flat[2]; - return; - } - - // For the blackPoint calculation details, please see - // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/ - // AdobeBPC.pdf. - // The destination blackPoint is the default blackPoint [0, 0, 0]. - var zeroDecodeL = decodeL(0); - - var X_DST = zeroDecodeL; - var X_SRC = decodeL(sourceBlackPoint[0]); - - var Y_DST = zeroDecodeL; - var Y_SRC = decodeL(sourceBlackPoint[1]); - - var Z_DST = zeroDecodeL; - var Z_SRC = decodeL(sourceBlackPoint[2]); - - var X_Scale = (1 - X_DST) / (1 - X_SRC); - var X_Offset = 1 - X_Scale; - - var Y_Scale = (1 - Y_DST) / (1 - Y_SRC); - var Y_Offset = 1 - Y_Scale; - - var Z_Scale = (1 - Z_DST) / (1 - Z_SRC); - var Z_Offset = 1 - Z_Scale; - - result[0] = XYZ_Flat[0] * X_Scale + X_Offset; - result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset; - result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset; - } - - function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) { - - // In case the whitePoint is already flat then there is no need to do - // normalization. - if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) { - result[0] = XYZ_In[0]; - result[1] = XYZ_In[1]; - result[2] = XYZ_In[2]; - return; - } - - var LMS = result; - matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); - - var LMS_Flat = tempNormalizeMatrix; - convertToFlat(sourceWhitePoint, LMS, LMS_Flat); - - matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result); - } - - function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) { - - var LMS = result; - matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); - - var LMS_D65 = tempNormalizeMatrix; - convertToD65(sourceWhitePoint, LMS, LMS_D65); - - matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result); - } - - function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { - // A, B and C represent a red, green and blue components of a calibrated - // rgb space. - var A = adjustToRange(0, 1, src[srcOffset] * scale); - var B = adjustToRange(0, 1, src[srcOffset + 1] * scale); - var C = adjustToRange(0, 1, src[srcOffset + 2] * scale); - - // A <---> AGR in the spec - // B <---> BGG in the spec - // C <---> CGB in the spec - var AGR = Math.pow(A, cs.GR); - var BGG = Math.pow(B, cs.GG); - var CGB = Math.pow(C, cs.GB); - - // Computes intermediate variables L, M, N as per spec. - // To decode X, Y, Z values map L, M, N directly to them. - var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB; - var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB; - var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB; - - // The following calculations are based on this document: - // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/ - // AdobeBPC.pdf. - var XYZ = tempConvertMatrix1; - XYZ[0] = X; - XYZ[1] = Y; - XYZ[2] = Z; - var XYZ_Flat = tempConvertMatrix2; - - normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat); - - var XYZ_Black = tempConvertMatrix1; - compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black); - - var XYZ_D65 = tempConvertMatrix2; - normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65); - - var SRGB = tempConvertMatrix1; - matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB); - - var sR = sRGBTransferFunction(SRGB[0]); - var sG = sRGBTransferFunction(SRGB[1]); - var sB = sRGBTransferFunction(SRGB[2]); - - // Convert the values to rgb range [0, 255]. - dest[destOffset] = Math.round(sR * 255); - dest[destOffset + 1] = Math.round(sG * 255); - dest[destOffset + 2] = Math.round(sB * 255); - } - - CalRGBCS.prototype = { - getRgb: function CalRGBCS_getRgb(src, srcOffset) { - var rgb = new Uint8Array(3); - this.getRgbItem(src, srcOffset, rgb, 0); - return rgb; - }, - getRgbItem: function CalRGBCS_getRgbItem(src, srcOffset, - dest, destOffset) { - convertToRgb(this, src, srcOffset, dest, destOffset, 1); - }, - getRgbBuffer: function CalRGBCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var scale = 1 / ((1 << bits) - 1); - - for (var i = 0; i < count; ++i) { - convertToRgb(this, src, srcOffset, dest, destOffset, scale); - srcOffset += 3; - destOffset += 3 + alpha01; - } - }, - getOutputLength: function CalRGBCS_getOutputLength(inputLength, alpha01) { - return (inputLength * (3 + alpha01) / 3) | 0; - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function CalRGBCS_isDefaultDecode(decodeMap) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - }, - usesZeroToOneRange: true - }; - return CalRGBCS; -})(); - -// -// LabCS: Based on "PDF Reference, Sixth Ed", p.250 -// -var LabCS = (function LabCSClosure() { - function LabCS(whitePoint, blackPoint, range) { - this.name = 'Lab'; - this.numComps = 3; - this.defaultColor = new Float32Array([0, 0, 0]); - - if (!whitePoint) { - error('WhitePoint missing - required for color space Lab'); - } - blackPoint = blackPoint || [0, 0, 0]; - range = range || [-100, 100, -100, 100]; - - // Translate args to spec variables - this.XW = whitePoint[0]; - this.YW = whitePoint[1]; - this.ZW = whitePoint[2]; - this.amin = range[0]; - this.amax = range[1]; - this.bmin = range[2]; - this.bmax = range[3]; - - // These are here just for completeness - the spec doesn't offer any - // formulas that use BlackPoint in Lab - this.XB = blackPoint[0]; - this.YB = blackPoint[1]; - this.ZB = blackPoint[2]; - - // Validate vars as per spec - if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { - error('Invalid WhitePoint components, no fallback available'); - } - - if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { - info('Invalid BlackPoint, falling back to default'); - this.XB = this.YB = this.ZB = 0; - } - - if (this.amin > this.amax || this.bmin > this.bmax) { - info('Invalid Range, falling back to defaults'); - this.amin = -100; - this.amax = 100; - this.bmin = -100; - this.bmax = 100; - } - } - - // Function g(x) from spec - function fn_g(x) { - if (x >= 6 / 29) { - return x * x * x; - } else { - return (108 / 841) * (x - 4 / 29); - } - } - - function decode(value, high1, low2, high2) { - return low2 + (value) * (high2 - low2) / (high1); - } - - // If decoding is needed maxVal should be 2^bits per component - 1. - function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) { - // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax] - // not the usual [0, 1]. If a command like setFillColor is used the src - // values will already be within the correct range. However, if we are - // converting an image we have to map the values to the correct range given - // above. - // Ls,as,bs <---> L*,a*,b* in the spec - var Ls = src[srcOffset]; - var as = src[srcOffset + 1]; - var bs = src[srcOffset + 2]; - if (maxVal !== false) { - Ls = decode(Ls, maxVal, 0, 100); - as = decode(as, maxVal, cs.amin, cs.amax); - bs = decode(bs, maxVal, cs.bmin, cs.bmax); - } - - // Adjust limits of 'as' and 'bs' - as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as; - bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs; - - // Computes intermediate variables X,Y,Z as per spec - var M = (Ls + 16) / 116; - var L = M + (as / 500); - var N = M - (bs / 200); - - var X = cs.XW * fn_g(L); - var Y = cs.YW * fn_g(M); - var Z = cs.ZW * fn_g(N); - - var r, g, b; - // Using different conversions for D50 and D65 white points, - // per http://www.color.org/srgb.pdf - if (cs.ZW < 1) { - // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249) - r = X * 3.1339 + Y * -1.6170 + Z * -0.4906; - g = X * -0.9785 + Y * 1.9160 + Z * 0.0333; - b = X * 0.0720 + Y * -0.2290 + Z * 1.4057; - } else { - // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888) - r = X * 3.2406 + Y * -1.5372 + Z * -0.4986; - g = X * -0.9689 + Y * 1.8758 + Z * 0.0415; - b = X * 0.0557 + Y * -0.2040 + Z * 1.0570; - } - // clamp color values to [0,1] range then convert to [0,255] range. - dest[destOffset] = r <= 0 ? 0 : r >= 1 ? 255 : Math.sqrt(r) * 255 | 0; - dest[destOffset + 1] = g <= 0 ? 0 : g >= 1 ? 255 : Math.sqrt(g) * 255 | 0; - dest[destOffset + 2] = b <= 0 ? 0 : b >= 1 ? 255 : Math.sqrt(b) * 255 | 0; - } - - LabCS.prototype = { - getRgb: ColorSpace.prototype.getRgb, - getRgbItem: function LabCS_getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(this, src, srcOffset, false, dest, destOffset); - }, - getRgbBuffer: function LabCS_getRgbBuffer(src, srcOffset, count, - dest, destOffset, bits, - alpha01) { - var maxVal = (1 << bits) - 1; - for (var i = 0; i < count; i++) { - convertToRgb(this, src, srcOffset, maxVal, dest, destOffset); - srcOffset += 3; - destOffset += 3 + alpha01; - } - }, - getOutputLength: function LabCS_getOutputLength(inputLength, alpha01) { - return (inputLength * (3 + alpha01) / 3) | 0; - }, - isPassthrough: ColorSpace.prototype.isPassthrough, - fillRgb: ColorSpace.prototype.fillRgb, - isDefaultDecode: function LabCS_isDefaultDecode(decodeMap) { - // XXX: Decoding is handled with the lab conversion because of the strange - // ranges that are used. - return true; - }, - usesZeroToOneRange: false - }; - return LabCS; -})(); - - -var ARCFourCipher = (function ARCFourCipherClosure() { - function ARCFourCipher(key) { - this.a = 0; - this.b = 0; - var s = new Uint8Array(256); - var i, j = 0, tmp, keyLength = key.length; - for (i = 0; i < 256; ++i) { - s[i] = i; - } - for (i = 0; i < 256; ++i) { - tmp = s[i]; - j = (j + tmp + key[i % keyLength]) & 0xFF; - s[i] = s[j]; - s[j] = tmp; - } - this.s = s; - } - - ARCFourCipher.prototype = { - encryptBlock: function ARCFourCipher_encryptBlock(data) { - var i, n = data.length, tmp, tmp2; - var a = this.a, b = this.b, s = this.s; - var output = new Uint8Array(n); - for (i = 0; i < n; ++i) { - a = (a + 1) & 0xFF; - tmp = s[a]; - b = (b + tmp) & 0xFF; - tmp2 = s[b]; - s[a] = tmp2; - s[b] = tmp; - output[i] = data[i] ^ s[(tmp + tmp2) & 0xFF]; - } - this.a = a; - this.b = b; - return output; - } - }; - ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock; - - return ARCFourCipher; -})(); - -var calculateMD5 = (function calculateMD5Closure() { - var r = new Uint8Array([ - 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, - 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, - 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, - 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]); - - var k = new Int32Array([ - -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, - -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, - 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, - 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, - 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, - 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, - -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, - -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, - -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, - -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, - -145523070, -1120210379, 718787259, -343485551]); - - function hash(data, offset, length) { - var h0 = 1732584193, h1 = -271733879, h2 = -1732584194, h3 = 271733878; - // pre-processing - var paddedLength = (length + 72) & ~63; // data + 9 extra bytes - var padded = new Uint8Array(paddedLength); - var i, j, n; - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - padded[i++] = 0x80; - n = paddedLength - 8; - while (i < n) { - padded[i++] = 0; - } - padded[i++] = (length << 3) & 0xFF; - padded[i++] = (length >> 5) & 0xFF; - padded[i++] = (length >> 13) & 0xFF; - padded[i++] = (length >> 21) & 0xFF; - padded[i++] = (length >>> 29) & 0xFF; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - var w = new Int32Array(16); - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j, i += 4) { - w[j] = (padded[i] | (padded[i + 1] << 8) | - (padded[i + 2] << 16) | (padded[i + 3] << 24)); - } - var a = h0, b = h1, c = h2, d = h3, f, g; - for (j = 0; j < 64; ++j) { - if (j < 16) { - f = (b & c) | ((~b) & d); - g = j; - } else if (j < 32) { - f = (d & b) | ((~d) & c); - g = (5 * j + 1) & 15; - } else if (j < 48) { - f = b ^ c ^ d; - g = (3 * j + 5) & 15; - } else { - f = c ^ (b | (~d)); - g = (7 * j) & 15; - } - var tmp = d, rotateArg = (a + f + k[j] + w[g]) | 0, rotate = r[j]; - d = c; - c = b; - b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0; - a = tmp; - } - h0 = (h0 + a) | 0; - h1 = (h1 + b) | 0; - h2 = (h2 + c) | 0; - h3 = (h3 + d) | 0; - } - return new Uint8Array([ - h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF, - h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF, - h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF, - h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF - ]); - } - - return hash; -})(); -var Word64 = (function Word64Closure() { - function Word64(highInteger, lowInteger) { - this.high = highInteger | 0; - this.low = lowInteger | 0; - } - Word64.prototype = { - and: function Word64_and(word) { - this.high &= word.high; - this.low &= word.low; - }, - xor: function Word64_xor(word) { - this.high ^= word.high; - this.low ^= word.low; - }, - - or: function Word64_or(word) { - this.high |= word.high; - this.low |= word.low; - }, - - shiftRight: function Word64_shiftRight(places) { - if (places >= 32) { - this.low = (this.high >>> (places - 32)) | 0; - this.high = 0; - } else { - this.low = (this.low >>> places) | (this.high << (32 - places)); - this.high = (this.high >>> places) | 0; - } - }, - - shiftLeft: function Word64_shiftLeft(places) { - if (places >= 32) { - this.high = this.low << (places - 32); - this.low = 0; - } else { - this.high = (this.high << places) | (this.low >>> (32 - places)); - this.low = this.low << places; - } - }, - - rotateRight: function Word64_rotateRight(places) { - var low, high; - if (places & 32) { - high = this.low; - low = this.high; - } else { - low = this.low; - high = this.high; - } - places &= 31; - this.low = (low >>> places) | (high << (32 - places)); - this.high = (high >>> places) | (low << (32 - places)); - }, - - not: function Word64_not() { - this.high = ~this.high; - this.low = ~this.low; - }, - - add: function Word64_add(word) { - var lowAdd = (this.low >>> 0) + (word.low >>> 0); - var highAdd = (this.high >>> 0) + (word.high >>> 0); - if (lowAdd > 0xFFFFFFFF) { - highAdd += 1; - } - this.low = lowAdd | 0; - this.high = highAdd | 0; - }, - - copyTo: function Word64_copyTo(bytes, offset) { - bytes[offset] = (this.high >>> 24) & 0xFF; - bytes[offset + 1] = (this.high >> 16) & 0xFF; - bytes[offset + 2] = (this.high >> 8) & 0xFF; - bytes[offset + 3] = this.high & 0xFF; - bytes[offset + 4] = (this.low >>> 24) & 0xFF; - bytes[offset + 5] = (this.low >> 16) & 0xFF; - bytes[offset + 6] = (this.low >> 8) & 0xFF; - bytes[offset + 7] = this.low & 0xFF; - }, - - assign: function Word64_assign(word) { - this.high = word.high; - this.low = word.low; - } - }; - return Word64; -})(); - -var calculateSHA256 = (function calculateSHA256Closure() { - function rotr(x, n) { - return (x >>> n) | (x << 32 - n); - } - - function ch(x, y, z) { - return (x & y) ^ (~x & z); - } - - function maj(x, y, z) { - return (x & y) ^ (x & z) ^ (y & z); - } - - function sigma(x) { - return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22); - } - - function sigmaPrime(x) { - return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25); - } - - function littleSigma(x) { - return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3; - } - - function littleSigmaPrime(x) { - return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10; - } - - var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; - - function hash(data, offset, length) { - // initial hash values - var h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, - h3 = 0xa54ff53a, h4 = 0x510e527f, h5 = 0x9b05688c, - h6 = 0x1f83d9ab, h7 = 0x5be0cd19; - // pre-processing - var paddedLength = Math.ceil((length + 9) / 64) * 64; - var padded = new Uint8Array(paddedLength); - var i, j, n; - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - padded[i++] = 0x80; - n = paddedLength - 8; - while (i < n) { - padded[i++] = 0; - } - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = (length >>> 29) & 0xFF; - padded[i++] = (length >> 21) & 0xFF; - padded[i++] = (length >> 13) & 0xFF; - padded[i++] = (length >> 5) & 0xFF; - padded[i++] = (length << 3) & 0xFF; - var w = new Uint32Array(64); - // for each 512 bit block - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j) { - w[j] = (padded[i] << 24 | (padded[i + 1] << 16) | - (padded[i + 2] << 8) | (padded[i + 3])); - i += 4; - } - - for (j = 16; j < 64; ++j) { - w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + - littleSigma(w[j - 15]) + w[j - 16] | 0; - } - var a = h0, b = h1, c = h2, d = h3, e = h4, - f = h5, g = h6, h = h7, t1, t2; - for (j = 0; j < 64; ++j) { - t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j]; - t2 = sigma(a) + maj(a, b, c); - h = g; - g = f; - f = e; - e = (d + t1) | 0; - d = c; - c = b; - b = a; - a = (t1 + t2) | 0; - } - h0 = (h0 + a) | 0; - h1 = (h1 + b) | 0; - h2 = (h2 + c) | 0; - h3 = (h3 + d) | 0; - h4 = (h4 + e) | 0; - h5 = (h5 + f) | 0; - h6 = (h6 + g) | 0; - h7 = (h7 + h) | 0; - } - return new Uint8Array([ - (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF, - (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF, - (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF, - (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF, - (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF, - (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF, - (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF, - (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF - ]); - } - - return hash; -})(); - -var calculateSHA512 = (function calculateSHA512Closure() { - function ch(result, x, y, z, tmp) { - result.assign(x); - result.and(y); - tmp.assign(x); - tmp.not(); - tmp.and(z); - result.xor(tmp); - } - - function maj(result, x, y, z, tmp) { - result.assign(x); - result.and(y); - tmp.assign(x); - tmp.and(z); - result.xor(tmp); - tmp.assign(y); - tmp.and(z); - result.xor(tmp); - } - - function sigma(result, x, tmp) { - result.assign(x); - result.rotateRight(28); - tmp.assign(x); - tmp.rotateRight(34); - result.xor(tmp); - tmp.assign(x); - tmp.rotateRight(39); - result.xor(tmp); - } - - function sigmaPrime(result, x, tmp) { - result.assign(x); - result.rotateRight(14); - tmp.assign(x); - tmp.rotateRight(18); - result.xor(tmp); - tmp.assign(x); - tmp.rotateRight(41); - result.xor(tmp); - } - - function littleSigma(result, x, tmp) { - result.assign(x); - result.rotateRight(1); - tmp.assign(x); - tmp.rotateRight(8); - result.xor(tmp); - tmp.assign(x); - tmp.shiftRight(7); - result.xor(tmp); - } - - function littleSigmaPrime(result, x, tmp) { - result.assign(x); - result.rotateRight(19); - tmp.assign(x); - tmp.rotateRight(61); - result.xor(tmp); - tmp.assign(x); - tmp.shiftRight(6); - result.xor(tmp); - } - - var k = [ - new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), - new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), - new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), - new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), - new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), - new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), - new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), - new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), - new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), - new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), - new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), - new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), - new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), - new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), - new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), - new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), - new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), - new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), - new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), - new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), - new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), - new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), - new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), - new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), - new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), - new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), - new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), - new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), - new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), - new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), - new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), - new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), - new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), - new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), - new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), - new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), - new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), - new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), - new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), - new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]; - - function hash(data, offset, length, mode384) { - mode384 = !!mode384; - // initial hash values - var h0, h1, h2, h3, h4, h5, h6, h7; - if (!mode384) { - h0 = new Word64(0x6a09e667, 0xf3bcc908); - h1 = new Word64(0xbb67ae85, 0x84caa73b); - h2 = new Word64(0x3c6ef372, 0xfe94f82b); - h3 = new Word64(0xa54ff53a, 0x5f1d36f1); - h4 = new Word64(0x510e527f, 0xade682d1); - h5 = new Word64(0x9b05688c, 0x2b3e6c1f); - h6 = new Word64(0x1f83d9ab, 0xfb41bd6b); - h7 = new Word64(0x5be0cd19, 0x137e2179); - } - else { - // SHA384 is exactly the same - // except with different starting values and a trimmed result - h0 = new Word64(0xcbbb9d5d, 0xc1059ed8); - h1 = new Word64(0x629a292a, 0x367cd507); - h2 = new Word64(0x9159015a, 0x3070dd17); - h3 = new Word64(0x152fecd8, 0xf70e5939); - h4 = new Word64(0x67332667, 0xffc00b31); - h5 = new Word64(0x8eb44a87, 0x68581511); - h6 = new Word64(0xdb0c2e0d, 0x64f98fa7); - h7 = new Word64(0x47b5481d, 0xbefa4fa4); - } - - // pre-processing - var paddedLength = Math.ceil((length + 17) / 128) * 128; - var padded = new Uint8Array(paddedLength); - var i, j, n; - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - padded[i++] = 0x80; - n = paddedLength - 16; - while (i < n) { - padded[i++] = 0; - } - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = (length >>> 29) & 0xFF; - padded[i++] = (length >> 21) & 0xFF; - padded[i++] = (length >> 13) & 0xFF; - padded[i++] = (length >> 5) & 0xFF; - padded[i++] = (length << 3) & 0xFF; - - var w = new Array(80); - for (i = 0; i < 80; i++) { - w[i] = new Word64(0, 0); - } - var a = new Word64(0, 0), b = new Word64(0, 0), c = new Word64(0, 0); - var d = new Word64(0, 0), e = new Word64(0, 0), f = new Word64(0, 0); - var g = new Word64(0, 0), h = new Word64(0, 0); - var t1 = new Word64(0, 0), t2 = new Word64(0, 0); - var tmp1 = new Word64(0, 0), tmp2 = new Word64(0, 0), tmp3; - - // for each 1024 bit block - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j) { - w[j].high = (padded[i] << 24) | (padded[i + 1] << 16) | - (padded[i + 2] << 8) | (padded[i + 3]); - w[j].low = (padded[i + 4]) << 24 | (padded[i + 5]) << 16 | - (padded[i + 6]) << 8 | (padded[i + 7]); - i += 8; - } - for (j = 16; j < 80; ++j) { - tmp3 = w[j]; - littleSigmaPrime(tmp3, w[j - 2], tmp2); - tmp3.add(w[j - 7]); - littleSigma(tmp1, w[j - 15], tmp2); - tmp3.add(tmp1); - tmp3.add(w[j - 16]); - } - - a.assign(h0); b.assign(h1); c.assign(h2); d.assign(h3); - e.assign(h4); f.assign(h5); g.assign(h6); h.assign(h7); - for (j = 0; j < 80; ++j) { - t1.assign(h); - sigmaPrime(tmp1, e, tmp2); - t1.add(tmp1); - ch(tmp1, e, f, g, tmp2); - t1.add(tmp1); - t1.add(k[j]); - t1.add(w[j]); - - sigma(t2, a, tmp2); - maj(tmp1, a, b, c, tmp2); - t2.add(tmp1); - - tmp3 = h; - h = g; - g = f; - f = e; - d.add(t1); - e = d; - d = c; - c = b; - b = a; - tmp3.assign(t1); - tmp3.add(t2); - a = tmp3; - } - h0.add(a); - h1.add(b); - h2.add(c); - h3.add(d); - h4.add(e); - h5.add(f); - h6.add(g); - h7.add(h); - } - - var result; - if (!mode384) { - result = new Uint8Array(64); - h0.copyTo(result,0); - h1.copyTo(result,8); - h2.copyTo(result,16); - h3.copyTo(result,24); - h4.copyTo(result,32); - h5.copyTo(result,40); - h6.copyTo(result,48); - h7.copyTo(result,56); - } - else { - result = new Uint8Array(48); - h0.copyTo(result,0); - h1.copyTo(result,8); - h2.copyTo(result,16); - h3.copyTo(result,24); - h4.copyTo(result,32); - h5.copyTo(result,40); - } - return result; - } - - return hash; -})(); -var calculateSHA384 = (function calculateSHA384Closure() { - function hash(data, offset, length) { - return calculateSHA512(data, offset, length, true); - } - - return hash; -})(); -var NullCipher = (function NullCipherClosure() { - function NullCipher() { - } - - NullCipher.prototype = { - decryptBlock: function NullCipher_decryptBlock(data) { - return data; - } - }; - - return NullCipher; -})(); - -var AES128Cipher = (function AES128CipherClosure() { - var rcon = new Uint8Array([ - 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, - 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, - 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, - 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, - 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, - 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, - 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, - 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, - 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, - 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, - 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, - 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, - 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, - 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, - 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, - 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, - 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, - 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, - 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, - 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, - 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, - 0x74, 0xe8, 0xcb, 0x8d]); - - var s = new Uint8Array([ - 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, - 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, - 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, - 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, - 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, - 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, - 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, - 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, - 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, - 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, - 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, - 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, - 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, - 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, - 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, - 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, - 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, - 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, - 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, - 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, - 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, - 0xb0, 0x54, 0xbb, 0x16]); - - var inv_s = new Uint8Array([ - 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, - 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, - 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, - 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, - 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, - 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, - 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, - 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, - 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, - 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, - 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, - 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, - 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, - 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, - 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, - 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, - 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, - 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, - 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, - 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, - 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, - 0x55, 0x21, 0x0c, 0x7d]); - var mixCol = new Uint8Array(256); - for (var i = 0; i < 256; i++) { - if (i < 128) { - mixCol[i] = i << 1; - } else { - mixCol[i] = (i << 1) ^ 0x1b; - } - } - var mix = new Uint32Array([ - 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, - 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, - 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, - 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, - 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, - 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, - 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, - 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, - 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, - 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, - 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, - 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, - 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, - 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, - 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, - 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, - 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, - 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, - 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, - 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, - 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, - 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, - 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, - 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, - 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, - 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, - 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, - 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, - 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, - 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, - 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, - 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, - 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, - 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, - 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, - 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, - 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, - 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, - 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, - 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, - 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, - 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, - 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); - - function expandKey128(cipherKey) { - var b = 176, result = new Uint8Array(b); - result.set(cipherKey); - for (var j = 16, i = 1; j < b; ++i) { - // RotWord - var t1 = result[j - 3], t2 = result[j - 2], - t3 = result[j - 1], t4 = result[j - 4]; - // SubWord - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - // Rcon - t1 = t1 ^ rcon[i]; - for (var n = 0; n < 4; ++n) { - result[j] = (t1 ^= result[j - 16]); - j++; - result[j] = (t2 ^= result[j - 16]); - j++; - result[j] = (t3 ^= result[j - 16]); - j++; - result[j] = (t4 ^= result[j - 16]); - j++; - } - } - return result; - } - - function decrypt128(input, key) { - var state = new Uint8Array(16); - state.set(input); - var i, j, k; - var t, u, v; - // AddRoundKey - for (j = 0, k = 160; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - for (i = 9; i >= 1; --i) { - // InvShiftRows - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - // InvSubBytes - for (j = 0; j < 16; ++j) { - state[j] = inv_s[state[j]]; - } - // AddRoundKey - for (j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - // InvMixColumns - for (j = 0; j < 16; j += 4) { - var s0 = mix[state[j]], s1 = mix[state[j + 1]], - s2 = mix[state[j + 2]], s3 = mix[state[j + 3]]; - t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^ - (s3 >>> 24) ^ (s3 << 8)); - state[j] = (t >>> 24) & 0xFF; - state[j + 1] = (t >> 16) & 0xFF; - state[j + 2] = (t >> 8) & 0xFF; - state[j + 3] = t & 0xFF; - } - } - // InvShiftRows - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - for (j = 0; j < 16; ++j) { - // InvSubBytes - state[j] = inv_s[state[j]]; - // AddRoundKey - state[j] ^= key[j]; - } - return state; - } - - function encrypt128(input, key) { - var t, u, v, k; - var state = new Uint8Array(16); - state.set(input); - for (j = 0; j < 16; ++j) { - // AddRoundKey - state[j] ^= key[j]; - } - - for (i = 1; i < 10; i++) { - //SubBytes - for (j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - //ShiftRows - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - //MixColumns - for (var j = 0; j < 16; j += 4) { - var s0 = state[j + 0], s1 = state[j + 1]; - var s2 = state[j + 2], s3 = state[j + 3]; - t = s0 ^ s1 ^ s2 ^ s3; - state[j + 0] ^= t ^ mixCol[s0 ^ s1]; - state[j + 1] ^= t ^ mixCol[s1 ^ s2]; - state[j + 2] ^= t ^ mixCol[s2 ^ s3]; - state[j + 3] ^= t ^ mixCol[s3 ^ s0]; - } - //AddRoundKey - for (j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - } - - //SubBytes - for (j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - //ShiftRows - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - //AddRoundKey - for (j = 0, k = 160; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - return state; - } - - function AES128Cipher(key) { - this.key = expandKey128(key); - this.buffer = new Uint8Array(16); - this.bufferPosition = 0; - } - - function decryptBlock2(data, finalize) { - var i, j, ii, sourceLength = data.length, - buffer = this.buffer, bufferLength = this.bufferPosition, - result = [], iv = this.iv; - for (i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - if (bufferLength < 16) { - continue; - } - // buffer is full, decrypting - var plain = decrypt128(buffer, this.key); - // xor-ing the IV vector to get plain text - for (j = 0; j < 16; ++j) { - plain[j] ^= iv[j]; - } - iv = buffer; - result.push(plain); - buffer = new Uint8Array(16); - bufferLength = 0; - } - // saving incomplete buffer - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - if (result.length === 0) { - return new Uint8Array([]); - } - // combining plain text blocks into one - var outputLength = 16 * result.length; - if (finalize) { - // undo a padding that is described in RFC 2898 - var lastBlock = result[result.length - 1]; - var psLen = lastBlock[15]; - if (psLen <= 16) { - for (i = 15, ii = 16 - psLen; i >= ii; --i) { - if (lastBlock[i] !== psLen) { - // Invalid padding, assume that the block has no padding. - psLen = 0; - break; - } - } - outputLength -= psLen; - result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); - } - } - var output = new Uint8Array(outputLength); - for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - return output; - } - - AES128Cipher.prototype = { - decryptBlock: function AES128Cipher_decryptBlock(data, finalize) { - var i, sourceLength = data.length; - var buffer = this.buffer, bufferLength = this.bufferPosition; - // waiting for IV values -- they are at the start of the stream - for (i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) { - buffer[bufferLength] = data[i]; - } - if (bufferLength < 16) { - // need more data - this.bufferLength = bufferLength; - return new Uint8Array([]); - } - this.iv = buffer; - this.buffer = new Uint8Array(16); - this.bufferLength = 0; - // starting decryption - this.decryptBlock = decryptBlock2; - return this.decryptBlock(data.subarray(16), finalize); - }, - encrypt: function AES128Cipher_encrypt(data, iv) { - var i, j, ii, sourceLength = data.length, - buffer = this.buffer, bufferLength = this.bufferPosition, - result = []; - if (!iv) { - iv = new Uint8Array(16); - } - for (i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - if (bufferLength < 16) { - continue; - } - for (j = 0; j < 16; ++j) { - buffer[j] ^= iv[j]; - } - - // buffer is full, encrypting - var cipher = encrypt128(buffer, this.key); - iv = cipher; - result.push(cipher); - buffer = new Uint8Array(16); - bufferLength = 0; - } - // saving incomplete buffer - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - if (result.length === 0) { - return new Uint8Array([]); - } - // combining plain text blocks into one - var outputLength = 16 * result.length; - var output = new Uint8Array(outputLength); - for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - return output; - } - }; - - return AES128Cipher; -})(); - -var AES256Cipher = (function AES256CipherClosure() { - var rcon = new Uint8Array([ - 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, - 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, - 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, - 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, - 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, - 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, - 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, - 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, - 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, - 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, - 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, - 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, - 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, - 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, - 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, - 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, - 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, - 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, - 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, - 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, - 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, - 0x74, 0xe8, 0xcb, 0x8d]); - - var s = new Uint8Array([ - 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, - 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, - 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, - 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, - 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, - 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, - 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, - 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, - 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, - 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, - 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, - 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, - 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, - 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, - 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, - 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, - 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, - 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, - 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, - 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, - 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, - 0xb0, 0x54, 0xbb, 0x16]); - - var inv_s = new Uint8Array([ - 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, - 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, - 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, - 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, - 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, - 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, - 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, - 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, - 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, - 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, - 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, - 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, - 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, - 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, - 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, - 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, - 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, - 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, - 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, - 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, - 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, - 0x55, 0x21, 0x0c, 0x7d]); - - var mixCol = new Uint8Array(256); - for (var i = 0; i < 256; i++) { - if (i < 128) { - mixCol[i] = i << 1; - } else { - mixCol[i] = (i << 1) ^ 0x1b; - } - } - var mix = new Uint32Array([ - 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, - 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, - 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, - 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, - 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, - 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, - 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, - 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, - 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, - 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, - 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, - 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, - 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, - 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, - 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, - 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, - 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, - 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, - 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, - 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, - 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, - 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, - 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, - 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, - 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, - 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, - 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, - 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, - 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, - 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, - 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, - 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, - 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, - 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, - 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, - 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, - 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, - 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, - 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, - 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, - 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, - 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, - 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); - - function expandKey256(cipherKey) { - var b = 240, result = new Uint8Array(b); - var r = 1; - - result.set(cipherKey); - for (var j = 32, i = 1; j < b; ++i) { - if (j % 32 === 16) { - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - } else if (j % 32 === 0) { - // RotWord - var t1 = result[j - 3], t2 = result[j - 2], - t3 = result[j - 1], t4 = result[j - 4]; - // SubWord - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - // Rcon - t1 = t1 ^ r; - if ((r <<= 1) >= 256) { - r = (r ^ 0x1b) & 0xFF; - } - } - - for (var n = 0; n < 4; ++n) { - result[j] = (t1 ^= result[j - 32]); - j++; - result[j] = (t2 ^= result[j - 32]); - j++; - result[j] = (t3 ^= result[j - 32]); - j++; - result[j] = (t4 ^= result[j - 32]); - j++; - } - } - return result; - } - - function decrypt256(input, key) { - var state = new Uint8Array(16); - state.set(input); - var i, j, k; - var t, u, v; - // AddRoundKey - for (j = 0, k = 224; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - for (i = 13; i >= 1; --i) { - // InvShiftRows - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - // InvSubBytes - for (j = 0; j < 16; ++j) { - state[j] = inv_s[state[j]]; - } - // AddRoundKey - for (j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - // InvMixColumns - for (j = 0; j < 16; j += 4) { - var s0 = mix[state[j]], s1 = mix[state[j + 1]], - s2 = mix[state[j + 2]], s3 = mix[state[j + 3]]; - t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^ - (s3 >>> 24) ^ (s3 << 8)); - state[j] = (t >>> 24) & 0xFF; - state[j + 1] = (t >> 16) & 0xFF; - state[j + 2] = (t >> 8) & 0xFF; - state[j + 3] = t & 0xFF; - } - } - // InvShiftRows - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - for (j = 0; j < 16; ++j) { - // InvSubBytes - state[j] = inv_s[state[j]]; - // AddRoundKey - state[j] ^= key[j]; - } - return state; - } - - function encrypt256(input, key) { - var t, u, v, k; - var state = new Uint8Array(16); - state.set(input); - for (j = 0; j < 16; ++j) { - // AddRoundKey - state[j] ^= key[j]; - } - - for (i = 1; i < 14; i++) { - //SubBytes - for (j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - //ShiftRows - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - //MixColumns - for (var j = 0; j < 16; j += 4) { - var s0 = state[j + 0], s1 = state[j + 1]; - var s2 = state[j + 2], s3 = state[j + 3]; - t = s0 ^ s1 ^ s2 ^ s3; - state[j + 0] ^= t ^ mixCol[s0 ^ s1]; - state[j + 1] ^= t ^ mixCol[s1 ^ s2]; - state[j + 2] ^= t ^ mixCol[s2 ^ s3]; - state[j + 3] ^= t ^ mixCol[s3 ^ s0]; - } - //AddRoundKey - for (j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - } - - //SubBytes - for (j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - //ShiftRows - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - //AddRoundKey - for (j = 0, k = 224; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - - return state; - - } - - function AES256Cipher(key) { - this.key = expandKey256(key); - this.buffer = new Uint8Array(16); - this.bufferPosition = 0; - } - - function decryptBlock2(data, finalize) { - var i, j, ii, sourceLength = data.length, - buffer = this.buffer, bufferLength = this.bufferPosition, - result = [], iv = this.iv; - - for (i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - if (bufferLength < 16) { - continue; - } - // buffer is full, decrypting - var plain = decrypt256(buffer, this.key); - // xor-ing the IV vector to get plain text - for (j = 0; j < 16; ++j) { - plain[j] ^= iv[j]; - } - iv = buffer; - result.push(plain); - buffer = new Uint8Array(16); - bufferLength = 0; - } - // saving incomplete buffer - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - if (result.length === 0) { - return new Uint8Array([]); - } - // combining plain text blocks into one - var outputLength = 16 * result.length; - if (finalize) { - // undo a padding that is described in RFC 2898 - var lastBlock = result[result.length - 1]; - var psLen = lastBlock[15]; - if (psLen <= 16) { - for (i = 15, ii = 16 - psLen; i >= ii; --i) { - if (lastBlock[i] !== psLen) { - // Invalid padding, assume that the block has no padding. - psLen = 0; - break; - } - } - outputLength -= psLen; - result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); - } - } - var output = new Uint8Array(outputLength); - for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - return output; - - } - - AES256Cipher.prototype = { - decryptBlock: function AES256Cipher_decryptBlock(data, finalize, iv) { - var i, sourceLength = data.length; - var buffer = this.buffer, bufferLength = this.bufferPosition; - // if not supplied an IV wait for IV values - // they are at the start of the stream - if (iv) { - this.iv = iv; - } else { - for (i = 0; bufferLength < 16 && - i < sourceLength; ++i, ++bufferLength) { - buffer[bufferLength] = data[i]; - } - if (bufferLength < 16) { - //need more data - this.bufferLength = bufferLength; - return new Uint8Array([]); - } - this.iv = buffer; - data = data.subarray(16); - } - this.buffer = new Uint8Array(16); - this.bufferLength = 0; - // starting decryption - this.decryptBlock = decryptBlock2; - return this.decryptBlock(data, finalize); - }, - encrypt: function AES256Cipher_encrypt(data, iv) { - var i, j, ii, sourceLength = data.length, - buffer = this.buffer, bufferLength = this.bufferPosition, - result = []; - if (!iv) { - iv = new Uint8Array(16); - } - for (i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - if (bufferLength < 16) { - continue; - } - for (j = 0; j < 16; ++j) { - buffer[j] ^= iv[j]; - } - - // buffer is full, encrypting - var cipher = encrypt256(buffer, this.key); - this.iv = cipher; - result.push(cipher); - buffer = new Uint8Array(16); - bufferLength = 0; - } - // saving incomplete buffer - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - if (result.length === 0) { - return new Uint8Array([]); - } - // combining plain text blocks into one - var outputLength = 16 * result.length; - var output = new Uint8Array(outputLength); - for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - return output; - } - }; - - return AES256Cipher; -})(); - -var PDF17 = (function PDF17Closure() { - - function compareByteArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - for (var i = 0; i < array1.length; i++) { - if (array1[i] !== array2[i]) { - return false; - } - } - return true; - } - - function PDF17() { - } - - PDF17.prototype = { - checkOwnerPassword: function PDF17_checkOwnerPassword(password, - ownerValidationSalt, - userBytes, - ownerPassword) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerValidationSalt, password.length); - hashData.set(userBytes, password.length + ownerValidationSalt.length); - var result = calculateSHA256(hashData, 0, hashData.length); - return compareByteArrays(result, ownerPassword); - }, - checkUserPassword: function PDF17_checkUserPassword(password, - userValidationSalt, - userPassword) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userValidationSalt, password.length); - var result = calculateSHA256(hashData, 0, hashData.length); - return compareByteArrays(result, userPassword); - }, - getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes, - ownerEncryption) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerKeySalt, password.length); - hashData.set(userBytes, password.length + ownerKeySalt.length); - var key = calculateSHA256(hashData, 0, hashData.length); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(ownerEncryption, - false, - new Uint8Array(16)); - - }, - getUserKey: function PDF17_getUserKey(password, userKeySalt, - userEncryption) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userKeySalt, password.length); - //key is the decryption key for the UE string - var key = calculateSHA256(hashData, 0, hashData.length); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(userEncryption, - false, - new Uint8Array(16)); - } - }; - return PDF17; -})(); - -var PDF20 = (function PDF20Closure() { - - function concatArrays(array1, array2) { - var t = new Uint8Array(array1.length + array2.length); - t.set(array1, 0); - t.set(array2, array1.length); - return t; - } - - function calculatePDF20Hash(password, input, userBytes) { - //This refers to Algorithm 2.B as defined in ISO 32000-2 - var k = calculateSHA256(input, 0, input.length).subarray(0, 32); - var e = [0]; - var i = 0; - while (i < 64 || e[e.length - 1] > i - 32) { - var arrayLength = password.length + k.length + userBytes.length; - - var k1 = new Uint8Array(arrayLength * 64); - var array = concatArrays(password, k); - array = concatArrays(array, userBytes); - for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) { - k1.set(array, pos); - } - //AES128 CBC NO PADDING with - //first 16 bytes of k as the key and the second 16 as the iv. - var cipher = new AES128Cipher(k.subarray(0, 16)); - e = cipher.encrypt(k1, k.subarray(16, 32)); - //Now we have to take the first 16 bytes of an unsigned - //big endian integer... and compute the remainder - //modulo 3.... That is a fairly large number and - //JavaScript isn't going to handle that well... - //So we're using a trick that allows us to perform - //modulo math byte by byte - var remainder = 0; - for (var z = 0; z < 16; z++) { - remainder *= (256 % 3); - remainder %= 3; - remainder += ((e[z] >>> 0) % 3); - remainder %= 3; - } - if (remainder === 0) { - k = calculateSHA256(e, 0, e.length); - } - else if (remainder === 1) { - k = calculateSHA384(e, 0, e.length); - } - else if (remainder === 2) { - k = calculateSHA512(e, 0, e.length); - } - i++; - } - return k.subarray(0, 32); - } - - function PDF20() { - } - - function compareByteArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - for (var i = 0; i < array1.length; i++) { - if (array1[i] !== array2[i]) { - return false; - } - } - return true; - } - - PDF20.prototype = { - hash: function PDF20_hash(password, concatBytes, userBytes) { - return calculatePDF20Hash(password, concatBytes, userBytes); - }, - checkOwnerPassword: function PDF20_checkOwnerPassword(password, - ownerValidationSalt, - userBytes, - ownerPassword) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerValidationSalt, password.length); - hashData.set(userBytes, password.length + ownerValidationSalt.length); - var result = calculatePDF20Hash(password, hashData, userBytes); - return compareByteArrays(result, ownerPassword); - }, - checkUserPassword: function PDF20_checkUserPassword(password, - userValidationSalt, - userPassword) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userValidationSalt, password.length); - var result = calculatePDF20Hash(password, hashData, []); - return compareByteArrays(result, userPassword); - }, - getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes, - ownerEncryption) { - var hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerKeySalt, password.length); - hashData.set(userBytes, password.length + ownerKeySalt.length); - var key = calculatePDF20Hash(password, hashData, userBytes); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(ownerEncryption, - false, - new Uint8Array(16)); - - }, - getUserKey: function PDF20_getUserKey(password, userKeySalt, - userEncryption) { - var hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userKeySalt, password.length); - //key is the decryption key for the UE string - var key = calculatePDF20Hash(password, hashData, []); - var cipher = new AES256Cipher(key); - return cipher.decryptBlock(userEncryption, - false, - new Uint8Array(16)); - } - }; - return PDF20; -})(); - -var CipherTransform = (function CipherTransformClosure() { - function CipherTransform(stringCipherConstructor, streamCipherConstructor) { - this.stringCipherConstructor = stringCipherConstructor; - this.streamCipherConstructor = streamCipherConstructor; - } - - CipherTransform.prototype = { - createStream: function CipherTransform_createStream(stream, length) { - var cipher = new this.streamCipherConstructor(); - return new DecryptStream(stream, length, - function cipherTransformDecryptStream(data, finalize) { - return cipher.decryptBlock(data, finalize); - } - ); - }, - decryptString: function CipherTransform_decryptString(s) { - var cipher = new this.stringCipherConstructor(); - var data = stringToBytes(s); - data = cipher.decryptBlock(data, true); - return bytesToString(data); - } - }; - return CipherTransform; -})(); - -var CipherTransformFactory = (function CipherTransformFactoryClosure() { - var defaultPasswordBytes = new Uint8Array([ - 0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, - 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, - 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, - 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]); - - function createEncryptionKey20(revision, password, ownerPassword, - ownerValidationSalt, ownerKeySalt, uBytes, - userPassword, userValidationSalt, userKeySalt, - ownerEncryption, userEncryption, perms) { - if (password) { - var passwordLength = Math.min(127, password.length); - password = password.subarray(0, passwordLength); - } else { - password = []; - } - var pdfAlgorithm; - if (revision === 6) { - pdfAlgorithm = new PDF20(); - } else { - pdfAlgorithm = new PDF17(); - } - - if (pdfAlgorithm) { - if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, - userPassword)) { - return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption); - } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, - ownerValidationSalt, - uBytes, - ownerPassword)) { - return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, - ownerEncryption); - } - } - - return null; - } - - function prepareKeyData(fileId, password, ownerPassword, userPassword, - flags, revision, keyLength, encryptMetadata) { - var hashDataSize = 40 + ownerPassword.length + fileId.length; - var hashData = new Uint8Array(hashDataSize), i = 0, j, n; - if (password) { - n = Math.min(32, password.length); - for (; i < n; ++i) { - hashData[i] = password[i]; - } - } - j = 0; - while (i < 32) { - hashData[i++] = defaultPasswordBytes[j++]; - } - // as now the padded password in the hashData[0..i] - for (j = 0, n = ownerPassword.length; j < n; ++j) { - hashData[i++] = ownerPassword[j]; - } - hashData[i++] = flags & 0xFF; - hashData[i++] = (flags >> 8) & 0xFF; - hashData[i++] = (flags >> 16) & 0xFF; - hashData[i++] = (flags >>> 24) & 0xFF; - for (j = 0, n = fileId.length; j < n; ++j) { - hashData[i++] = fileId[j]; - } - if (revision >= 4 && !encryptMetadata) { - hashData[i++] = 0xFF; - hashData[i++] = 0xFF; - hashData[i++] = 0xFF; - hashData[i++] = 0xFF; - } - var hash = calculateMD5(hashData, 0, i); - var keyLengthInBytes = keyLength >> 3; - if (revision >= 3) { - for (j = 0; j < 50; ++j) { - hash = calculateMD5(hash, 0, keyLengthInBytes); - } - } - var encryptionKey = hash.subarray(0, keyLengthInBytes); - var cipher, checkData; - - if (revision >= 3) { - for (i = 0; i < 32; ++i) { - hashData[i] = defaultPasswordBytes[i]; - } - for (j = 0, n = fileId.length; j < n; ++j) { - hashData[i++] = fileId[j]; - } - cipher = new ARCFourCipher(encryptionKey); - checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i)); - n = encryptionKey.length; - var derivedKey = new Uint8Array(n), k; - for (j = 1; j <= 19; ++j) { - for (k = 0; k < n; ++k) { - derivedKey[k] = encryptionKey[k] ^ j; - } - cipher = new ARCFourCipher(derivedKey); - checkData = cipher.encryptBlock(checkData); - } - for (j = 0, n = checkData.length; j < n; ++j) { - if (userPassword[j] !== checkData[j]) { - return null; - } - } - } else { - cipher = new ARCFourCipher(encryptionKey); - checkData = cipher.encryptBlock(defaultPasswordBytes); - for (j = 0, n = checkData.length; j < n; ++j) { - if (userPassword[j] !== checkData[j]) { - return null; - } - } - } - return encryptionKey; - } - - function decodeUserPassword(password, ownerPassword, revision, keyLength) { - var hashData = new Uint8Array(32), i = 0, j, n; - n = Math.min(32, password.length); - for (; i < n; ++i) { - hashData[i] = password[i]; - } - j = 0; - while (i < 32) { - hashData[i++] = defaultPasswordBytes[j++]; - } - var hash = calculateMD5(hashData, 0, i); - var keyLengthInBytes = keyLength >> 3; - if (revision >= 3) { - for (j = 0; j < 50; ++j) { - hash = calculateMD5(hash, 0, hash.length); - } - } - - var cipher, userPassword; - if (revision >= 3) { - userPassword = ownerPassword; - var derivedKey = new Uint8Array(keyLengthInBytes), k; - for (j = 19; j >= 0; j--) { - for (k = 0; k < keyLengthInBytes; ++k) { - derivedKey[k] = hash[k] ^ j; - } - cipher = new ARCFourCipher(derivedKey); - userPassword = cipher.encryptBlock(userPassword); - } - } else { - cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes)); - userPassword = cipher.encryptBlock(ownerPassword); - } - return userPassword; - } - - var identityName = Name.get('Identity'); - - function CipherTransformFactory(dict, fileId, password) { - var filter = dict.get('Filter'); - if (!isName(filter) || filter.name !== 'Standard') { - error('unknown encryption method'); - } - this.dict = dict; - var algorithm = dict.get('V'); - if (!isInt(algorithm) || - (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && - algorithm !== 5)) { - error('unsupported encryption algorithm'); - } - this.algorithm = algorithm; - var keyLength = dict.get('Length') || 40; - if (!isInt(keyLength) || - keyLength < 40 || (keyLength % 8) !== 0) { - error('invalid key length'); - } - - // prepare keys - var ownerPassword = stringToBytes(dict.get('O')).subarray(0, 32); - var userPassword = stringToBytes(dict.get('U')).subarray(0, 32); - var flags = dict.get('P'); - var revision = dict.get('R'); - // meaningful when V is 4 or 5 - var encryptMetadata = ((algorithm === 4 || algorithm === 5) && - dict.get('EncryptMetadata') !== false); - this.encryptMetadata = encryptMetadata; - - var fileIdBytes = stringToBytes(fileId); - var passwordBytes; - if (password) { - if (revision === 6) { - try { - password = utf8StringToString(password); - } catch (ex) { - warn('CipherTransformFactory: ' + - 'Unable to convert UTF8 encoded password.'); - } - } - passwordBytes = stringToBytes(password); - } - - var encryptionKey; - if (algorithm !== 5) { - encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, - ownerPassword, userPassword, flags, - revision, keyLength, encryptMetadata); - } - else { - var ownerValidationSalt = stringToBytes(dict.get('O')).subarray(32, 40); - var ownerKeySalt = stringToBytes(dict.get('O')).subarray(40, 48); - var uBytes = stringToBytes(dict.get('U')).subarray(0, 48); - var userValidationSalt = stringToBytes(dict.get('U')).subarray(32, 40); - var userKeySalt = stringToBytes(dict.get('U')).subarray(40, 48); - var ownerEncryption = stringToBytes(dict.get('OE')); - var userEncryption = stringToBytes(dict.get('UE')); - var perms = stringToBytes(dict.get('Perms')); - encryptionKey = - createEncryptionKey20(revision, passwordBytes, - ownerPassword, ownerValidationSalt, - ownerKeySalt, uBytes, - userPassword, userValidationSalt, - userKeySalt, ownerEncryption, - userEncryption, perms); - } - if (!encryptionKey && !password) { - throw new PasswordException('No password given', - PasswordResponses.NEED_PASSWORD); - } else if (!encryptionKey && password) { - // Attempting use the password as an owner password - var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, - revision, keyLength); - encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, - ownerPassword, userPassword, flags, - revision, keyLength, encryptMetadata); - } - - if (!encryptionKey) { - throw new PasswordException('Incorrect Password', - PasswordResponses.INCORRECT_PASSWORD); - } - - this.encryptionKey = encryptionKey; - - if (algorithm >= 4) { - this.cf = dict.get('CF'); - this.stmf = dict.get('StmF') || identityName; - this.strf = dict.get('StrF') || identityName; - this.eff = dict.get('EFF') || this.stmf; - } - } - - function buildObjectKey(num, gen, encryptionKey, isAes) { - var key = new Uint8Array(encryptionKey.length + 9), i, n; - for (i = 0, n = encryptionKey.length; i < n; ++i) { - key[i] = encryptionKey[i]; - } - key[i++] = num & 0xFF; - key[i++] = (num >> 8) & 0xFF; - key[i++] = (num >> 16) & 0xFF; - key[i++] = gen & 0xFF; - key[i++] = (gen >> 8) & 0xFF; - if (isAes) { - key[i++] = 0x73; - key[i++] = 0x41; - key[i++] = 0x6C; - key[i++] = 0x54; - } - var hash = calculateMD5(key, 0, i); - return hash.subarray(0, Math.min(encryptionKey.length + 5, 16)); - } - - function buildCipherConstructor(cf, name, num, gen, key) { - var cryptFilter = cf.get(name.name); - var cfm; - if (cryptFilter !== null && cryptFilter !== undefined) { - cfm = cryptFilter.get('CFM'); - } - if (!cfm || cfm.name === 'None') { - return function cipherTransformFactoryBuildCipherConstructorNone() { - return new NullCipher(); - }; - } - if ('V2' === cfm.name) { - return function cipherTransformFactoryBuildCipherConstructorV2() { - return new ARCFourCipher(buildObjectKey(num, gen, key, false)); - }; - } - if ('AESV2' === cfm.name) { - return function cipherTransformFactoryBuildCipherConstructorAESV2() { - return new AES128Cipher(buildObjectKey(num, gen, key, true)); - }; - } - if ('AESV3' === cfm.name) { - return function cipherTransformFactoryBuildCipherConstructorAESV3() { - return new AES256Cipher(key); - }; - } - error('Unknown crypto method'); - } - - CipherTransformFactory.prototype = { - createCipherTransform: - function CipherTransformFactory_createCipherTransform(num, gen) { - if (this.algorithm === 4 || this.algorithm === 5) { - return new CipherTransform( - buildCipherConstructor(this.cf, this.stmf, - num, gen, this.encryptionKey), - buildCipherConstructor(this.cf, this.strf, - num, gen, this.encryptionKey)); - } - // algorithms 1 and 2 - var key = buildObjectKey(num, gen, this.encryptionKey, false); - var cipherConstructor = function buildCipherCipherConstructor() { - return new ARCFourCipher(key); - }; - return new CipherTransform(cipherConstructor, cipherConstructor); - } - }; - - return CipherTransformFactory; -})(); - - -var ShadingType = { - FUNCTION_BASED: 1, - AXIAL: 2, - RADIAL: 3, - FREE_FORM_MESH: 4, - LATTICE_FORM_MESH: 5, - COONS_PATCH_MESH: 6, - TENSOR_PATCH_MESH: 7 -}; - -var Pattern = (function PatternClosure() { - // Constructor should define this.getPattern - function Pattern() { - error('should not call Pattern constructor'); - } - - Pattern.prototype = { - // Input: current Canvas context - // Output: the appropriate fillStyle or strokeStyle - getPattern: function Pattern_getPattern(ctx) { - error('Should not call Pattern.getStyle: ' + ctx); - } - }; - - Pattern.parseShading = function Pattern_parseShading(shading, matrix, xref, - res) { - - var dict = isStream(shading) ? shading.dict : shading; - var type = dict.get('ShadingType'); - - try { - switch (type) { - case ShadingType.AXIAL: - case ShadingType.RADIAL: - // Both radial and axial shadings are handled by RadialAxial shading. - return new Shadings.RadialAxial(dict, matrix, xref, res); - case ShadingType.FREE_FORM_MESH: - case ShadingType.LATTICE_FORM_MESH: - case ShadingType.COONS_PATCH_MESH: - case ShadingType.TENSOR_PATCH_MESH: - return new Shadings.Mesh(shading, matrix, xref, res); - default: - throw new Error('Unsupported ShadingType: ' + type); - } - } catch (ex) { - if (ex instanceof MissingDataException) { - throw ex; - } - UnsupportedManager.notify(UNSUPPORTED_FEATURES.shadingPattern); - warn(ex); - return new Shadings.Dummy(); - } - }; - return Pattern; -})(); - -var Shadings = {}; - -// A small number to offset the first/last color stops so we can insert ones to -// support extend. Number.MIN_VALUE appears to be too small and breaks the -// extend. 1e-7 works in FF but chrome seems to use an even smaller sized number -// internally so we have to go bigger. -Shadings.SMALL_NUMBER = 1e-2; - -// Radial and axial shading have very similar implementations -// If needed, the implementations can be broken into two classes -Shadings.RadialAxial = (function RadialAxialClosure() { - function RadialAxial(dict, matrix, xref, res) { - this.matrix = matrix; - this.coordsArr = dict.get('Coords'); - this.shadingType = dict.get('ShadingType'); - this.type = 'Pattern'; - var cs = dict.get('ColorSpace', 'CS'); - cs = ColorSpace.parse(cs, xref, res); - this.cs = cs; - - var t0 = 0.0, t1 = 1.0; - if (dict.has('Domain')) { - var domainArr = dict.get('Domain'); - t0 = domainArr[0]; - t1 = domainArr[1]; - } - - var extendStart = false, extendEnd = false; - if (dict.has('Extend')) { - var extendArr = dict.get('Extend'); - extendStart = extendArr[0]; - extendEnd = extendArr[1]; - } - - if (this.shadingType === ShadingType.RADIAL && - (!extendStart || !extendEnd)) { - // Radial gradient only currently works if either circle is fully within - // the other circle. - var x1 = this.coordsArr[0]; - var y1 = this.coordsArr[1]; - var r1 = this.coordsArr[2]; - var x2 = this.coordsArr[3]; - var y2 = this.coordsArr[4]; - var r2 = this.coordsArr[5]; - var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); - if (r1 <= r2 + distance && - r2 <= r1 + distance) { - warn('Unsupported radial gradient.'); - } - } - - this.extendStart = extendStart; - this.extendEnd = extendEnd; - - var fnObj = dict.get('Function'); - var fn = PDFFunction.parseArray(xref, fnObj); - - // 10 samples seems good enough for now, but probably won't work - // if there are sharp color changes. Ideally, we would implement - // the spec faithfully and add lossless optimizations. - var diff = t1 - t0; - var step = diff / 10; - - var colorStops = this.colorStops = []; - - // Protect against bad domains so we don't end up in an infinte loop below. - if (t0 >= t1 || step <= 0) { - // Acrobat doesn't seem to handle these cases so we'll ignore for - // now. - info('Bad shading domain.'); - return; - } - - var color = new Float32Array(cs.numComps), ratio = new Float32Array(1); - var rgbColor; - for (var i = t0; i <= t1; i += step) { - ratio[0] = i; - fn(ratio, 0, color, 0); - rgbColor = cs.getRgb(color, 0); - var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); - colorStops.push([(i - t0) / diff, cssColor]); - } - - var background = 'transparent'; - if (dict.has('Background')) { - rgbColor = cs.getRgb(dict.get('Background'), 0); - background = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); - } - - if (!extendStart) { - // Insert a color stop at the front and offset the first real color stop - // so it doesn't conflict with the one we insert. - colorStops.unshift([0, background]); - colorStops[1][0] += Shadings.SMALL_NUMBER; - } - if (!extendEnd) { - // Same idea as above in extendStart but for the end. - colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER; - colorStops.push([1, background]); - } - - this.colorStops = colorStops; - } - - RadialAxial.prototype = { - getIR: function RadialAxial_getIR() { - var coordsArr = this.coordsArr; - var shadingType = this.shadingType; - var type, p0, p1, r0, r1; - if (shadingType === ShadingType.AXIAL) { - p0 = [coordsArr[0], coordsArr[1]]; - p1 = [coordsArr[2], coordsArr[3]]; - r0 = null; - r1 = null; - type = 'axial'; - } else if (shadingType === ShadingType.RADIAL) { - p0 = [coordsArr[0], coordsArr[1]]; - p1 = [coordsArr[3], coordsArr[4]]; - r0 = coordsArr[2]; - r1 = coordsArr[5]; - type = 'radial'; - } else { - error('getPattern type unknown: ' + shadingType); - } - - var matrix = this.matrix; - if (matrix) { - p0 = Util.applyTransform(p0, matrix); - p1 = Util.applyTransform(p1, matrix); - } - - return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1]; - } - }; - - return RadialAxial; -})(); - -// All mesh shading. For now, they will be presented as set of the triangles -// to be drawn on the canvas and rgb color for each vertex. -Shadings.Mesh = (function MeshClosure() { - function MeshStreamReader(stream, context) { - this.stream = stream; - this.context = context; - this.buffer = 0; - this.bufferLength = 0; - - var numComps = context.numComps; - this.tmpCompsBuf = new Float32Array(numComps); - var csNumComps = context.colorSpace.numComps; - this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : - this.tmpCompsBuf; - } - MeshStreamReader.prototype = { - get hasData() { - if (this.stream.end) { - return this.stream.pos < this.stream.end; - } - if (this.bufferLength > 0) { - return true; - } - var nextByte = this.stream.getByte(); - if (nextByte < 0) { - return false; - } - this.buffer = nextByte; - this.bufferLength = 8; - return true; - }, - readBits: function MeshStreamReader_readBits(n) { - var buffer = this.buffer; - var bufferLength = this.bufferLength; - if (n === 32) { - if (bufferLength === 0) { - return ((this.stream.getByte() << 24) | - (this.stream.getByte() << 16) | (this.stream.getByte() << 8) | - this.stream.getByte()) >>> 0; - } - buffer = (buffer << 24) | (this.stream.getByte() << 16) | - (this.stream.getByte() << 8) | this.stream.getByte(); - var nextByte = this.stream.getByte(); - this.buffer = nextByte & ((1 << bufferLength) - 1); - return ((buffer << (8 - bufferLength)) | - ((nextByte & 0xFF) >> bufferLength)) >>> 0; - } - if (n === 8 && bufferLength === 0) { - return this.stream.getByte(); - } - while (bufferLength < n) { - buffer = (buffer << 8) | this.stream.getByte(); - bufferLength += 8; - } - bufferLength -= n; - this.bufferLength = bufferLength; - this.buffer = buffer & ((1 << bufferLength) - 1); - return buffer >> bufferLength; - }, - align: function MeshStreamReader_align() { - this.buffer = 0; - this.bufferLength = 0; - }, - readFlag: function MeshStreamReader_readFlag() { - return this.readBits(this.context.bitsPerFlag); - }, - readCoordinate: function MeshStreamReader_readCoordinate() { - var bitsPerCoordinate = this.context.bitsPerCoordinate; - var xi = this.readBits(bitsPerCoordinate); - var yi = this.readBits(bitsPerCoordinate); - var decode = this.context.decode; - var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : - 2.3283064365386963e-10; // 2 ^ -32 - return [ - xi * scale * (decode[1] - decode[0]) + decode[0], - yi * scale * (decode[3] - decode[2]) + decode[2] - ]; - }, - readComponents: function MeshStreamReader_readComponents() { - var numComps = this.context.numComps; - var bitsPerComponent = this.context.bitsPerComponent; - var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : - 2.3283064365386963e-10; // 2 ^ -32 - var decode = this.context.decode; - var components = this.tmpCompsBuf; - for (var i = 0, j = 4; i < numComps; i++, j += 2) { - var ci = this.readBits(bitsPerComponent); - components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j]; - } - var color = this.tmpCsCompsBuf; - if (this.context.colorFn) { - this.context.colorFn(components, 0, color, 0); - } - return this.context.colorSpace.getRgb(color, 0); - } - }; - - function decodeType4Shading(mesh, reader) { - var coords = mesh.coords; - var colors = mesh.colors; - var operators = []; - var ps = []; // not maintaining cs since that will match ps - var verticesLeft = 0; // assuming we have all data to start a new triangle - while (reader.hasData) { - var f = reader.readFlag(); - var coord = reader.readCoordinate(); - var color = reader.readComponents(); - if (verticesLeft === 0) { // ignoring flags if we started a triangle - assert(0 <= f && f <= 2, 'Unknown type4 flag'); - switch (f) { - case 0: - verticesLeft = 3; - break; - case 1: - ps.push(ps[ps.length - 2], ps[ps.length - 1]); - verticesLeft = 1; - break; - case 2: - ps.push(ps[ps.length - 3], ps[ps.length - 1]); - verticesLeft = 1; - break; - } - operators.push(f); - } - ps.push(coords.length); - coords.push(coord); - colors.push(color); - verticesLeft--; - - reader.align(); - } - mesh.figures.push({ - type: 'triangles', - coords: new Int32Array(ps), - colors: new Int32Array(ps), - }); - } - - function decodeType5Shading(mesh, reader, verticesPerRow) { - var coords = mesh.coords; - var colors = mesh.colors; - var ps = []; // not maintaining cs since that will match ps - while (reader.hasData) { - var coord = reader.readCoordinate(); - var color = reader.readComponents(); - ps.push(coords.length); - coords.push(coord); - colors.push(color); - } - mesh.figures.push({ - type: 'lattice', - coords: new Int32Array(ps), - colors: new Int32Array(ps), - verticesPerRow: verticesPerRow - }); - } - - var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; - var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; - - var TRIANGLE_DENSITY = 20; // count of triangles per entire mesh bounds - - var getB = (function getBClosure() { - function buildB(count) { - var lut = []; - for (var i = 0; i <= count; i++) { - var t = i / count, t_ = 1 - t; - lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, - 3 * t * t * t_, t * t * t])); - } - return lut; - } - var cache = []; - return function getB(count) { - if (!cache[count]) { - cache[count] = buildB(count); - } - return cache[count]; - }; - })(); - - function buildFigureFromPatch(mesh, index) { - var figure = mesh.figures[index]; - assert(figure.type === 'patch', 'Unexpected patch mesh figure'); - - var coords = mesh.coords, colors = mesh.colors; - var pi = figure.coords; - var ci = figure.colors; - - var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], - coords[pi[12]][0], coords[pi[15]][0]); - var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], - coords[pi[12]][1], coords[pi[15]][1]); - var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], - coords[pi[12]][0], coords[pi[15]][0]); - var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], - coords[pi[12]][1], coords[pi[15]][1]); - var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / - (mesh.bounds[2] - mesh.bounds[0])); - splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, - Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)); - var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / - (mesh.bounds[3] - mesh.bounds[1])); - splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, - Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)); - - var verticesPerRow = splitXBy + 1; - var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow); - var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow); - var k = 0; - var cl = new Uint8Array(3), cr = new Uint8Array(3); - var c0 = colors[ci[0]], c1 = colors[ci[1]], - c2 = colors[ci[2]], c3 = colors[ci[3]]; - var bRow = getB(splitYBy), bCol = getB(splitXBy); - for (var row = 0; row <= splitYBy; row++) { - cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0; - cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0; - cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0; - - cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0; - cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0; - cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0; - - for (var col = 0; col <= splitXBy; col++, k++) { - if ((row === 0 || row === splitYBy) && - (col === 0 || col === splitXBy)) { - continue; - } - var x = 0, y = 0; - var q = 0; - for (var i = 0; i <= 3; i++) { - for (var j = 0; j <= 3; j++, q++) { - var m = bRow[row][i] * bCol[col][j]; - x += coords[pi[q]][0] * m; - y += coords[pi[q]][1] * m; - } - } - figureCoords[k] = coords.length; - coords.push([x, y]); - figureColors[k] = colors.length; - var newColor = new Uint8Array(3); - newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0; - newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0; - newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0; - colors.push(newColor); - } - } - figureCoords[0] = pi[0]; - figureColors[0] = ci[0]; - figureCoords[splitXBy] = pi[3]; - figureColors[splitXBy] = ci[1]; - figureCoords[verticesPerRow * splitYBy] = pi[12]; - figureColors[verticesPerRow * splitYBy] = ci[2]; - figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15]; - figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3]; - - mesh.figures[index] = { - type: 'lattice', - coords: figureCoords, - colors: figureColors, - verticesPerRow: verticesPerRow - }; - } - - function decodeType6Shading(mesh, reader) { - // A special case of Type 7. The p11, p12, p21, p22 automatically filled - var coords = mesh.coords; - var colors = mesh.colors; - var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33 - var cs = new Int32Array(4); // c00, c30, c03, c33 - while (reader.hasData) { - var f = reader.readFlag(); - assert(0 <= f && f <= 3, 'Unknown type6 flag'); - var i, ii; - var pi = coords.length; - for (i = 0, ii = (f !== 0 ? 8 : 12); i < ii; i++) { - coords.push(reader.readCoordinate()); - } - var ci = colors.length; - for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) { - colors.push(reader.readComponents()); - } - var tmp1, tmp2, tmp3, tmp4; - switch (f) { - case 0: - ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6; - ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 7; - ps[ 4] = pi + 1; /* calculated below */ ps[ 7] = pi + 8; - ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9; - cs[2] = ci + 1; cs[3] = ci + 2; - cs[0] = ci; cs[1] = ci + 3; - break; - case 1: - tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15]; - ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3; - ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4; - ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - tmp1 = cs[2]; tmp2 = cs[3]; - cs[2] = tmp2; cs[3] = ci; - cs[0] = tmp1; cs[1] = ci + 1; - break; - case 2: - tmp1 = ps[15]; - tmp2 = ps[11]; - ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = ps[7]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3; - ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4; - ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - tmp1 = cs[3]; - cs[2] = cs[1]; cs[3] = ci; - cs[0] = tmp1; cs[1] = ci + 1; - break; - case 3: - ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = ps[1]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3; - ps[ 4] = ps[2]; /* calculated below */ ps[ 7] = pi + 4; - ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - cs[2] = cs[0]; cs[3] = ci; - cs[0] = cs[1]; cs[1] = ci + 1; - break; - } - // set p11, p12, p21, p22 - ps[5] = coords.length; - coords.push([ - (-4 * coords[ps[0]][0] - coords[ps[15]][0] + - 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + - 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, - (-4 * coords[ps[0]][1] - coords[ps[15]][1] + - 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + - 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9 - ]); - ps[6] = coords.length; - coords.push([ - (-4 * coords[ps[3]][0] - coords[ps[12]][0] + - 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + - 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, - (-4 * coords[ps[3]][1] - coords[ps[12]][1] + - 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + - 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9 - ]); - ps[9] = coords.length; - coords.push([ - (-4 * coords[ps[12]][0] - coords[ps[3]][0] + - 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + - 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, - (-4 * coords[ps[12]][1] - coords[ps[3]][1] + - 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + - 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9 - ]); - ps[10] = coords.length; - coords.push([ - (-4 * coords[ps[15]][0] - coords[ps[0]][0] + - 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + - 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, - (-4 * coords[ps[15]][1] - coords[ps[0]][1] + - 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + - 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9 - ]); - mesh.figures.push({ - type: 'patch', - coords: new Int32Array(ps), // making copies of ps and cs - colors: new Int32Array(cs) - }); - } - } - - function decodeType7Shading(mesh, reader) { - var coords = mesh.coords; - var colors = mesh.colors; - var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33 - var cs = new Int32Array(4); // c00, c30, c03, c33 - while (reader.hasData) { - var f = reader.readFlag(); - assert(0 <= f && f <= 3, 'Unknown type7 flag'); - var i, ii; - var pi = coords.length; - for (i = 0, ii = (f !== 0 ? 12 : 16); i < ii; i++) { - coords.push(reader.readCoordinate()); - } - var ci = colors.length; - for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) { - colors.push(reader.readComponents()); - } - var tmp1, tmp2, tmp3, tmp4; - switch (f) { - case 0: - ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6; - ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7; - ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8; - ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9; - cs[2] = ci + 1; cs[3] = ci + 2; - cs[0] = ci; cs[1] = ci + 3; - break; - case 1: - tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15]; - ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = tmp3; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3; - ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4; - ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - tmp1 = cs[2]; tmp2 = cs[3]; - cs[2] = tmp2; cs[3] = ci; - cs[0] = tmp1; cs[1] = ci + 1; - break; - case 2: - tmp1 = ps[15]; - tmp2 = ps[11]; - ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3; - ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4; - ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - tmp1 = cs[3]; - cs[2] = cs[1]; cs[3] = ci; - cs[0] = tmp1; cs[1] = ci + 1; - break; - case 3: - ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2; - ps[ 8] = ps[1]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3; - ps[ 4] = ps[2]; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4; - ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5; - cs[2] = cs[0]; cs[3] = ci; - cs[0] = cs[1]; cs[1] = ci + 1; - break; - } - mesh.figures.push({ - type: 'patch', - coords: new Int32Array(ps), // making copies of ps and cs - colors: new Int32Array(cs) - }); - } - } - - function updateBounds(mesh) { - var minX = mesh.coords[0][0], minY = mesh.coords[0][1], - maxX = minX, maxY = minY; - for (var i = 1, ii = mesh.coords.length; i < ii; i++) { - var x = mesh.coords[i][0], y = mesh.coords[i][1]; - minX = minX > x ? x : minX; - minY = minY > y ? y : minY; - maxX = maxX < x ? x : maxX; - maxY = maxY < y ? y : maxY; - } - mesh.bounds = [minX, minY, maxX, maxY]; - } - - function packData(mesh) { - var i, ii, j, jj; - - var coords = mesh.coords; - var coordsPacked = new Float32Array(coords.length * 2); - for (i = 0, j = 0, ii = coords.length; i < ii; i++) { - var xy = coords[i]; - coordsPacked[j++] = xy[0]; - coordsPacked[j++] = xy[1]; - } - mesh.coords = coordsPacked; - - var colors = mesh.colors; - var colorsPacked = new Uint8Array(colors.length * 3); - for (i = 0, j = 0, ii = colors.length; i < ii; i++) { - var c = colors[i]; - colorsPacked[j++] = c[0]; - colorsPacked[j++] = c[1]; - colorsPacked[j++] = c[2]; - } - mesh.colors = colorsPacked; - - var figures = mesh.figures; - for (i = 0, ii = figures.length; i < ii; i++) { - var figure = figures[i], ps = figure.coords, cs = figure.colors; - for (j = 0, jj = ps.length; j < jj; j++) { - ps[j] *= 2; - cs[j] *= 3; - } - } - } - - function Mesh(stream, matrix, xref, res) { - assert(isStream(stream), 'Mesh data is not a stream'); - var dict = stream.dict; - this.matrix = matrix; - this.shadingType = dict.get('ShadingType'); - this.type = 'Pattern'; - this.bbox = dict.get('BBox'); - var cs = dict.get('ColorSpace', 'CS'); - cs = ColorSpace.parse(cs, xref, res); - this.cs = cs; - this.background = dict.has('Background') ? - cs.getRgb(dict.get('Background'), 0) : null; - - var fnObj = dict.get('Function'); - var fn = fnObj ? PDFFunction.parseArray(xref, fnObj) : null; - - this.coords = []; - this.colors = []; - this.figures = []; - - var decodeContext = { - bitsPerCoordinate: dict.get('BitsPerCoordinate'), - bitsPerComponent: dict.get('BitsPerComponent'), - bitsPerFlag: dict.get('BitsPerFlag'), - decode: dict.get('Decode'), - colorFn: fn, - colorSpace: cs, - numComps: fn ? 1 : cs.numComps - }; - var reader = new MeshStreamReader(stream, decodeContext); - - var patchMesh = false; - switch (this.shadingType) { - case ShadingType.FREE_FORM_MESH: - decodeType4Shading(this, reader); - break; - case ShadingType.LATTICE_FORM_MESH: - var verticesPerRow = dict.get('VerticesPerRow') | 0; - assert(verticesPerRow >= 2, 'Invalid VerticesPerRow'); - decodeType5Shading(this, reader, verticesPerRow); - break; - case ShadingType.COONS_PATCH_MESH: - decodeType6Shading(this, reader); - patchMesh = true; - break; - case ShadingType.TENSOR_PATCH_MESH: - decodeType7Shading(this, reader); - patchMesh = true; - break; - default: - error('Unsupported mesh type.'); - break; - } - - if (patchMesh) { - // dirty bounds calculation for determining, how dense shall be triangles - updateBounds(this); - for (var i = 0, ii = this.figures.length; i < ii; i++) { - buildFigureFromPatch(this, i); - } - } - // calculate bounds - updateBounds(this); - - packData(this); - } - - Mesh.prototype = { - getIR: function Mesh_getIR() { - return ['Mesh', this.shadingType, this.coords, this.colors, this.figures, - this.bounds, this.matrix, this.bbox, this.background]; - } - }; - - return Mesh; -})(); - -Shadings.Dummy = (function DummyClosure() { - function Dummy() { - this.type = 'Pattern'; - } - - Dummy.prototype = { - getIR: function Dummy_getIR() { - return ['Dummy']; - } - }; - return Dummy; -})(); - -function getTilingPatternIR(operatorList, dict, args) { - var matrix = dict.get('Matrix'); - var bbox = dict.get('BBox'); - var xstep = dict.get('XStep'); - var ystep = dict.get('YStep'); - var paintType = dict.get('PaintType'); - var tilingType = dict.get('TilingType'); - - return [ - 'TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, - paintType, tilingType - ]; -} - - -var PartialEvaluator = (function PartialEvaluatorClosure() { - function PartialEvaluator(pdfManager, xref, handler, pageIndex, - uniquePrefix, idCounters, fontCache) { - this.pdfManager = pdfManager; - this.xref = xref; - this.handler = handler; - this.pageIndex = pageIndex; - this.uniquePrefix = uniquePrefix; - this.idCounters = idCounters; - this.fontCache = fontCache; - } - - // Trying to minimize Date.now() usage and check every 100 time - var TIME_SLOT_DURATION_MS = 20; - var CHECK_TIME_EVERY = 100; - function TimeSlotManager() { - this.reset(); - } - TimeSlotManager.prototype = { - check: function TimeSlotManager_check() { - if (++this.checked < CHECK_TIME_EVERY) { - return false; - } - this.checked = 0; - return this.endTime <= Date.now(); - }, - reset: function TimeSlotManager_reset() { - this.endTime = Date.now() + TIME_SLOT_DURATION_MS; - this.checked = 0; - } - }; - - var deferred = Promise.resolve(); - - var TILING_PATTERN = 1, SHADING_PATTERN = 2; - - PartialEvaluator.prototype = { - hasBlendModes: function PartialEvaluator_hasBlendModes(resources) { - if (!isDict(resources)) { - return false; - } - - var processed = Object.create(null); - if (resources.objId) { - processed[resources.objId] = true; - } - - var nodes = [resources]; - while (nodes.length) { - var key; - var node = nodes.shift(); - // First check the current resources for blend modes. - var graphicStates = node.get('ExtGState'); - if (isDict(graphicStates)) { - graphicStates = graphicStates.getAll(); - for (key in graphicStates) { - var graphicState = graphicStates[key]; - var bm = graphicState['BM']; - if (isName(bm) && bm.name !== 'Normal') { - return true; - } - } - } - // Descend into the XObjects to look for more resources and blend modes. - var xObjects = node.get('XObject'); - if (!isDict(xObjects)) { - continue; - } - xObjects = xObjects.getAll(); - for (key in xObjects) { - var xObject = xObjects[key]; - if (!isStream(xObject)) { - continue; - } - if (xObject.dict.objId) { - if (processed[xObject.dict.objId]) { - // stream has objId and is processed already - continue; - } - processed[xObject.dict.objId] = true; - } - var xResources = xObject.dict.get('Resources'); - // Checking objId to detect an infinite loop. - if (isDict(xResources) && - (!xResources.objId || !processed[xResources.objId])) { - nodes.push(xResources); - if (xResources.objId) { - processed[xResources.objId] = true; - } - } - } - } - return false; - }, - - buildFormXObject: function PartialEvaluator_buildFormXObject(resources, - xobj, smask, - operatorList, - task, - initialState) { - var matrix = xobj.dict.getArray('Matrix'); - var bbox = xobj.dict.getArray('BBox'); - var group = xobj.dict.get('Group'); - if (group) { - var groupOptions = { - matrix: matrix, - bbox: bbox, - smask: smask, - isolated: false, - knockout: false - }; - - var groupSubtype = group.get('S'); - var colorSpace; - if (isName(groupSubtype) && groupSubtype.name === 'Transparency') { - groupOptions.isolated = (group.get('I') || false); - groupOptions.knockout = (group.get('K') || false); - colorSpace = (group.has('CS') ? - ColorSpace.parse(group.get('CS'), this.xref, resources) : null); - } - - if (smask && smask.backdrop) { - colorSpace = colorSpace || ColorSpace.singletons.rgb; - smask.backdrop = colorSpace.getRgb(smask.backdrop, 0); - } - - operatorList.addOp(OPS.beginGroup, [groupOptions]); - } - - operatorList.addOp(OPS.paintFormXObjectBegin, [matrix, bbox]); - - return this.getOperatorList(xobj, task, - (xobj.dict.get('Resources') || resources), operatorList, initialState). - then(function () { - operatorList.addOp(OPS.paintFormXObjectEnd, []); - - if (group) { - operatorList.addOp(OPS.endGroup, [groupOptions]); - } - }); - }, - - buildPaintImageXObject: - function PartialEvaluator_buildPaintImageXObject(resources, image, - inline, operatorList, - cacheKey, imageCache) { - var self = this; - var dict = image.dict; - var w = dict.get('Width', 'W'); - var h = dict.get('Height', 'H'); - - if (!(w && isNum(w)) || !(h && isNum(h))) { - warn('Image dimensions are missing, or not numbers.'); - return; - } - if (PDFJS.maxImageSize !== -1 && w * h > PDFJS.maxImageSize) { - warn('Image exceeded maximum allowed size and was removed.'); - return; - } - - var imageMask = (dict.get('ImageMask', 'IM') || false); - var imgData, args; - if (imageMask) { - // This depends on a tmpCanvas being filled with the - // current fillStyle, such that processing the pixel - // data can't be done here. Instead of creating a - // complete PDFImage, only read the information needed - // for later. - - var width = dict.get('Width', 'W'); - var height = dict.get('Height', 'H'); - var bitStrideLength = (width + 7) >> 3; - var imgArray = image.getBytes(bitStrideLength * height); - var decode = dict.get('Decode', 'D'); - var inverseDecode = (!!decode && decode[0] > 0); - - imgData = PDFImage.createMask(imgArray, width, height, - image instanceof DecodeStream, - inverseDecode); - imgData.cached = true; - args = [imgData]; - operatorList.addOp(OPS.paintImageMaskXObject, args); - if (cacheKey) { - imageCache[cacheKey] = { - fn: OPS.paintImageMaskXObject, - args: args - }; - } - return; - } - - var softMask = (dict.get('SMask', 'SM') || false); - var mask = (dict.get('Mask') || false); - - var SMALL_IMAGE_DIMENSIONS = 200; - // Inlining small images into the queue as RGB data - if (inline && !softMask && !mask && !(image instanceof JpegStream) && - (w + h) < SMALL_IMAGE_DIMENSIONS) { - var imageObj = new PDFImage(this.xref, resources, image, - inline, null, null); - // We force the use of RGBA_32BPP images here, because we can't handle - // any other kind. - imgData = imageObj.createImageData(/* forceRGBA = */ true); - operatorList.addOp(OPS.paintInlineImageXObject, [imgData]); - return; - } - - // If there is no imageMask, create the PDFImage and a lot - // of image processing can be done here. - var uniquePrefix = (this.uniquePrefix || ''); - var objId = 'img_' + uniquePrefix + (++this.idCounters.obj); - operatorList.addDependency(objId); - args = [objId, w, h]; - - if (!softMask && !mask && image instanceof JpegStream && - image.isNativelySupported(this.xref, resources)) { - // These JPEGs don't need any more processing so we can just send it. - operatorList.addOp(OPS.paintJpegXObject, args); - this.handler.send('obj', - [objId, this.pageIndex, 'JpegStream', image.getIR()]); - return; - } - - PDFImage.buildImage(self.handler, self.xref, resources, image, inline). - then(function(imageObj) { - var imgData = imageObj.createImageData(/* forceRGBA = */ false); - self.handler.send('obj', [objId, self.pageIndex, 'Image', imgData], - [imgData.data.buffer]); - }).then(undefined, function (reason) { - warn('Unable to decode image: ' + reason); - self.handler.send('obj', [objId, self.pageIndex, 'Image', null]); - }); - - operatorList.addOp(OPS.paintImageXObject, args); - if (cacheKey) { - imageCache[cacheKey] = { - fn: OPS.paintImageXObject, - args: args - }; - } - }, - - handleSMask: function PartialEvaluator_handleSmask(smask, resources, - operatorList, task, - stateManager) { - var smaskContent = smask.get('G'); - var smaskOptions = { - subtype: smask.get('S').name, - backdrop: smask.get('BC') - }; - return this.buildFormXObject(resources, smaskContent, smaskOptions, - operatorList, task, stateManager.state.clone()); - }, - - handleTilingType: - function PartialEvaluator_handleTilingType(fn, args, resources, - pattern, patternDict, - operatorList, task) { - // Create an IR of the pattern code. - var tilingOpList = new OperatorList(); - // Merge the available resources, to prevent issues when the patternDict - // is missing some /Resources entries (fixes issue6541.pdf). - var resourcesArray = [patternDict.get('Resources'), resources]; - var patternResources = Dict.merge(this.xref, resourcesArray); - - return this.getOperatorList(pattern, task, patternResources, - tilingOpList).then(function () { - // Add the dependencies to the parent operator list so they are - // resolved before sub operator list is executed synchronously. - operatorList.addDependencies(tilingOpList.dependencies); - operatorList.addOp(fn, getTilingPatternIR({ - fnArray: tilingOpList.fnArray, - argsArray: tilingOpList.argsArray - }, patternDict, args)); - }); - }, - - handleSetFont: - function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef, - operatorList, task, state) { - // TODO(mack): Not needed? - var fontName; - if (fontArgs) { - fontArgs = fontArgs.slice(); - fontName = fontArgs[0].name; - } - - var self = this; - return this.loadFont(fontName, fontRef, this.xref, resources).then( - function (translated) { - if (!translated.font.isType3Font) { - return translated; - } - return translated.loadType3Data(self, resources, operatorList, task). - then(function () { - return translated; - }); - }).then(function (translated) { - state.font = translated.font; - translated.send(self.handler); - return translated.loadedName; - }); - }, - - handleText: function PartialEvaluator_handleText(chars, state) { - var font = state.font; - var glyphs = font.charsToGlyphs(chars); - var isAddToPathSet = !!(state.textRenderingMode & - TextRenderingMode.ADD_TO_PATH_FLAG); - if (font.data && (isAddToPathSet || PDFJS.disableFontFace)) { - var buildPath = function (fontChar) { - if (!font.renderer.hasBuiltPath(fontChar)) { - var path = font.renderer.getPathJs(fontChar); - this.handler.send('commonobj', [ - font.loadedName + '_path_' + fontChar, - 'FontPath', - path - ]); - } - }.bind(this); - - for (var i = 0, ii = glyphs.length; i < ii; i++) { - var glyph = glyphs[i]; - buildPath(glyph.fontChar); - - // If the glyph has an accent we need to build a path for its - // fontChar too, otherwise CanvasGraphics_paintChar will fail. - var accent = glyph.accent; - if (accent && accent.fontChar) { - buildPath(accent.fontChar); - } - } - } - - return glyphs; - }, - - setGState: function PartialEvaluator_setGState(resources, gState, - operatorList, task, - xref, stateManager) { - // This array holds the converted/processed state data. - var gStateObj = []; - var gStateMap = gState.map; - var self = this; - var promise = Promise.resolve(); - for (var key in gStateMap) { - var value = gStateMap[key]; - switch (key) { - case 'Type': - break; - case 'LW': - case 'LC': - case 'LJ': - case 'ML': - case 'D': - case 'RI': - case 'FL': - case 'CA': - case 'ca': - gStateObj.push([key, value]); - break; - case 'Font': - promise = promise.then(function () { - return self.handleSetFont(resources, null, value[0], operatorList, - task, stateManager.state). - then(function (loadedName) { - operatorList.addDependency(loadedName); - gStateObj.push([key, [loadedName, value[1]]]); - }); - }); - break; - case 'BM': - gStateObj.push([key, value]); - break; - case 'SMask': - if (isName(value) && value.name === 'None') { - gStateObj.push([key, false]); - break; - } - var dict = xref.fetchIfRef(value); - if (isDict(dict)) { - promise = promise.then(function () { - return self.handleSMask(dict, resources, operatorList, - task, stateManager); - }); - gStateObj.push([key, true]); - } else { - warn('Unsupported SMask type'); - } - - break; - // Only generate info log messages for the following since - // they are unlikely to have a big impact on the rendering. - case 'OP': - case 'op': - case 'OPM': - case 'BG': - case 'BG2': - case 'UCR': - case 'UCR2': - case 'TR': - case 'TR2': - case 'HT': - case 'SM': - case 'SA': - case 'AIS': - case 'TK': - // TODO implement these operators. - info('graphic state operator ' + key); - break; - default: - info('Unknown graphic state operator ' + key); - break; - } - } - return promise.then(function () { - if (gStateObj.length >= 0) { - operatorList.addOp(OPS.setGState, [gStateObj]); - } - }); - }, - - loadFont: function PartialEvaluator_loadFont(fontName, font, xref, - resources) { - - function errorFont() { - return Promise.resolve(new TranslatedFont('g_font_error', - new ErrorFont('Font ' + fontName + ' is not available'), font)); - } - var fontRef; - if (font) { // Loading by ref. - assert(isRef(font)); - fontRef = font; - } else { // Loading by name. - var fontRes = resources.get('Font'); - if (fontRes) { - fontRef = fontRes.getRaw(fontName); - } else { - warn('fontRes not available'); - return errorFont(); - } - } - if (!fontRef) { - warn('fontRef not available'); - return errorFont(); - } - - if (this.fontCache.has(fontRef)) { - return this.fontCache.get(fontRef); - } - - font = xref.fetchIfRef(fontRef); - if (!isDict(font)) { - return errorFont(); - } - - // We are holding font.translated references just for fontRef that are not - // dictionaries (Dict). See explanation below. - if (font.translated) { - return font.translated; - } - - var fontCapability = createPromiseCapability(); - - var preEvaluatedFont = this.preEvaluateFont(font, xref); - var descriptor = preEvaluatedFont.descriptor; - var fontID = fontRef.num + '_' + fontRef.gen; - if (isDict(descriptor)) { - if (!descriptor.fontAliases) { - descriptor.fontAliases = Object.create(null); - } - - var fontAliases = descriptor.fontAliases; - var hash = preEvaluatedFont.hash; - if (fontAliases[hash]) { - var aliasFontRef = fontAliases[hash].aliasRef; - if (aliasFontRef && this.fontCache.has(aliasFontRef)) { - this.fontCache.putAlias(fontRef, aliasFontRef); - return this.fontCache.get(fontRef); - } - } - - if (!fontAliases[hash]) { - fontAliases[hash] = { - fontID: Font.getFontID() - }; - } - - fontAliases[hash].aliasRef = fontRef; - fontID = fontAliases[hash].fontID; - } - - // Workaround for bad PDF generators that don't reference fonts - // properly, i.e. by not using an object identifier. - // Check if the fontRef is a Dict (as opposed to a standard object), - // in which case we don't cache the font and instead reference it by - // fontName in font.loadedName below. - var fontRefIsDict = isDict(fontRef); - if (!fontRefIsDict) { - this.fontCache.put(fontRef, fontCapability.promise); - } - - // Keep track of each font we translated so the caller can - // load them asynchronously before calling display on a page. - font.loadedName = 'g_font_' + (fontRefIsDict ? - fontName.replace(/\W/g, '') : fontID); - - font.translated = fontCapability.promise; - - // TODO move promises into translate font - var translatedPromise; - try { - translatedPromise = Promise.resolve( - this.translateFont(preEvaluatedFont, xref)); - } catch (e) { - translatedPromise = Promise.reject(e); - } - - translatedPromise.then(function (translatedFont) { - if (translatedFont.fontType !== undefined) { - var xrefFontStats = xref.stats.fontTypes; - xrefFontStats[translatedFont.fontType] = true; - } - - fontCapability.resolve(new TranslatedFont(font.loadedName, - translatedFont, font)); - }, function (reason) { - // TODO fontCapability.reject? - UnsupportedManager.notify(UNSUPPORTED_FEATURES.font); - - try { - // error, but it's still nice to have font type reported - var descriptor = preEvaluatedFont.descriptor; - var fontFile3 = descriptor && descriptor.get('FontFile3'); - var subtype = fontFile3 && fontFile3.get('Subtype'); - var fontType = getFontType(preEvaluatedFont.type, - subtype && subtype.name); - var xrefFontStats = xref.stats.fontTypes; - xrefFontStats[fontType] = true; - } catch (ex) { } - - fontCapability.resolve(new TranslatedFont(font.loadedName, - new ErrorFont(reason instanceof Error ? reason.message : reason), - font)); - }); - return fontCapability.promise; - }, - - buildPath: function PartialEvaluator_buildPath(operatorList, fn, args) { - var lastIndex = operatorList.length - 1; - if (!args) { - args = []; - } - if (lastIndex < 0 || - operatorList.fnArray[lastIndex] !== OPS.constructPath) { - operatorList.addOp(OPS.constructPath, [[fn], args]); - } else { - var opArgs = operatorList.argsArray[lastIndex]; - opArgs[0].push(fn); - Array.prototype.push.apply(opArgs[1], args); - } - }, - - handleColorN: function PartialEvaluator_handleColorN(operatorList, fn, args, - cs, patterns, resources, task, xref) { - // compile tiling patterns - var patternName = args[args.length - 1]; - // SCN/scn applies patterns along with normal colors - var pattern; - if (isName(patternName) && - (pattern = patterns.get(patternName.name))) { - var dict = (isStream(pattern) ? pattern.dict : pattern); - var typeNum = dict.get('PatternType'); - - if (typeNum === TILING_PATTERN) { - var color = cs.base ? cs.base.getRgb(args, 0) : null; - return this.handleTilingType(fn, color, resources, pattern, - dict, operatorList, task); - } else if (typeNum === SHADING_PATTERN) { - var shading = dict.get('Shading'); - var matrix = dict.get('Matrix'); - pattern = Pattern.parseShading(shading, matrix, xref, resources); - operatorList.addOp(fn, pattern.getIR()); - return Promise.resolve(); - } else { - return Promise.reject('Unknown PatternType: ' + typeNum); - } - } - // TODO shall we fail here? - operatorList.addOp(fn, args); - return Promise.resolve(); - }, - - getOperatorList: function PartialEvaluator_getOperatorList(stream, - task, - resources, - operatorList, - initialState) { - - var self = this; - var xref = this.xref; - var imageCache = {}; - - assert(operatorList); - - resources = (resources || Dict.empty); - var xobjs = (resources.get('XObject') || Dict.empty); - var patterns = (resources.get('Pattern') || Dict.empty); - var stateManager = new StateManager(initialState || new EvalState()); - var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); - var timeSlotManager = new TimeSlotManager(); - - return new Promise(function next(resolve, reject) { - task.ensureNotTerminated(); - timeSlotManager.reset(); - var stop, operation = {}, i, ii, cs; - while (!(stop = timeSlotManager.check())) { - // The arguments parsed by read() are used beyond this loop, so we - // cannot reuse the same array on each iteration. Therefore we pass - // in |null| as the initial value (see the comment on - // EvaluatorPreprocessor_read() for why). - operation.args = null; - if (!(preprocessor.read(operation))) { - break; - } - var args = operation.args; - var fn = operation.fn; - - switch (fn | 0) { - case OPS.paintXObject: - if (args[0].code) { - break; - } - // eagerly compile XForm objects - var name = args[0].name; - if (!name) { - warn('XObject must be referred to by name.'); - continue; - } - if (imageCache[name] !== undefined) { - operatorList.addOp(imageCache[name].fn, imageCache[name].args); - args = null; - continue; - } - - var xobj = xobjs.get(name); - if (xobj) { - assert(isStream(xobj), 'XObject should be a stream'); - - var type = xobj.dict.get('Subtype'); - assert(isName(type), - 'XObject should have a Name subtype'); - - if (type.name === 'Form') { - stateManager.save(); - return self.buildFormXObject(resources, xobj, null, - operatorList, task, - stateManager.state.clone()). - then(function () { - stateManager.restore(); - next(resolve, reject); - }, reject); - } else if (type.name === 'Image') { - self.buildPaintImageXObject(resources, xobj, false, - operatorList, name, imageCache); - args = null; - continue; - } else if (type.name === 'PS') { - // PostScript XObjects are unused when viewing documents. - // See section 4.7.1 of Adobe's PDF reference. - info('Ignored XObject subtype PS'); - continue; - } else { - error('Unhandled XObject subtype ' + type.name); - } - } - break; - case OPS.setFont: - var fontSize = args[1]; - // eagerly collect all fonts - return self.handleSetFont(resources, args, null, operatorList, - task, stateManager.state). - then(function (loadedName) { - operatorList.addDependency(loadedName); - operatorList.addOp(OPS.setFont, [loadedName, fontSize]); - next(resolve, reject); - }, reject); - case OPS.endInlineImage: - var cacheKey = args[0].cacheKey; - if (cacheKey) { - var cacheEntry = imageCache[cacheKey]; - if (cacheEntry !== undefined) { - operatorList.addOp(cacheEntry.fn, cacheEntry.args); - args = null; - continue; - } - } - self.buildPaintImageXObject(resources, args[0], true, - operatorList, cacheKey, imageCache); - args = null; - continue; - case OPS.showText: - args[0] = self.handleText(args[0], stateManager.state); - break; - case OPS.showSpacedText: - var arr = args[0]; - var combinedGlyphs = []; - var arrLength = arr.length; - var state = stateManager.state; - for (i = 0; i < arrLength; ++i) { - var arrItem = arr[i]; - if (isString(arrItem)) { - Array.prototype.push.apply(combinedGlyphs, - self.handleText(arrItem, state)); - } else if (isNum(arrItem)) { - combinedGlyphs.push(arrItem); - } - } - args[0] = combinedGlyphs; - fn = OPS.showText; - break; - case OPS.nextLineShowText: - operatorList.addOp(OPS.nextLine); - args[0] = self.handleText(args[0], stateManager.state); - fn = OPS.showText; - break; - case OPS.nextLineSetSpacingShowText: - operatorList.addOp(OPS.nextLine); - operatorList.addOp(OPS.setWordSpacing, [args.shift()]); - operatorList.addOp(OPS.setCharSpacing, [args.shift()]); - args[0] = self.handleText(args[0], stateManager.state); - fn = OPS.showText; - break; - case OPS.setTextRenderingMode: - stateManager.state.textRenderingMode = args[0]; - break; - - case OPS.setFillColorSpace: - stateManager.state.fillColorSpace = - ColorSpace.parse(args[0], xref, resources); - continue; - case OPS.setStrokeColorSpace: - stateManager.state.strokeColorSpace = - ColorSpace.parse(args[0], xref, resources); - continue; - case OPS.setFillColor: - cs = stateManager.state.fillColorSpace; - args = cs.getRgb(args, 0); - fn = OPS.setFillRGBColor; - break; - case OPS.setStrokeColor: - cs = stateManager.state.strokeColorSpace; - args = cs.getRgb(args, 0); - fn = OPS.setStrokeRGBColor; - break; - case OPS.setFillGray: - stateManager.state.fillColorSpace = ColorSpace.singletons.gray; - args = ColorSpace.singletons.gray.getRgb(args, 0); - fn = OPS.setFillRGBColor; - break; - case OPS.setStrokeGray: - stateManager.state.strokeColorSpace = ColorSpace.singletons.gray; - args = ColorSpace.singletons.gray.getRgb(args, 0); - fn = OPS.setStrokeRGBColor; - break; - case OPS.setFillCMYKColor: - stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk; - args = ColorSpace.singletons.cmyk.getRgb(args, 0); - fn = OPS.setFillRGBColor; - break; - case OPS.setStrokeCMYKColor: - stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk; - args = ColorSpace.singletons.cmyk.getRgb(args, 0); - fn = OPS.setStrokeRGBColor; - break; - case OPS.setFillRGBColor: - stateManager.state.fillColorSpace = ColorSpace.singletons.rgb; - args = ColorSpace.singletons.rgb.getRgb(args, 0); - break; - case OPS.setStrokeRGBColor: - stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb; - args = ColorSpace.singletons.rgb.getRgb(args, 0); - break; - case OPS.setFillColorN: - cs = stateManager.state.fillColorSpace; - if (cs.name === 'Pattern') { - return self.handleColorN(operatorList, OPS.setFillColorN, - args, cs, patterns, resources, task, xref).then(function() { - next(resolve, reject); - }, reject); - } - args = cs.getRgb(args, 0); - fn = OPS.setFillRGBColor; - break; - case OPS.setStrokeColorN: - cs = stateManager.state.strokeColorSpace; - if (cs.name === 'Pattern') { - return self.handleColorN(operatorList, OPS.setStrokeColorN, - args, cs, patterns, resources, task, xref).then(function() { - next(resolve, reject); - }, reject); - } - args = cs.getRgb(args, 0); - fn = OPS.setStrokeRGBColor; - break; - - case OPS.shadingFill: - var shadingRes = resources.get('Shading'); - if (!shadingRes) { - error('No shading resource found'); - } - - var shading = shadingRes.get(args[0].name); - if (!shading) { - error('No shading object found'); - } - - var shadingFill = Pattern.parseShading(shading, null, xref, - resources); - var patternIR = shadingFill.getIR(); - args = [patternIR]; - fn = OPS.shadingFill; - break; - case OPS.setGState: - var dictName = args[0]; - var extGState = resources.get('ExtGState'); - - if (!isDict(extGState) || !extGState.has(dictName.name)) { - break; - } - - var gState = extGState.get(dictName.name); - return self.setGState(resources, gState, operatorList, task, - xref, stateManager).then(function() { - next(resolve, reject); - }, reject); - case OPS.moveTo: - case OPS.lineTo: - case OPS.curveTo: - case OPS.curveTo2: - case OPS.curveTo3: - case OPS.closePath: - self.buildPath(operatorList, fn, args); - continue; - case OPS.rectangle: - self.buildPath(operatorList, fn, args); - continue; - case OPS.markPoint: - case OPS.markPointProps: - case OPS.beginMarkedContent: - case OPS.beginMarkedContentProps: - case OPS.endMarkedContent: - case OPS.beginCompat: - case OPS.endCompat: - // Ignore operators where the corresponding handlers are known to - // be no-op in CanvasGraphics (display/canvas.js). This prevents - // serialization errors and is also a bit more efficient. - // We could also try to serialize all objects in a general way, - // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266, - // but doing so is meaningless without knowing the semantics. - continue; - default: - // Note: Let's hope that the ignored operator does not have any - // non-serializable arguments, otherwise postMessage will throw - // "An object could not be cloned.". - } - operatorList.addOp(fn, args); - } - if (stop) { - deferred.then(function () { - next(resolve, reject); - }, reject); - return; - } - // Some PDFs don't close all restores inside object/form. - // Closing those for them. - for (i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) { - operatorList.addOp(OPS.restore, []); - } - resolve(); - }); - }, - - getTextContent: function PartialEvaluator_getTextContent(stream, task, - resources, - stateManager) { - - stateManager = (stateManager || new StateManager(new TextState())); - - var textContent = { - items: [], - styles: Object.create(null) - }; - var textContentItem = { - initialized: false, - str: [], - width: 0, - height: 0, - vertical: false, - lastAdvanceWidth: 0, - lastAdvanceHeight: 0, - textAdvanceScale: 0, - spaceWidth: 0, - fakeSpaceMin: Infinity, - fakeMultiSpaceMin: Infinity, - fakeMultiSpaceMax: -0, - textRunBreakAllowed: false, - transform: null, - fontName: null - }; - var SPACE_FACTOR = 0.3; - var MULTI_SPACE_FACTOR = 1.5; - var MULTI_SPACE_FACTOR_MAX = 4; - - var self = this; - var xref = this.xref; - - resources = (xref.fetchIfRef(resources) || Dict.empty); - - // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd. - var xobjs = null; - var xobjsCache = {}; - - var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); - - var textState; - - function ensureTextContentItem() { - if (textContentItem.initialized) { - return textContentItem; - } - var font = textState.font; - if (!(font.loadedName in textContent.styles)) { - textContent.styles[font.loadedName] = { - fontFamily: font.fallbackName, - ascent: font.ascent, - descent: font.descent, - vertical: font.vertical - }; - } - textContentItem.fontName = font.loadedName; - - // 9.4.4 Text Space Details - var tsm = [textState.fontSize * textState.textHScale, 0, - 0, textState.fontSize, - 0, textState.textRise]; - - if (font.isType3Font && - textState.fontMatrix !== FONT_IDENTITY_MATRIX && - textState.fontSize === 1) { - var glyphHeight = font.bbox[3] - font.bbox[1]; - if (glyphHeight > 0) { - glyphHeight = glyphHeight * textState.fontMatrix[3]; - tsm[3] *= glyphHeight; - } - } - - var trm = Util.transform(textState.ctm, - Util.transform(textState.textMatrix, tsm)); - textContentItem.transform = trm; - if (!font.vertical) { - textContentItem.width = 0; - textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]); - textContentItem.vertical = false; - } else { - textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]); - textContentItem.height = 0; - textContentItem.vertical = true; - } - - var a = textState.textLineMatrix[0]; - var b = textState.textLineMatrix[1]; - var scaleLineX = Math.sqrt(a * a + b * b); - a = textState.ctm[0]; - b = textState.ctm[1]; - var scaleCtmX = Math.sqrt(a * a + b * b); - textContentItem.textAdvanceScale = scaleCtmX * scaleLineX; - textContentItem.lastAdvanceWidth = 0; - textContentItem.lastAdvanceHeight = 0; - - var spaceWidth = font.spaceWidth / 1000 * textState.fontSize; - if (spaceWidth) { - textContentItem.spaceWidth = spaceWidth; - textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR; - textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR; - textContentItem.fakeMultiSpaceMax = - spaceWidth * MULTI_SPACE_FACTOR_MAX; - // It's okay for monospace fonts to fake as much space as needed. - textContentItem.textRunBreakAllowed = !font.isMonospace; - } else { - textContentItem.spaceWidth = 0; - textContentItem.fakeSpaceMin = Infinity; - textContentItem.fakeMultiSpaceMin = Infinity; - textContentItem.fakeMultiSpaceMax = 0; - textContentItem.textRunBreakAllowed = false; - } - - - textContentItem.initialized = true; - return textContentItem; - } - - function runBidiTransform(textChunk) { - var str = textChunk.str.join(''); - var bidiResult = PDFJS.bidi(str, -1, textChunk.vertical); - return { - str: bidiResult.str, - dir: bidiResult.dir, - width: textChunk.width, - height: textChunk.height, - transform: textChunk.transform, - fontName: textChunk.fontName - }; - } - - function handleSetFont(fontName, fontRef) { - return self.loadFont(fontName, fontRef, xref, resources). - then(function (translated) { - textState.font = translated.font; - textState.fontMatrix = translated.font.fontMatrix || - FONT_IDENTITY_MATRIX; - }); - } - - function buildTextContentItem(chars) { - var font = textState.font; - var textChunk = ensureTextContentItem(); - var width = 0; - var height = 0; - var glyphs = font.charsToGlyphs(chars); - var defaultVMetrics = font.defaultVMetrics; - for (var i = 0; i < glyphs.length; i++) { - var glyph = glyphs[i]; - var vMetricX = null; - var vMetricY = null; - var glyphWidth = null; - if (font.vertical) { - if (glyph.vmetric) { - glyphWidth = glyph.vmetric[0]; - vMetricX = glyph.vmetric[1]; - vMetricY = glyph.vmetric[2]; - } else { - glyphWidth = glyph.width; - vMetricX = glyph.width * 0.5; - vMetricY = defaultVMetrics[2]; - } - } else { - glyphWidth = glyph.width; - } - - var glyphUnicode = glyph.unicode; - if (NormalizedUnicodes[glyphUnicode] !== undefined) { - glyphUnicode = NormalizedUnicodes[glyphUnicode]; - } - glyphUnicode = reverseIfRtl(glyphUnicode); - - // The following will calculate the x and y of the individual glyphs. - // if (font.vertical) { - // tsm[4] -= vMetricX * Math.abs(textState.fontSize) * - // textState.fontMatrix[0]; - // tsm[5] -= vMetricY * textState.fontSize * - // textState.fontMatrix[0]; - // } - // var trm = Util.transform(textState.textMatrix, tsm); - // var pt = Util.applyTransform([trm[4], trm[5]], textState.ctm); - // var x = pt[0]; - // var y = pt[1]; - - var charSpacing = textState.charSpacing; - if (glyph.isSpace) { - var wordSpacing = textState.wordSpacing; - charSpacing += wordSpacing; - if (wordSpacing > 0) { - addFakeSpaces(wordSpacing, textChunk.str); - } - } - - var tx = 0; - var ty = 0; - if (!font.vertical) { - var w0 = glyphWidth * textState.fontMatrix[0]; - tx = (w0 * textState.fontSize + charSpacing) * - textState.textHScale; - width += tx; - } else { - var w1 = glyphWidth * textState.fontMatrix[0]; - ty = w1 * textState.fontSize + charSpacing; - height += ty; - } - textState.translateTextMatrix(tx, ty); - - textChunk.str.push(glyphUnicode); - } - - if (!font.vertical) { - textChunk.lastAdvanceWidth = width; - textChunk.width += width * textChunk.textAdvanceScale; - } else { - textChunk.lastAdvanceHeight = height; - textChunk.height += Math.abs(height * textChunk.textAdvanceScale); - } - - return textChunk; - } - - function addFakeSpaces(width, strBuf) { - if (width < textContentItem.fakeSpaceMin) { - return; - } - if (width < textContentItem.fakeMultiSpaceMin) { - strBuf.push(' '); - return; - } - var fakeSpaces = Math.round(width / textContentItem.spaceWidth); - while (fakeSpaces-- > 0) { - strBuf.push(' '); - } - } - - function flushTextContentItem() { - if (!textContentItem.initialized) { - return; - } - textContent.items.push(runBidiTransform(textContentItem)); - - textContentItem.initialized = false; - textContentItem.str.length = 0; - } - - var timeSlotManager = new TimeSlotManager(); - - return new Promise(function next(resolve, reject) { - task.ensureNotTerminated(); - timeSlotManager.reset(); - var stop, operation = {}, args = []; - while (!(stop = timeSlotManager.check())) { - // The arguments parsed by read() are not used beyond this loop, so - // we can reuse the same array on every iteration, thus avoiding - // unnecessary allocations. - args.length = 0; - operation.args = args; - if (!(preprocessor.read(operation))) { - break; - } - textState = stateManager.state; - var fn = operation.fn; - args = operation.args; - var advance; - - switch (fn | 0) { - case OPS.setFont: - flushTextContentItem(); - textState.fontSize = args[1]; - return handleSetFont(args[0].name).then(function() { - next(resolve, reject); - }, reject); - case OPS.setTextRise: - flushTextContentItem(); - textState.textRise = args[0]; - break; - case OPS.setHScale: - flushTextContentItem(); - textState.textHScale = args[0] / 100; - break; - case OPS.setLeading: - flushTextContentItem(); - textState.leading = args[0]; - break; - case OPS.moveText: - // Optimization to treat same line movement as advance - var isSameTextLine = !textState.font ? false : - ((textState.font.vertical ? args[0] : args[1]) === 0); - advance = args[0] - args[1]; - if (isSameTextLine && textContentItem.initialized && - advance > 0 && - advance <= textContentItem.fakeMultiSpaceMax) { - textState.translateTextLineMatrix(args[0], args[1]); - textContentItem.width += - (args[0] - textContentItem.lastAdvanceWidth); - textContentItem.height += - (args[1] - textContentItem.lastAdvanceHeight); - var diff = (args[0] - textContentItem.lastAdvanceWidth) - - (args[1] - textContentItem.lastAdvanceHeight); - addFakeSpaces(diff, textContentItem.str); - break; - } - - flushTextContentItem(); - textState.translateTextLineMatrix(args[0], args[1]); - textState.textMatrix = textState.textLineMatrix.slice(); - break; - case OPS.setLeadingMoveText: - flushTextContentItem(); - textState.leading = -args[1]; - textState.translateTextLineMatrix(args[0], args[1]); - textState.textMatrix = textState.textLineMatrix.slice(); - break; - case OPS.nextLine: - flushTextContentItem(); - textState.carriageReturn(); - break; - case OPS.setTextMatrix: - flushTextContentItem(); - textState.setTextMatrix(args[0], args[1], args[2], args[3], - args[4], args[5]); - textState.setTextLineMatrix(args[0], args[1], args[2], args[3], - args[4], args[5]); - break; - case OPS.setCharSpacing: - textState.charSpacing = args[0]; - break; - case OPS.setWordSpacing: - textState.wordSpacing = args[0]; - break; - case OPS.beginText: - flushTextContentItem(); - textState.textMatrix = IDENTITY_MATRIX.slice(); - textState.textLineMatrix = IDENTITY_MATRIX.slice(); - break; - case OPS.showSpacedText: - var items = args[0]; - var offset; - for (var j = 0, jj = items.length; j < jj; j++) { - if (typeof items[j] === 'string') { - buildTextContentItem(items[j]); - } else { - ensureTextContentItem(); - - // PDF Specification 5.3.2 states: - // The number is expressed in thousandths of a unit of text - // space. - // This amount is subtracted from the current horizontal or - // vertical coordinate, depending on the writing mode. - // In the default coordinate system, a positive adjustment - // has the effect of moving the next glyph painted either to - // the left or down by the given amount. - advance = items[j] * textState.fontSize / 1000; - var breakTextRun = false; - if (textState.font.vertical) { - offset = advance * - (textState.textHScale * textState.textMatrix[2] + - textState.textMatrix[3]); - textState.translateTextMatrix(0, advance); - breakTextRun = textContentItem.textRunBreakAllowed && - advance > textContentItem.fakeMultiSpaceMax; - if (!breakTextRun) { - // Value needs to be added to height to paint down. - textContentItem.height += offset; - } - } else { - advance = -advance; - offset = advance * ( - textState.textHScale * textState.textMatrix[0] + - textState.textMatrix[1]); - textState.translateTextMatrix(advance, 0); - breakTextRun = textContentItem.textRunBreakAllowed && - advance > textContentItem.fakeMultiSpaceMax; - if (!breakTextRun) { - // Value needs to be subtracted from width to paint left. - textContentItem.width += offset; - } - } - if (breakTextRun) { - flushTextContentItem(); - } else if (advance > 0) { - addFakeSpaces(advance, textContentItem.str); - } - } - } - break; - case OPS.showText: - buildTextContentItem(args[0]); - break; - case OPS.nextLineShowText: - flushTextContentItem(); - textState.carriageReturn(); - buildTextContentItem(args[0]); - break; - case OPS.nextLineSetSpacingShowText: - flushTextContentItem(); - textState.wordSpacing = args[0]; - textState.charSpacing = args[1]; - textState.carriageReturn(); - buildTextContentItem(args[2]); - break; - case OPS.paintXObject: - flushTextContentItem(); - if (args[0].code) { - break; - } - - if (!xobjs) { - xobjs = (resources.get('XObject') || Dict.empty); - } - - var name = args[0].name; - if (xobjsCache.key === name) { - if (xobjsCache.texts) { - Util.appendToArray(textContent.items, xobjsCache.texts.items); - Util.extendObj(textContent.styles, xobjsCache.texts.styles); - } - break; - } - - var xobj = xobjs.get(name); - if (!xobj) { - break; - } - assert(isStream(xobj), 'XObject should be a stream'); - - var type = xobj.dict.get('Subtype'); - assert(isName(type), - 'XObject should have a Name subtype'); - - if ('Form' !== type.name) { - xobjsCache.key = name; - xobjsCache.texts = null; - break; - } - - stateManager.save(); - var matrix = xobj.dict.get('Matrix'); - if (isArray(matrix) && matrix.length === 6) { - stateManager.transform(matrix); - } - - return self.getTextContent(xobj, task, - xobj.dict.get('Resources') || resources, stateManager). - then(function (formTextContent) { - Util.appendToArray(textContent.items, formTextContent.items); - Util.extendObj(textContent.styles, formTextContent.styles); - stateManager.restore(); - - xobjsCache.key = name; - xobjsCache.texts = formTextContent; - - next(resolve, reject); - }, reject); - case OPS.setGState: - flushTextContentItem(); - var dictName = args[0]; - var extGState = resources.get('ExtGState'); - - if (!isDict(extGState) || !extGState.has(dictName.name)) { - break; - } - - var gsStateMap = extGState.get(dictName.name); - var gsStateFont = null; - for (var key in gsStateMap) { - if (key === 'Font') { - assert(!gsStateFont); - gsStateFont = gsStateMap[key]; - } - } - if (gsStateFont) { - textState.fontSize = gsStateFont[1]; - return handleSetFont(gsStateFont[0]).then(function() { - next(resolve, reject); - }, reject); - } - break; - } // switch - } // while - if (stop) { - deferred.then(function () { - next(resolve, reject); - }, reject); - return; - } - flushTextContentItem(); - resolve(textContent); - }); - }, - - extractDataStructures: function - partialEvaluatorExtractDataStructures(dict, baseDict, - xref, properties) { - // 9.10.2 - var toUnicode = (dict.get('ToUnicode') || baseDict.get('ToUnicode')); - if (toUnicode) { - properties.toUnicode = this.readToUnicode(toUnicode); - } - if (properties.composite) { - // CIDSystemInfo helps to match CID to glyphs - var cidSystemInfo = dict.get('CIDSystemInfo'); - if (isDict(cidSystemInfo)) { - properties.cidSystemInfo = { - registry: cidSystemInfo.get('Registry'), - ordering: cidSystemInfo.get('Ordering'), - supplement: cidSystemInfo.get('Supplement') - }; - } - - var cidToGidMap = dict.get('CIDToGIDMap'); - if (isStream(cidToGidMap)) { - properties.cidToGidMap = this.readCidToGidMap(cidToGidMap); - } - } - - // Based on 9.6.6 of the spec the encoding can come from multiple places - // and depends on the font type. The base encoding and differences are - // read here, but the encoding that is actually used is chosen during - // glyph mapping in the font. - // TODO: Loading the built in encoding in the font would allow the - // differences to be merged in here not require us to hold on to it. - var differences = []; - var baseEncodingName = null; - var encoding; - if (dict.has('Encoding')) { - encoding = dict.get('Encoding'); - if (isDict(encoding)) { - baseEncodingName = encoding.get('BaseEncoding'); - baseEncodingName = (isName(baseEncodingName) ? - baseEncodingName.name : null); - // Load the differences between the base and original - if (encoding.has('Differences')) { - var diffEncoding = encoding.get('Differences'); - var index = 0; - for (var j = 0, jj = diffEncoding.length; j < jj; j++) { - var data = diffEncoding[j]; - if (isNum(data)) { - index = data; - } else if (isName(data)) { - differences[index++] = data.name; - } else if (isRef(data)) { - diffEncoding[j--] = xref.fetch(data); - continue; - } else { - error('Invalid entry in \'Differences\' array: ' + data); - } - } - } - } else if (isName(encoding)) { - baseEncodingName = encoding.name; - } else { - error('Encoding is not a Name nor a Dict'); - } - // According to table 114 if the encoding is a named encoding it must be - // one of these predefined encodings. - if ((baseEncodingName !== 'MacRomanEncoding' && - baseEncodingName !== 'MacExpertEncoding' && - baseEncodingName !== 'WinAnsiEncoding')) { - baseEncodingName = null; - } - } - - if (baseEncodingName) { - properties.defaultEncoding = Encodings[baseEncodingName].slice(); - } else { - encoding = (properties.type === 'TrueType' ? - Encodings.WinAnsiEncoding : Encodings.StandardEncoding); - // The Symbolic attribute can be misused for regular fonts - // Heuristic: we have to check if the font is a standard one also - if (!!(properties.flags & FontFlags.Symbolic)) { - encoding = Encodings.MacRomanEncoding; - if (!properties.file) { - if (/Symbol/i.test(properties.name)) { - encoding = Encodings.SymbolSetEncoding; - } else if (/Dingbats/i.test(properties.name)) { - encoding = Encodings.ZapfDingbatsEncoding; - } - } - } - properties.defaultEncoding = encoding; - } - - properties.differences = differences; - properties.baseEncodingName = baseEncodingName; - properties.dict = dict; - }, - - readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) { - var cmap, cmapObj = toUnicode; - if (isName(cmapObj)) { - cmap = CMapFactory.create(cmapObj, - { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null); - if (cmap instanceof IdentityCMap) { - return new IdentityToUnicodeMap(0, 0xFFFF); - } - return new ToUnicodeMap(cmap.getMap()); - } else if (isStream(cmapObj)) { - cmap = CMapFactory.create(cmapObj, - { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null); - if (cmap instanceof IdentityCMap) { - return new IdentityToUnicodeMap(0, 0xFFFF); - } - var map = new Array(cmap.length); - // Convert UTF-16BE - // NOTE: cmap can be a sparse array, so use forEach instead of for(;;) - // to iterate over all keys. - cmap.forEach(function(charCode, token) { - var str = []; - for (var k = 0; k < token.length; k += 2) { - var w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1); - if ((w1 & 0xF800) !== 0xD800) { // w1 < 0xD800 || w1 > 0xDFFF - str.push(w1); - continue; - } - k += 2; - var w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1); - str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000); - } - map[charCode] = String.fromCharCode.apply(String, str); - }); - return new ToUnicodeMap(map); - } - return null; - }, - - readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) { - // Extract the encoding from the CIDToGIDMap - var glyphsData = cidToGidStream.getBytes(); - - // Set encoding 0 to later verify the font has an encoding - var result = []; - for (var j = 0, jj = glyphsData.length; j < jj; j++) { - var glyphID = (glyphsData[j++] << 8) | glyphsData[j]; - if (glyphID === 0) { - continue; - } - var code = j >> 1; - result[code] = glyphID; - } - return result; - }, - - extractWidths: function PartialEvaluator_extractWidths(dict, xref, - descriptor, - properties) { - var glyphsWidths = []; - var defaultWidth = 0; - var glyphsVMetrics = []; - var defaultVMetrics; - var i, ii, j, jj, start, code, widths; - if (properties.composite) { - defaultWidth = dict.get('DW') || 1000; - - widths = dict.get('W'); - if (widths) { - for (i = 0, ii = widths.length; i < ii; i++) { - start = widths[i++]; - code = xref.fetchIfRef(widths[i]); - if (isArray(code)) { - for (j = 0, jj = code.length; j < jj; j++) { - glyphsWidths[start++] = code[j]; - } - } else { - var width = widths[++i]; - for (j = start; j <= code; j++) { - glyphsWidths[j] = width; - } - } - } - } - - if (properties.vertical) { - var vmetrics = (dict.get('DW2') || [880, -1000]); - defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]]; - vmetrics = dict.get('W2'); - if (vmetrics) { - for (i = 0, ii = vmetrics.length; i < ii; i++) { - start = vmetrics[i++]; - code = xref.fetchIfRef(vmetrics[i]); - if (isArray(code)) { - for (j = 0, jj = code.length; j < jj; j++) { - glyphsVMetrics[start++] = [code[j++], code[j++], code[j]]; - } - } else { - var vmetric = [vmetrics[++i], vmetrics[++i], vmetrics[++i]]; - for (j = start; j <= code; j++) { - glyphsVMetrics[j] = vmetric; - } - } - } - } - } - } else { - var firstChar = properties.firstChar; - widths = dict.get('Widths'); - if (widths) { - j = firstChar; - for (i = 0, ii = widths.length; i < ii; i++) { - glyphsWidths[j++] = widths[i]; - } - defaultWidth = (parseFloat(descriptor.get('MissingWidth')) || 0); - } else { - // Trying get the BaseFont metrics (see comment above). - var baseFontName = dict.get('BaseFont'); - if (isName(baseFontName)) { - var metrics = this.getBaseFontMetrics(baseFontName.name); - - glyphsWidths = this.buildCharCodeToWidth(metrics.widths, - properties); - defaultWidth = metrics.defaultWidth; - } - } - } - - // Heuristic: detection of monospace font by checking all non-zero widths - var isMonospace = true; - var firstWidth = defaultWidth; - for (var glyph in glyphsWidths) { - var glyphWidth = glyphsWidths[glyph]; - if (!glyphWidth) { - continue; - } - if (!firstWidth) { - firstWidth = glyphWidth; - continue; - } - if (firstWidth !== glyphWidth) { - isMonospace = false; - break; - } - } - if (isMonospace) { - properties.flags |= FontFlags.FixedPitch; - } - - properties.defaultWidth = defaultWidth; - properties.widths = glyphsWidths; - properties.defaultVMetrics = defaultVMetrics; - properties.vmetrics = glyphsVMetrics; - }, - - isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) { - // Simulating descriptor flags attribute - var fontNameWoStyle = baseFontName.split('-')[0]; - return (fontNameWoStyle in serifFonts) || - (fontNameWoStyle.search(/serif/gi) !== -1); - }, - - getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) { - var defaultWidth = 0; - var widths = []; - var monospace = false; - var lookupName = (stdFontMap[name] || name); - - if (!(lookupName in Metrics)) { - // Use default fonts for looking up font metrics if the passed - // font is not a base font - if (this.isSerifFont(name)) { - lookupName = 'Times-Roman'; - } else { - lookupName = 'Helvetica'; - } - } - var glyphWidths = Metrics[lookupName]; - - if (isNum(glyphWidths)) { - defaultWidth = glyphWidths; - monospace = true; - } else { - widths = glyphWidths; - } - - return { - defaultWidth: defaultWidth, - monospace: monospace, - widths: widths - }; - }, - - buildCharCodeToWidth: - function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName, - properties) { - var widths = Object.create(null); - var differences = properties.differences; - var encoding = properties.defaultEncoding; - for (var charCode = 0; charCode < 256; charCode++) { - if (charCode in differences && - widthsByGlyphName[differences[charCode]]) { - widths[charCode] = widthsByGlyphName[differences[charCode]]; - continue; - } - if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) { - widths[charCode] = widthsByGlyphName[encoding[charCode]]; - continue; - } - } - return widths; - }, - - preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict, xref) { - var baseDict = dict; - var type = dict.get('Subtype'); - assert(isName(type), 'invalid font Subtype'); - - var composite = false; - var uint8array; - if (type.name === 'Type0') { - // If font is a composite - // - get the descendant font - // - set the type according to the descendant font - // - get the FontDescriptor from the descendant font - var df = dict.get('DescendantFonts'); - if (!df) { - error('Descendant fonts are not specified'); - } - dict = (isArray(df) ? xref.fetchIfRef(df[0]) : df); - - type = dict.get('Subtype'); - assert(isName(type), 'invalid font Subtype'); - composite = true; - } - - var descriptor = dict.get('FontDescriptor'); - if (descriptor) { - var hash = new MurmurHash3_64(); - var encoding = baseDict.getRaw('Encoding'); - if (isName(encoding)) { - hash.update(encoding.name); - } else if (isRef(encoding)) { - hash.update(encoding.num + '_' + encoding.gen); - } else if (isDict(encoding)) { - var keys = encoding.getKeys(); - for (var i = 0, ii = keys.length; i < ii; i++) { - var entry = encoding.getRaw(keys[i]); - if (isName(entry)) { - hash.update(entry.name); - } else if (isRef(entry)) { - hash.update(entry.num + '_' + entry.gen); - } else if (isArray(entry)) { // 'Differences' entry. - // Ideally we should check the contents of the array, but to avoid - // parsing it here and then again in |extractDataStructures|, - // we only use the array length for now (fixes bug1157493.pdf). - hash.update(entry.length.toString()); - } - } - } - - var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode'); - if (isStream(toUnicode)) { - var stream = toUnicode.str || toUnicode; - uint8array = stream.buffer ? - new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : - new Uint8Array(stream.bytes.buffer, - stream.start, stream.end - stream.start); - hash.update(uint8array); - - } else if (isName(toUnicode)) { - hash.update(toUnicode.name); - } - - var widths = dict.get('Widths') || baseDict.get('Widths'); - if (widths) { - uint8array = new Uint8Array(new Uint32Array(widths).buffer); - hash.update(uint8array); - } - } - - return { - descriptor: descriptor, - dict: dict, - baseDict: baseDict, - composite: composite, - type: type.name, - hash: hash ? hash.hexdigest() : '' - }; - }, - - translateFont: function PartialEvaluator_translateFont(preEvaluatedFont, - xref) { - var baseDict = preEvaluatedFont.baseDict; - var dict = preEvaluatedFont.dict; - var composite = preEvaluatedFont.composite; - var descriptor = preEvaluatedFont.descriptor; - var type = preEvaluatedFont.type; - var maxCharIndex = (composite ? 0xFFFF : 0xFF); - var properties; - - if (!descriptor) { - if (type === 'Type3') { - // FontDescriptor is only required for Type3 fonts when the document - // is a tagged pdf. Create a barbebones one to get by. - descriptor = new Dict(null); - descriptor.set('FontName', Name.get(type)); - descriptor.set('FontBBox', dict.get('FontBBox')); - } else { - // Before PDF 1.5 if the font was one of the base 14 fonts, having a - // FontDescriptor was not required. - // This case is here for compatibility. - var baseFontName = dict.get('BaseFont'); - if (!isName(baseFontName)) { - error('Base font is not specified'); - } - - // Using base font name as a font name. - baseFontName = baseFontName.name.replace(/[,_]/g, '-'); - var metrics = this.getBaseFontMetrics(baseFontName); - - // Simulating descriptor flags attribute - var fontNameWoStyle = baseFontName.split('-')[0]; - var flags = - (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) | - (metrics.monospace ? FontFlags.FixedPitch : 0) | - (symbolsFonts[fontNameWoStyle] ? FontFlags.Symbolic : - FontFlags.Nonsymbolic); - - properties = { - type: type, - name: baseFontName, - widths: metrics.widths, - defaultWidth: metrics.defaultWidth, - flags: flags, - firstChar: 0, - lastChar: maxCharIndex - }; - this.extractDataStructures(dict, dict, xref, properties); - properties.widths = this.buildCharCodeToWidth(metrics.widths, - properties); - return new Font(baseFontName, null, properties); - } - } - - // According to the spec if 'FontDescriptor' is declared, 'FirstChar', - // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem - // to ignore this rule when a variant of a standart font is used. - // TODO Fill the width array depending on which of the base font this is - // a variant. - var firstChar = (dict.get('FirstChar') || 0); - var lastChar = (dict.get('LastChar') || maxCharIndex); - - var fontName = descriptor.get('FontName'); - var baseFont = dict.get('BaseFont'); - // Some bad PDFs have a string as the font name. - if (isString(fontName)) { - fontName = Name.get(fontName); - } - if (isString(baseFont)) { - baseFont = Name.get(baseFont); - } - - if (type !== 'Type3') { - var fontNameStr = fontName && fontName.name; - var baseFontStr = baseFont && baseFont.name; - if (fontNameStr !== baseFontStr) { - info('The FontDescriptor\'s FontName is "' + fontNameStr + - '" but should be the same as the Font\'s BaseFont "' + - baseFontStr + '"'); - // Workaround for cases where e.g. fontNameStr = 'Arial' and - // baseFontStr = 'Arial,Bold' (needed when no font file is embedded). - if (fontNameStr && baseFontStr && - baseFontStr.indexOf(fontNameStr) === 0) { - fontName = baseFont; - } - } - } - fontName = (fontName || baseFont); - - assert(isName(fontName), 'invalid font name'); - - var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3'); - if (fontFile) { - if (fontFile.dict) { - var subtype = fontFile.dict.get('Subtype'); - if (subtype) { - subtype = subtype.name; - } - var length1 = fontFile.dict.get('Length1'); - var length2 = fontFile.dict.get('Length2'); - } - } - - properties = { - type: type, - name: fontName.name, - subtype: subtype, - file: fontFile, - length1: length1, - length2: length2, - loadedName: baseDict.loadedName, - composite: composite, - wideChars: composite, - fixedPitch: false, - fontMatrix: (dict.get('FontMatrix') || FONT_IDENTITY_MATRIX), - firstChar: firstChar || 0, - lastChar: (lastChar || maxCharIndex), - bbox: descriptor.get('FontBBox'), - ascent: descriptor.get('Ascent'), - descent: descriptor.get('Descent'), - xHeight: descriptor.get('XHeight'), - capHeight: descriptor.get('CapHeight'), - flags: descriptor.get('Flags'), - italicAngle: descriptor.get('ItalicAngle'), - coded: false - }; - - if (composite) { - var cidEncoding = baseDict.get('Encoding'); - if (isName(cidEncoding)) { - properties.cidEncoding = cidEncoding.name; - } - properties.cMap = CMapFactory.create(cidEncoding, - { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null); - properties.vertical = properties.cMap.vertical; - } - this.extractDataStructures(dict, baseDict, xref, properties); - this.extractWidths(dict, xref, descriptor, properties); - - if (type === 'Type3') { - properties.isType3Font = true; - } - - return new Font(fontName.name, fontFile, properties); - } - }; - - return PartialEvaluator; -})(); - -var TranslatedFont = (function TranslatedFontClosure() { - function TranslatedFont(loadedName, font, dict) { - this.loadedName = loadedName; - this.font = font; - this.dict = dict; - this.type3Loaded = null; - this.sent = false; - } - TranslatedFont.prototype = { - send: function (handler) { - if (this.sent) { - return; - } - var fontData = this.font.exportData(); - handler.send('commonobj', [ - this.loadedName, - 'Font', - fontData - ]); - this.sent = true; - }, - loadType3Data: function (evaluator, resources, parentOperatorList, task) { - assert(this.font.isType3Font); - - if (this.type3Loaded) { - return this.type3Loaded; - } - - var translatedFont = this.font; - var loadCharProcsPromise = Promise.resolve(); - var charProcs = this.dict.get('CharProcs').getAll(); - var fontResources = this.dict.get('Resources') || resources; - var charProcKeys = Object.keys(charProcs); - var charProcOperatorList = {}; - for (var i = 0, n = charProcKeys.length; i < n; ++i) { - loadCharProcsPromise = loadCharProcsPromise.then(function (key) { - var glyphStream = charProcs[key]; - var operatorList = new OperatorList(); - return evaluator.getOperatorList(glyphStream, task, fontResources, - operatorList).then(function () { - charProcOperatorList[key] = operatorList.getIR(); - - // Add the dependencies to the parent operator list so they are - // resolved before sub operator list is executed synchronously. - parentOperatorList.addDependencies(operatorList.dependencies); - }, function (reason) { - warn('Type3 font resource \"' + key + '\" is not available'); - var operatorList = new OperatorList(); - charProcOperatorList[key] = operatorList.getIR(); - }); - }.bind(this, charProcKeys[i])); - } - this.type3Loaded = loadCharProcsPromise.then(function () { - translatedFont.charProcOperatorList = charProcOperatorList; - }); - return this.type3Loaded; - } - }; - return TranslatedFont; -})(); - -var OperatorList = (function OperatorListClosure() { - var CHUNK_SIZE = 1000; - var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; // close to chunk size - - function getTransfers(queue) { - var transfers = []; - var fnArray = queue.fnArray, argsArray = queue.argsArray; - for (var i = 0, ii = queue.length; i < ii; i++) { - switch (fnArray[i]) { - case OPS.paintInlineImageXObject: - case OPS.paintInlineImageXObjectGroup: - case OPS.paintImageMaskXObject: - var arg = argsArray[i][0]; // first param in imgData - if (!arg.cached) { - transfers.push(arg.data.buffer); - } - break; - } - } - return transfers; - } - - function OperatorList(intent, messageHandler, pageIndex) { - this.messageHandler = messageHandler; - this.fnArray = []; - this.argsArray = []; - this.dependencies = {}; - this._totalLength = 0; - this.pageIndex = pageIndex; - this.intent = intent; - } - - OperatorList.prototype = { - get length() { - return this.argsArray.length; - }, - - /** - * @returns {number} The total length of the entire operator list, - * since `this.length === 0` after flushing. - */ - get totalLength() { - return (this._totalLength + this.length); - }, - - addOp: function(fn, args) { - this.fnArray.push(fn); - this.argsArray.push(args); - if (this.messageHandler) { - if (this.fnArray.length >= CHUNK_SIZE) { - this.flush(); - } else if (this.fnArray.length >= CHUNK_SIZE_ABOUT && - (fn === OPS.restore || fn === OPS.endText)) { - // heuristic to flush on boundary of restore or endText - this.flush(); - } - } - }, - - addDependency: function(dependency) { - if (dependency in this.dependencies) { - return; - } - this.dependencies[dependency] = true; - this.addOp(OPS.dependency, [dependency]); - }, - - addDependencies: function(dependencies) { - for (var key in dependencies) { - this.addDependency(key); - } - }, - - addOpList: function(opList) { - Util.extendObj(this.dependencies, opList.dependencies); - for (var i = 0, ii = opList.length; i < ii; i++) { - this.addOp(opList.fnArray[i], opList.argsArray[i]); - } - }, - - getIR: function() { - return { - fnArray: this.fnArray, - argsArray: this.argsArray, - length: this.length - }; - }, - - flush: function(lastChunk) { - if (this.intent !== 'oplist') { - new QueueOptimizer().optimize(this); - } - var transfers = getTransfers(this); - var length = this.length; - this._totalLength += length; - - this.messageHandler.send('RenderPageChunk', { - operatorList: { - fnArray: this.fnArray, - argsArray: this.argsArray, - lastChunk: lastChunk, - length: length - }, - pageIndex: this.pageIndex, - intent: this.intent - }, transfers); - this.dependencies = {}; - this.fnArray.length = 0; - this.argsArray.length = 0; - } - }; - - return OperatorList; -})(); - -var StateManager = (function StateManagerClosure() { - function StateManager(initialState) { - this.state = initialState; - this.stateStack = []; - } - StateManager.prototype = { - save: function () { - var old = this.state; - this.stateStack.push(this.state); - this.state = old.clone(); - }, - restore: function () { - var prev = this.stateStack.pop(); - if (prev) { - this.state = prev; - } - }, - transform: function (args) { - this.state.ctm = Util.transform(this.state.ctm, args); - } - }; - return StateManager; -})(); - -var TextState = (function TextStateClosure() { - function TextState() { - this.ctm = new Float32Array(IDENTITY_MATRIX); - this.fontSize = 0; - this.font = null; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.textMatrix = IDENTITY_MATRIX.slice(); - this.textLineMatrix = IDENTITY_MATRIX.slice(); - this.charSpacing = 0; - this.wordSpacing = 0; - this.leading = 0; - this.textHScale = 1; - this.textRise = 0; - } - - TextState.prototype = { - setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) { - var m = this.textMatrix; - m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f; - }, - setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) { - var m = this.textLineMatrix; - m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f; - }, - translateTextMatrix: function TextState_translateTextMatrix(x, y) { - var m = this.textMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - }, - translateTextLineMatrix: function TextState_translateTextMatrix(x, y) { - var m = this.textLineMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - }, - calcRenderMatrix: function TextState_calcRendeMatrix(ctm) { - // 9.4.4 Text Space Details - var tsm = [this.fontSize * this.textHScale, 0, - 0, this.fontSize, - 0, this.textRise]; - return Util.transform(ctm, Util.transform(this.textMatrix, tsm)); - }, - carriageReturn: function TextState_carriageReturn() { - this.translateTextLineMatrix(0, -this.leading); - this.textMatrix = this.textLineMatrix.slice(); - }, - clone: function TextState_clone() { - var clone = Object.create(this); - clone.textMatrix = this.textMatrix.slice(); - clone.textLineMatrix = this.textLineMatrix.slice(); - clone.fontMatrix = this.fontMatrix.slice(); - return clone; - } - }; - return TextState; -})(); - -var EvalState = (function EvalStateClosure() { - function EvalState() { - this.ctm = new Float32Array(IDENTITY_MATRIX); - this.font = null; - this.textRenderingMode = TextRenderingMode.FILL; - this.fillColorSpace = ColorSpace.singletons.gray; - this.strokeColorSpace = ColorSpace.singletons.gray; - } - EvalState.prototype = { - clone: function CanvasExtraState_clone() { - return Object.create(this); - }, - }; - return EvalState; -})(); - -var EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() { - // Specifies properties for each command - // - // If variableArgs === true: [0, `numArgs`] expected - // If variableArgs === false: exactly `numArgs` expected - var OP_MAP = { - // Graphic state - w: { id: OPS.setLineWidth, numArgs: 1, variableArgs: false }, - J: { id: OPS.setLineCap, numArgs: 1, variableArgs: false }, - j: { id: OPS.setLineJoin, numArgs: 1, variableArgs: false }, - M: { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false }, - d: { id: OPS.setDash, numArgs: 2, variableArgs: false }, - ri: { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false }, - i: { id: OPS.setFlatness, numArgs: 1, variableArgs: false }, - gs: { id: OPS.setGState, numArgs: 1, variableArgs: false }, - q: { id: OPS.save, numArgs: 0, variableArgs: false }, - Q: { id: OPS.restore, numArgs: 0, variableArgs: false }, - cm: { id: OPS.transform, numArgs: 6, variableArgs: false }, - - // Path - m: { id: OPS.moveTo, numArgs: 2, variableArgs: false }, - l: { id: OPS.lineTo, numArgs: 2, variableArgs: false }, - c: { id: OPS.curveTo, numArgs: 6, variableArgs: false }, - v: { id: OPS.curveTo2, numArgs: 4, variableArgs: false }, - y: { id: OPS.curveTo3, numArgs: 4, variableArgs: false }, - h: { id: OPS.closePath, numArgs: 0, variableArgs: false }, - re: { id: OPS.rectangle, numArgs: 4, variableArgs: false }, - S: { id: OPS.stroke, numArgs: 0, variableArgs: false }, - s: { id: OPS.closeStroke, numArgs: 0, variableArgs: false }, - f: { id: OPS.fill, numArgs: 0, variableArgs: false }, - F: { id: OPS.fill, numArgs: 0, variableArgs: false }, - 'f*': { id: OPS.eoFill, numArgs: 0, variableArgs: false }, - B: { id: OPS.fillStroke, numArgs: 0, variableArgs: false }, - 'B*': { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false }, - b: { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false }, - 'b*': { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false }, - n: { id: OPS.endPath, numArgs: 0, variableArgs: false }, - - // Clipping - W: { id: OPS.clip, numArgs: 0, variableArgs: false }, - 'W*': { id: OPS.eoClip, numArgs: 0, variableArgs: false }, - - // Text - BT: { id: OPS.beginText, numArgs: 0, variableArgs: false }, - ET: { id: OPS.endText, numArgs: 0, variableArgs: false }, - Tc: { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false }, - Tw: { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false }, - Tz: { id: OPS.setHScale, numArgs: 1, variableArgs: false }, - TL: { id: OPS.setLeading, numArgs: 1, variableArgs: false }, - Tf: { id: OPS.setFont, numArgs: 2, variableArgs: false }, - Tr: { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false }, - Ts: { id: OPS.setTextRise, numArgs: 1, variableArgs: false }, - Td: { id: OPS.moveText, numArgs: 2, variableArgs: false }, - TD: { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false }, - Tm: { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false }, - 'T*': { id: OPS.nextLine, numArgs: 0, variableArgs: false }, - Tj: { id: OPS.showText, numArgs: 1, variableArgs: false }, - TJ: { id: OPS.showSpacedText, numArgs: 1, variableArgs: false }, - '\'': { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false }, - '"': { id: OPS.nextLineSetSpacingShowText, numArgs: 3, - variableArgs: false }, - - // Type3 fonts - d0: { id: OPS.setCharWidth, numArgs: 2, variableArgs: false }, - d1: { id: OPS.setCharWidthAndBounds, numArgs: 6, variableArgs: false }, - - // Color - CS: { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false }, - cs: { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false }, - SC: { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true }, - SCN: { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true }, - sc: { id: OPS.setFillColor, numArgs: 4, variableArgs: true }, - scn: { id: OPS.setFillColorN, numArgs: 33, variableArgs: true }, - G: { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false }, - g: { id: OPS.setFillGray, numArgs: 1, variableArgs: false }, - RG: { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false }, - rg: { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false }, - K: { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false }, - k: { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false }, - - // Shading - sh: { id: OPS.shadingFill, numArgs: 1, variableArgs: false }, - - // Images - BI: { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false }, - ID: { id: OPS.beginImageData, numArgs: 0, variableArgs: false }, - EI: { id: OPS.endInlineImage, numArgs: 1, variableArgs: false }, - - // XObjects - Do: { id: OPS.paintXObject, numArgs: 1, variableArgs: false }, - MP: { id: OPS.markPoint, numArgs: 1, variableArgs: false }, - DP: { id: OPS.markPointProps, numArgs: 2, variableArgs: false }, - BMC: { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false }, - BDC: { id: OPS.beginMarkedContentProps, numArgs: 2, - variableArgs: false }, - EMC: { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false }, - - // Compatibility - BX: { id: OPS.beginCompat, numArgs: 0, variableArgs: false }, - EX: { id: OPS.endCompat, numArgs: 0, variableArgs: false }, - - // (reserved partial commands for the lexer) - BM: null, - BD: null, - 'true': null, - fa: null, - fal: null, - fals: null, - 'false': null, - nu: null, - nul: null, - 'null': null - }; - - function EvaluatorPreprocessor(stream, xref, stateManager) { - // TODO(mduan): pass array of knownCommands rather than OP_MAP - // dictionary - this.parser = new Parser(new Lexer(stream, OP_MAP), false, xref); - this.stateManager = stateManager; - this.nonProcessedArgs = []; - } - - EvaluatorPreprocessor.prototype = { - get savedStatesDepth() { - return this.stateManager.stateStack.length; - }, - - // |operation| is an object with two fields: - // - // - |fn| is an out param. - // - // - |args| is an inout param. On entry, it should have one of two values. - // - // - An empty array. This indicates that the caller is providing the - // array in which the args will be stored in. The caller should use - // this value if it can reuse a single array for each call to read(). - // - // - |null|. This indicates that the caller needs this function to create - // the array in which any args are stored in. If there are zero args, - // this function will leave |operation.args| as |null| (thus avoiding - // allocations that would occur if we used an empty array to represent - // zero arguments). Otherwise, it will replace |null| with a new array - // containing the arguments. The caller should use this value if it - // cannot reuse an array for each call to read(). - // - // These two modes are present because this function is very hot and so - // avoiding allocations where possible is worthwhile. - // - read: function EvaluatorPreprocessor_read(operation) { - var args = operation.args; - while (true) { - var obj = this.parser.getObj(); - if (isCmd(obj)) { - var cmd = obj.cmd; - // Check that the command is valid - var opSpec = OP_MAP[cmd]; - if (!opSpec) { - warn('Unknown command "' + cmd + '"'); - continue; - } - - var fn = opSpec.id; - var numArgs = opSpec.numArgs; - var argsLength = args !== null ? args.length : 0; - - if (!opSpec.variableArgs) { - // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf - if (argsLength !== numArgs) { - var nonProcessedArgs = this.nonProcessedArgs; - while (argsLength > numArgs) { - nonProcessedArgs.push(args.shift()); - argsLength--; - } - while (argsLength < numArgs && nonProcessedArgs.length !== 0) { - if (!args) { - args = []; - } - args.unshift(nonProcessedArgs.pop()); - argsLength++; - } - } - - if (argsLength < numArgs) { - // If we receive too few args, it's not possible to possible - // to execute the command, so skip the command - info('Command ' + fn + ': because expected ' + - numArgs + ' args, but received ' + argsLength + - ' args; skipping'); - args = null; - continue; - } - } else if (argsLength > numArgs) { - info('Command ' + fn + ': expected [0,' + numArgs + - '] args, but received ' + argsLength + ' args'); - } - - // TODO figure out how to type-check vararg functions - this.preprocessCommand(fn, args); - - operation.fn = fn; - operation.args = args; - return true; - } else { - if (isEOF(obj)) { - return false; // no more commands - } - // argument - if (obj !== null) { - if (!args) { - args = []; - } - args.push((obj instanceof Dict ? obj.getAll() : obj)); - assert(args.length <= 33, 'Too many arguments'); - } - } - } - }, - - preprocessCommand: - function EvaluatorPreprocessor_preprocessCommand(fn, args) { - switch (fn | 0) { - case OPS.save: - this.stateManager.save(); - break; - case OPS.restore: - this.stateManager.restore(); - break; - case OPS.transform: - this.stateManager.transform(args); - break; - } - } - }; - return EvaluatorPreprocessor; -})(); - -var QueueOptimizer = (function QueueOptimizerClosure() { - function addState(parentState, pattern, fn) { - var state = parentState; - for (var i = 0, ii = pattern.length - 1; i < ii; i++) { - var item = pattern[i]; - state = (state[item] || (state[item] = [])); - } - state[pattern[pattern.length - 1]] = fn; - } - - function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, - argsArray) { - // Handles special case of mainly LaTeX documents which use image masks to - // draw lines with the current fill style. - // 'count' groups of (save, transform, paintImageMaskXObject, restore)+ - // have been found at iFirstSave. - var iFirstPIMXO = iFirstSave + 2; - for (var i = 0; i < count; i++) { - var arg = argsArray[iFirstPIMXO + 4 * i]; - var imageMask = arg.length === 1 && arg[0]; - if (imageMask && imageMask.width === 1 && imageMask.height === 1 && - (!imageMask.data.length || - (imageMask.data.length === 1 && imageMask.data[0] === 0))) { - fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask; - continue; - } - break; - } - return count - i; - } - - var InitialState = []; - - // This replaces (save, transform, paintInlineImageXObject, restore)+ - // sequences with one |paintInlineImageXObjectGroup| operation. - addState(InitialState, - [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore], - function foundInlineImageGroup(context) { - var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; - var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; - var MAX_WIDTH = 1000; - var IMAGE_PADDING = 1; - - var fnArray = context.fnArray, argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIIXO = curr - 1; - - // Look for the quartets. - var i = iFirstSave + 4; - var ii = fnArray.length; - while (i + 3 < ii) { - if (fnArray[i] !== OPS.save || - fnArray[i + 1] !== OPS.transform || - fnArray[i + 2] !== OPS.paintInlineImageXObject || - fnArray[i + 3] !== OPS.restore) { - break; // ops don't match - } - i += 4; - } - - // At this point, i is the index of the first op past the last valid - // quartet. - var count = Math.min((i - iFirstSave) / 4, - MAX_IMAGES_IN_INLINE_IMAGES_BLOCK); - if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) { - return i; - } - - // assuming that heights of those image is too small (~1 pixel) - // packing as much as possible by lines - var maxX = 0; - var map = [], maxLineHeight = 0; - var currentX = IMAGE_PADDING, currentY = IMAGE_PADDING; - var q; - for (q = 0; q < count; q++) { - var transform = argsArray[iFirstTransform + (q << 2)]; - var img = argsArray[iFirstPIIXO + (q << 2)][0]; - if (currentX + img.width > MAX_WIDTH) { - // starting new line - maxX = Math.max(maxX, currentX); - currentY += maxLineHeight + 2 * IMAGE_PADDING; - currentX = 0; - maxLineHeight = 0; - } - map.push({ - transform: transform, - x: currentX, y: currentY, - w: img.width, h: img.height - }); - currentX += img.width + 2 * IMAGE_PADDING; - maxLineHeight = Math.max(maxLineHeight, img.height); - } - var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; - var imgHeight = currentY + maxLineHeight + IMAGE_PADDING; - var imgData = new Uint8Array(imgWidth * imgHeight * 4); - var imgRowSize = imgWidth << 2; - for (q = 0; q < count; q++) { - var data = argsArray[iFirstPIIXO + (q << 2)][0].data; - // Copy image by lines and extends pixels into padding. - var rowSize = map[q].w << 2; - var dataOffset = 0; - var offset = (map[q].x + map[q].y * imgWidth) << 2; - imgData.set(data.subarray(0, rowSize), offset - imgRowSize); - for (var k = 0, kk = map[q].h; k < kk; k++) { - imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset); - dataOffset += rowSize; - offset += imgRowSize; - } - imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset); - while (offset >= 0) { - data[offset - 4] = data[offset]; - data[offset - 3] = data[offset + 1]; - data[offset - 2] = data[offset + 2]; - data[offset - 1] = data[offset + 3]; - data[offset + rowSize] = data[offset + rowSize - 4]; - data[offset + rowSize + 1] = data[offset + rowSize - 3]; - data[offset + rowSize + 2] = data[offset + rowSize - 2]; - data[offset + rowSize + 3] = data[offset + rowSize - 1]; - offset -= imgRowSize; - } - } - - // Replace queue items. - fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup); - argsArray.splice(iFirstSave, count * 4, - [{ width: imgWidth, height: imgHeight, kind: ImageKind.RGBA_32BPP, - data: imgData }, map]); - - return iFirstSave + 1; - }); - - // This replaces (save, transform, paintImageMaskXObject, restore)+ - // sequences with one |paintImageMaskXObjectGroup| or one - // |paintImageMaskXObjectRepeat| operation. - addState(InitialState, - [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore], - function foundImageMaskGroup(context) { - var MIN_IMAGES_IN_MASKS_BLOCK = 10; - var MAX_IMAGES_IN_MASKS_BLOCK = 100; - var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; - - var fnArray = context.fnArray, argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIMXO = curr - 1; - - // Look for the quartets. - var i = iFirstSave + 4; - var ii = fnArray.length; - while (i + 3 < ii) { - if (fnArray[i] !== OPS.save || - fnArray[i + 1] !== OPS.transform || - fnArray[i + 2] !== OPS.paintImageMaskXObject || - fnArray[i + 3] !== OPS.restore) { - break; // ops don't match - } - i += 4; - } - - // At this point, i is the index of the first op past the last valid - // quartet. - var count = (i - iFirstSave) / 4; - count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, - argsArray); - if (count < MIN_IMAGES_IN_MASKS_BLOCK) { - return i; - } - - var q; - var isSameImage = false; - var iTransform, transformArgs; - var firstPIMXOArg0 = argsArray[iFirstPIMXO][0]; - if (argsArray[iFirstTransform][1] === 0 && - argsArray[iFirstTransform][2] === 0) { - isSameImage = true; - var firstTransformArg0 = argsArray[iFirstTransform][0]; - var firstTransformArg3 = argsArray[iFirstTransform][3]; - iTransform = iFirstTransform + 4; - var iPIMXO = iFirstPIMXO + 4; - for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) { - transformArgs = argsArray[iTransform]; - if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || - transformArgs[0] !== firstTransformArg0 || - transformArgs[1] !== 0 || - transformArgs[2] !== 0 || - transformArgs[3] !== firstTransformArg3) { - if (q < MIN_IMAGES_IN_MASKS_BLOCK) { - isSameImage = false; - } else { - count = q; - } - break; // different image or transform - } - } - } - - if (isSameImage) { - count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK); - var positions = new Float32Array(count * 2); - iTransform = iFirstTransform; - for (q = 0; q < count; q++, iTransform += 4) { - transformArgs = argsArray[iTransform]; - positions[(q << 1)] = transformArgs[4]; - positions[(q << 1) + 1] = transformArgs[5]; - } - - // Replace queue items. - fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat); - argsArray.splice(iFirstSave, count * 4, - [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]); - } else { - count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK); - var images = []; - for (q = 0; q < count; q++) { - transformArgs = argsArray[iFirstTransform + (q << 2)]; - var maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; - images.push({ data: maskParams.data, width: maskParams.width, - height: maskParams.height, - transform: transformArgs }); - } - - // Replace queue items. - fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup); - argsArray.splice(iFirstSave, count * 4, [images]); - } - - return iFirstSave + 1; - }); - - // This replaces (save, transform, paintImageXObject, restore)+ sequences - // with one paintImageXObjectRepeat operation, if the |transform| and - // |paintImageXObjectRepeat| ops are appropriate. - addState(InitialState, - [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore], - function (context) { - var MIN_IMAGES_IN_BLOCK = 3; - var MAX_IMAGES_IN_BLOCK = 1000; - - var fnArray = context.fnArray, argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIXO = curr - 1; - var iFirstRestore = curr; - - if (argsArray[iFirstTransform][1] !== 0 || - argsArray[iFirstTransform][2] !== 0) { - return iFirstRestore + 1; // transform has the wrong form - } - - // Look for the quartets. - var firstPIXOArg0 = argsArray[iFirstPIXO][0]; - var firstTransformArg0 = argsArray[iFirstTransform][0]; - var firstTransformArg3 = argsArray[iFirstTransform][3]; - var i = iFirstSave + 4; - var ii = fnArray.length; - while (i + 3 < ii) { - if (fnArray[i] !== OPS.save || - fnArray[i + 1] !== OPS.transform || - fnArray[i + 2] !== OPS.paintImageXObject || - fnArray[i + 3] !== OPS.restore) { - break; // ops don't match - } - if (argsArray[i + 1][0] !== firstTransformArg0 || - argsArray[i + 1][1] !== 0 || - argsArray[i + 1][2] !== 0 || - argsArray[i + 1][3] !== firstTransformArg3) { - break; // transforms don't match - } - if (argsArray[i + 2][0] !== firstPIXOArg0) { - break; // images don't match - } - i += 4; - } - - // At this point, i is the index of the first op past the last valid - // quartet. - var count = Math.min((i - iFirstSave) / 4, MAX_IMAGES_IN_BLOCK); - if (count < MIN_IMAGES_IN_BLOCK) { - return i; - } - - // Extract the (x,y) positions from all of the matching transforms. - var positions = new Float32Array(count * 2); - var iTransform = iFirstTransform; - for (var q = 0; q < count; q++, iTransform += 4) { - var transformArgs = argsArray[iTransform]; - positions[(q << 1)] = transformArgs[4]; - positions[(q << 1) + 1] = transformArgs[5]; - } - - // Replace queue items. - var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, - positions]; - fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat); - argsArray.splice(iFirstSave, count * 4, args); - - return iFirstSave + 1; - }); - - // This replaces (beginText, setFont, setTextMatrix, showText, endText)+ - // sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+ - // sequences, if the font for each one is the same. - addState(InitialState, - [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText], - function (context) { - var MIN_CHARS_IN_BLOCK = 3; - var MAX_CHARS_IN_BLOCK = 1000; - - var fnArray = context.fnArray, argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstBeginText = curr - 4; - var iFirstSetFont = curr - 3; - var iFirstSetTextMatrix = curr - 2; - var iFirstShowText = curr - 1; - var iFirstEndText = curr; - - // Look for the quintets. - var firstSetFontArg0 = argsArray[iFirstSetFont][0]; - var firstSetFontArg1 = argsArray[iFirstSetFont][1]; - var i = iFirstBeginText + 5; - var ii = fnArray.length; - while (i + 4 < ii) { - if (fnArray[i] !== OPS.beginText || - fnArray[i + 1] !== OPS.setFont || - fnArray[i + 2] !== OPS.setTextMatrix || - fnArray[i + 3] !== OPS.showText || - fnArray[i + 4] !== OPS.endText) { - break; // ops don't match - } - if (argsArray[i + 1][0] !== firstSetFontArg0 || - argsArray[i + 1][1] !== firstSetFontArg1) { - break; // fonts don't match - } - i += 5; - } - - // At this point, i is the index of the first op past the last valid - // quintet. - var count = Math.min(((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK); - if (count < MIN_CHARS_IN_BLOCK) { - return i; - } - - // If the preceding quintet is (<something>, setFont, setTextMatrix, - // showText, endText), include that as well. (E.g. <something> might be - // |dependency|.) - var iFirst = iFirstBeginText; - if (iFirstBeginText >= 4 && - fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && - fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && - fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && - fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && - argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && - argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) { - count++; - iFirst -= 5; - } - - // Remove (endText, beginText, setFont) trios. - var iEndText = iFirst + 4; - for (var q = 1; q < count; q++) { - fnArray.splice(iEndText, 3); - argsArray.splice(iEndText, 3); - iEndText += 2; - } - - return iEndText + 1; - }); - - function QueueOptimizer() {} - - QueueOptimizer.prototype = { - optimize: function QueueOptimizer_optimize(queue) { - var fnArray = queue.fnArray, argsArray = queue.argsArray; - var context = { - iCurr: 0, - fnArray: fnArray, - argsArray: argsArray - }; - var state; - var i = 0, ii = fnArray.length; - while (i < ii) { - state = (state || InitialState)[fnArray[i]]; - if (typeof state === 'function') { // we found some handler - context.iCurr = i; - // state() returns the index of the first non-matching op (if we - // didn't match) or the first op past the modified ops (if we did - // match and replace). - i = state(context); - state = undefined; // reset the state machine - ii = context.fnArray.length; - } else { - i++; - } - } - } - }; - return QueueOptimizer; -})(); - - -var BUILT_IN_CMAPS = [ -// << Start unicode maps. -'Adobe-GB1-UCS2', -'Adobe-CNS1-UCS2', -'Adobe-Japan1-UCS2', -'Adobe-Korea1-UCS2', -// >> End unicode maps. -'78-EUC-H', -'78-EUC-V', -'78-H', -'78-RKSJ-H', -'78-RKSJ-V', -'78-V', -'78ms-RKSJ-H', -'78ms-RKSJ-V', -'83pv-RKSJ-H', -'90ms-RKSJ-H', -'90ms-RKSJ-V', -'90msp-RKSJ-H', -'90msp-RKSJ-V', -'90pv-RKSJ-H', -'90pv-RKSJ-V', -'Add-H', -'Add-RKSJ-H', -'Add-RKSJ-V', -'Add-V', -'Adobe-CNS1-0', -'Adobe-CNS1-1', -'Adobe-CNS1-2', -'Adobe-CNS1-3', -'Adobe-CNS1-4', -'Adobe-CNS1-5', -'Adobe-CNS1-6', -'Adobe-GB1-0', -'Adobe-GB1-1', -'Adobe-GB1-2', -'Adobe-GB1-3', -'Adobe-GB1-4', -'Adobe-GB1-5', -'Adobe-Japan1-0', -'Adobe-Japan1-1', -'Adobe-Japan1-2', -'Adobe-Japan1-3', -'Adobe-Japan1-4', -'Adobe-Japan1-5', -'Adobe-Japan1-6', -'Adobe-Korea1-0', -'Adobe-Korea1-1', -'Adobe-Korea1-2', -'B5-H', -'B5-V', -'B5pc-H', -'B5pc-V', -'CNS-EUC-H', -'CNS-EUC-V', -'CNS1-H', -'CNS1-V', -'CNS2-H', -'CNS2-V', -'ETHK-B5-H', -'ETHK-B5-V', -'ETen-B5-H', -'ETen-B5-V', -'ETenms-B5-H', -'ETenms-B5-V', -'EUC-H', -'EUC-V', -'Ext-H', -'Ext-RKSJ-H', -'Ext-RKSJ-V', -'Ext-V', -'GB-EUC-H', -'GB-EUC-V', -'GB-H', -'GB-V', -'GBK-EUC-H', -'GBK-EUC-V', -'GBK2K-H', -'GBK2K-V', -'GBKp-EUC-H', -'GBKp-EUC-V', -'GBT-EUC-H', -'GBT-EUC-V', -'GBT-H', -'GBT-V', -'GBTpc-EUC-H', -'GBTpc-EUC-V', -'GBpc-EUC-H', -'GBpc-EUC-V', -'H', -'HKdla-B5-H', -'HKdla-B5-V', -'HKdlb-B5-H', -'HKdlb-B5-V', -'HKgccs-B5-H', -'HKgccs-B5-V', -'HKm314-B5-H', -'HKm314-B5-V', -'HKm471-B5-H', -'HKm471-B5-V', -'HKscs-B5-H', -'HKscs-B5-V', -'Hankaku', -'Hiragana', -'KSC-EUC-H', -'KSC-EUC-V', -'KSC-H', -'KSC-Johab-H', -'KSC-Johab-V', -'KSC-V', -'KSCms-UHC-H', -'KSCms-UHC-HW-H', -'KSCms-UHC-HW-V', -'KSCms-UHC-V', -'KSCpc-EUC-H', -'KSCpc-EUC-V', -'Katakana', -'NWP-H', -'NWP-V', -'RKSJ-H', -'RKSJ-V', -'Roman', -'UniCNS-UCS2-H', -'UniCNS-UCS2-V', -'UniCNS-UTF16-H', -'UniCNS-UTF16-V', -'UniCNS-UTF32-H', -'UniCNS-UTF32-V', -'UniCNS-UTF8-H', -'UniCNS-UTF8-V', -'UniGB-UCS2-H', -'UniGB-UCS2-V', -'UniGB-UTF16-H', -'UniGB-UTF16-V', -'UniGB-UTF32-H', -'UniGB-UTF32-V', -'UniGB-UTF8-H', -'UniGB-UTF8-V', -'UniJIS-UCS2-H', -'UniJIS-UCS2-HW-H', -'UniJIS-UCS2-HW-V', -'UniJIS-UCS2-V', -'UniJIS-UTF16-H', -'UniJIS-UTF16-V', -'UniJIS-UTF32-H', -'UniJIS-UTF32-V', -'UniJIS-UTF8-H', -'UniJIS-UTF8-V', -'UniJIS2004-UTF16-H', -'UniJIS2004-UTF16-V', -'UniJIS2004-UTF32-H', -'UniJIS2004-UTF32-V', -'UniJIS2004-UTF8-H', -'UniJIS2004-UTF8-V', -'UniJISPro-UCS2-HW-V', -'UniJISPro-UCS2-V', -'UniJISPro-UTF8-V', -'UniJISX0213-UTF32-H', -'UniJISX0213-UTF32-V', -'UniJISX02132004-UTF32-H', -'UniJISX02132004-UTF32-V', -'UniKS-UCS2-H', -'UniKS-UCS2-V', -'UniKS-UTF16-H', -'UniKS-UTF16-V', -'UniKS-UTF32-H', -'UniKS-UTF32-V', -'UniKS-UTF8-H', -'UniKS-UTF8-V', -'V', -'WP-Symbol']; - -// CMap, not to be confused with TrueType's cmap. -var CMap = (function CMapClosure() { - function CMap(builtInCMap) { - // Codespace ranges are stored as follows: - // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]] - // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...] - this.codespaceRanges = [[], [], [], []]; - this.numCodespaceRanges = 0; - // Map entries have one of two forms. - // - cid chars are 16-bit unsigned integers, stored as integers. - // - bf chars are variable-length byte sequences, stored as strings, with - // one byte per character. - this._map = []; - this.name = ''; - this.vertical = false; - this.useCMap = null; - this.builtInCMap = builtInCMap; - } - CMap.prototype = { - addCodespaceRange: function(n, low, high) { - this.codespaceRanges[n - 1].push(low, high); - this.numCodespaceRanges++; - }, - - mapCidRange: function(low, high, dstLow) { - while (low <= high) { - this._map[low++] = dstLow++; - } - }, - - mapBfRange: function(low, high, dstLow) { - var lastByte = dstLow.length - 1; - while (low <= high) { - this._map[low++] = dstLow; - // Only the last byte has to be incremented. - dstLow = dstLow.substr(0, lastByte) + - String.fromCharCode(dstLow.charCodeAt(lastByte) + 1); - } - }, - - mapBfRangeToArray: function(low, high, array) { - var i = 0, ii = array.length; - while (low <= high && i < ii) { - this._map[low] = array[i++]; - ++low; - } - }, - - // This is used for both bf and cid chars. - mapOne: function(src, dst) { - this._map[src] = dst; - }, - - lookup: function(code) { - return this._map[code]; - }, - - contains: function(code) { - return this._map[code] !== undefined; - }, - - forEach: function(callback) { - // Most maps have fewer than 65536 entries, and for those we use normal - // array iteration. But really sparse tables are possible -- e.g. with - // indices in the *billions*. For such tables we use for..in, which isn't - // ideal because it stringifies the indices for all present elements, but - // it does avoid iterating over every undefined entry. - var map = this._map; - var length = map.length; - var i; - if (length <= 0x10000) { - for (i = 0; i < length; i++) { - if (map[i] !== undefined) { - callback(i, map[i]); - } - } - } else { - for (i in this._map) { - callback(i, map[i]); - } - } - }, - - charCodeOf: function(value) { - return this._map.indexOf(value); - }, - - getMap: function() { - return this._map; - }, - - readCharCode: function(str, offset, out) { - var c = 0; - var codespaceRanges = this.codespaceRanges; - var codespaceRangesLen = this.codespaceRanges.length; - // 9.7.6.2 CMap Mapping - // The code length is at most 4. - for (var n = 0; n < codespaceRangesLen; n++) { - c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0; - // Check each codespace range to see if it falls within. - var codespaceRange = codespaceRanges[n]; - for (var k = 0, kk = codespaceRange.length; k < kk;) { - var low = codespaceRange[k++]; - var high = codespaceRange[k++]; - if (c >= low && c <= high) { - out.charcode = c; - out.length = n + 1; - return; - } - } - } - out.charcode = 0; - out.length = 1; - }, - - get length() { - return this._map.length; - }, - - get isIdentityCMap() { - if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) { - return false; - } - if (this._map.length !== 0x10000) { - return false; - } - for (var i = 0; i < 0x10000; i++) { - if (this._map[i] !== i) { - return false; - } - } - return true; - } - }; - return CMap; -})(); - -// A special case of CMap, where the _map array implicitly has a length of -// 65536 and each element is equal to its index. -var IdentityCMap = (function IdentityCMapClosure() { - function IdentityCMap(vertical, n) { - CMap.call(this); - this.vertical = vertical; - this.addCodespaceRange(n, 0, 0xffff); - } - Util.inherit(IdentityCMap, CMap, {}); - - IdentityCMap.prototype = { - addCodespaceRange: CMap.prototype.addCodespaceRange, - - mapCidRange: function(low, high, dstLow) { - error('should not call mapCidRange'); - }, - - mapBfRange: function(low, high, dstLow) { - error('should not call mapBfRange'); - }, - - mapBfRangeToArray: function(low, high, array) { - error('should not call mapBfRangeToArray'); - }, - - mapOne: function(src, dst) { - error('should not call mapCidOne'); - }, - - lookup: function(code) { - return (isInt(code) && code <= 0xffff) ? code : undefined; - }, - - contains: function(code) { - return isInt(code) && code <= 0xffff; - }, - - forEach: function(callback) { - for (var i = 0; i <= 0xffff; i++) { - callback(i, i); - } - }, - - charCodeOf: function(value) { - return (isInt(value) && value <= 0xffff) ? value : -1; - }, - - getMap: function() { - // Sometimes identity maps must be instantiated, but it's rare. - var map = new Array(0x10000); - for (var i = 0; i <= 0xffff; i++) { - map[i] = i; - } - return map; - }, - - readCharCode: CMap.prototype.readCharCode, - - get length() { - return 0x10000; - }, - - get isIdentityCMap() { - error('should not access .isIdentityCMap'); - } - }; - - return IdentityCMap; -})(); - -var BinaryCMapReader = (function BinaryCMapReaderClosure() { - function fetchBinaryData(url) { - var nonBinaryRequest = PDFJS.disableWorker; - var request = new XMLHttpRequest(); - request.open('GET', url, false); - if (!nonBinaryRequest) { - try { - request.responseType = 'arraybuffer'; - nonBinaryRequest = request.responseType !== 'arraybuffer'; - } catch (e) { - nonBinaryRequest = true; - } - } - if (nonBinaryRequest && request.overrideMimeType) { - request.overrideMimeType('text/plain; charset=x-user-defined'); - } - request.send(null); - if (nonBinaryRequest ? !request.responseText : !request.response) { - error('Unable to get binary cMap at: ' + url); - } - if (nonBinaryRequest) { - var data = Array.prototype.map.call(request.responseText, function (ch) { - return ch.charCodeAt(0) & 255; - }); - return new Uint8Array(data); - } - return new Uint8Array(request.response); - } - - function hexToInt(a, size) { - var n = 0; - for (var i = 0; i <= size; i++) { - n = (n << 8) | a[i]; - } - return n >>> 0; - } - - function hexToStr(a, size) { - // This code is hot. Special-case some common values to avoid creating an - // object with subarray(). - if (size === 1) { - return String.fromCharCode(a[0], a[1]); - } - if (size === 3) { - return String.fromCharCode(a[0], a[1], a[2], a[3]); - } - return String.fromCharCode.apply(null, a.subarray(0, size + 1)); - } - - function addHex(a, b, size) { - var c = 0; - for (var i = size; i >= 0; i--) { - c += a[i] + b[i]; - a[i] = c & 255; - c >>= 8; - } - } - - function incHex(a, size) { - var c = 1; - for (var i = size; i >= 0 && c > 0; i--) { - c += a[i]; - a[i] = c & 255; - c >>= 8; - } - } - - var MAX_NUM_SIZE = 16; - var MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8) - - function BinaryCMapStream(data) { - this.buffer = data; - this.pos = 0; - this.end = data.length; - this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE); - } - - BinaryCMapStream.prototype = { - readByte: function () { - if (this.pos >= this.end) { - return -1; - } - return this.buffer[this.pos++]; - }, - readNumber: function () { - var n = 0; - var last; - do { - var b = this.readByte(); - if (b < 0) { - error('unexpected EOF in bcmap'); - } - last = !(b & 0x80); - n = (n << 7) | (b & 0x7F); - } while (!last); - return n; - }, - readSigned: function () { - var n = this.readNumber(); - return (n & 1) ? ~(n >>> 1) : n >>> 1; - }, - readHex: function (num, size) { - num.set(this.buffer.subarray(this.pos, - this.pos + size + 1)); - this.pos += size + 1; - }, - readHexNumber: function (num, size) { - var last; - var stack = this.tmpBuf, sp = 0; - do { - var b = this.readByte(); - if (b < 0) { - error('unexpected EOF in bcmap'); - } - last = !(b & 0x80); - stack[sp++] = b & 0x7F; - } while (!last); - var i = size, buffer = 0, bufferSize = 0; - while (i >= 0) { - while (bufferSize < 8 && stack.length > 0) { - buffer = (stack[--sp] << bufferSize) | buffer; - bufferSize += 7; - } - num[i] = buffer & 255; - i--; - buffer >>= 8; - bufferSize -= 8; - } - }, - readHexSigned: function (num, size) { - this.readHexNumber(num, size); - var sign = num[size] & 1 ? 255 : 0; - var c = 0; - for (var i = 0; i <= size; i++) { - c = ((c & 1) << 8) | num[i]; - num[i] = (c >> 1) ^ sign; - } - }, - readString: function () { - var len = this.readNumber(); - var s = ''; - for (var i = 0; i < len; i++) { - s += String.fromCharCode(this.readNumber()); - } - return s; - } - }; - - function processBinaryCMap(url, cMap, extend) { - var data = fetchBinaryData(url); - var stream = new BinaryCMapStream(data); - - var header = stream.readByte(); - cMap.vertical = !!(header & 1); - - var useCMap = null; - var start = new Uint8Array(MAX_NUM_SIZE); - var end = new Uint8Array(MAX_NUM_SIZE); - var char = new Uint8Array(MAX_NUM_SIZE); - var charCode = new Uint8Array(MAX_NUM_SIZE); - var tmp = new Uint8Array(MAX_NUM_SIZE); - var code; - - var b; - while ((b = stream.readByte()) >= 0) { - var type = b >> 5; - if (type === 7) { // metadata, e.g. comment or usecmap - switch (b & 0x1F) { - case 0: - stream.readString(); // skipping comment - break; - case 1: - useCMap = stream.readString(); - break; - } - continue; - } - var sequence = !!(b & 0x10); - var dataSize = b & 15; - - assert(dataSize + 1 <= MAX_NUM_SIZE); - - var ucs2DataSize = 1; - var subitemsCount = stream.readNumber(); - var i; - switch (type) { - case 0: // codespacerange - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), - hexToInt(end, dataSize)); - for (i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), - hexToInt(end, dataSize)); - } - break; - case 1: // notdefrange - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - // undefined range, skipping - for (i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - // nop - } - break; - case 2: // cidchar - stream.readHex(char, dataSize); - code = stream.readNumber(); - cMap.mapOne(hexToInt(char, dataSize), code); - for (i = 1; i < subitemsCount; i++) { - incHex(char, dataSize); - if (!sequence) { - stream.readHexNumber(tmp, dataSize); - addHex(char, tmp, dataSize); - } - code = stream.readSigned() + (code + 1); - cMap.mapOne(hexToInt(char, dataSize), code); - } - break; - case 3: // cidrange - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), - code); - for (i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - if (!sequence) { - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - } else { - start.set(end); - } - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), - code); - } - break; - case 4: // bfchar - stream.readHex(char, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapOne(hexToInt(char, ucs2DataSize), - hexToStr(charCode, dataSize)); - for (i = 1; i < subitemsCount; i++) { - incHex(char, ucs2DataSize); - if (!sequence) { - stream.readHexNumber(tmp, ucs2DataSize); - addHex(char, tmp, ucs2DataSize); - } - incHex(charCode, dataSize); - stream.readHexSigned(tmp, dataSize); - addHex(charCode, tmp, dataSize); - cMap.mapOne(hexToInt(char, ucs2DataSize), - hexToStr(charCode, dataSize)); - } - break; - case 5: // bfrange - stream.readHex(start, ucs2DataSize); - stream.readHexNumber(end, ucs2DataSize); - addHex(end, start, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapBfRange(hexToInt(start, ucs2DataSize), - hexToInt(end, ucs2DataSize), - hexToStr(charCode, dataSize)); - for (i = 1; i < subitemsCount; i++) { - incHex(end, ucs2DataSize); - if (!sequence) { - stream.readHexNumber(start, ucs2DataSize); - addHex(start, end, ucs2DataSize); - } else { - start.set(end); - } - stream.readHexNumber(end, ucs2DataSize); - addHex(end, start, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapBfRange(hexToInt(start, ucs2DataSize), - hexToInt(end, ucs2DataSize), - hexToStr(charCode, dataSize)); - } - break; - default: - error('Unknown type: ' + type); - break; - } - } - - if (useCMap) { - extend(useCMap); - } - return cMap; - } - - function BinaryCMapReader() {} - - BinaryCMapReader.prototype = { - read: processBinaryCMap - }; - - return BinaryCMapReader; -})(); - -var CMapFactory = (function CMapFactoryClosure() { - function strToInt(str) { - var a = 0; - for (var i = 0; i < str.length; i++) { - a = (a << 8) | str.charCodeAt(i); - } - return a >>> 0; - } - - function expectString(obj) { - if (!isString(obj)) { - error('Malformed CMap: expected string.'); - } - } - - function expectInt(obj) { - if (!isInt(obj)) { - error('Malformed CMap: expected int.'); - } - } - - function parseBfChar(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endbfchar')) { - return; - } - expectString(obj); - var src = strToInt(obj); - obj = lexer.getObj(); - // TODO are /dstName used? - expectString(obj); - var dst = obj; - cMap.mapOne(src, dst); - } - } - - function parseBfRange(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endbfrange')) { - return; - } - expectString(obj); - var low = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - var high = strToInt(obj); - obj = lexer.getObj(); - if (isInt(obj) || isString(obj)) { - var dstLow = isInt(obj) ? String.fromCharCode(obj) : obj; - cMap.mapBfRange(low, high, dstLow); - } else if (isCmd(obj, '[')) { - obj = lexer.getObj(); - var array = []; - while (!isCmd(obj, ']') && !isEOF(obj)) { - array.push(obj); - obj = lexer.getObj(); - } - cMap.mapBfRangeToArray(low, high, array); - } else { - break; - } - } - error('Invalid bf range.'); - } - - function parseCidChar(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endcidchar')) { - return; - } - expectString(obj); - var src = strToInt(obj); - obj = lexer.getObj(); - expectInt(obj); - var dst = obj; - cMap.mapOne(src, dst); - } - } - - function parseCidRange(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endcidrange')) { - return; - } - expectString(obj); - var low = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - var high = strToInt(obj); - obj = lexer.getObj(); - expectInt(obj); - var dstLow = obj; - cMap.mapCidRange(low, high, dstLow); - } - } - - function parseCodespaceRange(cMap, lexer) { - while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } - if (isCmd(obj, 'endcodespacerange')) { - return; - } - if (!isString(obj)) { - break; - } - var low = strToInt(obj); - obj = lexer.getObj(); - if (!isString(obj)) { - break; - } - var high = strToInt(obj); - cMap.addCodespaceRange(obj.length, low, high); - } - error('Invalid codespace range.'); - } - - function parseWMode(cMap, lexer) { - var obj = lexer.getObj(); - if (isInt(obj)) { - cMap.vertical = !!obj; - } - } - - function parseCMapName(cMap, lexer) { - var obj = lexer.getObj(); - if (isName(obj) && isString(obj.name)) { - cMap.name = obj.name; - } - } - - function parseCMap(cMap, lexer, builtInCMapParams, useCMap) { - var previous; - var embededUseCMap; - objLoop: while (true) { - var obj = lexer.getObj(); - if (isEOF(obj)) { - break; - } else if (isName(obj)) { - if (obj.name === 'WMode') { - parseWMode(cMap, lexer); - } else if (obj.name === 'CMapName') { - parseCMapName(cMap, lexer); - } - previous = obj; - } else if (isCmd(obj)) { - switch (obj.cmd) { - case 'endcmap': - break objLoop; - case 'usecmap': - if (isName(previous)) { - embededUseCMap = previous.name; - } - break; - case 'begincodespacerange': - parseCodespaceRange(cMap, lexer); - break; - case 'beginbfchar': - parseBfChar(cMap, lexer); - break; - case 'begincidchar': - parseCidChar(cMap, lexer); - break; - case 'beginbfrange': - parseBfRange(cMap, lexer); - break; - case 'begincidrange': - parseCidRange(cMap, lexer); - break; - } - } - } - - if (!useCMap && embededUseCMap) { - // Load the usecmap definition from the file only if there wasn't one - // specified. - useCMap = embededUseCMap; - } - if (useCMap) { - extendCMap(cMap, builtInCMapParams, useCMap); - } - } - - function extendCMap(cMap, builtInCMapParams, useCMap) { - cMap.useCMap = createBuiltInCMap(useCMap, builtInCMapParams); - // If there aren't any code space ranges defined clone all the parent ones - // into this cMap. - if (cMap.numCodespaceRanges === 0) { - var useCodespaceRanges = cMap.useCMap.codespaceRanges; - for (var i = 0; i < useCodespaceRanges.length; i++) { - cMap.codespaceRanges[i] = useCodespaceRanges[i].slice(); - } - cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges; - } - // Merge the map into the current one, making sure not to override - // any previously defined entries. - cMap.useCMap.forEach(function(key, value) { - if (!cMap.contains(key)) { - cMap.mapOne(key, cMap.useCMap.lookup(key)); - } - }); - } - - function parseBinaryCMap(name, builtInCMapParams) { - var url = builtInCMapParams.url + name + '.bcmap'; - var cMap = new CMap(true); - new BinaryCMapReader().read(url, cMap, function (useCMap) { - extendCMap(cMap, builtInCMapParams, useCMap); - }); - return cMap; - } - - function createBuiltInCMap(name, builtInCMapParams) { - if (name === 'Identity-H') { - return new IdentityCMap(false, 2); - } else if (name === 'Identity-V') { - return new IdentityCMap(true, 2); - } - if (BUILT_IN_CMAPS.indexOf(name) === -1) { - error('Unknown cMap name: ' + name); - } - assert(builtInCMapParams, 'built-in cMap parameters are not provided'); - - if (builtInCMapParams.packed) { - return parseBinaryCMap(name, builtInCMapParams); - } - - var request = new XMLHttpRequest(); - var url = builtInCMapParams.url + name; - request.open('GET', url, false); - request.send(null); - if (!request.responseText) { - error('Unable to get cMap at: ' + url); - } - var cMap = new CMap(true); - var lexer = new Lexer(new StringStream(request.responseText)); - parseCMap(cMap, lexer, builtInCMapParams, null); - return cMap; - } - - return { - create: function (encoding, builtInCMapParams, useCMap) { - if (isName(encoding)) { - return createBuiltInCMap(encoding.name, builtInCMapParams); - } else if (isStream(encoding)) { - var cMap = new CMap(); - var lexer = new Lexer(encoding); - try { - parseCMap(cMap, lexer, builtInCMapParams, useCMap); - } catch (e) { - warn('Invalid CMap data. ' + e); - } - if (cMap.isIdentityCMap) { - return createBuiltInCMap(cMap.name, builtInCMapParams); - } - return cMap; - } - error('Encoding required.'); - } - }; -})(); - - -// Unicode Private Use Area -var PRIVATE_USE_OFFSET_START = 0xE000; -var PRIVATE_USE_OFFSET_END = 0xF8FF; -var SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = false; - -// PDF Glyph Space Units are one Thousandth of a TextSpace Unit -// except for Type 3 fonts -var PDF_GLYPH_SPACE_UNITS = 1000; - -// Hinting is currently disabled due to unknown problems on windows -// in tracemonkey and various other pdfs with type1 fonts. -var HINTING_ENABLED = false; - -// Accented charactars are not displayed properly on windows, using this flag -// to control analysis of seac charstrings. -var SEAC_ANALYSIS_ENABLED = false; - -var FontFlags = { - FixedPitch: 1, - Serif: 2, - Symbolic: 4, - Script: 8, - Nonsymbolic: 32, - Italic: 64, - AllCap: 65536, - SmallCap: 131072, - ForceBold: 262144 -}; - -var Encodings = { - ExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', - 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', - 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', - 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', - 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', - 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', - 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', - 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', - 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', - 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', - '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', - 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', - 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', - 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', - 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', - 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', - 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', - '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', - 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', - 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', - 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', - 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', - 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', - 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', - 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', - 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', - 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', - 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', - 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', - 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', - 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', - 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', - 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', - 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', - 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', - 'Ydieresissmall'], - MacExpertEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle', - 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', - 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', - 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', - 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', - 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', - 'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '', - 'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter', - 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff', - 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', - 'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall', - 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', - 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', - 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', - 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', - 'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '', - 'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall', - 'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall', - 'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall', - 'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall', - 'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall', - 'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '', - 'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior', - 'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior', - 'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior', - 'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '', - 'dollarinferior', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior', - 'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall', - 'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '', - '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '', - 'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior', - 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', - 'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior', - 'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior', - '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall', - 'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior', - 'periodsuperior', 'Dotaccentsmall', 'Ringsmall'], - MacRomanEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', - 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', - 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', - 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', - 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', - 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', - 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', - 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', - 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', - 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', - 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', - 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', - 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', - 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', - 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', - 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', - 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', - 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', - 'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE', - 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', - 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', - 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', - 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', - 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', - 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', - 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', - 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', - 'ogonek', 'caron'], - StandardEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', - 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', - 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', - 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', - 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', - 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', - 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', - 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', - 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', - 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', - 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', - 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', - 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', - 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', - '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', - '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', - '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'], - WinAnsiEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', - 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', - 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', - 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', - 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', - 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', - 'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase', - 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron', - 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft', - 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash', - 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet', - 'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling', - 'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright', - 'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered', - 'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute', - 'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior', - 'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters', - 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis', - 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis', - 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve', - 'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash', - 'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn', - 'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis', - 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis', - 'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve', - 'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash', - 'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn', - 'ydieresis'], - SymbolSetEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent', - 'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus', - 'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', - 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', - 'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi', - 'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa', - 'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau', - 'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft', - 'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex', - 'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota', - 'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho', - 'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta', - 'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal', - 'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade', - 'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree', - 'plusminus', 'second', 'greaterequal', 'multiply', 'proportional', - 'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence', - 'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn', - 'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply', - 'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset', - 'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element', - 'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif', - 'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot', - 'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup', - 'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans', - 'copyrightsans', 'trademarksans', 'summation', 'parenlefttp', - 'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex', - 'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex', - '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt', - 'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp', - 'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid', - 'bracerightbt'], - ZapfDingbatsEncoding: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117', - 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19', - 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7', - 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36', - 'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46', - 'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56', - 'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66', - 'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75', - 'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97', - 'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205', - 'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103', - 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120', - 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129', - 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138', - 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147', - 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156', - 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165', - 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173', - 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180', - 'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185', - 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191'] -}; - -/** - * Hold a map of decoded fonts and of the standard fourteen Type1 - * fonts and their acronyms. - */ -var stdFontMap = { - 'ArialNarrow': 'Helvetica', - 'ArialNarrow-Bold': 'Helvetica-Bold', - 'ArialNarrow-BoldItalic': 'Helvetica-BoldOblique', - 'ArialNarrow-Italic': 'Helvetica-Oblique', - 'ArialBlack': 'Helvetica', - 'ArialBlack-Bold': 'Helvetica-Bold', - 'ArialBlack-BoldItalic': 'Helvetica-BoldOblique', - 'ArialBlack-Italic': 'Helvetica-Oblique', - 'Arial': 'Helvetica', - 'Arial-Bold': 'Helvetica-Bold', - 'Arial-BoldItalic': 'Helvetica-BoldOblique', - 'Arial-Italic': 'Helvetica-Oblique', - 'Arial-BoldItalicMT': 'Helvetica-BoldOblique', - 'Arial-BoldMT': 'Helvetica-Bold', - 'Arial-ItalicMT': 'Helvetica-Oblique', - 'ArialMT': 'Helvetica', - 'Courier-Bold': 'Courier-Bold', - 'Courier-BoldItalic': 'Courier-BoldOblique', - 'Courier-Italic': 'Courier-Oblique', - 'CourierNew': 'Courier', - 'CourierNew-Bold': 'Courier-Bold', - 'CourierNew-BoldItalic': 'Courier-BoldOblique', - 'CourierNew-Italic': 'Courier-Oblique', - 'CourierNewPS-BoldItalicMT': 'Courier-BoldOblique', - 'CourierNewPS-BoldMT': 'Courier-Bold', - 'CourierNewPS-ItalicMT': 'Courier-Oblique', - 'CourierNewPSMT': 'Courier', - 'Helvetica': 'Helvetica', - 'Helvetica-Bold': 'Helvetica-Bold', - 'Helvetica-BoldItalic': 'Helvetica-BoldOblique', - 'Helvetica-BoldOblique': 'Helvetica-BoldOblique', - 'Helvetica-Italic': 'Helvetica-Oblique', - 'Helvetica-Oblique':'Helvetica-Oblique', - 'Symbol-Bold': 'Symbol', - 'Symbol-BoldItalic': 'Symbol', - 'Symbol-Italic': 'Symbol', - 'TimesNewRoman': 'Times-Roman', - 'TimesNewRoman-Bold': 'Times-Bold', - 'TimesNewRoman-BoldItalic': 'Times-BoldItalic', - 'TimesNewRoman-Italic': 'Times-Italic', - 'TimesNewRomanPS': 'Times-Roman', - 'TimesNewRomanPS-Bold': 'Times-Bold', - 'TimesNewRomanPS-BoldItalic': 'Times-BoldItalic', - 'TimesNewRomanPS-BoldItalicMT': 'Times-BoldItalic', - 'TimesNewRomanPS-BoldMT': 'Times-Bold', - 'TimesNewRomanPS-Italic': 'Times-Italic', - 'TimesNewRomanPS-ItalicMT': 'Times-Italic', - 'TimesNewRomanPSMT': 'Times-Roman', - 'TimesNewRomanPSMT-Bold': 'Times-Bold', - 'TimesNewRomanPSMT-BoldItalic': 'Times-BoldItalic', - 'TimesNewRomanPSMT-Italic': 'Times-Italic' -}; - -/** - * Holds the map of the non-standard fonts that might be included as a standard - * fonts without glyph data. - */ -var nonStdFontMap = { - 'CenturyGothic': 'Helvetica', - 'CenturyGothic-Bold': 'Helvetica-Bold', - 'CenturyGothic-BoldItalic': 'Helvetica-BoldOblique', - 'CenturyGothic-Italic': 'Helvetica-Oblique', - 'ComicSansMS': 'Comic Sans MS', - 'ComicSansMS-Bold': 'Comic Sans MS-Bold', - 'ComicSansMS-BoldItalic': 'Comic Sans MS-BoldItalic', - 'ComicSansMS-Italic': 'Comic Sans MS-Italic', - 'LucidaConsole': 'Courier', - 'LucidaConsole-Bold': 'Courier-Bold', - 'LucidaConsole-BoldItalic': 'Courier-BoldOblique', - 'LucidaConsole-Italic': 'Courier-Oblique', - 'MS-Gothic': 'MS Gothic', - 'MS-Gothic-Bold': 'MS Gothic-Bold', - 'MS-Gothic-BoldItalic': 'MS Gothic-BoldItalic', - 'MS-Gothic-Italic': 'MS Gothic-Italic', - 'MS-Mincho': 'MS Mincho', - 'MS-Mincho-Bold': 'MS Mincho-Bold', - 'MS-Mincho-BoldItalic': 'MS Mincho-BoldItalic', - 'MS-Mincho-Italic': 'MS Mincho-Italic', - 'MS-PGothic': 'MS PGothic', - 'MS-PGothic-Bold': 'MS PGothic-Bold', - 'MS-PGothic-BoldItalic': 'MS PGothic-BoldItalic', - 'MS-PGothic-Italic': 'MS PGothic-Italic', - 'MS-PMincho': 'MS PMincho', - 'MS-PMincho-Bold': 'MS PMincho-Bold', - 'MS-PMincho-BoldItalic': 'MS PMincho-BoldItalic', - 'MS-PMincho-Italic': 'MS PMincho-Italic', - 'Wingdings': 'ZapfDingbats' -}; - -var serifFonts = { - 'Adobe Jenson': true, 'Adobe Text': true, 'Albertus': true, - 'Aldus': true, 'Alexandria': true, 'Algerian': true, - 'American Typewriter': true, 'Antiqua': true, 'Apex': true, - 'Arno': true, 'Aster': true, 'Aurora': true, - 'Baskerville': true, 'Bell': true, 'Bembo': true, - 'Bembo Schoolbook': true, 'Benguiat': true, 'Berkeley Old Style': true, - 'Bernhard Modern': true, 'Berthold City': true, 'Bodoni': true, - 'Bauer Bodoni': true, 'Book Antiqua': true, 'Bookman': true, - 'Bordeaux Roman': true, 'Californian FB': true, 'Calisto': true, - 'Calvert': true, 'Capitals': true, 'Cambria': true, - 'Cartier': true, 'Caslon': true, 'Catull': true, - 'Centaur': true, 'Century Old Style': true, 'Century Schoolbook': true, - 'Chaparral': true, 'Charis SIL': true, 'Cheltenham': true, - 'Cholla Slab': true, 'Clarendon': true, 'Clearface': true, - 'Cochin': true, 'Colonna': true, 'Computer Modern': true, - 'Concrete Roman': true, 'Constantia': true, 'Cooper Black': true, - 'Corona': true, 'Ecotype': true, 'Egyptienne': true, - 'Elephant': true, 'Excelsior': true, 'Fairfield': true, - 'FF Scala': true, 'Folkard': true, 'Footlight': true, - 'FreeSerif': true, 'Friz Quadrata': true, 'Garamond': true, - 'Gentium': true, 'Georgia': true, 'Gloucester': true, - 'Goudy Old Style': true, 'Goudy Schoolbook': true, 'Goudy Pro Font': true, - 'Granjon': true, 'Guardian Egyptian': true, 'Heather': true, - 'Hercules': true, 'High Tower Text': true, 'Hiroshige': true, - 'Hoefler Text': true, 'Humana Serif': true, 'Imprint': true, - 'Ionic No. 5': true, 'Janson': true, 'Joanna': true, - 'Korinna': true, 'Lexicon': true, 'Liberation Serif': true, - 'Linux Libertine': true, 'Literaturnaya': true, 'Lucida': true, - 'Lucida Bright': true, 'Melior': true, 'Memphis': true, - 'Miller': true, 'Minion': true, 'Modern': true, - 'Mona Lisa': true, 'Mrs Eaves': true, 'MS Serif': true, - 'Museo Slab': true, 'New York': true, 'Nimbus Roman': true, - 'NPS Rawlinson Roadway': true, 'Palatino': true, 'Perpetua': true, - 'Plantin': true, 'Plantin Schoolbook': true, 'Playbill': true, - 'Poor Richard': true, 'Rawlinson Roadway': true, 'Renault': true, - 'Requiem': true, 'Rockwell': true, 'Roman': true, - 'Rotis Serif': true, 'Sabon': true, 'Scala': true, - 'Seagull': true, 'Sistina': true, 'Souvenir': true, - 'STIX': true, 'Stone Informal': true, 'Stone Serif': true, - 'Sylfaen': true, 'Times': true, 'Trajan': true, - 'Trinité': true, 'Trump Mediaeval': true, 'Utopia': true, - 'Vale Type': true, 'Bitstream Vera': true, 'Vera Serif': true, - 'Versailles': true, 'Wanted': true, 'Weiss': true, - 'Wide Latin': true, 'Windsor': true, 'XITS': true -}; - -var symbolsFonts = { - 'Dingbats': true, 'Symbol': true, 'ZapfDingbats': true -}; - -// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID fonts -// but does not embed the CID to GID mapping. The mapping is incomplete for all -// glyphs, but common for some set of the standard fonts. -var GlyphMapForStandardFonts = { - '2': 10, '3': 32, '4': 33, '5': 34, '6': 35, '7': 36, '8': 37, '9': 38, - '10': 39, '11': 40, '12': 41, '13': 42, '14': 43, '15': 44, '16': 45, - '17': 46, '18': 47, '19': 48, '20': 49, '21': 50, '22': 51, '23': 52, - '24': 53, '25': 54, '26': 55, '27': 56, '28': 57, '29': 58, '30': 894, - '31': 60, '32': 61, '33': 62, '34': 63, '35': 64, '36': 65, '37': 66, - '38': 67, '39': 68, '40': 69, '41': 70, '42': 71, '43': 72, '44': 73, - '45': 74, '46': 75, '47': 76, '48': 77, '49': 78, '50': 79, '51': 80, - '52': 81, '53': 82, '54': 83, '55': 84, '56': 85, '57': 86, '58': 87, - '59': 88, '60': 89, '61': 90, '62': 91, '63': 92, '64': 93, '65': 94, - '66': 95, '67': 96, '68': 97, '69': 98, '70': 99, '71': 100, '72': 101, - '73': 102, '74': 103, '75': 104, '76': 105, '77': 106, '78': 107, '79': 108, - '80': 109, '81': 110, '82': 111, '83': 112, '84': 113, '85': 114, '86': 115, - '87': 116, '88': 117, '89': 118, '90': 119, '91': 120, '92': 121, '93': 122, - '94': 123, '95': 124, '96': 125, '97': 126, '98': 196, '99': 197, '100': 199, - '101': 201, '102': 209, '103': 214, '104': 220, '105': 225, '106': 224, - '107': 226, '108': 228, '109': 227, '110': 229, '111': 231, '112': 233, - '113': 232, '114': 234, '115': 235, '116': 237, '117': 236, '118': 238, - '119': 239, '120': 241, '121': 243, '122': 242, '123': 244, '124': 246, - '125': 245, '126': 250, '127': 249, '128': 251, '129': 252, '130': 8224, - '131': 176, '132': 162, '133': 163, '134': 167, '135': 8226, '136': 182, - '137': 223, '138': 174, '139': 169, '140': 8482, '141': 180, '142': 168, - '143': 8800, '144': 198, '145': 216, '146': 8734, '147': 177, '148': 8804, - '149': 8805, '150': 165, '151': 181, '152': 8706, '153': 8721, '154': 8719, - '156': 8747, '157': 170, '158': 186, '159': 8486, '160': 230, '161': 248, - '162': 191, '163': 161, '164': 172, '165': 8730, '166': 402, '167': 8776, - '168': 8710, '169': 171, '170': 187, '171': 8230, '210': 218, '223': 711, - '224': 321, '225': 322, '227': 353, '229': 382, '234': 253, '252': 263, - '253': 268, '254': 269, '258': 258, '260': 260, '261': 261, '265': 280, - '266': 281, '268': 283, '269': 313, '275': 323, '276': 324, '278': 328, - '284': 345, '285': 346, '286': 347, '292': 367, '295': 377, '296': 378, - '298': 380, '305': 963, - '306': 964, '307': 966, '308': 8215, '309': 8252, '310': 8319, '311': 8359, - '312': 8592, '313': 8593, '337': 9552, '493': 1039, '494': 1040, '705': 1524, - '706': 8362, '710': 64288, '711': 64298, '759': 1617, '761': 1776, - '763': 1778, '775': 1652, '777': 1764, '778': 1780, '779': 1781, '780': 1782, - '782': 771, '783': 64726, '786': 8363, '788': 8532, '790': 768, '791': 769, - '792': 768, '795': 803, '797': 64336, '798': 64337, '799': 64342, - '800': 64343, '801': 64344, '802': 64345, '803': 64362, '804': 64363, - '805': 64364, '2424': 7821, '2425': 7822, '2426': 7823, '2427': 7824, - '2428': 7825, '2429': 7826, '2430': 7827, '2433': 7682, '2678': 8045, - '2679': 8046, '2830': 1552, '2838': 686, '2840': 751, '2842': 753, - '2843': 754, '2844': 755, '2846': 757, '2856': 767, '2857': 848, '2858': 849, - '2862': 853, '2863': 854, '2864': 855, '2865': 861, '2866': 862, '2906': 7460, - '2908': 7462, '2909': 7463, '2910': 7464, '2912': 7466, '2913': 7467, - '2914': 7468, '2916': 7470, '2917': 7471, '2918': 7472, '2920': 7474, - '2921': 7475, '2922': 7476, '2924': 7478, '2925': 7479, '2926': 7480, - '2928': 7482, '2929': 7483, '2930': 7484, '2932': 7486, '2933': 7487, - '2934': 7488, '2936': 7490, '2937': 7491, '2938': 7492, '2940': 7494, - '2941': 7495, '2942': 7496, '2944': 7498, '2946': 7500, '2948': 7502, - '2950': 7504, '2951': 7505, '2952': 7506, '2954': 7508, '2955': 7509, - '2956': 7510, '2958': 7512, '2959': 7513, '2960': 7514, '2962': 7516, - '2963': 7517, '2964': 7518, '2966': 7520, '2967': 7521, '2968': 7522, - '2970': 7524, '2971': 7525, '2972': 7526, '2974': 7528, '2975': 7529, - '2976': 7530, '2978': 1537, '2979': 1538, '2980': 1539, '2982': 1549, - '2983': 1551, '2984': 1552, '2986': 1554, '2987': 1555, '2988': 1556, - '2990': 1623, '2991': 1624, '2995': 1775, '2999': 1791, '3002': 64290, - '3003': 64291, '3004': 64292, '3006': 64294, '3007': 64295, '3008': 64296, - '3011': 1900, '3014': 8223, '3015': 8244, '3017': 7532, '3018': 7533, - '3019': 7534, '3075': 7590, '3076': 7591, '3079': 7594, '3080': 7595, - '3083': 7598, '3084': 7599, '3087': 7602, '3088': 7603, '3091': 7606, - '3092': 7607, '3095': 7610, '3096': 7611, '3099': 7614, '3100': 7615, - '3103': 7618, '3104': 7619, '3107': 8337, '3108': 8338, '3116': 1884, - '3119': 1885, '3120': 1885, '3123': 1886, '3124': 1886, '3127': 1887, - '3128': 1887, '3131': 1888, '3132': 1888, '3135': 1889, '3136': 1889, - '3139': 1890, '3140': 1890, '3143': 1891, '3144': 1891, '3147': 1892, - '3148': 1892, '3153': 580, '3154': 581, '3157': 584, '3158': 585, '3161': 588, - '3162': 589, '3165': 891, '3166': 892, '3169': 1274, '3170': 1275, - '3173': 1278, '3174': 1279, '3181': 7622, '3182': 7623, '3282': 11799, - '3316': 578, '3379': 42785, '3393': 1159, '3416': 8377 -}; - -// The glyph map for ArialBlack differs slightly from the glyph map used for -// other well-known standard fonts. Hence we use this (incomplete) CID to GID -// mapping to adjust the glyph map for non-embedded ArialBlack fonts. -var SupplementalGlyphMapForArialBlack = { - '227': 322, '264': 261, '291': 346, -}; - -// Some characters, e.g. copyrightserif, are mapped to the private use area and -// might not be displayed using standard fonts. Mapping/hacking well-known chars -// to the similar equivalents in the normal characters range. -var SpecialPUASymbols = { - '63721': 0x00A9, // copyrightsans (0xF8E9) => copyright - '63193': 0x00A9, // copyrightserif (0xF6D9) => copyright - '63720': 0x00AE, // registersans (0xF8E8) => registered - '63194': 0x00AE, // registerserif (0xF6DA) => registered - '63722': 0x2122, // trademarksans (0xF8EA) => trademark - '63195': 0x2122, // trademarkserif (0xF6DB) => trademark - '63729': 0x23A7, // bracelefttp (0xF8F1) - '63730': 0x23A8, // braceleftmid (0xF8F2) - '63731': 0x23A9, // braceleftbt (0xF8F3) - '63740': 0x23AB, // bracerighttp (0xF8FC) - '63741': 0x23AC, // bracerightmid (0xF8FD) - '63742': 0x23AD, // bracerightbt (0xF8FE) - '63726': 0x23A1, // bracketlefttp (0xF8EE) - '63727': 0x23A2, // bracketleftex (0xF8EF) - '63728': 0x23A3, // bracketleftbt (0xF8F0) - '63737': 0x23A4, // bracketrighttp (0xF8F9) - '63738': 0x23A5, // bracketrightex (0xF8FA) - '63739': 0x23A6, // bracketrightbt (0xF8FB) - '63723': 0x239B, // parenlefttp (0xF8EB) - '63724': 0x239C, // parenleftex (0xF8EC) - '63725': 0x239D, // parenleftbt (0xF8ED) - '63734': 0x239E, // parenrighttp (0xF8F6) - '63735': 0x239F, // parenrightex (0xF8F7) - '63736': 0x23A0, // parenrightbt (0xF8F8) -}; -function mapSpecialUnicodeValues(code) { - if (code >= 0xFFF0 && code <= 0xFFFF) { // Specials unicode block. - return 0; - } else if (code >= 0xF600 && code <= 0xF8FF) { - return (SpecialPUASymbols[code] || code); - } - return code; -} - -var UnicodeRanges = [ - { 'begin': 0x0000, 'end': 0x007F }, // Basic Latin - { 'begin': 0x0080, 'end': 0x00FF }, // Latin-1 Supplement - { 'begin': 0x0100, 'end': 0x017F }, // Latin Extended-A - { 'begin': 0x0180, 'end': 0x024F }, // Latin Extended-B - { 'begin': 0x0250, 'end': 0x02AF }, // IPA Extensions - { 'begin': 0x02B0, 'end': 0x02FF }, // Spacing Modifier Letters - { 'begin': 0x0300, 'end': 0x036F }, // Combining Diacritical Marks - { 'begin': 0x0370, 'end': 0x03FF }, // Greek and Coptic - { 'begin': 0x2C80, 'end': 0x2CFF }, // Coptic - { 'begin': 0x0400, 'end': 0x04FF }, // Cyrillic - { 'begin': 0x0530, 'end': 0x058F }, // Armenian - { 'begin': 0x0590, 'end': 0x05FF }, // Hebrew - { 'begin': 0xA500, 'end': 0xA63F }, // Vai - { 'begin': 0x0600, 'end': 0x06FF }, // Arabic - { 'begin': 0x07C0, 'end': 0x07FF }, // NKo - { 'begin': 0x0900, 'end': 0x097F }, // Devanagari - { 'begin': 0x0980, 'end': 0x09FF }, // Bengali - { 'begin': 0x0A00, 'end': 0x0A7F }, // Gurmukhi - { 'begin': 0x0A80, 'end': 0x0AFF }, // Gujarati - { 'begin': 0x0B00, 'end': 0x0B7F }, // Oriya - { 'begin': 0x0B80, 'end': 0x0BFF }, // Tamil - { 'begin': 0x0C00, 'end': 0x0C7F }, // Telugu - { 'begin': 0x0C80, 'end': 0x0CFF }, // Kannada - { 'begin': 0x0D00, 'end': 0x0D7F }, // Malayalam - { 'begin': 0x0E00, 'end': 0x0E7F }, // Thai - { 'begin': 0x0E80, 'end': 0x0EFF }, // Lao - { 'begin': 0x10A0, 'end': 0x10FF }, // Georgian - { 'begin': 0x1B00, 'end': 0x1B7F }, // Balinese - { 'begin': 0x1100, 'end': 0x11FF }, // Hangul Jamo - { 'begin': 0x1E00, 'end': 0x1EFF }, // Latin Extended Additional - { 'begin': 0x1F00, 'end': 0x1FFF }, // Greek Extended - { 'begin': 0x2000, 'end': 0x206F }, // General Punctuation - { 'begin': 0x2070, 'end': 0x209F }, // Superscripts And Subscripts - { 'begin': 0x20A0, 'end': 0x20CF }, // Currency Symbol - { 'begin': 0x20D0, 'end': 0x20FF }, // Combining Diacritical Marks For Symbols - { 'begin': 0x2100, 'end': 0x214F }, // Letterlike Symbols - { 'begin': 0x2150, 'end': 0x218F }, // Number Forms - { 'begin': 0x2190, 'end': 0x21FF }, // Arrows - { 'begin': 0x2200, 'end': 0x22FF }, // Mathematical Operators - { 'begin': 0x2300, 'end': 0x23FF }, // Miscellaneous Technical - { 'begin': 0x2400, 'end': 0x243F }, // Control Pictures - { 'begin': 0x2440, 'end': 0x245F }, // Optical Character Recognition - { 'begin': 0x2460, 'end': 0x24FF }, // Enclosed Alphanumerics - { 'begin': 0x2500, 'end': 0x257F }, // Box Drawing - { 'begin': 0x2580, 'end': 0x259F }, // Block Elements - { 'begin': 0x25A0, 'end': 0x25FF }, // Geometric Shapes - { 'begin': 0x2600, 'end': 0x26FF }, // Miscellaneous Symbols - { 'begin': 0x2700, 'end': 0x27BF }, // Dingbats - { 'begin': 0x3000, 'end': 0x303F }, // CJK Symbols And Punctuation - { 'begin': 0x3040, 'end': 0x309F }, // Hiragana - { 'begin': 0x30A0, 'end': 0x30FF }, // Katakana - { 'begin': 0x3100, 'end': 0x312F }, // Bopomofo - { 'begin': 0x3130, 'end': 0x318F }, // Hangul Compatibility Jamo - { 'begin': 0xA840, 'end': 0xA87F }, // Phags-pa - { 'begin': 0x3200, 'end': 0x32FF }, // Enclosed CJK Letters And Months - { 'begin': 0x3300, 'end': 0x33FF }, // CJK Compatibility - { 'begin': 0xAC00, 'end': 0xD7AF }, // Hangul Syllables - { 'begin': 0xD800, 'end': 0xDFFF }, // Non-Plane 0 * - { 'begin': 0x10900, 'end': 0x1091F }, // Phoenicia - { 'begin': 0x4E00, 'end': 0x9FFF }, // CJK Unified Ideographs - { 'begin': 0xE000, 'end': 0xF8FF }, // Private Use Area (plane 0) - { 'begin': 0x31C0, 'end': 0x31EF }, // CJK Strokes - { 'begin': 0xFB00, 'end': 0xFB4F }, // Alphabetic Presentation Forms - { 'begin': 0xFB50, 'end': 0xFDFF }, // Arabic Presentation Forms-A - { 'begin': 0xFE20, 'end': 0xFE2F }, // Combining Half Marks - { 'begin': 0xFE10, 'end': 0xFE1F }, // Vertical Forms - { 'begin': 0xFE50, 'end': 0xFE6F }, // Small Form Variants - { 'begin': 0xFE70, 'end': 0xFEFF }, // Arabic Presentation Forms-B - { 'begin': 0xFF00, 'end': 0xFFEF }, // Halfwidth And Fullwidth Forms - { 'begin': 0xFFF0, 'end': 0xFFFF }, // Specials - { 'begin': 0x0F00, 'end': 0x0FFF }, // Tibetan - { 'begin': 0x0700, 'end': 0x074F }, // Syriac - { 'begin': 0x0780, 'end': 0x07BF }, // Thaana - { 'begin': 0x0D80, 'end': 0x0DFF }, // Sinhala - { 'begin': 0x1000, 'end': 0x109F }, // Myanmar - { 'begin': 0x1200, 'end': 0x137F }, // Ethiopic - { 'begin': 0x13A0, 'end': 0x13FF }, // Cherokee - { 'begin': 0x1400, 'end': 0x167F }, // Unified Canadian Aboriginal Syllabics - { 'begin': 0x1680, 'end': 0x169F }, // Ogham - { 'begin': 0x16A0, 'end': 0x16FF }, // Runic - { 'begin': 0x1780, 'end': 0x17FF }, // Khmer - { 'begin': 0x1800, 'end': 0x18AF }, // Mongolian - { 'begin': 0x2800, 'end': 0x28FF }, // Braille Patterns - { 'begin': 0xA000, 'end': 0xA48F }, // Yi Syllables - { 'begin': 0x1700, 'end': 0x171F }, // Tagalog - { 'begin': 0x10300, 'end': 0x1032F }, // Old Italic - { 'begin': 0x10330, 'end': 0x1034F }, // Gothic - { 'begin': 0x10400, 'end': 0x1044F }, // Deseret - { 'begin': 0x1D000, 'end': 0x1D0FF }, // Byzantine Musical Symbols - { 'begin': 0x1D400, 'end': 0x1D7FF }, // Mathematical Alphanumeric Symbols - { 'begin': 0xFF000, 'end': 0xFFFFD }, // Private Use (plane 15) - { 'begin': 0xFE00, 'end': 0xFE0F }, // Variation Selectors - { 'begin': 0xE0000, 'end': 0xE007F }, // Tags - { 'begin': 0x1900, 'end': 0x194F }, // Limbu - { 'begin': 0x1950, 'end': 0x197F }, // Tai Le - { 'begin': 0x1980, 'end': 0x19DF }, // New Tai Lue - { 'begin': 0x1A00, 'end': 0x1A1F }, // Buginese - { 'begin': 0x2C00, 'end': 0x2C5F }, // Glagolitic - { 'begin': 0x2D30, 'end': 0x2D7F }, // Tifinagh - { 'begin': 0x4DC0, 'end': 0x4DFF }, // Yijing Hexagram Symbols - { 'begin': 0xA800, 'end': 0xA82F }, // Syloti Nagri - { 'begin': 0x10000, 'end': 0x1007F }, // Linear B Syllabary - { 'begin': 0x10140, 'end': 0x1018F }, // Ancient Greek Numbers - { 'begin': 0x10380, 'end': 0x1039F }, // Ugaritic - { 'begin': 0x103A0, 'end': 0x103DF }, // Old Persian - { 'begin': 0x10450, 'end': 0x1047F }, // Shavian - { 'begin': 0x10480, 'end': 0x104AF }, // Osmanya - { 'begin': 0x10800, 'end': 0x1083F }, // Cypriot Syllabary - { 'begin': 0x10A00, 'end': 0x10A5F }, // Kharoshthi - { 'begin': 0x1D300, 'end': 0x1D35F }, // Tai Xuan Jing Symbols - { 'begin': 0x12000, 'end': 0x123FF }, // Cuneiform - { 'begin': 0x1D360, 'end': 0x1D37F }, // Counting Rod Numerals - { 'begin': 0x1B80, 'end': 0x1BBF }, // Sundanese - { 'begin': 0x1C00, 'end': 0x1C4F }, // Lepcha - { 'begin': 0x1C50, 'end': 0x1C7F }, // Ol Chiki - { 'begin': 0xA880, 'end': 0xA8DF }, // Saurashtra - { 'begin': 0xA900, 'end': 0xA92F }, // Kayah Li - { 'begin': 0xA930, 'end': 0xA95F }, // Rejang - { 'begin': 0xAA00, 'end': 0xAA5F }, // Cham - { 'begin': 0x10190, 'end': 0x101CF }, // Ancient Symbols - { 'begin': 0x101D0, 'end': 0x101FF }, // Phaistos Disc - { 'begin': 0x102A0, 'end': 0x102DF }, // Carian - { 'begin': 0x1F030, 'end': 0x1F09F } // Domino Tiles -]; - -var MacStandardGlyphOrdering = [ - '.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', - 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', - 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', - 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', - 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', - 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', - 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', - 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', - 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', - 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', - 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', - 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', - 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', - 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', - 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', - 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', - 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', - 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', - 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', - 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', - 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', - 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', - 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', - 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', - 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', - 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', - 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', - 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', - 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', - 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', - 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', - 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', - 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', - 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat']; - -function getUnicodeRangeFor(value) { - for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) { - var range = UnicodeRanges[i]; - if (value >= range.begin && value < range.end) { - return i; - } - } - return -1; -} - -function isRTLRangeFor(value) { - var range = UnicodeRanges[13]; - if (value >= range.begin && value < range.end) { - return true; - } - range = UnicodeRanges[11]; - if (value >= range.begin && value < range.end) { - return true; - } - return false; -} - -// The normalization table is obtained by filtering the Unicode characters -// database with <compat> entries. -var NormalizedUnicodes = { - '\u00A8': '\u0020\u0308', - '\u00AF': '\u0020\u0304', - '\u00B4': '\u0020\u0301', - '\u00B5': '\u03BC', - '\u00B8': '\u0020\u0327', - '\u0132': '\u0049\u004A', - '\u0133': '\u0069\u006A', - '\u013F': '\u004C\u00B7', - '\u0140': '\u006C\u00B7', - '\u0149': '\u02BC\u006E', - '\u017F': '\u0073', - '\u01C4': '\u0044\u017D', - '\u01C5': '\u0044\u017E', - '\u01C6': '\u0064\u017E', - '\u01C7': '\u004C\u004A', - '\u01C8': '\u004C\u006A', - '\u01C9': '\u006C\u006A', - '\u01CA': '\u004E\u004A', - '\u01CB': '\u004E\u006A', - '\u01CC': '\u006E\u006A', - '\u01F1': '\u0044\u005A', - '\u01F2': '\u0044\u007A', - '\u01F3': '\u0064\u007A', - '\u02D8': '\u0020\u0306', - '\u02D9': '\u0020\u0307', - '\u02DA': '\u0020\u030A', - '\u02DB': '\u0020\u0328', - '\u02DC': '\u0020\u0303', - '\u02DD': '\u0020\u030B', - '\u037A': '\u0020\u0345', - '\u0384': '\u0020\u0301', - '\u03D0': '\u03B2', - '\u03D1': '\u03B8', - '\u03D2': '\u03A5', - '\u03D5': '\u03C6', - '\u03D6': '\u03C0', - '\u03F0': '\u03BA', - '\u03F1': '\u03C1', - '\u03F2': '\u03C2', - '\u03F4': '\u0398', - '\u03F5': '\u03B5', - '\u03F9': '\u03A3', - '\u0587': '\u0565\u0582', - '\u0675': '\u0627\u0674', - '\u0676': '\u0648\u0674', - '\u0677': '\u06C7\u0674', - '\u0678': '\u064A\u0674', - '\u0E33': '\u0E4D\u0E32', - '\u0EB3': '\u0ECD\u0EB2', - '\u0EDC': '\u0EAB\u0E99', - '\u0EDD': '\u0EAB\u0EA1', - '\u0F77': '\u0FB2\u0F81', - '\u0F79': '\u0FB3\u0F81', - '\u1E9A': '\u0061\u02BE', - '\u1FBD': '\u0020\u0313', - '\u1FBF': '\u0020\u0313', - '\u1FC0': '\u0020\u0342', - '\u1FFE': '\u0020\u0314', - '\u2002': '\u0020', - '\u2003': '\u0020', - '\u2004': '\u0020', - '\u2005': '\u0020', - '\u2006': '\u0020', - '\u2008': '\u0020', - '\u2009': '\u0020', - '\u200A': '\u0020', - '\u2017': '\u0020\u0333', - '\u2024': '\u002E', - '\u2025': '\u002E\u002E', - '\u2026': '\u002E\u002E\u002E', - '\u2033': '\u2032\u2032', - '\u2034': '\u2032\u2032\u2032', - '\u2036': '\u2035\u2035', - '\u2037': '\u2035\u2035\u2035', - '\u203C': '\u0021\u0021', - '\u203E': '\u0020\u0305', - '\u2047': '\u003F\u003F', - '\u2048': '\u003F\u0021', - '\u2049': '\u0021\u003F', - '\u2057': '\u2032\u2032\u2032\u2032', - '\u205F': '\u0020', - '\u20A8': '\u0052\u0073', - '\u2100': '\u0061\u002F\u0063', - '\u2101': '\u0061\u002F\u0073', - '\u2103': '\u00B0\u0043', - '\u2105': '\u0063\u002F\u006F', - '\u2106': '\u0063\u002F\u0075', - '\u2107': '\u0190', - '\u2109': '\u00B0\u0046', - '\u2116': '\u004E\u006F', - '\u2121': '\u0054\u0045\u004C', - '\u2135': '\u05D0', - '\u2136': '\u05D1', - '\u2137': '\u05D2', - '\u2138': '\u05D3', - '\u213B': '\u0046\u0041\u0058', - '\u2160': '\u0049', - '\u2161': '\u0049\u0049', - '\u2162': '\u0049\u0049\u0049', - '\u2163': '\u0049\u0056', - '\u2164': '\u0056', - '\u2165': '\u0056\u0049', - '\u2166': '\u0056\u0049\u0049', - '\u2167': '\u0056\u0049\u0049\u0049', - '\u2168': '\u0049\u0058', - '\u2169': '\u0058', - '\u216A': '\u0058\u0049', - '\u216B': '\u0058\u0049\u0049', - '\u216C': '\u004C', - '\u216D': '\u0043', - '\u216E': '\u0044', - '\u216F': '\u004D', - '\u2170': '\u0069', - '\u2171': '\u0069\u0069', - '\u2172': '\u0069\u0069\u0069', - '\u2173': '\u0069\u0076', - '\u2174': '\u0076', - '\u2175': '\u0076\u0069', - '\u2176': '\u0076\u0069\u0069', - '\u2177': '\u0076\u0069\u0069\u0069', - '\u2178': '\u0069\u0078', - '\u2179': '\u0078', - '\u217A': '\u0078\u0069', - '\u217B': '\u0078\u0069\u0069', - '\u217C': '\u006C', - '\u217D': '\u0063', - '\u217E': '\u0064', - '\u217F': '\u006D', - '\u222C': '\u222B\u222B', - '\u222D': '\u222B\u222B\u222B', - '\u222F': '\u222E\u222E', - '\u2230': '\u222E\u222E\u222E', - '\u2474': '\u0028\u0031\u0029', - '\u2475': '\u0028\u0032\u0029', - '\u2476': '\u0028\u0033\u0029', - '\u2477': '\u0028\u0034\u0029', - '\u2478': '\u0028\u0035\u0029', - '\u2479': '\u0028\u0036\u0029', - '\u247A': '\u0028\u0037\u0029', - '\u247B': '\u0028\u0038\u0029', - '\u247C': '\u0028\u0039\u0029', - '\u247D': '\u0028\u0031\u0030\u0029', - '\u247E': '\u0028\u0031\u0031\u0029', - '\u247F': '\u0028\u0031\u0032\u0029', - '\u2480': '\u0028\u0031\u0033\u0029', - '\u2481': '\u0028\u0031\u0034\u0029', - '\u2482': '\u0028\u0031\u0035\u0029', - '\u2483': '\u0028\u0031\u0036\u0029', - '\u2484': '\u0028\u0031\u0037\u0029', - '\u2485': '\u0028\u0031\u0038\u0029', - '\u2486': '\u0028\u0031\u0039\u0029', - '\u2487': '\u0028\u0032\u0030\u0029', - '\u2488': '\u0031\u002E', - '\u2489': '\u0032\u002E', - '\u248A': '\u0033\u002E', - '\u248B': '\u0034\u002E', - '\u248C': '\u0035\u002E', - '\u248D': '\u0036\u002E', - '\u248E': '\u0037\u002E', - '\u248F': '\u0038\u002E', - '\u2490': '\u0039\u002E', - '\u2491': '\u0031\u0030\u002E', - '\u2492': '\u0031\u0031\u002E', - '\u2493': '\u0031\u0032\u002E', - '\u2494': '\u0031\u0033\u002E', - '\u2495': '\u0031\u0034\u002E', - '\u2496': '\u0031\u0035\u002E', - '\u2497': '\u0031\u0036\u002E', - '\u2498': '\u0031\u0037\u002E', - '\u2499': '\u0031\u0038\u002E', - '\u249A': '\u0031\u0039\u002E', - '\u249B': '\u0032\u0030\u002E', - '\u249C': '\u0028\u0061\u0029', - '\u249D': '\u0028\u0062\u0029', - '\u249E': '\u0028\u0063\u0029', - '\u249F': '\u0028\u0064\u0029', - '\u24A0': '\u0028\u0065\u0029', - '\u24A1': '\u0028\u0066\u0029', - '\u24A2': '\u0028\u0067\u0029', - '\u24A3': '\u0028\u0068\u0029', - '\u24A4': '\u0028\u0069\u0029', - '\u24A5': '\u0028\u006A\u0029', - '\u24A6': '\u0028\u006B\u0029', - '\u24A7': '\u0028\u006C\u0029', - '\u24A8': '\u0028\u006D\u0029', - '\u24A9': '\u0028\u006E\u0029', - '\u24AA': '\u0028\u006F\u0029', - '\u24AB': '\u0028\u0070\u0029', - '\u24AC': '\u0028\u0071\u0029', - '\u24AD': '\u0028\u0072\u0029', - '\u24AE': '\u0028\u0073\u0029', - '\u24AF': '\u0028\u0074\u0029', - '\u24B0': '\u0028\u0075\u0029', - '\u24B1': '\u0028\u0076\u0029', - '\u24B2': '\u0028\u0077\u0029', - '\u24B3': '\u0028\u0078\u0029', - '\u24B4': '\u0028\u0079\u0029', - '\u24B5': '\u0028\u007A\u0029', - '\u2A0C': '\u222B\u222B\u222B\u222B', - '\u2A74': '\u003A\u003A\u003D', - '\u2A75': '\u003D\u003D', - '\u2A76': '\u003D\u003D\u003D', - '\u2E9F': '\u6BCD', - '\u2EF3': '\u9F9F', - '\u2F00': '\u4E00', - '\u2F01': '\u4E28', - '\u2F02': '\u4E36', - '\u2F03': '\u4E3F', - '\u2F04': '\u4E59', - '\u2F05': '\u4E85', - '\u2F06': '\u4E8C', - '\u2F07': '\u4EA0', - '\u2F08': '\u4EBA', - '\u2F09': '\u513F', - '\u2F0A': '\u5165', - '\u2F0B': '\u516B', - '\u2F0C': '\u5182', - '\u2F0D': '\u5196', - '\u2F0E': '\u51AB', - '\u2F0F': '\u51E0', - '\u2F10': '\u51F5', - '\u2F11': '\u5200', - '\u2F12': '\u529B', - '\u2F13': '\u52F9', - '\u2F14': '\u5315', - '\u2F15': '\u531A', - '\u2F16': '\u5338', - '\u2F17': '\u5341', - '\u2F18': '\u535C', - '\u2F19': '\u5369', - '\u2F1A': '\u5382', - '\u2F1B': '\u53B6', - '\u2F1C': '\u53C8', - '\u2F1D': '\u53E3', - '\u2F1E': '\u56D7', - '\u2F1F': '\u571F', - '\u2F20': '\u58EB', - '\u2F21': '\u5902', - '\u2F22': '\u590A', - '\u2F23': '\u5915', - '\u2F24': '\u5927', - '\u2F25': '\u5973', - '\u2F26': '\u5B50', - '\u2F27': '\u5B80', - '\u2F28': '\u5BF8', - '\u2F29': '\u5C0F', - '\u2F2A': '\u5C22', - '\u2F2B': '\u5C38', - '\u2F2C': '\u5C6E', - '\u2F2D': '\u5C71', - '\u2F2E': '\u5DDB', - '\u2F2F': '\u5DE5', - '\u2F30': '\u5DF1', - '\u2F31': '\u5DFE', - '\u2F32': '\u5E72', - '\u2F33': '\u5E7A', - '\u2F34': '\u5E7F', - '\u2F35': '\u5EF4', - '\u2F36': '\u5EFE', - '\u2F37': '\u5F0B', - '\u2F38': '\u5F13', - '\u2F39': '\u5F50', - '\u2F3A': '\u5F61', - '\u2F3B': '\u5F73', - '\u2F3C': '\u5FC3', - '\u2F3D': '\u6208', - '\u2F3E': '\u6236', - '\u2F3F': '\u624B', - '\u2F40': '\u652F', - '\u2F41': '\u6534', - '\u2F42': '\u6587', - '\u2F43': '\u6597', - '\u2F44': '\u65A4', - '\u2F45': '\u65B9', - '\u2F46': '\u65E0', - '\u2F47': '\u65E5', - '\u2F48': '\u66F0', - '\u2F49': '\u6708', - '\u2F4A': '\u6728', - '\u2F4B': '\u6B20', - '\u2F4C': '\u6B62', - '\u2F4D': '\u6B79', - '\u2F4E': '\u6BB3', - '\u2F4F': '\u6BCB', - '\u2F50': '\u6BD4', - '\u2F51': '\u6BDB', - '\u2F52': '\u6C0F', - '\u2F53': '\u6C14', - '\u2F54': '\u6C34', - '\u2F55': '\u706B', - '\u2F56': '\u722A', - '\u2F57': '\u7236', - '\u2F58': '\u723B', - '\u2F59': '\u723F', - '\u2F5A': '\u7247', - '\u2F5B': '\u7259', - '\u2F5C': '\u725B', - '\u2F5D': '\u72AC', - '\u2F5E': '\u7384', - '\u2F5F': '\u7389', - '\u2F60': '\u74DC', - '\u2F61': '\u74E6', - '\u2F62': '\u7518', - '\u2F63': '\u751F', - '\u2F64': '\u7528', - '\u2F65': '\u7530', - '\u2F66': '\u758B', - '\u2F67': '\u7592', - '\u2F68': '\u7676', - '\u2F69': '\u767D', - '\u2F6A': '\u76AE', - '\u2F6B': '\u76BF', - '\u2F6C': '\u76EE', - '\u2F6D': '\u77DB', - '\u2F6E': '\u77E2', - '\u2F6F': '\u77F3', - '\u2F70': '\u793A', - '\u2F71': '\u79B8', - '\u2F72': '\u79BE', - '\u2F73': '\u7A74', - '\u2F74': '\u7ACB', - '\u2F75': '\u7AF9', - '\u2F76': '\u7C73', - '\u2F77': '\u7CF8', - '\u2F78': '\u7F36', - '\u2F79': '\u7F51', - '\u2F7A': '\u7F8A', - '\u2F7B': '\u7FBD', - '\u2F7C': '\u8001', - '\u2F7D': '\u800C', - '\u2F7E': '\u8012', - '\u2F7F': '\u8033', - '\u2F80': '\u807F', - '\u2F81': '\u8089', - '\u2F82': '\u81E3', - '\u2F83': '\u81EA', - '\u2F84': '\u81F3', - '\u2F85': '\u81FC', - '\u2F86': '\u820C', - '\u2F87': '\u821B', - '\u2F88': '\u821F', - '\u2F89': '\u826E', - '\u2F8A': '\u8272', - '\u2F8B': '\u8278', - '\u2F8C': '\u864D', - '\u2F8D': '\u866B', - '\u2F8E': '\u8840', - '\u2F8F': '\u884C', - '\u2F90': '\u8863', - '\u2F91': '\u897E', - '\u2F92': '\u898B', - '\u2F93': '\u89D2', - '\u2F94': '\u8A00', - '\u2F95': '\u8C37', - '\u2F96': '\u8C46', - '\u2F97': '\u8C55', - '\u2F98': '\u8C78', - '\u2F99': '\u8C9D', - '\u2F9A': '\u8D64', - '\u2F9B': '\u8D70', - '\u2F9C': '\u8DB3', - '\u2F9D': '\u8EAB', - '\u2F9E': '\u8ECA', - '\u2F9F': '\u8F9B', - '\u2FA0': '\u8FB0', - '\u2FA1': '\u8FB5', - '\u2FA2': '\u9091', - '\u2FA3': '\u9149', - '\u2FA4': '\u91C6', - '\u2FA5': '\u91CC', - '\u2FA6': '\u91D1', - '\u2FA7': '\u9577', - '\u2FA8': '\u9580', - '\u2FA9': '\u961C', - '\u2FAA': '\u96B6', - '\u2FAB': '\u96B9', - '\u2FAC': '\u96E8', - '\u2FAD': '\u9751', - '\u2FAE': '\u975E', - '\u2FAF': '\u9762', - '\u2FB0': '\u9769', - '\u2FB1': '\u97CB', - '\u2FB2': '\u97ED', - '\u2FB3': '\u97F3', - '\u2FB4': '\u9801', - '\u2FB5': '\u98A8', - '\u2FB6': '\u98DB', - '\u2FB7': '\u98DF', - '\u2FB8': '\u9996', - '\u2FB9': '\u9999', - '\u2FBA': '\u99AC', - '\u2FBB': '\u9AA8', - '\u2FBC': '\u9AD8', - '\u2FBD': '\u9ADF', - '\u2FBE': '\u9B25', - '\u2FBF': '\u9B2F', - '\u2FC0': '\u9B32', - '\u2FC1': '\u9B3C', - '\u2FC2': '\u9B5A', - '\u2FC3': '\u9CE5', - '\u2FC4': '\u9E75', - '\u2FC5': '\u9E7F', - '\u2FC6': '\u9EA5', - '\u2FC7': '\u9EBB', - '\u2FC8': '\u9EC3', - '\u2FC9': '\u9ECD', - '\u2FCA': '\u9ED1', - '\u2FCB': '\u9EF9', - '\u2FCC': '\u9EFD', - '\u2FCD': '\u9F0E', - '\u2FCE': '\u9F13', - '\u2FCF': '\u9F20', - '\u2FD0': '\u9F3B', - '\u2FD1': '\u9F4A', - '\u2FD2': '\u9F52', - '\u2FD3': '\u9F8D', - '\u2FD4': '\u9F9C', - '\u2FD5': '\u9FA0', - '\u3036': '\u3012', - '\u3038': '\u5341', - '\u3039': '\u5344', - '\u303A': '\u5345', - '\u309B': '\u0020\u3099', - '\u309C': '\u0020\u309A', - '\u3131': '\u1100', - '\u3132': '\u1101', - '\u3133': '\u11AA', - '\u3134': '\u1102', - '\u3135': '\u11AC', - '\u3136': '\u11AD', - '\u3137': '\u1103', - '\u3138': '\u1104', - '\u3139': '\u1105', - '\u313A': '\u11B0', - '\u313B': '\u11B1', - '\u313C': '\u11B2', - '\u313D': '\u11B3', - '\u313E': '\u11B4', - '\u313F': '\u11B5', - '\u3140': '\u111A', - '\u3141': '\u1106', - '\u3142': '\u1107', - '\u3143': '\u1108', - '\u3144': '\u1121', - '\u3145': '\u1109', - '\u3146': '\u110A', - '\u3147': '\u110B', - '\u3148': '\u110C', - '\u3149': '\u110D', - '\u314A': '\u110E', - '\u314B': '\u110F', - '\u314C': '\u1110', - '\u314D': '\u1111', - '\u314E': '\u1112', - '\u314F': '\u1161', - '\u3150': '\u1162', - '\u3151': '\u1163', - '\u3152': '\u1164', - '\u3153': '\u1165', - '\u3154': '\u1166', - '\u3155': '\u1167', - '\u3156': '\u1168', - '\u3157': '\u1169', - '\u3158': '\u116A', - '\u3159': '\u116B', - '\u315A': '\u116C', - '\u315B': '\u116D', - '\u315C': '\u116E', - '\u315D': '\u116F', - '\u315E': '\u1170', - '\u315F': '\u1171', - '\u3160': '\u1172', - '\u3161': '\u1173', - '\u3162': '\u1174', - '\u3163': '\u1175', - '\u3164': '\u1160', - '\u3165': '\u1114', - '\u3166': '\u1115', - '\u3167': '\u11C7', - '\u3168': '\u11C8', - '\u3169': '\u11CC', - '\u316A': '\u11CE', - '\u316B': '\u11D3', - '\u316C': '\u11D7', - '\u316D': '\u11D9', - '\u316E': '\u111C', - '\u316F': '\u11DD', - '\u3170': '\u11DF', - '\u3171': '\u111D', - '\u3172': '\u111E', - '\u3173': '\u1120', - '\u3174': '\u1122', - '\u3175': '\u1123', - '\u3176': '\u1127', - '\u3177': '\u1129', - '\u3178': '\u112B', - '\u3179': '\u112C', - '\u317A': '\u112D', - '\u317B': '\u112E', - '\u317C': '\u112F', - '\u317D': '\u1132', - '\u317E': '\u1136', - '\u317F': '\u1140', - '\u3180': '\u1147', - '\u3181': '\u114C', - '\u3182': '\u11F1', - '\u3183': '\u11F2', - '\u3184': '\u1157', - '\u3185': '\u1158', - '\u3186': '\u1159', - '\u3187': '\u1184', - '\u3188': '\u1185', - '\u3189': '\u1188', - '\u318A': '\u1191', - '\u318B': '\u1192', - '\u318C': '\u1194', - '\u318D': '\u119E', - '\u318E': '\u11A1', - '\u3200': '\u0028\u1100\u0029', - '\u3201': '\u0028\u1102\u0029', - '\u3202': '\u0028\u1103\u0029', - '\u3203': '\u0028\u1105\u0029', - '\u3204': '\u0028\u1106\u0029', - '\u3205': '\u0028\u1107\u0029', - '\u3206': '\u0028\u1109\u0029', - '\u3207': '\u0028\u110B\u0029', - '\u3208': '\u0028\u110C\u0029', - '\u3209': '\u0028\u110E\u0029', - '\u320A': '\u0028\u110F\u0029', - '\u320B': '\u0028\u1110\u0029', - '\u320C': '\u0028\u1111\u0029', - '\u320D': '\u0028\u1112\u0029', - '\u320E': '\u0028\u1100\u1161\u0029', - '\u320F': '\u0028\u1102\u1161\u0029', - '\u3210': '\u0028\u1103\u1161\u0029', - '\u3211': '\u0028\u1105\u1161\u0029', - '\u3212': '\u0028\u1106\u1161\u0029', - '\u3213': '\u0028\u1107\u1161\u0029', - '\u3214': '\u0028\u1109\u1161\u0029', - '\u3215': '\u0028\u110B\u1161\u0029', - '\u3216': '\u0028\u110C\u1161\u0029', - '\u3217': '\u0028\u110E\u1161\u0029', - '\u3218': '\u0028\u110F\u1161\u0029', - '\u3219': '\u0028\u1110\u1161\u0029', - '\u321A': '\u0028\u1111\u1161\u0029', - '\u321B': '\u0028\u1112\u1161\u0029', - '\u321C': '\u0028\u110C\u116E\u0029', - '\u321D': '\u0028\u110B\u1169\u110C\u1165\u11AB\u0029', - '\u321E': '\u0028\u110B\u1169\u1112\u116E\u0029', - '\u3220': '\u0028\u4E00\u0029', - '\u3221': '\u0028\u4E8C\u0029', - '\u3222': '\u0028\u4E09\u0029', - '\u3223': '\u0028\u56DB\u0029', - '\u3224': '\u0028\u4E94\u0029', - '\u3225': '\u0028\u516D\u0029', - '\u3226': '\u0028\u4E03\u0029', - '\u3227': '\u0028\u516B\u0029', - '\u3228': '\u0028\u4E5D\u0029', - '\u3229': '\u0028\u5341\u0029', - '\u322A': '\u0028\u6708\u0029', - '\u322B': '\u0028\u706B\u0029', - '\u322C': '\u0028\u6C34\u0029', - '\u322D': '\u0028\u6728\u0029', - '\u322E': '\u0028\u91D1\u0029', - '\u322F': '\u0028\u571F\u0029', - '\u3230': '\u0028\u65E5\u0029', - '\u3231': '\u0028\u682A\u0029', - '\u3232': '\u0028\u6709\u0029', - '\u3233': '\u0028\u793E\u0029', - '\u3234': '\u0028\u540D\u0029', - '\u3235': '\u0028\u7279\u0029', - '\u3236': '\u0028\u8CA1\u0029', - '\u3237': '\u0028\u795D\u0029', - '\u3238': '\u0028\u52B4\u0029', - '\u3239': '\u0028\u4EE3\u0029', - '\u323A': '\u0028\u547C\u0029', - '\u323B': '\u0028\u5B66\u0029', - '\u323C': '\u0028\u76E3\u0029', - '\u323D': '\u0028\u4F01\u0029', - '\u323E': '\u0028\u8CC7\u0029', - '\u323F': '\u0028\u5354\u0029', - '\u3240': '\u0028\u796D\u0029', - '\u3241': '\u0028\u4F11\u0029', - '\u3242': '\u0028\u81EA\u0029', - '\u3243': '\u0028\u81F3\u0029', - '\u32C0': '\u0031\u6708', - '\u32C1': '\u0032\u6708', - '\u32C2': '\u0033\u6708', - '\u32C3': '\u0034\u6708', - '\u32C4': '\u0035\u6708', - '\u32C5': '\u0036\u6708', - '\u32C6': '\u0037\u6708', - '\u32C7': '\u0038\u6708', - '\u32C8': '\u0039\u6708', - '\u32C9': '\u0031\u0030\u6708', - '\u32CA': '\u0031\u0031\u6708', - '\u32CB': '\u0031\u0032\u6708', - '\u3358': '\u0030\u70B9', - '\u3359': '\u0031\u70B9', - '\u335A': '\u0032\u70B9', - '\u335B': '\u0033\u70B9', - '\u335C': '\u0034\u70B9', - '\u335D': '\u0035\u70B9', - '\u335E': '\u0036\u70B9', - '\u335F': '\u0037\u70B9', - '\u3360': '\u0038\u70B9', - '\u3361': '\u0039\u70B9', - '\u3362': '\u0031\u0030\u70B9', - '\u3363': '\u0031\u0031\u70B9', - '\u3364': '\u0031\u0032\u70B9', - '\u3365': '\u0031\u0033\u70B9', - '\u3366': '\u0031\u0034\u70B9', - '\u3367': '\u0031\u0035\u70B9', - '\u3368': '\u0031\u0036\u70B9', - '\u3369': '\u0031\u0037\u70B9', - '\u336A': '\u0031\u0038\u70B9', - '\u336B': '\u0031\u0039\u70B9', - '\u336C': '\u0032\u0030\u70B9', - '\u336D': '\u0032\u0031\u70B9', - '\u336E': '\u0032\u0032\u70B9', - '\u336F': '\u0032\u0033\u70B9', - '\u3370': '\u0032\u0034\u70B9', - '\u33E0': '\u0031\u65E5', - '\u33E1': '\u0032\u65E5', - '\u33E2': '\u0033\u65E5', - '\u33E3': '\u0034\u65E5', - '\u33E4': '\u0035\u65E5', - '\u33E5': '\u0036\u65E5', - '\u33E6': '\u0037\u65E5', - '\u33E7': '\u0038\u65E5', - '\u33E8': '\u0039\u65E5', - '\u33E9': '\u0031\u0030\u65E5', - '\u33EA': '\u0031\u0031\u65E5', - '\u33EB': '\u0031\u0032\u65E5', - '\u33EC': '\u0031\u0033\u65E5', - '\u33ED': '\u0031\u0034\u65E5', - '\u33EE': '\u0031\u0035\u65E5', - '\u33EF': '\u0031\u0036\u65E5', - '\u33F0': '\u0031\u0037\u65E5', - '\u33F1': '\u0031\u0038\u65E5', - '\u33F2': '\u0031\u0039\u65E5', - '\u33F3': '\u0032\u0030\u65E5', - '\u33F4': '\u0032\u0031\u65E5', - '\u33F5': '\u0032\u0032\u65E5', - '\u33F6': '\u0032\u0033\u65E5', - '\u33F7': '\u0032\u0034\u65E5', - '\u33F8': '\u0032\u0035\u65E5', - '\u33F9': '\u0032\u0036\u65E5', - '\u33FA': '\u0032\u0037\u65E5', - '\u33FB': '\u0032\u0038\u65E5', - '\u33FC': '\u0032\u0039\u65E5', - '\u33FD': '\u0033\u0030\u65E5', - '\u33FE': '\u0033\u0031\u65E5', - '\uFB00': '\u0066\u0066', - '\uFB01': '\u0066\u0069', - '\uFB02': '\u0066\u006C', - '\uFB03': '\u0066\u0066\u0069', - '\uFB04': '\u0066\u0066\u006C', - '\uFB05': '\u017F\u0074', - '\uFB06': '\u0073\u0074', - '\uFB13': '\u0574\u0576', - '\uFB14': '\u0574\u0565', - '\uFB15': '\u0574\u056B', - '\uFB16': '\u057E\u0576', - '\uFB17': '\u0574\u056D', - '\uFB4F': '\u05D0\u05DC', - '\uFB50': '\u0671', - '\uFB51': '\u0671', - '\uFB52': '\u067B', - '\uFB53': '\u067B', - '\uFB54': '\u067B', - '\uFB55': '\u067B', - '\uFB56': '\u067E', - '\uFB57': '\u067E', - '\uFB58': '\u067E', - '\uFB59': '\u067E', - '\uFB5A': '\u0680', - '\uFB5B': '\u0680', - '\uFB5C': '\u0680', - '\uFB5D': '\u0680', - '\uFB5E': '\u067A', - '\uFB5F': '\u067A', - '\uFB60': '\u067A', - '\uFB61': '\u067A', - '\uFB62': '\u067F', - '\uFB63': '\u067F', - '\uFB64': '\u067F', - '\uFB65': '\u067F', - '\uFB66': '\u0679', - '\uFB67': '\u0679', - '\uFB68': '\u0679', - '\uFB69': '\u0679', - '\uFB6A': '\u06A4', - '\uFB6B': '\u06A4', - '\uFB6C': '\u06A4', - '\uFB6D': '\u06A4', - '\uFB6E': '\u06A6', - '\uFB6F': '\u06A6', - '\uFB70': '\u06A6', - '\uFB71': '\u06A6', - '\uFB72': '\u0684', - '\uFB73': '\u0684', - '\uFB74': '\u0684', - '\uFB75': '\u0684', - '\uFB76': '\u0683', - '\uFB77': '\u0683', - '\uFB78': '\u0683', - '\uFB79': '\u0683', - '\uFB7A': '\u0686', - '\uFB7B': '\u0686', - '\uFB7C': '\u0686', - '\uFB7D': '\u0686', - '\uFB7E': '\u0687', - '\uFB7F': '\u0687', - '\uFB80': '\u0687', - '\uFB81': '\u0687', - '\uFB82': '\u068D', - '\uFB83': '\u068D', - '\uFB84': '\u068C', - '\uFB85': '\u068C', - '\uFB86': '\u068E', - '\uFB87': '\u068E', - '\uFB88': '\u0688', - '\uFB89': '\u0688', - '\uFB8A': '\u0698', - '\uFB8B': '\u0698', - '\uFB8C': '\u0691', - '\uFB8D': '\u0691', - '\uFB8E': '\u06A9', - '\uFB8F': '\u06A9', - '\uFB90': '\u06A9', - '\uFB91': '\u06A9', - '\uFB92': '\u06AF', - '\uFB93': '\u06AF', - '\uFB94': '\u06AF', - '\uFB95': '\u06AF', - '\uFB96': '\u06B3', - '\uFB97': '\u06B3', - '\uFB98': '\u06B3', - '\uFB99': '\u06B3', - '\uFB9A': '\u06B1', - '\uFB9B': '\u06B1', - '\uFB9C': '\u06B1', - '\uFB9D': '\u06B1', - '\uFB9E': '\u06BA', - '\uFB9F': '\u06BA', - '\uFBA0': '\u06BB', - '\uFBA1': '\u06BB', - '\uFBA2': '\u06BB', - '\uFBA3': '\u06BB', - '\uFBA4': '\u06C0', - '\uFBA5': '\u06C0', - '\uFBA6': '\u06C1', - '\uFBA7': '\u06C1', - '\uFBA8': '\u06C1', - '\uFBA9': '\u06C1', - '\uFBAA': '\u06BE', - '\uFBAB': '\u06BE', - '\uFBAC': '\u06BE', - '\uFBAD': '\u06BE', - '\uFBAE': '\u06D2', - '\uFBAF': '\u06D2', - '\uFBB0': '\u06D3', - '\uFBB1': '\u06D3', - '\uFBD3': '\u06AD', - '\uFBD4': '\u06AD', - '\uFBD5': '\u06AD', - '\uFBD6': '\u06AD', - '\uFBD7': '\u06C7', - '\uFBD8': '\u06C7', - '\uFBD9': '\u06C6', - '\uFBDA': '\u06C6', - '\uFBDB': '\u06C8', - '\uFBDC': '\u06C8', - '\uFBDD': '\u0677', - '\uFBDE': '\u06CB', - '\uFBDF': '\u06CB', - '\uFBE0': '\u06C5', - '\uFBE1': '\u06C5', - '\uFBE2': '\u06C9', - '\uFBE3': '\u06C9', - '\uFBE4': '\u06D0', - '\uFBE5': '\u06D0', - '\uFBE6': '\u06D0', - '\uFBE7': '\u06D0', - '\uFBE8': '\u0649', - '\uFBE9': '\u0649', - '\uFBEA': '\u0626\u0627', - '\uFBEB': '\u0626\u0627', - '\uFBEC': '\u0626\u06D5', - '\uFBED': '\u0626\u06D5', - '\uFBEE': '\u0626\u0648', - '\uFBEF': '\u0626\u0648', - '\uFBF0': '\u0626\u06C7', - '\uFBF1': '\u0626\u06C7', - '\uFBF2': '\u0626\u06C6', - '\uFBF3': '\u0626\u06C6', - '\uFBF4': '\u0626\u06C8', - '\uFBF5': '\u0626\u06C8', - '\uFBF6': '\u0626\u06D0', - '\uFBF7': '\u0626\u06D0', - '\uFBF8': '\u0626\u06D0', - '\uFBF9': '\u0626\u0649', - '\uFBFA': '\u0626\u0649', - '\uFBFB': '\u0626\u0649', - '\uFBFC': '\u06CC', - '\uFBFD': '\u06CC', - '\uFBFE': '\u06CC', - '\uFBFF': '\u06CC', - '\uFC00': '\u0626\u062C', - '\uFC01': '\u0626\u062D', - '\uFC02': '\u0626\u0645', - '\uFC03': '\u0626\u0649', - '\uFC04': '\u0626\u064A', - '\uFC05': '\u0628\u062C', - '\uFC06': '\u0628\u062D', - '\uFC07': '\u0628\u062E', - '\uFC08': '\u0628\u0645', - '\uFC09': '\u0628\u0649', - '\uFC0A': '\u0628\u064A', - '\uFC0B': '\u062A\u062C', - '\uFC0C': '\u062A\u062D', - '\uFC0D': '\u062A\u062E', - '\uFC0E': '\u062A\u0645', - '\uFC0F': '\u062A\u0649', - '\uFC10': '\u062A\u064A', - '\uFC11': '\u062B\u062C', - '\uFC12': '\u062B\u0645', - '\uFC13': '\u062B\u0649', - '\uFC14': '\u062B\u064A', - '\uFC15': '\u062C\u062D', - '\uFC16': '\u062C\u0645', - '\uFC17': '\u062D\u062C', - '\uFC18': '\u062D\u0645', - '\uFC19': '\u062E\u062C', - '\uFC1A': '\u062E\u062D', - '\uFC1B': '\u062E\u0645', - '\uFC1C': '\u0633\u062C', - '\uFC1D': '\u0633\u062D', - '\uFC1E': '\u0633\u062E', - '\uFC1F': '\u0633\u0645', - '\uFC20': '\u0635\u062D', - '\uFC21': '\u0635\u0645', - '\uFC22': '\u0636\u062C', - '\uFC23': '\u0636\u062D', - '\uFC24': '\u0636\u062E', - '\uFC25': '\u0636\u0645', - '\uFC26': '\u0637\u062D', - '\uFC27': '\u0637\u0645', - '\uFC28': '\u0638\u0645', - '\uFC29': '\u0639\u062C', - '\uFC2A': '\u0639\u0645', - '\uFC2B': '\u063A\u062C', - '\uFC2C': '\u063A\u0645', - '\uFC2D': '\u0641\u062C', - '\uFC2E': '\u0641\u062D', - '\uFC2F': '\u0641\u062E', - '\uFC30': '\u0641\u0645', - '\uFC31': '\u0641\u0649', - '\uFC32': '\u0641\u064A', - '\uFC33': '\u0642\u062D', - '\uFC34': '\u0642\u0645', - '\uFC35': '\u0642\u0649', - '\uFC36': '\u0642\u064A', - '\uFC37': '\u0643\u0627', - '\uFC38': '\u0643\u062C', - '\uFC39': '\u0643\u062D', - '\uFC3A': '\u0643\u062E', - '\uFC3B': '\u0643\u0644', - '\uFC3C': '\u0643\u0645', - '\uFC3D': '\u0643\u0649', - '\uFC3E': '\u0643\u064A', - '\uFC3F': '\u0644\u062C', - '\uFC40': '\u0644\u062D', - '\uFC41': '\u0644\u062E', - '\uFC42': '\u0644\u0645', - '\uFC43': '\u0644\u0649', - '\uFC44': '\u0644\u064A', - '\uFC45': '\u0645\u062C', - '\uFC46': '\u0645\u062D', - '\uFC47': '\u0645\u062E', - '\uFC48': '\u0645\u0645', - '\uFC49': '\u0645\u0649', - '\uFC4A': '\u0645\u064A', - '\uFC4B': '\u0646\u062C', - '\uFC4C': '\u0646\u062D', - '\uFC4D': '\u0646\u062E', - '\uFC4E': '\u0646\u0645', - '\uFC4F': '\u0646\u0649', - '\uFC50': '\u0646\u064A', - '\uFC51': '\u0647\u062C', - '\uFC52': '\u0647\u0645', - '\uFC53': '\u0647\u0649', - '\uFC54': '\u0647\u064A', - '\uFC55': '\u064A\u062C', - '\uFC56': '\u064A\u062D', - '\uFC57': '\u064A\u062E', - '\uFC58': '\u064A\u0645', - '\uFC59': '\u064A\u0649', - '\uFC5A': '\u064A\u064A', - '\uFC5B': '\u0630\u0670', - '\uFC5C': '\u0631\u0670', - '\uFC5D': '\u0649\u0670', - '\uFC5E': '\u0020\u064C\u0651', - '\uFC5F': '\u0020\u064D\u0651', - '\uFC60': '\u0020\u064E\u0651', - '\uFC61': '\u0020\u064F\u0651', - '\uFC62': '\u0020\u0650\u0651', - '\uFC63': '\u0020\u0651\u0670', - '\uFC64': '\u0626\u0631', - '\uFC65': '\u0626\u0632', - '\uFC66': '\u0626\u0645', - '\uFC67': '\u0626\u0646', - '\uFC68': '\u0626\u0649', - '\uFC69': '\u0626\u064A', - '\uFC6A': '\u0628\u0631', - '\uFC6B': '\u0628\u0632', - '\uFC6C': '\u0628\u0645', - '\uFC6D': '\u0628\u0646', - '\uFC6E': '\u0628\u0649', - '\uFC6F': '\u0628\u064A', - '\uFC70': '\u062A\u0631', - '\uFC71': '\u062A\u0632', - '\uFC72': '\u062A\u0645', - '\uFC73': '\u062A\u0646', - '\uFC74': '\u062A\u0649', - '\uFC75': '\u062A\u064A', - '\uFC76': '\u062B\u0631', - '\uFC77': '\u062B\u0632', - '\uFC78': '\u062B\u0645', - '\uFC79': '\u062B\u0646', - '\uFC7A': '\u062B\u0649', - '\uFC7B': '\u062B\u064A', - '\uFC7C': '\u0641\u0649', - '\uFC7D': '\u0641\u064A', - '\uFC7E': '\u0642\u0649', - '\uFC7F': '\u0642\u064A', - '\uFC80': '\u0643\u0627', - '\uFC81': '\u0643\u0644', - '\uFC82': '\u0643\u0645', - '\uFC83': '\u0643\u0649', - '\uFC84': '\u0643\u064A', - '\uFC85': '\u0644\u0645', - '\uFC86': '\u0644\u0649', - '\uFC87': '\u0644\u064A', - '\uFC88': '\u0645\u0627', - '\uFC89': '\u0645\u0645', - '\uFC8A': '\u0646\u0631', - '\uFC8B': '\u0646\u0632', - '\uFC8C': '\u0646\u0645', - '\uFC8D': '\u0646\u0646', - '\uFC8E': '\u0646\u0649', - '\uFC8F': '\u0646\u064A', - '\uFC90': '\u0649\u0670', - '\uFC91': '\u064A\u0631', - '\uFC92': '\u064A\u0632', - '\uFC93': '\u064A\u0645', - '\uFC94': '\u064A\u0646', - '\uFC95': '\u064A\u0649', - '\uFC96': '\u064A\u064A', - '\uFC97': '\u0626\u062C', - '\uFC98': '\u0626\u062D', - '\uFC99': '\u0626\u062E', - '\uFC9A': '\u0626\u0645', - '\uFC9B': '\u0626\u0647', - '\uFC9C': '\u0628\u062C', - '\uFC9D': '\u0628\u062D', - '\uFC9E': '\u0628\u062E', - '\uFC9F': '\u0628\u0645', - '\uFCA0': '\u0628\u0647', - '\uFCA1': '\u062A\u062C', - '\uFCA2': '\u062A\u062D', - '\uFCA3': '\u062A\u062E', - '\uFCA4': '\u062A\u0645', - '\uFCA5': '\u062A\u0647', - '\uFCA6': '\u062B\u0645', - '\uFCA7': '\u062C\u062D', - '\uFCA8': '\u062C\u0645', - '\uFCA9': '\u062D\u062C', - '\uFCAA': '\u062D\u0645', - '\uFCAB': '\u062E\u062C', - '\uFCAC': '\u062E\u0645', - '\uFCAD': '\u0633\u062C', - '\uFCAE': '\u0633\u062D', - '\uFCAF': '\u0633\u062E', - '\uFCB0': '\u0633\u0645', - '\uFCB1': '\u0635\u062D', - '\uFCB2': '\u0635\u062E', - '\uFCB3': '\u0635\u0645', - '\uFCB4': '\u0636\u062C', - '\uFCB5': '\u0636\u062D', - '\uFCB6': '\u0636\u062E', - '\uFCB7': '\u0636\u0645', - '\uFCB8': '\u0637\u062D', - '\uFCB9': '\u0638\u0645', - '\uFCBA': '\u0639\u062C', - '\uFCBB': '\u0639\u0645', - '\uFCBC': '\u063A\u062C', - '\uFCBD': '\u063A\u0645', - '\uFCBE': '\u0641\u062C', - '\uFCBF': '\u0641\u062D', - '\uFCC0': '\u0641\u062E', - '\uFCC1': '\u0641\u0645', - '\uFCC2': '\u0642\u062D', - '\uFCC3': '\u0642\u0645', - '\uFCC4': '\u0643\u062C', - '\uFCC5': '\u0643\u062D', - '\uFCC6': '\u0643\u062E', - '\uFCC7': '\u0643\u0644', - '\uFCC8': '\u0643\u0645', - '\uFCC9': '\u0644\u062C', - '\uFCCA': '\u0644\u062D', - '\uFCCB': '\u0644\u062E', - '\uFCCC': '\u0644\u0645', - '\uFCCD': '\u0644\u0647', - '\uFCCE': '\u0645\u062C', - '\uFCCF': '\u0645\u062D', - '\uFCD0': '\u0645\u062E', - '\uFCD1': '\u0645\u0645', - '\uFCD2': '\u0646\u062C', - '\uFCD3': '\u0646\u062D', - '\uFCD4': '\u0646\u062E', - '\uFCD5': '\u0646\u0645', - '\uFCD6': '\u0646\u0647', - '\uFCD7': '\u0647\u062C', - '\uFCD8': '\u0647\u0645', - '\uFCD9': '\u0647\u0670', - '\uFCDA': '\u064A\u062C', - '\uFCDB': '\u064A\u062D', - '\uFCDC': '\u064A\u062E', - '\uFCDD': '\u064A\u0645', - '\uFCDE': '\u064A\u0647', - '\uFCDF': '\u0626\u0645', - '\uFCE0': '\u0626\u0647', - '\uFCE1': '\u0628\u0645', - '\uFCE2': '\u0628\u0647', - '\uFCE3': '\u062A\u0645', - '\uFCE4': '\u062A\u0647', - '\uFCE5': '\u062B\u0645', - '\uFCE6': '\u062B\u0647', - '\uFCE7': '\u0633\u0645', - '\uFCE8': '\u0633\u0647', - '\uFCE9': '\u0634\u0645', - '\uFCEA': '\u0634\u0647', - '\uFCEB': '\u0643\u0644', - '\uFCEC': '\u0643\u0645', - '\uFCED': '\u0644\u0645', - '\uFCEE': '\u0646\u0645', - '\uFCEF': '\u0646\u0647', - '\uFCF0': '\u064A\u0645', - '\uFCF1': '\u064A\u0647', - '\uFCF2': '\u0640\u064E\u0651', - '\uFCF3': '\u0640\u064F\u0651', - '\uFCF4': '\u0640\u0650\u0651', - '\uFCF5': '\u0637\u0649', - '\uFCF6': '\u0637\u064A', - '\uFCF7': '\u0639\u0649', - '\uFCF8': '\u0639\u064A', - '\uFCF9': '\u063A\u0649', - '\uFCFA': '\u063A\u064A', - '\uFCFB': '\u0633\u0649', - '\uFCFC': '\u0633\u064A', - '\uFCFD': '\u0634\u0649', - '\uFCFE': '\u0634\u064A', - '\uFCFF': '\u062D\u0649', - '\uFD00': '\u062D\u064A', - '\uFD01': '\u062C\u0649', - '\uFD02': '\u062C\u064A', - '\uFD03': '\u062E\u0649', - '\uFD04': '\u062E\u064A', - '\uFD05': '\u0635\u0649', - '\uFD06': '\u0635\u064A', - '\uFD07': '\u0636\u0649', - '\uFD08': '\u0636\u064A', - '\uFD09': '\u0634\u062C', - '\uFD0A': '\u0634\u062D', - '\uFD0B': '\u0634\u062E', - '\uFD0C': '\u0634\u0645', - '\uFD0D': '\u0634\u0631', - '\uFD0E': '\u0633\u0631', - '\uFD0F': '\u0635\u0631', - '\uFD10': '\u0636\u0631', - '\uFD11': '\u0637\u0649', - '\uFD12': '\u0637\u064A', - '\uFD13': '\u0639\u0649', - '\uFD14': '\u0639\u064A', - '\uFD15': '\u063A\u0649', - '\uFD16': '\u063A\u064A', - '\uFD17': '\u0633\u0649', - '\uFD18': '\u0633\u064A', - '\uFD19': '\u0634\u0649', - '\uFD1A': '\u0634\u064A', - '\uFD1B': '\u062D\u0649', - '\uFD1C': '\u062D\u064A', - '\uFD1D': '\u062C\u0649', - '\uFD1E': '\u062C\u064A', - '\uFD1F': '\u062E\u0649', - '\uFD20': '\u062E\u064A', - '\uFD21': '\u0635\u0649', - '\uFD22': '\u0635\u064A', - '\uFD23': '\u0636\u0649', - '\uFD24': '\u0636\u064A', - '\uFD25': '\u0634\u062C', - '\uFD26': '\u0634\u062D', - '\uFD27': '\u0634\u062E', - '\uFD28': '\u0634\u0645', - '\uFD29': '\u0634\u0631', - '\uFD2A': '\u0633\u0631', - '\uFD2B': '\u0635\u0631', - '\uFD2C': '\u0636\u0631', - '\uFD2D': '\u0634\u062C', - '\uFD2E': '\u0634\u062D', - '\uFD2F': '\u0634\u062E', - '\uFD30': '\u0634\u0645', - '\uFD31': '\u0633\u0647', - '\uFD32': '\u0634\u0647', - '\uFD33': '\u0637\u0645', - '\uFD34': '\u0633\u062C', - '\uFD35': '\u0633\u062D', - '\uFD36': '\u0633\u062E', - '\uFD37': '\u0634\u062C', - '\uFD38': '\u0634\u062D', - '\uFD39': '\u0634\u062E', - '\uFD3A': '\u0637\u0645', - '\uFD3B': '\u0638\u0645', - '\uFD3C': '\u0627\u064B', - '\uFD3D': '\u0627\u064B', - '\uFD50': '\u062A\u062C\u0645', - '\uFD51': '\u062A\u062D\u062C', - '\uFD52': '\u062A\u062D\u062C', - '\uFD53': '\u062A\u062D\u0645', - '\uFD54': '\u062A\u062E\u0645', - '\uFD55': '\u062A\u0645\u062C', - '\uFD56': '\u062A\u0645\u062D', - '\uFD57': '\u062A\u0645\u062E', - '\uFD58': '\u062C\u0645\u062D', - '\uFD59': '\u062C\u0645\u062D', - '\uFD5A': '\u062D\u0645\u064A', - '\uFD5B': '\u062D\u0645\u0649', - '\uFD5C': '\u0633\u062D\u062C', - '\uFD5D': '\u0633\u062C\u062D', - '\uFD5E': '\u0633\u062C\u0649', - '\uFD5F': '\u0633\u0645\u062D', - '\uFD60': '\u0633\u0645\u062D', - '\uFD61': '\u0633\u0645\u062C', - '\uFD62': '\u0633\u0645\u0645', - '\uFD63': '\u0633\u0645\u0645', - '\uFD64': '\u0635\u062D\u062D', - '\uFD65': '\u0635\u062D\u062D', - '\uFD66': '\u0635\u0645\u0645', - '\uFD67': '\u0634\u062D\u0645', - '\uFD68': '\u0634\u062D\u0645', - '\uFD69': '\u0634\u062C\u064A', - '\uFD6A': '\u0634\u0645\u062E', - '\uFD6B': '\u0634\u0645\u062E', - '\uFD6C': '\u0634\u0645\u0645', - '\uFD6D': '\u0634\u0645\u0645', - '\uFD6E': '\u0636\u062D\u0649', - '\uFD6F': '\u0636\u062E\u0645', - '\uFD70': '\u0636\u062E\u0645', - '\uFD71': '\u0637\u0645\u062D', - '\uFD72': '\u0637\u0645\u062D', - '\uFD73': '\u0637\u0645\u0645', - '\uFD74': '\u0637\u0645\u064A', - '\uFD75': '\u0639\u062C\u0645', - '\uFD76': '\u0639\u0645\u0645', - '\uFD77': '\u0639\u0645\u0645', - '\uFD78': '\u0639\u0645\u0649', - '\uFD79': '\u063A\u0645\u0645', - '\uFD7A': '\u063A\u0645\u064A', - '\uFD7B': '\u063A\u0645\u0649', - '\uFD7C': '\u0641\u062E\u0645', - '\uFD7D': '\u0641\u062E\u0645', - '\uFD7E': '\u0642\u0645\u062D', - '\uFD7F': '\u0642\u0645\u0645', - '\uFD80': '\u0644\u062D\u0645', - '\uFD81': '\u0644\u062D\u064A', - '\uFD82': '\u0644\u062D\u0649', - '\uFD83': '\u0644\u062C\u062C', - '\uFD84': '\u0644\u062C\u062C', - '\uFD85': '\u0644\u062E\u0645', - '\uFD86': '\u0644\u062E\u0645', - '\uFD87': '\u0644\u0645\u062D', - '\uFD88': '\u0644\u0645\u062D', - '\uFD89': '\u0645\u062D\u062C', - '\uFD8A': '\u0645\u062D\u0645', - '\uFD8B': '\u0645\u062D\u064A', - '\uFD8C': '\u0645\u062C\u062D', - '\uFD8D': '\u0645\u062C\u0645', - '\uFD8E': '\u0645\u062E\u062C', - '\uFD8F': '\u0645\u062E\u0645', - '\uFD92': '\u0645\u062C\u062E', - '\uFD93': '\u0647\u0645\u062C', - '\uFD94': '\u0647\u0645\u0645', - '\uFD95': '\u0646\u062D\u0645', - '\uFD96': '\u0646\u062D\u0649', - '\uFD97': '\u0646\u062C\u0645', - '\uFD98': '\u0646\u062C\u0645', - '\uFD99': '\u0646\u062C\u0649', - '\uFD9A': '\u0646\u0645\u064A', - '\uFD9B': '\u0646\u0645\u0649', - '\uFD9C': '\u064A\u0645\u0645', - '\uFD9D': '\u064A\u0645\u0645', - '\uFD9E': '\u0628\u062E\u064A', - '\uFD9F': '\u062A\u062C\u064A', - '\uFDA0': '\u062A\u062C\u0649', - '\uFDA1': '\u062A\u062E\u064A', - '\uFDA2': '\u062A\u062E\u0649', - '\uFDA3': '\u062A\u0645\u064A', - '\uFDA4': '\u062A\u0645\u0649', - '\uFDA5': '\u062C\u0645\u064A', - '\uFDA6': '\u062C\u062D\u0649', - '\uFDA7': '\u062C\u0645\u0649', - '\uFDA8': '\u0633\u062E\u0649', - '\uFDA9': '\u0635\u062D\u064A', - '\uFDAA': '\u0634\u062D\u064A', - '\uFDAB': '\u0636\u062D\u064A', - '\uFDAC': '\u0644\u062C\u064A', - '\uFDAD': '\u0644\u0645\u064A', - '\uFDAE': '\u064A\u062D\u064A', - '\uFDAF': '\u064A\u062C\u064A', - '\uFDB0': '\u064A\u0645\u064A', - '\uFDB1': '\u0645\u0645\u064A', - '\uFDB2': '\u0642\u0645\u064A', - '\uFDB3': '\u0646\u062D\u064A', - '\uFDB4': '\u0642\u0645\u062D', - '\uFDB5': '\u0644\u062D\u0645', - '\uFDB6': '\u0639\u0645\u064A', - '\uFDB7': '\u0643\u0645\u064A', - '\uFDB8': '\u0646\u062C\u062D', - '\uFDB9': '\u0645\u062E\u064A', - '\uFDBA': '\u0644\u062C\u0645', - '\uFDBB': '\u0643\u0645\u0645', - '\uFDBC': '\u0644\u062C\u0645', - '\uFDBD': '\u0646\u062C\u062D', - '\uFDBE': '\u062C\u062D\u064A', - '\uFDBF': '\u062D\u062C\u064A', - '\uFDC0': '\u0645\u062C\u064A', - '\uFDC1': '\u0641\u0645\u064A', - '\uFDC2': '\u0628\u062D\u064A', - '\uFDC3': '\u0643\u0645\u0645', - '\uFDC4': '\u0639\u062C\u0645', - '\uFDC5': '\u0635\u0645\u0645', - '\uFDC6': '\u0633\u062E\u064A', - '\uFDC7': '\u0646\u062C\u064A', - '\uFE49': '\u203E', - '\uFE4A': '\u203E', - '\uFE4B': '\u203E', - '\uFE4C': '\u203E', - '\uFE4D': '\u005F', - '\uFE4E': '\u005F', - '\uFE4F': '\u005F', - '\uFE80': '\u0621', - '\uFE81': '\u0622', - '\uFE82': '\u0622', - '\uFE83': '\u0623', - '\uFE84': '\u0623', - '\uFE85': '\u0624', - '\uFE86': '\u0624', - '\uFE87': '\u0625', - '\uFE88': '\u0625', - '\uFE89': '\u0626', - '\uFE8A': '\u0626', - '\uFE8B': '\u0626', - '\uFE8C': '\u0626', - '\uFE8D': '\u0627', - '\uFE8E': '\u0627', - '\uFE8F': '\u0628', - '\uFE90': '\u0628', - '\uFE91': '\u0628', - '\uFE92': '\u0628', - '\uFE93': '\u0629', - '\uFE94': '\u0629', - '\uFE95': '\u062A', - '\uFE96': '\u062A', - '\uFE97': '\u062A', - '\uFE98': '\u062A', - '\uFE99': '\u062B', - '\uFE9A': '\u062B', - '\uFE9B': '\u062B', - '\uFE9C': '\u062B', - '\uFE9D': '\u062C', - '\uFE9E': '\u062C', - '\uFE9F': '\u062C', - '\uFEA0': '\u062C', - '\uFEA1': '\u062D', - '\uFEA2': '\u062D', - '\uFEA3': '\u062D', - '\uFEA4': '\u062D', - '\uFEA5': '\u062E', - '\uFEA6': '\u062E', - '\uFEA7': '\u062E', - '\uFEA8': '\u062E', - '\uFEA9': '\u062F', - '\uFEAA': '\u062F', - '\uFEAB': '\u0630', - '\uFEAC': '\u0630', - '\uFEAD': '\u0631', - '\uFEAE': '\u0631', - '\uFEAF': '\u0632', - '\uFEB0': '\u0632', - '\uFEB1': '\u0633', - '\uFEB2': '\u0633', - '\uFEB3': '\u0633', - '\uFEB4': '\u0633', - '\uFEB5': '\u0634', - '\uFEB6': '\u0634', - '\uFEB7': '\u0634', - '\uFEB8': '\u0634', - '\uFEB9': '\u0635', - '\uFEBA': '\u0635', - '\uFEBB': '\u0635', - '\uFEBC': '\u0635', - '\uFEBD': '\u0636', - '\uFEBE': '\u0636', - '\uFEBF': '\u0636', - '\uFEC0': '\u0636', - '\uFEC1': '\u0637', - '\uFEC2': '\u0637', - '\uFEC3': '\u0637', - '\uFEC4': '\u0637', - '\uFEC5': '\u0638', - '\uFEC6': '\u0638', - '\uFEC7': '\u0638', - '\uFEC8': '\u0638', - '\uFEC9': '\u0639', - '\uFECA': '\u0639', - '\uFECB': '\u0639', - '\uFECC': '\u0639', - '\uFECD': '\u063A', - '\uFECE': '\u063A', - '\uFECF': '\u063A', - '\uFED0': '\u063A', - '\uFED1': '\u0641', - '\uFED2': '\u0641', - '\uFED3': '\u0641', - '\uFED4': '\u0641', - '\uFED5': '\u0642', - '\uFED6': '\u0642', - '\uFED7': '\u0642', - '\uFED8': '\u0642', - '\uFED9': '\u0643', - '\uFEDA': '\u0643', - '\uFEDB': '\u0643', - '\uFEDC': '\u0643', - '\uFEDD': '\u0644', - '\uFEDE': '\u0644', - '\uFEDF': '\u0644', - '\uFEE0': '\u0644', - '\uFEE1': '\u0645', - '\uFEE2': '\u0645', - '\uFEE3': '\u0645', - '\uFEE4': '\u0645', - '\uFEE5': '\u0646', - '\uFEE6': '\u0646', - '\uFEE7': '\u0646', - '\uFEE8': '\u0646', - '\uFEE9': '\u0647', - '\uFEEA': '\u0647', - '\uFEEB': '\u0647', - '\uFEEC': '\u0647', - '\uFEED': '\u0648', - '\uFEEE': '\u0648', - '\uFEEF': '\u0649', - '\uFEF0': '\u0649', - '\uFEF1': '\u064A', - '\uFEF2': '\u064A', - '\uFEF3': '\u064A', - '\uFEF4': '\u064A', - '\uFEF5': '\u0644\u0622', - '\uFEF6': '\u0644\u0622', - '\uFEF7': '\u0644\u0623', - '\uFEF8': '\u0644\u0623', - '\uFEF9': '\u0644\u0625', - '\uFEFA': '\u0644\u0625', - '\uFEFB': '\u0644\u0627', - '\uFEFC': '\u0644\u0627' -}; - -function reverseIfRtl(chars) { - var charsLength = chars.length; - //reverse an arabic ligature - if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) { - return chars; - } - var s = ''; - for (var ii = charsLength - 1; ii >= 0; ii--) { - s += chars[ii]; - } - return s; -} - -function adjustWidths(properties) { - if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) { - return; - } - // adjusting width to fontMatrix scale - var scale = 0.001 / properties.fontMatrix[0]; - var glyphsWidths = properties.widths; - for (var glyph in glyphsWidths) { - glyphsWidths[glyph] *= scale; - } - properties.defaultWidth *= scale; -} - -function getFontType(type, subtype) { - switch (type) { - case 'Type1': - return subtype === 'Type1C' ? FontType.TYPE1C : FontType.TYPE1; - case 'CIDFontType0': - return subtype === 'CIDFontType0C' ? FontType.CIDFONTTYPE0C : - FontType.CIDFONTTYPE0; - case 'OpenType': - return FontType.OPENTYPE; - case 'TrueType': - return FontType.TRUETYPE; - case 'CIDFontType2': - return FontType.CIDFONTTYPE2; - case 'MMType1': - return FontType.MMTYPE1; - case 'Type0': - return FontType.TYPE0; - default: - return FontType.UNKNOWN; - } -} - -var Glyph = (function GlyphClosure() { - function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, - isSpace) { - this.fontChar = fontChar; - this.unicode = unicode; - this.accent = accent; - this.width = width; - this.vmetric = vmetric; - this.operatorListId = operatorListId; - this.isSpace = isSpace; - } - - Glyph.prototype.matchesForCache = function(fontChar, unicode, accent, width, - vmetric, operatorListId, isSpace) { - return this.fontChar === fontChar && - this.unicode === unicode && - this.accent === accent && - this.width === width && - this.vmetric === vmetric && - this.operatorListId === operatorListId && - this.isSpace === isSpace; - }; - - return Glyph; -})(); - -var ToUnicodeMap = (function ToUnicodeMapClosure() { - function ToUnicodeMap(cmap) { - // The elements of this._map can be integers or strings, depending on how - // |cmap| was created. - this._map = cmap; - } - - ToUnicodeMap.prototype = { - get length() { - return this._map.length; - }, - - forEach: function(callback) { - for (var charCode in this._map) { - callback(charCode, this._map[charCode].charCodeAt(0)); - } - }, - - has: function(i) { - return this._map[i] !== undefined; - }, - - get: function(i) { - return this._map[i]; - }, - - charCodeOf: function(v) { - return this._map.indexOf(v); - } - }; - - return ToUnicodeMap; -})(); - -var IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() { - function IdentityToUnicodeMap(firstChar, lastChar) { - this.firstChar = firstChar; - this.lastChar = lastChar; - } - - IdentityToUnicodeMap.prototype = { - get length() { - return (this.lastChar + 1) - this.firstChar; - }, - - forEach: function (callback) { - for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) { - callback(i, i); - } - }, - - has: function (i) { - return this.firstChar <= i && i <= this.lastChar; - }, - - get: function (i) { - if (this.firstChar <= i && i <= this.lastChar) { - return String.fromCharCode(i); - } - return undefined; - }, - - charCodeOf: function (v) { - error('should not call .charCodeOf'); - } - }; - - return IdentityToUnicodeMap; -})(); - -var OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() { - function writeInt16(dest, offset, num) { - dest[offset] = (num >> 8) & 0xFF; - dest[offset + 1] = num & 0xFF; - } - - function writeInt32(dest, offset, num) { - dest[offset] = (num >> 24) & 0xFF; - dest[offset + 1] = (num >> 16) & 0xFF; - dest[offset + 2] = (num >> 8) & 0xFF; - dest[offset + 3] = num & 0xFF; - } - - function writeData(dest, offset, data) { - var i, ii; - if (data instanceof Uint8Array) { - dest.set(data, offset); - } else if (typeof data === 'string') { - for (i = 0, ii = data.length; i < ii; i++) { - dest[offset++] = data.charCodeAt(i) & 0xFF; - } - } else { - // treating everything else as array - for (i = 0, ii = data.length; i < ii; i++) { - dest[offset++] = data[i] & 0xFF; - } - } - } - - function OpenTypeFileBuilder(sfnt) { - this.sfnt = sfnt; - this.tables = Object.create(null); - } - - OpenTypeFileBuilder.getSearchParams = - function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) { - var maxPower2 = 1, log2 = 0; - while ((maxPower2 ^ entriesCount) > maxPower2) { - maxPower2 <<= 1; - log2++; - } - var searchRange = maxPower2 * entrySize; - return { - range: searchRange, - entry: log2, - rangeShift: entrySize * entriesCount - searchRange - }; - }; - - var OTF_HEADER_SIZE = 12; - var OTF_TABLE_ENTRY_SIZE = 16; - - OpenTypeFileBuilder.prototype = { - toArray: function OpenTypeFileBuilder_toArray() { - var sfnt = this.sfnt; - - // Tables needs to be written by ascendant alphabetic order - var tables = this.tables; - var tablesNames = Object.keys(tables); - tablesNames.sort(); - var numTables = tablesNames.length; - - var i, j, jj, table, tableName; - // layout the tables data - var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE; - var tableOffsets = [offset]; - for (i = 0; i < numTables; i++) { - table = tables[tablesNames[i]]; - var paddedLength = ((table.length + 3) & ~3) >>> 0; - offset += paddedLength; - tableOffsets.push(offset); - } - - var file = new Uint8Array(offset); - // write the table data first (mostly for checksum) - for (i = 0; i < numTables; i++) { - table = tables[tablesNames[i]]; - writeData(file, tableOffsets[i], table); - } - - // sfnt version (4 bytes) - if (sfnt === 'true') { - // Windows hates the Mac TrueType sfnt version number - sfnt = string32(0x00010000); - } - file[0] = sfnt.charCodeAt(0) & 0xFF; - file[1] = sfnt.charCodeAt(1) & 0xFF; - file[2] = sfnt.charCodeAt(2) & 0xFF; - file[3] = sfnt.charCodeAt(3) & 0xFF; - - // numTables (2 bytes) - writeInt16(file, 4, numTables); - - var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16); - - // searchRange (2 bytes) - writeInt16(file, 6, searchParams.range); - // entrySelector (2 bytes) - writeInt16(file, 8, searchParams.entry); - // rangeShift (2 bytes) - writeInt16(file, 10, searchParams.rangeShift); - - offset = OTF_HEADER_SIZE; - // writing table entries - for (i = 0; i < numTables; i++) { - tableName = tablesNames[i]; - file[offset] = tableName.charCodeAt(0) & 0xFF; - file[offset + 1] = tableName.charCodeAt(1) & 0xFF; - file[offset + 2] = tableName.charCodeAt(2) & 0xFF; - file[offset + 3] = tableName.charCodeAt(3) & 0xFF; - - // checksum - var checksum = 0; - for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) { - var quad = (file[j] << 24) + (file[j + 1] << 16) + - (file[j + 2] << 8) + file[j + 3]; - checksum = (checksum + quad) | 0; - } - writeInt32(file, offset + 4, checksum); - - // offset - writeInt32(file, offset + 8, tableOffsets[i]); - // length - writeInt32(file, offset + 12, tables[tableName].length); - - offset += OTF_TABLE_ENTRY_SIZE; - } - return file; - }, - - addTable: function OpenTypeFileBuilder_addTable(tag, data) { - if (tag in this.tables) { - throw new Error('Table ' + tag + ' already exists'); - } - this.tables[tag] = data; - } - }; - - return OpenTypeFileBuilder; -})(); - -// Problematic Unicode characters in the fonts that needs to be moved to avoid -// issues when they are painted on the canvas, e.g. complex-script shaping or -// control/whitespace characters. The ranges are listed in pairs: the first item -// is a code of the first problematic code, the second one is the next -// non-problematic code. The ranges must be in sorted order. -var ProblematicCharRanges = new Int32Array([ - // Control characters. - 0x0000, 0x0020, - 0x007F, 0x00A1, - 0x00AD, 0x00AE, - // Chars that is used in complex-script shaping. - 0x0600, 0x0780, - 0x08A0, 0x10A0, - 0x1780, 0x1800, - // General punctuation chars. - 0x2000, 0x2010, - 0x2011, 0x2012, - 0x2028, 0x2030, - 0x205F, 0x2070, - 0x25CC, 0x25CD, - // Chars that is used in complex-script shaping. - 0xAA60, 0xAA80, - // Specials Unicode block. - 0xFFF0, 0x10000 -]); - -/** - * 'Font' is the class the outside world should use, it encapsulate all the font - * decoding logics whatever type it is (assuming the font type is supported). - * - * For example to read a Type1 font and to attach it to the document: - * var type1Font = new Font("MyFontName", binaryFile, propertiesObject); - * type1Font.bind(); - */ -var Font = (function FontClosure() { - function Font(name, file, properties) { - var charCode, glyphName, fontChar; - - this.name = name; - this.loadedName = properties.loadedName; - this.isType3Font = properties.isType3Font; - this.sizes = []; - - this.glyphCache = {}; - - var names = name.split('+'); - names = names.length > 1 ? names[1] : names[0]; - names = names.split(/[-,_]/g)[0]; - this.isSerifFont = !!(properties.flags & FontFlags.Serif); - this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); - this.isMonospace = !!(properties.flags & FontFlags.FixedPitch); - - var type = properties.type; - var subtype = properties.subtype; - this.type = type; - - this.fallbackName = (this.isMonospace ? 'monospace' : - (this.isSerifFont ? 'serif' : 'sans-serif')); - - this.differences = properties.differences; - this.widths = properties.widths; - this.defaultWidth = properties.defaultWidth; - this.composite = properties.composite; - this.wideChars = properties.wideChars; - this.cMap = properties.cMap; - this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS; - this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; - this.fontMatrix = properties.fontMatrix; - this.bbox = properties.bbox; - - this.toUnicode = properties.toUnicode = this.buildToUnicode(properties); - - this.toFontChar = []; - - if (properties.type === 'Type3') { - for (charCode = 0; charCode < 256; charCode++) { - this.toFontChar[charCode] = (this.differences[charCode] || - properties.defaultEncoding[charCode]); - } - this.fontType = FontType.TYPE3; - return; - } - - this.cidEncoding = properties.cidEncoding; - this.vertical = properties.vertical; - if (this.vertical) { - this.vmetrics = properties.vmetrics; - this.defaultVMetrics = properties.defaultVMetrics; - } - - if (!file || file.isEmpty) { - if (file) { - // Some bad PDF generators will include empty font files, - // attempting to recover by assuming that no file exists. - warn('Font file is empty in "' + name + '" (' + this.loadedName + ')'); - } - - this.missingFile = true; - // The file data is not specified. Trying to fix the font name - // to be used with the canvas.font. - var fontName = name.replace(/[,_]/g, '-'); - var isStandardFont = !!stdFontMap[fontName] || - !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); - fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; - - this.bold = (fontName.search(/bold/gi) !== -1); - this.italic = ((fontName.search(/oblique/gi) !== -1) || - (fontName.search(/italic/gi) !== -1)); - - // Use 'name' instead of 'fontName' here because the original - // name ArialBlack for example will be replaced by Helvetica. - this.black = (name.search(/Black/g) !== -1); - - // if at least one width is present, remeasure all chars when exists - this.remeasure = Object.keys(this.widths).length > 0; - if (isStandardFont && type === 'CIDFontType2' && - properties.cidEncoding.indexOf('Identity-') === 0) { - // Standard fonts might be embedded as CID font without glyph mapping. - // Building one based on GlyphMapForStandardFonts. - var map = []; - for (charCode in GlyphMapForStandardFonts) { - map[+charCode] = GlyphMapForStandardFonts[charCode]; - } - if (/ArialBlack/i.test(name)) { - for (charCode in SupplementalGlyphMapForArialBlack) { - map[+charCode] = SupplementalGlyphMapForArialBlack[charCode]; - } - } - var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap; - if (!isIdentityUnicode) { - this.toUnicode.forEach(function(charCode, unicodeCharCode) { - map[+charCode] = unicodeCharCode; - }); - } - this.toFontChar = map; - this.toUnicode = new ToUnicodeMap(map); - } else if (/Symbol/i.test(fontName)) { - var symbols = Encodings.SymbolSetEncoding; - for (charCode in symbols) { - fontChar = GlyphsUnicode[symbols[charCode]]; - if (!fontChar) { - continue; - } - this.toFontChar[charCode] = fontChar; - } - for (charCode in properties.differences) { - fontChar = GlyphsUnicode[properties.differences[charCode]]; - if (!fontChar) { - continue; - } - this.toFontChar[charCode] = fontChar; - } - } else if (/Dingbats/i.test(fontName)) { - if (/Wingdings/i.test(name)) { - warn('Wingdings font without embedded font file, ' + - 'falling back to the ZapfDingbats encoding.'); - } - var dingbats = Encodings.ZapfDingbatsEncoding; - for (charCode in dingbats) { - fontChar = DingbatsGlyphsUnicode[dingbats[charCode]]; - if (!fontChar) { - continue; - } - this.toFontChar[charCode] = fontChar; - } - for (charCode in properties.differences) { - fontChar = DingbatsGlyphsUnicode[properties.differences[charCode]]; - if (!fontChar) { - continue; - } - this.toFontChar[charCode] = fontChar; - } - } else if (isStandardFont) { - this.toFontChar = []; - for (charCode in properties.defaultEncoding) { - glyphName = (properties.differences[charCode] || - properties.defaultEncoding[charCode]); - this.toFontChar[charCode] = GlyphsUnicode[glyphName]; - } - } else { - var unicodeCharCode, notCidFont = (type.indexOf('CIDFontType') === -1); - this.toUnicode.forEach(function(charCode, unicodeCharCode) { - if (notCidFont) { - glyphName = (properties.differences[charCode] || - properties.defaultEncoding[charCode]); - unicodeCharCode = (GlyphsUnicode[glyphName] || unicodeCharCode); - } - this.toFontChar[charCode] = unicodeCharCode; - }.bind(this)); - } - this.loadedName = fontName.split('-')[0]; - this.loading = false; - this.fontType = getFontType(type, subtype); - return; - } - - // Some fonts might use wrong font types for Type1C or CIDFontType0C - if (subtype === 'Type1C' && (type !== 'Type1' && type !== 'MMType1')) { - // Some TrueType fonts by mistake claim Type1C - if (isTrueTypeFile(file)) { - subtype = 'TrueType'; - } else { - type = 'Type1'; - } - } - if (subtype === 'CIDFontType0C' && type !== 'CIDFontType0') { - type = 'CIDFontType0'; - } - if (subtype === 'OpenType') { - type = 'OpenType'; - } - // Some CIDFontType0C fonts by mistake claim CIDFontType0. - if (type === 'CIDFontType0') { - subtype = isType1File(file) ? 'CIDFontType0' : 'CIDFontType0C'; - } - - var data; - switch (type) { - case 'MMType1': - info('MMType1 font (' + name + '), falling back to Type1.'); - /* falls through */ - case 'Type1': - case 'CIDFontType0': - this.mimetype = 'font/opentype'; - - var cff = (subtype === 'Type1C' || subtype === 'CIDFontType0C') ? - new CFFFont(file, properties) : new Type1Font(name, file, properties); - - adjustWidths(properties); - - // Wrap the CFF data inside an OTF font file - data = this.convert(name, cff, properties); - break; - - case 'OpenType': - case 'TrueType': - case 'CIDFontType2': - this.mimetype = 'font/opentype'; - - // Repair the TrueType file. It is can be damaged in the point of - // view of the sanitizer - data = this.checkAndRepair(name, file, properties); - if (this.isOpenType) { - type = 'OpenType'; - } - break; - - default: - error('Font ' + type + ' is not supported'); - break; - } - - this.data = data; - this.fontType = getFontType(type, subtype); - - // Transfer some properties again that could change during font conversion - this.fontMatrix = properties.fontMatrix; - this.widths = properties.widths; - this.defaultWidth = properties.defaultWidth; - this.encoding = properties.baseEncoding; - this.seacMap = properties.seacMap; - - this.loading = true; - } - - Font.getFontID = (function () { - var ID = 1; - return function Font_getFontID() { - return String(ID++); - }; - })(); - - function int16(b0, b1) { - return (b0 << 8) + b1; - } - - function int32(b0, b1, b2, b3) { - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - } - - function string16(value) { - return String.fromCharCode((value >> 8) & 0xff, value & 0xff); - } - - function safeString16(value) { - // clamp value to the 16-bit int range - value = (value > 0x7FFF ? 0x7FFF : (value < -0x8000 ? -0x8000 : value)); - return String.fromCharCode((value >> 8) & 0xff, value & 0xff); - } - - function isTrueTypeFile(file) { - var header = file.peekBytes(4); - return readUint32(header, 0) === 0x00010000; - } - - function isType1File(file) { - var header = file.peekBytes(2); - // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21). - if (header[0] === 0x25 && header[1] === 0x21) { - return true; - } - // ... obviously some fonts violate that part of the specification, - // please refer to the comment in |Type1Font| below. - if (header[0] === 0x80 && header[1] === 0x01) { // pfb file header. - return true; - } - return false; - } - - /** - * Helper function for |adjustMapping|. - * @return {boolean} - */ - function isProblematicUnicodeLocation(code) { - // Using binary search to find a range start. - var i = 0, j = ProblematicCharRanges.length - 1; - while (i < j) { - var c = (i + j + 1) >> 1; - if (code < ProblematicCharRanges[c]) { - j = c - 1; - } else { - i = c; - } - } - // Even index means code in problematic range. - return !(i & 1); - } - - /** - * Rebuilds the char code to glyph ID map by trying to replace the char codes - * with their unicode value. It also moves char codes that are in known - * problematic locations. - * @return {Object} Two properties: - * 'toFontChar' - maps original char codes(the value that will be read - * from commands such as show text) to the char codes that will be used in the - * font that we build - * 'charCodeToGlyphId' - maps the new font char codes to glyph ids - */ - function adjustMapping(charCodeToGlyphId, properties) { - var toUnicode = properties.toUnicode; - var isSymbolic = !!(properties.flags & FontFlags.Symbolic); - var isIdentityUnicode = - properties.toUnicode instanceof IdentityToUnicodeMap; - var newMap = Object.create(null); - var toFontChar = []; - var usedFontCharCodes = []; - var nextAvailableFontCharCode = PRIVATE_USE_OFFSET_START; - for (var originalCharCode in charCodeToGlyphId) { - originalCharCode |= 0; - var glyphId = charCodeToGlyphId[originalCharCode]; - var fontCharCode = originalCharCode; - // First try to map the value to a unicode position if a non identity map - // was created. - if (!isIdentityUnicode && toUnicode.has(originalCharCode)) { - var unicode = toUnicode.get(fontCharCode); - // TODO: Try to map ligatures to the correct spot. - if (unicode.length === 1) { - fontCharCode = unicode.charCodeAt(0); - } - } - // Try to move control characters, special characters and already mapped - // characters to the private use area since they will not be drawn by - // canvas if left in their current position. Also, move characters if the - // font was symbolic and there is only an identity unicode map since the - // characters probably aren't in the correct position (fixes an issue - // with firefox and thuluthfont). - if ((usedFontCharCodes[fontCharCode] !== undefined || - isProblematicUnicodeLocation(fontCharCode) || - (isSymbolic && isIdentityUnicode)) && - nextAvailableFontCharCode <= PRIVATE_USE_OFFSET_END) { // Room left. - // Loop to try and find a free spot in the private use area. - do { - fontCharCode = nextAvailableFontCharCode++; - - if (SKIP_PRIVATE_USE_RANGE_F000_TO_F01F && fontCharCode === 0xF000) { - fontCharCode = 0xF020; - nextAvailableFontCharCode = fontCharCode + 1; - } - - } while (usedFontCharCodes[fontCharCode] !== undefined && - nextAvailableFontCharCode <= PRIVATE_USE_OFFSET_END); - } - - newMap[fontCharCode] = glyphId; - toFontChar[originalCharCode] = fontCharCode; - usedFontCharCodes[fontCharCode] = true; - } - return { - toFontChar: toFontChar, - charCodeToGlyphId: newMap, - nextAvailableFontCharCode: nextAvailableFontCharCode - }; - } - - function getRanges(glyphs) { - // Array.sort() sorts by characters, not numerically, so convert to an - // array of characters. - var codes = []; - for (var charCode in glyphs) { - codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] }); - } - codes.sort(function fontGetRangesSort(a, b) { - return a.fontCharCode - b.fontCharCode; - }); - - // Split the sorted codes into ranges. - var ranges = []; - var length = codes.length; - for (var n = 0; n < length; ) { - var start = codes[n].fontCharCode; - var codeIndices = [codes[n].glyphId]; - ++n; - var end = start; - while (n < length && end + 1 === codes[n].fontCharCode) { - codeIndices.push(codes[n].glyphId); - ++end; - ++n; - if (end === 0xFFFF) { - break; - } - } - ranges.push([start, end, codeIndices]); - } - - return ranges; - } - - function createCmapTable(glyphs) { - var ranges = getRanges(glyphs); - var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1; - var cmap = '\x00\x00' + // version - string16(numTables) + // numTables - '\x00\x03' + // platformID - '\x00\x01' + // encodingID - string32(4 + numTables * 8); // start of the table record - - var i, ii, j, jj; - for (i = ranges.length - 1; i >= 0; --i) { - if (ranges[i][0] <= 0xFFFF) { break; } - } - var bmpLength = i + 1; - - if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) { - ranges[i][1] = 0xFFFE; - } - var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0; - var segCount = bmpLength + trailingRangesCount; - var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2); - - // Fill up the 4 parallel arrays describing the segments. - var startCount = ''; - var endCount = ''; - var idDeltas = ''; - var idRangeOffsets = ''; - var glyphsIds = ''; - var bias = 0; - - var range, start, end, codes; - for (i = 0, ii = bmpLength; i < ii; i++) { - range = ranges[i]; - start = range[0]; - end = range[1]; - startCount += string16(start); - endCount += string16(end); - codes = range[2]; - var contiguous = true; - for (j = 1, jj = codes.length; j < jj; ++j) { - if (codes[j] !== codes[j - 1] + 1) { - contiguous = false; - break; - } - } - if (!contiguous) { - var offset = (segCount - i) * 2 + bias * 2; - bias += (end - start + 1); - - idDeltas += string16(0); - idRangeOffsets += string16(offset); - - for (j = 0, jj = codes.length; j < jj; ++j) { - glyphsIds += string16(codes[j]); - } - } else { - var startCode = codes[0]; - - idDeltas += string16((startCode - start) & 0xFFFF); - idRangeOffsets += string16(0); - } - } - - if (trailingRangesCount > 0) { - endCount += '\xFF\xFF'; - startCount += '\xFF\xFF'; - idDeltas += '\x00\x01'; - idRangeOffsets += '\x00\x00'; - } - - var format314 = '\x00\x00' + // language - string16(2 * segCount) + - string16(searchParams.range) + - string16(searchParams.entry) + - string16(searchParams.rangeShift) + - endCount + '\x00\x00' + startCount + - idDeltas + idRangeOffsets + glyphsIds; - - var format31012 = ''; - var header31012 = ''; - if (numTables > 1) { - cmap += '\x00\x03' + // platformID - '\x00\x0A' + // encodingID - string32(4 + numTables * 8 + - 4 + format314.length); // start of the table record - format31012 = ''; - for (i = 0, ii = ranges.length; i < ii; i++) { - range = ranges[i]; - start = range[0]; - codes = range[2]; - var code = codes[0]; - for (j = 1, jj = codes.length; j < jj; ++j) { - if (codes[j] !== codes[j - 1] + 1) { - end = range[0] + j - 1; - format31012 += string32(start) + // startCharCode - string32(end) + // endCharCode - string32(code); // startGlyphID - start = end + 1; - code = codes[j]; - } - } - format31012 += string32(start) + // startCharCode - string32(range[1]) + // endCharCode - string32(code); // startGlyphID - } - header31012 = '\x00\x0C' + // format - '\x00\x00' + // reserved - string32(format31012.length + 16) + // length - '\x00\x00\x00\x00' + // language - string32(format31012.length / 12); // nGroups - } - - return cmap + '\x00\x04' + // format - string16(format314.length + 4) + // length - format314 + header31012 + format31012; - } - - function validateOS2Table(os2) { - var stream = new Stream(os2.data); - var version = stream.getUint16(); - // TODO verify all OS/2 tables fields, but currently we validate only those - // that give us issues - stream.getBytes(60); // skipping type, misc sizes, panose, unicode ranges - var selection = stream.getUint16(); - if (version < 4 && (selection & 0x0300)) { - return false; - } - var firstChar = stream.getUint16(); - var lastChar = stream.getUint16(); - if (firstChar > lastChar) { - return false; - } - stream.getBytes(6); // skipping sTypoAscender/Descender/LineGap - var usWinAscent = stream.getUint16(); - if (usWinAscent === 0) { // makes font unreadable by windows - return false; - } - - // OS/2 appears to be valid, resetting some fields - os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0 - return true; - } - - function createOS2Table(properties, charstrings, override) { - override = override || { - unitsPerEm: 0, - yMax: 0, - yMin: 0, - ascent: 0, - descent: 0 - }; - - var ulUnicodeRange1 = 0; - var ulUnicodeRange2 = 0; - var ulUnicodeRange3 = 0; - var ulUnicodeRange4 = 0; - - var firstCharIndex = null; - var lastCharIndex = 0; - - if (charstrings) { - for (var code in charstrings) { - code |= 0; - if (firstCharIndex > code || !firstCharIndex) { - firstCharIndex = code; - } - if (lastCharIndex < code) { - lastCharIndex = code; - } - - var position = getUnicodeRangeFor(code); - if (position < 32) { - ulUnicodeRange1 |= 1 << position; - } else if (position < 64) { - ulUnicodeRange2 |= 1 << position - 32; - } else if (position < 96) { - ulUnicodeRange3 |= 1 << position - 64; - } else if (position < 123) { - ulUnicodeRange4 |= 1 << position - 96; - } else { - error('Unicode ranges Bits > 123 are reserved for internal usage'); - } - } - } else { - // TODO - firstCharIndex = 0; - lastCharIndex = 255; - } - - var bbox = properties.bbox || [0, 0, 0, 0]; - var unitsPerEm = (override.unitsPerEm || - 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0]); - - // if the font units differ to the PDF glyph space units - // then scale up the values - var scale = (properties.ascentScaled ? 1.0 : - unitsPerEm / PDF_GLYPH_SPACE_UNITS); - - var typoAscent = (override.ascent || - Math.round(scale * (properties.ascent || bbox[3]))); - var typoDescent = (override.descent || - Math.round(scale * (properties.descent || bbox[1]))); - if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) { - typoDescent = -typoDescent; // fixing incorrect descent - } - var winAscent = override.yMax || typoAscent; - var winDescent = -override.yMin || -typoDescent; - - return '\x00\x03' + // version - '\x02\x24' + // xAvgCharWidth - '\x01\xF4' + // usWeightClass - '\x00\x05' + // usWidthClass - '\x00\x00' + // fstype (0 to let the font loads via font-face on IE) - '\x02\x8A' + // ySubscriptXSize - '\x02\xBB' + // ySubscriptYSize - '\x00\x00' + // ySubscriptXOffset - '\x00\x8C' + // ySubscriptYOffset - '\x02\x8A' + // ySuperScriptXSize - '\x02\xBB' + // ySuperScriptYSize - '\x00\x00' + // ySuperScriptXOffset - '\x01\xDF' + // ySuperScriptYOffset - '\x00\x31' + // yStrikeOutSize - '\x01\x02' + // yStrikeOutPosition - '\x00\x00' + // sFamilyClass - '\x00\x00\x06' + - String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + - '\x00\x00\x00\x00\x00\x00' + // Panose - string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31) - string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63) - string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95) - string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127) - '\x2A\x32\x31\x2A' + // achVendID - string16(properties.italicAngle ? 1 : 0) + // fsSelection - string16(firstCharIndex || - properties.firstChar) + // usFirstCharIndex - string16(lastCharIndex || properties.lastChar) + // usLastCharIndex - string16(typoAscent) + // sTypoAscender - string16(typoDescent) + // sTypoDescender - '\x00\x64' + // sTypoLineGap (7%-10% of the unitsPerEM value) - string16(winAscent) + // usWinAscent - string16(winDescent) + // usWinDescent - '\x00\x00\x00\x00' + // ulCodePageRange1 (Bits 0-31) - '\x00\x00\x00\x00' + // ulCodePageRange2 (Bits 32-63) - string16(properties.xHeight) + // sxHeight - string16(properties.capHeight) + // sCapHeight - string16(0) + // usDefaultChar - string16(firstCharIndex || properties.firstChar) + // usBreakChar - '\x00\x03'; // usMaxContext - } - - function createPostTable(properties) { - var angle = Math.floor(properties.italicAngle * (Math.pow(2, 16))); - return ('\x00\x03\x00\x00' + // Version number - string32(angle) + // italicAngle - '\x00\x00' + // underlinePosition - '\x00\x00' + // underlineThickness - string32(properties.fixedPitch) + // isFixedPitch - '\x00\x00\x00\x00' + // minMemType42 - '\x00\x00\x00\x00' + // maxMemType42 - '\x00\x00\x00\x00' + // minMemType1 - '\x00\x00\x00\x00'); // maxMemType1 - } - - function createNameTable(name, proto) { - if (!proto) { - proto = [[], []]; // no strings and unicode strings - } - - var strings = [ - proto[0][0] || 'Original licence', // 0.Copyright - proto[0][1] || name, // 1.Font family - proto[0][2] || 'Unknown', // 2.Font subfamily (font weight) - proto[0][3] || 'uniqueID', // 3.Unique ID - proto[0][4] || name, // 4.Full font name - proto[0][5] || 'Version 0.11', // 5.Version - proto[0][6] || '', // 6.Postscript name - proto[0][7] || 'Unknown', // 7.Trademark - proto[0][8] || 'Unknown', // 8.Manufacturer - proto[0][9] || 'Unknown' // 9.Designer - ]; - - // Mac want 1-byte per character strings while Windows want - // 2-bytes per character, so duplicate the names table - var stringsUnicode = []; - var i, ii, j, jj, str; - for (i = 0, ii = strings.length; i < ii; i++) { - str = proto[1][i] || strings[i]; - - var strBufUnicode = []; - for (j = 0, jj = str.length; j < jj; j++) { - strBufUnicode.push(string16(str.charCodeAt(j))); - } - stringsUnicode.push(strBufUnicode.join('')); - } - - var names = [strings, stringsUnicode]; - var platforms = ['\x00\x01', '\x00\x03']; - var encodings = ['\x00\x00', '\x00\x01']; - var languages = ['\x00\x00', '\x04\x09']; - - var namesRecordCount = strings.length * platforms.length; - var nameTable = - '\x00\x00' + // format - string16(namesRecordCount) + // Number of names Record - string16(namesRecordCount * 12 + 6); // Storage - - // Build the name records field - var strOffset = 0; - for (i = 0, ii = platforms.length; i < ii; i++) { - var strs = names[i]; - for (j = 0, jj = strs.length; j < jj; j++) { - str = strs[j]; - var nameRecord = - platforms[i] + // platform ID - encodings[i] + // encoding ID - languages[i] + // language ID - string16(j) + // name ID - string16(str.length) + - string16(strOffset); - nameTable += nameRecord; - strOffset += str.length; - } - } - - nameTable += strings.join('') + stringsUnicode.join(''); - return nameTable; - } - - Font.prototype = { - name: null, - font: null, - mimetype: null, - encoding: null, - get renderer() { - var renderer = FontRendererFactory.create(this); - return shadow(this, 'renderer', renderer); - }, - - exportData: function Font_exportData() { - var data = {}; - for (var i in this) { - if (this.hasOwnProperty(i)) { - data[i] = this[i]; - } - } - return data; - }, - - checkAndRepair: function Font_checkAndRepair(name, font, properties) { - function readTableEntry(file) { - var tag = bytesToString(file.getBytes(4)); - - var checksum = file.getInt32(); - var offset = file.getInt32() >>> 0; - var length = file.getInt32() >>> 0; - - // Read the table associated data - var previousPosition = file.pos; - file.pos = file.start ? file.start : 0; - file.skip(offset); - var data = file.getBytes(length); - file.pos = previousPosition; - - if (tag === 'head') { - // clearing checksum adjustment - data[8] = data[9] = data[10] = data[11] = 0; - data[17] |= 0x20; //Set font optimized for cleartype flag - } - - return { - tag: tag, - checksum: checksum, - length: length, - offset: offset, - data: data - }; - } - - function readOpenTypeHeader(ttf) { - return { - version: bytesToString(ttf.getBytes(4)), - numTables: ttf.getUint16(), - searchRange: ttf.getUint16(), - entrySelector: ttf.getUint16(), - rangeShift: ttf.getUint16() - }; - } - - /** - * Read the appropriate subtable from the cmap according to 9.6.6.4 from - * PDF spec - */ - function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) { - if (!cmap) { - warn('No cmap table available.'); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - var segment; - var start = (font.start ? font.start : 0) + cmap.offset; - font.pos = start; - - var version = font.getUint16(); - var numTables = font.getUint16(); - - var potentialTable; - var canBreak = false; - // There's an order of preference in terms of which cmap subtable to - // use: - // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table - // - symbolic fonts the preference is a 3,0 table then a 1,0 table - // The following takes advantage of the fact that the tables are sorted - // to work. - for (var i = 0; i < numTables; i++) { - var platformId = font.getUint16(); - var encodingId = font.getUint16(); - var offset = font.getInt32() >>> 0; - var useTable = false; - - if (platformId === 0 && encodingId === 0) { - useTable = true; - // Continue the loop since there still may be a higher priority - // table. - } else if (platformId === 1 && encodingId === 0) { - useTable = true; - // Continue the loop since there still may be a higher priority - // table. - } else if (platformId === 3 && encodingId === 1 && - ((!isSymbolicFont && hasEncoding) || !potentialTable)) { - useTable = true; - if (!isSymbolicFont) { - canBreak = true; - } - } else if (isSymbolicFont && platformId === 3 && encodingId === 0) { - useTable = true; - canBreak = true; - } - - if (useTable) { - potentialTable = { - platformId: platformId, - encodingId: encodingId, - offset: offset - }; - } - if (canBreak) { - break; - } - } - - if (potentialTable) { - font.pos = start + potentialTable.offset; - } - if (!potentialTable || font.peekByte() === -1) { - warn('Could not find a preferred cmap table.'); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - var format = font.getUint16(); - var length = font.getUint16(); - var language = font.getUint16(); - - var hasShortCmap = false; - var mappings = []; - var j, glyphId; - - // TODO(mack): refactor this cmap subtable reading logic out - if (format === 0) { - for (j = 0; j < 256; j++) { - var index = font.getByte(); - if (!index) { - continue; - } - mappings.push({ - charCode: j, - glyphId: index - }); - } - hasShortCmap = true; - } else if (format === 4) { - // re-creating the table in format 4 since the encoding - // might be changed - var segCount = (font.getUint16() >> 1); - font.getBytes(6); // skipping range fields - var segIndex, segments = []; - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments.push({ end: font.getUint16() }); - } - font.getUint16(); - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments[segIndex].start = font.getUint16(); - } - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments[segIndex].delta = font.getUint16(); - } - - var offsetsCount = 0; - for (segIndex = 0; segIndex < segCount; segIndex++) { - segment = segments[segIndex]; - var rangeOffset = font.getUint16(); - if (!rangeOffset) { - segment.offsetIndex = -1; - continue; - } - - var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex); - segment.offsetIndex = offsetIndex; - offsetsCount = Math.max(offsetsCount, offsetIndex + - segment.end - segment.start + 1); - } - - var offsets = []; - for (j = 0; j < offsetsCount; j++) { - offsets.push(font.getUint16()); - } - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segment = segments[segIndex]; - start = segment.start; - var end = segment.end; - var delta = segment.delta; - offsetIndex = segment.offsetIndex; - - for (j = start; j <= end; j++) { - if (j === 0xFFFF) { - continue; - } - - glyphId = (offsetIndex < 0 ? - j : offsets[offsetIndex + j - start]); - glyphId = (glyphId + delta) & 0xFFFF; - if (glyphId === 0) { - continue; - } - mappings.push({ - charCode: j, - glyphId: glyphId - }); - } - } - } else if (format === 6) { - // Format 6 is a 2-bytes dense mapping, which means the font data - // lives glue together even if they are pretty far in the unicode - // table. (This looks weird, so I can have missed something), this - // works on Linux but seems to fails on Mac so let's rewrite the - // cmap table to a 3-1-4 style - var firstCode = font.getUint16(); - var entryCount = font.getUint16(); - - for (j = 0; j < entryCount; j++) { - glyphId = font.getUint16(); - var charCode = firstCode + j; - - mappings.push({ - charCode: charCode, - glyphId: glyphId - }); - } - } else { - warn('cmap table has unsupported format: ' + format); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - // removing duplicate entries - mappings.sort(function (a, b) { - return a.charCode - b.charCode; - }); - for (i = 1; i < mappings.length; i++) { - if (mappings[i - 1].charCode === mappings[i].charCode) { - mappings.splice(i, 1); - i--; - } - } - - return { - platformId: potentialTable.platformId, - encodingId: potentialTable.encodingId, - mappings: mappings, - hasShortCmap: hasShortCmap - }; - } - - function sanitizeMetrics(font, header, metrics, numGlyphs) { - if (!header) { - if (metrics) { - metrics.data = null; - } - return; - } - - font.pos = (font.start ? font.start : 0) + header.offset; - font.pos += header.length - 2; - var numOfMetrics = font.getUint16(); - - if (numOfMetrics > numGlyphs) { - info('The numOfMetrics (' + numOfMetrics + ') should not be ' + - 'greater than the numGlyphs (' + numGlyphs + ')'); - // Reduce numOfMetrics if it is greater than numGlyphs - numOfMetrics = numGlyphs; - header.data[34] = (numOfMetrics & 0xff00) >> 8; - header.data[35] = numOfMetrics & 0x00ff; - } - - var numOfSidebearings = numGlyphs - numOfMetrics; - var numMissing = numOfSidebearings - - ((metrics.length - numOfMetrics * 4) >> 1); - - if (numMissing > 0) { - // For each missing glyph, we set both the width and lsb to 0 (zero). - // Since we need to add two properties for each glyph, this explains - // the use of |numMissing * 2| when initializing the typed array. - var entries = new Uint8Array(metrics.length + numMissing * 2); - entries.set(metrics.data); - metrics.data = entries; - } - } - - function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, - hintsValid) { - if (sourceEnd - sourceStart <= 12) { - // glyph with data less than 12 is invalid one - return 0; - } - var glyf = source.subarray(sourceStart, sourceEnd); - var contoursCount = (glyf[0] << 8) | glyf[1]; - if (contoursCount & 0x8000) { - // complex glyph, writing as is - dest.set(glyf, destStart); - return glyf.length; - } - - var i, j = 10, flagsCount = 0; - for (i = 0; i < contoursCount; i++) { - var endPoint = (glyf[j] << 8) | glyf[j + 1]; - flagsCount = endPoint + 1; - j += 2; - } - // skipping instructions - var instructionsStart = j; - var instructionsLength = (glyf[j] << 8) | glyf[j + 1]; - j += 2 + instructionsLength; - var instructionsEnd = j; - // validating flags - var coordinatesLength = 0; - for (i = 0; i < flagsCount; i++) { - var flag = glyf[j++]; - if (flag & 0xC0) { - // reserved flags must be zero, cleaning up - glyf[j - 1] = flag & 0x3F; - } - var xyLength = ((flag & 2) ? 1 : (flag & 16) ? 0 : 2) + - ((flag & 4) ? 1 : (flag & 32) ? 0 : 2); - coordinatesLength += xyLength; - if (flag & 8) { - var repeat = glyf[j++]; - i += repeat; - coordinatesLength += repeat * xyLength; - } - } - // glyph without coordinates will be rejected - if (coordinatesLength === 0) { - return 0; - } - var glyphDataLength = j + coordinatesLength; - if (glyphDataLength > glyf.length) { - // not enough data for coordinates - return 0; - } - if (!hintsValid && instructionsLength > 0) { - dest.set(glyf.subarray(0, instructionsStart), destStart); - dest.set([0, 0], destStart + instructionsStart); - dest.set(glyf.subarray(instructionsEnd, glyphDataLength), - destStart + instructionsStart + 2); - glyphDataLength -= instructionsLength; - if (glyf.length - glyphDataLength > 3) { - glyphDataLength = (glyphDataLength + 3) & ~3; - } - return glyphDataLength; - } - if (glyf.length - glyphDataLength > 3) { - // truncating and aligning to 4 bytes the long glyph data - glyphDataLength = (glyphDataLength + 3) & ~3; - dest.set(glyf.subarray(0, glyphDataLength), destStart); - return glyphDataLength; - } - // glyph data is fine - dest.set(glyf, destStart); - return glyf.length; - } - - function sanitizeHead(head, numGlyphs, locaLength) { - var data = head.data; - - // Validate version: - // Should always be 0x00010000 - var version = int32(data[0], data[1], data[2], data[3]); - if (version >> 16 !== 1) { - info('Attempting to fix invalid version in head table: ' + version); - data[0] = 0; - data[1] = 1; - data[2] = 0; - data[3] = 0; - } - - var indexToLocFormat = int16(data[50], data[51]); - if (indexToLocFormat < 0 || indexToLocFormat > 1) { - info('Attempting to fix invalid indexToLocFormat in head table: ' + - indexToLocFormat); - - // The value of indexToLocFormat should be 0 if the loca table - // consists of short offsets, and should be 1 if the loca table - // consists of long offsets. - // - // The number of entries in the loca table should be numGlyphs + 1. - // - // Using this information, we can work backwards to deduce if the - // size of each offset in the loca table, and thus figure out the - // appropriate value for indexToLocFormat. - - var numGlyphsPlusOne = numGlyphs + 1; - if (locaLength === numGlyphsPlusOne << 1) { - // 0x0000 indicates the loca table consists of short offsets - data[50] = 0; - data[51] = 0; - } else if (locaLength === numGlyphsPlusOne << 2) { - // 0x0001 indicates the loca table consists of long offsets - data[50] = 0; - data[51] = 1; - } else { - warn('Could not fix indexToLocFormat: ' + indexToLocFormat); - } - } - } - - function sanitizeGlyphLocations(loca, glyf, numGlyphs, - isGlyphLocationsLong, hintsValid, - dupFirstEntry) { - var itemSize, itemDecode, itemEncode; - if (isGlyphLocationsLong) { - itemSize = 4; - itemDecode = function fontItemDecodeLong(data, offset) { - return (data[offset] << 24) | (data[offset + 1] << 16) | - (data[offset + 2] << 8) | data[offset + 3]; - }; - itemEncode = function fontItemEncodeLong(data, offset, value) { - data[offset] = (value >>> 24) & 0xFF; - data[offset + 1] = (value >> 16) & 0xFF; - data[offset + 2] = (value >> 8) & 0xFF; - data[offset + 3] = value & 0xFF; - }; - } else { - itemSize = 2; - itemDecode = function fontItemDecode(data, offset) { - return (data[offset] << 9) | (data[offset + 1] << 1); - }; - itemEncode = function fontItemEncode(data, offset, value) { - data[offset] = (value >> 9) & 0xFF; - data[offset + 1] = (value >> 1) & 0xFF; - }; - } - var locaData = loca.data; - var locaDataSize = itemSize * (1 + numGlyphs); - // is loca.data too short or long? - if (locaData.length !== locaDataSize) { - locaData = new Uint8Array(locaDataSize); - locaData.set(loca.data.subarray(0, locaDataSize)); - loca.data = locaData; - } - // removing the invalid glyphs - var oldGlyfData = glyf.data; - var oldGlyfDataLength = oldGlyfData.length; - var newGlyfData = new Uint8Array(oldGlyfDataLength); - var startOffset = itemDecode(locaData, 0); - var writeOffset = 0; - var missingGlyphData = {}; - itemEncode(locaData, 0, writeOffset); - var i, j; - for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { - var endOffset = itemDecode(locaData, j); - if (endOffset > oldGlyfDataLength && - ((oldGlyfDataLength + 3) & ~3) === endOffset) { - // Aspose breaks fonts by aligning the glyphs to the qword, but not - // the glyf table size, which makes last glyph out of range. - endOffset = oldGlyfDataLength; - } - if (endOffset > oldGlyfDataLength) { - // glyph end offset points outside glyf data, rejecting the glyph - itemEncode(locaData, j, writeOffset); - startOffset = endOffset; - continue; - } - - if (startOffset === endOffset) { - missingGlyphData[i] = true; - } - - var newLength = sanitizeGlyph(oldGlyfData, startOffset, endOffset, - newGlyfData, writeOffset, hintsValid); - writeOffset += newLength; - itemEncode(locaData, j, writeOffset); - startOffset = endOffset; - } - - if (writeOffset === 0) { - // glyf table cannot be empty -- redoing the glyf and loca tables - // to have single glyph with one point - var simpleGlyph = new Uint8Array( - [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]); - for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { - itemEncode(locaData, j, simpleGlyph.length); - } - glyf.data = simpleGlyph; - return missingGlyphData; - } - - if (dupFirstEntry) { - var firstEntryLength = itemDecode(locaData, itemSize); - if (newGlyfData.length > firstEntryLength + writeOffset) { - glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset); - } else { - glyf.data = new Uint8Array(firstEntryLength + writeOffset); - glyf.data.set(newGlyfData.subarray(0, writeOffset)); - } - glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset); - itemEncode(loca.data, locaData.length - itemSize, - writeOffset + firstEntryLength); - } else { - glyf.data = newGlyfData.subarray(0, writeOffset); - } - return missingGlyphData; - } - - function readPostScriptTable(post, properties, maxpNumGlyphs) { - var start = (font.start ? font.start : 0) + post.offset; - font.pos = start; - - var length = post.length, end = start + length; - var version = font.getInt32(); - // skip rest to the tables - font.getBytes(28); - - var glyphNames; - var valid = true; - var i; - - switch (version) { - case 0x00010000: - glyphNames = MacStandardGlyphOrdering; - break; - case 0x00020000: - var numGlyphs = font.getUint16(); - if (numGlyphs !== maxpNumGlyphs) { - valid = false; - break; - } - var glyphNameIndexes = []; - for (i = 0; i < numGlyphs; ++i) { - var index = font.getUint16(); - if (index >= 32768) { - valid = false; - break; - } - glyphNameIndexes.push(index); - } - if (!valid) { - break; - } - var customNames = []; - var strBuf = []; - while (font.pos < end) { - var stringLength = font.getByte(); - strBuf.length = stringLength; - for (i = 0; i < stringLength; ++i) { - strBuf[i] = String.fromCharCode(font.getByte()); - } - customNames.push(strBuf.join('')); - } - glyphNames = []; - for (i = 0; i < numGlyphs; ++i) { - var j = glyphNameIndexes[i]; - if (j < 258) { - glyphNames.push(MacStandardGlyphOrdering[j]); - continue; - } - glyphNames.push(customNames[j - 258]); - } - break; - case 0x00030000: - break; - default: - warn('Unknown/unsupported post table version ' + version); - valid = false; - if (properties.defaultEncoding) { - glyphNames = properties.defaultEncoding; - } - break; - } - properties.glyphNames = glyphNames; - return valid; - } - - function readNameTable(nameTable) { - var start = (font.start ? font.start : 0) + nameTable.offset; - font.pos = start; - - var names = [[], []]; - var length = nameTable.length, end = start + length; - var format = font.getUint16(); - var FORMAT_0_HEADER_LENGTH = 6; - if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) { - // unsupported name table format or table "too" small - return names; - } - var numRecords = font.getUint16(); - var stringsStart = font.getUint16(); - var records = []; - var NAME_RECORD_LENGTH = 12; - var i, ii; - - for (i = 0; i < numRecords && - font.pos + NAME_RECORD_LENGTH <= end; i++) { - var r = { - platform: font.getUint16(), - encoding: font.getUint16(), - language: font.getUint16(), - name: font.getUint16(), - length: font.getUint16(), - offset: font.getUint16() - }; - // using only Macintosh and Windows platform/encoding names - if ((r.platform === 1 && r.encoding === 0 && r.language === 0) || - (r.platform === 3 && r.encoding === 1 && r.language === 0x409)) { - records.push(r); - } - } - for (i = 0, ii = records.length; i < ii; i++) { - var record = records[i]; - var pos = start + stringsStart + record.offset; - if (pos + record.length > end) { - continue; // outside of name table, ignoring - } - font.pos = pos; - var nameIndex = record.name; - if (record.encoding) { - // unicode - var str = ''; - for (var j = 0, jj = record.length; j < jj; j += 2) { - str += String.fromCharCode(font.getUint16()); - } - names[1][nameIndex] = str; - } else { - names[0][nameIndex] = bytesToString(font.getBytes(record.length)); - } - } - return names; - } - - var TTOpsStackDeltas = [ - 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, - -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, - 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, - 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, - 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, - -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, - -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, - -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2]; - // 0xC0-DF == -1 and 0xE0-FF == -2 - - function sanitizeTTProgram(table, ttContext) { - var data = table.data; - var i = 0, j, n, b, funcId, pc, lastEndf = 0, lastDeff = 0; - var stack = []; - var callstack = []; - var functionsCalled = []; - var tooComplexToFollowFunctions = - ttContext.tooComplexToFollowFunctions; - var inFDEF = false, ifLevel = 0, inELSE = 0; - for (var ii = data.length; i < ii;) { - var op = data[i++]; - // The TrueType instruction set docs can be found at - // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html - if (op === 0x40) { // NPUSHB - pushes n bytes - n = data[i++]; - if (inFDEF || inELSE) { - i += n; - } else { - for (j = 0; j < n; j++) { - stack.push(data[i++]); - } - } - } else if (op === 0x41) { // NPUSHW - pushes n words - n = data[i++]; - if (inFDEF || inELSE) { - i += n * 2; - } else { - for (j = 0; j < n; j++) { - b = data[i++]; - stack.push((b << 8) | data[i++]); - } - } - } else if ((op & 0xF8) === 0xB0) { // PUSHB - pushes bytes - n = op - 0xB0 + 1; - if (inFDEF || inELSE) { - i += n; - } else { - for (j = 0; j < n; j++) { - stack.push(data[i++]); - } - } - } else if ((op & 0xF8) === 0xB8) { // PUSHW - pushes words - n = op - 0xB8 + 1; - if (inFDEF || inELSE) { - i += n * 2; - } else { - for (j = 0; j < n; j++) { - b = data[i++]; - stack.push((b << 8) | data[i++]); - } - } - } else if (op === 0x2B && !tooComplexToFollowFunctions) { // CALL - if (!inFDEF && !inELSE) { - // collecting inforamtion about which functions are used - funcId = stack[stack.length - 1]; - ttContext.functionsUsed[funcId] = true; - if (funcId in ttContext.functionsStackDeltas) { - stack.length += ttContext.functionsStackDeltas[funcId]; - } else if (funcId in ttContext.functionsDefined && - functionsCalled.indexOf(funcId) < 0) { - callstack.push({data: data, i: i, stackTop: stack.length - 1}); - functionsCalled.push(funcId); - pc = ttContext.functionsDefined[funcId]; - if (!pc) { - warn('TT: CALL non-existent function'); - ttContext.hintsValid = false; - return; - } - data = pc.data; - i = pc.i; - } - } - } else if (op === 0x2C && !tooComplexToFollowFunctions) { // FDEF - if (inFDEF || inELSE) { - warn('TT: nested FDEFs not allowed'); - tooComplexToFollowFunctions = true; - } - inFDEF = true; - // collecting inforamtion about which functions are defined - lastDeff = i; - funcId = stack.pop(); - ttContext.functionsDefined[funcId] = {data: data, i: i}; - } else if (op === 0x2D) { // ENDF - end of function - if (inFDEF) { - inFDEF = false; - lastEndf = i; - } else { - pc = callstack.pop(); - if (!pc) { - warn('TT: ENDF bad stack'); - ttContext.hintsValid = false; - return; - } - funcId = functionsCalled.pop(); - data = pc.data; - i = pc.i; - ttContext.functionsStackDeltas[funcId] = - stack.length - pc.stackTop; - } - } else if (op === 0x89) { // IDEF - instruction definition - if (inFDEF || inELSE) { - warn('TT: nested IDEFs not allowed'); - tooComplexToFollowFunctions = true; - } - inFDEF = true; - // recording it as a function to track ENDF - lastDeff = i; - } else if (op === 0x58) { // IF - ++ifLevel; - } else if (op === 0x1B) { // ELSE - inELSE = ifLevel; - } else if (op === 0x59) { // EIF - if (inELSE === ifLevel) { - inELSE = 0; - } - --ifLevel; - } else if (op === 0x1C) { // JMPR - if (!inFDEF && !inELSE) { - var offset = stack[stack.length - 1]; - // only jumping forward to prevent infinite loop - if (offset > 0) { - i += offset - 1; - } - } - } - // Adjusting stack not extactly, but just enough to get function id - if (!inFDEF && !inELSE) { - var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] : - op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0; - if (op >= 0x71 && op <= 0x75) { - n = stack.pop(); - if (n === n) { - stackDelta = -n * 2; - } - } - while (stackDelta < 0 && stack.length > 0) { - stack.pop(); - stackDelta++; - } - while (stackDelta > 0) { - stack.push(NaN); // pushing any number into stack - stackDelta--; - } - } - } - ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions; - var content = [data]; - if (i > data.length) { - content.push(new Uint8Array(i - data.length)); - } - if (lastDeff > lastEndf) { - warn('TT: complementing a missing function tail'); - // new function definition started, but not finished - // complete function by [CLEAR, ENDF] - content.push(new Uint8Array([0x22, 0x2D])); - } - foldTTTable(table, content); - } - - function checkInvalidFunctions(ttContext, maxFunctionDefs) { - if (ttContext.tooComplexToFollowFunctions) { - return; - } - if (ttContext.functionsDefined.length > maxFunctionDefs) { - warn('TT: more functions defined than expected'); - ttContext.hintsValid = false; - return; - } - for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) { - if (j > maxFunctionDefs) { - warn('TT: invalid function id: ' + j); - ttContext.hintsValid = false; - return; - } - if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) { - warn('TT: undefined function: ' + j); - ttContext.hintsValid = false; - return; - } - } - } - - function foldTTTable(table, content) { - if (content.length > 1) { - // concatenating the content items - var newLength = 0; - var j, jj; - for (j = 0, jj = content.length; j < jj; j++) { - newLength += content[j].length; - } - newLength = (newLength + 3) & ~3; - var result = new Uint8Array(newLength); - var pos = 0; - for (j = 0, jj = content.length; j < jj; j++) { - result.set(content[j], pos); - pos += content[j].length; - } - table.data = result; - table.length = newLength; - } - } - - function sanitizeTTPrograms(fpgm, prep, cvt) { - var ttContext = { - functionsDefined: [], - functionsUsed: [], - functionsStackDeltas: [], - tooComplexToFollowFunctions: false, - hintsValid: true - }; - if (fpgm) { - sanitizeTTProgram(fpgm, ttContext); - } - if (prep) { - sanitizeTTProgram(prep, ttContext); - } - if (fpgm) { - checkInvalidFunctions(ttContext, maxFunctionDefs); - } - if (cvt && (cvt.length & 1)) { - var cvtData = new Uint8Array(cvt.length + 1); - cvtData.set(cvt.data); - cvt.data = cvtData; - } - return ttContext.hintsValid; - } - - // The following steps modify the original font data, making copy - font = new Stream(new Uint8Array(font.getBytes())); - - var VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp', - 'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF ']; - - var header = readOpenTypeHeader(font); - var numTables = header.numTables; - var cff, cffFile; - - var tables = { 'OS/2': null, cmap: null, head: null, hhea: null, - hmtx: null, maxp: null, name: null, post: null }; - var table; - for (var i = 0; i < numTables; i++) { - table = readTableEntry(font); - if (VALID_TABLES.indexOf(table.tag) < 0) { - continue; // skipping table if it's not a required or optional table - } - if (table.length === 0) { - continue; // skipping empty tables - } - tables[table.tag] = table; - } - - var isTrueType = !tables['CFF ']; - if (!isTrueType) { - // OpenType font - if ((header.version === 'OTTO' && properties.type !== 'CIDFontType2') || - !tables.head || !tables.hhea || !tables.maxp || !tables.post) { - // no major tables: throwing everything at CFFFont - cffFile = new Stream(tables['CFF '].data); - cff = new CFFFont(cffFile, properties); - - return this.convert(name, cff, properties); - } - - delete tables.glyf; - delete tables.loca; - delete tables.fpgm; - delete tables.prep; - delete tables['cvt ']; - this.isOpenType = true; - } else { - if (!tables.glyf || !tables.loca) { - error('Required "glyf" or "loca" tables are not found'); - } - this.isOpenType = false; - } - - if (!tables.maxp) { - error('Required "maxp" table is not found'); - } - - font.pos = (font.start || 0) + tables.maxp.offset; - var version = font.getInt32(); - var numGlyphs = font.getUint16(); - var maxFunctionDefs = 0; - if (version >= 0x00010000 && tables.maxp.length >= 22) { - // maxZones can be invalid - font.pos += 8; - var maxZones = font.getUint16(); - if (maxZones > 2) { // reset to 2 if font has invalid maxZones - tables.maxp.data[14] = 0; - tables.maxp.data[15] = 2; - } - font.pos += 4; - maxFunctionDefs = font.getUint16(); - } - - var dupFirstEntry = false; - if (properties.type === 'CIDFontType2' && properties.toUnicode && - properties.toUnicode.get(0) > '\u0000') { - // oracle's defect (see 3427), duplicating first entry - dupFirstEntry = true; - numGlyphs++; - tables.maxp.data[4] = numGlyphs >> 8; - tables.maxp.data[5] = numGlyphs & 255; - } - - var hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, - tables['cvt '], maxFunctionDefs); - if (!hintsValid) { - delete tables.fpgm; - delete tables.prep; - delete tables['cvt ']; - } - - // Ensure the hmtx table contains the advance width and - // sidebearings information for numGlyphs in the maxp table - sanitizeMetrics(font, tables.hhea, tables.hmtx, numGlyphs); - - if (!tables.head) { - error('Required "head" table is not found'); - } - - sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0); - - var missingGlyphs = {}; - if (isTrueType) { - var isGlyphLocationsLong = int16(tables.head.data[50], - tables.head.data[51]); - missingGlyphs = sanitizeGlyphLocations(tables.loca, tables.glyf, - numGlyphs, isGlyphLocationsLong, - hintsValid, dupFirstEntry); - } - - if (!tables.hhea) { - error('Required "hhea" table is not found'); - } - - // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth - // Sometimes it's 0. That needs to be fixed - if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) { - tables.hhea.data[10] = 0xFF; - tables.hhea.data[11] = 0xFF; - } - - // Extract some more font properties from the OpenType head and - // hhea tables; yMin and descent value are always negative. - var metricsOverride = { - unitsPerEm: int16(tables.head.data[18], tables.head.data[19]), - yMax: int16(tables.head.data[42], tables.head.data[43]), - yMin: int16(tables.head.data[38], tables.head.data[39]) - 0x10000, - ascent: int16(tables.hhea.data[4], tables.hhea.data[5]), - descent: int16(tables.hhea.data[6], tables.hhea.data[7]) - 0x10000 - }; - - // PDF FontDescriptor metrics lie -- using data from actual font. - this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm; - this.descent = metricsOverride.descent / metricsOverride.unitsPerEm; - - // The 'post' table has glyphs names. - if (tables.post) { - var valid = readPostScriptTable(tables.post, properties, numGlyphs); - if (!valid) { - tables.post = null; - } - } - - var charCodeToGlyphId = [], charCode; - var toUnicode = properties.toUnicode, widths = properties.widths; - var skipToUnicode = (toUnicode instanceof IdentityToUnicodeMap || - toUnicode.length === 0x10000); - - // Helper function to try to skip mapping of empty glyphs. - // Note: In some cases, just relying on the glyph data doesn't work, - // hence we also use a few heuristics to fix various PDF files. - function hasGlyph(glyphId, charCode, widthCode) { - if (!missingGlyphs[glyphId]) { - return true; - } - if (!skipToUnicode && charCode >= 0 && toUnicode.has(charCode)) { - return true; - } - if (widths && widthCode >= 0 && isNum(widths[widthCode])) { - return true; - } - return false; - } - - if (properties.type === 'CIDFontType2') { - var cidToGidMap = properties.cidToGidMap || []; - var isCidToGidMapEmpty = cidToGidMap.length === 0; - - properties.cMap.forEach(function(charCode, cid) { - assert(cid <= 0xffff, 'Max size of CID is 65,535'); - var glyphId = -1; - if (isCidToGidMapEmpty) { - glyphId = charCode; - } else if (cidToGidMap[cid] !== undefined) { - glyphId = cidToGidMap[cid]; - } - - if (glyphId >= 0 && glyphId < numGlyphs && - hasGlyph(glyphId, charCode, cid)) { - charCodeToGlyphId[charCode] = glyphId; - } - }); - if (dupFirstEntry) { - charCodeToGlyphId[0] = numGlyphs - 1; - } - } else { - // Most of the following logic in this code branch is based on the - // 9.6.6.4 of the PDF spec. - var hasEncoding = - properties.differences.length > 0 || !!properties.baseEncodingName; - var cmapTable = - readCmapTable(tables.cmap, font, this.isSymbolicFont, hasEncoding); - var cmapPlatformId = cmapTable.platformId; - var cmapEncodingId = cmapTable.encodingId; - var cmapMappings = cmapTable.mappings; - var cmapMappingsLength = cmapMappings.length; - - // The spec seems to imply that if the font is symbolic the encoding - // should be ignored, this doesn't appear to work for 'preistabelle.pdf' - // where the the font is symbolic and it has an encoding. - if (hasEncoding && - (cmapPlatformId === 3 && cmapEncodingId === 1 || - cmapPlatformId === 1 && cmapEncodingId === 0) || - (cmapPlatformId === -1 && cmapEncodingId === -1 && // Temporary hack - !!Encodings[properties.baseEncodingName])) { // Temporary hack - // When no preferred cmap table was found and |baseEncodingName| is - // one of the predefined encodings, we seem to obtain a better - // |charCodeToGlyphId| map from the code below (fixes bug 1057544). - // TODO: Note that this is a hack which should be removed as soon as - // we have proper support for more exotic cmap tables. - - var baseEncoding = []; - if (properties.baseEncodingName === 'MacRomanEncoding' || - properties.baseEncodingName === 'WinAnsiEncoding') { - baseEncoding = Encodings[properties.baseEncodingName]; - } - for (charCode = 0; charCode < 256; charCode++) { - var glyphName; - if (this.differences && charCode in this.differences) { - glyphName = this.differences[charCode]; - } else if (charCode in baseEncoding && - baseEncoding[charCode] !== '') { - glyphName = baseEncoding[charCode]; - } else { - glyphName = Encodings.StandardEncoding[charCode]; - } - if (!glyphName) { - continue; - } - var unicodeOrCharCode, isUnicode = false; - if (cmapPlatformId === 3 && cmapEncodingId === 1) { - unicodeOrCharCode = GlyphsUnicode[glyphName]; - isUnicode = true; - } else if (cmapPlatformId === 1 && cmapEncodingId === 0) { - // TODO: the encoding needs to be updated with mac os table. - unicodeOrCharCode = Encodings.MacRomanEncoding.indexOf(glyphName); - } - - var found = false; - for (i = 0; i < cmapMappingsLength; ++i) { - if (cmapMappings[i].charCode !== unicodeOrCharCode) { - continue; - } - var code = isUnicode ? charCode : unicodeOrCharCode; - if (hasGlyph(cmapMappings[i].glyphId, code, -1)) { - charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; - found = true; - break; - } - } - if (!found && properties.glyphNames) { - // Try to map using the post table. - var glyphId = properties.glyphNames.indexOf(glyphName); - if (glyphId > 0 && hasGlyph(glyphId, -1, -1)) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; // notdef - } - } - } - } else if (cmapPlatformId === 0 && cmapEncodingId === 0) { - // Default Unicode semantics, use the charcodes as is. - for (i = 0; i < cmapMappingsLength; ++i) { - charCodeToGlyphId[cmapMappings[i].charCode] = - cmapMappings[i].glyphId; - } - } else { - // For (3, 0) cmap tables: - // The charcode key being stored in charCodeToGlyphId is the lower - // byte of the two-byte charcodes of the cmap table since according to - // the spec: 'each byte from the string shall be prepended with the - // high byte of the range [of charcodes in the cmap table], to form - // a two-byte character, which shall be used to select the - // associated glyph description from the subtable'. - // - // For (1, 0) cmap tables: - // 'single bytes from the string shall be used to look up the - // associated glyph descriptions from the subtable'. This means - // charcodes in the cmap will be single bytes, so no-op since - // glyph.charCode & 0xFF === glyph.charCode - for (i = 0; i < cmapMappingsLength; ++i) { - charCode = cmapMappings[i].charCode & 0xFF; - charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; - } - } - } - - if (charCodeToGlyphId.length === 0) { - // defines at least one glyph - charCodeToGlyphId[0] = 0; - } - - // Converting glyphs and ids into font's cmap table - var newMapping = adjustMapping(charCodeToGlyphId, properties); - this.toFontChar = newMapping.toFontChar; - tables.cmap = { - tag: 'cmap', - data: createCmapTable(newMapping.charCodeToGlyphId) - }; - - if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) { - tables['OS/2'] = { - tag: 'OS/2', - data: createOS2Table(properties, newMapping.charCodeToGlyphId, - metricsOverride) - }; - } - - // Rewrite the 'post' table if needed - if (!tables.post) { - tables.post = { - tag: 'post', - data: createPostTable(properties) - }; - } - - if (!isTrueType) { - try { - // Trying to repair CFF file - cffFile = new Stream(tables['CFF '].data); - var parser = new CFFParser(cffFile, properties); - cff = parser.parse(); - var compiler = new CFFCompiler(cff); - tables['CFF '].data = compiler.compile(); - } catch (e) { - warn('Failed to compile font ' + properties.loadedName); - } - } - - // Re-creating 'name' table - if (!tables.name) { - tables.name = { - tag: 'name', - data: createNameTable(this.name) - }; - } else { - // ... using existing 'name' table as prototype - var namePrototype = readNameTable(tables.name); - tables.name.data = createNameTable(name, namePrototype); - } - - var builder = new OpenTypeFileBuilder(header.version); - for (var tableTag in tables) { - builder.addTable(tableTag, tables[tableTag].data); - } - return builder.toArray(); - }, - - convert: function Font_convert(fontName, font, properties) { - // TODO: Check the charstring widths to determine this. - properties.fixedPitch = false; - - var mapping = font.getGlyphMapping(properties); - var newMapping = adjustMapping(mapping, properties); - this.toFontChar = newMapping.toFontChar; - var numGlyphs = font.numGlyphs; - - function getCharCodes(charCodeToGlyphId, glyphId) { - var charCodes = null; - for (var charCode in charCodeToGlyphId) { - if (glyphId === charCodeToGlyphId[charCode]) { - if (!charCodes) { - charCodes = []; - } - charCodes.push(charCode | 0); - } - } - return charCodes; - } - - function createCharCode(charCodeToGlyphId, glyphId) { - for (var charCode in charCodeToGlyphId) { - if (glyphId === charCodeToGlyphId[charCode]) { - return charCode | 0; - } - } - newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = - glyphId; - return newMapping.nextAvailableFontCharCode++; - } - - var seacs = font.seacs; - if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) { - var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX; - var charset = font.getCharset(); - var seacMap = Object.create(null); - for (var glyphId in seacs) { - glyphId |= 0; - var seac = seacs[glyphId]; - var baseGlyphName = Encodings.StandardEncoding[seac[2]]; - var accentGlyphName = Encodings.StandardEncoding[seac[3]]; - var baseGlyphId = charset.indexOf(baseGlyphName); - var accentGlyphId = charset.indexOf(accentGlyphName); - if (baseGlyphId < 0 || accentGlyphId < 0) { - continue; - } - var accentOffset = { - x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4], - y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5] - }; - - var charCodes = getCharCodes(mapping, glyphId); - if (!charCodes) { - // There's no point in mapping it if the char code was never mapped - // to begin with. - continue; - } - for (var i = 0, ii = charCodes.length; i < ii; i++) { - var charCode = charCodes[i]; - // Find a fontCharCode that maps to the base and accent glyphs. - // If one doesn't exists, create it. - var charCodeToGlyphId = newMapping.charCodeToGlyphId; - var baseFontCharCode = createCharCode(charCodeToGlyphId, - baseGlyphId); - var accentFontCharCode = createCharCode(charCodeToGlyphId, - accentGlyphId); - seacMap[charCode] = { - baseFontCharCode: baseFontCharCode, - accentFontCharCode: accentFontCharCode, - accentOffset: accentOffset - }; - } - } - properties.seacMap = seacMap; - } - - var unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0]; - - var builder = new OpenTypeFileBuilder('\x4F\x54\x54\x4F'); - // PostScript Font Program - builder.addTable('CFF ', font.data); - // OS/2 and Windows Specific metrics - builder.addTable('OS/2', createOS2Table(properties, - newMapping.charCodeToGlyphId)); - // Character to glyphs mapping - builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId)); - // Font header - builder.addTable('head', - '\x00\x01\x00\x00' + // Version number - '\x00\x00\x10\x00' + // fontRevision - '\x00\x00\x00\x00' + // checksumAdjustement - '\x5F\x0F\x3C\xF5' + // magicNumber - '\x00\x00' + // Flags - safeString16(unitsPerEm) + // unitsPerEM - '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // creation date - '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + // modifification date - '\x00\x00' + // xMin - safeString16(properties.descent) + // yMin - '\x0F\xFF' + // xMax - safeString16(properties.ascent) + // yMax - string16(properties.italicAngle ? 2 : 0) + // macStyle - '\x00\x11' + // lowestRecPPEM - '\x00\x00' + // fontDirectionHint - '\x00\x00' + // indexToLocFormat - '\x00\x00'); // glyphDataFormat - - // Horizontal header - builder.addTable('hhea', - '\x00\x01\x00\x00' + // Version number - safeString16(properties.ascent) + // Typographic Ascent - safeString16(properties.descent) + // Typographic Descent - '\x00\x00' + // Line Gap - '\xFF\xFF' + // advanceWidthMax - '\x00\x00' + // minLeftSidebearing - '\x00\x00' + // minRightSidebearing - '\x00\x00' + // xMaxExtent - safeString16(properties.capHeight) + // caretSlopeRise - safeString16(Math.tan(properties.italicAngle) * - properties.xHeight) + // caretSlopeRun - '\x00\x00' + // caretOffset - '\x00\x00' + // -reserved- - '\x00\x00' + // -reserved- - '\x00\x00' + // -reserved- - '\x00\x00' + // -reserved- - '\x00\x00' + // metricDataFormat - string16(numGlyphs)); // Number of HMetrics - - // Horizontal metrics - builder.addTable('hmtx', (function fontFieldsHmtx() { - var charstrings = font.charstrings; - var cffWidths = font.cff ? font.cff.widths : null; - var hmtx = '\x00\x00\x00\x00'; // Fake .notdef - for (var i = 1, ii = numGlyphs; i < ii; i++) { - var width = 0; - if (charstrings) { - var charstring = charstrings[i - 1]; - width = 'width' in charstring ? charstring.width : 0; - } else if (cffWidths) { - width = Math.ceil(cffWidths[i] || 0); - } - hmtx += string16(width) + string16(0); - } - return hmtx; - })()); - - // Maximum profile - builder.addTable('maxp', - '\x00\x00\x50\x00' + // Version number - string16(numGlyphs)); // Num of glyphs - - // Naming tables - builder.addTable('name', createNameTable(fontName)); - - // PostScript informations - builder.addTable('post', createPostTable(properties)); - - return builder.toArray(); - }, - - /** - * Builds a char code to unicode map based on section 9.10 of the spec. - * @param {Object} properties Font properties object. - * @return {Object} A ToUnicodeMap object. - */ - buildToUnicode: function Font_buildToUnicode(properties) { - // Section 9.10.2 Mapping Character Codes to Unicode Values - if (properties.toUnicode && properties.toUnicode.length !== 0) { - return properties.toUnicode; - } - // According to the spec if the font is a simple font we should only map - // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or - // the differences array only contains adobe standard or symbol set names, - // in pratice it seems better to always try to create a toUnicode - // map based of the default encoding. - var toUnicode, charcode; - if (!properties.composite /* is simple font */) { - toUnicode = []; - var encoding = properties.defaultEncoding.slice(); - var baseEncodingName = properties.baseEncodingName; - // Merge in the differences array. - var differences = properties.differences; - for (charcode in differences) { - encoding[charcode] = differences[charcode]; - } - for (charcode in encoding) { - // a) Map the character code to a character name. - var glyphName = encoding[charcode]; - // b) Look up the character name in the Adobe Glyph List (see the - // Bibliography) to obtain the corresponding Unicode value. - if (glyphName === '') { - continue; - } else if (GlyphsUnicode[glyphName] === undefined) { - // (undocumented) c) Few heuristics to recognize unknown glyphs - // NOTE: Adobe Reader does not do this step, but OSX Preview does - var code = 0; - switch (glyphName[0]) { - case 'G': // Gxx glyph - if (glyphName.length === 3) { - code = parseInt(glyphName.substr(1), 16); - } - break; - case 'g': // g00xx glyph - if (glyphName.length === 5) { - code = parseInt(glyphName.substr(1), 16); - } - break; - case 'C': // Cddd glyph - case 'c': // cddd glyph - if (glyphName.length >= 3) { - code = +glyphName.substr(1); - } - break; - } - if (code) { - // If |baseEncodingName| is one the predefined encodings, - // and |code| equals |charcode|, using the glyph defined in the - // baseEncoding seems to yield a better |toUnicode| mapping - // (fixes issue 5070). - if (baseEncodingName && code === +charcode) { - var baseEncoding = Encodings[baseEncodingName]; - if (baseEncoding && (glyphName = baseEncoding[charcode])) { - toUnicode[charcode] = - String.fromCharCode(GlyphsUnicode[glyphName]); - continue; - } - } - toUnicode[charcode] = String.fromCharCode(code); - } - continue; - } - toUnicode[charcode] = String.fromCharCode(GlyphsUnicode[glyphName]); - } - return new ToUnicodeMap(toUnicode); - } - // If the font is a composite font that uses one of the predefined CMaps - // listed in Table 118 (except Identity–H and Identity–V) or whose - // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or - // Adobe-Korea1 character collection: - if (properties.composite && ( - (properties.cMap.builtInCMap && - !(properties.cMap instanceof IdentityCMap)) || - (properties.cidSystemInfo.registry === 'Adobe' && - (properties.cidSystemInfo.ordering === 'GB1' || - properties.cidSystemInfo.ordering === 'CNS1' || - properties.cidSystemInfo.ordering === 'Japan1' || - properties.cidSystemInfo.ordering === 'Korea1')))) { - // Then: - // a) Map the character code to a character identifier (CID) according - // to the font’s CMap. - // b) Obtain the registry and ordering of the character collection used - // by the font’s CMap (for example, Adobe and Japan1) from its - // CIDSystemInfo dictionary. - var registry = properties.cidSystemInfo.registry; - var ordering = properties.cidSystemInfo.ordering; - // c) Construct a second CMap name by concatenating the registry and - // ordering obtained in step (b) in the format registry–ordering–UCS2 - // (for example, Adobe–Japan1–UCS2). - var ucs2CMapName = new Name(registry + '-' + ordering + '-UCS2'); - // d) Obtain the CMap with the name constructed in step (c) (available - // from the ASN Web site; see the Bibliography). - var ucs2CMap = CMapFactory.create(ucs2CMapName, - { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null); - var cMap = properties.cMap; - toUnicode = []; - cMap.forEach(function(charcode, cid) { - assert(cid <= 0xffff, 'Max size of CID is 65,535'); - // e) Map the CID obtained in step (a) according to the CMap obtained - // in step (d), producing a Unicode value. - var ucs2 = ucs2CMap.lookup(cid); - if (ucs2) { - toUnicode[charcode] = - String.fromCharCode((ucs2.charCodeAt(0) << 8) + - ucs2.charCodeAt(1)); - } - }); - return new ToUnicodeMap(toUnicode); - } - - // The viewer's choice, just use an identity map. - return new IdentityToUnicodeMap(properties.firstChar, - properties.lastChar); - }, - - get spaceWidth() { - if ('_shadowWidth' in this) { - return this._shadowWidth; - } - - // trying to estimate space character width - var possibleSpaceReplacements = ['space', 'minus', 'one', 'i']; - var width; - for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) { - var glyphName = possibleSpaceReplacements[i]; - // if possible, getting width by glyph name - if (glyphName in this.widths) { - width = this.widths[glyphName]; - break; - } - var glyphUnicode = GlyphsUnicode[glyphName]; - // finding the charcode via unicodeToCID map - var charcode = 0; - if (this.composite) { - if (this.cMap.contains(glyphUnicode)) { - charcode = this.cMap.lookup(glyphUnicode); - } - } - // ... via toUnicode map - if (!charcode && 'toUnicode' in this) { - charcode = this.toUnicode.charCodeOf(glyphUnicode); - } - // setting it to unicode if negative or undefined - if (charcode <= 0) { - charcode = glyphUnicode; - } - // trying to get width via charcode - width = this.widths[charcode]; - if (width) { - break; // the non-zero width found - } - } - width = width || this.defaultWidth; - // Do not shadow the property here. See discussion: - // https://github.com/mozilla/pdf.js/pull/2127#discussion_r1662280 - this._shadowWidth = width; - return width; - }, - - charToGlyph: function Font_charToGlyph(charcode, isSpace) { - var fontCharCode, width, operatorListId; - - var widthCode = charcode; - if (this.cMap && this.cMap.contains(charcode)) { - widthCode = this.cMap.lookup(charcode); - } - width = this.widths[widthCode]; - width = isNum(width) ? width : this.defaultWidth; - var vmetric = this.vmetrics && this.vmetrics[widthCode]; - - var unicode = this.toUnicode.get(charcode) || charcode; - if (typeof unicode === 'number') { - unicode = String.fromCharCode(unicode); - } - - // First try the toFontChar map, if it's not there then try falling - // back to the char code. - fontCharCode = this.toFontChar[charcode] || charcode; - if (this.missingFile) { - fontCharCode = mapSpecialUnicodeValues(fontCharCode); - } - - if (this.isType3Font) { - // Font char code in this case is actually a glyph name. - operatorListId = fontCharCode; - } - - var accent = null; - if (this.seacMap && this.seacMap[charcode]) { - var seac = this.seacMap[charcode]; - fontCharCode = seac.baseFontCharCode; - accent = { - fontChar: String.fromCharCode(seac.accentFontCharCode), - offset: seac.accentOffset - }; - } - - var fontChar = String.fromCharCode(fontCharCode); - - var glyph = this.glyphCache[charcode]; - if (!glyph || - !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, - operatorListId, isSpace)) { - glyph = new Glyph(fontChar, unicode, accent, width, vmetric, - operatorListId, isSpace); - this.glyphCache[charcode] = glyph; - } - return glyph; - }, - - charsToGlyphs: function Font_charsToGlyphs(chars) { - var charsCache = this.charsCache; - var glyphs, glyph, charcode; - - // if we translated this string before, just grab it from the cache - if (charsCache) { - glyphs = charsCache[chars]; - if (glyphs) { - return glyphs; - } - } - - // lazily create the translation cache - if (!charsCache) { - charsCache = this.charsCache = Object.create(null); - } - - glyphs = []; - var charsCacheKey = chars; - var i = 0, ii; - - if (this.cMap) { - // composite fonts have multi-byte strings convert the string from - // single-byte to multi-byte - var c = {}; - while (i < chars.length) { - this.cMap.readCharCode(chars, i, c); - charcode = c.charcode; - var length = c.length; - i += length; - // Space is char with code 0x20 and length 1 in multiple-byte codes. - var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20; - glyph = this.charToGlyph(charcode, isSpace); - glyphs.push(glyph); - } - } else { - for (i = 0, ii = chars.length; i < ii; ++i) { - charcode = chars.charCodeAt(i); - glyph = this.charToGlyph(charcode, charcode === 0x20); - glyphs.push(glyph); - } - } - - // Enter the translated string into the cache - return (charsCache[charsCacheKey] = glyphs); - } - }; - - return Font; -})(); - -var ErrorFont = (function ErrorFontClosure() { - function ErrorFont(error) { - this.error = error; - this.loadedName = 'g_font_error'; - this.loading = false; - } - - ErrorFont.prototype = { - charsToGlyphs: function ErrorFont_charsToGlyphs() { - return []; - }, - exportData: function ErrorFont_exportData() { - return {error: this.error}; - } - }; - - return ErrorFont; -})(); - -/** - * Shared logic for building a char code to glyph id mapping for Type1 and - * simple CFF fonts. See section 9.6.6.2 of the spec. - * @param {Object} properties Font properties object. - * @param {Object} builtInEncoding The encoding contained within the actual font - * data. - * @param {Array} Array of glyph names where the index is the glyph ID. - * @returns {Object} A char code to glyph ID map. - */ -function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { - var charCodeToGlyphId = Object.create(null); - var glyphId, charCode, baseEncoding; - - if (properties.baseEncodingName) { - // If a valid base encoding name was used, the mapping is initialized with - // that. - baseEncoding = Encodings[properties.baseEncodingName]; - for (charCode = 0; charCode < baseEncoding.length; charCode++) { - glyphId = glyphNames.indexOf(baseEncoding[charCode]); - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; // notdef - } - } - } else if (!!(properties.flags & FontFlags.Symbolic)) { - // For a symbolic font the encoding should be the fonts built-in - // encoding. - for (charCode in builtInEncoding) { - charCodeToGlyphId[charCode] = builtInEncoding[charCode]; - } - } else { - // For non-symbolic fonts that don't have a base encoding the standard - // encoding should be used. - baseEncoding = Encodings.StandardEncoding; - for (charCode = 0; charCode < baseEncoding.length; charCode++) { - glyphId = glyphNames.indexOf(baseEncoding[charCode]); - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; // notdef - } - } - } - - // Lastly, merge in the differences. - var differences = properties.differences; - if (differences) { - for (charCode in differences) { - var glyphName = differences[charCode]; - glyphId = glyphNames.indexOf(glyphName); - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; // notdef - } - } - } - return charCodeToGlyphId; -} - -/* - * CharStrings are encoded following the the CharString Encoding sequence - * describe in Chapter 6 of the "Adobe Type1 Font Format" specification. - * The value in a byte indicates a command, a number, or subsequent bytes - * that are to be interpreted in a special way. - * - * CharString Number Encoding: - * A CharString byte containing the values from 32 through 255 inclusive - * indicate an integer. These values are decoded in four ranges. - * - * 1. A CharString byte containing a value, v, between 32 and 246 inclusive, - * indicate the integer v - 139. Thus, the integer values from -107 through - * 107 inclusive may be encoded in single byte. - * - * 2. A CharString byte containing a value, v, between 247 and 250 inclusive, - * indicates an integer involving the next byte, w, according to the formula: - * [(v - 247) x 256] + w + 108 - * - * 3. A CharString byte containing a value, v, between 251 and 254 inclusive, - * indicates an integer involving the next byte, w, according to the formula: - * -[(v - 251) * 256] - w - 108 - * - * 4. A CharString containing the value 255 indicates that the next 4 bytes - * are a two complement signed integer. The first of these bytes contains the - * highest order bits, the second byte contains the next higher order bits - * and the fourth byte contain the lowest order bits. - * - * - * CharString Command Encoding: - * CharStrings commands are encoded in 1 or 2 bytes. - * - * Single byte commands are encoded in 1 byte that contains a value between - * 0 and 31 inclusive. - * If a command byte contains the value 12, then the value in the next byte - * indicates a command. This "escape" mechanism allows many extra commands - * to be encoded and this encoding technique helps to minimize the length of - * the charStrings. - */ -var Type1CharString = (function Type1CharStringClosure() { - var COMMAND_MAP = { - 'hstem': [1], - 'vstem': [3], - 'vmoveto': [4], - 'rlineto': [5], - 'hlineto': [6], - 'vlineto': [7], - 'rrcurveto': [8], - 'callsubr': [10], - 'flex': [12, 35], - 'drop' : [12, 18], - 'endchar': [14], - 'rmoveto': [21], - 'hmoveto': [22], - 'vhcurveto': [30], - 'hvcurveto': [31] - }; - - function Type1CharString() { - this.width = 0; - this.lsb = 0; - this.flexing = false; - this.output = []; - this.stack = []; - } - - Type1CharString.prototype = { - convert: function Type1CharString_convert(encoded, subrs) { - var count = encoded.length; - var error = false; - var wx, sbx, subrNumber; - for (var i = 0; i < count; i++) { - var value = encoded[i]; - if (value < 32) { - if (value === 12) { - value = (value << 8) + encoded[++i]; - } - switch (value) { - case 1: // hstem - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - error = this.executeCommand(2, COMMAND_MAP.hstem); - break; - case 3: // vstem - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - error = this.executeCommand(2, COMMAND_MAP.vstem); - break; - case 4: // vmoveto - if (this.flexing) { - if (this.stack.length < 1) { - error = true; - break; - } - // Add the dx for flex and but also swap the values so they are - // the right order. - var dy = this.stack.pop(); - this.stack.push(0, dy); - break; - } - error = this.executeCommand(1, COMMAND_MAP.vmoveto); - break; - case 5: // rlineto - error = this.executeCommand(2, COMMAND_MAP.rlineto); - break; - case 6: // hlineto - error = this.executeCommand(1, COMMAND_MAP.hlineto); - break; - case 7: // vlineto - error = this.executeCommand(1, COMMAND_MAP.vlineto); - break; - case 8: // rrcurveto - error = this.executeCommand(6, COMMAND_MAP.rrcurveto); - break; - case 9: // closepath - // closepath is a Type1 command that does not take argument and is - // useless in Type2 and it can simply be ignored. - this.stack = []; - break; - case 10: // callsubr - if (this.stack.length < 1) { - error = true; - break; - } - subrNumber = this.stack.pop(); - error = this.convert(subrs[subrNumber], subrs); - break; - case 11: // return - return error; - case 13: // hsbw - if (this.stack.length < 2) { - error = true; - break; - } - // To convert to type2 we have to move the width value to the - // first part of the charstring and then use hmoveto with lsb. - wx = this.stack.pop(); - sbx = this.stack.pop(); - this.lsb = sbx; - this.width = wx; - this.stack.push(wx, sbx); - error = this.executeCommand(2, COMMAND_MAP.hmoveto); - break; - case 14: // endchar - this.output.push(COMMAND_MAP.endchar[0]); - break; - case 21: // rmoveto - if (this.flexing) { - break; - } - error = this.executeCommand(2, COMMAND_MAP.rmoveto); - break; - case 22: // hmoveto - if (this.flexing) { - // Add the dy for flex. - this.stack.push(0); - break; - } - error = this.executeCommand(1, COMMAND_MAP.hmoveto); - break; - case 30: // vhcurveto - error = this.executeCommand(4, COMMAND_MAP.vhcurveto); - break; - case 31: // hvcurveto - error = this.executeCommand(4, COMMAND_MAP.hvcurveto); - break; - case (12 << 8) + 0: // dotsection - // dotsection is a Type1 command to specify some hinting feature - // for dots that do not take a parameter and it can safely be - // ignored for Type2. - this.stack = []; - break; - case (12 << 8) + 1: // vstem3 - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - // [vh]stem3 are Type1 only and Type2 supports [vh]stem with - // multiple parameters, so instead of returning [vh]stem3 take a - // shortcut and return [vhstem] instead. - error = this.executeCommand(2, COMMAND_MAP.vstem); - break; - case (12 << 8) + 2: // hstem3 - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - // See vstem3. - error = this.executeCommand(2, COMMAND_MAP.hstem); - break; - case (12 << 8) + 6: // seac - // seac is like type 2's special endchar but it doesn't use the - // first argument asb, so remove it. - if (SEAC_ANALYSIS_ENABLED) { - this.seac = this.stack.splice(-4, 4); - error = this.executeCommand(0, COMMAND_MAP.endchar); - } else { - error = this.executeCommand(4, COMMAND_MAP.endchar); - } - break; - case (12 << 8) + 7: // sbw - if (this.stack.length < 4) { - error = true; - break; - } - // To convert to type2 we have to move the width value to the - // first part of the charstring and then use rmoveto with - // (dx, dy). The height argument will not be used for vmtx and - // vhea tables reconstruction -- ignoring it. - var wy = this.stack.pop(); - wx = this.stack.pop(); - var sby = this.stack.pop(); - sbx = this.stack.pop(); - this.lsb = sbx; - this.width = wx; - this.stack.push(wx, sbx, sby); - error = this.executeCommand(3, COMMAND_MAP.rmoveto); - break; - case (12 << 8) + 12: // div - if (this.stack.length < 2) { - error = true; - break; - } - var num2 = this.stack.pop(); - var num1 = this.stack.pop(); - this.stack.push(num1 / num2); - break; - case (12 << 8) + 16: // callothersubr - if (this.stack.length < 2) { - error = true; - break; - } - subrNumber = this.stack.pop(); - var numArgs = this.stack.pop(); - if (subrNumber === 0 && numArgs === 3) { - var flexArgs = this.stack.splice(this.stack.length - 17, 17); - this.stack.push( - flexArgs[2] + flexArgs[0], // bcp1x + rpx - flexArgs[3] + flexArgs[1], // bcp1y + rpy - flexArgs[4], // bcp2x - flexArgs[5], // bcp2y - flexArgs[6], // p2x - flexArgs[7], // p2y - flexArgs[8], // bcp3x - flexArgs[9], // bcp3y - flexArgs[10], // bcp4x - flexArgs[11], // bcp4y - flexArgs[12], // p3x - flexArgs[13], // p3y - flexArgs[14] // flexDepth - // 15 = finalx unused by flex - // 16 = finaly unused by flex - ); - error = this.executeCommand(13, COMMAND_MAP.flex, true); - this.flexing = false; - this.stack.push(flexArgs[15], flexArgs[16]); - } else if (subrNumber === 1 && numArgs === 0) { - this.flexing = true; - } - break; - case (12 << 8) + 17: // pop - // Ignore this since it is only used with othersubr. - break; - case (12 << 8) + 33: // setcurrentpoint - // Ignore for now. - this.stack = []; - break; - default: - warn('Unknown type 1 charstring command of "' + value + '"'); - break; - } - if (error) { - break; - } - continue; - } else if (value <= 246) { - value = value - 139; - } else if (value <= 250) { - value = ((value - 247) * 256) + encoded[++i] + 108; - } else if (value <= 254) { - value = -((value - 251) * 256) - encoded[++i] - 108; - } else { - value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | - (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0; - } - this.stack.push(value); - } - return error; - }, - - executeCommand: function(howManyArgs, command, keepStack) { - var stackLength = this.stack.length; - if (howManyArgs > stackLength) { - return true; - } - var start = stackLength - howManyArgs; - for (var i = start; i < stackLength; i++) { - var value = this.stack[i]; - if (value === (value | 0)) { // int - this.output.push(28, (value >> 8) & 0xff, value & 0xff); - } else { // fixed point - value = (65536 * value) | 0; - this.output.push(255, - (value >> 24) & 0xFF, - (value >> 16) & 0xFF, - (value >> 8) & 0xFF, - value & 0xFF); - } - } - this.output.push.apply(this.output, command); - if (keepStack) { - this.stack.splice(start, howManyArgs); - } else { - this.stack.length = 0; - } - return false; - } - }; - - return Type1CharString; -})(); - -/* - * Type1Parser encapsulate the needed code for parsing a Type1 font - * program. Some of its logic depends on the Type2 charstrings - * structure. - * Note: this doesn't really parse the font since that would require evaluation - * of PostScript, but it is possible in most cases to extract what we need - * without a full parse. - */ -var Type1Parser = (function Type1ParserClosure() { - /* - * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence - * of Plaintext Bytes. The function took a key as a parameter which can be - * for decrypting the eexec block of for decoding charStrings. - */ - var EEXEC_ENCRYPT_KEY = 55665; - var CHAR_STRS_ENCRYPT_KEY = 4330; - - function isHexDigit(code) { - return code >= 48 && code <= 57 || // '0'-'9' - code >= 65 && code <= 70 || // 'A'-'F' - code >= 97 && code <= 102; // 'a'-'f' - } - - function decrypt(data, key, discardNumber) { - var r = key | 0, c1 = 52845, c2 = 22719; - var count = data.length; - var decrypted = new Uint8Array(count); - for (var i = 0; i < count; i++) { - var value = data[i]; - decrypted[i] = value ^ (r >> 8); - r = ((value + r) * c1 + c2) & ((1 << 16) - 1); - } - return Array.prototype.slice.call(decrypted, discardNumber); - } - - function decryptAscii(data, key, discardNumber) { - var r = key | 0, c1 = 52845, c2 = 22719; - var count = data.length, maybeLength = count >>> 1; - var decrypted = new Uint8Array(maybeLength); - var i, j; - for (i = 0, j = 0; i < count; i++) { - var digit1 = data[i]; - if (!isHexDigit(digit1)) { - continue; - } - i++; - var digit2; - while (i < count && !isHexDigit(digit2 = data[i])) { - i++; - } - if (i < count) { - var value = parseInt(String.fromCharCode(digit1, digit2), 16); - decrypted[j++] = value ^ (r >> 8); - r = ((value + r) * c1 + c2) & ((1 << 16) - 1); - } - } - return Array.prototype.slice.call(decrypted, discardNumber, j); - } - - function isSpecial(c) { - return c === 0x2F || // '/' - c === 0x5B || c === 0x5D || // '[', ']' - c === 0x7B || c === 0x7D || // '{', '}' - c === 0x28 || c === 0x29; // '(', ')' - } - - function Type1Parser(stream, encrypted) { - if (encrypted) { - var data = stream.getBytes(); - var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) && - isHexDigit(data[2]) && isHexDigit(data[3])); - stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : - decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)); - } - this.stream = stream; - this.nextChar(); - } - - Type1Parser.prototype = { - readNumberArray: function Type1Parser_readNumberArray() { - this.getToken(); // read '[' or '{' (arrays can start with either) - var array = []; - while (true) { - var token = this.getToken(); - if (token === null || token === ']' || token === '}') { - break; - } - array.push(parseFloat(token || 0)); - } - return array; - }, - - readNumber: function Type1Parser_readNumber() { - var token = this.getToken(); - return parseFloat(token || 0); - }, - - readInt: function Type1Parser_readInt() { - // Use '| 0' to prevent setting a double into length such as the double - // does not flow into the loop variable. - var token = this.getToken(); - return parseInt(token || 0, 10) | 0; - }, - - readBoolean: function Type1Parser_readBoolean() { - var token = this.getToken(); - - // Use 1 and 0 since that's what type2 charstrings use. - return token === 'true' ? 1 : 0; - }, - - nextChar : function Type1_nextChar() { - return (this.currentChar = this.stream.getByte()); - }, - - getToken: function Type1Parser_getToken() { - // Eat whitespace and comments. - var comment = false; - var ch = this.currentChar; - while (true) { - if (ch === -1) { - return null; - } - - if (comment) { - if (ch === 0x0A || ch === 0x0D) { - comment = false; - } - } else if (ch === 0x25) { // '%' - comment = true; - } else if (!Lexer.isSpace(ch)) { - break; - } - ch = this.nextChar(); - } - if (isSpecial(ch)) { - this.nextChar(); - return String.fromCharCode(ch); - } - var token = ''; - do { - token += String.fromCharCode(ch); - ch = this.nextChar(); - } while (ch >= 0 && !Lexer.isSpace(ch) && !isSpecial(ch)); - return token; - }, - - /* - * Returns an object containing a Subrs array and a CharStrings - * array extracted from and eexec encrypted block of data - */ - extractFontProgram: function Type1Parser_extractFontProgram() { - var stream = this.stream; - - var subrs = [], charstrings = []; - var program = { - subrs: [], - charstrings: [], - properties: { - 'privateData': { - 'lenIV': 4 - } - } - }; - var token, length, data, lenIV, encoded; - while ((token = this.getToken()) !== null) { - if (token !== '/') { - continue; - } - token = this.getToken(); - switch (token) { - case 'CharStrings': - // The number immediately following CharStrings must be greater or - // equal to the number of CharStrings. - this.getToken(); - this.getToken(); // read in 'dict' - this.getToken(); // read in 'dup' - this.getToken(); // read in 'begin' - while(true) { - token = this.getToken(); - if (token === null || token === 'end') { - break; - } - - if (token !== '/') { - continue; - } - var glyph = this.getToken(); - length = this.readInt(); - this.getToken(); // read in 'RD' or '-|' - data = stream.makeSubStream(stream.pos, length); - lenIV = program.properties.privateData['lenIV']; - encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV); - // Skip past the required space and binary data. - stream.skip(length); - this.nextChar(); - token = this.getToken(); // read in 'ND' or '|-' - if (token === 'noaccess') { - this.getToken(); // read in 'def' - } - charstrings.push({ - glyph: glyph, - encoded: encoded - }); - } - break; - case 'Subrs': - var num = this.readInt(); - this.getToken(); // read in 'array' - while ((token = this.getToken()) === 'dup') { - var index = this.readInt(); - length = this.readInt(); - this.getToken(); // read in 'RD' or '-|' - data = stream.makeSubStream(stream.pos, length); - lenIV = program.properties.privateData['lenIV']; - encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV); - // Skip past the required space and binary data. - stream.skip(length); - this.nextChar(); - token = this.getToken(); // read in 'NP' or '|' - if (token === 'noaccess') { - this.getToken(); // read in 'put' - } - subrs[index] = encoded; - } - break; - case 'BlueValues': - case 'OtherBlues': - case 'FamilyBlues': - case 'FamilyOtherBlues': - var blueArray = this.readNumberArray(); - // *Blue* values may contain invalid data: disables reading of - // those values when hinting is disabled. - if (blueArray.length > 0 && (blueArray.length % 2) === 0 && - HINTING_ENABLED) { - program.properties.privateData[token] = blueArray; - } - break; - case 'StemSnapH': - case 'StemSnapV': - program.properties.privateData[token] = this.readNumberArray(); - break; - case 'StdHW': - case 'StdVW': - program.properties.privateData[token] = - this.readNumberArray()[0]; - break; - case 'BlueShift': - case 'lenIV': - case 'BlueFuzz': - case 'BlueScale': - case 'LanguageGroup': - case 'ExpansionFactor': - program.properties.privateData[token] = this.readNumber(); - break; - case 'ForceBold': - program.properties.privateData[token] = this.readBoolean(); - break; - } - } - - for (var i = 0; i < charstrings.length; i++) { - glyph = charstrings[i].glyph; - encoded = charstrings[i].encoded; - var charString = new Type1CharString(); - var error = charString.convert(encoded, subrs); - var output = charString.output; - if (error) { - // It seems when FreeType encounters an error while evaluating a glyph - // that it completely ignores the glyph so we'll mimic that behaviour - // here and put an endchar to make the validator happy. - output = [14]; - } - program.charstrings.push({ - glyphName: glyph, - charstring: output, - width: charString.width, - lsb: charString.lsb, - seac: charString.seac - }); - } - - return program; - }, - - extractFontHeader: function Type1Parser_extractFontHeader(properties) { - var token; - while ((token = this.getToken()) !== null) { - if (token !== '/') { - continue; - } - token = this.getToken(); - switch (token) { - case 'FontMatrix': - var matrix = this.readNumberArray(); - properties.fontMatrix = matrix; - break; - case 'Encoding': - var encodingArg = this.getToken(); - var encoding; - if (!/^\d+$/.test(encodingArg)) { - // encoding name is specified - encoding = Encodings[encodingArg]; - } else { - encoding = []; - var size = parseInt(encodingArg, 10) | 0; - this.getToken(); // read in 'array' - - for (var j = 0; j < size; j++) { - token = this.getToken(); - // skipping till first dup or def (e.g. ignoring for statement) - while (token !== 'dup' && token !== 'def') { - token = this.getToken(); - if (token === null) { - return; // invalid header - } - } - if (token === 'def') { - break; // read all array data - } - var index = this.readInt(); - this.getToken(); // read in '/' - var glyph = this.getToken(); - encoding[index] = glyph; - this.getToken(); // read the in 'put' - } - } - properties.builtInEncoding = encoding; - break; - case 'FontBBox': - var fontBBox = this.readNumberArray(); - // adjusting ascent/descent - properties.ascent = fontBBox[3]; - properties.descent = fontBBox[1]; - properties.ascentScaled = true; - break; - } - } - } - }; - - return Type1Parser; -})(); - -/** - * The CFF class takes a Type1 file and wrap it into a - * 'Compact Font Format' which itself embed Type2 charstrings. - */ -var CFFStandardStrings = [ - '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', - 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', - 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', - 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', - 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', - 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', - 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', - 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', - 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', - 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', - 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', - 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', - 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', - 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', - 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', - 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', - 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', - 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', - 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', - 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', - 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', - 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', - 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', - 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', - 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', - 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', - 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', - 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', - 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', - 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', - 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', - 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', - 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', - 'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', - 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', - 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', - 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', - 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', - 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', - 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', - 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', - 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', - 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', - 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', - 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', - 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', - 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', - 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', - 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth', - 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', - 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', - 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', - 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', - 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', - 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', - 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', - 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', - 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', - 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', - 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', - 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', - 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', - 'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003', - 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold' -]; - -// Type1Font is also a CIDFontType0. -var Type1Font = function Type1Font(name, file, properties) { - // Some bad generators embed pfb file as is, we have to strip 6-byte headers. - // Also, length1 and length2 might be off by 6 bytes as well. - // http://www.math.ubc.ca/~cass/piscript/type1.pdf - var PFB_HEADER_SIZE = 6; - var headerBlockLength = properties.length1; - var eexecBlockLength = properties.length2; - var pfbHeader = file.peekBytes(PFB_HEADER_SIZE); - var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01; - if (pfbHeaderPresent) { - file.skip(PFB_HEADER_SIZE); - headerBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) | - (pfbHeader[3] << 8) | pfbHeader[2]; - } - - // Get the data block containing glyphs and subrs informations - var headerBlock = new Stream(file.getBytes(headerBlockLength)); - var headerBlockParser = new Type1Parser(headerBlock); - headerBlockParser.extractFontHeader(properties); - - if (pfbHeaderPresent) { - pfbHeader = file.getBytes(PFB_HEADER_SIZE); - eexecBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) | - (pfbHeader[3] << 8) | pfbHeader[2]; - } - - // Decrypt the data blocks and retrieve it's content - var eexecBlock = new Stream(file.getBytes(eexecBlockLength)); - var eexecBlockParser = new Type1Parser(eexecBlock, true); - var data = eexecBlockParser.extractFontProgram(); - for (var info in data.properties) { - properties[info] = data.properties[info]; - } - - var charstrings = data.charstrings; - var type2Charstrings = this.getType2Charstrings(charstrings); - var subrs = this.getType2Subrs(data.subrs); - - this.charstrings = charstrings; - this.data = this.wrap(name, type2Charstrings, this.charstrings, - subrs, properties); - this.seacs = this.getSeacs(data.charstrings); -}; - -Type1Font.prototype = { - get numGlyphs() { - return this.charstrings.length + 1; - }, - - getCharset: function Type1Font_getCharset() { - var charset = ['.notdef']; - var charstrings = this.charstrings; - for (var glyphId = 0; glyphId < charstrings.length; glyphId++) { - charset.push(charstrings[glyphId].glyphName); - } - return charset; - }, - - getGlyphMapping: function Type1Font_getGlyphMapping(properties) { - var charstrings = this.charstrings; - var glyphNames = ['.notdef'], glyphId; - for (glyphId = 0; glyphId < charstrings.length; glyphId++) { - glyphNames.push(charstrings[glyphId].glyphName); - } - var encoding = properties.builtInEncoding; - if (encoding) { - var builtInEncoding = {}; - for (var charCode in encoding) { - glyphId = glyphNames.indexOf(encoding[charCode]); - if (glyphId >= 0) { - builtInEncoding[charCode] = glyphId; - } - } - } - - return type1FontGlyphMapping(properties, builtInEncoding, glyphNames); - }, - - getSeacs: function Type1Font_getSeacs(charstrings) { - var i, ii; - var seacMap = []; - for (i = 0, ii = charstrings.length; i < ii; i++) { - var charstring = charstrings[i]; - if (charstring.seac) { - // Offset by 1 for .notdef - seacMap[i + 1] = charstring.seac; - } - } - return seacMap; - }, - - getType2Charstrings: function Type1Font_getType2Charstrings( - type1Charstrings) { - var type2Charstrings = []; - for (var i = 0, ii = type1Charstrings.length; i < ii; i++) { - type2Charstrings.push(type1Charstrings[i].charstring); - } - return type2Charstrings; - }, - - getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) { - var bias = 0; - var count = type1Subrs.length; - if (count < 1133) { - bias = 107; - } else if (count < 33769) { - bias = 1131; - } else { - bias = 32768; - } - - // Add a bunch of empty subrs to deal with the Type2 bias - var type2Subrs = []; - var i; - for (i = 0; i < bias; i++) { - type2Subrs.push([0x0B]); - } - - for (i = 0; i < count; i++) { - type2Subrs.push(type1Subrs[i]); - } - - return type2Subrs; - }, - - wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) { - var cff = new CFF(); - cff.header = new CFFHeader(1, 0, 4, 4); - - cff.names = [name]; - - var topDict = new CFFTopDict(); - // CFF strings IDs 0...390 are predefined names, so refering - // to entries in our own String INDEX starts at SID 391. - topDict.setByName('version', 391); - topDict.setByName('Notice', 392); - topDict.setByName('FullName', 393); - topDict.setByName('FamilyName', 394); - topDict.setByName('Weight', 395); - topDict.setByName('Encoding', null); // placeholder - topDict.setByName('FontMatrix', properties.fontMatrix); - topDict.setByName('FontBBox', properties.bbox); - topDict.setByName('charset', null); // placeholder - topDict.setByName('CharStrings', null); // placeholder - topDict.setByName('Private', null); // placeholder - cff.topDict = topDict; - - var strings = new CFFStrings(); - strings.add('Version 0.11'); // Version - strings.add('See original notice'); // Notice - strings.add(name); // FullName - strings.add(name); // FamilyName - strings.add('Medium'); // Weight - cff.strings = strings; - - cff.globalSubrIndex = new CFFIndex(); - - var count = glyphs.length; - var charsetArray = [0]; - var i, ii; - for (i = 0; i < count; i++) { - var index = CFFStandardStrings.indexOf(charstrings[i].glyphName); - // TODO: Insert the string and correctly map it. Previously it was - // thought mapping names that aren't in the standard strings to .notdef - // was fine, however in issue818 when mapping them all to .notdef the - // adieresis glyph no longer worked. - if (index === -1) { - index = 0; - } - charsetArray.push((index >> 8) & 0xff, index & 0xff); - } - cff.charset = new CFFCharset(false, 0, [], charsetArray); - - var charStringsIndex = new CFFIndex(); - charStringsIndex.add([0x8B, 0x0E]); // .notdef - for (i = 0; i < count; i++) { - charStringsIndex.add(glyphs[i]); - } - cff.charStrings = charStringsIndex; - - var privateDict = new CFFPrivateDict(); - privateDict.setByName('Subrs', null); // placeholder - var fields = [ - 'BlueValues', - 'OtherBlues', - 'FamilyBlues', - 'FamilyOtherBlues', - 'StemSnapH', - 'StemSnapV', - 'BlueShift', - 'BlueFuzz', - 'BlueScale', - 'LanguageGroup', - 'ExpansionFactor', - 'ForceBold', - 'StdHW', - 'StdVW' - ]; - for (i = 0, ii = fields.length; i < ii; i++) { - var field = fields[i]; - if (!properties.privateData.hasOwnProperty(field)) { - continue; - } - var value = properties.privateData[field]; - if (isArray(value)) { - // All of the private dictionary array data in CFF must be stored as - // "delta-encoded" numbers. - for (var j = value.length - 1; j > 0; j--) { - value[j] -= value[j - 1]; // ... difference from previous value - } - } - privateDict.setByName(field, value); - } - cff.topDict.privateDict = privateDict; - - var subrIndex = new CFFIndex(); - for (i = 0, ii = subrs.length; i < ii; i++) { - subrIndex.add(subrs[i]); - } - privateDict.subrsIndex = subrIndex; - - var compiler = new CFFCompiler(cff); - return compiler.compile(); - } -}; - -var CFFFont = (function CFFFontClosure() { - function CFFFont(file, properties) { - this.properties = properties; - - var parser = new CFFParser(file, properties); - this.cff = parser.parse(); - var compiler = new CFFCompiler(this.cff); - this.seacs = this.cff.seacs; - try { - this.data = compiler.compile(); - } catch (e) { - warn('Failed to compile font ' + properties.loadedName); - // There may have just been an issue with the compiler, set the data - // anyway and hope the font loaded. - this.data = file; - } - } - - CFFFont.prototype = { - get numGlyphs() { - return this.cff.charStrings.count; - }, - getCharset: function CFFFont_getCharset() { - return this.cff.charset.charset; - }, - getGlyphMapping: function CFFFont_getGlyphMapping() { - var cff = this.cff; - var properties = this.properties; - var charsets = cff.charset.charset; - var charCodeToGlyphId; - var glyphId; - - if (properties.composite) { - charCodeToGlyphId = Object.create(null); - if (cff.isCIDFont) { - // If the font is actually a CID font then we should use the charset - // to map CIDs to GIDs. - for (glyphId = 0; glyphId < charsets.length; glyphId++) { - var cid = charsets[glyphId]; - var charCode = properties.cMap.charCodeOf(cid); - charCodeToGlyphId[charCode] = glyphId; - } - } else { - // If it is NOT actually a CID font then CIDs should be mapped - // directly to GIDs. - for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) { - charCodeToGlyphId[glyphId] = glyphId; - } - } - return charCodeToGlyphId; - } - - var encoding = cff.encoding ? cff.encoding.encoding : null; - charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets); - return charCodeToGlyphId; - } - }; - - return CFFFont; -})(); - -var CFFParser = (function CFFParserClosure() { - var CharstringValidationData = [ - null, - { id: 'hstem', min: 2, stackClearing: true, stem: true }, - null, - { id: 'vstem', min: 2, stackClearing: true, stem: true }, - { id: 'vmoveto', min: 1, stackClearing: true }, - { id: 'rlineto', min: 2, resetStack: true }, - { id: 'hlineto', min: 1, resetStack: true }, - { id: 'vlineto', min: 1, resetStack: true }, - { id: 'rrcurveto', min: 6, resetStack: true }, - null, - { id: 'callsubr', min: 1, undefStack: true }, - { id: 'return', min: 0, undefStack: true }, - null, // 12 - null, - { id: 'endchar', min: 0, stackClearing: true }, - null, - null, - null, - { id: 'hstemhm', min: 2, stackClearing: true, stem: true }, - { id: 'hintmask', min: 0, stackClearing: true }, - { id: 'cntrmask', min: 0, stackClearing: true }, - { id: 'rmoveto', min: 2, stackClearing: true }, - { id: 'hmoveto', min: 1, stackClearing: true }, - { id: 'vstemhm', min: 2, stackClearing: true, stem: true }, - { id: 'rcurveline', min: 8, resetStack: true }, - { id: 'rlinecurve', min: 8, resetStack: true }, - { id: 'vvcurveto', min: 4, resetStack: true }, - { id: 'hhcurveto', min: 4, resetStack: true }, - null, // shortint - { id: 'callgsubr', min: 1, undefStack: true }, - { id: 'vhcurveto', min: 4, resetStack: true }, - { id: 'hvcurveto', min: 4, resetStack: true } - ]; - var CharstringValidationData12 = [ - null, - null, - null, - { id: 'and', min: 2, stackDelta: -1 }, - { id: 'or', min: 2, stackDelta: -1 }, - { id: 'not', min: 1, stackDelta: 0 }, - null, - null, - null, - { id: 'abs', min: 1, stackDelta: 0 }, - { id: 'add', min: 2, stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] + stack[index - 1]; - } - }, - { id: 'sub', min: 2, stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] - stack[index - 1]; - } - }, - { id: 'div', min: 2, stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] / stack[index - 1]; - } - }, - null, - { id: 'neg', min: 1, stackDelta: 0, - stackFn: function stack_div(stack, index) { - stack[index - 1] = -stack[index - 1]; - } - }, - { id: 'eq', min: 2, stackDelta: -1 }, - null, - null, - { id: 'drop', min: 1, stackDelta: -1 }, - null, - { id: 'put', min: 2, stackDelta: -2 }, - { id: 'get', min: 1, stackDelta: 0 }, - { id: 'ifelse', min: 4, stackDelta: -3 }, - { id: 'random', min: 0, stackDelta: 1 }, - { id: 'mul', min: 2, stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] * stack[index - 1]; - } - }, - null, - { id: 'sqrt', min: 1, stackDelta: 0 }, - { id: 'dup', min: 1, stackDelta: 1 }, - { id: 'exch', min: 2, stackDelta: 0 }, - { id: 'index', min: 2, stackDelta: 0 }, - { id: 'roll', min: 3, stackDelta: -2 }, - null, - null, - null, - { id: 'hflex', min: 7, resetStack: true }, - { id: 'flex', min: 13, resetStack: true }, - { id: 'hflex1', min: 9, resetStack: true }, - { id: 'flex1', min: 11, resetStack: true } - ]; - - function CFFParser(file, properties) { - this.bytes = file.getBytes(); - this.properties = properties; - } - CFFParser.prototype = { - parse: function CFFParser_parse() { - var properties = this.properties; - var cff = new CFF(); - this.cff = cff; - - // The first five sections must be in order, all the others are reached - // via offsets contained in one of the below. - var header = this.parseHeader(); - var nameIndex = this.parseIndex(header.endPos); - var topDictIndex = this.parseIndex(nameIndex.endPos); - var stringIndex = this.parseIndex(topDictIndex.endPos); - var globalSubrIndex = this.parseIndex(stringIndex.endPos); - - var topDictParsed = this.parseDict(topDictIndex.obj.get(0)); - var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings); - - cff.header = header.obj; - cff.names = this.parseNameIndex(nameIndex.obj); - cff.strings = this.parseStringIndex(stringIndex.obj); - cff.topDict = topDict; - cff.globalSubrIndex = globalSubrIndex.obj; - - this.parsePrivateDict(cff.topDict); - - cff.isCIDFont = topDict.hasName('ROS'); - - var charStringOffset = topDict.getByName('CharStrings'); - var charStringsAndSeacs = this.parseCharStrings(charStringOffset); - cff.charStrings = charStringsAndSeacs.charStrings; - cff.seacs = charStringsAndSeacs.seacs; - cff.widths = charStringsAndSeacs.widths; - - var fontMatrix = topDict.getByName('FontMatrix'); - if (fontMatrix) { - properties.fontMatrix = fontMatrix; - } - - var fontBBox = topDict.getByName('FontBBox'); - if (fontBBox) { - // adjusting ascent/descent - properties.ascent = fontBBox[3]; - properties.descent = fontBBox[1]; - properties.ascentScaled = true; - } - - var charset, encoding; - if (cff.isCIDFont) { - var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj; - for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) { - var dictRaw = fdArrayIndex.get(i); - var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), - cff.strings); - this.parsePrivateDict(fontDict); - cff.fdArray.push(fontDict); - } - // cid fonts don't have an encoding - encoding = null; - charset = this.parseCharsets(topDict.getByName('charset'), - cff.charStrings.count, cff.strings, true); - cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'), - cff.charStrings.count); - } else { - charset = this.parseCharsets(topDict.getByName('charset'), - cff.charStrings.count, cff.strings, false); - encoding = this.parseEncoding(topDict.getByName('Encoding'), - properties, - cff.strings, charset.charset); - } - cff.charset = charset; - cff.encoding = encoding; - - return cff; - }, - parseHeader: function CFFParser_parseHeader() { - var bytes = this.bytes; - var bytesLength = bytes.length; - var offset = 0; - - // Prevent an infinite loop, by checking that the offset is within the - // bounds of the bytes array. Necessary in empty, or invalid, font files. - while (offset < bytesLength && bytes[offset] !== 1) { - ++offset; - } - if (offset >= bytesLength) { - error('Invalid CFF header'); - } else if (offset !== 0) { - info('cff data is shifted'); - bytes = bytes.subarray(offset); - this.bytes = bytes; - } - var major = bytes[0]; - var minor = bytes[1]; - var hdrSize = bytes[2]; - var offSize = bytes[3]; - var header = new CFFHeader(major, minor, hdrSize, offSize); - return { obj: header, endPos: hdrSize }; - }, - parseDict: function CFFParser_parseDict(dict) { - var pos = 0; - - function parseOperand() { - var value = dict[pos++]; - if (value === 30) { - return parseFloatOperand(pos); - } else if (value === 28) { - value = dict[pos++]; - value = ((value << 24) | (dict[pos++] << 16)) >> 16; - return value; - } else if (value === 29) { - value = dict[pos++]; - value = (value << 8) | dict[pos++]; - value = (value << 8) | dict[pos++]; - value = (value << 8) | dict[pos++]; - return value; - } else if (value >= 32 && value <= 246) { - return value - 139; - } else if (value >= 247 && value <= 250) { - return ((value - 247) * 256) + dict[pos++] + 108; - } else if (value >= 251 && value <= 254) { - return -((value - 251) * 256) - dict[pos++] - 108; - } else { - error('255 is not a valid DICT command'); - } - return -1; - } - - function parseFloatOperand() { - var str = ''; - var eof = 15; - var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8', - '9', '.', 'E', 'E-', null, '-']; - var length = dict.length; - while (pos < length) { - var b = dict[pos++]; - var b1 = b >> 4; - var b2 = b & 15; - - if (b1 === eof) { - break; - } - str += lookup[b1]; - - if (b2 === eof) { - break; - } - str += lookup[b2]; - } - return parseFloat(str); - } - - var operands = []; - var entries = []; - - pos = 0; - var end = dict.length; - while (pos < end) { - var b = dict[pos]; - if (b <= 21) { - if (b === 12) { - b = (b << 8) | dict[++pos]; - } - entries.push([b, operands]); - operands = []; - ++pos; - } else { - operands.push(parseOperand()); - } - } - return entries; - }, - parseIndex: function CFFParser_parseIndex(pos) { - var cffIndex = new CFFIndex(); - var bytes = this.bytes; - var count = (bytes[pos++] << 8) | bytes[pos++]; - var offsets = []; - var end = pos; - var i, ii; - - if (count !== 0) { - var offsetSize = bytes[pos++]; - // add 1 for offset to determine size of last object - var startPos = pos + ((count + 1) * offsetSize) - 1; - - for (i = 0, ii = count + 1; i < ii; ++i) { - var offset = 0; - for (var j = 0; j < offsetSize; ++j) { - offset <<= 8; - offset += bytes[pos++]; - } - offsets.push(startPos + offset); - } - end = offsets[count]; - } - for (i = 0, ii = offsets.length - 1; i < ii; ++i) { - var offsetStart = offsets[i]; - var offsetEnd = offsets[i + 1]; - cffIndex.add(bytes.subarray(offsetStart, offsetEnd)); - } - return {obj: cffIndex, endPos: end}; - }, - parseNameIndex: function CFFParser_parseNameIndex(index) { - var names = []; - for (var i = 0, ii = index.count; i < ii; ++i) { - var name = index.get(i); - // OTS doesn't allow names to be over 127 characters. - var length = Math.min(name.length, 127); - var data = []; - // OTS also only permits certain characters in the name. - for (var j = 0; j < length; ++j) { - var c = name[j]; - if (j === 0 && c === 0) { - data[j] = c; - continue; - } - if ((c < 33 || c > 126) || c === 91 /* [ */ || c === 93 /* ] */ || - c === 40 /* ( */ || c === 41 /* ) */ || c === 123 /* { */ || - c === 125 /* } */ || c === 60 /* < */ || c === 62 /* > */ || - c === 47 /* / */ || c === 37 /* % */ || c === 35 /* # */) { - data[j] = 95; - continue; - } - data[j] = c; - } - names.push(bytesToString(data)); - } - return names; - }, - parseStringIndex: function CFFParser_parseStringIndex(index) { - var strings = new CFFStrings(); - for (var i = 0, ii = index.count; i < ii; ++i) { - var data = index.get(i); - strings.add(bytesToString(data)); - } - return strings; - }, - createDict: function CFFParser_createDict(Type, dict, strings) { - var cffDict = new Type(strings); - for (var i = 0, ii = dict.length; i < ii; ++i) { - var pair = dict[i]; - var key = pair[0]; - var value = pair[1]; - cffDict.setByKey(key, value); - } - return cffDict; - }, - parseCharStrings: function CFFParser_parseCharStrings(charStringOffset) { - var charStrings = this.parseIndex(charStringOffset).obj; - var seacs = []; - var widths = []; - var count = charStrings.count; - for (var i = 0; i < count; i++) { - var charstring = charStrings.get(i); - - var stackSize = 0; - var stack = []; - var undefStack = true; - var hints = 0; - var valid = true; - var data = charstring; - var length = data.length; - var firstStackClearing = true; - for (var j = 0; j < length;) { - var value = data[j++]; - var validationCommand = null; - if (value === 12) { - var q = data[j++]; - if (q === 0) { - // The CFF specification state that the 'dotsection' command - // (12, 0) is deprecated and treated as a no-op, but all Type2 - // charstrings processors should support them. Unfortunately - // the font sanitizer don't. As a workaround the sequence (12, 0) - // is replaced by a useless (0, hmoveto). - data[j - 2] = 139; - data[j - 1] = 22; - stackSize = 0; - } else { - validationCommand = CharstringValidationData12[q]; - } - } else if (value === 28) { // number (16 bit) - stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16; - j += 2; - stackSize++; - } else if (value === 14) { - if (stackSize >= 4) { - stackSize -= 4; - if (SEAC_ANALYSIS_ENABLED) { - seacs[i] = stack.slice(stackSize, stackSize + 4); - valid = false; - } - } - validationCommand = CharstringValidationData[value]; - } else if (value >= 32 && value <= 246) { // number - stack[stackSize] = value - 139; - stackSize++; - } else if (value >= 247 && value <= 254) { // number (+1 bytes) - stack[stackSize] = (value < 251 ? - ((value - 247) << 8) + data[j] + 108 : - -((value - 251) << 8) - data[j] - 108); - j++; - stackSize++; - } else if (value === 255) { // number (32 bit) - stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16) | - (data[j + 2] << 8) | data[j + 3]) / 65536; - j += 4; - stackSize++; - } else if (value === 19 || value === 20) { - hints += stackSize >> 1; - j += (hints + 7) >> 3; // skipping right amount of hints flag data - stackSize %= 2; - validationCommand = CharstringValidationData[value]; - } else { - validationCommand = CharstringValidationData[value]; - } - if (validationCommand) { - if (validationCommand.stem) { - hints += stackSize >> 1; - } - if ('min' in validationCommand) { - if (!undefStack && stackSize < validationCommand.min) { - warn('Not enough parameters for ' + validationCommand.id + - '; actual: ' + stackSize + - ', expected: ' + validationCommand.min); - valid = false; - break; - } - } - if (firstStackClearing && validationCommand.stackClearing) { - firstStackClearing = false; - // the optional character width can be found before the first - // stack-clearing command arguments - stackSize -= validationCommand.min; - if (stackSize >= 2 && validationCommand.stem) { - // there are even amount of arguments for stem commands - stackSize %= 2; - } else if (stackSize > 1) { - warn('Found too many parameters for stack-clearing command'); - } - if (stackSize > 0 && stack[stackSize - 1] >= 0) { - widths[i] = stack[stackSize - 1]; - } - } - if ('stackDelta' in validationCommand) { - if ('stackFn' in validationCommand) { - validationCommand.stackFn(stack, stackSize); - } - stackSize += validationCommand.stackDelta; - } else if (validationCommand.stackClearing) { - stackSize = 0; - } else if (validationCommand.resetStack) { - stackSize = 0; - undefStack = false; - } else if (validationCommand.undefStack) { - stackSize = 0; - undefStack = true; - firstStackClearing = false; - } - } - } - if (!valid) { - // resetting invalid charstring to single 'endchar' - charStrings.set(i, new Uint8Array([14])); - } - } - return { charStrings: charStrings, seacs: seacs, widths: widths }; - }, - emptyPrivateDictionary: - function CFFParser_emptyPrivateDictionary(parentDict) { - var privateDict = this.createDict(CFFPrivateDict, [], - parentDict.strings); - parentDict.setByKey(18, [0, 0]); - parentDict.privateDict = privateDict; - }, - parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) { - // no private dict, do nothing - if (!parentDict.hasName('Private')) { - this.emptyPrivateDictionary(parentDict); - return; - } - var privateOffset = parentDict.getByName('Private'); - // make sure the params are formatted correctly - if (!isArray(privateOffset) || privateOffset.length !== 2) { - parentDict.removeByName('Private'); - return; - } - var size = privateOffset[0]; - var offset = privateOffset[1]; - // remove empty dicts or ones that refer to invalid location - if (size === 0 || offset >= this.bytes.length) { - this.emptyPrivateDictionary(parentDict); - return; - } - - var privateDictEnd = offset + size; - var dictData = this.bytes.subarray(offset, privateDictEnd); - var dict = this.parseDict(dictData); - var privateDict = this.createDict(CFFPrivateDict, dict, - parentDict.strings); - parentDict.privateDict = privateDict; - - // Parse the Subrs index also since it's relative to the private dict. - if (!privateDict.getByName('Subrs')) { - return; - } - var subrsOffset = privateDict.getByName('Subrs'); - var relativeOffset = offset + subrsOffset; - // Validate the offset. - if (subrsOffset === 0 || relativeOffset >= this.bytes.length) { - this.emptyPrivateDictionary(parentDict); - return; - } - var subrsIndex = this.parseIndex(relativeOffset); - privateDict.subrsIndex = subrsIndex.obj; - }, - parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) { - if (pos === 0) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, - ISOAdobeCharset); - } else if (pos === 1) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, - ExpertCharset); - } else if (pos === 2) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, - ExpertSubsetCharset); - } - - var bytes = this.bytes; - var start = pos; - var format = bytes[pos++]; - var charset = ['.notdef']; - var id, count, i; - - // subtract 1 for the .notdef glyph - length -= 1; - - switch (format) { - case 0: - for (i = 0; i < length; i++) { - id = (bytes[pos++] << 8) | bytes[pos++]; - charset.push(cid ? id : strings.get(id)); - } - break; - case 1: - while (charset.length <= length) { - id = (bytes[pos++] << 8) | bytes[pos++]; - count = bytes[pos++]; - for (i = 0; i <= count; i++) { - charset.push(cid ? id++ : strings.get(id++)); - } - } - break; - case 2: - while (charset.length <= length) { - id = (bytes[pos++] << 8) | bytes[pos++]; - count = (bytes[pos++] << 8) | bytes[pos++]; - for (i = 0; i <= count; i++) { - charset.push(cid ? id++ : strings.get(id++)); - } - } - break; - default: - error('Unknown charset format'); - } - // Raw won't be needed if we actually compile the charset. - var end = pos; - var raw = bytes.subarray(start, end); - - return new CFFCharset(false, format, charset, raw); - }, - parseEncoding: function CFFParser_parseEncoding(pos, - properties, - strings, - charset) { - var encoding = {}; - var bytes = this.bytes; - var predefined = false; - var hasSupplement = false; - var format, i, ii; - var raw = null; - - function readSupplement() { - var supplementsCount = bytes[pos++]; - for (i = 0; i < supplementsCount; i++) { - var code = bytes[pos++]; - var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); - encoding[code] = charset.indexOf(strings.get(sid)); - } - } - - if (pos === 0 || pos === 1) { - predefined = true; - format = pos; - var baseEncoding = pos ? Encodings.ExpertEncoding : - Encodings.StandardEncoding; - for (i = 0, ii = charset.length; i < ii; i++) { - var index = baseEncoding.indexOf(charset[i]); - if (index !== -1) { - encoding[index] = i; - } - } - } else { - var dataStart = pos; - format = bytes[pos++]; - switch (format & 0x7f) { - case 0: - var glyphsCount = bytes[pos++]; - for (i = 1; i <= glyphsCount; i++) { - encoding[bytes[pos++]] = i; - } - break; - - case 1: - var rangesCount = bytes[pos++]; - var gid = 1; - for (i = 0; i < rangesCount; i++) { - var start = bytes[pos++]; - var left = bytes[pos++]; - for (var j = start; j <= start + left; j++) { - encoding[j] = gid++; - } - } - break; - - default: - error('Unknow encoding format: ' + format + ' in CFF'); - break; - } - var dataEnd = pos; - if (format & 0x80) { - // The font sanitizer does not support CFF encoding with a - // supplement, since the encoding is not really used to map - // between gid to glyph, let's overwrite what is declared in - // the top dictionary to let the sanitizer think the font use - // StandardEncoding, that's a lie but that's ok. - bytes[dataStart] &= 0x7f; - readSupplement(); - hasSupplement = true; - } - raw = bytes.subarray(dataStart, dataEnd); - } - format = format & 0x7f; - return new CFFEncoding(predefined, format, encoding, raw); - }, - parseFDSelect: function CFFParser_parseFDSelect(pos, length) { - var start = pos; - var bytes = this.bytes; - var format = bytes[pos++]; - var fdSelect = []; - var i; - - switch (format) { - case 0: - for (i = 0; i < length; ++i) { - var id = bytes[pos++]; - fdSelect.push(id); - } - break; - case 3: - var rangesCount = (bytes[pos++] << 8) | bytes[pos++]; - for (i = 0; i < rangesCount; ++i) { - var first = (bytes[pos++] << 8) | bytes[pos++]; - var fdIndex = bytes[pos++]; - var next = (bytes[pos] << 8) | bytes[pos + 1]; - for (var j = first; j < next; ++j) { - fdSelect.push(fdIndex); - } - } - // Advance past the sentinel(next). - pos += 2; - break; - default: - error('Unknown fdselect format ' + format); - break; - } - var end = pos; - return new CFFFDSelect(fdSelect, bytes.subarray(start, end)); - } - }; - return CFFParser; -})(); - -// Compact Font Format -var CFF = (function CFFClosure() { - function CFF() { - this.header = null; - this.names = []; - this.topDict = null; - this.strings = new CFFStrings(); - this.globalSubrIndex = null; - - // The following could really be per font, but since we only have one font - // store them here. - this.encoding = null; - this.charset = null; - this.charStrings = null; - this.fdArray = []; - this.fdSelect = null; - - this.isCIDFont = false; - } - return CFF; -})(); - -var CFFHeader = (function CFFHeaderClosure() { - function CFFHeader(major, minor, hdrSize, offSize) { - this.major = major; - this.minor = minor; - this.hdrSize = hdrSize; - this.offSize = offSize; - } - return CFFHeader; -})(); - -var CFFStrings = (function CFFStringsClosure() { - function CFFStrings() { - this.strings = []; - } - CFFStrings.prototype = { - get: function CFFStrings_get(index) { - if (index >= 0 && index <= 390) { - return CFFStandardStrings[index]; - } - if (index - 391 <= this.strings.length) { - return this.strings[index - 391]; - } - return CFFStandardStrings[0]; - }, - add: function CFFStrings_add(value) { - this.strings.push(value); - }, - get count() { - return this.strings.length; - } - }; - return CFFStrings; -})(); - -var CFFIndex = (function CFFIndexClosure() { - function CFFIndex() { - this.objects = []; - this.length = 0; - } - CFFIndex.prototype = { - add: function CFFIndex_add(data) { - this.length += data.length; - this.objects.push(data); - }, - set: function CFFIndex_set(index, data) { - this.length += data.length - this.objects[index].length; - this.objects[index] = data; - }, - get: function CFFIndex_get(index) { - return this.objects[index]; - }, - get count() { - return this.objects.length; - } - }; - return CFFIndex; -})(); - -var CFFDict = (function CFFDictClosure() { - function CFFDict(tables, strings) { - this.keyToNameMap = tables.keyToNameMap; - this.nameToKeyMap = tables.nameToKeyMap; - this.defaults = tables.defaults; - this.types = tables.types; - this.opcodes = tables.opcodes; - this.order = tables.order; - this.strings = strings; - this.values = {}; - } - CFFDict.prototype = { - // value should always be an array - setByKey: function CFFDict_setByKey(key, value) { - if (!(key in this.keyToNameMap)) { - return false; - } - // ignore empty values - if (value.length === 0) { - return true; - } - var type = this.types[key]; - // remove the array wrapping these types of values - if (type === 'num' || type === 'sid' || type === 'offset') { - value = value[0]; - } - this.values[key] = value; - return true; - }, - setByName: function CFFDict_setByName(name, value) { - if (!(name in this.nameToKeyMap)) { - error('Invalid dictionary name "' + name + '"'); - } - this.values[this.nameToKeyMap[name]] = value; - }, - hasName: function CFFDict_hasName(name) { - return this.nameToKeyMap[name] in this.values; - }, - getByName: function CFFDict_getByName(name) { - if (!(name in this.nameToKeyMap)) { - error('Invalid dictionary name "' + name + '"'); - } - var key = this.nameToKeyMap[name]; - if (!(key in this.values)) { - return this.defaults[key]; - } - return this.values[key]; - }, - removeByName: function CFFDict_removeByName(name) { - delete this.values[this.nameToKeyMap[name]]; - } - }; - CFFDict.createTables = function CFFDict_createTables(layout) { - var tables = { - keyToNameMap: {}, - nameToKeyMap: {}, - defaults: {}, - types: {}, - opcodes: {}, - order: [] - }; - for (var i = 0, ii = layout.length; i < ii; ++i) { - var entry = layout[i]; - var key = isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0]; - tables.keyToNameMap[key] = entry[1]; - tables.nameToKeyMap[entry[1]] = key; - tables.types[key] = entry[2]; - tables.defaults[key] = entry[3]; - tables.opcodes[key] = isArray(entry[0]) ? entry[0] : [entry[0]]; - tables.order.push(key); - } - return tables; - }; - return CFFDict; -})(); - -var CFFTopDict = (function CFFTopDictClosure() { - var layout = [ - [[12, 30], 'ROS', ['sid', 'sid', 'num'], null], - [[12, 20], 'SyntheticBase', 'num', null], - [0, 'version', 'sid', null], - [1, 'Notice', 'sid', null], - [[12, 0], 'Copyright', 'sid', null], - [2, 'FullName', 'sid', null], - [3, 'FamilyName', 'sid', null], - [4, 'Weight', 'sid', null], - [[12, 1], 'isFixedPitch', 'num', 0], - [[12, 2], 'ItalicAngle', 'num', 0], - [[12, 3], 'UnderlinePosition', 'num', -100], - [[12, 4], 'UnderlineThickness', 'num', 50], - [[12, 5], 'PaintType', 'num', 0], - [[12, 6], 'CharstringType', 'num', 2], - [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'], - [0.001, 0, 0, 0.001, 0, 0]], - [13, 'UniqueID', 'num', null], - [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]], - [[12, 8], 'StrokeWidth', 'num', 0], - [14, 'XUID', 'array', null], - [15, 'charset', 'offset', 0], - [16, 'Encoding', 'offset', 0], - [17, 'CharStrings', 'offset', 0], - [18, 'Private', ['offset', 'offset'], null], - [[12, 21], 'PostScript', 'sid', null], - [[12, 22], 'BaseFontName', 'sid', null], - [[12, 23], 'BaseFontBlend', 'delta', null], - [[12, 31], 'CIDFontVersion', 'num', 0], - [[12, 32], 'CIDFontRevision', 'num', 0], - [[12, 33], 'CIDFontType', 'num', 0], - [[12, 34], 'CIDCount', 'num', 8720], - [[12, 35], 'UIDBase', 'num', null], - // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes - // before FDArray. - [[12, 37], 'FDSelect', 'offset', null], - [[12, 36], 'FDArray', 'offset', null], - [[12, 38], 'FontName', 'sid', null] - ]; - var tables = null; - function CFFTopDict(strings) { - if (tables === null) { - tables = CFFDict.createTables(layout); - } - CFFDict.call(this, tables, strings); - this.privateDict = null; - } - CFFTopDict.prototype = Object.create(CFFDict.prototype); - return CFFTopDict; -})(); - -var CFFPrivateDict = (function CFFPrivateDictClosure() { - var layout = [ - [6, 'BlueValues', 'delta', null], - [7, 'OtherBlues', 'delta', null], - [8, 'FamilyBlues', 'delta', null], - [9, 'FamilyOtherBlues', 'delta', null], - [[12, 9], 'BlueScale', 'num', 0.039625], - [[12, 10], 'BlueShift', 'num', 7], - [[12, 11], 'BlueFuzz', 'num', 1], - [10, 'StdHW', 'num', null], - [11, 'StdVW', 'num', null], - [[12, 12], 'StemSnapH', 'delta', null], - [[12, 13], 'StemSnapV', 'delta', null], - [[12, 14], 'ForceBold', 'num', 0], - [[12, 17], 'LanguageGroup', 'num', 0], - [[12, 18], 'ExpansionFactor', 'num', 0.06], - [[12, 19], 'initialRandomSeed', 'num', 0], - [20, 'defaultWidthX', 'num', 0], - [21, 'nominalWidthX', 'num', 0], - [19, 'Subrs', 'offset', null] - ]; - var tables = null; - function CFFPrivateDict(strings) { - if (tables === null) { - tables = CFFDict.createTables(layout); - } - CFFDict.call(this, tables, strings); - this.subrsIndex = null; - } - CFFPrivateDict.prototype = Object.create(CFFDict.prototype); - return CFFPrivateDict; -})(); - -var CFFCharsetPredefinedTypes = { - ISO_ADOBE: 0, - EXPERT: 1, - EXPERT_SUBSET: 2 -}; -var CFFCharset = (function CFFCharsetClosure() { - function CFFCharset(predefined, format, charset, raw) { - this.predefined = predefined; - this.format = format; - this.charset = charset; - this.raw = raw; - } - return CFFCharset; -})(); - -var CFFEncoding = (function CFFEncodingClosure() { - function CFFEncoding(predefined, format, encoding, raw) { - this.predefined = predefined; - this.format = format; - this.encoding = encoding; - this.raw = raw; - } - return CFFEncoding; -})(); - -var CFFFDSelect = (function CFFFDSelectClosure() { - function CFFFDSelect(fdSelect, raw) { - this.fdSelect = fdSelect; - this.raw = raw; - } - return CFFFDSelect; -})(); - -// Helper class to keep track of where an offset is within the data and helps -// filling in that offset once it's known. -var CFFOffsetTracker = (function CFFOffsetTrackerClosure() { - function CFFOffsetTracker() { - this.offsets = {}; - } - CFFOffsetTracker.prototype = { - isTracking: function CFFOffsetTracker_isTracking(key) { - return key in this.offsets; - }, - track: function CFFOffsetTracker_track(key, location) { - if (key in this.offsets) { - error('Already tracking location of ' + key); - } - this.offsets[key] = location; - }, - offset: function CFFOffsetTracker_offset(value) { - for (var key in this.offsets) { - this.offsets[key] += value; - } - }, - setEntryLocation: function CFFOffsetTracker_setEntryLocation(key, - values, - output) { - if (!(key in this.offsets)) { - error('Not tracking location of ' + key); - } - var data = output.data; - var dataOffset = this.offsets[key]; - var size = 5; - for (var i = 0, ii = values.length; i < ii; ++i) { - var offset0 = i * size + dataOffset; - var offset1 = offset0 + 1; - var offset2 = offset0 + 2; - var offset3 = offset0 + 3; - var offset4 = offset0 + 4; - // It's easy to screw up offsets so perform this sanity check. - if (data[offset0] !== 0x1d || data[offset1] !== 0 || - data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) { - error('writing to an offset that is not empty'); - } - var value = values[i]; - data[offset0] = 0x1d; - data[offset1] = (value >> 24) & 0xFF; - data[offset2] = (value >> 16) & 0xFF; - data[offset3] = (value >> 8) & 0xFF; - data[offset4] = value & 0xFF; - } - } - }; - return CFFOffsetTracker; -})(); - -// Takes a CFF and converts it to the binary representation. -var CFFCompiler = (function CFFCompilerClosure() { - function CFFCompiler(cff) { - this.cff = cff; - } - CFFCompiler.prototype = { - compile: function CFFCompiler_compile() { - var cff = this.cff; - var output = { - data: [], - length: 0, - add: function CFFCompiler_add(data) { - this.data = this.data.concat(data); - this.length = this.data.length; - } - }; - - // Compile the five entries that must be in order. - var header = this.compileHeader(cff.header); - output.add(header); - - var nameIndex = this.compileNameIndex(cff.names); - output.add(nameIndex); - - if (cff.isCIDFont) { - // The spec is unclear on how font matrices should relate to each other - // when there is one in the main top dict and the sub top dicts. - // Windows handles this differently than linux and osx so we have to - // normalize to work on all. - // Rules based off of some mailing list discussions: - // - If main font has a matrix and subfont doesn't, use the main matrix. - // - If no main font matrix and there is a subfont matrix, use the - // subfont matrix. - // - If both have matrices, concat together. - // - If neither have matrices, use default. - // To make this work on all platforms we move the top matrix into each - // sub top dict and concat if necessary. - if (cff.topDict.hasName('FontMatrix')) { - var base = cff.topDict.getByName('FontMatrix'); - cff.topDict.removeByName('FontMatrix'); - for (var i = 0, ii = cff.fdArray.length; i < ii; i++) { - var subDict = cff.fdArray[i]; - var matrix = base.slice(0); - if (subDict.hasName('FontMatrix')) { - matrix = Util.transform(matrix, subDict.getByName('FontMatrix')); - } - subDict.setByName('FontMatrix', matrix); - } - } - } - - var compiled = this.compileTopDicts([cff.topDict], - output.length, - cff.isCIDFont); - output.add(compiled.output); - var topDictTracker = compiled.trackers[0]; - - var stringIndex = this.compileStringIndex(cff.strings.strings); - output.add(stringIndex); - - var globalSubrIndex = this.compileIndex(cff.globalSubrIndex); - output.add(globalSubrIndex); - - // Now start on the other entries that have no specfic order. - if (cff.encoding && cff.topDict.hasName('Encoding')) { - if (cff.encoding.predefined) { - topDictTracker.setEntryLocation('Encoding', [cff.encoding.format], - output); - } else { - var encoding = this.compileEncoding(cff.encoding); - topDictTracker.setEntryLocation('Encoding', [output.length], output); - output.add(encoding); - } - } - - if (cff.charset && cff.topDict.hasName('charset')) { - if (cff.charset.predefined) { - topDictTracker.setEntryLocation('charset', [cff.charset.format], - output); - } else { - var charset = this.compileCharset(cff.charset); - topDictTracker.setEntryLocation('charset', [output.length], output); - output.add(charset); - } - } - - var charStrings = this.compileCharStrings(cff.charStrings); - topDictTracker.setEntryLocation('CharStrings', [output.length], output); - output.add(charStrings); - - if (cff.isCIDFont) { - // For some reason FDSelect must be in front of FDArray on windows. OSX - // and linux don't seem to care. - topDictTracker.setEntryLocation('FDSelect', [output.length], output); - var fdSelect = this.compileFDSelect(cff.fdSelect.raw); - output.add(fdSelect); - // It is unclear if the sub font dictionary can have CID related - // dictionary keys, but the sanitizer doesn't like them so remove them. - compiled = this.compileTopDicts(cff.fdArray, output.length, true); - topDictTracker.setEntryLocation('FDArray', [output.length], output); - output.add(compiled.output); - var fontDictTrackers = compiled.trackers; - - this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output); - } - - this.compilePrivateDicts([cff.topDict], [topDictTracker], output); - - // If the font data ends with INDEX whose object data is zero-length, - // the sanitizer will bail out. Add a dummy byte to avoid that. - output.add([0]); - - return output.data; - }, - encodeNumber: function CFFCompiler_encodeNumber(value) { - if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) { // isInt - return this.encodeInteger(value); - } else { - return this.encodeFloat(value); - } - }, - encodeFloat: function CFFCompiler_encodeFloat(num) { - var value = num.toString(); - - // rounding inaccurate doubles - var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value); - if (m) { - var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length)); - value = (Math.round(num * epsilon) / epsilon).toString(); - } - - var nibbles = ''; - var i, ii; - for (i = 0, ii = value.length; i < ii; ++i) { - var a = value[i]; - if (a === 'e') { - nibbles += value[++i] === '-' ? 'c' : 'b'; - } else if (a === '.') { - nibbles += 'a'; - } else if (a === '-') { - nibbles += 'e'; - } else { - nibbles += a; - } - } - nibbles += (nibbles.length & 1) ? 'f' : 'ff'; - var out = [30]; - for (i = 0, ii = nibbles.length; i < ii; i += 2) { - out.push(parseInt(nibbles.substr(i, 2), 16)); - } - return out; - }, - encodeInteger: function CFFCompiler_encodeInteger(value) { - var code; - if (value >= -107 && value <= 107) { - code = [value + 139]; - } else if (value >= 108 && value <= 1131) { - value = [value - 108]; - code = [(value >> 8) + 247, value & 0xFF]; - } else if (value >= -1131 && value <= -108) { - value = -value - 108; - code = [(value >> 8) + 251, value & 0xFF]; - } else if (value >= -32768 && value <= 32767) { - code = [0x1c, (value >> 8) & 0xFF, value & 0xFF]; - } else { - code = [0x1d, - (value >> 24) & 0xFF, - (value >> 16) & 0xFF, - (value >> 8) & 0xFF, - value & 0xFF]; - } - return code; - }, - compileHeader: function CFFCompiler_compileHeader(header) { - return [ - header.major, - header.minor, - header.hdrSize, - header.offSize - ]; - }, - compileNameIndex: function CFFCompiler_compileNameIndex(names) { - var nameIndex = new CFFIndex(); - for (var i = 0, ii = names.length; i < ii; ++i) { - nameIndex.add(stringToBytes(names[i])); - } - return this.compileIndex(nameIndex); - }, - compileTopDicts: function CFFCompiler_compileTopDicts(dicts, - length, - removeCidKeys) { - var fontDictTrackers = []; - var fdArrayIndex = new CFFIndex(); - for (var i = 0, ii = dicts.length; i < ii; ++i) { - var fontDict = dicts[i]; - if (removeCidKeys) { - fontDict.removeByName('CIDFontVersion'); - fontDict.removeByName('CIDFontRevision'); - fontDict.removeByName('CIDFontType'); - fontDict.removeByName('CIDCount'); - fontDict.removeByName('UIDBase'); - } - var fontDictTracker = new CFFOffsetTracker(); - var fontDictData = this.compileDict(fontDict, fontDictTracker); - fontDictTrackers.push(fontDictTracker); - fdArrayIndex.add(fontDictData); - fontDictTracker.offset(length); - } - fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers); - return { - trackers: fontDictTrackers, - output: fdArrayIndex - }; - }, - compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts, - trackers, - output) { - for (var i = 0, ii = dicts.length; i < ii; ++i) { - var fontDict = dicts[i]; - assert(fontDict.privateDict && fontDict.hasName('Private'), - 'There must be an private dictionary.'); - var privateDict = fontDict.privateDict; - var privateDictTracker = new CFFOffsetTracker(); - var privateDictData = this.compileDict(privateDict, privateDictTracker); - - var outputLength = output.length; - privateDictTracker.offset(outputLength); - if (!privateDictData.length) { - // The private dictionary was empty, set the output length to zero to - // ensure the offset length isn't out of bounds in the eyes of the - // sanitizer. - outputLength = 0; - } - - trackers[i].setEntryLocation('Private', - [privateDictData.length, outputLength], - output); - output.add(privateDictData); - - if (privateDict.subrsIndex && privateDict.hasName('Subrs')) { - var subrs = this.compileIndex(privateDict.subrsIndex); - privateDictTracker.setEntryLocation('Subrs', [privateDictData.length], - output); - output.add(subrs); - } - } - }, - compileDict: function CFFCompiler_compileDict(dict, offsetTracker) { - var out = []; - // The dictionary keys must be in a certain order. - var order = dict.order; - for (var i = 0; i < order.length; ++i) { - var key = order[i]; - if (!(key in dict.values)) { - continue; - } - var values = dict.values[key]; - var types = dict.types[key]; - if (!isArray(types)) { - types = [types]; - } - if (!isArray(values)) { - values = [values]; - } - - // Remove any empty dict values. - if (values.length === 0) { - continue; - } - - for (var j = 0, jj = types.length; j < jj; ++j) { - var type = types[j]; - var value = values[j]; - switch (type) { - case 'num': - case 'sid': - out = out.concat(this.encodeNumber(value)); - break; - case 'offset': - // For offsets we just insert a 32bit integer so we don't have to - // deal with figuring out the length of the offset when it gets - // replaced later on by the compiler. - var name = dict.keyToNameMap[key]; - // Some offsets have the offset and the length, so just record the - // position of the first one. - if (!offsetTracker.isTracking(name)) { - offsetTracker.track(name, out.length); - } - out = out.concat([0x1d, 0, 0, 0, 0]); - break; - case 'array': - case 'delta': - out = out.concat(this.encodeNumber(value)); - for (var k = 1, kk = values.length; k < kk; ++k) { - out = out.concat(this.encodeNumber(values[k])); - } - break; - default: - error('Unknown data type of ' + type); - break; - } - } - out = out.concat(dict.opcodes[key]); - } - return out; - }, - compileStringIndex: function CFFCompiler_compileStringIndex(strings) { - var stringIndex = new CFFIndex(); - for (var i = 0, ii = strings.length; i < ii; ++i) { - stringIndex.add(stringToBytes(strings[i])); - } - return this.compileIndex(stringIndex); - }, - compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() { - var globalSubrIndex = this.cff.globalSubrIndex; - this.out.writeByteArray(this.compileIndex(globalSubrIndex)); - }, - compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) { - return this.compileIndex(charStrings); - }, - compileCharset: function CFFCompiler_compileCharset(charset) { - return this.compileTypedArray(charset.raw); - }, - compileEncoding: function CFFCompiler_compileEncoding(encoding) { - return this.compileTypedArray(encoding.raw); - }, - compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) { - return this.compileTypedArray(fdSelect); - }, - compileTypedArray: function CFFCompiler_compileTypedArray(data) { - var out = []; - for (var i = 0, ii = data.length; i < ii; ++i) { - out[i] = data[i]; - } - return out; - }, - compileIndex: function CFFCompiler_compileIndex(index, trackers) { - trackers = trackers || []; - var objects = index.objects; - // First 2 bytes contains the number of objects contained into this index - var count = objects.length; - - // If there is no object, just create an index. This technically - // should just be [0, 0] but OTS has an issue with that. - if (count === 0) { - return [0, 0, 0]; - } - - var data = [(count >> 8) & 0xFF, count & 0xff]; - - var lastOffset = 1, i; - for (i = 0; i < count; ++i) { - lastOffset += objects[i].length; - } - - var offsetSize; - if (lastOffset < 0x100) { - offsetSize = 1; - } else if (lastOffset < 0x10000) { - offsetSize = 2; - } else if (lastOffset < 0x1000000) { - offsetSize = 3; - } else { - offsetSize = 4; - } - - // Next byte contains the offset size use to reference object in the file - data.push(offsetSize); - - // Add another offset after this one because we need a new offset - var relativeOffset = 1; - for (i = 0; i < count + 1; i++) { - if (offsetSize === 1) { - data.push(relativeOffset & 0xFF); - } else if (offsetSize === 2) { - data.push((relativeOffset >> 8) & 0xFF, - relativeOffset & 0xFF); - } else if (offsetSize === 3) { - data.push((relativeOffset >> 16) & 0xFF, - (relativeOffset >> 8) & 0xFF, - relativeOffset & 0xFF); - } else { - data.push((relativeOffset >>> 24) & 0xFF, - (relativeOffset >> 16) & 0xFF, - (relativeOffset >> 8) & 0xFF, - relativeOffset & 0xFF); - } - - if (objects[i]) { - relativeOffset += objects[i].length; - } - } - - for (i = 0; i < count; i++) { - // Notify the tracker where the object will be offset in the data. - if (trackers[i]) { - trackers[i].offset(data.length); - } - for (var j = 0, jj = objects[i].length; j < jj; j++) { - data.push(objects[i][j]); - } - } - return data; - } - }; - return CFFCompiler; -})(); - -// Workaround for seac on Windows. -(function checkSeacSupport() { - if (/Windows/.test(navigator.userAgent)) { - SEAC_ANALYSIS_ENABLED = true; - } -})(); - -// Workaround for Private Use Area characters in Chrome on Windows -// http://code.google.com/p/chromium/issues/detail?id=122465 -// https://github.com/mozilla/pdf.js/issues/1689 -(function checkChromeWindows() { - if (/Windows.*Chrome/.test(navigator.userAgent)) { - SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = true; - } -})(); - - -var FontRendererFactory = (function FontRendererFactoryClosure() { - function getLong(data, offset) { - return (data[offset] << 24) | (data[offset + 1] << 16) | - (data[offset + 2] << 8) | data[offset + 3]; - } - - function getUshort(data, offset) { - return (data[offset] << 8) | data[offset + 1]; - } - - function parseCmap(data, start, end) { - var offset = (getUshort(data, start + 2) === 1 ? - getLong(data, start + 8) : getLong(data, start + 16)); - var format = getUshort(data, start + offset); - var length, ranges, p, i; - if (format === 4) { - length = getUshort(data, start + offset + 2); - var segCount = getUshort(data, start + offset + 6) >> 1; - p = start + offset + 14; - ranges = []; - for (i = 0; i < segCount; i++, p += 2) { - ranges[i] = {end: getUshort(data, p)}; - } - p += 2; - for (i = 0; i < segCount; i++, p += 2) { - ranges[i].start = getUshort(data, p); - } - for (i = 0; i < segCount; i++, p += 2) { - ranges[i].idDelta = getUshort(data, p); - } - for (i = 0; i < segCount; i++, p += 2) { - var idOffset = getUshort(data, p); - if (idOffset === 0) { - continue; - } - ranges[i].ids = []; - for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) { - ranges[i].ids[j] = getUshort(data, p + idOffset); - idOffset += 2; - } - } - return ranges; - } else if (format === 12) { - length = getLong(data, start + offset + 4); - var groups = getLong(data, start + offset + 12); - p = start + offset + 16; - ranges = []; - for (i = 0; i < groups; i++) { - ranges.push({ - start: getLong(data, p), - end: getLong(data, p + 4), - idDelta: getLong(data, p + 8) - getLong(data, p) - }); - p += 12; - } - return ranges; - } - error('not supported cmap: ' + format); - } - - function parseCff(data, start, end) { - var properties = {}; - var parser = new CFFParser(new Stream(data, start, end - start), - properties); - var cff = parser.parse(); - return { - glyphs: cff.charStrings.objects, - subrs: (cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && - cff.topDict.privateDict.subrsIndex.objects), - gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects - }; - } - - function parseGlyfTable(glyf, loca, isGlyphLocationsLong) { - var itemSize, itemDecode; - if (isGlyphLocationsLong) { - itemSize = 4; - itemDecode = function fontItemDecodeLong(data, offset) { - return (data[offset] << 24) | (data[offset + 1] << 16) | - (data[offset + 2] << 8) | data[offset + 3]; - }; - } else { - itemSize = 2; - itemDecode = function fontItemDecode(data, offset) { - return (data[offset] << 9) | (data[offset + 1] << 1); - }; - } - var glyphs = []; - var startOffset = itemDecode(loca, 0); - for (var j = itemSize; j < loca.length; j += itemSize) { - var endOffset = itemDecode(loca, j); - glyphs.push(glyf.subarray(startOffset, endOffset)); - startOffset = endOffset; - } - return glyphs; - } - - function lookupCmap(ranges, unicode) { - var code = unicode.charCodeAt(0); - var l = 0, r = ranges.length - 1; - while (l < r) { - var c = (l + r + 1) >> 1; - if (code < ranges[c].start) { - r = c - 1; - } else { - l = c; - } - } - if (ranges[l].start <= code && code <= ranges[l].end) { - return (ranges[l].idDelta + (ranges[l].ids ? - ranges[l].ids[code - ranges[l].start] : code)) & 0xFFFF; - } - return 0; - } - - function compileGlyf(code, cmds, font) { - function moveTo(x, y) { - cmds.push({cmd: 'moveTo', args: [x, y]}); - } - function lineTo(x, y) { - cmds.push({cmd: 'lineTo', args: [x, y]}); - } - function quadraticCurveTo(xa, ya, x, y) { - cmds.push({cmd: 'quadraticCurveTo', args: [xa, ya, x, y]}); - } - - var i = 0; - var numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16; - var flags; - var x = 0, y = 0; - i += 10; - if (numberOfContours < 0) { - // composite glyph - do { - flags = (code[i] << 8) | code[i + 1]; - var glyphIndex = (code[i + 2] << 8) | code[i + 3]; - i += 4; - var arg1, arg2; - if ((flags & 0x01)) { - arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16; - arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16; - i += 4; - } else { - arg1 = code[i++]; arg2 = code[i++]; - } - if ((flags & 0x02)) { - x = arg1; - y = arg2; - } else { - x = 0; y = 0; // TODO "they are points" ? - } - var scaleX = 1, scaleY = 1, scale01 = 0, scale10 = 0; - if ((flags & 0x08)) { - scaleX = - scaleY = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824; - i += 2; - } else if ((flags & 0x40)) { - scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824; - scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824; - i += 4; - } else if ((flags & 0x80)) { - scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824; - scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824; - scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824; - scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824; - i += 8; - } - var subglyph = font.glyphs[glyphIndex]; - if (subglyph) { - cmds.push({cmd: 'save'}); - cmds.push({cmd: 'transform', - args: [scaleX, scale01, scale10, scaleY, x, y]}); - compileGlyf(subglyph, cmds, font); - cmds.push({cmd: 'restore'}); - } - } while ((flags & 0x20)); - } else { - // simple glyph - var endPtsOfContours = []; - var j, jj; - for (j = 0; j < numberOfContours; j++) { - endPtsOfContours.push((code[i] << 8) | code[i + 1]); - i += 2; - } - var instructionLength = (code[i] << 8) | code[i + 1]; - i += 2 + instructionLength; // skipping the instructions - var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1; - var points = []; - while (points.length < numberOfPoints) { - flags = code[i++]; - var repeat = 1; - if ((flags & 0x08)) { - repeat += code[i++]; - } - while (repeat-- > 0) { - points.push({flags: flags}); - } - } - for (j = 0; j < numberOfPoints; j++) { - switch (points[j].flags & 0x12) { - case 0x00: - x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16; - i += 2; - break; - case 0x02: - x -= code[i++]; - break; - case 0x12: - x += code[i++]; - break; - } - points[j].x = x; - } - for (j = 0; j < numberOfPoints; j++) { - switch (points[j].flags & 0x24) { - case 0x00: - y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16; - i += 2; - break; - case 0x04: - y -= code[i++]; - break; - case 0x24: - y += code[i++]; - break; - } - points[j].y = y; - } - - var startPoint = 0; - for (i = 0; i < numberOfContours; i++) { - var endPoint = endPtsOfContours[i]; - // contours might have implicit points, which is located in the middle - // between two neighboring off-curve points - var contour = points.slice(startPoint, endPoint + 1); - if ((contour[0].flags & 1)) { - contour.push(contour[0]); // using start point at the contour end - } else if ((contour[contour.length - 1].flags & 1)) { - // first is off-curve point, trying to use one from the end - contour.unshift(contour[contour.length - 1]); - } else { - // start and end are off-curve points, creating implicit one - var p = { - flags: 1, - x: (contour[0].x + contour[contour.length - 1].x) / 2, - y: (contour[0].y + contour[contour.length - 1].y) / 2 - }; - contour.unshift(p); - contour.push(p); - } - moveTo(contour[0].x, contour[0].y); - for (j = 1, jj = contour.length; j < jj; j++) { - if ((contour[j].flags & 1)) { - lineTo(contour[j].x, contour[j].y); - } else if ((contour[j + 1].flags & 1)){ - quadraticCurveTo(contour[j].x, contour[j].y, - contour[j + 1].x, contour[j + 1].y); - j++; - } else { - quadraticCurveTo(contour[j].x, contour[j].y, - (contour[j].x + contour[j + 1].x) / 2, - (contour[j].y + contour[j + 1].y) / 2); - } - } - startPoint = endPoint + 1; - } - } - } - - function compileCharString(code, cmds, font) { - var stack = []; - var x = 0, y = 0; - var stems = 0; - - function moveTo(x, y) { - cmds.push({cmd: 'moveTo', args: [x, y]}); - } - function lineTo(x, y) { - cmds.push({cmd: 'lineTo', args: [x, y]}); - } - function bezierCurveTo(x1, y1, x2, y2, x, y) { - cmds.push({cmd: 'bezierCurveTo', args: [x1, y1, x2, y2, x, y]}); - } - - function parse(code) { - var i = 0; - while (i < code.length) { - var stackClean = false; - var v = code[i++]; - var xa, xb, ya, yb, y1, y2, y3, n, subrCode; - switch (v) { - case 1: // hstem - stems += stack.length >> 1; - stackClean = true; - break; - case 3: // vstem - stems += stack.length >> 1; - stackClean = true; - break; - case 4: // vmoveto - y += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - case 5: // rlineto - while (stack.length > 0) { - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - } - break; - case 6: // hlineto - while (stack.length > 0) { - x += stack.shift(); - lineTo(x, y); - if (stack.length === 0) { - break; - } - y += stack.shift(); - lineTo(x, y); - } - break; - case 7: // vlineto - while (stack.length > 0) { - y += stack.shift(); - lineTo(x, y); - if (stack.length === 0) { - break; - } - x += stack.shift(); - lineTo(x, y); - } - break; - case 8: // rrcurveto - while (stack.length > 0) { - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - case 10: // callsubr - n = stack.pop() + font.subrsBias; - subrCode = font.subrs[n]; - if (subrCode) { - parse(subrCode); - } - break; - case 11: // return - return; - case 12: - v = code[i++]; - switch (v) { - case 34: // flex - xa = x + stack.shift(); - xb = xa + stack.shift(); y1 = y + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y, xb, y1, x, y1); - xa = x + stack.shift(); - xb = xa + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y1, xb, y, x, y); - break; - case 35: // flex - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - stack.pop(); // fd - break; - case 36: // hflex1 - xa = x + stack.shift(); y1 = y + stack.shift(); - xb = xa + stack.shift(); y2 = y1 + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y1, xb, y2, x, y2); - xa = x + stack.shift(); - xb = xa + stack.shift(); y3 = y2 + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y2, xb, y3, x, y); - break; - case 37: // flex1 - var x0 = x, y0 = y; - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb; y = yb; - if (Math.abs(x - x0) > Math.abs(y - y0)) { - x += stack.shift(); - } else { - y += stack.shift(); - } - bezierCurveTo(xa, ya, xb, yb, x, y); - break; - default: - error('unknown operator: 12 ' + v); - } - break; - case 14: // endchar - if (stack.length >= 4) { - var achar = stack.pop(); - var bchar = stack.pop(); - y = stack.pop(); - x = stack.pop(); - cmds.push({cmd: 'save'}); - cmds.push({cmd: 'translate', args: [x, y]}); - var gid = lookupCmap(font.cmap, String.fromCharCode( - font.glyphNameMap[Encodings.StandardEncoding[achar]])); - compileCharString(font.glyphs[gid], cmds, font); - cmds.push({cmd: 'restore'}); - - gid = lookupCmap(font.cmap, String.fromCharCode( - font.glyphNameMap[Encodings.StandardEncoding[bchar]])); - compileCharString(font.glyphs[gid], cmds, font); - } - return; - case 18: // hstemhm - stems += stack.length >> 1; - stackClean = true; - break; - case 19: // hintmask - stems += stack.length >> 1; - i += (stems + 7) >> 3; - stackClean = true; - break; - case 20: // cntrmask - stems += stack.length >> 1; - i += (stems + 7) >> 3; - stackClean = true; - break; - case 21: // rmoveto - y += stack.pop(); - x += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - case 22: // hmoveto - x += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - case 23: // vstemhm - stems += stack.length >> 1; - stackClean = true; - break; - case 24: // rcurveline - while (stack.length > 2) { - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - break; - case 25: // rlinecurve - while (stack.length > 6) { - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - } - xa = x + stack.shift(); ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - break; - case 26: // vvcurveto - if (stack.length % 2) { - x += stack.shift(); - } - while (stack.length > 0) { - xa = x; ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb; y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - case 27: // hhcurveto - if (stack.length % 2) { - y += stack.shift(); - } - while (stack.length > 0) { - xa = x + stack.shift(); ya = y; - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); y = yb; - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - case 28: - stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16); - i += 2; - break; - case 29: // callgsubr - n = stack.pop() + font.gsubrsBias; - subrCode = font.gsubrs[n]; - if (subrCode) { - parse(subrCode); - } - break; - case 30: // vhcurveto - while (stack.length > 0) { - xa = x; ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - if (stack.length === 0) { - break; - } - - xa = x + stack.shift(); ya = y; - xb = xa + stack.shift(); yb = ya + stack.shift(); - y = yb + stack.shift(); - x = xb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - case 31: // hvcurveto - while (stack.length > 0) { - xa = x + stack.shift(); ya = y; - xb = xa + stack.shift(); yb = ya + stack.shift(); - y = yb + stack.shift(); - x = xb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - if (stack.length === 0) { - break; - } - - xa = x; ya = y + stack.shift(); - xb = xa + stack.shift(); yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - break; - default: - if (v < 32) { - error('unknown operator: ' + v); - } - if (v < 247) { - stack.push(v - 139); - } else if (v < 251) { - stack.push((v - 247) * 256 + code[i++] + 108); - } else if (v < 255) { - stack.push(-(v - 251) * 256 - code[i++] - 108); - } else { - stack.push(((code[i] << 24) | (code[i + 1] << 16) | - (code[i + 2] << 8) | code[i + 3]) / 65536); - i += 4; - } - break; - } - if (stackClean) { - stack.length = 0; - } - } - } - parse(code); - } - - var noop = ''; - - function CompiledFont(fontMatrix) { - this.compiledGlyphs = {}; - this.fontMatrix = fontMatrix; - } - CompiledFont.prototype = { - getPathJs: function (unicode) { - var gid = lookupCmap(this.cmap, unicode); - var fn = this.compiledGlyphs[gid]; - if (!fn) { - this.compiledGlyphs[gid] = fn = this.compileGlyph(this.glyphs[gid]); - } - return fn; - }, - - compileGlyph: function (code) { - if (!code || code.length === 0 || code[0] === 14) { - return noop; - } - - var cmds = []; - cmds.push({cmd: 'save'}); - cmds.push({cmd: 'transform', args: this.fontMatrix.slice()}); - cmds.push({cmd: 'scale', args: ['size', '-size']}); - - this.compileGlyphImpl(code, cmds); - - cmds.push({cmd: 'restore'}); - - return cmds; - }, - - compileGlyphImpl: function () { - error('Children classes should implement this.'); - }, - - hasBuiltPath: function (unicode) { - var gid = lookupCmap(this.cmap, unicode); - return gid in this.compiledGlyphs; - } - }; - - function TrueTypeCompiled(glyphs, cmap, fontMatrix) { - fontMatrix = fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]; - CompiledFont.call(this, fontMatrix); - - this.glyphs = glyphs; - this.cmap = cmap; - - this.compiledGlyphs = []; - } - - Util.inherit(TrueTypeCompiled, CompiledFont, { - compileGlyphImpl: function (code, cmds) { - compileGlyf(code, cmds, this); - } - }); - - function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) { - fontMatrix = fontMatrix || [0.001, 0, 0, 0.001, 0, 0]; - CompiledFont.call(this, fontMatrix); - this.glyphs = cffInfo.glyphs; - this.gsubrs = cffInfo.gsubrs || []; - this.subrs = cffInfo.subrs || []; - this.cmap = cmap; - this.glyphNameMap = glyphNameMap || GlyphsUnicode; - - this.compiledGlyphs = []; - this.gsubrsBias = (this.gsubrs.length < 1240 ? - 107 : (this.gsubrs.length < 33900 ? 1131 : 32768)); - this.subrsBias = (this.subrs.length < 1240 ? - 107 : (this.subrs.length < 33900 ? 1131 : 32768)); - } - - Util.inherit(Type2Compiled, CompiledFont, { - compileGlyphImpl: function (code, cmds) { - compileCharString(code, cmds, this); - } - }); - - - return { - create: function FontRendererFactory_create(font) { - var data = new Uint8Array(font.data); - var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm; - var numTables = getUshort(data, 4); - for (var i = 0, p = 12; i < numTables; i++, p += 16) { - var tag = bytesToString(data.subarray(p, p + 4)); - var offset = getLong(data, p + 8); - var length = getLong(data, p + 12); - switch (tag) { - case 'cmap': - cmap = parseCmap(data, offset, offset + length); - break; - case 'glyf': - glyf = data.subarray(offset, offset + length); - break; - case 'loca': - loca = data.subarray(offset, offset + length); - break; - case 'head': - unitsPerEm = getUshort(data, offset + 18); - indexToLocFormat = getUshort(data, offset + 50); - break; - case 'CFF ': - cff = parseCff(data, offset, offset + length); - break; - } - } - - if (glyf) { - var fontMatrix = (!unitsPerEm ? font.fontMatrix : - [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]); - return new TrueTypeCompiled( - parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix); - } else { - return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap); - } - } - }; -})(); - - -var GlyphsUnicode = { - A: 0x0041, - AE: 0x00C6, - AEacute: 0x01FC, - AEmacron: 0x01E2, - AEsmall: 0xF7E6, - Aacute: 0x00C1, - Aacutesmall: 0xF7E1, - Abreve: 0x0102, - Abreveacute: 0x1EAE, - Abrevecyrillic: 0x04D0, - Abrevedotbelow: 0x1EB6, - Abrevegrave: 0x1EB0, - Abrevehookabove: 0x1EB2, - Abrevetilde: 0x1EB4, - Acaron: 0x01CD, - Acircle: 0x24B6, - Acircumflex: 0x00C2, - Acircumflexacute: 0x1EA4, - Acircumflexdotbelow: 0x1EAC, - Acircumflexgrave: 0x1EA6, - Acircumflexhookabove: 0x1EA8, - Acircumflexsmall: 0xF7E2, - Acircumflextilde: 0x1EAA, - Acute: 0xF6C9, - Acutesmall: 0xF7B4, - Acyrillic: 0x0410, - Adblgrave: 0x0200, - Adieresis: 0x00C4, - Adieresiscyrillic: 0x04D2, - Adieresismacron: 0x01DE, - Adieresissmall: 0xF7E4, - Adotbelow: 0x1EA0, - Adotmacron: 0x01E0, - Agrave: 0x00C0, - Agravesmall: 0xF7E0, - Ahookabove: 0x1EA2, - Aiecyrillic: 0x04D4, - Ainvertedbreve: 0x0202, - Alpha: 0x0391, - Alphatonos: 0x0386, - Amacron: 0x0100, - Amonospace: 0xFF21, - Aogonek: 0x0104, - Aring: 0x00C5, - Aringacute: 0x01FA, - Aringbelow: 0x1E00, - Aringsmall: 0xF7E5, - Asmall: 0xF761, - Atilde: 0x00C3, - Atildesmall: 0xF7E3, - Aybarmenian: 0x0531, - B: 0x0042, - Bcircle: 0x24B7, - Bdotaccent: 0x1E02, - Bdotbelow: 0x1E04, - Becyrillic: 0x0411, - Benarmenian: 0x0532, - Beta: 0x0392, - Bhook: 0x0181, - Blinebelow: 0x1E06, - Bmonospace: 0xFF22, - Brevesmall: 0xF6F4, - Bsmall: 0xF762, - Btopbar: 0x0182, - C: 0x0043, - Caarmenian: 0x053E, - Cacute: 0x0106, - Caron: 0xF6CA, - Caronsmall: 0xF6F5, - Ccaron: 0x010C, - Ccedilla: 0x00C7, - Ccedillaacute: 0x1E08, - Ccedillasmall: 0xF7E7, - Ccircle: 0x24B8, - Ccircumflex: 0x0108, - Cdot: 0x010A, - Cdotaccent: 0x010A, - Cedillasmall: 0xF7B8, - Chaarmenian: 0x0549, - Cheabkhasiancyrillic: 0x04BC, - Checyrillic: 0x0427, - Chedescenderabkhasiancyrillic: 0x04BE, - Chedescendercyrillic: 0x04B6, - Chedieresiscyrillic: 0x04F4, - Cheharmenian: 0x0543, - Chekhakassiancyrillic: 0x04CB, - Cheverticalstrokecyrillic: 0x04B8, - Chi: 0x03A7, - Chook: 0x0187, - Circumflexsmall: 0xF6F6, - Cmonospace: 0xFF23, - Coarmenian: 0x0551, - Csmall: 0xF763, - D: 0x0044, - DZ: 0x01F1, - DZcaron: 0x01C4, - Daarmenian: 0x0534, - Dafrican: 0x0189, - Dcaron: 0x010E, - Dcedilla: 0x1E10, - Dcircle: 0x24B9, - Dcircumflexbelow: 0x1E12, - Dcroat: 0x0110, - Ddotaccent: 0x1E0A, - Ddotbelow: 0x1E0C, - Decyrillic: 0x0414, - Deicoptic: 0x03EE, - Delta: 0x2206, - Deltagreek: 0x0394, - Dhook: 0x018A, - Dieresis: 0xF6CB, - DieresisAcute: 0xF6CC, - DieresisGrave: 0xF6CD, - Dieresissmall: 0xF7A8, - Digammagreek: 0x03DC, - Djecyrillic: 0x0402, - Dlinebelow: 0x1E0E, - Dmonospace: 0xFF24, - Dotaccentsmall: 0xF6F7, - Dslash: 0x0110, - Dsmall: 0xF764, - Dtopbar: 0x018B, - Dz: 0x01F2, - Dzcaron: 0x01C5, - Dzeabkhasiancyrillic: 0x04E0, - Dzecyrillic: 0x0405, - Dzhecyrillic: 0x040F, - E: 0x0045, - Eacute: 0x00C9, - Eacutesmall: 0xF7E9, - Ebreve: 0x0114, - Ecaron: 0x011A, - Ecedillabreve: 0x1E1C, - Echarmenian: 0x0535, - Ecircle: 0x24BA, - Ecircumflex: 0x00CA, - Ecircumflexacute: 0x1EBE, - Ecircumflexbelow: 0x1E18, - Ecircumflexdotbelow: 0x1EC6, - Ecircumflexgrave: 0x1EC0, - Ecircumflexhookabove: 0x1EC2, - Ecircumflexsmall: 0xF7EA, - Ecircumflextilde: 0x1EC4, - Ecyrillic: 0x0404, - Edblgrave: 0x0204, - Edieresis: 0x00CB, - Edieresissmall: 0xF7EB, - Edot: 0x0116, - Edotaccent: 0x0116, - Edotbelow: 0x1EB8, - Efcyrillic: 0x0424, - Egrave: 0x00C8, - Egravesmall: 0xF7E8, - Eharmenian: 0x0537, - Ehookabove: 0x1EBA, - Eightroman: 0x2167, - Einvertedbreve: 0x0206, - Eiotifiedcyrillic: 0x0464, - Elcyrillic: 0x041B, - Elevenroman: 0x216A, - Emacron: 0x0112, - Emacronacute: 0x1E16, - Emacrongrave: 0x1E14, - Emcyrillic: 0x041C, - Emonospace: 0xFF25, - Encyrillic: 0x041D, - Endescendercyrillic: 0x04A2, - Eng: 0x014A, - Enghecyrillic: 0x04A4, - Enhookcyrillic: 0x04C7, - Eogonek: 0x0118, - Eopen: 0x0190, - Epsilon: 0x0395, - Epsilontonos: 0x0388, - Ercyrillic: 0x0420, - Ereversed: 0x018E, - Ereversedcyrillic: 0x042D, - Escyrillic: 0x0421, - Esdescendercyrillic: 0x04AA, - Esh: 0x01A9, - Esmall: 0xF765, - Eta: 0x0397, - Etarmenian: 0x0538, - Etatonos: 0x0389, - Eth: 0x00D0, - Ethsmall: 0xF7F0, - Etilde: 0x1EBC, - Etildebelow: 0x1E1A, - Euro: 0x20AC, - Ezh: 0x01B7, - Ezhcaron: 0x01EE, - Ezhreversed: 0x01B8, - F: 0x0046, - Fcircle: 0x24BB, - Fdotaccent: 0x1E1E, - Feharmenian: 0x0556, - Feicoptic: 0x03E4, - Fhook: 0x0191, - Fitacyrillic: 0x0472, - Fiveroman: 0x2164, - Fmonospace: 0xFF26, - Fourroman: 0x2163, - Fsmall: 0xF766, - G: 0x0047, - GBsquare: 0x3387, - Gacute: 0x01F4, - Gamma: 0x0393, - Gammaafrican: 0x0194, - Gangiacoptic: 0x03EA, - Gbreve: 0x011E, - Gcaron: 0x01E6, - Gcedilla: 0x0122, - Gcircle: 0x24BC, - Gcircumflex: 0x011C, - Gcommaaccent: 0x0122, - Gdot: 0x0120, - Gdotaccent: 0x0120, - Gecyrillic: 0x0413, - Ghadarmenian: 0x0542, - Ghemiddlehookcyrillic: 0x0494, - Ghestrokecyrillic: 0x0492, - Gheupturncyrillic: 0x0490, - Ghook: 0x0193, - Gimarmenian: 0x0533, - Gjecyrillic: 0x0403, - Gmacron: 0x1E20, - Gmonospace: 0xFF27, - Grave: 0xF6CE, - Gravesmall: 0xF760, - Gsmall: 0xF767, - Gsmallhook: 0x029B, - Gstroke: 0x01E4, - H: 0x0048, - H18533: 0x25CF, - H18543: 0x25AA, - H18551: 0x25AB, - H22073: 0x25A1, - HPsquare: 0x33CB, - Haabkhasiancyrillic: 0x04A8, - Hadescendercyrillic: 0x04B2, - Hardsigncyrillic: 0x042A, - Hbar: 0x0126, - Hbrevebelow: 0x1E2A, - Hcedilla: 0x1E28, - Hcircle: 0x24BD, - Hcircumflex: 0x0124, - Hdieresis: 0x1E26, - Hdotaccent: 0x1E22, - Hdotbelow: 0x1E24, - Hmonospace: 0xFF28, - Hoarmenian: 0x0540, - Horicoptic: 0x03E8, - Hsmall: 0xF768, - Hungarumlaut: 0xF6CF, - Hungarumlautsmall: 0xF6F8, - Hzsquare: 0x3390, - I: 0x0049, - IAcyrillic: 0x042F, - IJ: 0x0132, - IUcyrillic: 0x042E, - Iacute: 0x00CD, - Iacutesmall: 0xF7ED, - Ibreve: 0x012C, - Icaron: 0x01CF, - Icircle: 0x24BE, - Icircumflex: 0x00CE, - Icircumflexsmall: 0xF7EE, - Icyrillic: 0x0406, - Idblgrave: 0x0208, - Idieresis: 0x00CF, - Idieresisacute: 0x1E2E, - Idieresiscyrillic: 0x04E4, - Idieresissmall: 0xF7EF, - Idot: 0x0130, - Idotaccent: 0x0130, - Idotbelow: 0x1ECA, - Iebrevecyrillic: 0x04D6, - Iecyrillic: 0x0415, - Ifraktur: 0x2111, - Igrave: 0x00CC, - Igravesmall: 0xF7EC, - Ihookabove: 0x1EC8, - Iicyrillic: 0x0418, - Iinvertedbreve: 0x020A, - Iishortcyrillic: 0x0419, - Imacron: 0x012A, - Imacroncyrillic: 0x04E2, - Imonospace: 0xFF29, - Iniarmenian: 0x053B, - Iocyrillic: 0x0401, - Iogonek: 0x012E, - Iota: 0x0399, - Iotaafrican: 0x0196, - Iotadieresis: 0x03AA, - Iotatonos: 0x038A, - Ismall: 0xF769, - Istroke: 0x0197, - Itilde: 0x0128, - Itildebelow: 0x1E2C, - Izhitsacyrillic: 0x0474, - Izhitsadblgravecyrillic: 0x0476, - J: 0x004A, - Jaarmenian: 0x0541, - Jcircle: 0x24BF, - Jcircumflex: 0x0134, - Jecyrillic: 0x0408, - Jheharmenian: 0x054B, - Jmonospace: 0xFF2A, - Jsmall: 0xF76A, - K: 0x004B, - KBsquare: 0x3385, - KKsquare: 0x33CD, - Kabashkircyrillic: 0x04A0, - Kacute: 0x1E30, - Kacyrillic: 0x041A, - Kadescendercyrillic: 0x049A, - Kahookcyrillic: 0x04C3, - Kappa: 0x039A, - Kastrokecyrillic: 0x049E, - Kaverticalstrokecyrillic: 0x049C, - Kcaron: 0x01E8, - Kcedilla: 0x0136, - Kcircle: 0x24C0, - Kcommaaccent: 0x0136, - Kdotbelow: 0x1E32, - Keharmenian: 0x0554, - Kenarmenian: 0x053F, - Khacyrillic: 0x0425, - Kheicoptic: 0x03E6, - Khook: 0x0198, - Kjecyrillic: 0x040C, - Klinebelow: 0x1E34, - Kmonospace: 0xFF2B, - Koppacyrillic: 0x0480, - Koppagreek: 0x03DE, - Ksicyrillic: 0x046E, - Ksmall: 0xF76B, - L: 0x004C, - LJ: 0x01C7, - LL: 0xF6BF, - Lacute: 0x0139, - Lambda: 0x039B, - Lcaron: 0x013D, - Lcedilla: 0x013B, - Lcircle: 0x24C1, - Lcircumflexbelow: 0x1E3C, - Lcommaaccent: 0x013B, - Ldot: 0x013F, - Ldotaccent: 0x013F, - Ldotbelow: 0x1E36, - Ldotbelowmacron: 0x1E38, - Liwnarmenian: 0x053C, - Lj: 0x01C8, - Ljecyrillic: 0x0409, - Llinebelow: 0x1E3A, - Lmonospace: 0xFF2C, - Lslash: 0x0141, - Lslashsmall: 0xF6F9, - Lsmall: 0xF76C, - M: 0x004D, - MBsquare: 0x3386, - Macron: 0xF6D0, - Macronsmall: 0xF7AF, - Macute: 0x1E3E, - Mcircle: 0x24C2, - Mdotaccent: 0x1E40, - Mdotbelow: 0x1E42, - Menarmenian: 0x0544, - Mmonospace: 0xFF2D, - Msmall: 0xF76D, - Mturned: 0x019C, - Mu: 0x039C, - N: 0x004E, - NJ: 0x01CA, - Nacute: 0x0143, - Ncaron: 0x0147, - Ncedilla: 0x0145, - Ncircle: 0x24C3, - Ncircumflexbelow: 0x1E4A, - Ncommaaccent: 0x0145, - Ndotaccent: 0x1E44, - Ndotbelow: 0x1E46, - Nhookleft: 0x019D, - Nineroman: 0x2168, - Nj: 0x01CB, - Njecyrillic: 0x040A, - Nlinebelow: 0x1E48, - Nmonospace: 0xFF2E, - Nowarmenian: 0x0546, - Nsmall: 0xF76E, - Ntilde: 0x00D1, - Ntildesmall: 0xF7F1, - Nu: 0x039D, - O: 0x004F, - OE: 0x0152, - OEsmall: 0xF6FA, - Oacute: 0x00D3, - Oacutesmall: 0xF7F3, - Obarredcyrillic: 0x04E8, - Obarreddieresiscyrillic: 0x04EA, - Obreve: 0x014E, - Ocaron: 0x01D1, - Ocenteredtilde: 0x019F, - Ocircle: 0x24C4, - Ocircumflex: 0x00D4, - Ocircumflexacute: 0x1ED0, - Ocircumflexdotbelow: 0x1ED8, - Ocircumflexgrave: 0x1ED2, - Ocircumflexhookabove: 0x1ED4, - Ocircumflexsmall: 0xF7F4, - Ocircumflextilde: 0x1ED6, - Ocyrillic: 0x041E, - Odblacute: 0x0150, - Odblgrave: 0x020C, - Odieresis: 0x00D6, - Odieresiscyrillic: 0x04E6, - Odieresissmall: 0xF7F6, - Odotbelow: 0x1ECC, - Ogoneksmall: 0xF6FB, - Ograve: 0x00D2, - Ogravesmall: 0xF7F2, - Oharmenian: 0x0555, - Ohm: 0x2126, - Ohookabove: 0x1ECE, - Ohorn: 0x01A0, - Ohornacute: 0x1EDA, - Ohorndotbelow: 0x1EE2, - Ohorngrave: 0x1EDC, - Ohornhookabove: 0x1EDE, - Ohorntilde: 0x1EE0, - Ohungarumlaut: 0x0150, - Oi: 0x01A2, - Oinvertedbreve: 0x020E, - Omacron: 0x014C, - Omacronacute: 0x1E52, - Omacrongrave: 0x1E50, - Omega: 0x2126, - Omegacyrillic: 0x0460, - Omegagreek: 0x03A9, - Omegaroundcyrillic: 0x047A, - Omegatitlocyrillic: 0x047C, - Omegatonos: 0x038F, - Omicron: 0x039F, - Omicrontonos: 0x038C, - Omonospace: 0xFF2F, - Oneroman: 0x2160, - Oogonek: 0x01EA, - Oogonekmacron: 0x01EC, - Oopen: 0x0186, - Oslash: 0x00D8, - Oslashacute: 0x01FE, - Oslashsmall: 0xF7F8, - Osmall: 0xF76F, - Ostrokeacute: 0x01FE, - Otcyrillic: 0x047E, - Otilde: 0x00D5, - Otildeacute: 0x1E4C, - Otildedieresis: 0x1E4E, - Otildesmall: 0xF7F5, - P: 0x0050, - Pacute: 0x1E54, - Pcircle: 0x24C5, - Pdotaccent: 0x1E56, - Pecyrillic: 0x041F, - Peharmenian: 0x054A, - Pemiddlehookcyrillic: 0x04A6, - Phi: 0x03A6, - Phook: 0x01A4, - Pi: 0x03A0, - Piwrarmenian: 0x0553, - Pmonospace: 0xFF30, - Psi: 0x03A8, - Psicyrillic: 0x0470, - Psmall: 0xF770, - Q: 0x0051, - Qcircle: 0x24C6, - Qmonospace: 0xFF31, - Qsmall: 0xF771, - R: 0x0052, - Raarmenian: 0x054C, - Racute: 0x0154, - Rcaron: 0x0158, - Rcedilla: 0x0156, - Rcircle: 0x24C7, - Rcommaaccent: 0x0156, - Rdblgrave: 0x0210, - Rdotaccent: 0x1E58, - Rdotbelow: 0x1E5A, - Rdotbelowmacron: 0x1E5C, - Reharmenian: 0x0550, - Rfraktur: 0x211C, - Rho: 0x03A1, - Ringsmall: 0xF6FC, - Rinvertedbreve: 0x0212, - Rlinebelow: 0x1E5E, - Rmonospace: 0xFF32, - Rsmall: 0xF772, - Rsmallinverted: 0x0281, - Rsmallinvertedsuperior: 0x02B6, - S: 0x0053, - SF010000: 0x250C, - SF020000: 0x2514, - SF030000: 0x2510, - SF040000: 0x2518, - SF050000: 0x253C, - SF060000: 0x252C, - SF070000: 0x2534, - SF080000: 0x251C, - SF090000: 0x2524, - SF100000: 0x2500, - SF110000: 0x2502, - SF190000: 0x2561, - SF200000: 0x2562, - SF210000: 0x2556, - SF220000: 0x2555, - SF230000: 0x2563, - SF240000: 0x2551, - SF250000: 0x2557, - SF260000: 0x255D, - SF270000: 0x255C, - SF280000: 0x255B, - SF360000: 0x255E, - SF370000: 0x255F, - SF380000: 0x255A, - SF390000: 0x2554, - SF400000: 0x2569, - SF410000: 0x2566, - SF420000: 0x2560, - SF430000: 0x2550, - SF440000: 0x256C, - SF450000: 0x2567, - SF460000: 0x2568, - SF470000: 0x2564, - SF480000: 0x2565, - SF490000: 0x2559, - SF500000: 0x2558, - SF510000: 0x2552, - SF520000: 0x2553, - SF530000: 0x256B, - SF540000: 0x256A, - Sacute: 0x015A, - Sacutedotaccent: 0x1E64, - Sampigreek: 0x03E0, - Scaron: 0x0160, - Scarondotaccent: 0x1E66, - Scaronsmall: 0xF6FD, - Scedilla: 0x015E, - Schwa: 0x018F, - Schwacyrillic: 0x04D8, - Schwadieresiscyrillic: 0x04DA, - Scircle: 0x24C8, - Scircumflex: 0x015C, - Scommaaccent: 0x0218, - Sdotaccent: 0x1E60, - Sdotbelow: 0x1E62, - Sdotbelowdotaccent: 0x1E68, - Seharmenian: 0x054D, - Sevenroman: 0x2166, - Shaarmenian: 0x0547, - Shacyrillic: 0x0428, - Shchacyrillic: 0x0429, - Sheicoptic: 0x03E2, - Shhacyrillic: 0x04BA, - Shimacoptic: 0x03EC, - Sigma: 0x03A3, - Sixroman: 0x2165, - Smonospace: 0xFF33, - Softsigncyrillic: 0x042C, - Ssmall: 0xF773, - Stigmagreek: 0x03DA, - T: 0x0054, - Tau: 0x03A4, - Tbar: 0x0166, - Tcaron: 0x0164, - Tcedilla: 0x0162, - Tcircle: 0x24C9, - Tcircumflexbelow: 0x1E70, - Tcommaaccent: 0x0162, - Tdotaccent: 0x1E6A, - Tdotbelow: 0x1E6C, - Tecyrillic: 0x0422, - Tedescendercyrillic: 0x04AC, - Tenroman: 0x2169, - Tetsecyrillic: 0x04B4, - Theta: 0x0398, - Thook: 0x01AC, - Thorn: 0x00DE, - Thornsmall: 0xF7FE, - Threeroman: 0x2162, - Tildesmall: 0xF6FE, - Tiwnarmenian: 0x054F, - Tlinebelow: 0x1E6E, - Tmonospace: 0xFF34, - Toarmenian: 0x0539, - Tonefive: 0x01BC, - Tonesix: 0x0184, - Tonetwo: 0x01A7, - Tretroflexhook: 0x01AE, - Tsecyrillic: 0x0426, - Tshecyrillic: 0x040B, - Tsmall: 0xF774, - Twelveroman: 0x216B, - Tworoman: 0x2161, - U: 0x0055, - Uacute: 0x00DA, - Uacutesmall: 0xF7FA, - Ubreve: 0x016C, - Ucaron: 0x01D3, - Ucircle: 0x24CA, - Ucircumflex: 0x00DB, - Ucircumflexbelow: 0x1E76, - Ucircumflexsmall: 0xF7FB, - Ucyrillic: 0x0423, - Udblacute: 0x0170, - Udblgrave: 0x0214, - Udieresis: 0x00DC, - Udieresisacute: 0x01D7, - Udieresisbelow: 0x1E72, - Udieresiscaron: 0x01D9, - Udieresiscyrillic: 0x04F0, - Udieresisgrave: 0x01DB, - Udieresismacron: 0x01D5, - Udieresissmall: 0xF7FC, - Udotbelow: 0x1EE4, - Ugrave: 0x00D9, - Ugravesmall: 0xF7F9, - Uhookabove: 0x1EE6, - Uhorn: 0x01AF, - Uhornacute: 0x1EE8, - Uhorndotbelow: 0x1EF0, - Uhorngrave: 0x1EEA, - Uhornhookabove: 0x1EEC, - Uhorntilde: 0x1EEE, - Uhungarumlaut: 0x0170, - Uhungarumlautcyrillic: 0x04F2, - Uinvertedbreve: 0x0216, - Ukcyrillic: 0x0478, - Umacron: 0x016A, - Umacroncyrillic: 0x04EE, - Umacrondieresis: 0x1E7A, - Umonospace: 0xFF35, - Uogonek: 0x0172, - Upsilon: 0x03A5, - Upsilon1: 0x03D2, - Upsilonacutehooksymbolgreek: 0x03D3, - Upsilonafrican: 0x01B1, - Upsilondieresis: 0x03AB, - Upsilondieresishooksymbolgreek: 0x03D4, - Upsilonhooksymbol: 0x03D2, - Upsilontonos: 0x038E, - Uring: 0x016E, - Ushortcyrillic: 0x040E, - Usmall: 0xF775, - Ustraightcyrillic: 0x04AE, - Ustraightstrokecyrillic: 0x04B0, - Utilde: 0x0168, - Utildeacute: 0x1E78, - Utildebelow: 0x1E74, - V: 0x0056, - Vcircle: 0x24CB, - Vdotbelow: 0x1E7E, - Vecyrillic: 0x0412, - Vewarmenian: 0x054E, - Vhook: 0x01B2, - Vmonospace: 0xFF36, - Voarmenian: 0x0548, - Vsmall: 0xF776, - Vtilde: 0x1E7C, - W: 0x0057, - Wacute: 0x1E82, - Wcircle: 0x24CC, - Wcircumflex: 0x0174, - Wdieresis: 0x1E84, - Wdotaccent: 0x1E86, - Wdotbelow: 0x1E88, - Wgrave: 0x1E80, - Wmonospace: 0xFF37, - Wsmall: 0xF777, - X: 0x0058, - Xcircle: 0x24CD, - Xdieresis: 0x1E8C, - Xdotaccent: 0x1E8A, - Xeharmenian: 0x053D, - Xi: 0x039E, - Xmonospace: 0xFF38, - Xsmall: 0xF778, - Y: 0x0059, - Yacute: 0x00DD, - Yacutesmall: 0xF7FD, - Yatcyrillic: 0x0462, - Ycircle: 0x24CE, - Ycircumflex: 0x0176, - Ydieresis: 0x0178, - Ydieresissmall: 0xF7FF, - Ydotaccent: 0x1E8E, - Ydotbelow: 0x1EF4, - Yericyrillic: 0x042B, - Yerudieresiscyrillic: 0x04F8, - Ygrave: 0x1EF2, - Yhook: 0x01B3, - Yhookabove: 0x1EF6, - Yiarmenian: 0x0545, - Yicyrillic: 0x0407, - Yiwnarmenian: 0x0552, - Ymonospace: 0xFF39, - Ysmall: 0xF779, - Ytilde: 0x1EF8, - Yusbigcyrillic: 0x046A, - Yusbigiotifiedcyrillic: 0x046C, - Yuslittlecyrillic: 0x0466, - Yuslittleiotifiedcyrillic: 0x0468, - Z: 0x005A, - Zaarmenian: 0x0536, - Zacute: 0x0179, - Zcaron: 0x017D, - Zcaronsmall: 0xF6FF, - Zcircle: 0x24CF, - Zcircumflex: 0x1E90, - Zdot: 0x017B, - Zdotaccent: 0x017B, - Zdotbelow: 0x1E92, - Zecyrillic: 0x0417, - Zedescendercyrillic: 0x0498, - Zedieresiscyrillic: 0x04DE, - Zeta: 0x0396, - Zhearmenian: 0x053A, - Zhebrevecyrillic: 0x04C1, - Zhecyrillic: 0x0416, - Zhedescendercyrillic: 0x0496, - Zhedieresiscyrillic: 0x04DC, - Zlinebelow: 0x1E94, - Zmonospace: 0xFF3A, - Zsmall: 0xF77A, - Zstroke: 0x01B5, - a: 0x0061, - aabengali: 0x0986, - aacute: 0x00E1, - aadeva: 0x0906, - aagujarati: 0x0A86, - aagurmukhi: 0x0A06, - aamatragurmukhi: 0x0A3E, - aarusquare: 0x3303, - aavowelsignbengali: 0x09BE, - aavowelsigndeva: 0x093E, - aavowelsigngujarati: 0x0ABE, - abbreviationmarkarmenian: 0x055F, - abbreviationsigndeva: 0x0970, - abengali: 0x0985, - abopomofo: 0x311A, - abreve: 0x0103, - abreveacute: 0x1EAF, - abrevecyrillic: 0x04D1, - abrevedotbelow: 0x1EB7, - abrevegrave: 0x1EB1, - abrevehookabove: 0x1EB3, - abrevetilde: 0x1EB5, - acaron: 0x01CE, - acircle: 0x24D0, - acircumflex: 0x00E2, - acircumflexacute: 0x1EA5, - acircumflexdotbelow: 0x1EAD, - acircumflexgrave: 0x1EA7, - acircumflexhookabove: 0x1EA9, - acircumflextilde: 0x1EAB, - acute: 0x00B4, - acutebelowcmb: 0x0317, - acutecmb: 0x0301, - acutecomb: 0x0301, - acutedeva: 0x0954, - acutelowmod: 0x02CF, - acutetonecmb: 0x0341, - acyrillic: 0x0430, - adblgrave: 0x0201, - addakgurmukhi: 0x0A71, - adeva: 0x0905, - adieresis: 0x00E4, - adieresiscyrillic: 0x04D3, - adieresismacron: 0x01DF, - adotbelow: 0x1EA1, - adotmacron: 0x01E1, - ae: 0x00E6, - aeacute: 0x01FD, - aekorean: 0x3150, - aemacron: 0x01E3, - afii00208: 0x2015, - afii08941: 0x20A4, - afii10017: 0x0410, - afii10018: 0x0411, - afii10019: 0x0412, - afii10020: 0x0413, - afii10021: 0x0414, - afii10022: 0x0415, - afii10023: 0x0401, - afii10024: 0x0416, - afii10025: 0x0417, - afii10026: 0x0418, - afii10027: 0x0419, - afii10028: 0x041A, - afii10029: 0x041B, - afii10030: 0x041C, - afii10031: 0x041D, - afii10032: 0x041E, - afii10033: 0x041F, - afii10034: 0x0420, - afii10035: 0x0421, - afii10036: 0x0422, - afii10037: 0x0423, - afii10038: 0x0424, - afii10039: 0x0425, - afii10040: 0x0426, - afii10041: 0x0427, - afii10042: 0x0428, - afii10043: 0x0429, - afii10044: 0x042A, - afii10045: 0x042B, - afii10046: 0x042C, - afii10047: 0x042D, - afii10048: 0x042E, - afii10049: 0x042F, - afii10050: 0x0490, - afii10051: 0x0402, - afii10052: 0x0403, - afii10053: 0x0404, - afii10054: 0x0405, - afii10055: 0x0406, - afii10056: 0x0407, - afii10057: 0x0408, - afii10058: 0x0409, - afii10059: 0x040A, - afii10060: 0x040B, - afii10061: 0x040C, - afii10062: 0x040E, - afii10063: 0xF6C4, - afii10064: 0xF6C5, - afii10065: 0x0430, - afii10066: 0x0431, - afii10067: 0x0432, - afii10068: 0x0433, - afii10069: 0x0434, - afii10070: 0x0435, - afii10071: 0x0451, - afii10072: 0x0436, - afii10073: 0x0437, - afii10074: 0x0438, - afii10075: 0x0439, - afii10076: 0x043A, - afii10077: 0x043B, - afii10078: 0x043C, - afii10079: 0x043D, - afii10080: 0x043E, - afii10081: 0x043F, - afii10082: 0x0440, - afii10083: 0x0441, - afii10084: 0x0442, - afii10085: 0x0443, - afii10086: 0x0444, - afii10087: 0x0445, - afii10088: 0x0446, - afii10089: 0x0447, - afii10090: 0x0448, - afii10091: 0x0449, - afii10092: 0x044A, - afii10093: 0x044B, - afii10094: 0x044C, - afii10095: 0x044D, - afii10096: 0x044E, - afii10097: 0x044F, - afii10098: 0x0491, - afii10099: 0x0452, - afii10100: 0x0453, - afii10101: 0x0454, - afii10102: 0x0455, - afii10103: 0x0456, - afii10104: 0x0457, - afii10105: 0x0458, - afii10106: 0x0459, - afii10107: 0x045A, - afii10108: 0x045B, - afii10109: 0x045C, - afii10110: 0x045E, - afii10145: 0x040F, - afii10146: 0x0462, - afii10147: 0x0472, - afii10148: 0x0474, - afii10192: 0xF6C6, - afii10193: 0x045F, - afii10194: 0x0463, - afii10195: 0x0473, - afii10196: 0x0475, - afii10831: 0xF6C7, - afii10832: 0xF6C8, - afii10846: 0x04D9, - afii299: 0x200E, - afii300: 0x200F, - afii301: 0x200D, - afii57381: 0x066A, - afii57388: 0x060C, - afii57392: 0x0660, - afii57393: 0x0661, - afii57394: 0x0662, - afii57395: 0x0663, - afii57396: 0x0664, - afii57397: 0x0665, - afii57398: 0x0666, - afii57399: 0x0667, - afii57400: 0x0668, - afii57401: 0x0669, - afii57403: 0x061B, - afii57407: 0x061F, - afii57409: 0x0621, - afii57410: 0x0622, - afii57411: 0x0623, - afii57412: 0x0624, - afii57413: 0x0625, - afii57414: 0x0626, - afii57415: 0x0627, - afii57416: 0x0628, - afii57417: 0x0629, - afii57418: 0x062A, - afii57419: 0x062B, - afii57420: 0x062C, - afii57421: 0x062D, - afii57422: 0x062E, - afii57423: 0x062F, - afii57424: 0x0630, - afii57425: 0x0631, - afii57426: 0x0632, - afii57427: 0x0633, - afii57428: 0x0634, - afii57429: 0x0635, - afii57430: 0x0636, - afii57431: 0x0637, - afii57432: 0x0638, - afii57433: 0x0639, - afii57434: 0x063A, - afii57440: 0x0640, - afii57441: 0x0641, - afii57442: 0x0642, - afii57443: 0x0643, - afii57444: 0x0644, - afii57445: 0x0645, - afii57446: 0x0646, - afii57448: 0x0648, - afii57449: 0x0649, - afii57450: 0x064A, - afii57451: 0x064B, - afii57452: 0x064C, - afii57453: 0x064D, - afii57454: 0x064E, - afii57455: 0x064F, - afii57456: 0x0650, - afii57457: 0x0651, - afii57458: 0x0652, - afii57470: 0x0647, - afii57505: 0x06A4, - afii57506: 0x067E, - afii57507: 0x0686, - afii57508: 0x0698, - afii57509: 0x06AF, - afii57511: 0x0679, - afii57512: 0x0688, - afii57513: 0x0691, - afii57514: 0x06BA, - afii57519: 0x06D2, - afii57534: 0x06D5, - afii57636: 0x20AA, - afii57645: 0x05BE, - afii57658: 0x05C3, - afii57664: 0x05D0, - afii57665: 0x05D1, - afii57666: 0x05D2, - afii57667: 0x05D3, - afii57668: 0x05D4, - afii57669: 0x05D5, - afii57670: 0x05D6, - afii57671: 0x05D7, - afii57672: 0x05D8, - afii57673: 0x05D9, - afii57674: 0x05DA, - afii57675: 0x05DB, - afii57676: 0x05DC, - afii57677: 0x05DD, - afii57678: 0x05DE, - afii57679: 0x05DF, - afii57680: 0x05E0, - afii57681: 0x05E1, - afii57682: 0x05E2, - afii57683: 0x05E3, - afii57684: 0x05E4, - afii57685: 0x05E5, - afii57686: 0x05E6, - afii57687: 0x05E7, - afii57688: 0x05E8, - afii57689: 0x05E9, - afii57690: 0x05EA, - afii57694: 0xFB2A, - afii57695: 0xFB2B, - afii57700: 0xFB4B, - afii57705: 0xFB1F, - afii57716: 0x05F0, - afii57717: 0x05F1, - afii57718: 0x05F2, - afii57723: 0xFB35, - afii57793: 0x05B4, - afii57794: 0x05B5, - afii57795: 0x05B6, - afii57796: 0x05BB, - afii57797: 0x05B8, - afii57798: 0x05B7, - afii57799: 0x05B0, - afii57800: 0x05B2, - afii57801: 0x05B1, - afii57802: 0x05B3, - afii57803: 0x05C2, - afii57804: 0x05C1, - afii57806: 0x05B9, - afii57807: 0x05BC, - afii57839: 0x05BD, - afii57841: 0x05BF, - afii57842: 0x05C0, - afii57929: 0x02BC, - afii61248: 0x2105, - afii61289: 0x2113, - afii61352: 0x2116, - afii61573: 0x202C, - afii61574: 0x202D, - afii61575: 0x202E, - afii61664: 0x200C, - afii63167: 0x066D, - afii64937: 0x02BD, - agrave: 0x00E0, - agujarati: 0x0A85, - agurmukhi: 0x0A05, - ahiragana: 0x3042, - ahookabove: 0x1EA3, - aibengali: 0x0990, - aibopomofo: 0x311E, - aideva: 0x0910, - aiecyrillic: 0x04D5, - aigujarati: 0x0A90, - aigurmukhi: 0x0A10, - aimatragurmukhi: 0x0A48, - ainarabic: 0x0639, - ainfinalarabic: 0xFECA, - aininitialarabic: 0xFECB, - ainmedialarabic: 0xFECC, - ainvertedbreve: 0x0203, - aivowelsignbengali: 0x09C8, - aivowelsigndeva: 0x0948, - aivowelsigngujarati: 0x0AC8, - akatakana: 0x30A2, - akatakanahalfwidth: 0xFF71, - akorean: 0x314F, - alef: 0x05D0, - alefarabic: 0x0627, - alefdageshhebrew: 0xFB30, - aleffinalarabic: 0xFE8E, - alefhamzaabovearabic: 0x0623, - alefhamzaabovefinalarabic: 0xFE84, - alefhamzabelowarabic: 0x0625, - alefhamzabelowfinalarabic: 0xFE88, - alefhebrew: 0x05D0, - aleflamedhebrew: 0xFB4F, - alefmaddaabovearabic: 0x0622, - alefmaddaabovefinalarabic: 0xFE82, - alefmaksuraarabic: 0x0649, - alefmaksurafinalarabic: 0xFEF0, - alefmaksurainitialarabic: 0xFEF3, - alefmaksuramedialarabic: 0xFEF4, - alefpatahhebrew: 0xFB2E, - alefqamatshebrew: 0xFB2F, - aleph: 0x2135, - allequal: 0x224C, - alpha: 0x03B1, - alphatonos: 0x03AC, - amacron: 0x0101, - amonospace: 0xFF41, - ampersand: 0x0026, - ampersandmonospace: 0xFF06, - ampersandsmall: 0xF726, - amsquare: 0x33C2, - anbopomofo: 0x3122, - angbopomofo: 0x3124, - angbracketleft: 0x3008, // This glyph is missing from Adobe's original list. - angbracketright: 0x3009, // This glyph is missing from Adobe's original list. - angkhankhuthai: 0x0E5A, - angle: 0x2220, - anglebracketleft: 0x3008, - anglebracketleftvertical: 0xFE3F, - anglebracketright: 0x3009, - anglebracketrightvertical: 0xFE40, - angleleft: 0x2329, - angleright: 0x232A, - angstrom: 0x212B, - anoteleia: 0x0387, - anudattadeva: 0x0952, - anusvarabengali: 0x0982, - anusvaradeva: 0x0902, - anusvaragujarati: 0x0A82, - aogonek: 0x0105, - apaatosquare: 0x3300, - aparen: 0x249C, - apostrophearmenian: 0x055A, - apostrophemod: 0x02BC, - apple: 0xF8FF, - approaches: 0x2250, - approxequal: 0x2248, - approxequalorimage: 0x2252, - approximatelyequal: 0x2245, - araeaekorean: 0x318E, - araeakorean: 0x318D, - arc: 0x2312, - arighthalfring: 0x1E9A, - aring: 0x00E5, - aringacute: 0x01FB, - aringbelow: 0x1E01, - arrowboth: 0x2194, - arrowdashdown: 0x21E3, - arrowdashleft: 0x21E0, - arrowdashright: 0x21E2, - arrowdashup: 0x21E1, - arrowdblboth: 0x21D4, - arrowdbldown: 0x21D3, - arrowdblleft: 0x21D0, - arrowdblright: 0x21D2, - arrowdblup: 0x21D1, - arrowdown: 0x2193, - arrowdownleft: 0x2199, - arrowdownright: 0x2198, - arrowdownwhite: 0x21E9, - arrowheaddownmod: 0x02C5, - arrowheadleftmod: 0x02C2, - arrowheadrightmod: 0x02C3, - arrowheadupmod: 0x02C4, - arrowhorizex: 0xF8E7, - arrowleft: 0x2190, - arrowleftdbl: 0x21D0, - arrowleftdblstroke: 0x21CD, - arrowleftoverright: 0x21C6, - arrowleftwhite: 0x21E6, - arrowright: 0x2192, - arrowrightdblstroke: 0x21CF, - arrowrightheavy: 0x279E, - arrowrightoverleft: 0x21C4, - arrowrightwhite: 0x21E8, - arrowtableft: 0x21E4, - arrowtabright: 0x21E5, - arrowup: 0x2191, - arrowupdn: 0x2195, - arrowupdnbse: 0x21A8, - arrowupdownbase: 0x21A8, - arrowupleft: 0x2196, - arrowupleftofdown: 0x21C5, - arrowupright: 0x2197, - arrowupwhite: 0x21E7, - arrowvertex: 0xF8E6, - asciicircum: 0x005E, - asciicircummonospace: 0xFF3E, - asciitilde: 0x007E, - asciitildemonospace: 0xFF5E, - ascript: 0x0251, - ascriptturned: 0x0252, - asmallhiragana: 0x3041, - asmallkatakana: 0x30A1, - asmallkatakanahalfwidth: 0xFF67, - asterisk: 0x002A, - asteriskaltonearabic: 0x066D, - asteriskarabic: 0x066D, - asteriskmath: 0x2217, - asteriskmonospace: 0xFF0A, - asterisksmall: 0xFE61, - asterism: 0x2042, - asuperior: 0xF6E9, - asymptoticallyequal: 0x2243, - at: 0x0040, - atilde: 0x00E3, - atmonospace: 0xFF20, - atsmall: 0xFE6B, - aturned: 0x0250, - aubengali: 0x0994, - aubopomofo: 0x3120, - audeva: 0x0914, - augujarati: 0x0A94, - augurmukhi: 0x0A14, - aulengthmarkbengali: 0x09D7, - aumatragurmukhi: 0x0A4C, - auvowelsignbengali: 0x09CC, - auvowelsigndeva: 0x094C, - auvowelsigngujarati: 0x0ACC, - avagrahadeva: 0x093D, - aybarmenian: 0x0561, - ayin: 0x05E2, - ayinaltonehebrew: 0xFB20, - ayinhebrew: 0x05E2, - b: 0x0062, - babengali: 0x09AC, - backslash: 0x005C, - backslashmonospace: 0xFF3C, - badeva: 0x092C, - bagujarati: 0x0AAC, - bagurmukhi: 0x0A2C, - bahiragana: 0x3070, - bahtthai: 0x0E3F, - bakatakana: 0x30D0, - bar: 0x007C, - barmonospace: 0xFF5C, - bbopomofo: 0x3105, - bcircle: 0x24D1, - bdotaccent: 0x1E03, - bdotbelow: 0x1E05, - beamedsixteenthnotes: 0x266C, - because: 0x2235, - becyrillic: 0x0431, - beharabic: 0x0628, - behfinalarabic: 0xFE90, - behinitialarabic: 0xFE91, - behiragana: 0x3079, - behmedialarabic: 0xFE92, - behmeeminitialarabic: 0xFC9F, - behmeemisolatedarabic: 0xFC08, - behnoonfinalarabic: 0xFC6D, - bekatakana: 0x30D9, - benarmenian: 0x0562, - bet: 0x05D1, - beta: 0x03B2, - betasymbolgreek: 0x03D0, - betdagesh: 0xFB31, - betdageshhebrew: 0xFB31, - bethebrew: 0x05D1, - betrafehebrew: 0xFB4C, - bhabengali: 0x09AD, - bhadeva: 0x092D, - bhagujarati: 0x0AAD, - bhagurmukhi: 0x0A2D, - bhook: 0x0253, - bihiragana: 0x3073, - bikatakana: 0x30D3, - bilabialclick: 0x0298, - bindigurmukhi: 0x0A02, - birusquare: 0x3331, - blackcircle: 0x25CF, - blackdiamond: 0x25C6, - blackdownpointingtriangle: 0x25BC, - blackleftpointingpointer: 0x25C4, - blackleftpointingtriangle: 0x25C0, - blacklenticularbracketleft: 0x3010, - blacklenticularbracketleftvertical: 0xFE3B, - blacklenticularbracketright: 0x3011, - blacklenticularbracketrightvertical: 0xFE3C, - blacklowerlefttriangle: 0x25E3, - blacklowerrighttriangle: 0x25E2, - blackrectangle: 0x25AC, - blackrightpointingpointer: 0x25BA, - blackrightpointingtriangle: 0x25B6, - blacksmallsquare: 0x25AA, - blacksmilingface: 0x263B, - blacksquare: 0x25A0, - blackstar: 0x2605, - blackupperlefttriangle: 0x25E4, - blackupperrighttriangle: 0x25E5, - blackuppointingsmalltriangle: 0x25B4, - blackuppointingtriangle: 0x25B2, - blank: 0x2423, - blinebelow: 0x1E07, - block: 0x2588, - bmonospace: 0xFF42, - bobaimaithai: 0x0E1A, - bohiragana: 0x307C, - bokatakana: 0x30DC, - bparen: 0x249D, - bqsquare: 0x33C3, - braceex: 0xF8F4, - braceleft: 0x007B, - braceleftbt: 0xF8F3, - braceleftmid: 0xF8F2, - braceleftmonospace: 0xFF5B, - braceleftsmall: 0xFE5B, - bracelefttp: 0xF8F1, - braceleftvertical: 0xFE37, - braceright: 0x007D, - bracerightbt: 0xF8FE, - bracerightmid: 0xF8FD, - bracerightmonospace: 0xFF5D, - bracerightsmall: 0xFE5C, - bracerighttp: 0xF8FC, - bracerightvertical: 0xFE38, - bracketleft: 0x005B, - bracketleftbt: 0xF8F0, - bracketleftex: 0xF8EF, - bracketleftmonospace: 0xFF3B, - bracketlefttp: 0xF8EE, - bracketright: 0x005D, - bracketrightbt: 0xF8FB, - bracketrightex: 0xF8FA, - bracketrightmonospace: 0xFF3D, - bracketrighttp: 0xF8F9, - breve: 0x02D8, - brevebelowcmb: 0x032E, - brevecmb: 0x0306, - breveinvertedbelowcmb: 0x032F, - breveinvertedcmb: 0x0311, - breveinverteddoublecmb: 0x0361, - bridgebelowcmb: 0x032A, - bridgeinvertedbelowcmb: 0x033A, - brokenbar: 0x00A6, - bstroke: 0x0180, - bsuperior: 0xF6EA, - btopbar: 0x0183, - buhiragana: 0x3076, - bukatakana: 0x30D6, - bullet: 0x2022, - bulletinverse: 0x25D8, - bulletoperator: 0x2219, - bullseye: 0x25CE, - c: 0x0063, - caarmenian: 0x056E, - cabengali: 0x099A, - cacute: 0x0107, - cadeva: 0x091A, - cagujarati: 0x0A9A, - cagurmukhi: 0x0A1A, - calsquare: 0x3388, - candrabindubengali: 0x0981, - candrabinducmb: 0x0310, - candrabindudeva: 0x0901, - candrabindugujarati: 0x0A81, - capslock: 0x21EA, - careof: 0x2105, - caron: 0x02C7, - caronbelowcmb: 0x032C, - caroncmb: 0x030C, - carriagereturn: 0x21B5, - cbopomofo: 0x3118, - ccaron: 0x010D, - ccedilla: 0x00E7, - ccedillaacute: 0x1E09, - ccircle: 0x24D2, - ccircumflex: 0x0109, - ccurl: 0x0255, - cdot: 0x010B, - cdotaccent: 0x010B, - cdsquare: 0x33C5, - cedilla: 0x00B8, - cedillacmb: 0x0327, - cent: 0x00A2, - centigrade: 0x2103, - centinferior: 0xF6DF, - centmonospace: 0xFFE0, - centoldstyle: 0xF7A2, - centsuperior: 0xF6E0, - chaarmenian: 0x0579, - chabengali: 0x099B, - chadeva: 0x091B, - chagujarati: 0x0A9B, - chagurmukhi: 0x0A1B, - chbopomofo: 0x3114, - cheabkhasiancyrillic: 0x04BD, - checkmark: 0x2713, - checyrillic: 0x0447, - chedescenderabkhasiancyrillic: 0x04BF, - chedescendercyrillic: 0x04B7, - chedieresiscyrillic: 0x04F5, - cheharmenian: 0x0573, - chekhakassiancyrillic: 0x04CC, - cheverticalstrokecyrillic: 0x04B9, - chi: 0x03C7, - chieuchacirclekorean: 0x3277, - chieuchaparenkorean: 0x3217, - chieuchcirclekorean: 0x3269, - chieuchkorean: 0x314A, - chieuchparenkorean: 0x3209, - chochangthai: 0x0E0A, - chochanthai: 0x0E08, - chochingthai: 0x0E09, - chochoethai: 0x0E0C, - chook: 0x0188, - cieucacirclekorean: 0x3276, - cieucaparenkorean: 0x3216, - cieuccirclekorean: 0x3268, - cieuckorean: 0x3148, - cieucparenkorean: 0x3208, - cieucuparenkorean: 0x321C, - circle: 0x25CB, - circlecopyrt: 0x00A9, // This glyph is missing from Adobe's original list. - circlemultiply: 0x2297, - circleot: 0x2299, - circleplus: 0x2295, - circlepostalmark: 0x3036, - circlewithlefthalfblack: 0x25D0, - circlewithrighthalfblack: 0x25D1, - circumflex: 0x02C6, - circumflexbelowcmb: 0x032D, - circumflexcmb: 0x0302, - clear: 0x2327, - clickalveolar: 0x01C2, - clickdental: 0x01C0, - clicklateral: 0x01C1, - clickretroflex: 0x01C3, - club: 0x2663, - clubsuitblack: 0x2663, - clubsuitwhite: 0x2667, - cmcubedsquare: 0x33A4, - cmonospace: 0xFF43, - cmsquaredsquare: 0x33A0, - coarmenian: 0x0581, - colon: 0x003A, - colonmonetary: 0x20A1, - colonmonospace: 0xFF1A, - colonsign: 0x20A1, - colonsmall: 0xFE55, - colontriangularhalfmod: 0x02D1, - colontriangularmod: 0x02D0, - comma: 0x002C, - commaabovecmb: 0x0313, - commaaboverightcmb: 0x0315, - commaaccent: 0xF6C3, - commaarabic: 0x060C, - commaarmenian: 0x055D, - commainferior: 0xF6E1, - commamonospace: 0xFF0C, - commareversedabovecmb: 0x0314, - commareversedmod: 0x02BD, - commasmall: 0xFE50, - commasuperior: 0xF6E2, - commaturnedabovecmb: 0x0312, - commaturnedmod: 0x02BB, - compass: 0x263C, - congruent: 0x2245, - contourintegral: 0x222E, - control: 0x2303, - controlACK: 0x0006, - controlBEL: 0x0007, - controlBS: 0x0008, - controlCAN: 0x0018, - controlCR: 0x000D, - controlDC1: 0x0011, - controlDC2: 0x0012, - controlDC3: 0x0013, - controlDC4: 0x0014, - controlDEL: 0x007F, - controlDLE: 0x0010, - controlEM: 0x0019, - controlENQ: 0x0005, - controlEOT: 0x0004, - controlESC: 0x001B, - controlETB: 0x0017, - controlETX: 0x0003, - controlFF: 0x000C, - controlFS: 0x001C, - controlGS: 0x001D, - controlHT: 0x0009, - controlLF: 0x000A, - controlNAK: 0x0015, - controlRS: 0x001E, - controlSI: 0x000F, - controlSO: 0x000E, - controlSOT: 0x0002, - controlSTX: 0x0001, - controlSUB: 0x001A, - controlSYN: 0x0016, - controlUS: 0x001F, - controlVT: 0x000B, - copyright: 0x00A9, - copyrightsans: 0xF8E9, - copyrightserif: 0xF6D9, - cornerbracketleft: 0x300C, - cornerbracketlefthalfwidth: 0xFF62, - cornerbracketleftvertical: 0xFE41, - cornerbracketright: 0x300D, - cornerbracketrighthalfwidth: 0xFF63, - cornerbracketrightvertical: 0xFE42, - corporationsquare: 0x337F, - cosquare: 0x33C7, - coverkgsquare: 0x33C6, - cparen: 0x249E, - cruzeiro: 0x20A2, - cstretched: 0x0297, - curlyand: 0x22CF, - curlyor: 0x22CE, - currency: 0x00A4, - cyrBreve: 0xF6D1, - cyrFlex: 0xF6D2, - cyrbreve: 0xF6D4, - cyrflex: 0xF6D5, - d: 0x0064, - daarmenian: 0x0564, - dabengali: 0x09A6, - dadarabic: 0x0636, - dadeva: 0x0926, - dadfinalarabic: 0xFEBE, - dadinitialarabic: 0xFEBF, - dadmedialarabic: 0xFEC0, - dagesh: 0x05BC, - dageshhebrew: 0x05BC, - dagger: 0x2020, - daggerdbl: 0x2021, - dagujarati: 0x0AA6, - dagurmukhi: 0x0A26, - dahiragana: 0x3060, - dakatakana: 0x30C0, - dalarabic: 0x062F, - dalet: 0x05D3, - daletdagesh: 0xFB33, - daletdageshhebrew: 0xFB33, - dalethebrew: 0x05D3, - dalfinalarabic: 0xFEAA, - dammaarabic: 0x064F, - dammalowarabic: 0x064F, - dammatanaltonearabic: 0x064C, - dammatanarabic: 0x064C, - danda: 0x0964, - dargahebrew: 0x05A7, - dargalefthebrew: 0x05A7, - dasiapneumatacyrilliccmb: 0x0485, - dblGrave: 0xF6D3, - dblanglebracketleft: 0x300A, - dblanglebracketleftvertical: 0xFE3D, - dblanglebracketright: 0x300B, - dblanglebracketrightvertical: 0xFE3E, - dblarchinvertedbelowcmb: 0x032B, - dblarrowleft: 0x21D4, - dblarrowright: 0x21D2, - dbldanda: 0x0965, - dblgrave: 0xF6D6, - dblgravecmb: 0x030F, - dblintegral: 0x222C, - dbllowline: 0x2017, - dbllowlinecmb: 0x0333, - dbloverlinecmb: 0x033F, - dblprimemod: 0x02BA, - dblverticalbar: 0x2016, - dblverticallineabovecmb: 0x030E, - dbopomofo: 0x3109, - dbsquare: 0x33C8, - dcaron: 0x010F, - dcedilla: 0x1E11, - dcircle: 0x24D3, - dcircumflexbelow: 0x1E13, - dcroat: 0x0111, - ddabengali: 0x09A1, - ddadeva: 0x0921, - ddagujarati: 0x0AA1, - ddagurmukhi: 0x0A21, - ddalarabic: 0x0688, - ddalfinalarabic: 0xFB89, - dddhadeva: 0x095C, - ddhabengali: 0x09A2, - ddhadeva: 0x0922, - ddhagujarati: 0x0AA2, - ddhagurmukhi: 0x0A22, - ddotaccent: 0x1E0B, - ddotbelow: 0x1E0D, - decimalseparatorarabic: 0x066B, - decimalseparatorpersian: 0x066B, - decyrillic: 0x0434, - degree: 0x00B0, - dehihebrew: 0x05AD, - dehiragana: 0x3067, - deicoptic: 0x03EF, - dekatakana: 0x30C7, - deleteleft: 0x232B, - deleteright: 0x2326, - delta: 0x03B4, - deltaturned: 0x018D, - denominatorminusonenumeratorbengali: 0x09F8, - dezh: 0x02A4, - dhabengali: 0x09A7, - dhadeva: 0x0927, - dhagujarati: 0x0AA7, - dhagurmukhi: 0x0A27, - dhook: 0x0257, - dialytikatonos: 0x0385, - dialytikatonoscmb: 0x0344, - diamond: 0x2666, - diamondsuitwhite: 0x2662, - dieresis: 0x00A8, - dieresisacute: 0xF6D7, - dieresisbelowcmb: 0x0324, - dieresiscmb: 0x0308, - dieresisgrave: 0xF6D8, - dieresistonos: 0x0385, - dihiragana: 0x3062, - dikatakana: 0x30C2, - dittomark: 0x3003, - divide: 0x00F7, - divides: 0x2223, - divisionslash: 0x2215, - djecyrillic: 0x0452, - dkshade: 0x2593, - dlinebelow: 0x1E0F, - dlsquare: 0x3397, - dmacron: 0x0111, - dmonospace: 0xFF44, - dnblock: 0x2584, - dochadathai: 0x0E0E, - dodekthai: 0x0E14, - dohiragana: 0x3069, - dokatakana: 0x30C9, - dollar: 0x0024, - dollarinferior: 0xF6E3, - dollarmonospace: 0xFF04, - dollaroldstyle: 0xF724, - dollarsmall: 0xFE69, - dollarsuperior: 0xF6E4, - dong: 0x20AB, - dorusquare: 0x3326, - dotaccent: 0x02D9, - dotaccentcmb: 0x0307, - dotbelowcmb: 0x0323, - dotbelowcomb: 0x0323, - dotkatakana: 0x30FB, - dotlessi: 0x0131, - dotlessj: 0xF6BE, - dotlessjstrokehook: 0x0284, - dotmath: 0x22C5, - dottedcircle: 0x25CC, - doubleyodpatah: 0xFB1F, - doubleyodpatahhebrew: 0xFB1F, - downtackbelowcmb: 0x031E, - downtackmod: 0x02D5, - dparen: 0x249F, - dsuperior: 0xF6EB, - dtail: 0x0256, - dtopbar: 0x018C, - duhiragana: 0x3065, - dukatakana: 0x30C5, - dz: 0x01F3, - dzaltone: 0x02A3, - dzcaron: 0x01C6, - dzcurl: 0x02A5, - dzeabkhasiancyrillic: 0x04E1, - dzecyrillic: 0x0455, - dzhecyrillic: 0x045F, - e: 0x0065, - eacute: 0x00E9, - earth: 0x2641, - ebengali: 0x098F, - ebopomofo: 0x311C, - ebreve: 0x0115, - ecandradeva: 0x090D, - ecandragujarati: 0x0A8D, - ecandravowelsigndeva: 0x0945, - ecandravowelsigngujarati: 0x0AC5, - ecaron: 0x011B, - ecedillabreve: 0x1E1D, - echarmenian: 0x0565, - echyiwnarmenian: 0x0587, - ecircle: 0x24D4, - ecircumflex: 0x00EA, - ecircumflexacute: 0x1EBF, - ecircumflexbelow: 0x1E19, - ecircumflexdotbelow: 0x1EC7, - ecircumflexgrave: 0x1EC1, - ecircumflexhookabove: 0x1EC3, - ecircumflextilde: 0x1EC5, - ecyrillic: 0x0454, - edblgrave: 0x0205, - edeva: 0x090F, - edieresis: 0x00EB, - edot: 0x0117, - edotaccent: 0x0117, - edotbelow: 0x1EB9, - eegurmukhi: 0x0A0F, - eematragurmukhi: 0x0A47, - efcyrillic: 0x0444, - egrave: 0x00E8, - egujarati: 0x0A8F, - eharmenian: 0x0567, - ehbopomofo: 0x311D, - ehiragana: 0x3048, - ehookabove: 0x1EBB, - eibopomofo: 0x311F, - eight: 0x0038, - eightarabic: 0x0668, - eightbengali: 0x09EE, - eightcircle: 0x2467, - eightcircleinversesansserif: 0x2791, - eightdeva: 0x096E, - eighteencircle: 0x2471, - eighteenparen: 0x2485, - eighteenperiod: 0x2499, - eightgujarati: 0x0AEE, - eightgurmukhi: 0x0A6E, - eighthackarabic: 0x0668, - eighthangzhou: 0x3028, - eighthnotebeamed: 0x266B, - eightideographicparen: 0x3227, - eightinferior: 0x2088, - eightmonospace: 0xFF18, - eightoldstyle: 0xF738, - eightparen: 0x247B, - eightperiod: 0x248F, - eightpersian: 0x06F8, - eightroman: 0x2177, - eightsuperior: 0x2078, - eightthai: 0x0E58, - einvertedbreve: 0x0207, - eiotifiedcyrillic: 0x0465, - ekatakana: 0x30A8, - ekatakanahalfwidth: 0xFF74, - ekonkargurmukhi: 0x0A74, - ekorean: 0x3154, - elcyrillic: 0x043B, - element: 0x2208, - elevencircle: 0x246A, - elevenparen: 0x247E, - elevenperiod: 0x2492, - elevenroman: 0x217A, - ellipsis: 0x2026, - ellipsisvertical: 0x22EE, - emacron: 0x0113, - emacronacute: 0x1E17, - emacrongrave: 0x1E15, - emcyrillic: 0x043C, - emdash: 0x2014, - emdashvertical: 0xFE31, - emonospace: 0xFF45, - emphasismarkarmenian: 0x055B, - emptyset: 0x2205, - enbopomofo: 0x3123, - encyrillic: 0x043D, - endash: 0x2013, - endashvertical: 0xFE32, - endescendercyrillic: 0x04A3, - eng: 0x014B, - engbopomofo: 0x3125, - enghecyrillic: 0x04A5, - enhookcyrillic: 0x04C8, - enspace: 0x2002, - eogonek: 0x0119, - eokorean: 0x3153, - eopen: 0x025B, - eopenclosed: 0x029A, - eopenreversed: 0x025C, - eopenreversedclosed: 0x025E, - eopenreversedhook: 0x025D, - eparen: 0x24A0, - epsilon: 0x03B5, - epsilontonos: 0x03AD, - equal: 0x003D, - equalmonospace: 0xFF1D, - equalsmall: 0xFE66, - equalsuperior: 0x207C, - equivalence: 0x2261, - erbopomofo: 0x3126, - ercyrillic: 0x0440, - ereversed: 0x0258, - ereversedcyrillic: 0x044D, - escyrillic: 0x0441, - esdescendercyrillic: 0x04AB, - esh: 0x0283, - eshcurl: 0x0286, - eshortdeva: 0x090E, - eshortvowelsigndeva: 0x0946, - eshreversedloop: 0x01AA, - eshsquatreversed: 0x0285, - esmallhiragana: 0x3047, - esmallkatakana: 0x30A7, - esmallkatakanahalfwidth: 0xFF6A, - estimated: 0x212E, - esuperior: 0xF6EC, - eta: 0x03B7, - etarmenian: 0x0568, - etatonos: 0x03AE, - eth: 0x00F0, - etilde: 0x1EBD, - etildebelow: 0x1E1B, - etnahtafoukhhebrew: 0x0591, - etnahtafoukhlefthebrew: 0x0591, - etnahtahebrew: 0x0591, - etnahtalefthebrew: 0x0591, - eturned: 0x01DD, - eukorean: 0x3161, - euro: 0x20AC, - evowelsignbengali: 0x09C7, - evowelsigndeva: 0x0947, - evowelsigngujarati: 0x0AC7, - exclam: 0x0021, - exclamarmenian: 0x055C, - exclamdbl: 0x203C, - exclamdown: 0x00A1, - exclamdownsmall: 0xF7A1, - exclammonospace: 0xFF01, - exclamsmall: 0xF721, - existential: 0x2203, - ezh: 0x0292, - ezhcaron: 0x01EF, - ezhcurl: 0x0293, - ezhreversed: 0x01B9, - ezhtail: 0x01BA, - f: 0x0066, - fadeva: 0x095E, - fagurmukhi: 0x0A5E, - fahrenheit: 0x2109, - fathaarabic: 0x064E, - fathalowarabic: 0x064E, - fathatanarabic: 0x064B, - fbopomofo: 0x3108, - fcircle: 0x24D5, - fdotaccent: 0x1E1F, - feharabic: 0x0641, - feharmenian: 0x0586, - fehfinalarabic: 0xFED2, - fehinitialarabic: 0xFED3, - fehmedialarabic: 0xFED4, - feicoptic: 0x03E5, - female: 0x2640, - ff: 0xFB00, - ffi: 0xFB03, - ffl: 0xFB04, - fi: 0xFB01, - fifteencircle: 0x246E, - fifteenparen: 0x2482, - fifteenperiod: 0x2496, - figuredash: 0x2012, - filledbox: 0x25A0, - filledrect: 0x25AC, - finalkaf: 0x05DA, - finalkafdagesh: 0xFB3A, - finalkafdageshhebrew: 0xFB3A, - finalkafhebrew: 0x05DA, - finalmem: 0x05DD, - finalmemhebrew: 0x05DD, - finalnun: 0x05DF, - finalnunhebrew: 0x05DF, - finalpe: 0x05E3, - finalpehebrew: 0x05E3, - finaltsadi: 0x05E5, - finaltsadihebrew: 0x05E5, - firsttonechinese: 0x02C9, - fisheye: 0x25C9, - fitacyrillic: 0x0473, - five: 0x0035, - fivearabic: 0x0665, - fivebengali: 0x09EB, - fivecircle: 0x2464, - fivecircleinversesansserif: 0x278E, - fivedeva: 0x096B, - fiveeighths: 0x215D, - fivegujarati: 0x0AEB, - fivegurmukhi: 0x0A6B, - fivehackarabic: 0x0665, - fivehangzhou: 0x3025, - fiveideographicparen: 0x3224, - fiveinferior: 0x2085, - fivemonospace: 0xFF15, - fiveoldstyle: 0xF735, - fiveparen: 0x2478, - fiveperiod: 0x248C, - fivepersian: 0x06F5, - fiveroman: 0x2174, - fivesuperior: 0x2075, - fivethai: 0x0E55, - fl: 0xFB02, - florin: 0x0192, - fmonospace: 0xFF46, - fmsquare: 0x3399, - fofanthai: 0x0E1F, - fofathai: 0x0E1D, - fongmanthai: 0x0E4F, - forall: 0x2200, - four: 0x0034, - fourarabic: 0x0664, - fourbengali: 0x09EA, - fourcircle: 0x2463, - fourcircleinversesansserif: 0x278D, - fourdeva: 0x096A, - fourgujarati: 0x0AEA, - fourgurmukhi: 0x0A6A, - fourhackarabic: 0x0664, - fourhangzhou: 0x3024, - fourideographicparen: 0x3223, - fourinferior: 0x2084, - fourmonospace: 0xFF14, - fournumeratorbengali: 0x09F7, - fouroldstyle: 0xF734, - fourparen: 0x2477, - fourperiod: 0x248B, - fourpersian: 0x06F4, - fourroman: 0x2173, - foursuperior: 0x2074, - fourteencircle: 0x246D, - fourteenparen: 0x2481, - fourteenperiod: 0x2495, - fourthai: 0x0E54, - fourthtonechinese: 0x02CB, - fparen: 0x24A1, - fraction: 0x2044, - franc: 0x20A3, - g: 0x0067, - gabengali: 0x0997, - gacute: 0x01F5, - gadeva: 0x0917, - gafarabic: 0x06AF, - gaffinalarabic: 0xFB93, - gafinitialarabic: 0xFB94, - gafmedialarabic: 0xFB95, - gagujarati: 0x0A97, - gagurmukhi: 0x0A17, - gahiragana: 0x304C, - gakatakana: 0x30AC, - gamma: 0x03B3, - gammalatinsmall: 0x0263, - gammasuperior: 0x02E0, - gangiacoptic: 0x03EB, - gbopomofo: 0x310D, - gbreve: 0x011F, - gcaron: 0x01E7, - gcedilla: 0x0123, - gcircle: 0x24D6, - gcircumflex: 0x011D, - gcommaaccent: 0x0123, - gdot: 0x0121, - gdotaccent: 0x0121, - gecyrillic: 0x0433, - gehiragana: 0x3052, - gekatakana: 0x30B2, - geometricallyequal: 0x2251, - gereshaccenthebrew: 0x059C, - gereshhebrew: 0x05F3, - gereshmuqdamhebrew: 0x059D, - germandbls: 0x00DF, - gershayimaccenthebrew: 0x059E, - gershayimhebrew: 0x05F4, - getamark: 0x3013, - ghabengali: 0x0998, - ghadarmenian: 0x0572, - ghadeva: 0x0918, - ghagujarati: 0x0A98, - ghagurmukhi: 0x0A18, - ghainarabic: 0x063A, - ghainfinalarabic: 0xFECE, - ghaininitialarabic: 0xFECF, - ghainmedialarabic: 0xFED0, - ghemiddlehookcyrillic: 0x0495, - ghestrokecyrillic: 0x0493, - gheupturncyrillic: 0x0491, - ghhadeva: 0x095A, - ghhagurmukhi: 0x0A5A, - ghook: 0x0260, - ghzsquare: 0x3393, - gihiragana: 0x304E, - gikatakana: 0x30AE, - gimarmenian: 0x0563, - gimel: 0x05D2, - gimeldagesh: 0xFB32, - gimeldageshhebrew: 0xFB32, - gimelhebrew: 0x05D2, - gjecyrillic: 0x0453, - glottalinvertedstroke: 0x01BE, - glottalstop: 0x0294, - glottalstopinverted: 0x0296, - glottalstopmod: 0x02C0, - glottalstopreversed: 0x0295, - glottalstopreversedmod: 0x02C1, - glottalstopreversedsuperior: 0x02E4, - glottalstopstroke: 0x02A1, - glottalstopstrokereversed: 0x02A2, - gmacron: 0x1E21, - gmonospace: 0xFF47, - gohiragana: 0x3054, - gokatakana: 0x30B4, - gparen: 0x24A2, - gpasquare: 0x33AC, - gradient: 0x2207, - grave: 0x0060, - gravebelowcmb: 0x0316, - gravecmb: 0x0300, - gravecomb: 0x0300, - gravedeva: 0x0953, - gravelowmod: 0x02CE, - gravemonospace: 0xFF40, - gravetonecmb: 0x0340, - greater: 0x003E, - greaterequal: 0x2265, - greaterequalorless: 0x22DB, - greatermonospace: 0xFF1E, - greaterorequivalent: 0x2273, - greaterorless: 0x2277, - greateroverequal: 0x2267, - greatersmall: 0xFE65, - gscript: 0x0261, - gstroke: 0x01E5, - guhiragana: 0x3050, - guillemotleft: 0x00AB, - guillemotright: 0x00BB, - guilsinglleft: 0x2039, - guilsinglright: 0x203A, - gukatakana: 0x30B0, - guramusquare: 0x3318, - gysquare: 0x33C9, - h: 0x0068, - haabkhasiancyrillic: 0x04A9, - haaltonearabic: 0x06C1, - habengali: 0x09B9, - hadescendercyrillic: 0x04B3, - hadeva: 0x0939, - hagujarati: 0x0AB9, - hagurmukhi: 0x0A39, - haharabic: 0x062D, - hahfinalarabic: 0xFEA2, - hahinitialarabic: 0xFEA3, - hahiragana: 0x306F, - hahmedialarabic: 0xFEA4, - haitusquare: 0x332A, - hakatakana: 0x30CF, - hakatakanahalfwidth: 0xFF8A, - halantgurmukhi: 0x0A4D, - hamzaarabic: 0x0621, - hamzalowarabic: 0x0621, - hangulfiller: 0x3164, - hardsigncyrillic: 0x044A, - harpoonleftbarbup: 0x21BC, - harpoonrightbarbup: 0x21C0, - hasquare: 0x33CA, - hatafpatah: 0x05B2, - hatafpatah16: 0x05B2, - hatafpatah23: 0x05B2, - hatafpatah2f: 0x05B2, - hatafpatahhebrew: 0x05B2, - hatafpatahnarrowhebrew: 0x05B2, - hatafpatahquarterhebrew: 0x05B2, - hatafpatahwidehebrew: 0x05B2, - hatafqamats: 0x05B3, - hatafqamats1b: 0x05B3, - hatafqamats28: 0x05B3, - hatafqamats34: 0x05B3, - hatafqamatshebrew: 0x05B3, - hatafqamatsnarrowhebrew: 0x05B3, - hatafqamatsquarterhebrew: 0x05B3, - hatafqamatswidehebrew: 0x05B3, - hatafsegol: 0x05B1, - hatafsegol17: 0x05B1, - hatafsegol24: 0x05B1, - hatafsegol30: 0x05B1, - hatafsegolhebrew: 0x05B1, - hatafsegolnarrowhebrew: 0x05B1, - hatafsegolquarterhebrew: 0x05B1, - hatafsegolwidehebrew: 0x05B1, - hbar: 0x0127, - hbopomofo: 0x310F, - hbrevebelow: 0x1E2B, - hcedilla: 0x1E29, - hcircle: 0x24D7, - hcircumflex: 0x0125, - hdieresis: 0x1E27, - hdotaccent: 0x1E23, - hdotbelow: 0x1E25, - he: 0x05D4, - heart: 0x2665, - heartsuitblack: 0x2665, - heartsuitwhite: 0x2661, - hedagesh: 0xFB34, - hedageshhebrew: 0xFB34, - hehaltonearabic: 0x06C1, - heharabic: 0x0647, - hehebrew: 0x05D4, - hehfinalaltonearabic: 0xFBA7, - hehfinalalttwoarabic: 0xFEEA, - hehfinalarabic: 0xFEEA, - hehhamzaabovefinalarabic: 0xFBA5, - hehhamzaaboveisolatedarabic: 0xFBA4, - hehinitialaltonearabic: 0xFBA8, - hehinitialarabic: 0xFEEB, - hehiragana: 0x3078, - hehmedialaltonearabic: 0xFBA9, - hehmedialarabic: 0xFEEC, - heiseierasquare: 0x337B, - hekatakana: 0x30D8, - hekatakanahalfwidth: 0xFF8D, - hekutaarusquare: 0x3336, - henghook: 0x0267, - herutusquare: 0x3339, - het: 0x05D7, - hethebrew: 0x05D7, - hhook: 0x0266, - hhooksuperior: 0x02B1, - hieuhacirclekorean: 0x327B, - hieuhaparenkorean: 0x321B, - hieuhcirclekorean: 0x326D, - hieuhkorean: 0x314E, - hieuhparenkorean: 0x320D, - hihiragana: 0x3072, - hikatakana: 0x30D2, - hikatakanahalfwidth: 0xFF8B, - hiriq: 0x05B4, - hiriq14: 0x05B4, - hiriq21: 0x05B4, - hiriq2d: 0x05B4, - hiriqhebrew: 0x05B4, - hiriqnarrowhebrew: 0x05B4, - hiriqquarterhebrew: 0x05B4, - hiriqwidehebrew: 0x05B4, - hlinebelow: 0x1E96, - hmonospace: 0xFF48, - hoarmenian: 0x0570, - hohipthai: 0x0E2B, - hohiragana: 0x307B, - hokatakana: 0x30DB, - hokatakanahalfwidth: 0xFF8E, - holam: 0x05B9, - holam19: 0x05B9, - holam26: 0x05B9, - holam32: 0x05B9, - holamhebrew: 0x05B9, - holamnarrowhebrew: 0x05B9, - holamquarterhebrew: 0x05B9, - holamwidehebrew: 0x05B9, - honokhukthai: 0x0E2E, - hookabovecomb: 0x0309, - hookcmb: 0x0309, - hookpalatalizedbelowcmb: 0x0321, - hookretroflexbelowcmb: 0x0322, - hoonsquare: 0x3342, - horicoptic: 0x03E9, - horizontalbar: 0x2015, - horncmb: 0x031B, - hotsprings: 0x2668, - house: 0x2302, - hparen: 0x24A3, - hsuperior: 0x02B0, - hturned: 0x0265, - huhiragana: 0x3075, - huiitosquare: 0x3333, - hukatakana: 0x30D5, - hukatakanahalfwidth: 0xFF8C, - hungarumlaut: 0x02DD, - hungarumlautcmb: 0x030B, - hv: 0x0195, - hyphen: 0x002D, - hypheninferior: 0xF6E5, - hyphenmonospace: 0xFF0D, - hyphensmall: 0xFE63, - hyphensuperior: 0xF6E6, - hyphentwo: 0x2010, - i: 0x0069, - iacute: 0x00ED, - iacyrillic: 0x044F, - ibengali: 0x0987, - ibopomofo: 0x3127, - ibreve: 0x012D, - icaron: 0x01D0, - icircle: 0x24D8, - icircumflex: 0x00EE, - icyrillic: 0x0456, - idblgrave: 0x0209, - ideographearthcircle: 0x328F, - ideographfirecircle: 0x328B, - ideographicallianceparen: 0x323F, - ideographiccallparen: 0x323A, - ideographiccentrecircle: 0x32A5, - ideographicclose: 0x3006, - ideographiccomma: 0x3001, - ideographiccommaleft: 0xFF64, - ideographiccongratulationparen: 0x3237, - ideographiccorrectcircle: 0x32A3, - ideographicearthparen: 0x322F, - ideographicenterpriseparen: 0x323D, - ideographicexcellentcircle: 0x329D, - ideographicfestivalparen: 0x3240, - ideographicfinancialcircle: 0x3296, - ideographicfinancialparen: 0x3236, - ideographicfireparen: 0x322B, - ideographichaveparen: 0x3232, - ideographichighcircle: 0x32A4, - ideographiciterationmark: 0x3005, - ideographiclaborcircle: 0x3298, - ideographiclaborparen: 0x3238, - ideographicleftcircle: 0x32A7, - ideographiclowcircle: 0x32A6, - ideographicmedicinecircle: 0x32A9, - ideographicmetalparen: 0x322E, - ideographicmoonparen: 0x322A, - ideographicnameparen: 0x3234, - ideographicperiod: 0x3002, - ideographicprintcircle: 0x329E, - ideographicreachparen: 0x3243, - ideographicrepresentparen: 0x3239, - ideographicresourceparen: 0x323E, - ideographicrightcircle: 0x32A8, - ideographicsecretcircle: 0x3299, - ideographicselfparen: 0x3242, - ideographicsocietyparen: 0x3233, - ideographicspace: 0x3000, - ideographicspecialparen: 0x3235, - ideographicstockparen: 0x3231, - ideographicstudyparen: 0x323B, - ideographicsunparen: 0x3230, - ideographicsuperviseparen: 0x323C, - ideographicwaterparen: 0x322C, - ideographicwoodparen: 0x322D, - ideographiczero: 0x3007, - ideographmetalcircle: 0x328E, - ideographmooncircle: 0x328A, - ideographnamecircle: 0x3294, - ideographsuncircle: 0x3290, - ideographwatercircle: 0x328C, - ideographwoodcircle: 0x328D, - ideva: 0x0907, - idieresis: 0x00EF, - idieresisacute: 0x1E2F, - idieresiscyrillic: 0x04E5, - idotbelow: 0x1ECB, - iebrevecyrillic: 0x04D7, - iecyrillic: 0x0435, - ieungacirclekorean: 0x3275, - ieungaparenkorean: 0x3215, - ieungcirclekorean: 0x3267, - ieungkorean: 0x3147, - ieungparenkorean: 0x3207, - igrave: 0x00EC, - igujarati: 0x0A87, - igurmukhi: 0x0A07, - ihiragana: 0x3044, - ihookabove: 0x1EC9, - iibengali: 0x0988, - iicyrillic: 0x0438, - iideva: 0x0908, - iigujarati: 0x0A88, - iigurmukhi: 0x0A08, - iimatragurmukhi: 0x0A40, - iinvertedbreve: 0x020B, - iishortcyrillic: 0x0439, - iivowelsignbengali: 0x09C0, - iivowelsigndeva: 0x0940, - iivowelsigngujarati: 0x0AC0, - ij: 0x0133, - ikatakana: 0x30A4, - ikatakanahalfwidth: 0xFF72, - ikorean: 0x3163, - ilde: 0x02DC, - iluyhebrew: 0x05AC, - imacron: 0x012B, - imacroncyrillic: 0x04E3, - imageorapproximatelyequal: 0x2253, - imatragurmukhi: 0x0A3F, - imonospace: 0xFF49, - increment: 0x2206, - infinity: 0x221E, - iniarmenian: 0x056B, - integral: 0x222B, - integralbottom: 0x2321, - integralbt: 0x2321, - integralex: 0xF8F5, - integraltop: 0x2320, - integraltp: 0x2320, - intersection: 0x2229, - intisquare: 0x3305, - invbullet: 0x25D8, - invcircle: 0x25D9, - invsmileface: 0x263B, - iocyrillic: 0x0451, - iogonek: 0x012F, - iota: 0x03B9, - iotadieresis: 0x03CA, - iotadieresistonos: 0x0390, - iotalatin: 0x0269, - iotatonos: 0x03AF, - iparen: 0x24A4, - irigurmukhi: 0x0A72, - ismallhiragana: 0x3043, - ismallkatakana: 0x30A3, - ismallkatakanahalfwidth: 0xFF68, - issharbengali: 0x09FA, - istroke: 0x0268, - isuperior: 0xF6ED, - iterationhiragana: 0x309D, - iterationkatakana: 0x30FD, - itilde: 0x0129, - itildebelow: 0x1E2D, - iubopomofo: 0x3129, - iucyrillic: 0x044E, - ivowelsignbengali: 0x09BF, - ivowelsigndeva: 0x093F, - ivowelsigngujarati: 0x0ABF, - izhitsacyrillic: 0x0475, - izhitsadblgravecyrillic: 0x0477, - j: 0x006A, - jaarmenian: 0x0571, - jabengali: 0x099C, - jadeva: 0x091C, - jagujarati: 0x0A9C, - jagurmukhi: 0x0A1C, - jbopomofo: 0x3110, - jcaron: 0x01F0, - jcircle: 0x24D9, - jcircumflex: 0x0135, - jcrossedtail: 0x029D, - jdotlessstroke: 0x025F, - jecyrillic: 0x0458, - jeemarabic: 0x062C, - jeemfinalarabic: 0xFE9E, - jeeminitialarabic: 0xFE9F, - jeemmedialarabic: 0xFEA0, - jeharabic: 0x0698, - jehfinalarabic: 0xFB8B, - jhabengali: 0x099D, - jhadeva: 0x091D, - jhagujarati: 0x0A9D, - jhagurmukhi: 0x0A1D, - jheharmenian: 0x057B, - jis: 0x3004, - jmonospace: 0xFF4A, - jparen: 0x24A5, - jsuperior: 0x02B2, - k: 0x006B, - kabashkircyrillic: 0x04A1, - kabengali: 0x0995, - kacute: 0x1E31, - kacyrillic: 0x043A, - kadescendercyrillic: 0x049B, - kadeva: 0x0915, - kaf: 0x05DB, - kafarabic: 0x0643, - kafdagesh: 0xFB3B, - kafdageshhebrew: 0xFB3B, - kaffinalarabic: 0xFEDA, - kafhebrew: 0x05DB, - kafinitialarabic: 0xFEDB, - kafmedialarabic: 0xFEDC, - kafrafehebrew: 0xFB4D, - kagujarati: 0x0A95, - kagurmukhi: 0x0A15, - kahiragana: 0x304B, - kahookcyrillic: 0x04C4, - kakatakana: 0x30AB, - kakatakanahalfwidth: 0xFF76, - kappa: 0x03BA, - kappasymbolgreek: 0x03F0, - kapyeounmieumkorean: 0x3171, - kapyeounphieuphkorean: 0x3184, - kapyeounpieupkorean: 0x3178, - kapyeounssangpieupkorean: 0x3179, - karoriisquare: 0x330D, - kashidaautoarabic: 0x0640, - kashidaautonosidebearingarabic: 0x0640, - kasmallkatakana: 0x30F5, - kasquare: 0x3384, - kasraarabic: 0x0650, - kasratanarabic: 0x064D, - kastrokecyrillic: 0x049F, - katahiraprolongmarkhalfwidth: 0xFF70, - kaverticalstrokecyrillic: 0x049D, - kbopomofo: 0x310E, - kcalsquare: 0x3389, - kcaron: 0x01E9, - kcedilla: 0x0137, - kcircle: 0x24DA, - kcommaaccent: 0x0137, - kdotbelow: 0x1E33, - keharmenian: 0x0584, - kehiragana: 0x3051, - kekatakana: 0x30B1, - kekatakanahalfwidth: 0xFF79, - kenarmenian: 0x056F, - kesmallkatakana: 0x30F6, - kgreenlandic: 0x0138, - khabengali: 0x0996, - khacyrillic: 0x0445, - khadeva: 0x0916, - khagujarati: 0x0A96, - khagurmukhi: 0x0A16, - khaharabic: 0x062E, - khahfinalarabic: 0xFEA6, - khahinitialarabic: 0xFEA7, - khahmedialarabic: 0xFEA8, - kheicoptic: 0x03E7, - khhadeva: 0x0959, - khhagurmukhi: 0x0A59, - khieukhacirclekorean: 0x3278, - khieukhaparenkorean: 0x3218, - khieukhcirclekorean: 0x326A, - khieukhkorean: 0x314B, - khieukhparenkorean: 0x320A, - khokhaithai: 0x0E02, - khokhonthai: 0x0E05, - khokhuatthai: 0x0E03, - khokhwaithai: 0x0E04, - khomutthai: 0x0E5B, - khook: 0x0199, - khorakhangthai: 0x0E06, - khzsquare: 0x3391, - kihiragana: 0x304D, - kikatakana: 0x30AD, - kikatakanahalfwidth: 0xFF77, - kiroguramusquare: 0x3315, - kiromeetorusquare: 0x3316, - kirosquare: 0x3314, - kiyeokacirclekorean: 0x326E, - kiyeokaparenkorean: 0x320E, - kiyeokcirclekorean: 0x3260, - kiyeokkorean: 0x3131, - kiyeokparenkorean: 0x3200, - kiyeoksioskorean: 0x3133, - kjecyrillic: 0x045C, - klinebelow: 0x1E35, - klsquare: 0x3398, - kmcubedsquare: 0x33A6, - kmonospace: 0xFF4B, - kmsquaredsquare: 0x33A2, - kohiragana: 0x3053, - kohmsquare: 0x33C0, - kokaithai: 0x0E01, - kokatakana: 0x30B3, - kokatakanahalfwidth: 0xFF7A, - kooposquare: 0x331E, - koppacyrillic: 0x0481, - koreanstandardsymbol: 0x327F, - koroniscmb: 0x0343, - kparen: 0x24A6, - kpasquare: 0x33AA, - ksicyrillic: 0x046F, - ktsquare: 0x33CF, - kturned: 0x029E, - kuhiragana: 0x304F, - kukatakana: 0x30AF, - kukatakanahalfwidth: 0xFF78, - kvsquare: 0x33B8, - kwsquare: 0x33BE, - l: 0x006C, - labengali: 0x09B2, - lacute: 0x013A, - ladeva: 0x0932, - lagujarati: 0x0AB2, - lagurmukhi: 0x0A32, - lakkhangyaothai: 0x0E45, - lamaleffinalarabic: 0xFEFC, - lamalefhamzaabovefinalarabic: 0xFEF8, - lamalefhamzaaboveisolatedarabic: 0xFEF7, - lamalefhamzabelowfinalarabic: 0xFEFA, - lamalefhamzabelowisolatedarabic: 0xFEF9, - lamalefisolatedarabic: 0xFEFB, - lamalefmaddaabovefinalarabic: 0xFEF6, - lamalefmaddaaboveisolatedarabic: 0xFEF5, - lamarabic: 0x0644, - lambda: 0x03BB, - lambdastroke: 0x019B, - lamed: 0x05DC, - lameddagesh: 0xFB3C, - lameddageshhebrew: 0xFB3C, - lamedhebrew: 0x05DC, - lamfinalarabic: 0xFEDE, - lamhahinitialarabic: 0xFCCA, - laminitialarabic: 0xFEDF, - lamjeeminitialarabic: 0xFCC9, - lamkhahinitialarabic: 0xFCCB, - lamlamhehisolatedarabic: 0xFDF2, - lammedialarabic: 0xFEE0, - lammeemhahinitialarabic: 0xFD88, - lammeeminitialarabic: 0xFCCC, - largecircle: 0x25EF, - lbar: 0x019A, - lbelt: 0x026C, - lbopomofo: 0x310C, - lcaron: 0x013E, - lcedilla: 0x013C, - lcircle: 0x24DB, - lcircumflexbelow: 0x1E3D, - lcommaaccent: 0x013C, - ldot: 0x0140, - ldotaccent: 0x0140, - ldotbelow: 0x1E37, - ldotbelowmacron: 0x1E39, - leftangleabovecmb: 0x031A, - lefttackbelowcmb: 0x0318, - less: 0x003C, - lessequal: 0x2264, - lessequalorgreater: 0x22DA, - lessmonospace: 0xFF1C, - lessorequivalent: 0x2272, - lessorgreater: 0x2276, - lessoverequal: 0x2266, - lesssmall: 0xFE64, - lezh: 0x026E, - lfblock: 0x258C, - lhookretroflex: 0x026D, - lira: 0x20A4, - liwnarmenian: 0x056C, - lj: 0x01C9, - ljecyrillic: 0x0459, - ll: 0xF6C0, - lladeva: 0x0933, - llagujarati: 0x0AB3, - llinebelow: 0x1E3B, - llladeva: 0x0934, - llvocalicbengali: 0x09E1, - llvocalicdeva: 0x0961, - llvocalicvowelsignbengali: 0x09E3, - llvocalicvowelsigndeva: 0x0963, - lmiddletilde: 0x026B, - lmonospace: 0xFF4C, - lmsquare: 0x33D0, - lochulathai: 0x0E2C, - logicaland: 0x2227, - logicalnot: 0x00AC, - logicalnotreversed: 0x2310, - logicalor: 0x2228, - lolingthai: 0x0E25, - longs: 0x017F, - lowlinecenterline: 0xFE4E, - lowlinecmb: 0x0332, - lowlinedashed: 0xFE4D, - lozenge: 0x25CA, - lparen: 0x24A7, - lslash: 0x0142, - lsquare: 0x2113, - lsuperior: 0xF6EE, - ltshade: 0x2591, - luthai: 0x0E26, - lvocalicbengali: 0x098C, - lvocalicdeva: 0x090C, - lvocalicvowelsignbengali: 0x09E2, - lvocalicvowelsigndeva: 0x0962, - lxsquare: 0x33D3, - m: 0x006D, - mabengali: 0x09AE, - macron: 0x00AF, - macronbelowcmb: 0x0331, - macroncmb: 0x0304, - macronlowmod: 0x02CD, - macronmonospace: 0xFFE3, - macute: 0x1E3F, - madeva: 0x092E, - magujarati: 0x0AAE, - magurmukhi: 0x0A2E, - mahapakhhebrew: 0x05A4, - mahapakhlefthebrew: 0x05A4, - mahiragana: 0x307E, - maichattawalowleftthai: 0xF895, - maichattawalowrightthai: 0xF894, - maichattawathai: 0x0E4B, - maichattawaupperleftthai: 0xF893, - maieklowleftthai: 0xF88C, - maieklowrightthai: 0xF88B, - maiekthai: 0x0E48, - maiekupperleftthai: 0xF88A, - maihanakatleftthai: 0xF884, - maihanakatthai: 0x0E31, - maitaikhuleftthai: 0xF889, - maitaikhuthai: 0x0E47, - maitholowleftthai: 0xF88F, - maitholowrightthai: 0xF88E, - maithothai: 0x0E49, - maithoupperleftthai: 0xF88D, - maitrilowleftthai: 0xF892, - maitrilowrightthai: 0xF891, - maitrithai: 0x0E4A, - maitriupperleftthai: 0xF890, - maiyamokthai: 0x0E46, - makatakana: 0x30DE, - makatakanahalfwidth: 0xFF8F, - male: 0x2642, - mansyonsquare: 0x3347, - maqafhebrew: 0x05BE, - mars: 0x2642, - masoracirclehebrew: 0x05AF, - masquare: 0x3383, - mbopomofo: 0x3107, - mbsquare: 0x33D4, - mcircle: 0x24DC, - mcubedsquare: 0x33A5, - mdotaccent: 0x1E41, - mdotbelow: 0x1E43, - meemarabic: 0x0645, - meemfinalarabic: 0xFEE2, - meeminitialarabic: 0xFEE3, - meemmedialarabic: 0xFEE4, - meemmeeminitialarabic: 0xFCD1, - meemmeemisolatedarabic: 0xFC48, - meetorusquare: 0x334D, - mehiragana: 0x3081, - meizierasquare: 0x337E, - mekatakana: 0x30E1, - mekatakanahalfwidth: 0xFF92, - mem: 0x05DE, - memdagesh: 0xFB3E, - memdageshhebrew: 0xFB3E, - memhebrew: 0x05DE, - menarmenian: 0x0574, - merkhahebrew: 0x05A5, - merkhakefulahebrew: 0x05A6, - merkhakefulalefthebrew: 0x05A6, - merkhalefthebrew: 0x05A5, - mhook: 0x0271, - mhzsquare: 0x3392, - middledotkatakanahalfwidth: 0xFF65, - middot: 0x00B7, - mieumacirclekorean: 0x3272, - mieumaparenkorean: 0x3212, - mieumcirclekorean: 0x3264, - mieumkorean: 0x3141, - mieumpansioskorean: 0x3170, - mieumparenkorean: 0x3204, - mieumpieupkorean: 0x316E, - mieumsioskorean: 0x316F, - mihiragana: 0x307F, - mikatakana: 0x30DF, - mikatakanahalfwidth: 0xFF90, - minus: 0x2212, - minusbelowcmb: 0x0320, - minuscircle: 0x2296, - minusmod: 0x02D7, - minusplus: 0x2213, - minute: 0x2032, - miribaarusquare: 0x334A, - mirisquare: 0x3349, - mlonglegturned: 0x0270, - mlsquare: 0x3396, - mmcubedsquare: 0x33A3, - mmonospace: 0xFF4D, - mmsquaredsquare: 0x339F, - mohiragana: 0x3082, - mohmsquare: 0x33C1, - mokatakana: 0x30E2, - mokatakanahalfwidth: 0xFF93, - molsquare: 0x33D6, - momathai: 0x0E21, - moverssquare: 0x33A7, - moverssquaredsquare: 0x33A8, - mparen: 0x24A8, - mpasquare: 0x33AB, - mssquare: 0x33B3, - msuperior: 0xF6EF, - mturned: 0x026F, - mu: 0x00B5, - mu1: 0x00B5, - muasquare: 0x3382, - muchgreater: 0x226B, - muchless: 0x226A, - mufsquare: 0x338C, - mugreek: 0x03BC, - mugsquare: 0x338D, - muhiragana: 0x3080, - mukatakana: 0x30E0, - mukatakanahalfwidth: 0xFF91, - mulsquare: 0x3395, - multiply: 0x00D7, - mumsquare: 0x339B, - munahhebrew: 0x05A3, - munahlefthebrew: 0x05A3, - musicalnote: 0x266A, - musicalnotedbl: 0x266B, - musicflatsign: 0x266D, - musicsharpsign: 0x266F, - mussquare: 0x33B2, - muvsquare: 0x33B6, - muwsquare: 0x33BC, - mvmegasquare: 0x33B9, - mvsquare: 0x33B7, - mwmegasquare: 0x33BF, - mwsquare: 0x33BD, - n: 0x006E, - nabengali: 0x09A8, - nabla: 0x2207, - nacute: 0x0144, - nadeva: 0x0928, - nagujarati: 0x0AA8, - nagurmukhi: 0x0A28, - nahiragana: 0x306A, - nakatakana: 0x30CA, - nakatakanahalfwidth: 0xFF85, - napostrophe: 0x0149, - nasquare: 0x3381, - nbopomofo: 0x310B, - nbspace: 0x00A0, - ncaron: 0x0148, - ncedilla: 0x0146, - ncircle: 0x24DD, - ncircumflexbelow: 0x1E4B, - ncommaaccent: 0x0146, - ndotaccent: 0x1E45, - ndotbelow: 0x1E47, - nehiragana: 0x306D, - nekatakana: 0x30CD, - nekatakanahalfwidth: 0xFF88, - newsheqelsign: 0x20AA, - nfsquare: 0x338B, - ngabengali: 0x0999, - ngadeva: 0x0919, - ngagujarati: 0x0A99, - ngagurmukhi: 0x0A19, - ngonguthai: 0x0E07, - nhiragana: 0x3093, - nhookleft: 0x0272, - nhookretroflex: 0x0273, - nieunacirclekorean: 0x326F, - nieunaparenkorean: 0x320F, - nieuncieuckorean: 0x3135, - nieuncirclekorean: 0x3261, - nieunhieuhkorean: 0x3136, - nieunkorean: 0x3134, - nieunpansioskorean: 0x3168, - nieunparenkorean: 0x3201, - nieunsioskorean: 0x3167, - nieuntikeutkorean: 0x3166, - nihiragana: 0x306B, - nikatakana: 0x30CB, - nikatakanahalfwidth: 0xFF86, - nikhahitleftthai: 0xF899, - nikhahitthai: 0x0E4D, - nine: 0x0039, - ninearabic: 0x0669, - ninebengali: 0x09EF, - ninecircle: 0x2468, - ninecircleinversesansserif: 0x2792, - ninedeva: 0x096F, - ninegujarati: 0x0AEF, - ninegurmukhi: 0x0A6F, - ninehackarabic: 0x0669, - ninehangzhou: 0x3029, - nineideographicparen: 0x3228, - nineinferior: 0x2089, - ninemonospace: 0xFF19, - nineoldstyle: 0xF739, - nineparen: 0x247C, - nineperiod: 0x2490, - ninepersian: 0x06F9, - nineroman: 0x2178, - ninesuperior: 0x2079, - nineteencircle: 0x2472, - nineteenparen: 0x2486, - nineteenperiod: 0x249A, - ninethai: 0x0E59, - nj: 0x01CC, - njecyrillic: 0x045A, - nkatakana: 0x30F3, - nkatakanahalfwidth: 0xFF9D, - nlegrightlong: 0x019E, - nlinebelow: 0x1E49, - nmonospace: 0xFF4E, - nmsquare: 0x339A, - nnabengali: 0x09A3, - nnadeva: 0x0923, - nnagujarati: 0x0AA3, - nnagurmukhi: 0x0A23, - nnnadeva: 0x0929, - nohiragana: 0x306E, - nokatakana: 0x30CE, - nokatakanahalfwidth: 0xFF89, - nonbreakingspace: 0x00A0, - nonenthai: 0x0E13, - nonuthai: 0x0E19, - noonarabic: 0x0646, - noonfinalarabic: 0xFEE6, - noonghunnaarabic: 0x06BA, - noonghunnafinalarabic: 0xFB9F, - nooninitialarabic: 0xFEE7, - noonjeeminitialarabic: 0xFCD2, - noonjeemisolatedarabic: 0xFC4B, - noonmedialarabic: 0xFEE8, - noonmeeminitialarabic: 0xFCD5, - noonmeemisolatedarabic: 0xFC4E, - noonnoonfinalarabic: 0xFC8D, - notcontains: 0x220C, - notelement: 0x2209, - notelementof: 0x2209, - notequal: 0x2260, - notgreater: 0x226F, - notgreaternorequal: 0x2271, - notgreaternorless: 0x2279, - notidentical: 0x2262, - notless: 0x226E, - notlessnorequal: 0x2270, - notparallel: 0x2226, - notprecedes: 0x2280, - notsubset: 0x2284, - notsucceeds: 0x2281, - notsuperset: 0x2285, - nowarmenian: 0x0576, - nparen: 0x24A9, - nssquare: 0x33B1, - nsuperior: 0x207F, - ntilde: 0x00F1, - nu: 0x03BD, - nuhiragana: 0x306C, - nukatakana: 0x30CC, - nukatakanahalfwidth: 0xFF87, - nuktabengali: 0x09BC, - nuktadeva: 0x093C, - nuktagujarati: 0x0ABC, - nuktagurmukhi: 0x0A3C, - numbersign: 0x0023, - numbersignmonospace: 0xFF03, - numbersignsmall: 0xFE5F, - numeralsigngreek: 0x0374, - numeralsignlowergreek: 0x0375, - numero: 0x2116, - nun: 0x05E0, - nundagesh: 0xFB40, - nundageshhebrew: 0xFB40, - nunhebrew: 0x05E0, - nvsquare: 0x33B5, - nwsquare: 0x33BB, - nyabengali: 0x099E, - nyadeva: 0x091E, - nyagujarati: 0x0A9E, - nyagurmukhi: 0x0A1E, - o: 0x006F, - oacute: 0x00F3, - oangthai: 0x0E2D, - obarred: 0x0275, - obarredcyrillic: 0x04E9, - obarreddieresiscyrillic: 0x04EB, - obengali: 0x0993, - obopomofo: 0x311B, - obreve: 0x014F, - ocandradeva: 0x0911, - ocandragujarati: 0x0A91, - ocandravowelsigndeva: 0x0949, - ocandravowelsigngujarati: 0x0AC9, - ocaron: 0x01D2, - ocircle: 0x24DE, - ocircumflex: 0x00F4, - ocircumflexacute: 0x1ED1, - ocircumflexdotbelow: 0x1ED9, - ocircumflexgrave: 0x1ED3, - ocircumflexhookabove: 0x1ED5, - ocircumflextilde: 0x1ED7, - ocyrillic: 0x043E, - odblacute: 0x0151, - odblgrave: 0x020D, - odeva: 0x0913, - odieresis: 0x00F6, - odieresiscyrillic: 0x04E7, - odotbelow: 0x1ECD, - oe: 0x0153, - oekorean: 0x315A, - ogonek: 0x02DB, - ogonekcmb: 0x0328, - ograve: 0x00F2, - ogujarati: 0x0A93, - oharmenian: 0x0585, - ohiragana: 0x304A, - ohookabove: 0x1ECF, - ohorn: 0x01A1, - ohornacute: 0x1EDB, - ohorndotbelow: 0x1EE3, - ohorngrave: 0x1EDD, - ohornhookabove: 0x1EDF, - ohorntilde: 0x1EE1, - ohungarumlaut: 0x0151, - oi: 0x01A3, - oinvertedbreve: 0x020F, - okatakana: 0x30AA, - okatakanahalfwidth: 0xFF75, - okorean: 0x3157, - olehebrew: 0x05AB, - omacron: 0x014D, - omacronacute: 0x1E53, - omacrongrave: 0x1E51, - omdeva: 0x0950, - omega: 0x03C9, - omega1: 0x03D6, - omegacyrillic: 0x0461, - omegalatinclosed: 0x0277, - omegaroundcyrillic: 0x047B, - omegatitlocyrillic: 0x047D, - omegatonos: 0x03CE, - omgujarati: 0x0AD0, - omicron: 0x03BF, - omicrontonos: 0x03CC, - omonospace: 0xFF4F, - one: 0x0031, - onearabic: 0x0661, - onebengali: 0x09E7, - onecircle: 0x2460, - onecircleinversesansserif: 0x278A, - onedeva: 0x0967, - onedotenleader: 0x2024, - oneeighth: 0x215B, - onefitted: 0xF6DC, - onegujarati: 0x0AE7, - onegurmukhi: 0x0A67, - onehackarabic: 0x0661, - onehalf: 0x00BD, - onehangzhou: 0x3021, - oneideographicparen: 0x3220, - oneinferior: 0x2081, - onemonospace: 0xFF11, - onenumeratorbengali: 0x09F4, - oneoldstyle: 0xF731, - oneparen: 0x2474, - oneperiod: 0x2488, - onepersian: 0x06F1, - onequarter: 0x00BC, - oneroman: 0x2170, - onesuperior: 0x00B9, - onethai: 0x0E51, - onethird: 0x2153, - oogonek: 0x01EB, - oogonekmacron: 0x01ED, - oogurmukhi: 0x0A13, - oomatragurmukhi: 0x0A4B, - oopen: 0x0254, - oparen: 0x24AA, - openbullet: 0x25E6, - option: 0x2325, - ordfeminine: 0x00AA, - ordmasculine: 0x00BA, - orthogonal: 0x221F, - oshortdeva: 0x0912, - oshortvowelsigndeva: 0x094A, - oslash: 0x00F8, - oslashacute: 0x01FF, - osmallhiragana: 0x3049, - osmallkatakana: 0x30A9, - osmallkatakanahalfwidth: 0xFF6B, - ostrokeacute: 0x01FF, - osuperior: 0xF6F0, - otcyrillic: 0x047F, - otilde: 0x00F5, - otildeacute: 0x1E4D, - otildedieresis: 0x1E4F, - oubopomofo: 0x3121, - overline: 0x203E, - overlinecenterline: 0xFE4A, - overlinecmb: 0x0305, - overlinedashed: 0xFE49, - overlinedblwavy: 0xFE4C, - overlinewavy: 0xFE4B, - overscore: 0x00AF, - ovowelsignbengali: 0x09CB, - ovowelsigndeva: 0x094B, - ovowelsigngujarati: 0x0ACB, - p: 0x0070, - paampssquare: 0x3380, - paasentosquare: 0x332B, - pabengali: 0x09AA, - pacute: 0x1E55, - padeva: 0x092A, - pagedown: 0x21DF, - pageup: 0x21DE, - pagujarati: 0x0AAA, - pagurmukhi: 0x0A2A, - pahiragana: 0x3071, - paiyannoithai: 0x0E2F, - pakatakana: 0x30D1, - palatalizationcyrilliccmb: 0x0484, - palochkacyrillic: 0x04C0, - pansioskorean: 0x317F, - paragraph: 0x00B6, - parallel: 0x2225, - parenleft: 0x0028, - parenleftaltonearabic: 0xFD3E, - parenleftbt: 0xF8ED, - parenleftex: 0xF8EC, - parenleftinferior: 0x208D, - parenleftmonospace: 0xFF08, - parenleftsmall: 0xFE59, - parenleftsuperior: 0x207D, - parenlefttp: 0xF8EB, - parenleftvertical: 0xFE35, - parenright: 0x0029, - parenrightaltonearabic: 0xFD3F, - parenrightbt: 0xF8F8, - parenrightex: 0xF8F7, - parenrightinferior: 0x208E, - parenrightmonospace: 0xFF09, - parenrightsmall: 0xFE5A, - parenrightsuperior: 0x207E, - parenrighttp: 0xF8F6, - parenrightvertical: 0xFE36, - partialdiff: 0x2202, - paseqhebrew: 0x05C0, - pashtahebrew: 0x0599, - pasquare: 0x33A9, - patah: 0x05B7, - patah11: 0x05B7, - patah1d: 0x05B7, - patah2a: 0x05B7, - patahhebrew: 0x05B7, - patahnarrowhebrew: 0x05B7, - patahquarterhebrew: 0x05B7, - patahwidehebrew: 0x05B7, - pazerhebrew: 0x05A1, - pbopomofo: 0x3106, - pcircle: 0x24DF, - pdotaccent: 0x1E57, - pe: 0x05E4, - pecyrillic: 0x043F, - pedagesh: 0xFB44, - pedageshhebrew: 0xFB44, - peezisquare: 0x333B, - pefinaldageshhebrew: 0xFB43, - peharabic: 0x067E, - peharmenian: 0x057A, - pehebrew: 0x05E4, - pehfinalarabic: 0xFB57, - pehinitialarabic: 0xFB58, - pehiragana: 0x307A, - pehmedialarabic: 0xFB59, - pekatakana: 0x30DA, - pemiddlehookcyrillic: 0x04A7, - perafehebrew: 0xFB4E, - percent: 0x0025, - percentarabic: 0x066A, - percentmonospace: 0xFF05, - percentsmall: 0xFE6A, - period: 0x002E, - periodarmenian: 0x0589, - periodcentered: 0x00B7, - periodhalfwidth: 0xFF61, - periodinferior: 0xF6E7, - periodmonospace: 0xFF0E, - periodsmall: 0xFE52, - periodsuperior: 0xF6E8, - perispomenigreekcmb: 0x0342, - perpendicular: 0x22A5, - perthousand: 0x2030, - peseta: 0x20A7, - pfsquare: 0x338A, - phabengali: 0x09AB, - phadeva: 0x092B, - phagujarati: 0x0AAB, - phagurmukhi: 0x0A2B, - phi: 0x03C6, - phi1: 0x03D5, - phieuphacirclekorean: 0x327A, - phieuphaparenkorean: 0x321A, - phieuphcirclekorean: 0x326C, - phieuphkorean: 0x314D, - phieuphparenkorean: 0x320C, - philatin: 0x0278, - phinthuthai: 0x0E3A, - phisymbolgreek: 0x03D5, - phook: 0x01A5, - phophanthai: 0x0E1E, - phophungthai: 0x0E1C, - phosamphaothai: 0x0E20, - pi: 0x03C0, - pieupacirclekorean: 0x3273, - pieupaparenkorean: 0x3213, - pieupcieuckorean: 0x3176, - pieupcirclekorean: 0x3265, - pieupkiyeokkorean: 0x3172, - pieupkorean: 0x3142, - pieupparenkorean: 0x3205, - pieupsioskiyeokkorean: 0x3174, - pieupsioskorean: 0x3144, - pieupsiostikeutkorean: 0x3175, - pieupthieuthkorean: 0x3177, - pieuptikeutkorean: 0x3173, - pihiragana: 0x3074, - pikatakana: 0x30D4, - pisymbolgreek: 0x03D6, - piwrarmenian: 0x0583, - plus: 0x002B, - plusbelowcmb: 0x031F, - pluscircle: 0x2295, - plusminus: 0x00B1, - plusmod: 0x02D6, - plusmonospace: 0xFF0B, - plussmall: 0xFE62, - plussuperior: 0x207A, - pmonospace: 0xFF50, - pmsquare: 0x33D8, - pohiragana: 0x307D, - pointingindexdownwhite: 0x261F, - pointingindexleftwhite: 0x261C, - pointingindexrightwhite: 0x261E, - pointingindexupwhite: 0x261D, - pokatakana: 0x30DD, - poplathai: 0x0E1B, - postalmark: 0x3012, - postalmarkface: 0x3020, - pparen: 0x24AB, - precedes: 0x227A, - prescription: 0x211E, - primemod: 0x02B9, - primereversed: 0x2035, - product: 0x220F, - projective: 0x2305, - prolongedkana: 0x30FC, - propellor: 0x2318, - propersubset: 0x2282, - propersuperset: 0x2283, - proportion: 0x2237, - proportional: 0x221D, - psi: 0x03C8, - psicyrillic: 0x0471, - psilipneumatacyrilliccmb: 0x0486, - pssquare: 0x33B0, - puhiragana: 0x3077, - pukatakana: 0x30D7, - pvsquare: 0x33B4, - pwsquare: 0x33BA, - q: 0x0071, - qadeva: 0x0958, - qadmahebrew: 0x05A8, - qafarabic: 0x0642, - qaffinalarabic: 0xFED6, - qafinitialarabic: 0xFED7, - qafmedialarabic: 0xFED8, - qamats: 0x05B8, - qamats10: 0x05B8, - qamats1a: 0x05B8, - qamats1c: 0x05B8, - qamats27: 0x05B8, - qamats29: 0x05B8, - qamats33: 0x05B8, - qamatsde: 0x05B8, - qamatshebrew: 0x05B8, - qamatsnarrowhebrew: 0x05B8, - qamatsqatanhebrew: 0x05B8, - qamatsqatannarrowhebrew: 0x05B8, - qamatsqatanquarterhebrew: 0x05B8, - qamatsqatanwidehebrew: 0x05B8, - qamatsquarterhebrew: 0x05B8, - qamatswidehebrew: 0x05B8, - qarneyparahebrew: 0x059F, - qbopomofo: 0x3111, - qcircle: 0x24E0, - qhook: 0x02A0, - qmonospace: 0xFF51, - qof: 0x05E7, - qofdagesh: 0xFB47, - qofdageshhebrew: 0xFB47, - qofhebrew: 0x05E7, - qparen: 0x24AC, - quarternote: 0x2669, - qubuts: 0x05BB, - qubuts18: 0x05BB, - qubuts25: 0x05BB, - qubuts31: 0x05BB, - qubutshebrew: 0x05BB, - qubutsnarrowhebrew: 0x05BB, - qubutsquarterhebrew: 0x05BB, - qubutswidehebrew: 0x05BB, - question: 0x003F, - questionarabic: 0x061F, - questionarmenian: 0x055E, - questiondown: 0x00BF, - questiondownsmall: 0xF7BF, - questiongreek: 0x037E, - questionmonospace: 0xFF1F, - questionsmall: 0xF73F, - quotedbl: 0x0022, - quotedblbase: 0x201E, - quotedblleft: 0x201C, - quotedblmonospace: 0xFF02, - quotedblprime: 0x301E, - quotedblprimereversed: 0x301D, - quotedblright: 0x201D, - quoteleft: 0x2018, - quoteleftreversed: 0x201B, - quotereversed: 0x201B, - quoteright: 0x2019, - quoterightn: 0x0149, - quotesinglbase: 0x201A, - quotesingle: 0x0027, - quotesinglemonospace: 0xFF07, - r: 0x0072, - raarmenian: 0x057C, - rabengali: 0x09B0, - racute: 0x0155, - radeva: 0x0930, - radical: 0x221A, - radicalex: 0xF8E5, - radoverssquare: 0x33AE, - radoverssquaredsquare: 0x33AF, - radsquare: 0x33AD, - rafe: 0x05BF, - rafehebrew: 0x05BF, - ragujarati: 0x0AB0, - ragurmukhi: 0x0A30, - rahiragana: 0x3089, - rakatakana: 0x30E9, - rakatakanahalfwidth: 0xFF97, - ralowerdiagonalbengali: 0x09F1, - ramiddlediagonalbengali: 0x09F0, - ramshorn: 0x0264, - ratio: 0x2236, - rbopomofo: 0x3116, - rcaron: 0x0159, - rcedilla: 0x0157, - rcircle: 0x24E1, - rcommaaccent: 0x0157, - rdblgrave: 0x0211, - rdotaccent: 0x1E59, - rdotbelow: 0x1E5B, - rdotbelowmacron: 0x1E5D, - referencemark: 0x203B, - reflexsubset: 0x2286, - reflexsuperset: 0x2287, - registered: 0x00AE, - registersans: 0xF8E8, - registerserif: 0xF6DA, - reharabic: 0x0631, - reharmenian: 0x0580, - rehfinalarabic: 0xFEAE, - rehiragana: 0x308C, - rekatakana: 0x30EC, - rekatakanahalfwidth: 0xFF9A, - resh: 0x05E8, - reshdageshhebrew: 0xFB48, - reshhebrew: 0x05E8, - reversedtilde: 0x223D, - reviahebrew: 0x0597, - reviamugrashhebrew: 0x0597, - revlogicalnot: 0x2310, - rfishhook: 0x027E, - rfishhookreversed: 0x027F, - rhabengali: 0x09DD, - rhadeva: 0x095D, - rho: 0x03C1, - rhook: 0x027D, - rhookturned: 0x027B, - rhookturnedsuperior: 0x02B5, - rhosymbolgreek: 0x03F1, - rhotichookmod: 0x02DE, - rieulacirclekorean: 0x3271, - rieulaparenkorean: 0x3211, - rieulcirclekorean: 0x3263, - rieulhieuhkorean: 0x3140, - rieulkiyeokkorean: 0x313A, - rieulkiyeoksioskorean: 0x3169, - rieulkorean: 0x3139, - rieulmieumkorean: 0x313B, - rieulpansioskorean: 0x316C, - rieulparenkorean: 0x3203, - rieulphieuphkorean: 0x313F, - rieulpieupkorean: 0x313C, - rieulpieupsioskorean: 0x316B, - rieulsioskorean: 0x313D, - rieulthieuthkorean: 0x313E, - rieultikeutkorean: 0x316A, - rieulyeorinhieuhkorean: 0x316D, - rightangle: 0x221F, - righttackbelowcmb: 0x0319, - righttriangle: 0x22BF, - rihiragana: 0x308A, - rikatakana: 0x30EA, - rikatakanahalfwidth: 0xFF98, - ring: 0x02DA, - ringbelowcmb: 0x0325, - ringcmb: 0x030A, - ringhalfleft: 0x02BF, - ringhalfleftarmenian: 0x0559, - ringhalfleftbelowcmb: 0x031C, - ringhalfleftcentered: 0x02D3, - ringhalfright: 0x02BE, - ringhalfrightbelowcmb: 0x0339, - ringhalfrightcentered: 0x02D2, - rinvertedbreve: 0x0213, - rittorusquare: 0x3351, - rlinebelow: 0x1E5F, - rlongleg: 0x027C, - rlonglegturned: 0x027A, - rmonospace: 0xFF52, - rohiragana: 0x308D, - rokatakana: 0x30ED, - rokatakanahalfwidth: 0xFF9B, - roruathai: 0x0E23, - rparen: 0x24AD, - rrabengali: 0x09DC, - rradeva: 0x0931, - rragurmukhi: 0x0A5C, - rreharabic: 0x0691, - rrehfinalarabic: 0xFB8D, - rrvocalicbengali: 0x09E0, - rrvocalicdeva: 0x0960, - rrvocalicgujarati: 0x0AE0, - rrvocalicvowelsignbengali: 0x09C4, - rrvocalicvowelsigndeva: 0x0944, - rrvocalicvowelsigngujarati: 0x0AC4, - rsuperior: 0xF6F1, - rtblock: 0x2590, - rturned: 0x0279, - rturnedsuperior: 0x02B4, - ruhiragana: 0x308B, - rukatakana: 0x30EB, - rukatakanahalfwidth: 0xFF99, - rupeemarkbengali: 0x09F2, - rupeesignbengali: 0x09F3, - rupiah: 0xF6DD, - ruthai: 0x0E24, - rvocalicbengali: 0x098B, - rvocalicdeva: 0x090B, - rvocalicgujarati: 0x0A8B, - rvocalicvowelsignbengali: 0x09C3, - rvocalicvowelsigndeva: 0x0943, - rvocalicvowelsigngujarati: 0x0AC3, - s: 0x0073, - sabengali: 0x09B8, - sacute: 0x015B, - sacutedotaccent: 0x1E65, - sadarabic: 0x0635, - sadeva: 0x0938, - sadfinalarabic: 0xFEBA, - sadinitialarabic: 0xFEBB, - sadmedialarabic: 0xFEBC, - sagujarati: 0x0AB8, - sagurmukhi: 0x0A38, - sahiragana: 0x3055, - sakatakana: 0x30B5, - sakatakanahalfwidth: 0xFF7B, - sallallahoualayhewasallamarabic: 0xFDFA, - samekh: 0x05E1, - samekhdagesh: 0xFB41, - samekhdageshhebrew: 0xFB41, - samekhhebrew: 0x05E1, - saraaathai: 0x0E32, - saraaethai: 0x0E41, - saraaimaimalaithai: 0x0E44, - saraaimaimuanthai: 0x0E43, - saraamthai: 0x0E33, - saraathai: 0x0E30, - saraethai: 0x0E40, - saraiileftthai: 0xF886, - saraiithai: 0x0E35, - saraileftthai: 0xF885, - saraithai: 0x0E34, - saraothai: 0x0E42, - saraueeleftthai: 0xF888, - saraueethai: 0x0E37, - saraueleftthai: 0xF887, - sarauethai: 0x0E36, - sarauthai: 0x0E38, - sarauuthai: 0x0E39, - sbopomofo: 0x3119, - scaron: 0x0161, - scarondotaccent: 0x1E67, - scedilla: 0x015F, - schwa: 0x0259, - schwacyrillic: 0x04D9, - schwadieresiscyrillic: 0x04DB, - schwahook: 0x025A, - scircle: 0x24E2, - scircumflex: 0x015D, - scommaaccent: 0x0219, - sdotaccent: 0x1E61, - sdotbelow: 0x1E63, - sdotbelowdotaccent: 0x1E69, - seagullbelowcmb: 0x033C, - second: 0x2033, - secondtonechinese: 0x02CA, - section: 0x00A7, - seenarabic: 0x0633, - seenfinalarabic: 0xFEB2, - seeninitialarabic: 0xFEB3, - seenmedialarabic: 0xFEB4, - segol: 0x05B6, - segol13: 0x05B6, - segol1f: 0x05B6, - segol2c: 0x05B6, - segolhebrew: 0x05B6, - segolnarrowhebrew: 0x05B6, - segolquarterhebrew: 0x05B6, - segoltahebrew: 0x0592, - segolwidehebrew: 0x05B6, - seharmenian: 0x057D, - sehiragana: 0x305B, - sekatakana: 0x30BB, - sekatakanahalfwidth: 0xFF7E, - semicolon: 0x003B, - semicolonarabic: 0x061B, - semicolonmonospace: 0xFF1B, - semicolonsmall: 0xFE54, - semivoicedmarkkana: 0x309C, - semivoicedmarkkanahalfwidth: 0xFF9F, - sentisquare: 0x3322, - sentosquare: 0x3323, - seven: 0x0037, - sevenarabic: 0x0667, - sevenbengali: 0x09ED, - sevencircle: 0x2466, - sevencircleinversesansserif: 0x2790, - sevendeva: 0x096D, - seveneighths: 0x215E, - sevengujarati: 0x0AED, - sevengurmukhi: 0x0A6D, - sevenhackarabic: 0x0667, - sevenhangzhou: 0x3027, - sevenideographicparen: 0x3226, - seveninferior: 0x2087, - sevenmonospace: 0xFF17, - sevenoldstyle: 0xF737, - sevenparen: 0x247A, - sevenperiod: 0x248E, - sevenpersian: 0x06F7, - sevenroman: 0x2176, - sevensuperior: 0x2077, - seventeencircle: 0x2470, - seventeenparen: 0x2484, - seventeenperiod: 0x2498, - seventhai: 0x0E57, - sfthyphen: 0x00AD, - shaarmenian: 0x0577, - shabengali: 0x09B6, - shacyrillic: 0x0448, - shaddaarabic: 0x0651, - shaddadammaarabic: 0xFC61, - shaddadammatanarabic: 0xFC5E, - shaddafathaarabic: 0xFC60, - shaddakasraarabic: 0xFC62, - shaddakasratanarabic: 0xFC5F, - shade: 0x2592, - shadedark: 0x2593, - shadelight: 0x2591, - shademedium: 0x2592, - shadeva: 0x0936, - shagujarati: 0x0AB6, - shagurmukhi: 0x0A36, - shalshelethebrew: 0x0593, - shbopomofo: 0x3115, - shchacyrillic: 0x0449, - sheenarabic: 0x0634, - sheenfinalarabic: 0xFEB6, - sheeninitialarabic: 0xFEB7, - sheenmedialarabic: 0xFEB8, - sheicoptic: 0x03E3, - sheqel: 0x20AA, - sheqelhebrew: 0x20AA, - sheva: 0x05B0, - sheva115: 0x05B0, - sheva15: 0x05B0, - sheva22: 0x05B0, - sheva2e: 0x05B0, - shevahebrew: 0x05B0, - shevanarrowhebrew: 0x05B0, - shevaquarterhebrew: 0x05B0, - shevawidehebrew: 0x05B0, - shhacyrillic: 0x04BB, - shimacoptic: 0x03ED, - shin: 0x05E9, - shindagesh: 0xFB49, - shindageshhebrew: 0xFB49, - shindageshshindot: 0xFB2C, - shindageshshindothebrew: 0xFB2C, - shindageshsindot: 0xFB2D, - shindageshsindothebrew: 0xFB2D, - shindothebrew: 0x05C1, - shinhebrew: 0x05E9, - shinshindot: 0xFB2A, - shinshindothebrew: 0xFB2A, - shinsindot: 0xFB2B, - shinsindothebrew: 0xFB2B, - shook: 0x0282, - sigma: 0x03C3, - sigma1: 0x03C2, - sigmafinal: 0x03C2, - sigmalunatesymbolgreek: 0x03F2, - sihiragana: 0x3057, - sikatakana: 0x30B7, - sikatakanahalfwidth: 0xFF7C, - siluqhebrew: 0x05BD, - siluqlefthebrew: 0x05BD, - similar: 0x223C, - sindothebrew: 0x05C2, - siosacirclekorean: 0x3274, - siosaparenkorean: 0x3214, - sioscieuckorean: 0x317E, - sioscirclekorean: 0x3266, - sioskiyeokkorean: 0x317A, - sioskorean: 0x3145, - siosnieunkorean: 0x317B, - siosparenkorean: 0x3206, - siospieupkorean: 0x317D, - siostikeutkorean: 0x317C, - six: 0x0036, - sixarabic: 0x0666, - sixbengali: 0x09EC, - sixcircle: 0x2465, - sixcircleinversesansserif: 0x278F, - sixdeva: 0x096C, - sixgujarati: 0x0AEC, - sixgurmukhi: 0x0A6C, - sixhackarabic: 0x0666, - sixhangzhou: 0x3026, - sixideographicparen: 0x3225, - sixinferior: 0x2086, - sixmonospace: 0xFF16, - sixoldstyle: 0xF736, - sixparen: 0x2479, - sixperiod: 0x248D, - sixpersian: 0x06F6, - sixroman: 0x2175, - sixsuperior: 0x2076, - sixteencircle: 0x246F, - sixteencurrencydenominatorbengali: 0x09F9, - sixteenparen: 0x2483, - sixteenperiod: 0x2497, - sixthai: 0x0E56, - slash: 0x002F, - slashmonospace: 0xFF0F, - slong: 0x017F, - slongdotaccent: 0x1E9B, - smileface: 0x263A, - smonospace: 0xFF53, - sofpasuqhebrew: 0x05C3, - softhyphen: 0x00AD, - softsigncyrillic: 0x044C, - sohiragana: 0x305D, - sokatakana: 0x30BD, - sokatakanahalfwidth: 0xFF7F, - soliduslongoverlaycmb: 0x0338, - solidusshortoverlaycmb: 0x0337, - sorusithai: 0x0E29, - sosalathai: 0x0E28, - sosothai: 0x0E0B, - sosuathai: 0x0E2A, - space: 0x0020, - spacehackarabic: 0x0020, - spade: 0x2660, - spadesuitblack: 0x2660, - spadesuitwhite: 0x2664, - sparen: 0x24AE, - squarebelowcmb: 0x033B, - squarecc: 0x33C4, - squarecm: 0x339D, - squarediagonalcrosshatchfill: 0x25A9, - squarehorizontalfill: 0x25A4, - squarekg: 0x338F, - squarekm: 0x339E, - squarekmcapital: 0x33CE, - squareln: 0x33D1, - squarelog: 0x33D2, - squaremg: 0x338E, - squaremil: 0x33D5, - squaremm: 0x339C, - squaremsquared: 0x33A1, - squareorthogonalcrosshatchfill: 0x25A6, - squareupperlefttolowerrightfill: 0x25A7, - squareupperrighttolowerleftfill: 0x25A8, - squareverticalfill: 0x25A5, - squarewhitewithsmallblack: 0x25A3, - srsquare: 0x33DB, - ssabengali: 0x09B7, - ssadeva: 0x0937, - ssagujarati: 0x0AB7, - ssangcieuckorean: 0x3149, - ssanghieuhkorean: 0x3185, - ssangieungkorean: 0x3180, - ssangkiyeokkorean: 0x3132, - ssangnieunkorean: 0x3165, - ssangpieupkorean: 0x3143, - ssangsioskorean: 0x3146, - ssangtikeutkorean: 0x3138, - ssuperior: 0xF6F2, - sterling: 0x00A3, - sterlingmonospace: 0xFFE1, - strokelongoverlaycmb: 0x0336, - strokeshortoverlaycmb: 0x0335, - subset: 0x2282, - subsetnotequal: 0x228A, - subsetorequal: 0x2286, - succeeds: 0x227B, - suchthat: 0x220B, - suhiragana: 0x3059, - sukatakana: 0x30B9, - sukatakanahalfwidth: 0xFF7D, - sukunarabic: 0x0652, - summation: 0x2211, - sun: 0x263C, - superset: 0x2283, - supersetnotequal: 0x228B, - supersetorequal: 0x2287, - svsquare: 0x33DC, - syouwaerasquare: 0x337C, - t: 0x0074, - tabengali: 0x09A4, - tackdown: 0x22A4, - tackleft: 0x22A3, - tadeva: 0x0924, - tagujarati: 0x0AA4, - tagurmukhi: 0x0A24, - taharabic: 0x0637, - tahfinalarabic: 0xFEC2, - tahinitialarabic: 0xFEC3, - tahiragana: 0x305F, - tahmedialarabic: 0xFEC4, - taisyouerasquare: 0x337D, - takatakana: 0x30BF, - takatakanahalfwidth: 0xFF80, - tatweelarabic: 0x0640, - tau: 0x03C4, - tav: 0x05EA, - tavdages: 0xFB4A, - tavdagesh: 0xFB4A, - tavdageshhebrew: 0xFB4A, - tavhebrew: 0x05EA, - tbar: 0x0167, - tbopomofo: 0x310A, - tcaron: 0x0165, - tccurl: 0x02A8, - tcedilla: 0x0163, - tcheharabic: 0x0686, - tchehfinalarabic: 0xFB7B, - tchehinitialarabic: 0xFB7C, - tchehmedialarabic: 0xFB7D, - tcircle: 0x24E3, - tcircumflexbelow: 0x1E71, - tcommaaccent: 0x0163, - tdieresis: 0x1E97, - tdotaccent: 0x1E6B, - tdotbelow: 0x1E6D, - tecyrillic: 0x0442, - tedescendercyrillic: 0x04AD, - teharabic: 0x062A, - tehfinalarabic: 0xFE96, - tehhahinitialarabic: 0xFCA2, - tehhahisolatedarabic: 0xFC0C, - tehinitialarabic: 0xFE97, - tehiragana: 0x3066, - tehjeeminitialarabic: 0xFCA1, - tehjeemisolatedarabic: 0xFC0B, - tehmarbutaarabic: 0x0629, - tehmarbutafinalarabic: 0xFE94, - tehmedialarabic: 0xFE98, - tehmeeminitialarabic: 0xFCA4, - tehmeemisolatedarabic: 0xFC0E, - tehnoonfinalarabic: 0xFC73, - tekatakana: 0x30C6, - tekatakanahalfwidth: 0xFF83, - telephone: 0x2121, - telephoneblack: 0x260E, - telishagedolahebrew: 0x05A0, - telishaqetanahebrew: 0x05A9, - tencircle: 0x2469, - tenideographicparen: 0x3229, - tenparen: 0x247D, - tenperiod: 0x2491, - tenroman: 0x2179, - tesh: 0x02A7, - tet: 0x05D8, - tetdagesh: 0xFB38, - tetdageshhebrew: 0xFB38, - tethebrew: 0x05D8, - tetsecyrillic: 0x04B5, - tevirhebrew: 0x059B, - tevirlefthebrew: 0x059B, - thabengali: 0x09A5, - thadeva: 0x0925, - thagujarati: 0x0AA5, - thagurmukhi: 0x0A25, - thalarabic: 0x0630, - thalfinalarabic: 0xFEAC, - thanthakhatlowleftthai: 0xF898, - thanthakhatlowrightthai: 0xF897, - thanthakhatthai: 0x0E4C, - thanthakhatupperleftthai: 0xF896, - theharabic: 0x062B, - thehfinalarabic: 0xFE9A, - thehinitialarabic: 0xFE9B, - thehmedialarabic: 0xFE9C, - thereexists: 0x2203, - therefore: 0x2234, - theta: 0x03B8, - theta1: 0x03D1, - thetasymbolgreek: 0x03D1, - thieuthacirclekorean: 0x3279, - thieuthaparenkorean: 0x3219, - thieuthcirclekorean: 0x326B, - thieuthkorean: 0x314C, - thieuthparenkorean: 0x320B, - thirteencircle: 0x246C, - thirteenparen: 0x2480, - thirteenperiod: 0x2494, - thonangmonthothai: 0x0E11, - thook: 0x01AD, - thophuthaothai: 0x0E12, - thorn: 0x00FE, - thothahanthai: 0x0E17, - thothanthai: 0x0E10, - thothongthai: 0x0E18, - thothungthai: 0x0E16, - thousandcyrillic: 0x0482, - thousandsseparatorarabic: 0x066C, - thousandsseparatorpersian: 0x066C, - three: 0x0033, - threearabic: 0x0663, - threebengali: 0x09E9, - threecircle: 0x2462, - threecircleinversesansserif: 0x278C, - threedeva: 0x0969, - threeeighths: 0x215C, - threegujarati: 0x0AE9, - threegurmukhi: 0x0A69, - threehackarabic: 0x0663, - threehangzhou: 0x3023, - threeideographicparen: 0x3222, - threeinferior: 0x2083, - threemonospace: 0xFF13, - threenumeratorbengali: 0x09F6, - threeoldstyle: 0xF733, - threeparen: 0x2476, - threeperiod: 0x248A, - threepersian: 0x06F3, - threequarters: 0x00BE, - threequartersemdash: 0xF6DE, - threeroman: 0x2172, - threesuperior: 0x00B3, - threethai: 0x0E53, - thzsquare: 0x3394, - tihiragana: 0x3061, - tikatakana: 0x30C1, - tikatakanahalfwidth: 0xFF81, - tikeutacirclekorean: 0x3270, - tikeutaparenkorean: 0x3210, - tikeutcirclekorean: 0x3262, - tikeutkorean: 0x3137, - tikeutparenkorean: 0x3202, - tilde: 0x02DC, - tildebelowcmb: 0x0330, - tildecmb: 0x0303, - tildecomb: 0x0303, - tildedoublecmb: 0x0360, - tildeoperator: 0x223C, - tildeoverlaycmb: 0x0334, - tildeverticalcmb: 0x033E, - timescircle: 0x2297, - tipehahebrew: 0x0596, - tipehalefthebrew: 0x0596, - tippigurmukhi: 0x0A70, - titlocyrilliccmb: 0x0483, - tiwnarmenian: 0x057F, - tlinebelow: 0x1E6F, - tmonospace: 0xFF54, - toarmenian: 0x0569, - tohiragana: 0x3068, - tokatakana: 0x30C8, - tokatakanahalfwidth: 0xFF84, - tonebarextrahighmod: 0x02E5, - tonebarextralowmod: 0x02E9, - tonebarhighmod: 0x02E6, - tonebarlowmod: 0x02E8, - tonebarmidmod: 0x02E7, - tonefive: 0x01BD, - tonesix: 0x0185, - tonetwo: 0x01A8, - tonos: 0x0384, - tonsquare: 0x3327, - topatakthai: 0x0E0F, - tortoiseshellbracketleft: 0x3014, - tortoiseshellbracketleftsmall: 0xFE5D, - tortoiseshellbracketleftvertical: 0xFE39, - tortoiseshellbracketright: 0x3015, - tortoiseshellbracketrightsmall: 0xFE5E, - tortoiseshellbracketrightvertical: 0xFE3A, - totaothai: 0x0E15, - tpalatalhook: 0x01AB, - tparen: 0x24AF, - trademark: 0x2122, - trademarksans: 0xF8EA, - trademarkserif: 0xF6DB, - tretroflexhook: 0x0288, - triagdn: 0x25BC, - triaglf: 0x25C4, - triagrt: 0x25BA, - triagup: 0x25B2, - ts: 0x02A6, - tsadi: 0x05E6, - tsadidagesh: 0xFB46, - tsadidageshhebrew: 0xFB46, - tsadihebrew: 0x05E6, - tsecyrillic: 0x0446, - tsere: 0x05B5, - tsere12: 0x05B5, - tsere1e: 0x05B5, - tsere2b: 0x05B5, - tserehebrew: 0x05B5, - tserenarrowhebrew: 0x05B5, - tserequarterhebrew: 0x05B5, - tserewidehebrew: 0x05B5, - tshecyrillic: 0x045B, - tsuperior: 0xF6F3, - ttabengali: 0x099F, - ttadeva: 0x091F, - ttagujarati: 0x0A9F, - ttagurmukhi: 0x0A1F, - tteharabic: 0x0679, - ttehfinalarabic: 0xFB67, - ttehinitialarabic: 0xFB68, - ttehmedialarabic: 0xFB69, - tthabengali: 0x09A0, - tthadeva: 0x0920, - tthagujarati: 0x0AA0, - tthagurmukhi: 0x0A20, - tturned: 0x0287, - tuhiragana: 0x3064, - tukatakana: 0x30C4, - tukatakanahalfwidth: 0xFF82, - tusmallhiragana: 0x3063, - tusmallkatakana: 0x30C3, - tusmallkatakanahalfwidth: 0xFF6F, - twelvecircle: 0x246B, - twelveparen: 0x247F, - twelveperiod: 0x2493, - twelveroman: 0x217B, - twentycircle: 0x2473, - twentyhangzhou: 0x5344, - twentyparen: 0x2487, - twentyperiod: 0x249B, - two: 0x0032, - twoarabic: 0x0662, - twobengali: 0x09E8, - twocircle: 0x2461, - twocircleinversesansserif: 0x278B, - twodeva: 0x0968, - twodotenleader: 0x2025, - twodotleader: 0x2025, - twodotleadervertical: 0xFE30, - twogujarati: 0x0AE8, - twogurmukhi: 0x0A68, - twohackarabic: 0x0662, - twohangzhou: 0x3022, - twoideographicparen: 0x3221, - twoinferior: 0x2082, - twomonospace: 0xFF12, - twonumeratorbengali: 0x09F5, - twooldstyle: 0xF732, - twoparen: 0x2475, - twoperiod: 0x2489, - twopersian: 0x06F2, - tworoman: 0x2171, - twostroke: 0x01BB, - twosuperior: 0x00B2, - twothai: 0x0E52, - twothirds: 0x2154, - u: 0x0075, - uacute: 0x00FA, - ubar: 0x0289, - ubengali: 0x0989, - ubopomofo: 0x3128, - ubreve: 0x016D, - ucaron: 0x01D4, - ucircle: 0x24E4, - ucircumflex: 0x00FB, - ucircumflexbelow: 0x1E77, - ucyrillic: 0x0443, - udattadeva: 0x0951, - udblacute: 0x0171, - udblgrave: 0x0215, - udeva: 0x0909, - udieresis: 0x00FC, - udieresisacute: 0x01D8, - udieresisbelow: 0x1E73, - udieresiscaron: 0x01DA, - udieresiscyrillic: 0x04F1, - udieresisgrave: 0x01DC, - udieresismacron: 0x01D6, - udotbelow: 0x1EE5, - ugrave: 0x00F9, - ugujarati: 0x0A89, - ugurmukhi: 0x0A09, - uhiragana: 0x3046, - uhookabove: 0x1EE7, - uhorn: 0x01B0, - uhornacute: 0x1EE9, - uhorndotbelow: 0x1EF1, - uhorngrave: 0x1EEB, - uhornhookabove: 0x1EED, - uhorntilde: 0x1EEF, - uhungarumlaut: 0x0171, - uhungarumlautcyrillic: 0x04F3, - uinvertedbreve: 0x0217, - ukatakana: 0x30A6, - ukatakanahalfwidth: 0xFF73, - ukcyrillic: 0x0479, - ukorean: 0x315C, - umacron: 0x016B, - umacroncyrillic: 0x04EF, - umacrondieresis: 0x1E7B, - umatragurmukhi: 0x0A41, - umonospace: 0xFF55, - underscore: 0x005F, - underscoredbl: 0x2017, - underscoremonospace: 0xFF3F, - underscorevertical: 0xFE33, - underscorewavy: 0xFE4F, - union: 0x222A, - universal: 0x2200, - uogonek: 0x0173, - uparen: 0x24B0, - upblock: 0x2580, - upperdothebrew: 0x05C4, - upsilon: 0x03C5, - upsilondieresis: 0x03CB, - upsilondieresistonos: 0x03B0, - upsilonlatin: 0x028A, - upsilontonos: 0x03CD, - uptackbelowcmb: 0x031D, - uptackmod: 0x02D4, - uragurmukhi: 0x0A73, - uring: 0x016F, - ushortcyrillic: 0x045E, - usmallhiragana: 0x3045, - usmallkatakana: 0x30A5, - usmallkatakanahalfwidth: 0xFF69, - ustraightcyrillic: 0x04AF, - ustraightstrokecyrillic: 0x04B1, - utilde: 0x0169, - utildeacute: 0x1E79, - utildebelow: 0x1E75, - uubengali: 0x098A, - uudeva: 0x090A, - uugujarati: 0x0A8A, - uugurmukhi: 0x0A0A, - uumatragurmukhi: 0x0A42, - uuvowelsignbengali: 0x09C2, - uuvowelsigndeva: 0x0942, - uuvowelsigngujarati: 0x0AC2, - uvowelsignbengali: 0x09C1, - uvowelsigndeva: 0x0941, - uvowelsigngujarati: 0x0AC1, - v: 0x0076, - vadeva: 0x0935, - vagujarati: 0x0AB5, - vagurmukhi: 0x0A35, - vakatakana: 0x30F7, - vav: 0x05D5, - vavdagesh: 0xFB35, - vavdagesh65: 0xFB35, - vavdageshhebrew: 0xFB35, - vavhebrew: 0x05D5, - vavholam: 0xFB4B, - vavholamhebrew: 0xFB4B, - vavvavhebrew: 0x05F0, - vavyodhebrew: 0x05F1, - vcircle: 0x24E5, - vdotbelow: 0x1E7F, - vecyrillic: 0x0432, - veharabic: 0x06A4, - vehfinalarabic: 0xFB6B, - vehinitialarabic: 0xFB6C, - vehmedialarabic: 0xFB6D, - vekatakana: 0x30F9, - venus: 0x2640, - verticalbar: 0x007C, - verticallineabovecmb: 0x030D, - verticallinebelowcmb: 0x0329, - verticallinelowmod: 0x02CC, - verticallinemod: 0x02C8, - vewarmenian: 0x057E, - vhook: 0x028B, - vikatakana: 0x30F8, - viramabengali: 0x09CD, - viramadeva: 0x094D, - viramagujarati: 0x0ACD, - visargabengali: 0x0983, - visargadeva: 0x0903, - visargagujarati: 0x0A83, - vmonospace: 0xFF56, - voarmenian: 0x0578, - voicediterationhiragana: 0x309E, - voicediterationkatakana: 0x30FE, - voicedmarkkana: 0x309B, - voicedmarkkanahalfwidth: 0xFF9E, - vokatakana: 0x30FA, - vparen: 0x24B1, - vtilde: 0x1E7D, - vturned: 0x028C, - vuhiragana: 0x3094, - vukatakana: 0x30F4, - w: 0x0077, - wacute: 0x1E83, - waekorean: 0x3159, - wahiragana: 0x308F, - wakatakana: 0x30EF, - wakatakanahalfwidth: 0xFF9C, - wakorean: 0x3158, - wasmallhiragana: 0x308E, - wasmallkatakana: 0x30EE, - wattosquare: 0x3357, - wavedash: 0x301C, - wavyunderscorevertical: 0xFE34, - wawarabic: 0x0648, - wawfinalarabic: 0xFEEE, - wawhamzaabovearabic: 0x0624, - wawhamzaabovefinalarabic: 0xFE86, - wbsquare: 0x33DD, - wcircle: 0x24E6, - wcircumflex: 0x0175, - wdieresis: 0x1E85, - wdotaccent: 0x1E87, - wdotbelow: 0x1E89, - wehiragana: 0x3091, - weierstrass: 0x2118, - wekatakana: 0x30F1, - wekorean: 0x315E, - weokorean: 0x315D, - wgrave: 0x1E81, - whitebullet: 0x25E6, - whitecircle: 0x25CB, - whitecircleinverse: 0x25D9, - whitecornerbracketleft: 0x300E, - whitecornerbracketleftvertical: 0xFE43, - whitecornerbracketright: 0x300F, - whitecornerbracketrightvertical: 0xFE44, - whitediamond: 0x25C7, - whitediamondcontainingblacksmalldiamond: 0x25C8, - whitedownpointingsmalltriangle: 0x25BF, - whitedownpointingtriangle: 0x25BD, - whiteleftpointingsmalltriangle: 0x25C3, - whiteleftpointingtriangle: 0x25C1, - whitelenticularbracketleft: 0x3016, - whitelenticularbracketright: 0x3017, - whiterightpointingsmalltriangle: 0x25B9, - whiterightpointingtriangle: 0x25B7, - whitesmallsquare: 0x25AB, - whitesmilingface: 0x263A, - whitesquare: 0x25A1, - whitestar: 0x2606, - whitetelephone: 0x260F, - whitetortoiseshellbracketleft: 0x3018, - whitetortoiseshellbracketright: 0x3019, - whiteuppointingsmalltriangle: 0x25B5, - whiteuppointingtriangle: 0x25B3, - wihiragana: 0x3090, - wikatakana: 0x30F0, - wikorean: 0x315F, - wmonospace: 0xFF57, - wohiragana: 0x3092, - wokatakana: 0x30F2, - wokatakanahalfwidth: 0xFF66, - won: 0x20A9, - wonmonospace: 0xFFE6, - wowaenthai: 0x0E27, - wparen: 0x24B2, - wring: 0x1E98, - wsuperior: 0x02B7, - wturned: 0x028D, - wynn: 0x01BF, - x: 0x0078, - xabovecmb: 0x033D, - xbopomofo: 0x3112, - xcircle: 0x24E7, - xdieresis: 0x1E8D, - xdotaccent: 0x1E8B, - xeharmenian: 0x056D, - xi: 0x03BE, - xmonospace: 0xFF58, - xparen: 0x24B3, - xsuperior: 0x02E3, - y: 0x0079, - yaadosquare: 0x334E, - yabengali: 0x09AF, - yacute: 0x00FD, - yadeva: 0x092F, - yaekorean: 0x3152, - yagujarati: 0x0AAF, - yagurmukhi: 0x0A2F, - yahiragana: 0x3084, - yakatakana: 0x30E4, - yakatakanahalfwidth: 0xFF94, - yakorean: 0x3151, - yamakkanthai: 0x0E4E, - yasmallhiragana: 0x3083, - yasmallkatakana: 0x30E3, - yasmallkatakanahalfwidth: 0xFF6C, - yatcyrillic: 0x0463, - ycircle: 0x24E8, - ycircumflex: 0x0177, - ydieresis: 0x00FF, - ydotaccent: 0x1E8F, - ydotbelow: 0x1EF5, - yeharabic: 0x064A, - yehbarreearabic: 0x06D2, - yehbarreefinalarabic: 0xFBAF, - yehfinalarabic: 0xFEF2, - yehhamzaabovearabic: 0x0626, - yehhamzaabovefinalarabic: 0xFE8A, - yehhamzaaboveinitialarabic: 0xFE8B, - yehhamzaabovemedialarabic: 0xFE8C, - yehinitialarabic: 0xFEF3, - yehmedialarabic: 0xFEF4, - yehmeeminitialarabic: 0xFCDD, - yehmeemisolatedarabic: 0xFC58, - yehnoonfinalarabic: 0xFC94, - yehthreedotsbelowarabic: 0x06D1, - yekorean: 0x3156, - yen: 0x00A5, - yenmonospace: 0xFFE5, - yeokorean: 0x3155, - yeorinhieuhkorean: 0x3186, - yerahbenyomohebrew: 0x05AA, - yerahbenyomolefthebrew: 0x05AA, - yericyrillic: 0x044B, - yerudieresiscyrillic: 0x04F9, - yesieungkorean: 0x3181, - yesieungpansioskorean: 0x3183, - yesieungsioskorean: 0x3182, - yetivhebrew: 0x059A, - ygrave: 0x1EF3, - yhook: 0x01B4, - yhookabove: 0x1EF7, - yiarmenian: 0x0575, - yicyrillic: 0x0457, - yikorean: 0x3162, - yinyang: 0x262F, - yiwnarmenian: 0x0582, - ymonospace: 0xFF59, - yod: 0x05D9, - yoddagesh: 0xFB39, - yoddageshhebrew: 0xFB39, - yodhebrew: 0x05D9, - yodyodhebrew: 0x05F2, - yodyodpatahhebrew: 0xFB1F, - yohiragana: 0x3088, - yoikorean: 0x3189, - yokatakana: 0x30E8, - yokatakanahalfwidth: 0xFF96, - yokorean: 0x315B, - yosmallhiragana: 0x3087, - yosmallkatakana: 0x30E7, - yosmallkatakanahalfwidth: 0xFF6E, - yotgreek: 0x03F3, - yoyaekorean: 0x3188, - yoyakorean: 0x3187, - yoyakthai: 0x0E22, - yoyingthai: 0x0E0D, - yparen: 0x24B4, - ypogegrammeni: 0x037A, - ypogegrammenigreekcmb: 0x0345, - yr: 0x01A6, - yring: 0x1E99, - ysuperior: 0x02B8, - ytilde: 0x1EF9, - yturned: 0x028E, - yuhiragana: 0x3086, - yuikorean: 0x318C, - yukatakana: 0x30E6, - yukatakanahalfwidth: 0xFF95, - yukorean: 0x3160, - yusbigcyrillic: 0x046B, - yusbigiotifiedcyrillic: 0x046D, - yuslittlecyrillic: 0x0467, - yuslittleiotifiedcyrillic: 0x0469, - yusmallhiragana: 0x3085, - yusmallkatakana: 0x30E5, - yusmallkatakanahalfwidth: 0xFF6D, - yuyekorean: 0x318B, - yuyeokorean: 0x318A, - yyabengali: 0x09DF, - yyadeva: 0x095F, - z: 0x007A, - zaarmenian: 0x0566, - zacute: 0x017A, - zadeva: 0x095B, - zagurmukhi: 0x0A5B, - zaharabic: 0x0638, - zahfinalarabic: 0xFEC6, - zahinitialarabic: 0xFEC7, - zahiragana: 0x3056, - zahmedialarabic: 0xFEC8, - zainarabic: 0x0632, - zainfinalarabic: 0xFEB0, - zakatakana: 0x30B6, - zaqefgadolhebrew: 0x0595, - zaqefqatanhebrew: 0x0594, - zarqahebrew: 0x0598, - zayin: 0x05D6, - zayindagesh: 0xFB36, - zayindageshhebrew: 0xFB36, - zayinhebrew: 0x05D6, - zbopomofo: 0x3117, - zcaron: 0x017E, - zcircle: 0x24E9, - zcircumflex: 0x1E91, - zcurl: 0x0291, - zdot: 0x017C, - zdotaccent: 0x017C, - zdotbelow: 0x1E93, - zecyrillic: 0x0437, - zedescendercyrillic: 0x0499, - zedieresiscyrillic: 0x04DF, - zehiragana: 0x305C, - zekatakana: 0x30BC, - zero: 0x0030, - zeroarabic: 0x0660, - zerobengali: 0x09E6, - zerodeva: 0x0966, - zerogujarati: 0x0AE6, - zerogurmukhi: 0x0A66, - zerohackarabic: 0x0660, - zeroinferior: 0x2080, - zeromonospace: 0xFF10, - zerooldstyle: 0xF730, - zeropersian: 0x06F0, - zerosuperior: 0x2070, - zerothai: 0x0E50, - zerowidthjoiner: 0xFEFF, - zerowidthnonjoiner: 0x200C, - zerowidthspace: 0x200B, - zeta: 0x03B6, - zhbopomofo: 0x3113, - zhearmenian: 0x056A, - zhebrevecyrillic: 0x04C2, - zhecyrillic: 0x0436, - zhedescendercyrillic: 0x0497, - zhedieresiscyrillic: 0x04DD, - zihiragana: 0x3058, - zikatakana: 0x30B8, - zinorhebrew: 0x05AE, - zlinebelow: 0x1E95, - zmonospace: 0xFF5A, - zohiragana: 0x305E, - zokatakana: 0x30BE, - zparen: 0x24B5, - zretroflexhook: 0x0290, - zstroke: 0x01B6, - zuhiragana: 0x305A, - zukatakana: 0x30BA, - '.notdef': 0x0000 -}; - -var DingbatsGlyphsUnicode = { - space: 0x0020, - a1: 0x2701, - a2: 0x2702, - a202: 0x2703, - a3: 0x2704, - a4: 0x260E, - a5: 0x2706, - a119: 0x2707, - a118: 0x2708, - a117: 0x2709, - a11: 0x261B, - a12: 0x261E, - a13: 0x270C, - a14: 0x270D, - a15: 0x270E, - a16: 0x270F, - a105: 0x2710, - a17: 0x2711, - a18: 0x2712, - a19: 0x2713, - a20: 0x2714, - a21: 0x2715, - a22: 0x2716, - a23: 0x2717, - a24: 0x2718, - a25: 0x2719, - a26: 0x271A, - a27: 0x271B, - a28: 0x271C, - a6: 0x271D, - a7: 0x271E, - a8: 0x271F, - a9: 0x2720, - a10: 0x2721, - a29: 0x2722, - a30: 0x2723, - a31: 0x2724, - a32: 0x2725, - a33: 0x2726, - a34: 0x2727, - a35: 0x2605, - a36: 0x2729, - a37: 0x272A, - a38: 0x272B, - a39: 0x272C, - a40: 0x272D, - a41: 0x272E, - a42: 0x272F, - a43: 0x2730, - a44: 0x2731, - a45: 0x2732, - a46: 0x2733, - a47: 0x2734, - a48: 0x2735, - a49: 0x2736, - a50: 0x2737, - a51: 0x2738, - a52: 0x2739, - a53: 0x273A, - a54: 0x273B, - a55: 0x273C, - a56: 0x273D, - a57: 0x273E, - a58: 0x273F, - a59: 0x2740, - a60: 0x2741, - a61: 0x2742, - a62: 0x2743, - a63: 0x2744, - a64: 0x2745, - a65: 0x2746, - a66: 0x2747, - a67: 0x2748, - a68: 0x2749, - a69: 0x274A, - a70: 0x274B, - a71: 0x25CF, - a72: 0x274D, - a73: 0x25A0, - a74: 0x274F, - a203: 0x2750, - a75: 0x2751, - a204: 0x2752, - a76: 0x25B2, - a77: 0x25BC, - a78: 0x25C6, - a79: 0x2756, - a81: 0x25D7, - a82: 0x2758, - a83: 0x2759, - a84: 0x275A, - a97: 0x275B, - a98: 0x275C, - a99: 0x275D, - a100: 0x275E, - a101: 0x2761, - a102: 0x2762, - a103: 0x2763, - a104: 0x2764, - a106: 0x2765, - a107: 0x2766, - a108: 0x2767, - a112: 0x2663, - a111: 0x2666, - a110: 0x2665, - a109: 0x2660, - a120: 0x2460, - a121: 0x2461, - a122: 0x2462, - a123: 0x2463, - a124: 0x2464, - a125: 0x2465, - a126: 0x2466, - a127: 0x2467, - a128: 0x2468, - a129: 0x2469, - a130: 0x2776, - a131: 0x2777, - a132: 0x2778, - a133: 0x2779, - a134: 0x277A, - a135: 0x277B, - a136: 0x277C, - a137: 0x277D, - a138: 0x277E, - a139: 0x277F, - a140: 0x2780, - a141: 0x2781, - a142: 0x2782, - a143: 0x2783, - a144: 0x2784, - a145: 0x2785, - a146: 0x2786, - a147: 0x2787, - a148: 0x2788, - a149: 0x2789, - a150: 0x278A, - a151: 0x278B, - a152: 0x278C, - a153: 0x278D, - a154: 0x278E, - a155: 0x278F, - a156: 0x2790, - a157: 0x2791, - a158: 0x2792, - a159: 0x2793, - a160: 0x2794, - a161: 0x2192, - a163: 0x2194, - a164: 0x2195, - a196: 0x2798, - a165: 0x2799, - a192: 0x279A, - a166: 0x279B, - a167: 0x279C, - a168: 0x279D, - a169: 0x279E, - a170: 0x279F, - a171: 0x27A0, - a172: 0x27A1, - a173: 0x27A2, - a162: 0x27A3, - a174: 0x27A4, - a175: 0x27A5, - a176: 0x27A6, - a177: 0x27A7, - a178: 0x27A8, - a179: 0x27A9, - a193: 0x27AA, - a180: 0x27AB, - a199: 0x27AC, - a181: 0x27AD, - a200: 0x27AE, - a182: 0x27AF, - a201: 0x27B1, - a183: 0x27B2, - a184: 0x27B3, - a197: 0x27B4, - a185: 0x27B5, - a194: 0x27B6, - a198: 0x27B7, - a186: 0x27B8, - a195: 0x27B9, - a187: 0x27BA, - a188: 0x27BB, - a189: 0x27BC, - a190: 0x27BD, - a191: 0x27BE, - a89: 0x2768, // 0xF8D7 - a90: 0x2769, // 0xF8D8 - a93: 0x276A, // 0xF8D9 - a94: 0x276B, // 0xF8DA - a91: 0x276C, // 0xF8DB - a92: 0x276D, // 0xF8DC - a205: 0x276E, // 0xF8DD - a85: 0x276F, // 0xF8DE - a206: 0x2770, // 0xF8DF - a86: 0x2771, // 0xF8E0 - a87: 0x2772, // 0xF8E1 - a88: 0x2773, // 0xF8E2 - a95: 0x2774, // 0xF8E3 - a96: 0x2775, // 0xF8E4 - '.notdef': 0x0000 -}; - - -var PDFImage = (function PDFImageClosure() { - /** - * Decode the image in the main thread if it supported. Resovles the promise - * when the image data is ready. - */ - function handleImageData(handler, xref, res, image) { - if (image instanceof JpegStream && image.isNativelyDecodable(xref, res)) { - // For natively supported jpegs send them to the main thread for decoding. - var dict = image.dict; - var colorSpace = dict.get('ColorSpace', 'CS'); - colorSpace = ColorSpace.parse(colorSpace, xref, res); - var numComps = colorSpace.numComps; - var decodePromise = handler.sendWithPromise('JpegDecode', - [image.getIR(), numComps]); - return decodePromise.then(function (message) { - var data = message.data; - return new Stream(data, 0, data.length, image.dict); - }); - } else { - return Promise.resolve(image); - } - } - - /** - * Decode and clamp a value. The formula is different from the spec because we - * don't decode to float range [0,1], we decode it in the [0,max] range. - */ - function decodeAndClamp(value, addend, coefficient, max) { - value = addend + value * coefficient; - // Clamp the value to the range - return (value < 0 ? 0 : (value > max ? max : value)); - } - - function PDFImage(xref, res, image, inline, smask, mask, isMask) { - this.image = image; - var dict = image.dict; - if (dict.has('Filter')) { - var filter = dict.get('Filter').name; - if (filter === 'JPXDecode') { - var jpxImage = new JpxImage(); - jpxImage.parseImageProperties(image.stream); - image.stream.reset(); - image.bitsPerComponent = jpxImage.bitsPerComponent; - image.numComps = jpxImage.componentsCount; - } else if (filter === 'JBIG2Decode') { - image.bitsPerComponent = 1; - image.numComps = 1; - } - } - // TODO cache rendered images? - - this.width = dict.get('Width', 'W'); - this.height = dict.get('Height', 'H'); - - if (this.width < 1 || this.height < 1) { - error('Invalid image width: ' + this.width + ' or height: ' + - this.height); - } - - this.interpolate = dict.get('Interpolate', 'I') || false; - this.imageMask = dict.get('ImageMask', 'IM') || false; - this.matte = dict.get('Matte') || false; - - var bitsPerComponent = image.bitsPerComponent; - if (!bitsPerComponent) { - bitsPerComponent = dict.get('BitsPerComponent', 'BPC'); - if (!bitsPerComponent) { - if (this.imageMask) { - bitsPerComponent = 1; - } else { - error('Bits per component missing in image: ' + this.imageMask); - } - } - } - this.bpc = bitsPerComponent; - - if (!this.imageMask) { - var colorSpace = dict.get('ColorSpace', 'CS'); - if (!colorSpace) { - info('JPX images (which do not require color spaces)'); - switch (image.numComps) { - case 1: - colorSpace = Name.get('DeviceGray'); - break; - case 3: - colorSpace = Name.get('DeviceRGB'); - break; - case 4: - colorSpace = Name.get('DeviceCMYK'); - break; - default: - error('JPX images with ' + this.numComps + - ' color components not supported.'); - } - } - this.colorSpace = ColorSpace.parse(colorSpace, xref, res); - this.numComps = this.colorSpace.numComps; - } - - this.decode = dict.get('Decode', 'D'); - this.needsDecode = false; - if (this.decode && - ((this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode)) || - (isMask && !ColorSpace.isDefaultDecode(this.decode, 1)))) { - this.needsDecode = true; - // Do some preprocessing to avoid more math. - var max = (1 << bitsPerComponent) - 1; - this.decodeCoefficients = []; - this.decodeAddends = []; - for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) { - var dmin = this.decode[i]; - var dmax = this.decode[i + 1]; - this.decodeCoefficients[j] = dmax - dmin; - this.decodeAddends[j] = max * dmin; - } - } - - if (smask) { - this.smask = new PDFImage(xref, res, smask, false); - } else if (mask) { - if (isStream(mask)) { - var maskDict = mask.dict, imageMask = maskDict.get('ImageMask', 'IM'); - if (!imageMask) { - warn('Ignoring /Mask in image without /ImageMask.'); - } else { - this.mask = new PDFImage(xref, res, mask, false, null, null, true); - } - } else { - // Color key mask (just an array). - this.mask = mask; - } - } - } - /** - * Handles processing of image data and returns the Promise that is resolved - * with a PDFImage when the image is ready to be used. - */ - PDFImage.buildImage = function PDFImage_buildImage(handler, xref, - res, image, inline) { - var imagePromise = handleImageData(handler, xref, res, image); - var smaskPromise; - var maskPromise; - - var smask = image.dict.get('SMask'); - var mask = image.dict.get('Mask'); - - if (smask) { - smaskPromise = handleImageData(handler, xref, res, smask); - maskPromise = Promise.resolve(null); - } else { - smaskPromise = Promise.resolve(null); - if (mask) { - if (isStream(mask)) { - maskPromise = handleImageData(handler, xref, res, mask); - } else if (isArray(mask)) { - maskPromise = Promise.resolve(mask); - } else { - warn('Unsupported mask format.'); - maskPromise = Promise.resolve(null); - } - } else { - maskPromise = Promise.resolve(null); - } - } - return Promise.all([imagePromise, smaskPromise, maskPromise]).then( - function(results) { - var imageData = results[0]; - var smaskData = results[1]; - var maskData = results[2]; - return new PDFImage(xref, res, imageData, inline, smaskData, maskData); - }); - }; - - /** - * Resize an image using the nearest neighbor algorithm. Currently only - * supports one and three component images. - * @param {TypedArray} pixels The original image with one component. - * @param {Number} bpc Number of bits per component. - * @param {Number} components Number of color components, 1 or 3 is supported. - * @param {Number} w1 Original width. - * @param {Number} h1 Original height. - * @param {Number} w2 New width. - * @param {Number} h2 New height. - * @param {TypedArray} dest (Optional) The destination buffer. - * @param {Number} alpha01 (Optional) Size reserved for the alpha channel. - * @return {TypedArray} Resized image data. - */ - PDFImage.resize = function PDFImage_resize(pixels, bpc, components, - w1, h1, w2, h2, dest, alpha01) { - - if (components !== 1 && components !== 3) { - error('Unsupported component count for resizing.'); - } - - var length = w2 * h2 * components; - var temp = dest ? dest : (bpc <= 8 ? new Uint8Array(length) : - (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length))); - var xRatio = w1 / w2; - var yRatio = h1 / h2; - var i, j, py, newIndex = 0, oldIndex; - var xScaled = new Uint16Array(w2); - var w1Scanline = w1 * components; - if (alpha01 !== 1) { - alpha01 = 0; - } - - for (j = 0; j < w2; j++) { - xScaled[j] = Math.floor(j * xRatio) * components; - } - - if (components === 1) { - for (i = 0; i < h2; i++) { - py = Math.floor(i * yRatio) * w1Scanline; - for (j = 0; j < w2; j++) { - oldIndex = py + xScaled[j]; - temp[newIndex++] = pixels[oldIndex]; - } - } - } else if (components === 3) { - for (i = 0; i < h2; i++) { - py = Math.floor(i * yRatio) * w1Scanline; - for (j = 0; j < w2; j++) { - oldIndex = py + xScaled[j]; - temp[newIndex++] = pixels[oldIndex++]; - temp[newIndex++] = pixels[oldIndex++]; - temp[newIndex++] = pixels[oldIndex++]; - newIndex += alpha01; - } - } - } - return temp; - }; - - PDFImage.createMask = - function PDFImage_createMask(imgArray, width, height, - imageIsFromDecodeStream, inverseDecode) { - - // |imgArray| might not contain full data for every pixel of the mask, so - // we need to distinguish between |computedLength| and |actualLength|. - // In particular, if inverseDecode is true, then the array we return must - // have a length of |computedLength|. - - var computedLength = ((width + 7) >> 3) * height; - var actualLength = imgArray.byteLength; - var haveFullData = computedLength === actualLength; - var data, i; - - if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { - // imgArray came from a DecodeStream and its data is in an appropriate - // form, so we can just transfer it. - data = imgArray; - } else if (!inverseDecode) { - data = new Uint8Array(actualLength); - data.set(imgArray); - } else { - data = new Uint8Array(computedLength); - data.set(imgArray); - for (i = actualLength; i < computedLength; i++) { - data[i] = 0xff; - } - } - - // If necessary, invert the original mask data (but not any extra we might - // have added above). It's safe to modify the array -- whether it's the - // original or a copy, we're about to transfer it anyway, so nothing else - // in this thread can be relying on its contents. - if (inverseDecode) { - for (i = 0; i < actualLength; i++) { - data[i] = ~data[i]; - } - } - - return {data: data, width: width, height: height}; - }; - - PDFImage.prototype = { - get drawWidth() { - return Math.max(this.width, - this.smask && this.smask.width || 0, - this.mask && this.mask.width || 0); - }, - - get drawHeight() { - return Math.max(this.height, - this.smask && this.smask.height || 0, - this.mask && this.mask.height || 0); - }, - - decodeBuffer: function PDFImage_decodeBuffer(buffer) { - var bpc = this.bpc; - var numComps = this.numComps; - - var decodeAddends = this.decodeAddends; - var decodeCoefficients = this.decodeCoefficients; - var max = (1 << bpc) - 1; - var i, ii; - - if (bpc === 1) { - // If the buffer needed decode that means it just needs to be inverted. - for (i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] = +!(buffer[i]); - } - return; - } - var index = 0; - for (i = 0, ii = this.width * this.height; i < ii; i++) { - for (var j = 0; j < numComps; j++) { - buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], - decodeCoefficients[j], max); - index++; - } - } - }, - - getComponents: function PDFImage_getComponents(buffer) { - var bpc = this.bpc; - - // This image doesn't require any extra work. - if (bpc === 8) { - return buffer; - } - - var width = this.width; - var height = this.height; - var numComps = this.numComps; - - var length = width * height * numComps; - var bufferPos = 0; - var output = (bpc <= 8 ? new Uint8Array(length) : - (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length))); - var rowComps = width * numComps; - - var max = (1 << bpc) - 1; - var i = 0, ii, buf; - - if (bpc === 1) { - // Optimization for reading 1 bpc images. - var mask, loop1End, loop2End; - for (var j = 0; j < height; j++) { - loop1End = i + (rowComps & ~7); - loop2End = i + rowComps; - - // unroll loop for all full bytes - while (i < loop1End) { - buf = buffer[bufferPos++]; - output[i] = (buf >> 7) & 1; - output[i + 1] = (buf >> 6) & 1; - output[i + 2] = (buf >> 5) & 1; - output[i + 3] = (buf >> 4) & 1; - output[i + 4] = (buf >> 3) & 1; - output[i + 5] = (buf >> 2) & 1; - output[i + 6] = (buf >> 1) & 1; - output[i + 7] = buf & 1; - i += 8; - } - - // handle remaing bits - if (i < loop2End) { - buf = buffer[bufferPos++]; - mask = 128; - while (i < loop2End) { - output[i++] = +!!(buf & mask); - mask >>= 1; - } - } - } - } else { - // The general case that handles all other bpc values. - var bits = 0; - buf = 0; - for (i = 0, ii = length; i < ii; ++i) { - if (i % rowComps === 0) { - buf = 0; - bits = 0; - } - - while (bits < bpc) { - buf = (buf << 8) | buffer[bufferPos++]; - bits += 8; - } - - var remainingBits = bits - bpc; - var value = buf >> remainingBits; - output[i] = (value < 0 ? 0 : (value > max ? max : value)); - buf = buf & ((1 << remainingBits) - 1); - bits = remainingBits; - } - } - return output; - }, - - fillOpacity: function PDFImage_fillOpacity(rgbaBuf, width, height, - actualHeight, image) { - var smask = this.smask; - var mask = this.mask; - var alphaBuf, sw, sh, i, ii, j; - - if (smask) { - sw = smask.width; - sh = smask.height; - alphaBuf = new Uint8Array(sw * sh); - smask.fillGrayBuffer(alphaBuf); - if (sw !== width || sh !== height) { - alphaBuf = PDFImage.resize(alphaBuf, smask.bpc, 1, sw, sh, width, - height); - } - } else if (mask) { - if (mask instanceof PDFImage) { - sw = mask.width; - sh = mask.height; - alphaBuf = new Uint8Array(sw * sh); - mask.numComps = 1; - mask.fillGrayBuffer(alphaBuf); - - // Need to invert values in rgbaBuf - for (i = 0, ii = sw * sh; i < ii; ++i) { - alphaBuf[i] = 255 - alphaBuf[i]; - } - - if (sw !== width || sh !== height) { - alphaBuf = PDFImage.resize(alphaBuf, mask.bpc, 1, sw, sh, width, - height); - } - } else if (isArray(mask)) { - // Color key mask: if any of the compontents are outside the range - // then they should be painted. - alphaBuf = new Uint8Array(width * height); - var numComps = this.numComps; - for (i = 0, ii = width * height; i < ii; ++i) { - var opacity = 0; - var imageOffset = i * numComps; - for (j = 0; j < numComps; ++j) { - var color = image[imageOffset + j]; - var maskOffset = j * 2; - if (color < mask[maskOffset] || color > mask[maskOffset + 1]) { - opacity = 255; - break; - } - } - alphaBuf[i] = opacity; - } - } else { - error('Unknown mask format.'); - } - } - - if (alphaBuf) { - for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { - rgbaBuf[j] = alphaBuf[i]; - } - } else { - // No mask. - for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { - rgbaBuf[j] = 255; - } - } - }, - - undoPreblend: function PDFImage_undoPreblend(buffer, width, height) { - var matte = this.smask && this.smask.matte; - if (!matte) { - return; - } - var matteRgb = this.colorSpace.getRgb(matte, 0); - var matteR = matteRgb[0]; - var matteG = matteRgb[1]; - var matteB = matteRgb[2]; - var length = width * height * 4; - var r, g, b; - for (var i = 0; i < length; i += 4) { - var alpha = buffer[i + 3]; - if (alpha === 0) { - // according formula we have to get Infinity in all components - // making it white (typical paper color) should be okay - buffer[i] = 255; - buffer[i + 1] = 255; - buffer[i + 2] = 255; - continue; - } - var k = 255 / alpha; - r = (buffer[i] - matteR) * k + matteR; - g = (buffer[i + 1] - matteG) * k + matteG; - b = (buffer[i + 2] - matteB) * k + matteB; - buffer[i] = r <= 0 ? 0 : r >= 255 ? 255 : r | 0; - buffer[i + 1] = g <= 0 ? 0 : g >= 255 ? 255 : g | 0; - buffer[i + 2] = b <= 0 ? 0 : b >= 255 ? 255 : b | 0; - } - }, - - createImageData: function PDFImage_createImageData(forceRGBA) { - var drawWidth = this.drawWidth; - var drawHeight = this.drawHeight; - var imgData = { // other fields are filled in below - width: drawWidth, - height: drawHeight - }; - - var numComps = this.numComps; - var originalWidth = this.width; - var originalHeight = this.height; - var bpc = this.bpc; - - // Rows start at byte boundary. - var rowBytes = (originalWidth * numComps * bpc + 7) >> 3; - var imgArray; - - if (!forceRGBA) { - // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image - // without any complications, we pass a same-sized copy to the main - // thread rather than expanding by 32x to RGBA form. This saves *lots* - // of memory for many scanned documents. It's also much faster. - // - // Similarly, if it is a 24-bit-per pixel RGB image without any - // complications, we avoid expanding by 1.333x to RGBA form. - var kind; - if (this.colorSpace.name === 'DeviceGray' && bpc === 1) { - kind = ImageKind.GRAYSCALE_1BPP; - } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 && - !this.needsDecode) { - kind = ImageKind.RGB_24BPP; - } - if (kind && !this.smask && !this.mask && - drawWidth === originalWidth && drawHeight === originalHeight) { - imgData.kind = kind; - - imgArray = this.getImageBytes(originalHeight * rowBytes); - // If imgArray came from a DecodeStream, we're safe to transfer it - // (and thus neuter it) because it will constitute the entire - // DecodeStream's data. But if it came from a Stream, we need to - // copy it because it'll only be a portion of the Stream's data, and - // the rest will be read later on. - if (this.image instanceof DecodeStream) { - imgData.data = imgArray; - } else { - var newArray = new Uint8Array(imgArray.length); - newArray.set(imgArray); - imgData.data = newArray; - } - if (this.needsDecode) { - // Invert the buffer (which must be grayscale if we reached here). - assert(kind === ImageKind.GRAYSCALE_1BPP); - var buffer = imgData.data; - for (var i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] ^= 0xff; - } - } - return imgData; - } - if (this.image instanceof JpegStream && !this.smask && !this.mask && - (this.colorSpace.name === 'DeviceGray' || - this.colorSpace.name === 'DeviceRGB' || - this.colorSpace.name === 'DeviceCMYK')) { - imgData.kind = ImageKind.RGB_24BPP; - imgData.data = this.getImageBytes(originalHeight * rowBytes, - drawWidth, drawHeight, true); - return imgData; - } - } - - imgArray = this.getImageBytes(originalHeight * rowBytes); - // imgArray can be incomplete (e.g. after CCITT fax encoding). - var actualHeight = 0 | (imgArray.length / rowBytes * - drawHeight / originalHeight); - - var comps = this.getComponents(imgArray); - - // If opacity data is present, use RGBA_32BPP form. Otherwise, use the - // more compact RGB_24BPP form if allowable. - var alpha01, maybeUndoPreblend; - if (!forceRGBA && !this.smask && !this.mask) { - imgData.kind = ImageKind.RGB_24BPP; - imgData.data = new Uint8Array(drawWidth * drawHeight * 3); - alpha01 = 0; - maybeUndoPreblend = false; - } else { - imgData.kind = ImageKind.RGBA_32BPP; - imgData.data = new Uint8Array(drawWidth * drawHeight * 4); - alpha01 = 1; - maybeUndoPreblend = true; - - // Color key masking (opacity) must be performed before decoding. - this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, - comps); - } - - if (this.needsDecode) { - this.decodeBuffer(comps); - } - this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, - drawWidth, drawHeight, actualHeight, bpc, comps, - alpha01); - if (maybeUndoPreblend) { - this.undoPreblend(imgData.data, drawWidth, actualHeight); - } - - return imgData; - }, - - fillGrayBuffer: function PDFImage_fillGrayBuffer(buffer) { - var numComps = this.numComps; - if (numComps !== 1) { - error('Reading gray scale from a color image: ' + numComps); - } - - var width = this.width; - var height = this.height; - var bpc = this.bpc; - - // rows start at byte boundary - var rowBytes = (width * numComps * bpc + 7) >> 3; - var imgArray = this.getImageBytes(height * rowBytes); - - var comps = this.getComponents(imgArray); - var i, length; - - if (bpc === 1) { - // inline decoding (= inversion) for 1 bpc images - length = width * height; - if (this.needsDecode) { - // invert and scale to {0, 255} - for (i = 0; i < length; ++i) { - buffer[i] = (comps[i] - 1) & 255; - } - } else { - // scale to {0, 255} - for (i = 0; i < length; ++i) { - buffer[i] = (-comps[i]) & 255; - } - } - return; - } - - if (this.needsDecode) { - this.decodeBuffer(comps); - } - length = width * height; - // we aren't using a colorspace so we need to scale the value - var scale = 255 / ((1 << bpc) - 1); - for (i = 0; i < length; ++i) { - buffer[i] = (scale * comps[i]) | 0; - } - }, - - getImageBytes: function PDFImage_getImageBytes(length, - drawWidth, drawHeight, - forceRGB) { - this.image.reset(); - this.image.drawWidth = drawWidth || this.width; - this.image.drawHeight = drawHeight || this.height; - this.image.forceRGB = !!forceRGB; - return this.image.getBytes(length); - } - }; - return PDFImage; -})(); - - -// The Metrics object contains glyph widths (in glyph space units). -// As per PDF spec, for most fonts (Type 3 being an exception) a glyph -// space unit corresponds to 1/1000th of text space unit. -var Metrics = { - 'Courier': 600, - 'Courier-Bold': 600, - 'Courier-BoldOblique': 600, - 'Courier-Oblique': 600, - 'Helvetica' : { - 'space': 278, - 'exclam': 278, - 'quotedbl': 355, - 'numbersign': 556, - 'dollar': 556, - 'percent': 889, - 'ampersand': 667, - 'quoteright': 222, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 389, - 'plus': 584, - 'comma': 278, - 'hyphen': 333, - 'period': 278, - 'slash': 278, - 'zero': 556, - 'one': 556, - 'two': 556, - 'three': 556, - 'four': 556, - 'five': 556, - 'six': 556, - 'seven': 556, - 'eight': 556, - 'nine': 556, - 'colon': 278, - 'semicolon': 278, - 'less': 584, - 'equal': 584, - 'greater': 584, - 'question': 556, - 'at': 1015, - 'A': 667, - 'B': 667, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 722, - 'I': 278, - 'J': 500, - 'K': 667, - 'L': 556, - 'M': 833, - 'N': 722, - 'O': 778, - 'P': 667, - 'Q': 778, - 'R': 722, - 'S': 667, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 944, - 'X': 667, - 'Y': 667, - 'Z': 611, - 'bracketleft': 278, - 'backslash': 278, - 'bracketright': 278, - 'asciicircum': 469, - 'underscore': 556, - 'quoteleft': 222, - 'a': 556, - 'b': 556, - 'c': 500, - 'd': 556, - 'e': 556, - 'f': 278, - 'g': 556, - 'h': 556, - 'i': 222, - 'j': 222, - 'k': 500, - 'l': 222, - 'm': 833, - 'n': 556, - 'o': 556, - 'p': 556, - 'q': 556, - 'r': 333, - 's': 500, - 't': 278, - 'u': 556, - 'v': 500, - 'w': 722, - 'x': 500, - 'y': 500, - 'z': 500, - 'braceleft': 334, - 'bar': 260, - 'braceright': 334, - 'asciitilde': 584, - 'exclamdown': 333, - 'cent': 556, - 'sterling': 556, - 'fraction': 167, - 'yen': 556, - 'florin': 556, - 'section': 556, - 'currency': 556, - 'quotesingle': 191, - 'quotedblleft': 333, - 'guillemotleft': 556, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 500, - 'fl': 500, - 'endash': 556, - 'dagger': 556, - 'daggerdbl': 556, - 'periodcentered': 278, - 'paragraph': 537, - 'bullet': 350, - 'quotesinglbase': 222, - 'quotedblbase': 333, - 'quotedblright': 333, - 'guillemotright': 556, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 611, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 370, - 'Lslash': 556, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 365, - 'ae': 889, - 'dotlessi': 278, - 'lslash': 222, - 'oslash': 611, - 'oe': 944, - 'germandbls': 611, - 'Idieresis': 278, - 'eacute': 556, - 'abreve': 556, - 'uhungarumlaut': 556, - 'ecaron': 556, - 'Ydieresis': 667, - 'divide': 584, - 'Yacute': 667, - 'Acircumflex': 667, - 'aacute': 556, - 'Ucircumflex': 722, - 'yacute': 500, - 'scommaaccent': 500, - 'ecircumflex': 556, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 556, - 'Uacute': 722, - 'uogonek': 556, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 737, - 'Emacron': 667, - 'ccaron': 500, - 'aring': 556, - 'Ncommaaccent': 722, - 'lacute': 222, - 'agrave': 556, - 'Tcommaaccent': 611, - 'Cacute': 722, - 'atilde': 556, - 'Edotaccent': 667, - 'scaron': 500, - 'scedilla': 500, - 'iacute': 278, - 'lozenge': 471, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 556, - 'acircumflex': 556, - 'Amacron': 667, - 'rcaron': 333, - 'ccedilla': 500, - 'Zdotaccent': 611, - 'Thorn': 667, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 667, - 'dcaron': 643, - 'Umacron': 722, - 'uring': 556, - 'threesuperior': 333, - 'Ograve': 778, - 'Agrave': 667, - 'Abreve': 667, - 'multiply': 584, - 'uacute': 556, - 'Tcaron': 611, - 'partialdiff': 476, - 'ydieresis': 500, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 556, - 'edieresis': 556, - 'cacute': 500, - 'nacute': 556, - 'umacron': 556, - 'Ncaron': 722, - 'Iacute': 278, - 'plusminus': 584, - 'brokenbar': 260, - 'registered': 737, - 'Gbreve': 778, - 'Idotaccent': 278, - 'summation': 600, - 'Egrave': 667, - 'racute': 333, - 'omacron': 556, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 222, - 'tcaron': 317, - 'eogonek': 556, - 'Uogonek': 722, - 'Aacute': 667, - 'Adieresis': 667, - 'egrave': 556, - 'zacute': 500, - 'iogonek': 222, - 'Oacute': 778, - 'oacute': 556, - 'amacron': 556, - 'sacute': 500, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 556, - 'twosuperior': 333, - 'Odieresis': 778, - 'mu': 556, - 'igrave': 278, - 'ohungarumlaut': 556, - 'Eogonek': 667, - 'dcroat': 556, - 'threequarters': 834, - 'Scedilla': 667, - 'lcaron': 299, - 'Kcommaaccent': 667, - 'Lacute': 556, - 'trademark': 1000, - 'edotaccent': 556, - 'Igrave': 278, - 'Imacron': 278, - 'Lcaron': 556, - 'onehalf': 834, - 'lessequal': 549, - 'ocircumflex': 556, - 'ntilde': 556, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 556, - 'gbreve': 556, - 'onequarter': 834, - 'Scaron': 667, - 'Scommaaccent': 667, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 556, - 'Ccaron': 722, - 'ugrave': 556, - 'radical': 453, - 'Dcaron': 722, - 'rcommaaccent': 333, - 'Ntilde': 722, - 'otilde': 556, - 'Rcommaaccent': 722, - 'Lcommaaccent': 556, - 'Atilde': 667, - 'Aogonek': 667, - 'Aring': 667, - 'Otilde': 778, - 'zdotaccent': 500, - 'Ecaron': 667, - 'Iogonek': 278, - 'kcommaaccent': 500, - 'minus': 584, - 'Icircumflex': 278, - 'ncaron': 556, - 'tcommaaccent': 278, - 'logicalnot': 584, - 'odieresis': 556, - 'udieresis': 556, - 'notequal': 549, - 'gcommaaccent': 556, - 'eth': 556, - 'zcaron': 500, - 'ncommaaccent': 556, - 'onesuperior': 333, - 'imacron': 278, - 'Euro': 556 - }, - 'Helvetica-Bold': { - 'space': 278, - 'exclam': 333, - 'quotedbl': 474, - 'numbersign': 556, - 'dollar': 556, - 'percent': 889, - 'ampersand': 722, - 'quoteright': 278, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 389, - 'plus': 584, - 'comma': 278, - 'hyphen': 333, - 'period': 278, - 'slash': 278, - 'zero': 556, - 'one': 556, - 'two': 556, - 'three': 556, - 'four': 556, - 'five': 556, - 'six': 556, - 'seven': 556, - 'eight': 556, - 'nine': 556, - 'colon': 333, - 'semicolon': 333, - 'less': 584, - 'equal': 584, - 'greater': 584, - 'question': 611, - 'at': 975, - 'A': 722, - 'B': 722, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 722, - 'I': 278, - 'J': 556, - 'K': 722, - 'L': 611, - 'M': 833, - 'N': 722, - 'O': 778, - 'P': 667, - 'Q': 778, - 'R': 722, - 'S': 667, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 944, - 'X': 667, - 'Y': 667, - 'Z': 611, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 584, - 'underscore': 556, - 'quoteleft': 278, - 'a': 556, - 'b': 611, - 'c': 556, - 'd': 611, - 'e': 556, - 'f': 333, - 'g': 611, - 'h': 611, - 'i': 278, - 'j': 278, - 'k': 556, - 'l': 278, - 'm': 889, - 'n': 611, - 'o': 611, - 'p': 611, - 'q': 611, - 'r': 389, - 's': 556, - 't': 333, - 'u': 611, - 'v': 556, - 'w': 778, - 'x': 556, - 'y': 556, - 'z': 500, - 'braceleft': 389, - 'bar': 280, - 'braceright': 389, - 'asciitilde': 584, - 'exclamdown': 333, - 'cent': 556, - 'sterling': 556, - 'fraction': 167, - 'yen': 556, - 'florin': 556, - 'section': 556, - 'currency': 556, - 'quotesingle': 238, - 'quotedblleft': 500, - 'guillemotleft': 556, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 611, - 'fl': 611, - 'endash': 556, - 'dagger': 556, - 'daggerdbl': 556, - 'periodcentered': 278, - 'paragraph': 556, - 'bullet': 350, - 'quotesinglbase': 278, - 'quotedblbase': 500, - 'quotedblright': 500, - 'guillemotright': 556, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 611, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 370, - 'Lslash': 611, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 365, - 'ae': 889, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 611, - 'oe': 944, - 'germandbls': 611, - 'Idieresis': 278, - 'eacute': 556, - 'abreve': 556, - 'uhungarumlaut': 611, - 'ecaron': 556, - 'Ydieresis': 667, - 'divide': 584, - 'Yacute': 667, - 'Acircumflex': 722, - 'aacute': 556, - 'Ucircumflex': 722, - 'yacute': 556, - 'scommaaccent': 556, - 'ecircumflex': 556, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 556, - 'Uacute': 722, - 'uogonek': 611, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 737, - 'Emacron': 667, - 'ccaron': 556, - 'aring': 556, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 556, - 'Tcommaaccent': 611, - 'Cacute': 722, - 'atilde': 556, - 'Edotaccent': 667, - 'scaron': 556, - 'scedilla': 556, - 'iacute': 278, - 'lozenge': 494, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 611, - 'acircumflex': 556, - 'Amacron': 722, - 'rcaron': 389, - 'ccedilla': 556, - 'Zdotaccent': 611, - 'Thorn': 667, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 667, - 'dcaron': 743, - 'Umacron': 722, - 'uring': 611, - 'threesuperior': 333, - 'Ograve': 778, - 'Agrave': 722, - 'Abreve': 722, - 'multiply': 584, - 'uacute': 611, - 'Tcaron': 611, - 'partialdiff': 494, - 'ydieresis': 556, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 556, - 'edieresis': 556, - 'cacute': 556, - 'nacute': 611, - 'umacron': 611, - 'Ncaron': 722, - 'Iacute': 278, - 'plusminus': 584, - 'brokenbar': 280, - 'registered': 737, - 'Gbreve': 778, - 'Idotaccent': 278, - 'summation': 600, - 'Egrave': 667, - 'racute': 389, - 'omacron': 611, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 278, - 'tcaron': 389, - 'eogonek': 556, - 'Uogonek': 722, - 'Aacute': 722, - 'Adieresis': 722, - 'egrave': 556, - 'zacute': 500, - 'iogonek': 278, - 'Oacute': 778, - 'oacute': 611, - 'amacron': 556, - 'sacute': 556, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 611, - 'twosuperior': 333, - 'Odieresis': 778, - 'mu': 611, - 'igrave': 278, - 'ohungarumlaut': 611, - 'Eogonek': 667, - 'dcroat': 611, - 'threequarters': 834, - 'Scedilla': 667, - 'lcaron': 400, - 'Kcommaaccent': 722, - 'Lacute': 611, - 'trademark': 1000, - 'edotaccent': 556, - 'Igrave': 278, - 'Imacron': 278, - 'Lcaron': 611, - 'onehalf': 834, - 'lessequal': 549, - 'ocircumflex': 611, - 'ntilde': 611, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 556, - 'gbreve': 611, - 'onequarter': 834, - 'Scaron': 667, - 'Scommaaccent': 667, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 611, - 'Ccaron': 722, - 'ugrave': 611, - 'radical': 549, - 'Dcaron': 722, - 'rcommaaccent': 389, - 'Ntilde': 722, - 'otilde': 611, - 'Rcommaaccent': 722, - 'Lcommaaccent': 611, - 'Atilde': 722, - 'Aogonek': 722, - 'Aring': 722, - 'Otilde': 778, - 'zdotaccent': 500, - 'Ecaron': 667, - 'Iogonek': 278, - 'kcommaaccent': 556, - 'minus': 584, - 'Icircumflex': 278, - 'ncaron': 611, - 'tcommaaccent': 333, - 'logicalnot': 584, - 'odieresis': 611, - 'udieresis': 611, - 'notequal': 549, - 'gcommaaccent': 611, - 'eth': 611, - 'zcaron': 500, - 'ncommaaccent': 611, - 'onesuperior': 333, - 'imacron': 278, - 'Euro': 556 - }, - 'Helvetica-BoldOblique': { - 'space': 278, - 'exclam': 333, - 'quotedbl': 474, - 'numbersign': 556, - 'dollar': 556, - 'percent': 889, - 'ampersand': 722, - 'quoteright': 278, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 389, - 'plus': 584, - 'comma': 278, - 'hyphen': 333, - 'period': 278, - 'slash': 278, - 'zero': 556, - 'one': 556, - 'two': 556, - 'three': 556, - 'four': 556, - 'five': 556, - 'six': 556, - 'seven': 556, - 'eight': 556, - 'nine': 556, - 'colon': 333, - 'semicolon': 333, - 'less': 584, - 'equal': 584, - 'greater': 584, - 'question': 611, - 'at': 975, - 'A': 722, - 'B': 722, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 722, - 'I': 278, - 'J': 556, - 'K': 722, - 'L': 611, - 'M': 833, - 'N': 722, - 'O': 778, - 'P': 667, - 'Q': 778, - 'R': 722, - 'S': 667, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 944, - 'X': 667, - 'Y': 667, - 'Z': 611, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 584, - 'underscore': 556, - 'quoteleft': 278, - 'a': 556, - 'b': 611, - 'c': 556, - 'd': 611, - 'e': 556, - 'f': 333, - 'g': 611, - 'h': 611, - 'i': 278, - 'j': 278, - 'k': 556, - 'l': 278, - 'm': 889, - 'n': 611, - 'o': 611, - 'p': 611, - 'q': 611, - 'r': 389, - 's': 556, - 't': 333, - 'u': 611, - 'v': 556, - 'w': 778, - 'x': 556, - 'y': 556, - 'z': 500, - 'braceleft': 389, - 'bar': 280, - 'braceright': 389, - 'asciitilde': 584, - 'exclamdown': 333, - 'cent': 556, - 'sterling': 556, - 'fraction': 167, - 'yen': 556, - 'florin': 556, - 'section': 556, - 'currency': 556, - 'quotesingle': 238, - 'quotedblleft': 500, - 'guillemotleft': 556, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 611, - 'fl': 611, - 'endash': 556, - 'dagger': 556, - 'daggerdbl': 556, - 'periodcentered': 278, - 'paragraph': 556, - 'bullet': 350, - 'quotesinglbase': 278, - 'quotedblbase': 500, - 'quotedblright': 500, - 'guillemotright': 556, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 611, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 370, - 'Lslash': 611, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 365, - 'ae': 889, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 611, - 'oe': 944, - 'germandbls': 611, - 'Idieresis': 278, - 'eacute': 556, - 'abreve': 556, - 'uhungarumlaut': 611, - 'ecaron': 556, - 'Ydieresis': 667, - 'divide': 584, - 'Yacute': 667, - 'Acircumflex': 722, - 'aacute': 556, - 'Ucircumflex': 722, - 'yacute': 556, - 'scommaaccent': 556, - 'ecircumflex': 556, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 556, - 'Uacute': 722, - 'uogonek': 611, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 737, - 'Emacron': 667, - 'ccaron': 556, - 'aring': 556, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 556, - 'Tcommaaccent': 611, - 'Cacute': 722, - 'atilde': 556, - 'Edotaccent': 667, - 'scaron': 556, - 'scedilla': 556, - 'iacute': 278, - 'lozenge': 494, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 611, - 'acircumflex': 556, - 'Amacron': 722, - 'rcaron': 389, - 'ccedilla': 556, - 'Zdotaccent': 611, - 'Thorn': 667, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 667, - 'dcaron': 743, - 'Umacron': 722, - 'uring': 611, - 'threesuperior': 333, - 'Ograve': 778, - 'Agrave': 722, - 'Abreve': 722, - 'multiply': 584, - 'uacute': 611, - 'Tcaron': 611, - 'partialdiff': 494, - 'ydieresis': 556, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 556, - 'edieresis': 556, - 'cacute': 556, - 'nacute': 611, - 'umacron': 611, - 'Ncaron': 722, - 'Iacute': 278, - 'plusminus': 584, - 'brokenbar': 280, - 'registered': 737, - 'Gbreve': 778, - 'Idotaccent': 278, - 'summation': 600, - 'Egrave': 667, - 'racute': 389, - 'omacron': 611, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 278, - 'tcaron': 389, - 'eogonek': 556, - 'Uogonek': 722, - 'Aacute': 722, - 'Adieresis': 722, - 'egrave': 556, - 'zacute': 500, - 'iogonek': 278, - 'Oacute': 778, - 'oacute': 611, - 'amacron': 556, - 'sacute': 556, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 611, - 'twosuperior': 333, - 'Odieresis': 778, - 'mu': 611, - 'igrave': 278, - 'ohungarumlaut': 611, - 'Eogonek': 667, - 'dcroat': 611, - 'threequarters': 834, - 'Scedilla': 667, - 'lcaron': 400, - 'Kcommaaccent': 722, - 'Lacute': 611, - 'trademark': 1000, - 'edotaccent': 556, - 'Igrave': 278, - 'Imacron': 278, - 'Lcaron': 611, - 'onehalf': 834, - 'lessequal': 549, - 'ocircumflex': 611, - 'ntilde': 611, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 556, - 'gbreve': 611, - 'onequarter': 834, - 'Scaron': 667, - 'Scommaaccent': 667, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 611, - 'Ccaron': 722, - 'ugrave': 611, - 'radical': 549, - 'Dcaron': 722, - 'rcommaaccent': 389, - 'Ntilde': 722, - 'otilde': 611, - 'Rcommaaccent': 722, - 'Lcommaaccent': 611, - 'Atilde': 722, - 'Aogonek': 722, - 'Aring': 722, - 'Otilde': 778, - 'zdotaccent': 500, - 'Ecaron': 667, - 'Iogonek': 278, - 'kcommaaccent': 556, - 'minus': 584, - 'Icircumflex': 278, - 'ncaron': 611, - 'tcommaaccent': 333, - 'logicalnot': 584, - 'odieresis': 611, - 'udieresis': 611, - 'notequal': 549, - 'gcommaaccent': 611, - 'eth': 611, - 'zcaron': 500, - 'ncommaaccent': 611, - 'onesuperior': 333, - 'imacron': 278, - 'Euro': 556 - }, - 'Helvetica-Oblique' : { - 'space': 278, - 'exclam': 278, - 'quotedbl': 355, - 'numbersign': 556, - 'dollar': 556, - 'percent': 889, - 'ampersand': 667, - 'quoteright': 222, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 389, - 'plus': 584, - 'comma': 278, - 'hyphen': 333, - 'period': 278, - 'slash': 278, - 'zero': 556, - 'one': 556, - 'two': 556, - 'three': 556, - 'four': 556, - 'five': 556, - 'six': 556, - 'seven': 556, - 'eight': 556, - 'nine': 556, - 'colon': 278, - 'semicolon': 278, - 'less': 584, - 'equal': 584, - 'greater': 584, - 'question': 556, - 'at': 1015, - 'A': 667, - 'B': 667, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 722, - 'I': 278, - 'J': 500, - 'K': 667, - 'L': 556, - 'M': 833, - 'N': 722, - 'O': 778, - 'P': 667, - 'Q': 778, - 'R': 722, - 'S': 667, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 944, - 'X': 667, - 'Y': 667, - 'Z': 611, - 'bracketleft': 278, - 'backslash': 278, - 'bracketright': 278, - 'asciicircum': 469, - 'underscore': 556, - 'quoteleft': 222, - 'a': 556, - 'b': 556, - 'c': 500, - 'd': 556, - 'e': 556, - 'f': 278, - 'g': 556, - 'h': 556, - 'i': 222, - 'j': 222, - 'k': 500, - 'l': 222, - 'm': 833, - 'n': 556, - 'o': 556, - 'p': 556, - 'q': 556, - 'r': 333, - 's': 500, - 't': 278, - 'u': 556, - 'v': 500, - 'w': 722, - 'x': 500, - 'y': 500, - 'z': 500, - 'braceleft': 334, - 'bar': 260, - 'braceright': 334, - 'asciitilde': 584, - 'exclamdown': 333, - 'cent': 556, - 'sterling': 556, - 'fraction': 167, - 'yen': 556, - 'florin': 556, - 'section': 556, - 'currency': 556, - 'quotesingle': 191, - 'quotedblleft': 333, - 'guillemotleft': 556, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 500, - 'fl': 500, - 'endash': 556, - 'dagger': 556, - 'daggerdbl': 556, - 'periodcentered': 278, - 'paragraph': 537, - 'bullet': 350, - 'quotesinglbase': 222, - 'quotedblbase': 333, - 'quotedblright': 333, - 'guillemotright': 556, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 611, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 370, - 'Lslash': 556, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 365, - 'ae': 889, - 'dotlessi': 278, - 'lslash': 222, - 'oslash': 611, - 'oe': 944, - 'germandbls': 611, - 'Idieresis': 278, - 'eacute': 556, - 'abreve': 556, - 'uhungarumlaut': 556, - 'ecaron': 556, - 'Ydieresis': 667, - 'divide': 584, - 'Yacute': 667, - 'Acircumflex': 667, - 'aacute': 556, - 'Ucircumflex': 722, - 'yacute': 500, - 'scommaaccent': 500, - 'ecircumflex': 556, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 556, - 'Uacute': 722, - 'uogonek': 556, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 737, - 'Emacron': 667, - 'ccaron': 500, - 'aring': 556, - 'Ncommaaccent': 722, - 'lacute': 222, - 'agrave': 556, - 'Tcommaaccent': 611, - 'Cacute': 722, - 'atilde': 556, - 'Edotaccent': 667, - 'scaron': 500, - 'scedilla': 500, - 'iacute': 278, - 'lozenge': 471, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 556, - 'acircumflex': 556, - 'Amacron': 667, - 'rcaron': 333, - 'ccedilla': 500, - 'Zdotaccent': 611, - 'Thorn': 667, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 667, - 'dcaron': 643, - 'Umacron': 722, - 'uring': 556, - 'threesuperior': 333, - 'Ograve': 778, - 'Agrave': 667, - 'Abreve': 667, - 'multiply': 584, - 'uacute': 556, - 'Tcaron': 611, - 'partialdiff': 476, - 'ydieresis': 500, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 556, - 'edieresis': 556, - 'cacute': 500, - 'nacute': 556, - 'umacron': 556, - 'Ncaron': 722, - 'Iacute': 278, - 'plusminus': 584, - 'brokenbar': 260, - 'registered': 737, - 'Gbreve': 778, - 'Idotaccent': 278, - 'summation': 600, - 'Egrave': 667, - 'racute': 333, - 'omacron': 556, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 222, - 'tcaron': 317, - 'eogonek': 556, - 'Uogonek': 722, - 'Aacute': 667, - 'Adieresis': 667, - 'egrave': 556, - 'zacute': 500, - 'iogonek': 222, - 'Oacute': 778, - 'oacute': 556, - 'amacron': 556, - 'sacute': 500, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 556, - 'twosuperior': 333, - 'Odieresis': 778, - 'mu': 556, - 'igrave': 278, - 'ohungarumlaut': 556, - 'Eogonek': 667, - 'dcroat': 556, - 'threequarters': 834, - 'Scedilla': 667, - 'lcaron': 299, - 'Kcommaaccent': 667, - 'Lacute': 556, - 'trademark': 1000, - 'edotaccent': 556, - 'Igrave': 278, - 'Imacron': 278, - 'Lcaron': 556, - 'onehalf': 834, - 'lessequal': 549, - 'ocircumflex': 556, - 'ntilde': 556, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 556, - 'gbreve': 556, - 'onequarter': 834, - 'Scaron': 667, - 'Scommaaccent': 667, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 556, - 'Ccaron': 722, - 'ugrave': 556, - 'radical': 453, - 'Dcaron': 722, - 'rcommaaccent': 333, - 'Ntilde': 722, - 'otilde': 556, - 'Rcommaaccent': 722, - 'Lcommaaccent': 556, - 'Atilde': 667, - 'Aogonek': 667, - 'Aring': 667, - 'Otilde': 778, - 'zdotaccent': 500, - 'Ecaron': 667, - 'Iogonek': 278, - 'kcommaaccent': 500, - 'minus': 584, - 'Icircumflex': 278, - 'ncaron': 556, - 'tcommaaccent': 278, - 'logicalnot': 584, - 'odieresis': 556, - 'udieresis': 556, - 'notequal': 549, - 'gcommaaccent': 556, - 'eth': 556, - 'zcaron': 500, - 'ncommaaccent': 556, - 'onesuperior': 333, - 'imacron': 278, - 'Euro': 556 - }, - 'Symbol': { - 'space': 250, - 'exclam': 333, - 'universal': 713, - 'numbersign': 500, - 'existential': 549, - 'percent': 833, - 'ampersand': 778, - 'suchthat': 439, - 'parenleft': 333, - 'parenright': 333, - 'asteriskmath': 500, - 'plus': 549, - 'comma': 250, - 'minus': 549, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 278, - 'semicolon': 278, - 'less': 549, - 'equal': 549, - 'greater': 549, - 'question': 444, - 'congruent': 549, - 'Alpha': 722, - 'Beta': 667, - 'Chi': 722, - 'Delta': 612, - 'Epsilon': 611, - 'Phi': 763, - 'Gamma': 603, - 'Eta': 722, - 'Iota': 333, - 'theta1': 631, - 'Kappa': 722, - 'Lambda': 686, - 'Mu': 889, - 'Nu': 722, - 'Omicron': 722, - 'Pi': 768, - 'Theta': 741, - 'Rho': 556, - 'Sigma': 592, - 'Tau': 611, - 'Upsilon': 690, - 'sigma1': 439, - 'Omega': 768, - 'Xi': 645, - 'Psi': 795, - 'Zeta': 611, - 'bracketleft': 333, - 'therefore': 863, - 'bracketright': 333, - 'perpendicular': 658, - 'underscore': 500, - 'radicalex': 500, - 'alpha': 631, - 'beta': 549, - 'chi': 549, - 'delta': 494, - 'epsilon': 439, - 'phi': 521, - 'gamma': 411, - 'eta': 603, - 'iota': 329, - 'phi1': 603, - 'kappa': 549, - 'lambda': 549, - 'mu': 576, - 'nu': 521, - 'omicron': 549, - 'pi': 549, - 'theta': 521, - 'rho': 549, - 'sigma': 603, - 'tau': 439, - 'upsilon': 576, - 'omega1': 713, - 'omega': 686, - 'xi': 493, - 'psi': 686, - 'zeta': 494, - 'braceleft': 480, - 'bar': 200, - 'braceright': 480, - 'similar': 549, - 'Euro': 750, - 'Upsilon1': 620, - 'minute': 247, - 'lessequal': 549, - 'fraction': 167, - 'infinity': 713, - 'florin': 500, - 'club': 753, - 'diamond': 753, - 'heart': 753, - 'spade': 753, - 'arrowboth': 1042, - 'arrowleft': 987, - 'arrowup': 603, - 'arrowright': 987, - 'arrowdown': 603, - 'degree': 400, - 'plusminus': 549, - 'second': 411, - 'greaterequal': 549, - 'multiply': 549, - 'proportional': 713, - 'partialdiff': 494, - 'bullet': 460, - 'divide': 549, - 'notequal': 549, - 'equivalence': 549, - 'approxequal': 549, - 'ellipsis': 1000, - 'arrowvertex': 603, - 'arrowhorizex': 1000, - 'carriagereturn': 658, - 'aleph': 823, - 'Ifraktur': 686, - 'Rfraktur': 795, - 'weierstrass': 987, - 'circlemultiply': 768, - 'circleplus': 768, - 'emptyset': 823, - 'intersection': 768, - 'union': 768, - 'propersuperset': 713, - 'reflexsuperset': 713, - 'notsubset': 713, - 'propersubset': 713, - 'reflexsubset': 713, - 'element': 713, - 'notelement': 713, - 'angle': 768, - 'gradient': 713, - 'registerserif': 790, - 'copyrightserif': 790, - 'trademarkserif': 890, - 'product': 823, - 'radical': 549, - 'dotmath': 250, - 'logicalnot': 713, - 'logicaland': 603, - 'logicalor': 603, - 'arrowdblboth': 1042, - 'arrowdblleft': 987, - 'arrowdblup': 603, - 'arrowdblright': 987, - 'arrowdbldown': 603, - 'lozenge': 494, - 'angleleft': 329, - 'registersans': 790, - 'copyrightsans': 790, - 'trademarksans': 786, - 'summation': 713, - 'parenlefttp': 384, - 'parenleftex': 384, - 'parenleftbt': 384, - 'bracketlefttp': 384, - 'bracketleftex': 384, - 'bracketleftbt': 384, - 'bracelefttp': 494, - 'braceleftmid': 494, - 'braceleftbt': 494, - 'braceex': 494, - 'angleright': 329, - 'integral': 274, - 'integraltp': 686, - 'integralex': 686, - 'integralbt': 686, - 'parenrighttp': 384, - 'parenrightex': 384, - 'parenrightbt': 384, - 'bracketrighttp': 384, - 'bracketrightex': 384, - 'bracketrightbt': 384, - 'bracerighttp': 494, - 'bracerightmid': 494, - 'bracerightbt': 494, - 'apple': 790 - }, - 'Times-Roman': { - 'space': 250, - 'exclam': 333, - 'quotedbl': 408, - 'numbersign': 500, - 'dollar': 500, - 'percent': 833, - 'ampersand': 778, - 'quoteright': 333, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 500, - 'plus': 564, - 'comma': 250, - 'hyphen': 333, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 278, - 'semicolon': 278, - 'less': 564, - 'equal': 564, - 'greater': 564, - 'question': 444, - 'at': 921, - 'A': 722, - 'B': 667, - 'C': 667, - 'D': 722, - 'E': 611, - 'F': 556, - 'G': 722, - 'H': 722, - 'I': 333, - 'J': 389, - 'K': 722, - 'L': 611, - 'M': 889, - 'N': 722, - 'O': 722, - 'P': 556, - 'Q': 722, - 'R': 667, - 'S': 556, - 'T': 611, - 'U': 722, - 'V': 722, - 'W': 944, - 'X': 722, - 'Y': 722, - 'Z': 611, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 469, - 'underscore': 500, - 'quoteleft': 333, - 'a': 444, - 'b': 500, - 'c': 444, - 'd': 500, - 'e': 444, - 'f': 333, - 'g': 500, - 'h': 500, - 'i': 278, - 'j': 278, - 'k': 500, - 'l': 278, - 'm': 778, - 'n': 500, - 'o': 500, - 'p': 500, - 'q': 500, - 'r': 333, - 's': 389, - 't': 278, - 'u': 500, - 'v': 500, - 'w': 722, - 'x': 500, - 'y': 500, - 'z': 444, - 'braceleft': 480, - 'bar': 200, - 'braceright': 480, - 'asciitilde': 541, - 'exclamdown': 333, - 'cent': 500, - 'sterling': 500, - 'fraction': 167, - 'yen': 500, - 'florin': 500, - 'section': 500, - 'currency': 500, - 'quotesingle': 180, - 'quotedblleft': 444, - 'guillemotleft': 500, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 556, - 'fl': 556, - 'endash': 500, - 'dagger': 500, - 'daggerdbl': 500, - 'periodcentered': 250, - 'paragraph': 453, - 'bullet': 350, - 'quotesinglbase': 333, - 'quotedblbase': 444, - 'quotedblright': 444, - 'guillemotright': 500, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 444, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 889, - 'ordfeminine': 276, - 'Lslash': 611, - 'Oslash': 722, - 'OE': 889, - 'ordmasculine': 310, - 'ae': 667, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 500, - 'oe': 722, - 'germandbls': 500, - 'Idieresis': 333, - 'eacute': 444, - 'abreve': 444, - 'uhungarumlaut': 500, - 'ecaron': 444, - 'Ydieresis': 722, - 'divide': 564, - 'Yacute': 722, - 'Acircumflex': 722, - 'aacute': 444, - 'Ucircumflex': 722, - 'yacute': 500, - 'scommaaccent': 389, - 'ecircumflex': 444, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 444, - 'Uacute': 722, - 'uogonek': 500, - 'Edieresis': 611, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 760, - 'Emacron': 611, - 'ccaron': 444, - 'aring': 444, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 444, - 'Tcommaaccent': 611, - 'Cacute': 667, - 'atilde': 444, - 'Edotaccent': 611, - 'scaron': 389, - 'scedilla': 389, - 'iacute': 278, - 'lozenge': 471, - 'Rcaron': 667, - 'Gcommaaccent': 722, - 'ucircumflex': 500, - 'acircumflex': 444, - 'Amacron': 722, - 'rcaron': 333, - 'ccedilla': 444, - 'Zdotaccent': 611, - 'Thorn': 556, - 'Omacron': 722, - 'Racute': 667, - 'Sacute': 556, - 'dcaron': 588, - 'Umacron': 722, - 'uring': 500, - 'threesuperior': 300, - 'Ograve': 722, - 'Agrave': 722, - 'Abreve': 722, - 'multiply': 564, - 'uacute': 500, - 'Tcaron': 611, - 'partialdiff': 476, - 'ydieresis': 500, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 611, - 'adieresis': 444, - 'edieresis': 444, - 'cacute': 444, - 'nacute': 500, - 'umacron': 500, - 'Ncaron': 722, - 'Iacute': 333, - 'plusminus': 564, - 'brokenbar': 200, - 'registered': 760, - 'Gbreve': 722, - 'Idotaccent': 333, - 'summation': 600, - 'Egrave': 611, - 'racute': 333, - 'omacron': 500, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 667, - 'lcommaaccent': 278, - 'tcaron': 326, - 'eogonek': 444, - 'Uogonek': 722, - 'Aacute': 722, - 'Adieresis': 722, - 'egrave': 444, - 'zacute': 444, - 'iogonek': 278, - 'Oacute': 722, - 'oacute': 500, - 'amacron': 444, - 'sacute': 389, - 'idieresis': 278, - 'Ocircumflex': 722, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 500, - 'twosuperior': 300, - 'Odieresis': 722, - 'mu': 500, - 'igrave': 278, - 'ohungarumlaut': 500, - 'Eogonek': 611, - 'dcroat': 500, - 'threequarters': 750, - 'Scedilla': 556, - 'lcaron': 344, - 'Kcommaaccent': 722, - 'Lacute': 611, - 'trademark': 980, - 'edotaccent': 444, - 'Igrave': 333, - 'Imacron': 333, - 'Lcaron': 611, - 'onehalf': 750, - 'lessequal': 549, - 'ocircumflex': 500, - 'ntilde': 500, - 'Uhungarumlaut': 722, - 'Eacute': 611, - 'emacron': 444, - 'gbreve': 500, - 'onequarter': 750, - 'Scaron': 556, - 'Scommaaccent': 556, - 'Ohungarumlaut': 722, - 'degree': 400, - 'ograve': 500, - 'Ccaron': 667, - 'ugrave': 500, - 'radical': 453, - 'Dcaron': 722, - 'rcommaaccent': 333, - 'Ntilde': 722, - 'otilde': 500, - 'Rcommaaccent': 667, - 'Lcommaaccent': 611, - 'Atilde': 722, - 'Aogonek': 722, - 'Aring': 722, - 'Otilde': 722, - 'zdotaccent': 444, - 'Ecaron': 611, - 'Iogonek': 333, - 'kcommaaccent': 500, - 'minus': 564, - 'Icircumflex': 333, - 'ncaron': 500, - 'tcommaaccent': 278, - 'logicalnot': 564, - 'odieresis': 500, - 'udieresis': 500, - 'notequal': 549, - 'gcommaaccent': 500, - 'eth': 500, - 'zcaron': 444, - 'ncommaaccent': 500, - 'onesuperior': 300, - 'imacron': 278, - 'Euro': 500 - }, - 'Times-Bold': { - 'space': 250, - 'exclam': 333, - 'quotedbl': 555, - 'numbersign': 500, - 'dollar': 500, - 'percent': 1000, - 'ampersand': 833, - 'quoteright': 333, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 500, - 'plus': 570, - 'comma': 250, - 'hyphen': 333, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 333, - 'semicolon': 333, - 'less': 570, - 'equal': 570, - 'greater': 570, - 'question': 500, - 'at': 930, - 'A': 722, - 'B': 667, - 'C': 722, - 'D': 722, - 'E': 667, - 'F': 611, - 'G': 778, - 'H': 778, - 'I': 389, - 'J': 500, - 'K': 778, - 'L': 667, - 'M': 944, - 'N': 722, - 'O': 778, - 'P': 611, - 'Q': 778, - 'R': 722, - 'S': 556, - 'T': 667, - 'U': 722, - 'V': 722, - 'W': 1000, - 'X': 722, - 'Y': 722, - 'Z': 667, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 581, - 'underscore': 500, - 'quoteleft': 333, - 'a': 500, - 'b': 556, - 'c': 444, - 'd': 556, - 'e': 444, - 'f': 333, - 'g': 500, - 'h': 556, - 'i': 278, - 'j': 333, - 'k': 556, - 'l': 278, - 'm': 833, - 'n': 556, - 'o': 500, - 'p': 556, - 'q': 556, - 'r': 444, - 's': 389, - 't': 333, - 'u': 556, - 'v': 500, - 'w': 722, - 'x': 500, - 'y': 500, - 'z': 444, - 'braceleft': 394, - 'bar': 220, - 'braceright': 394, - 'asciitilde': 520, - 'exclamdown': 333, - 'cent': 500, - 'sterling': 500, - 'fraction': 167, - 'yen': 500, - 'florin': 500, - 'section': 500, - 'currency': 500, - 'quotesingle': 278, - 'quotedblleft': 500, - 'guillemotleft': 500, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 556, - 'fl': 556, - 'endash': 500, - 'dagger': 500, - 'daggerdbl': 500, - 'periodcentered': 250, - 'paragraph': 540, - 'bullet': 350, - 'quotesinglbase': 333, - 'quotedblbase': 500, - 'quotedblright': 500, - 'guillemotright': 500, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 500, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 1000, - 'ordfeminine': 300, - 'Lslash': 667, - 'Oslash': 778, - 'OE': 1000, - 'ordmasculine': 330, - 'ae': 722, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 500, - 'oe': 722, - 'germandbls': 556, - 'Idieresis': 389, - 'eacute': 444, - 'abreve': 500, - 'uhungarumlaut': 556, - 'ecaron': 444, - 'Ydieresis': 722, - 'divide': 570, - 'Yacute': 722, - 'Acircumflex': 722, - 'aacute': 500, - 'Ucircumflex': 722, - 'yacute': 500, - 'scommaaccent': 389, - 'ecircumflex': 444, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 500, - 'Uacute': 722, - 'uogonek': 556, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 747, - 'Emacron': 667, - 'ccaron': 444, - 'aring': 500, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 500, - 'Tcommaaccent': 667, - 'Cacute': 722, - 'atilde': 500, - 'Edotaccent': 667, - 'scaron': 389, - 'scedilla': 389, - 'iacute': 278, - 'lozenge': 494, - 'Rcaron': 722, - 'Gcommaaccent': 778, - 'ucircumflex': 556, - 'acircumflex': 500, - 'Amacron': 722, - 'rcaron': 444, - 'ccedilla': 444, - 'Zdotaccent': 667, - 'Thorn': 611, - 'Omacron': 778, - 'Racute': 722, - 'Sacute': 556, - 'dcaron': 672, - 'Umacron': 722, - 'uring': 556, - 'threesuperior': 300, - 'Ograve': 778, - 'Agrave': 722, - 'Abreve': 722, - 'multiply': 570, - 'uacute': 556, - 'Tcaron': 667, - 'partialdiff': 494, - 'ydieresis': 500, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 500, - 'edieresis': 444, - 'cacute': 444, - 'nacute': 556, - 'umacron': 556, - 'Ncaron': 722, - 'Iacute': 389, - 'plusminus': 570, - 'brokenbar': 220, - 'registered': 747, - 'Gbreve': 778, - 'Idotaccent': 389, - 'summation': 600, - 'Egrave': 667, - 'racute': 444, - 'omacron': 500, - 'Zacute': 667, - 'Zcaron': 667, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 722, - 'lcommaaccent': 278, - 'tcaron': 416, - 'eogonek': 444, - 'Uogonek': 722, - 'Aacute': 722, - 'Adieresis': 722, - 'egrave': 444, - 'zacute': 444, - 'iogonek': 278, - 'Oacute': 778, - 'oacute': 500, - 'amacron': 500, - 'sacute': 389, - 'idieresis': 278, - 'Ocircumflex': 778, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 556, - 'twosuperior': 300, - 'Odieresis': 778, - 'mu': 556, - 'igrave': 278, - 'ohungarumlaut': 500, - 'Eogonek': 667, - 'dcroat': 556, - 'threequarters': 750, - 'Scedilla': 556, - 'lcaron': 394, - 'Kcommaaccent': 778, - 'Lacute': 667, - 'trademark': 1000, - 'edotaccent': 444, - 'Igrave': 389, - 'Imacron': 389, - 'Lcaron': 667, - 'onehalf': 750, - 'lessequal': 549, - 'ocircumflex': 500, - 'ntilde': 556, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 444, - 'gbreve': 500, - 'onequarter': 750, - 'Scaron': 556, - 'Scommaaccent': 556, - 'Ohungarumlaut': 778, - 'degree': 400, - 'ograve': 500, - 'Ccaron': 722, - 'ugrave': 556, - 'radical': 549, - 'Dcaron': 722, - 'rcommaaccent': 444, - 'Ntilde': 722, - 'otilde': 500, - 'Rcommaaccent': 722, - 'Lcommaaccent': 667, - 'Atilde': 722, - 'Aogonek': 722, - 'Aring': 722, - 'Otilde': 778, - 'zdotaccent': 444, - 'Ecaron': 667, - 'Iogonek': 389, - 'kcommaaccent': 556, - 'minus': 570, - 'Icircumflex': 389, - 'ncaron': 556, - 'tcommaaccent': 333, - 'logicalnot': 570, - 'odieresis': 500, - 'udieresis': 556, - 'notequal': 549, - 'gcommaaccent': 500, - 'eth': 500, - 'zcaron': 444, - 'ncommaaccent': 556, - 'onesuperior': 300, - 'imacron': 278, - 'Euro': 500 - }, - 'Times-BoldItalic': { - 'space': 250, - 'exclam': 389, - 'quotedbl': 555, - 'numbersign': 500, - 'dollar': 500, - 'percent': 833, - 'ampersand': 778, - 'quoteright': 333, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 500, - 'plus': 570, - 'comma': 250, - 'hyphen': 333, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 333, - 'semicolon': 333, - 'less': 570, - 'equal': 570, - 'greater': 570, - 'question': 500, - 'at': 832, - 'A': 667, - 'B': 667, - 'C': 667, - 'D': 722, - 'E': 667, - 'F': 667, - 'G': 722, - 'H': 778, - 'I': 389, - 'J': 500, - 'K': 667, - 'L': 611, - 'M': 889, - 'N': 722, - 'O': 722, - 'P': 611, - 'Q': 722, - 'R': 667, - 'S': 556, - 'T': 611, - 'U': 722, - 'V': 667, - 'W': 889, - 'X': 667, - 'Y': 611, - 'Z': 611, - 'bracketleft': 333, - 'backslash': 278, - 'bracketright': 333, - 'asciicircum': 570, - 'underscore': 500, - 'quoteleft': 333, - 'a': 500, - 'b': 500, - 'c': 444, - 'd': 500, - 'e': 444, - 'f': 333, - 'g': 500, - 'h': 556, - 'i': 278, - 'j': 278, - 'k': 500, - 'l': 278, - 'm': 778, - 'n': 556, - 'o': 500, - 'p': 500, - 'q': 500, - 'r': 389, - 's': 389, - 't': 278, - 'u': 556, - 'v': 444, - 'w': 667, - 'x': 500, - 'y': 444, - 'z': 389, - 'braceleft': 348, - 'bar': 220, - 'braceright': 348, - 'asciitilde': 570, - 'exclamdown': 389, - 'cent': 500, - 'sterling': 500, - 'fraction': 167, - 'yen': 500, - 'florin': 500, - 'section': 500, - 'currency': 500, - 'quotesingle': 278, - 'quotedblleft': 500, - 'guillemotleft': 500, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 556, - 'fl': 556, - 'endash': 500, - 'dagger': 500, - 'daggerdbl': 500, - 'periodcentered': 250, - 'paragraph': 500, - 'bullet': 350, - 'quotesinglbase': 333, - 'quotedblbase': 500, - 'quotedblright': 500, - 'guillemotright': 500, - 'ellipsis': 1000, - 'perthousand': 1000, - 'questiondown': 500, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 1000, - 'AE': 944, - 'ordfeminine': 266, - 'Lslash': 611, - 'Oslash': 722, - 'OE': 944, - 'ordmasculine': 300, - 'ae': 722, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 500, - 'oe': 722, - 'germandbls': 500, - 'Idieresis': 389, - 'eacute': 444, - 'abreve': 500, - 'uhungarumlaut': 556, - 'ecaron': 444, - 'Ydieresis': 611, - 'divide': 570, - 'Yacute': 611, - 'Acircumflex': 667, - 'aacute': 500, - 'Ucircumflex': 722, - 'yacute': 444, - 'scommaaccent': 389, - 'ecircumflex': 444, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 500, - 'Uacute': 722, - 'uogonek': 556, - 'Edieresis': 667, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 747, - 'Emacron': 667, - 'ccaron': 444, - 'aring': 500, - 'Ncommaaccent': 722, - 'lacute': 278, - 'agrave': 500, - 'Tcommaaccent': 611, - 'Cacute': 667, - 'atilde': 500, - 'Edotaccent': 667, - 'scaron': 389, - 'scedilla': 389, - 'iacute': 278, - 'lozenge': 494, - 'Rcaron': 667, - 'Gcommaaccent': 722, - 'ucircumflex': 556, - 'acircumflex': 500, - 'Amacron': 667, - 'rcaron': 389, - 'ccedilla': 444, - 'Zdotaccent': 611, - 'Thorn': 611, - 'Omacron': 722, - 'Racute': 667, - 'Sacute': 556, - 'dcaron': 608, - 'Umacron': 722, - 'uring': 556, - 'threesuperior': 300, - 'Ograve': 722, - 'Agrave': 667, - 'Abreve': 667, - 'multiply': 570, - 'uacute': 556, - 'Tcaron': 611, - 'partialdiff': 494, - 'ydieresis': 444, - 'Nacute': 722, - 'icircumflex': 278, - 'Ecircumflex': 667, - 'adieresis': 500, - 'edieresis': 444, - 'cacute': 444, - 'nacute': 556, - 'umacron': 556, - 'Ncaron': 722, - 'Iacute': 389, - 'plusminus': 570, - 'brokenbar': 220, - 'registered': 747, - 'Gbreve': 722, - 'Idotaccent': 389, - 'summation': 600, - 'Egrave': 667, - 'racute': 389, - 'omacron': 500, - 'Zacute': 611, - 'Zcaron': 611, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 667, - 'lcommaaccent': 278, - 'tcaron': 366, - 'eogonek': 444, - 'Uogonek': 722, - 'Aacute': 667, - 'Adieresis': 667, - 'egrave': 444, - 'zacute': 389, - 'iogonek': 278, - 'Oacute': 722, - 'oacute': 500, - 'amacron': 500, - 'sacute': 389, - 'idieresis': 278, - 'Ocircumflex': 722, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 500, - 'twosuperior': 300, - 'Odieresis': 722, - 'mu': 576, - 'igrave': 278, - 'ohungarumlaut': 500, - 'Eogonek': 667, - 'dcroat': 500, - 'threequarters': 750, - 'Scedilla': 556, - 'lcaron': 382, - 'Kcommaaccent': 667, - 'Lacute': 611, - 'trademark': 1000, - 'edotaccent': 444, - 'Igrave': 389, - 'Imacron': 389, - 'Lcaron': 611, - 'onehalf': 750, - 'lessequal': 549, - 'ocircumflex': 500, - 'ntilde': 556, - 'Uhungarumlaut': 722, - 'Eacute': 667, - 'emacron': 444, - 'gbreve': 500, - 'onequarter': 750, - 'Scaron': 556, - 'Scommaaccent': 556, - 'Ohungarumlaut': 722, - 'degree': 400, - 'ograve': 500, - 'Ccaron': 667, - 'ugrave': 556, - 'radical': 549, - 'Dcaron': 722, - 'rcommaaccent': 389, - 'Ntilde': 722, - 'otilde': 500, - 'Rcommaaccent': 667, - 'Lcommaaccent': 611, - 'Atilde': 667, - 'Aogonek': 667, - 'Aring': 667, - 'Otilde': 722, - 'zdotaccent': 389, - 'Ecaron': 667, - 'Iogonek': 389, - 'kcommaaccent': 500, - 'minus': 606, - 'Icircumflex': 389, - 'ncaron': 556, - 'tcommaaccent': 278, - 'logicalnot': 606, - 'odieresis': 500, - 'udieresis': 556, - 'notequal': 549, - 'gcommaaccent': 500, - 'eth': 500, - 'zcaron': 389, - 'ncommaaccent': 556, - 'onesuperior': 300, - 'imacron': 278, - 'Euro': 500 - }, - 'Times-Italic': { - 'space': 250, - 'exclam': 333, - 'quotedbl': 420, - 'numbersign': 500, - 'dollar': 500, - 'percent': 833, - 'ampersand': 778, - 'quoteright': 333, - 'parenleft': 333, - 'parenright': 333, - 'asterisk': 500, - 'plus': 675, - 'comma': 250, - 'hyphen': 333, - 'period': 250, - 'slash': 278, - 'zero': 500, - 'one': 500, - 'two': 500, - 'three': 500, - 'four': 500, - 'five': 500, - 'six': 500, - 'seven': 500, - 'eight': 500, - 'nine': 500, - 'colon': 333, - 'semicolon': 333, - 'less': 675, - 'equal': 675, - 'greater': 675, - 'question': 500, - 'at': 920, - 'A': 611, - 'B': 611, - 'C': 667, - 'D': 722, - 'E': 611, - 'F': 611, - 'G': 722, - 'H': 722, - 'I': 333, - 'J': 444, - 'K': 667, - 'L': 556, - 'M': 833, - 'N': 667, - 'O': 722, - 'P': 611, - 'Q': 722, - 'R': 611, - 'S': 500, - 'T': 556, - 'U': 722, - 'V': 611, - 'W': 833, - 'X': 611, - 'Y': 556, - 'Z': 556, - 'bracketleft': 389, - 'backslash': 278, - 'bracketright': 389, - 'asciicircum': 422, - 'underscore': 500, - 'quoteleft': 333, - 'a': 500, - 'b': 500, - 'c': 444, - 'd': 500, - 'e': 444, - 'f': 278, - 'g': 500, - 'h': 500, - 'i': 278, - 'j': 278, - 'k': 444, - 'l': 278, - 'm': 722, - 'n': 500, - 'o': 500, - 'p': 500, - 'q': 500, - 'r': 389, - 's': 389, - 't': 278, - 'u': 500, - 'v': 444, - 'w': 667, - 'x': 444, - 'y': 444, - 'z': 389, - 'braceleft': 400, - 'bar': 275, - 'braceright': 400, - 'asciitilde': 541, - 'exclamdown': 389, - 'cent': 500, - 'sterling': 500, - 'fraction': 167, - 'yen': 500, - 'florin': 500, - 'section': 500, - 'currency': 500, - 'quotesingle': 214, - 'quotedblleft': 556, - 'guillemotleft': 500, - 'guilsinglleft': 333, - 'guilsinglright': 333, - 'fi': 500, - 'fl': 500, - 'endash': 500, - 'dagger': 500, - 'daggerdbl': 500, - 'periodcentered': 250, - 'paragraph': 523, - 'bullet': 350, - 'quotesinglbase': 333, - 'quotedblbase': 556, - 'quotedblright': 556, - 'guillemotright': 500, - 'ellipsis': 889, - 'perthousand': 1000, - 'questiondown': 500, - 'grave': 333, - 'acute': 333, - 'circumflex': 333, - 'tilde': 333, - 'macron': 333, - 'breve': 333, - 'dotaccent': 333, - 'dieresis': 333, - 'ring': 333, - 'cedilla': 333, - 'hungarumlaut': 333, - 'ogonek': 333, - 'caron': 333, - 'emdash': 889, - 'AE': 889, - 'ordfeminine': 276, - 'Lslash': 556, - 'Oslash': 722, - 'OE': 944, - 'ordmasculine': 310, - 'ae': 667, - 'dotlessi': 278, - 'lslash': 278, - 'oslash': 500, - 'oe': 667, - 'germandbls': 500, - 'Idieresis': 333, - 'eacute': 444, - 'abreve': 500, - 'uhungarumlaut': 500, - 'ecaron': 444, - 'Ydieresis': 556, - 'divide': 675, - 'Yacute': 556, - 'Acircumflex': 611, - 'aacute': 500, - 'Ucircumflex': 722, - 'yacute': 444, - 'scommaaccent': 389, - 'ecircumflex': 444, - 'Uring': 722, - 'Udieresis': 722, - 'aogonek': 500, - 'Uacute': 722, - 'uogonek': 500, - 'Edieresis': 611, - 'Dcroat': 722, - 'commaaccent': 250, - 'copyright': 760, - 'Emacron': 611, - 'ccaron': 444, - 'aring': 500, - 'Ncommaaccent': 667, - 'lacute': 278, - 'agrave': 500, - 'Tcommaaccent': 556, - 'Cacute': 667, - 'atilde': 500, - 'Edotaccent': 611, - 'scaron': 389, - 'scedilla': 389, - 'iacute': 278, - 'lozenge': 471, - 'Rcaron': 611, - 'Gcommaaccent': 722, - 'ucircumflex': 500, - 'acircumflex': 500, - 'Amacron': 611, - 'rcaron': 389, - 'ccedilla': 444, - 'Zdotaccent': 556, - 'Thorn': 611, - 'Omacron': 722, - 'Racute': 611, - 'Sacute': 500, - 'dcaron': 544, - 'Umacron': 722, - 'uring': 500, - 'threesuperior': 300, - 'Ograve': 722, - 'Agrave': 611, - 'Abreve': 611, - 'multiply': 675, - 'uacute': 500, - 'Tcaron': 556, - 'partialdiff': 476, - 'ydieresis': 444, - 'Nacute': 667, - 'icircumflex': 278, - 'Ecircumflex': 611, - 'adieresis': 500, - 'edieresis': 444, - 'cacute': 444, - 'nacute': 500, - 'umacron': 500, - 'Ncaron': 667, - 'Iacute': 333, - 'plusminus': 675, - 'brokenbar': 275, - 'registered': 760, - 'Gbreve': 722, - 'Idotaccent': 333, - 'summation': 600, - 'Egrave': 611, - 'racute': 389, - 'omacron': 500, - 'Zacute': 556, - 'Zcaron': 556, - 'greaterequal': 549, - 'Eth': 722, - 'Ccedilla': 667, - 'lcommaaccent': 278, - 'tcaron': 300, - 'eogonek': 444, - 'Uogonek': 722, - 'Aacute': 611, - 'Adieresis': 611, - 'egrave': 444, - 'zacute': 389, - 'iogonek': 278, - 'Oacute': 722, - 'oacute': 500, - 'amacron': 500, - 'sacute': 389, - 'idieresis': 278, - 'Ocircumflex': 722, - 'Ugrave': 722, - 'Delta': 612, - 'thorn': 500, - 'twosuperior': 300, - 'Odieresis': 722, - 'mu': 500, - 'igrave': 278, - 'ohungarumlaut': 500, - 'Eogonek': 611, - 'dcroat': 500, - 'threequarters': 750, - 'Scedilla': 500, - 'lcaron': 300, - 'Kcommaaccent': 667, - 'Lacute': 556, - 'trademark': 980, - 'edotaccent': 444, - 'Igrave': 333, - 'Imacron': 333, - 'Lcaron': 611, - 'onehalf': 750, - 'lessequal': 549, - 'ocircumflex': 500, - 'ntilde': 500, - 'Uhungarumlaut': 722, - 'Eacute': 611, - 'emacron': 444, - 'gbreve': 500, - 'onequarter': 750, - 'Scaron': 500, - 'Scommaaccent': 500, - 'Ohungarumlaut': 722, - 'degree': 400, - 'ograve': 500, - 'Ccaron': 667, - 'ugrave': 500, - 'radical': 453, - 'Dcaron': 722, - 'rcommaaccent': 389, - 'Ntilde': 667, - 'otilde': 500, - 'Rcommaaccent': 611, - 'Lcommaaccent': 556, - 'Atilde': 611, - 'Aogonek': 611, - 'Aring': 611, - 'Otilde': 722, - 'zdotaccent': 389, - 'Ecaron': 611, - 'Iogonek': 333, - 'kcommaaccent': 444, - 'minus': 675, - 'Icircumflex': 333, - 'ncaron': 500, - 'tcommaaccent': 278, - 'logicalnot': 675, - 'odieresis': 500, - 'udieresis': 500, - 'notequal': 549, - 'gcommaaccent': 500, - 'eth': 500, - 'zcaron': 389, - 'ncommaaccent': 500, - 'onesuperior': 300, - 'imacron': 278, - 'Euro': 500 - }, - 'ZapfDingbats': { - 'space': 278, - 'a1': 974, - 'a2': 961, - 'a202': 974, - 'a3': 980, - 'a4': 719, - 'a5': 789, - 'a119': 790, - 'a118': 791, - 'a117': 690, - 'a11': 960, - 'a12': 939, - 'a13': 549, - 'a14': 855, - 'a15': 911, - 'a16': 933, - 'a105': 911, - 'a17': 945, - 'a18': 974, - 'a19': 755, - 'a20': 846, - 'a21': 762, - 'a22': 761, - 'a23': 571, - 'a24': 677, - 'a25': 763, - 'a26': 760, - 'a27': 759, - 'a28': 754, - 'a6': 494, - 'a7': 552, - 'a8': 537, - 'a9': 577, - 'a10': 692, - 'a29': 786, - 'a30': 788, - 'a31': 788, - 'a32': 790, - 'a33': 793, - 'a34': 794, - 'a35': 816, - 'a36': 823, - 'a37': 789, - 'a38': 841, - 'a39': 823, - 'a40': 833, - 'a41': 816, - 'a42': 831, - 'a43': 923, - 'a44': 744, - 'a45': 723, - 'a46': 749, - 'a47': 790, - 'a48': 792, - 'a49': 695, - 'a50': 776, - 'a51': 768, - 'a52': 792, - 'a53': 759, - 'a54': 707, - 'a55': 708, - 'a56': 682, - 'a57': 701, - 'a58': 826, - 'a59': 815, - 'a60': 789, - 'a61': 789, - 'a62': 707, - 'a63': 687, - 'a64': 696, - 'a65': 689, - 'a66': 786, - 'a67': 787, - 'a68': 713, - 'a69': 791, - 'a70': 785, - 'a71': 791, - 'a72': 873, - 'a73': 761, - 'a74': 762, - 'a203': 762, - 'a75': 759, - 'a204': 759, - 'a76': 892, - 'a77': 892, - 'a78': 788, - 'a79': 784, - 'a81': 438, - 'a82': 138, - 'a83': 277, - 'a84': 415, - 'a97': 392, - 'a98': 392, - 'a99': 668, - 'a100': 668, - 'a89': 390, - 'a90': 390, - 'a93': 317, - 'a94': 317, - 'a91': 276, - 'a92': 276, - 'a205': 509, - 'a85': 509, - 'a206': 410, - 'a86': 410, - 'a87': 234, - 'a88': 234, - 'a95': 334, - 'a96': 334, - 'a101': 732, - 'a102': 544, - 'a103': 544, - 'a104': 910, - 'a106': 667, - 'a107': 760, - 'a108': 760, - 'a112': 776, - 'a111': 595, - 'a110': 694, - 'a109': 626, - 'a120': 788, - 'a121': 788, - 'a122': 788, - 'a123': 788, - 'a124': 788, - 'a125': 788, - 'a126': 788, - 'a127': 788, - 'a128': 788, - 'a129': 788, - 'a130': 788, - 'a131': 788, - 'a132': 788, - 'a133': 788, - 'a134': 788, - 'a135': 788, - 'a136': 788, - 'a137': 788, - 'a138': 788, - 'a139': 788, - 'a140': 788, - 'a141': 788, - 'a142': 788, - 'a143': 788, - 'a144': 788, - 'a145': 788, - 'a146': 788, - 'a147': 788, - 'a148': 788, - 'a149': 788, - 'a150': 788, - 'a151': 788, - 'a152': 788, - 'a153': 788, - 'a154': 788, - 'a155': 788, - 'a156': 788, - 'a157': 788, - 'a158': 788, - 'a159': 788, - 'a160': 894, - 'a161': 838, - 'a163': 1016, - 'a164': 458, - 'a196': 748, - 'a165': 924, - 'a192': 748, - 'a166': 918, - 'a167': 927, - 'a168': 928, - 'a169': 928, - 'a170': 834, - 'a171': 873, - 'a172': 828, - 'a173': 924, - 'a162': 924, - 'a174': 917, - 'a175': 930, - 'a176': 931, - 'a177': 463, - 'a178': 883, - 'a179': 836, - 'a193': 836, - 'a180': 867, - 'a199': 867, - 'a181': 696, - 'a200': 696, - 'a182': 874, - 'a201': 874, - 'a183': 760, - 'a184': 946, - 'a197': 771, - 'a185': 865, - 'a194': 771, - 'a198': 888, - 'a186': 967, - 'a195': 888, - 'a187': 831, - 'a188': 873, - 'a189': 927, - 'a190': 970, - 'a191': 918 - } -}; - - -var EOF = {}; - -function isEOF(v) { - return (v === EOF); -} - -var MAX_LENGTH_TO_CACHE = 1000; - -var Parser = (function ParserClosure() { - function Parser(lexer, allowStreams, xref) { - this.lexer = lexer; - this.allowStreams = allowStreams; - this.xref = xref; - this.imageCache = {}; - this.refill(); - } - - Parser.prototype = { - refill: function Parser_refill() { - this.buf1 = this.lexer.getObj(); - this.buf2 = this.lexer.getObj(); - }, - shift: function Parser_shift() { - if (isCmd(this.buf2, 'ID')) { - this.buf1 = this.buf2; - this.buf2 = null; - } else { - this.buf1 = this.buf2; - this.buf2 = this.lexer.getObj(); - } - }, - tryShift: function Parser_tryShift() { - try { - this.shift(); - return true; - } catch (e) { - if (e instanceof MissingDataException) { - throw e; - } - // Upon failure, the caller should reset this.lexer.pos to a known good - // state and call this.shift() twice to reset the buffers. - return false; - } - }, - getObj: function Parser_getObj(cipherTransform) { - var buf1 = this.buf1; - this.shift(); - - if (buf1 instanceof Cmd) { - switch (buf1.cmd) { - case 'BI': // inline image - return this.makeInlineImage(cipherTransform); - case '[': // array - var array = []; - while (!isCmd(this.buf1, ']') && !isEOF(this.buf1)) { - array.push(this.getObj(cipherTransform)); - } - if (isEOF(this.buf1)) { - error('End of file inside array'); - } - this.shift(); - return array; - case '<<': // dictionary or stream - var dict = new Dict(this.xref); - while (!isCmd(this.buf1, '>>') && !isEOF(this.buf1)) { - if (!isName(this.buf1)) { - info('Malformed dictionary: key must be a name object'); - this.shift(); - continue; - } - - var key = this.buf1.name; - this.shift(); - if (isEOF(this.buf1)) { - break; - } - dict.set(key, this.getObj(cipherTransform)); - } - if (isEOF(this.buf1)) { - error('End of file inside dictionary'); - } - - // Stream objects are not allowed inside content streams or - // object streams. - if (isCmd(this.buf2, 'stream')) { - return (this.allowStreams ? - this.makeStream(dict, cipherTransform) : dict); - } - this.shift(); - return dict; - default: // simple object - return buf1; - } - } - - if (isInt(buf1)) { // indirect reference or integer - var num = buf1; - if (isInt(this.buf1) && isCmd(this.buf2, 'R')) { - var ref = new Ref(num, this.buf1); - this.shift(); - this.shift(); - return ref; - } - return num; - } - - if (isString(buf1)) { // string - var str = buf1; - if (cipherTransform) { - str = cipherTransform.decryptString(str); - } - return str; - } - - // simple object - return buf1; - }, - /** - * Find the end of the stream by searching for the /EI\s/. - * @returns {number} The inline stream length. - */ - findDefaultInlineStreamEnd: - function Parser_findDefaultInlineStreamEnd(stream) { - var E = 0x45, I = 0x49, SPACE = 0x20, LF = 0xA, CR = 0xD; - var startPos = stream.pos, state = 0, ch, i, n, followingBytes; - while ((ch = stream.getByte()) !== -1) { - if (state === 0) { - state = (ch === E) ? 1 : 0; - } else if (state === 1) { - state = (ch === I) ? 2 : 0; - } else { - assert(state === 2); - if (ch === SPACE || ch === LF || ch === CR) { - // Let's check the next five bytes are ASCII... just be sure. - n = 5; - followingBytes = stream.peekBytes(n); - for (i = 0; i < n; i++) { - ch = followingBytes[i]; - if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) { - // Not a LF, CR, SPACE or any visible ASCII character, i.e. - // it's binary stuff. Resetting the state. - state = 0; - break; - } - } - if (state === 2) { - break; // Finished! - } - } else { - state = 0; - } - } - } - return ((stream.pos - 4) - startPos); - }, - /** - * Find the EOI (end-of-image) marker 0xFFD9 of the stream. - * @returns {number} The inline stream length. - */ - findDCTDecodeInlineStreamEnd: - function Parser_findDCTDecodeInlineStreamEnd(stream) { - var startPos = stream.pos, foundEOI = false, b, markerLength, length; - while ((b = stream.getByte()) !== -1) { - if (b !== 0xFF) { // Not a valid marker. - continue; - } - switch (stream.getByte()) { - case 0x00: // Byte stuffing. - // 0xFF00 appears to be a very common byte sequence in JPEG images. - break; - - case 0xFF: // Fill byte. - // Avoid skipping a valid marker, resetting the stream position. - stream.skip(-1); - break; - - case 0xD9: // EOI - foundEOI = true; - break; - - case 0xC0: // SOF0 - case 0xC1: // SOF1 - case 0xC2: // SOF2 - case 0xC3: // SOF3 - - case 0xC5: // SOF5 - case 0xC6: // SOF6 - case 0xC7: // SOF7 - - case 0xC9: // SOF9 - case 0xCA: // SOF10 - case 0xCB: // SOF11 - - case 0xCD: // SOF13 - case 0xCE: // SOF14 - case 0xCF: // SOF15 - - case 0xC4: // DHT - case 0xCC: // DAC - - case 0xDA: // SOS - case 0xDB: // DQT - case 0xDC: // DNL - case 0xDD: // DRI - case 0xDE: // DHP - case 0xDF: // EXP - - case 0xE0: // APP0 - case 0xE1: // APP1 - case 0xE2: // APP2 - case 0xE3: // APP3 - case 0xE4: // APP4 - case 0xE5: // APP5 - case 0xE6: // APP6 - case 0xE7: // APP7 - case 0xE8: // APP8 - case 0xE9: // APP9 - case 0xEA: // APP10 - case 0xEB: // APP11 - case 0xEC: // APP12 - case 0xED: // APP13 - case 0xEE: // APP14 - case 0xEF: // APP15 - - case 0xFE: // COM - // The marker should be followed by the length of the segment. - markerLength = stream.getUint16(); - if (markerLength > 2) { - // |markerLength| contains the byte length of the marker segment, - // including its own length (2 bytes) and excluding the marker. - stream.skip(markerLength - 2); // Jump to the next marker. - } else { - // The marker length is invalid, resetting the stream position. - stream.skip(-2); - } - break; - } - if (foundEOI) { - break; - } - } - length = stream.pos - startPos; - if (b === -1) { - warn('Inline DCTDecode image stream: ' + - 'EOI marker not found, searching for /EI/ instead.'); - stream.skip(-length); // Reset the stream position. - return this.findDefaultInlineStreamEnd(stream); - } - this.inlineStreamSkipEI(stream); - return length; - }, - /** - * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream. - * @returns {number} The inline stream length. - */ - findASCII85DecodeInlineStreamEnd: - function Parser_findASCII85DecodeInlineStreamEnd(stream) { - var TILDE = 0x7E, GT = 0x3E; - var startPos = stream.pos, ch, length; - while ((ch = stream.getByte()) !== -1) { - if (ch === TILDE && stream.peekByte() === GT) { - stream.skip(); - break; - } - } - length = stream.pos - startPos; - if (ch === -1) { - warn('Inline ASCII85Decode image stream: ' + - 'EOD marker not found, searching for /EI/ instead.'); - stream.skip(-length); // Reset the stream position. - return this.findDefaultInlineStreamEnd(stream); - } - this.inlineStreamSkipEI(stream); - return length; - }, - /** - * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream. - * @returns {number} The inline stream length. - */ - findASCIIHexDecodeInlineStreamEnd: - function Parser_findASCIIHexDecodeInlineStreamEnd(stream) { - var GT = 0x3E; - var startPos = stream.pos, ch, length; - while ((ch = stream.getByte()) !== -1) { - if (ch === GT) { - break; - } - } - length = stream.pos - startPos; - if (ch === -1) { - warn('Inline ASCIIHexDecode image stream: ' + - 'EOD marker not found, searching for /EI/ instead.'); - stream.skip(-length); // Reset the stream position. - return this.findDefaultInlineStreamEnd(stream); - } - this.inlineStreamSkipEI(stream); - return length; - }, - /** - * Skip over the /EI/ for streams where we search for an EOD marker. - */ - inlineStreamSkipEI: function Parser_inlineStreamSkipEI(stream) { - var E = 0x45, I = 0x49; - var state = 0, ch; - while ((ch = stream.getByte()) !== -1) { - if (state === 0) { - state = (ch === E) ? 1 : 0; - } else if (state === 1) { - state = (ch === I) ? 2 : 0; - } else if (state === 2) { - break; - } - } - }, - makeInlineImage: function Parser_makeInlineImage(cipherTransform) { - var lexer = this.lexer; - var stream = lexer.stream; - - // Parse dictionary. - var dict = new Dict(this.xref); - while (!isCmd(this.buf1, 'ID') && !isEOF(this.buf1)) { - if (!isName(this.buf1)) { - error('Dictionary key must be a name object'); - } - var key = this.buf1.name; - this.shift(); - if (isEOF(this.buf1)) { - break; - } - dict.set(key, this.getObj(cipherTransform)); - } - - // Extract the name of the first (i.e. the current) image filter. - var filter = dict.get('Filter', 'F'), filterName; - if (isName(filter)) { - filterName = filter.name; - } else if (isArray(filter) && isName(filter[0])) { - filterName = filter[0].name; - } - - // Parse image stream. - var startPos = stream.pos, length, i, ii; - if (filterName === 'DCTDecode' || filterName === 'DCT') { - length = this.findDCTDecodeInlineStreamEnd(stream); - } else if (filterName === 'ASCII85Decide' || filterName === 'A85') { - length = this.findASCII85DecodeInlineStreamEnd(stream); - } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') { - length = this.findASCIIHexDecodeInlineStreamEnd(stream); - } else { - length = this.findDefaultInlineStreamEnd(stream); - } - var imageStream = stream.makeSubStream(startPos, length, dict); - - // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their - // adler32 checksum. - var adler32; - if (length < MAX_LENGTH_TO_CACHE) { - var imageBytes = imageStream.getBytes(); - imageStream.reset(); - - var a = 1; - var b = 0; - for (i = 0, ii = imageBytes.length; i < ii; ++i) { - // No modulo required in the loop if imageBytes.length < 5552. - a += imageBytes[i] & 0xff; - b += a; - } - adler32 = ((b % 65521) << 16) | (a % 65521); - - if (this.imageCache.adler32 === adler32) { - this.buf2 = Cmd.get('EI'); - this.shift(); - - this.imageCache[adler32].reset(); - return this.imageCache[adler32]; - } - } - - if (cipherTransform) { - imageStream = cipherTransform.createStream(imageStream, length); - } - - imageStream = this.filter(imageStream, dict, length); - imageStream.dict = dict; - if (adler32 !== undefined) { - imageStream.cacheKey = 'inline_' + length + '_' + adler32; - this.imageCache[adler32] = imageStream; - } - - this.buf2 = Cmd.get('EI'); - this.shift(); - - return imageStream; - }, - makeStream: function Parser_makeStream(dict, cipherTransform) { - var lexer = this.lexer; - var stream = lexer.stream; - - // get stream start position - lexer.skipToNextLine(); - var pos = stream.pos - 1; - - // get length - var length = dict.get('Length'); - if (!isInt(length)) { - info('Bad ' + length + ' attribute in stream'); - length = 0; - } - - // skip over the stream data - stream.pos = pos + length; - lexer.nextChar(); - - // Shift '>>' and check whether the new object marks the end of the stream - if (this.tryShift() && isCmd(this.buf2, 'endstream')) { - this.shift(); // 'stream' - } else { - // bad stream length, scanning for endstream - stream.pos = pos; - var SCAN_BLOCK_SIZE = 2048; - var ENDSTREAM_SIGNATURE_LENGTH = 9; - var ENDSTREAM_SIGNATURE = [0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6D]; - var skipped = 0, found = false, i, j; - while (stream.pos < stream.end) { - var scanBytes = stream.peekBytes(SCAN_BLOCK_SIZE); - var scanLength = scanBytes.length - ENDSTREAM_SIGNATURE_LENGTH; - if (scanLength <= 0) { - break; - } - found = false; - for (i = 0, j = 0; i < scanLength; i++) { - var b = scanBytes[i]; - if (b !== ENDSTREAM_SIGNATURE[j]) { - i -= j; - j = 0; - } else { - j++; - if (j >= ENDSTREAM_SIGNATURE_LENGTH) { - i++; - found = true; - break; - } - } - } - if (found) { - skipped += i - ENDSTREAM_SIGNATURE_LENGTH; - stream.pos += i - ENDSTREAM_SIGNATURE_LENGTH; - break; - } - skipped += scanLength; - stream.pos += scanLength; - } - if (!found) { - error('Missing endstream'); - } - length = skipped; - - lexer.nextChar(); - this.shift(); - this.shift(); - } - this.shift(); // 'endstream' - - stream = stream.makeSubStream(pos, length, dict); - if (cipherTransform) { - stream = cipherTransform.createStream(stream, length); - } - stream = this.filter(stream, dict, length); - stream.dict = dict; - return stream; - }, - filter: function Parser_filter(stream, dict, length) { - var filter = dict.get('Filter', 'F'); - var params = dict.get('DecodeParms', 'DP'); - if (isName(filter)) { - return this.makeFilter(stream, filter.name, length, params); - } - - var maybeLength = length; - if (isArray(filter)) { - var filterArray = filter; - var paramsArray = params; - for (var i = 0, ii = filterArray.length; i < ii; ++i) { - filter = filterArray[i]; - if (!isName(filter)) { - error('Bad filter name: ' + filter); - } - - params = null; - if (isArray(paramsArray) && (i in paramsArray)) { - params = paramsArray[i]; - } - stream = this.makeFilter(stream, filter.name, maybeLength, params); - // after the first stream the length variable is invalid - maybeLength = null; - } - } - return stream; - }, - makeFilter: function Parser_makeFilter(stream, name, maybeLength, params) { - if (stream.dict.get('Length') === 0 && !maybeLength) { - warn('Empty "' + name + '" stream.'); - return new NullStream(stream); - } - try { - if (params && this.xref) { - params = this.xref.fetchIfRef(params); - } - var xrefStreamStats = this.xref.stats.streamTypes; - if (name === 'FlateDecode' || name === 'Fl') { - xrefStreamStats[StreamType.FLATE] = true; - if (params) { - return new PredictorStream(new FlateStream(stream, maybeLength), - maybeLength, params); - } - return new FlateStream(stream, maybeLength); - } - if (name === 'LZWDecode' || name === 'LZW') { - xrefStreamStats[StreamType.LZW] = true; - var earlyChange = 1; - if (params) { - if (params.has('EarlyChange')) { - earlyChange = params.get('EarlyChange'); - } - return new PredictorStream( - new LZWStream(stream, maybeLength, earlyChange), - maybeLength, params); - } - return new LZWStream(stream, maybeLength, earlyChange); - } - if (name === 'DCTDecode' || name === 'DCT') { - xrefStreamStats[StreamType.DCT] = true; - return new JpegStream(stream, maybeLength, stream.dict, this.xref); - } - if (name === 'JPXDecode' || name === 'JPX') { - xrefStreamStats[StreamType.JPX] = true; - return new JpxStream(stream, maybeLength, stream.dict); - } - if (name === 'ASCII85Decode' || name === 'A85') { - xrefStreamStats[StreamType.A85] = true; - return new Ascii85Stream(stream, maybeLength); - } - if (name === 'ASCIIHexDecode' || name === 'AHx') { - xrefStreamStats[StreamType.AHX] = true; - return new AsciiHexStream(stream, maybeLength); - } - if (name === 'CCITTFaxDecode' || name === 'CCF') { - xrefStreamStats[StreamType.CCF] = true; - return new CCITTFaxStream(stream, maybeLength, params); - } - if (name === 'RunLengthDecode' || name === 'RL') { - xrefStreamStats[StreamType.RL] = true; - return new RunLengthStream(stream, maybeLength); - } - if (name === 'JBIG2Decode') { - xrefStreamStats[StreamType.JBIG] = true; - return new Jbig2Stream(stream, maybeLength, stream.dict); - } - warn('filter "' + name + '" not supported yet'); - return stream; - } catch (ex) { - if (ex instanceof MissingDataException) { - throw ex; - } - warn('Invalid stream: \"' + ex + '\"'); - return new NullStream(stream); - } - } - }; - - return Parser; -})(); - -var Lexer = (function LexerClosure() { - function Lexer(stream, knownCommands) { - this.stream = stream; - this.nextChar(); - - // While lexing, we build up many strings one char at a time. Using += for - // this can result in lots of garbage strings. It's better to build an - // array of single-char strings and then join() them together at the end. - // And reusing a single array (i.e. |this.strBuf|) over and over for this - // purpose uses less memory than using a new array for each string. - this.strBuf = []; - - // The PDFs might have "glued" commands with other commands, operands or - // literals, e.g. "q1". The knownCommands is a dictionary of the valid - // commands and their prefixes. The prefixes are built the following way: - // if there a command that is a prefix of the other valid command or - // literal (e.g. 'f' and 'false') the following prefixes must be included, - // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no - // other commands or literals as a prefix. The knowCommands is optional. - this.knownCommands = knownCommands; - } - - Lexer.isSpace = function Lexer_isSpace(ch) { - // Space is one of the following characters: SPACE, TAB, CR or LF. - return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A); - }; - - // A '1' in this array means the character is white space. A '1' or - // '2' means the character ends a name or command. - var specialChars = [ - 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x - 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx - ]; - - function toHexDigit(ch) { - if (ch >= 0x30 && ch <= 0x39) { // '0'-'9' - return ch & 0x0F; - } - if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) { - // 'A'-'F', 'a'-'f' - return (ch & 0x0F) + 9; - } - return -1; - } - - Lexer.prototype = { - nextChar: function Lexer_nextChar() { - return (this.currentChar = this.stream.getByte()); - }, - peekChar: function Lexer_peekChar() { - return this.stream.peekByte(); - }, - getNumber: function Lexer_getNumber() { - var ch = this.currentChar; - var eNotation = false; - var divideBy = 0; // different from 0 if it's a floating point value - var sign = 1; - - if (ch === 0x2D) { // '-' - sign = -1; - ch = this.nextChar(); - - if (ch === 0x2D) { // '-' - // Ignore double negative (this is consistent with Adobe Reader). - ch = this.nextChar(); - } - } else if (ch === 0x2B) { // '+' - ch = this.nextChar(); - } - if (ch === 0x2E) { // '.' - divideBy = 10; - ch = this.nextChar(); - } - if (ch < 0x30 || ch > 0x39) { // '0' - '9' - error('Invalid number: ' + String.fromCharCode(ch)); - return 0; - } - - var baseValue = ch - 0x30; // '0' - var powerValue = 0; - var powerValueSign = 1; - - while ((ch = this.nextChar()) >= 0) { - if (0x30 <= ch && ch <= 0x39) { // '0' - '9' - var currentDigit = ch - 0x30; // '0' - if (eNotation) { // We are after an 'e' or 'E' - powerValue = powerValue * 10 + currentDigit; - } else { - if (divideBy !== 0) { // We are after a point - divideBy *= 10; - } - baseValue = baseValue * 10 + currentDigit; - } - } else if (ch === 0x2E) { // '.' - if (divideBy === 0) { - divideBy = 1; - } else { - // A number can have only one '.' - break; - } - } else if (ch === 0x2D) { // '-' - // ignore minus signs in the middle of numbers to match - // Adobe's behavior - warn('Badly formated number'); - } else if (ch === 0x45 || ch === 0x65) { // 'E', 'e' - // 'E' can be either a scientific notation or the beginning of a new - // operator - ch = this.peekChar(); - if (ch === 0x2B || ch === 0x2D) { // '+', '-' - powerValueSign = (ch === 0x2D) ? -1 : 1; - this.nextChar(); // Consume the sign character - } else if (ch < 0x30 || ch > 0x39) { // '0' - '9' - // The 'E' must be the beginning of a new operator - break; - } - eNotation = true; - } else { - // the last character doesn't belong to us - break; - } - } - - if (divideBy !== 0) { - baseValue /= divideBy; - } - if (eNotation) { - baseValue *= Math.pow(10, powerValueSign * powerValue); - } - return sign * baseValue; - }, - getString: function Lexer_getString() { - var numParen = 1; - var done = false; - var strBuf = this.strBuf; - strBuf.length = 0; - - var ch = this.nextChar(); - while (true) { - var charBuffered = false; - switch (ch | 0) { - case -1: - warn('Unterminated string'); - done = true; - break; - case 0x28: // '(' - ++numParen; - strBuf.push('('); - break; - case 0x29: // ')' - if (--numParen === 0) { - this.nextChar(); // consume strings ')' - done = true; - } else { - strBuf.push(')'); - } - break; - case 0x5C: // '\\' - ch = this.nextChar(); - switch (ch) { - case -1: - warn('Unterminated string'); - done = true; - break; - case 0x6E: // 'n' - strBuf.push('\n'); - break; - case 0x72: // 'r' - strBuf.push('\r'); - break; - case 0x74: // 't' - strBuf.push('\t'); - break; - case 0x62: // 'b' - strBuf.push('\b'); - break; - case 0x66: // 'f' - strBuf.push('\f'); - break; - case 0x5C: // '\' - case 0x28: // '(' - case 0x29: // ')' - strBuf.push(String.fromCharCode(ch)); - break; - case 0x30: case 0x31: case 0x32: case 0x33: // '0'-'3' - case 0x34: case 0x35: case 0x36: case 0x37: // '4'-'7' - var x = ch & 0x0F; - ch = this.nextChar(); - charBuffered = true; - if (ch >= 0x30 && ch <= 0x37) { // '0'-'7' - x = (x << 3) + (ch & 0x0F); - ch = this.nextChar(); - if (ch >= 0x30 && ch <= 0x37) { // '0'-'7' - charBuffered = false; - x = (x << 3) + (ch & 0x0F); - } - } - strBuf.push(String.fromCharCode(x)); - break; - case 0x0D: // CR - if (this.peekChar() === 0x0A) { // LF - this.nextChar(); - } - break; - case 0x0A: // LF - break; - default: - strBuf.push(String.fromCharCode(ch)); - break; - } - break; - default: - strBuf.push(String.fromCharCode(ch)); - break; - } - if (done) { - break; - } - if (!charBuffered) { - ch = this.nextChar(); - } - } - return strBuf.join(''); - }, - getName: function Lexer_getName() { - var ch; - var strBuf = this.strBuf; - strBuf.length = 0; - while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { - if (ch === 0x23) { // '#' - ch = this.nextChar(); - var x = toHexDigit(ch); - if (x !== -1) { - var x2 = toHexDigit(this.nextChar()); - if (x2 === -1) { - error('Illegal digit in hex char in name: ' + x2); - } - strBuf.push(String.fromCharCode((x << 4) | x2)); - } else { - strBuf.push('#', String.fromCharCode(ch)); - } - } else { - strBuf.push(String.fromCharCode(ch)); - } - } - if (strBuf.length > 127) { - warn('name token is longer than allowed by the spec: ' + strBuf.length); - } - return Name.get(strBuf.join('')); - }, - getHexString: function Lexer_getHexString() { - var strBuf = this.strBuf; - strBuf.length = 0; - var ch = this.currentChar; - var isFirstHex = true; - var firstDigit; - var secondDigit; - while (true) { - if (ch < 0) { - warn('Unterminated hex string'); - break; - } else if (ch === 0x3E) { // '>' - this.nextChar(); - break; - } else if (specialChars[ch] === 1) { - ch = this.nextChar(); - continue; - } else { - if (isFirstHex) { - firstDigit = toHexDigit(ch); - if (firstDigit === -1) { - warn('Ignoring invalid character "' + ch + '" in hex string'); - ch = this.nextChar(); - continue; - } - } else { - secondDigit = toHexDigit(ch); - if (secondDigit === -1) { - warn('Ignoring invalid character "' + ch + '" in hex string'); - ch = this.nextChar(); - continue; - } - strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit)); - } - isFirstHex = !isFirstHex; - ch = this.nextChar(); - } - } - return strBuf.join(''); - }, - getObj: function Lexer_getObj() { - // skip whitespace and comments - var comment = false; - var ch = this.currentChar; - while (true) { - if (ch < 0) { - return EOF; - } - if (comment) { - if (ch === 0x0A || ch === 0x0D) { // LF, CR - comment = false; - } - } else if (ch === 0x25) { // '%' - comment = true; - } else if (specialChars[ch] !== 1) { - break; - } - ch = this.nextChar(); - } - - // start reading token - switch (ch | 0) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4' - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9' - case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.' - return this.getNumber(); - case 0x28: // '(' - return this.getString(); - case 0x2F: // '/' - return this.getName(); - // array punctuation - case 0x5B: // '[' - this.nextChar(); - return Cmd.get('['); - case 0x5D: // ']' - this.nextChar(); - return Cmd.get(']'); - // hex string or dict punctuation - case 0x3C: // '<' - ch = this.nextChar(); - if (ch === 0x3C) { - // dict punctuation - this.nextChar(); - return Cmd.get('<<'); - } - return this.getHexString(); - // dict punctuation - case 0x3E: // '>' - ch = this.nextChar(); - if (ch === 0x3E) { - this.nextChar(); - return Cmd.get('>>'); - } - return Cmd.get('>'); - case 0x7B: // '{' - this.nextChar(); - return Cmd.get('{'); - case 0x7D: // '}' - this.nextChar(); - return Cmd.get('}'); - case 0x29: // ')' - error('Illegal character: ' + ch); - break; - } - - // command - var str = String.fromCharCode(ch); - var knownCommands = this.knownCommands; - var knownCommandFound = knownCommands && knownCommands[str] !== undefined; - while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { - // stop if known command is found and next character does not make - // the str a command - var possibleCommand = str + String.fromCharCode(ch); - if (knownCommandFound && knownCommands[possibleCommand] === undefined) { - break; - } - if (str.length === 128) { - error('Command token too long: ' + str.length); - } - str = possibleCommand; - knownCommandFound = knownCommands && knownCommands[str] !== undefined; - } - if (str === 'true') { - return true; - } - if (str === 'false') { - return false; - } - if (str === 'null') { - return null; - } - return Cmd.get(str); - }, - skipToNextLine: function Lexer_skipToNextLine() { - var ch = this.currentChar; - while (ch >= 0) { - if (ch === 0x0D) { // CR - ch = this.nextChar(); - if (ch === 0x0A) { // LF - this.nextChar(); - } - break; - } else if (ch === 0x0A) { // LF - this.nextChar(); - break; - } - ch = this.nextChar(); - } - } - }; - - return Lexer; -})(); - -var Linearization = { - create: function LinearizationCreate(stream) { - function getInt(name, allowZeroValue) { - var obj = linDict.get(name); - if (isInt(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) { - return obj; - } - throw new Error('The "' + name + '" parameter in the linearization ' + - 'dictionary is invalid.'); - } - function getHints() { - var hints = linDict.get('H'), hintsLength, item; - if (isArray(hints) && - ((hintsLength = hints.length) === 2 || hintsLength === 4)) { - for (var index = 0; index < hintsLength; index++) { - if (!(isInt(item = hints[index]) && item > 0)) { - throw new Error('Hint (' + index + - ') in the linearization dictionary is invalid.'); - } - } - return hints; - } - throw new Error('Hint array in the linearization dictionary is invalid.'); - } - var parser = new Parser(new Lexer(stream), false, null); - var obj1 = parser.getObj(); - var obj2 = parser.getObj(); - var obj3 = parser.getObj(); - var linDict = parser.getObj(); - var obj, length; - if (!(isInt(obj1) && isInt(obj2) && isCmd(obj3, 'obj') && isDict(linDict) && - isNum(obj = linDict.get('Linearized')) && obj > 0)) { - return null; // No valid linearization dictionary found. - } else if ((length = getInt('L')) !== stream.length) { - throw new Error('The "L" parameter in the linearization dictionary ' + - 'does not equal the stream length.'); - } - return { - length: length, - hints: getHints(), - objectNumberFirst: getInt('O'), - endFirst: getInt('E'), - numPages: getInt('N'), - mainXRefEntriesOffset: getInt('T'), - pageFirst: (linDict.has('P') ? getInt('P', true) : 0) - }; - } -}; - - -var PostScriptParser = (function PostScriptParserClosure() { - function PostScriptParser(lexer) { - this.lexer = lexer; - this.operators = []; - this.token = null; - this.prev = null; - } - PostScriptParser.prototype = { - nextToken: function PostScriptParser_nextToken() { - this.prev = this.token; - this.token = this.lexer.getToken(); - }, - accept: function PostScriptParser_accept(type) { - if (this.token.type === type) { - this.nextToken(); - return true; - } - return false; - }, - expect: function PostScriptParser_expect(type) { - if (this.accept(type)) { - return true; - } - error('Unexpected symbol: found ' + this.token.type + ' expected ' + - type + '.'); - }, - parse: function PostScriptParser_parse() { - this.nextToken(); - this.expect(PostScriptTokenTypes.LBRACE); - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - return this.operators; - }, - parseBlock: function PostScriptParser_parseBlock() { - while (true) { - if (this.accept(PostScriptTokenTypes.NUMBER)) { - this.operators.push(this.prev.value); - } else if (this.accept(PostScriptTokenTypes.OPERATOR)) { - this.operators.push(this.prev.value); - } else if (this.accept(PostScriptTokenTypes.LBRACE)) { - this.parseCondition(); - } else { - return; - } - } - }, - parseCondition: function PostScriptParser_parseCondition() { - // Add two place holders that will be updated later - var conditionLocation = this.operators.length; - this.operators.push(null, null); - - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - if (this.accept(PostScriptTokenTypes.IF)) { - // The true block is right after the 'if' so it just falls through on - // true else it jumps and skips the true block. - this.operators[conditionLocation] = this.operators.length; - this.operators[conditionLocation + 1] = 'jz'; - } else if (this.accept(PostScriptTokenTypes.LBRACE)) { - var jumpLocation = this.operators.length; - this.operators.push(null, null); - var endOfTrue = this.operators.length; - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - this.expect(PostScriptTokenTypes.IFELSE); - // The jump is added at the end of the true block to skip the false - // block. - this.operators[jumpLocation] = this.operators.length; - this.operators[jumpLocation + 1] = 'j'; - - this.operators[conditionLocation] = endOfTrue; - this.operators[conditionLocation + 1] = 'jz'; - } else { - error('PS Function: error parsing conditional.'); - } - } - }; - return PostScriptParser; -})(); - -var PostScriptTokenTypes = { - LBRACE: 0, - RBRACE: 1, - NUMBER: 2, - OPERATOR: 3, - IF: 4, - IFELSE: 5 -}; - -var PostScriptToken = (function PostScriptTokenClosure() { - function PostScriptToken(type, value) { - this.type = type; - this.value = value; - } - - var opCache = {}; - - PostScriptToken.getOperator = function PostScriptToken_getOperator(op) { - var opValue = opCache[op]; - if (opValue) { - return opValue; - } - return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op); - }; - - PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE, - '{'); - PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE, - '}'); - PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF'); - PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE, - 'IFELSE'); - return PostScriptToken; -})(); - -var PostScriptLexer = (function PostScriptLexerClosure() { - function PostScriptLexer(stream) { - this.stream = stream; - this.nextChar(); - - this.strBuf = []; - } - PostScriptLexer.prototype = { - nextChar: function PostScriptLexer_nextChar() { - return (this.currentChar = this.stream.getByte()); - }, - getToken: function PostScriptLexer_getToken() { - var comment = false; - var ch = this.currentChar; - - // skip comments - while (true) { - if (ch < 0) { - return EOF; - } - - if (comment) { - if (ch === 0x0A || ch === 0x0D) { - comment = false; - } - } else if (ch === 0x25) { // '%' - comment = true; - } else if (!Lexer.isSpace(ch)) { - break; - } - ch = this.nextChar(); - } - switch (ch | 0) { - case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4' - case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9' - case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.' - return new PostScriptToken(PostScriptTokenTypes.NUMBER, - this.getNumber()); - case 0x7B: // '{' - this.nextChar(); - return PostScriptToken.LBRACE; - case 0x7D: // '}' - this.nextChar(); - return PostScriptToken.RBRACE; - } - // operator - var strBuf = this.strBuf; - strBuf.length = 0; - strBuf[0] = String.fromCharCode(ch); - - while ((ch = this.nextChar()) >= 0 && // and 'A'-'Z', 'a'-'z' - ((ch >= 0x41 && ch <= 0x5A) || (ch >= 0x61 && ch <= 0x7A))) { - strBuf.push(String.fromCharCode(ch)); - } - var str = strBuf.join(''); - switch (str.toLowerCase()) { - case 'if': - return PostScriptToken.IF; - case 'ifelse': - return PostScriptToken.IFELSE; - default: - return PostScriptToken.getOperator(str); - } - }, - getNumber: function PostScriptLexer_getNumber() { - var ch = this.currentChar; - var strBuf = this.strBuf; - strBuf.length = 0; - strBuf[0] = String.fromCharCode(ch); - - while ((ch = this.nextChar()) >= 0) { - if ((ch >= 0x30 && ch <= 0x39) || // '0'-'9' - ch === 0x2D || ch === 0x2E) { // '-', '.' - strBuf.push(String.fromCharCode(ch)); - } else { - break; - } - } - var value = parseFloat(strBuf.join('')); - if (isNaN(value)) { - error('Invalid floating point number: ' + value); - } - return value; - } - }; - return PostScriptLexer; -})(); - - -var Stream = (function StreamClosure() { - function Stream(arrayBuffer, start, length, dict) { - this.bytes = (arrayBuffer instanceof Uint8Array ? - arrayBuffer : new Uint8Array(arrayBuffer)); - this.start = start || 0; - this.pos = this.start; - this.end = (start + length) || this.bytes.length; - this.dict = dict; - } - - // required methods for a stream. if a particular stream does not - // implement these, an error should be thrown - Stream.prototype = { - get length() { - return this.end - this.start; - }, - get isEmpty() { - return this.length === 0; - }, - getByte: function Stream_getByte() { - if (this.pos >= this.end) { - return -1; - } - return this.bytes[this.pos++]; - }, - getUint16: function Stream_getUint16() { - var b0 = this.getByte(); - var b1 = this.getByte(); - if (b0 === -1 || b1 === -1) { - return -1; - } - return (b0 << 8) + b1; - }, - getInt32: function Stream_getInt32() { - var b0 = this.getByte(); - var b1 = this.getByte(); - var b2 = this.getByte(); - var b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - }, - // returns subarray of original buffer - // should only be read - getBytes: function Stream_getBytes(length) { - var bytes = this.bytes; - var pos = this.pos; - var strEnd = this.end; - - if (!length) { - return bytes.subarray(pos, strEnd); - } - var end = pos + length; - if (end > strEnd) { - end = strEnd; - } - this.pos = end; - return bytes.subarray(pos, end); - }, - peekByte: function Stream_peekByte() { - var peekedByte = this.getByte(); - this.pos--; - return peekedByte; - }, - peekBytes: function Stream_peekBytes(length) { - var bytes = this.getBytes(length); - this.pos -= bytes.length; - return bytes; - }, - skip: function Stream_skip(n) { - if (!n) { - n = 1; - } - this.pos += n; - }, - reset: function Stream_reset() { - this.pos = this.start; - }, - moveStart: function Stream_moveStart() { - this.start = this.pos; - }, - makeSubStream: function Stream_makeSubStream(start, length, dict) { - return new Stream(this.bytes.buffer, start, length, dict); - }, - isStream: true - }; - - return Stream; -})(); - -var StringStream = (function StringStreamClosure() { - function StringStream(str) { - var length = str.length; - var bytes = new Uint8Array(length); - for (var n = 0; n < length; ++n) { - bytes[n] = str.charCodeAt(n); - } - Stream.call(this, bytes); - } - - StringStream.prototype = Stream.prototype; - - return StringStream; -})(); - -// super class for the decoding streams -var DecodeStream = (function DecodeStreamClosure() { - // Lots of DecodeStreams are created whose buffers are never used. For these - // we share a single empty buffer. This is (a) space-efficient and (b) avoids - // having special cases that would be required if we used |null| for an empty - // buffer. - var emptyBuffer = new Uint8Array(0); - - function DecodeStream(maybeMinBufferLength) { - this.pos = 0; - this.bufferLength = 0; - this.eof = false; - this.buffer = emptyBuffer; - this.minBufferLength = 512; - if (maybeMinBufferLength) { - // Compute the first power of two that is as big as maybeMinBufferLength. - while (this.minBufferLength < maybeMinBufferLength) { - this.minBufferLength *= 2; - } - } - } - - DecodeStream.prototype = { - get isEmpty() { - while (!this.eof && this.bufferLength === 0) { - this.readBlock(); - } - return this.bufferLength === 0; - }, - ensureBuffer: function DecodeStream_ensureBuffer(requested) { - var buffer = this.buffer; - if (requested <= buffer.byteLength) { - return buffer; - } - var size = this.minBufferLength; - while (size < requested) { - size *= 2; - } - var buffer2 = new Uint8Array(size); - buffer2.set(buffer); - return (this.buffer = buffer2); - }, - getByte: function DecodeStream_getByte() { - var pos = this.pos; - while (this.bufferLength <= pos) { - if (this.eof) { - return -1; - } - this.readBlock(); - } - return this.buffer[this.pos++]; - }, - getUint16: function DecodeStream_getUint16() { - var b0 = this.getByte(); - var b1 = this.getByte(); - if (b0 === -1 || b1 === -1) { - return -1; - } - return (b0 << 8) + b1; - }, - getInt32: function DecodeStream_getInt32() { - var b0 = this.getByte(); - var b1 = this.getByte(); - var b2 = this.getByte(); - var b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - }, - getBytes: function DecodeStream_getBytes(length) { - var end, pos = this.pos; - - if (length) { - this.ensureBuffer(pos + length); - end = pos + length; - - while (!this.eof && this.bufferLength < end) { - this.readBlock(); - } - var bufEnd = this.bufferLength; - if (end > bufEnd) { - end = bufEnd; - } - } else { - while (!this.eof) { - this.readBlock(); - } - end = this.bufferLength; - } - - this.pos = end; - return this.buffer.subarray(pos, end); - }, - peekByte: function DecodeStream_peekByte() { - var peekedByte = this.getByte(); - this.pos--; - return peekedByte; - }, - peekBytes: function DecodeStream_peekBytes(length) { - var bytes = this.getBytes(length); - this.pos -= bytes.length; - return bytes; - }, - makeSubStream: function DecodeStream_makeSubStream(start, length, dict) { - var end = start + length; - while (this.bufferLength <= end && !this.eof) { - this.readBlock(); - } - return new Stream(this.buffer, start, length, dict); - }, - skip: function DecodeStream_skip(n) { - if (!n) { - n = 1; - } - this.pos += n; - }, - reset: function DecodeStream_reset() { - this.pos = 0; - }, - getBaseStreams: function DecodeStream_getBaseStreams() { - if (this.str && this.str.getBaseStreams) { - return this.str.getBaseStreams(); - } - return []; - } - }; - - return DecodeStream; -})(); - -var StreamsSequenceStream = (function StreamsSequenceStreamClosure() { - function StreamsSequenceStream(streams) { - this.streams = streams; - DecodeStream.call(this, /* maybeLength = */ null); - } - - StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype); - - StreamsSequenceStream.prototype.readBlock = - function streamSequenceStreamReadBlock() { - - var streams = this.streams; - if (streams.length === 0) { - this.eof = true; - return; - } - var stream = streams.shift(); - var chunk = stream.getBytes(); - var bufferLength = this.bufferLength; - var newLength = bufferLength + chunk.length; - var buffer = this.ensureBuffer(newLength); - buffer.set(chunk, bufferLength); - this.bufferLength = newLength; - }; - - StreamsSequenceStream.prototype.getBaseStreams = - function StreamsSequenceStream_getBaseStreams() { - - var baseStreams = []; - for (var i = 0, ii = this.streams.length; i < ii; i++) { - var stream = this.streams[i]; - if (stream.getBaseStreams) { - Util.appendToArray(baseStreams, stream.getBaseStreams()); - } - } - return baseStreams; - }; - - return StreamsSequenceStream; -})(); - -var FlateStream = (function FlateStreamClosure() { - var codeLenCodeMap = new Int32Array([ - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 - ]); - - var lengthDecode = new Int32Array([ - 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, - 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, - 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, - 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102 - ]); - - var distDecode = new Int32Array([ - 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, - 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, - 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, - 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001 - ]); - - var fixedLitCodeTab = [new Int32Array([ - 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, - 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, - 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, - 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, - 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, - 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, - 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, - 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, - 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, - 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, - 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, - 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, - 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, - 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, - 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, - 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, - 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, - 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, - 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, - 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, - 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, - 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, - 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, - 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, - 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, - 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, - 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, - 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, - 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, - 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, - 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, - 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, - 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, - 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, - 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, - 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, - 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, - 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, - 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, - 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, - 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, - 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, - 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, - 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, - 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, - 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, - 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, - 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, - 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, - 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, - 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, - 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, - 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, - 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, - 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, - 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, - 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, - 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, - 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, - 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, - 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, - 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, - 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, - 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff - ]), 9]; - - var fixedDistCodeTab = [new Int32Array([ - 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, - 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, - 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, - 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000 - ]), 5]; - - function FlateStream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - - var cmf = str.getByte(); - var flg = str.getByte(); - if (cmf === -1 || flg === -1) { - error('Invalid header in flate stream: ' + cmf + ', ' + flg); - } - if ((cmf & 0x0f) !== 0x08) { - error('Unknown compression method in flate stream: ' + cmf + ', ' + flg); - } - if ((((cmf << 8) + flg) % 31) !== 0) { - error('Bad FCHECK in flate stream: ' + cmf + ', ' + flg); - } - if (flg & 0x20) { - error('FDICT bit set in flate stream: ' + cmf + ', ' + flg); - } - - this.codeSize = 0; - this.codeBuf = 0; - - DecodeStream.call(this, maybeLength); - } - - FlateStream.prototype = Object.create(DecodeStream.prototype); - - FlateStream.prototype.getBits = function FlateStream_getBits(bits) { - var str = this.str; - var codeSize = this.codeSize; - var codeBuf = this.codeBuf; - - var b; - while (codeSize < bits) { - if ((b = str.getByte()) === -1) { - error('Bad encoding in flate stream'); - } - codeBuf |= b << codeSize; - codeSize += 8; - } - b = codeBuf & ((1 << bits) - 1); - this.codeBuf = codeBuf >> bits; - this.codeSize = codeSize -= bits; - - return b; - }; - - FlateStream.prototype.getCode = function FlateStream_getCode(table) { - var str = this.str; - var codes = table[0]; - var maxLen = table[1]; - var codeSize = this.codeSize; - var codeBuf = this.codeBuf; - - var b; - while (codeSize < maxLen) { - if ((b = str.getByte()) === -1) { - // premature end of stream. code might however still be valid. - // codeSize < codeLen check below guards against incomplete codeVal. - break; - } - codeBuf |= (b << codeSize); - codeSize += 8; - } - var code = codes[codeBuf & ((1 << maxLen) - 1)]; - var codeLen = code >> 16; - var codeVal = code & 0xffff; - if (codeLen < 1 || codeSize < codeLen) { - error('Bad encoding in flate stream'); - } - this.codeBuf = (codeBuf >> codeLen); - this.codeSize = (codeSize - codeLen); - return codeVal; - }; - - FlateStream.prototype.generateHuffmanTable = - function flateStreamGenerateHuffmanTable(lengths) { - var n = lengths.length; - - // find max code length - var maxLen = 0; - var i; - for (i = 0; i < n; ++i) { - if (lengths[i] > maxLen) { - maxLen = lengths[i]; - } - } - - // build the table - var size = 1 << maxLen; - var codes = new Int32Array(size); - for (var len = 1, code = 0, skip = 2; - len <= maxLen; - ++len, code <<= 1, skip <<= 1) { - for (var val = 0; val < n; ++val) { - if (lengths[val] === len) { - // bit-reverse the code - var code2 = 0; - var t = code; - for (i = 0; i < len; ++i) { - code2 = (code2 << 1) | (t & 1); - t >>= 1; - } - - // fill the table entries - for (i = code2; i < size; i += skip) { - codes[i] = (len << 16) | val; - } - ++code; - } - } - } - - return [codes, maxLen]; - }; - - FlateStream.prototype.readBlock = function FlateStream_readBlock() { - var buffer, len; - var str = this.str; - // read block header - var hdr = this.getBits(3); - if (hdr & 1) { - this.eof = true; - } - hdr >>= 1; - - if (hdr === 0) { // uncompressed block - var b; - - if ((b = str.getByte()) === -1) { - error('Bad block header in flate stream'); - } - var blockLen = b; - if ((b = str.getByte()) === -1) { - error('Bad block header in flate stream'); - } - blockLen |= (b << 8); - if ((b = str.getByte()) === -1) { - error('Bad block header in flate stream'); - } - var check = b; - if ((b = str.getByte()) === -1) { - error('Bad block header in flate stream'); - } - check |= (b << 8); - if (check !== (~blockLen & 0xffff) && - (blockLen !== 0 || check !== 0)) { - // Ignoring error for bad "empty" block (see issue 1277) - error('Bad uncompressed block length in flate stream'); - } - - this.codeBuf = 0; - this.codeSize = 0; - - var bufferLength = this.bufferLength; - buffer = this.ensureBuffer(bufferLength + blockLen); - var end = bufferLength + blockLen; - this.bufferLength = end; - if (blockLen === 0) { - if (str.peekByte() === -1) { - this.eof = true; - } - } else { - for (var n = bufferLength; n < end; ++n) { - if ((b = str.getByte()) === -1) { - this.eof = true; - break; - } - buffer[n] = b; - } - } - return; - } - - var litCodeTable; - var distCodeTable; - if (hdr === 1) { // compressed block, fixed codes - litCodeTable = fixedLitCodeTab; - distCodeTable = fixedDistCodeTab; - } else if (hdr === 2) { // compressed block, dynamic codes - var numLitCodes = this.getBits(5) + 257; - var numDistCodes = this.getBits(5) + 1; - var numCodeLenCodes = this.getBits(4) + 4; - - // build the code lengths code table - var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length); - - var i; - for (i = 0; i < numCodeLenCodes; ++i) { - codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3); - } - var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths); - - // build the literal and distance code tables - len = 0; - i = 0; - var codes = numLitCodes + numDistCodes; - var codeLengths = new Uint8Array(codes); - var bitsLength, bitsOffset, what; - while (i < codes) { - var code = this.getCode(codeLenCodeTab); - if (code === 16) { - bitsLength = 2; bitsOffset = 3; what = len; - } else if (code === 17) { - bitsLength = 3; bitsOffset = 3; what = (len = 0); - } else if (code === 18) { - bitsLength = 7; bitsOffset = 11; what = (len = 0); - } else { - codeLengths[i++] = len = code; - continue; - } - - var repeatLength = this.getBits(bitsLength) + bitsOffset; - while (repeatLength-- > 0) { - codeLengths[i++] = what; - } - } - - litCodeTable = - this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes)); - distCodeTable = - this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes)); - } else { - error('Unknown block type in flate stream'); - } - - buffer = this.buffer; - var limit = buffer ? buffer.length : 0; - var pos = this.bufferLength; - while (true) { - var code1 = this.getCode(litCodeTable); - if (code1 < 256) { - if (pos + 1 >= limit) { - buffer = this.ensureBuffer(pos + 1); - limit = buffer.length; - } - buffer[pos++] = code1; - continue; - } - if (code1 === 256) { - this.bufferLength = pos; - return; - } - code1 -= 257; - code1 = lengthDecode[code1]; - var code2 = code1 >> 16; - if (code2 > 0) { - code2 = this.getBits(code2); - } - len = (code1 & 0xffff) + code2; - code1 = this.getCode(distCodeTable); - code1 = distDecode[code1]; - code2 = code1 >> 16; - if (code2 > 0) { - code2 = this.getBits(code2); - } - var dist = (code1 & 0xffff) + code2; - if (pos + len >= limit) { - buffer = this.ensureBuffer(pos + len); - limit = buffer.length; - } - for (var k = 0; k < len; ++k, ++pos) { - buffer[pos] = buffer[pos - dist]; - } - } - }; - - return FlateStream; -})(); - -var PredictorStream = (function PredictorStreamClosure() { - function PredictorStream(str, maybeLength, params) { - var predictor = this.predictor = params.get('Predictor') || 1; - - if (predictor <= 1) { - return str; // no prediction - } - if (predictor !== 2 && (predictor < 10 || predictor > 15)) { - error('Unsupported predictor: ' + predictor); - } - - if (predictor === 2) { - this.readBlock = this.readBlockTiff; - } else { - this.readBlock = this.readBlockPng; - } - - this.str = str; - this.dict = str.dict; - - var colors = this.colors = params.get('Colors') || 1; - var bits = this.bits = params.get('BitsPerComponent') || 8; - var columns = this.columns = params.get('Columns') || 1; - - this.pixBytes = (colors * bits + 7) >> 3; - this.rowBytes = (columns * colors * bits + 7) >> 3; - - DecodeStream.call(this, maybeLength); - return this; - } - - PredictorStream.prototype = Object.create(DecodeStream.prototype); - - PredictorStream.prototype.readBlockTiff = - function predictorStreamReadBlockTiff() { - var rowBytes = this.rowBytes; - - var bufferLength = this.bufferLength; - var buffer = this.ensureBuffer(bufferLength + rowBytes); - - var bits = this.bits; - var colors = this.colors; - - var rawBytes = this.str.getBytes(rowBytes); - this.eof = !rawBytes.length; - if (this.eof) { - return; - } - - var inbuf = 0, outbuf = 0; - var inbits = 0, outbits = 0; - var pos = bufferLength; - var i; - - if (bits === 1) { - for (i = 0; i < rowBytes; ++i) { - var c = rawBytes[i]; - inbuf = (inbuf << 8) | c; - // bitwise addition is exclusive or - // first shift inbuf and then add - buffer[pos++] = (c ^ (inbuf >> colors)) & 0xFF; - // truncate inbuf (assumes colors < 16) - inbuf &= 0xFFFF; - } - } else if (bits === 8) { - for (i = 0; i < colors; ++i) { - buffer[pos++] = rawBytes[i]; - } - for (; i < rowBytes; ++i) { - buffer[pos] = buffer[pos - colors] + rawBytes[i]; - pos++; - } - } else { - var compArray = new Uint8Array(colors + 1); - var bitMask = (1 << bits) - 1; - var j = 0, k = bufferLength; - var columns = this.columns; - for (i = 0; i < columns; ++i) { - for (var kk = 0; kk < colors; ++kk) { - if (inbits < bits) { - inbuf = (inbuf << 8) | (rawBytes[j++] & 0xFF); - inbits += 8; - } - compArray[kk] = (compArray[kk] + - (inbuf >> (inbits - bits))) & bitMask; - inbits -= bits; - outbuf = (outbuf << bits) | compArray[kk]; - outbits += bits; - if (outbits >= 8) { - buffer[k++] = (outbuf >> (outbits - 8)) & 0xFF; - outbits -= 8; - } - } - } - if (outbits > 0) { - buffer[k++] = (outbuf << (8 - outbits)) + - (inbuf & ((1 << (8 - outbits)) - 1)); - } - } - this.bufferLength += rowBytes; - }; - - PredictorStream.prototype.readBlockPng = - function predictorStreamReadBlockPng() { - - var rowBytes = this.rowBytes; - var pixBytes = this.pixBytes; - - var predictor = this.str.getByte(); - var rawBytes = this.str.getBytes(rowBytes); - this.eof = !rawBytes.length; - if (this.eof) { - return; - } - - var bufferLength = this.bufferLength; - var buffer = this.ensureBuffer(bufferLength + rowBytes); - - var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength); - if (prevRow.length === 0) { - prevRow = new Uint8Array(rowBytes); - } - - var i, j = bufferLength, up, c; - switch (predictor) { - case 0: - for (i = 0; i < rowBytes; ++i) { - buffer[j++] = rawBytes[i]; - } - break; - case 1: - for (i = 0; i < pixBytes; ++i) { - buffer[j++] = rawBytes[i]; - } - for (; i < rowBytes; ++i) { - buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xFF; - j++; - } - break; - case 2: - for (i = 0; i < rowBytes; ++i) { - buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xFF; - } - break; - case 3: - for (i = 0; i < pixBytes; ++i) { - buffer[j++] = (prevRow[i] >> 1) + rawBytes[i]; - } - for (; i < rowBytes; ++i) { - buffer[j] = (((prevRow[i] + buffer[j - pixBytes]) >> 1) + - rawBytes[i]) & 0xFF; - j++; - } - break; - case 4: - // we need to save the up left pixels values. the simplest way - // is to create a new buffer - for (i = 0; i < pixBytes; ++i) { - up = prevRow[i]; - c = rawBytes[i]; - buffer[j++] = up + c; - } - for (; i < rowBytes; ++i) { - up = prevRow[i]; - var upLeft = prevRow[i - pixBytes]; - var left = buffer[j - pixBytes]; - var p = left + up - upLeft; - - var pa = p - left; - if (pa < 0) { - pa = -pa; - } - var pb = p - up; - if (pb < 0) { - pb = -pb; - } - var pc = p - upLeft; - if (pc < 0) { - pc = -pc; - } - - c = rawBytes[i]; - if (pa <= pb && pa <= pc) { - buffer[j++] = left + c; - } else if (pb <= pc) { - buffer[j++] = up + c; - } else { - buffer[j++] = upLeft + c; - } - } - break; - default: - error('Unsupported predictor: ' + predictor); - } - this.bufferLength += rowBytes; - }; - - return PredictorStream; -})(); - -/** - * Depending on the type of JPEG a JpegStream is handled in different ways. For - * JPEG's that are supported natively such as DeviceGray and DeviceRGB the image - * data is stored and then loaded by the browser. For unsupported JPEG's we use - * a library to decode these images and the stream behaves like all the other - * DecodeStreams. - */ -var JpegStream = (function JpegStreamClosure() { - function JpegStream(stream, maybeLength, dict, xref) { - // Some images may contain 'junk' before the SOI (start-of-image) marker. - // Note: this seems to mainly affect inline images. - var ch; - while ((ch = stream.getByte()) !== -1) { - if (ch === 0xFF) { // Find the first byte of the SOI marker (0xFFD8). - stream.skip(-1); // Reset the stream position to the SOI. - break; - } - } - this.stream = stream; - this.maybeLength = maybeLength; - this.dict = dict; - - DecodeStream.call(this, maybeLength); - } - - JpegStream.prototype = Object.create(DecodeStream.prototype); - - Object.defineProperty(JpegStream.prototype, 'bytes', { - get: function JpegStream_bytes() { - // If this.maybeLength is null, we'll get the entire stream. - return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength)); - }, - configurable: true - }); - - JpegStream.prototype.ensureBuffer = function JpegStream_ensureBuffer(req) { - if (this.bufferLength) { - return; - } - try { - var jpegImage = new JpegImage(); - - // checking if values needs to be transformed before conversion - if (this.forceRGB && this.dict && isArray(this.dict.get('Decode'))) { - var decodeArr = this.dict.get('Decode'); - var bitsPerComponent = this.dict.get('BitsPerComponent') || 8; - var decodeArrLength = decodeArr.length; - var transform = new Int32Array(decodeArrLength); - var transformNeeded = false; - var maxValue = (1 << bitsPerComponent) - 1; - for (var i = 0; i < decodeArrLength; i += 2) { - transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0; - transform[i + 1] = (decodeArr[i] * maxValue) | 0; - if (transform[i] !== 256 || transform[i + 1] !== 0) { - transformNeeded = true; - } - } - if (transformNeeded) { - jpegImage.decodeTransform = transform; - } - } - - jpegImage.parse(this.bytes); - var data = jpegImage.getData(this.drawWidth, this.drawHeight, - this.forceRGB); - this.buffer = data; - this.bufferLength = data.length; - this.eof = true; - } catch (e) { - error('JPEG error: ' + e); - } - }; - - JpegStream.prototype.getBytes = function JpegStream_getBytes(length) { - this.ensureBuffer(); - return this.buffer; - }; - - JpegStream.prototype.getIR = function JpegStream_getIR() { - return PDFJS.createObjectURL(this.bytes, 'image/jpeg'); - }; - /** - * Checks if the image can be decoded and displayed by the browser without any - * further processing such as color space conversions. - */ - JpegStream.prototype.isNativelySupported = - function JpegStream_isNativelySupported(xref, res) { - var cs = ColorSpace.parse(this.dict.get('ColorSpace', 'CS'), xref, res); - return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') && - cs.isDefaultDecode(this.dict.get('Decode', 'D')); - }; - /** - * Checks if the image can be decoded by the browser. - */ - JpegStream.prototype.isNativelyDecodable = - function JpegStream_isNativelyDecodable(xref, res) { - var cs = ColorSpace.parse(this.dict.get('ColorSpace', 'CS'), xref, res); - return (cs.numComps === 1 || cs.numComps === 3) && - cs.isDefaultDecode(this.dict.get('Decode', 'D')); - }; - - return JpegStream; -})(); - -/** - * For JPEG 2000's we use a library to decode these images and - * the stream behaves like all the other DecodeStreams. - */ -var JpxStream = (function JpxStreamClosure() { - function JpxStream(stream, maybeLength, dict) { - this.stream = stream; - this.maybeLength = maybeLength; - this.dict = dict; - - DecodeStream.call(this, maybeLength); - } - - JpxStream.prototype = Object.create(DecodeStream.prototype); - - Object.defineProperty(JpxStream.prototype, 'bytes', { - get: function JpxStream_bytes() { - // If this.maybeLength is null, we'll get the entire stream. - return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength)); - }, - configurable: true - }); - - JpxStream.prototype.ensureBuffer = function JpxStream_ensureBuffer(req) { - if (this.bufferLength) { - return; - } - - var jpxImage = new JpxImage(); - jpxImage.parse(this.bytes); - - var width = jpxImage.width; - var height = jpxImage.height; - var componentsCount = jpxImage.componentsCount; - var tileCount = jpxImage.tiles.length; - if (tileCount === 1) { - this.buffer = jpxImage.tiles[0].items; - } else { - var data = new Uint8Array(width * height * componentsCount); - - for (var k = 0; k < tileCount; k++) { - var tileComponents = jpxImage.tiles[k]; - var tileWidth = tileComponents.width; - var tileHeight = tileComponents.height; - var tileLeft = tileComponents.left; - var tileTop = tileComponents.top; - - var src = tileComponents.items; - var srcPosition = 0; - var dataPosition = (width * tileTop + tileLeft) * componentsCount; - var imgRowSize = width * componentsCount; - var tileRowSize = tileWidth * componentsCount; - - for (var j = 0; j < tileHeight; j++) { - var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize); - data.set(rowBytes, dataPosition); - srcPosition += tileRowSize; - dataPosition += imgRowSize; - } - } - this.buffer = data; - } - this.bufferLength = this.buffer.length; - this.eof = true; - }; - - return JpxStream; -})(); - -/** - * For JBIG2's we use a library to decode these images and - * the stream behaves like all the other DecodeStreams. - */ -var Jbig2Stream = (function Jbig2StreamClosure() { - function Jbig2Stream(stream, maybeLength, dict) { - this.stream = stream; - this.maybeLength = maybeLength; - this.dict = dict; - - DecodeStream.call(this, maybeLength); - } - - Jbig2Stream.prototype = Object.create(DecodeStream.prototype); - - Object.defineProperty(Jbig2Stream.prototype, 'bytes', { - get: function Jbig2Stream_bytes() { - // If this.maybeLength is null, we'll get the entire stream. - return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength)); - }, - configurable: true - }); - - Jbig2Stream.prototype.ensureBuffer = function Jbig2Stream_ensureBuffer(req) { - if (this.bufferLength) { - return; - } - - var jbig2Image = new Jbig2Image(); - - var chunks = [], xref = this.dict.xref; - var decodeParams = xref.fetchIfRef(this.dict.get('DecodeParms')); - - // According to the PDF specification, DecodeParms can be either - // a dictionary, or an array whose elements are dictionaries. - if (isArray(decodeParams)) { - if (decodeParams.length > 1) { - warn('JBIG2 - \'DecodeParms\' array with multiple elements ' + - 'not supported.'); - } - decodeParams = xref.fetchIfRef(decodeParams[0]); - } - if (decodeParams && decodeParams.has('JBIG2Globals')) { - var globalsStream = decodeParams.get('JBIG2Globals'); - var globals = globalsStream.getBytes(); - chunks.push({data: globals, start: 0, end: globals.length}); - } - chunks.push({data: this.bytes, start: 0, end: this.bytes.length}); - var data = jbig2Image.parseChunks(chunks); - var dataLength = data.length; - - // JBIG2 had black as 1 and white as 0, inverting the colors - for (var i = 0; i < dataLength; i++) { - data[i] ^= 0xFF; - } - - this.buffer = data; - this.bufferLength = dataLength; - this.eof = true; - }; - - return Jbig2Stream; -})(); - -var DecryptStream = (function DecryptStreamClosure() { - function DecryptStream(str, maybeLength, decrypt) { - this.str = str; - this.dict = str.dict; - this.decrypt = decrypt; - this.nextChunk = null; - this.initialized = false; - - DecodeStream.call(this, maybeLength); - } - - var chunkSize = 512; - - DecryptStream.prototype = Object.create(DecodeStream.prototype); - - DecryptStream.prototype.readBlock = function DecryptStream_readBlock() { - var chunk; - if (this.initialized) { - chunk = this.nextChunk; - } else { - chunk = this.str.getBytes(chunkSize); - this.initialized = true; - } - if (!chunk || chunk.length === 0) { - this.eof = true; - return; - } - this.nextChunk = this.str.getBytes(chunkSize); - var hasMoreData = this.nextChunk && this.nextChunk.length > 0; - - var decrypt = this.decrypt; - chunk = decrypt(chunk, !hasMoreData); - - var bufferLength = this.bufferLength; - var i, n = chunk.length; - var buffer = this.ensureBuffer(bufferLength + n); - for (i = 0; i < n; i++) { - buffer[bufferLength++] = chunk[i]; - } - this.bufferLength = bufferLength; - }; - - return DecryptStream; -})(); - -var Ascii85Stream = (function Ascii85StreamClosure() { - function Ascii85Stream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - this.input = new Uint8Array(5); - - // Most streams increase in size when decoded, but Ascii85 streams - // typically shrink by ~20%. - if (maybeLength) { - maybeLength = 0.8 * maybeLength; - } - DecodeStream.call(this, maybeLength); - } - - Ascii85Stream.prototype = Object.create(DecodeStream.prototype); - - Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() { - var TILDA_CHAR = 0x7E; // '~' - var Z_LOWER_CHAR = 0x7A; // 'z' - var EOF = -1; - - var str = this.str; - - var c = str.getByte(); - while (Lexer.isSpace(c)) { - c = str.getByte(); - } - - if (c === EOF || c === TILDA_CHAR) { - this.eof = true; - return; - } - - var bufferLength = this.bufferLength, buffer; - var i; - - // special code for z - if (c === Z_LOWER_CHAR) { - buffer = this.ensureBuffer(bufferLength + 4); - for (i = 0; i < 4; ++i) { - buffer[bufferLength + i] = 0; - } - this.bufferLength += 4; - } else { - var input = this.input; - input[0] = c; - for (i = 1; i < 5; ++i) { - c = str.getByte(); - while (Lexer.isSpace(c)) { - c = str.getByte(); - } - - input[i] = c; - - if (c === EOF || c === TILDA_CHAR) { - break; - } - } - buffer = this.ensureBuffer(bufferLength + i - 1); - this.bufferLength += i - 1; - - // partial ending; - if (i < 5) { - for (; i < 5; ++i) { - input[i] = 0x21 + 84; - } - this.eof = true; - } - var t = 0; - for (i = 0; i < 5; ++i) { - t = t * 85 + (input[i] - 0x21); - } - - for (i = 3; i >= 0; --i) { - buffer[bufferLength + i] = t & 0xFF; - t >>= 8; - } - } - }; - - return Ascii85Stream; -})(); - -var AsciiHexStream = (function AsciiHexStreamClosure() { - function AsciiHexStream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - - this.firstDigit = -1; - - // Most streams increase in size when decoded, but AsciiHex streams shrink - // by 50%. - if (maybeLength) { - maybeLength = 0.5 * maybeLength; - } - DecodeStream.call(this, maybeLength); - } - - AsciiHexStream.prototype = Object.create(DecodeStream.prototype); - - AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() { - var UPSTREAM_BLOCK_SIZE = 8000; - var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE); - if (!bytes.length) { - this.eof = true; - return; - } - - var maxDecodeLength = (bytes.length + 1) >> 1; - var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength); - var bufferLength = this.bufferLength; - - var firstDigit = this.firstDigit; - for (var i = 0, ii = bytes.length; i < ii; i++) { - var ch = bytes[i], digit; - if (ch >= 0x30 && ch <= 0x39) { // '0'-'9' - digit = ch & 0x0F; - } else if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) { - // 'A'-'Z', 'a'-'z' - digit = (ch & 0x0F) + 9; - } else if (ch === 0x3E) { // '>' - this.eof = true; - break; - } else { // probably whitespace - continue; // ignoring - } - if (firstDigit < 0) { - firstDigit = digit; - } else { - buffer[bufferLength++] = (firstDigit << 4) | digit; - firstDigit = -1; - } - } - if (firstDigit >= 0 && this.eof) { - // incomplete byte - buffer[bufferLength++] = (firstDigit << 4); - firstDigit = -1; - } - this.firstDigit = firstDigit; - this.bufferLength = bufferLength; - }; - - return AsciiHexStream; -})(); - -var RunLengthStream = (function RunLengthStreamClosure() { - function RunLengthStream(str, maybeLength) { - this.str = str; - this.dict = str.dict; - - DecodeStream.call(this, maybeLength); - } - - RunLengthStream.prototype = Object.create(DecodeStream.prototype); - - RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() { - // The repeatHeader has following format. The first byte defines type of run - // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes - // (in addition to the second byte from the header), n = 129 through 255 - - // duplicate the second byte from the header (257 - n) times, n = 128 - end. - var repeatHeader = this.str.getBytes(2); - if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) { - this.eof = true; - return; - } - - var buffer; - var bufferLength = this.bufferLength; - var n = repeatHeader[0]; - if (n < 128) { - // copy n bytes - buffer = this.ensureBuffer(bufferLength + n + 1); - buffer[bufferLength++] = repeatHeader[1]; - if (n > 0) { - var source = this.str.getBytes(n); - buffer.set(source, bufferLength); - bufferLength += n; - } - } else { - n = 257 - n; - var b = repeatHeader[1]; - buffer = this.ensureBuffer(bufferLength + n + 1); - for (var i = 0; i < n; i++) { - buffer[bufferLength++] = b; - } - } - this.bufferLength = bufferLength; - }; - - return RunLengthStream; -})(); - -var CCITTFaxStream = (function CCITTFaxStreamClosure() { - - var ccittEOL = -2; - var twoDimPass = 0; - var twoDimHoriz = 1; - var twoDimVert0 = 2; - var twoDimVertR1 = 3; - var twoDimVertL1 = 4; - var twoDimVertR2 = 5; - var twoDimVertL2 = 6; - var twoDimVertR3 = 7; - var twoDimVertL3 = 8; - - var twoDimTable = [ - [-1, -1], [-1, -1], // 000000x - [7, twoDimVertL3], // 0000010 - [7, twoDimVertR3], // 0000011 - [6, twoDimVertL2], [6, twoDimVertL2], // 000010x - [6, twoDimVertR2], [6, twoDimVertR2], // 000011x - [4, twoDimPass], [4, twoDimPass], // 0001xxx - [4, twoDimPass], [4, twoDimPass], - [4, twoDimPass], [4, twoDimPass], - [4, twoDimPass], [4, twoDimPass], - [3, twoDimHoriz], [3, twoDimHoriz], // 001xxxx - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimHoriz], [3, twoDimHoriz], - [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertL1], [3, twoDimVertL1], - [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [3, twoDimVertR1], [3, twoDimVertR1], - [1, twoDimVert0], [1, twoDimVert0], // 1xxxxxx - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0], - [1, twoDimVert0], [1, twoDimVert0] - ]; - - var whiteTable1 = [ - [-1, -1], // 00000 - [12, ccittEOL], // 00001 - [-1, -1], [-1, -1], // 0001x - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx - [11, 1792], [11, 1792], // 1000x - [12, 1984], // 10010 - [12, 2048], // 10011 - [12, 2112], // 10100 - [12, 2176], // 10101 - [12, 2240], // 10110 - [12, 2304], // 10111 - [11, 1856], [11, 1856], // 1100x - [11, 1920], [11, 1920], // 1101x - [12, 2368], // 11100 - [12, 2432], // 11101 - [12, 2496], // 11110 - [12, 2560] // 11111 - ]; - - var whiteTable2 = [ - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000000xx - [8, 29], [8, 29], // 00000010x - [8, 30], [8, 30], // 00000011x - [8, 45], [8, 45], // 00000100x - [8, 46], [8, 46], // 00000101x - [7, 22], [7, 22], [7, 22], [7, 22], // 0000011xx - [7, 23], [7, 23], [7, 23], [7, 23], // 0000100xx - [8, 47], [8, 47], // 00001010x - [8, 48], [8, 48], // 00001011x - [6, 13], [6, 13], [6, 13], [6, 13], // 000011xxx - [6, 13], [6, 13], [6, 13], [6, 13], - [7, 20], [7, 20], [7, 20], [7, 20], // 0001000xx - [8, 33], [8, 33], // 00010010x - [8, 34], [8, 34], // 00010011x - [8, 35], [8, 35], // 00010100x - [8, 36], [8, 36], // 00010101x - [8, 37], [8, 37], // 00010110x - [8, 38], [8, 38], // 00010111x - [7, 19], [7, 19], [7, 19], [7, 19], // 0001100xx - [8, 31], [8, 31], // 00011010x - [8, 32], [8, 32], // 00011011x - [6, 1], [6, 1], [6, 1], [6, 1], // 000111xxx - [6, 1], [6, 1], [6, 1], [6, 1], - [6, 12], [6, 12], [6, 12], [6, 12], // 001000xxx - [6, 12], [6, 12], [6, 12], [6, 12], - [8, 53], [8, 53], // 00100100x - [8, 54], [8, 54], // 00100101x - [7, 26], [7, 26], [7, 26], [7, 26], // 0010011xx - [8, 39], [8, 39], // 00101000x - [8, 40], [8, 40], // 00101001x - [8, 41], [8, 41], // 00101010x - [8, 42], [8, 42], // 00101011x - [8, 43], [8, 43], // 00101100x - [8, 44], [8, 44], // 00101101x - [7, 21], [7, 21], [7, 21], [7, 21], // 0010111xx - [7, 28], [7, 28], [7, 28], [7, 28], // 0011000xx - [8, 61], [8, 61], // 00110010x - [8, 62], [8, 62], // 00110011x - [8, 63], [8, 63], // 00110100x - [8, 0], [8, 0], // 00110101x - [8, 320], [8, 320], // 00110110x - [8, 384], [8, 384], // 00110111x - [5, 10], [5, 10], [5, 10], [5, 10], // 00111xxxx - [5, 10], [5, 10], [5, 10], [5, 10], - [5, 10], [5, 10], [5, 10], [5, 10], - [5, 10], [5, 10], [5, 10], [5, 10], - [5, 11], [5, 11], [5, 11], [5, 11], // 01000xxxx - [5, 11], [5, 11], [5, 11], [5, 11], - [5, 11], [5, 11], [5, 11], [5, 11], - [5, 11], [5, 11], [5, 11], [5, 11], - [7, 27], [7, 27], [7, 27], [7, 27], // 0100100xx - [8, 59], [8, 59], // 01001010x - [8, 60], [8, 60], // 01001011x - [9, 1472], // 010011000 - [9, 1536], // 010011001 - [9, 1600], // 010011010 - [9, 1728], // 010011011 - [7, 18], [7, 18], [7, 18], [7, 18], // 0100111xx - [7, 24], [7, 24], [7, 24], [7, 24], // 0101000xx - [8, 49], [8, 49], // 01010010x - [8, 50], [8, 50], // 01010011x - [8, 51], [8, 51], // 01010100x - [8, 52], [8, 52], // 01010101x - [7, 25], [7, 25], [7, 25], [7, 25], // 0101011xx - [8, 55], [8, 55], // 01011000x - [8, 56], [8, 56], // 01011001x - [8, 57], [8, 57], // 01011010x - [8, 58], [8, 58], // 01011011x - [6, 192], [6, 192], [6, 192], [6, 192], // 010111xxx - [6, 192], [6, 192], [6, 192], [6, 192], - [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx - [6, 1664], [6, 1664], [6, 1664], [6, 1664], - [8, 448], [8, 448], // 01100100x - [8, 512], [8, 512], // 01100101x - [9, 704], // 011001100 - [9, 768], // 011001101 - [8, 640], [8, 640], // 01100111x - [8, 576], [8, 576], // 01101000x - [9, 832], // 011010010 - [9, 896], // 011010011 - [9, 960], // 011010100 - [9, 1024], // 011010101 - [9, 1088], // 011010110 - [9, 1152], // 011010111 - [9, 1216], // 011011000 - [9, 1280], // 011011001 - [9, 1344], // 011011010 - [9, 1408], // 011011011 - [7, 256], [7, 256], [7, 256], [7, 256], // 0110111xx - [4, 2], [4, 2], [4, 2], [4, 2], // 0111xxxxx - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 2], [4, 2], [4, 2], [4, 2], - [4, 3], [4, 3], [4, 3], [4, 3], // 1000xxxxx - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [4, 3], [4, 3], [4, 3], [4, 3], - [5, 128], [5, 128], [5, 128], [5, 128], // 10010xxxx - [5, 128], [5, 128], [5, 128], [5, 128], - [5, 128], [5, 128], [5, 128], [5, 128], - [5, 128], [5, 128], [5, 128], [5, 128], - [5, 8], [5, 8], [5, 8], [5, 8], // 10011xxxx - [5, 8], [5, 8], [5, 8], [5, 8], - [5, 8], [5, 8], [5, 8], [5, 8], - [5, 8], [5, 8], [5, 8], [5, 8], - [5, 9], [5, 9], [5, 9], [5, 9], // 10100xxxx - [5, 9], [5, 9], [5, 9], [5, 9], - [5, 9], [5, 9], [5, 9], [5, 9], - [5, 9], [5, 9], [5, 9], [5, 9], - [6, 16], [6, 16], [6, 16], [6, 16], // 101010xxx - [6, 16], [6, 16], [6, 16], [6, 16], - [6, 17], [6, 17], [6, 17], [6, 17], // 101011xxx - [6, 17], [6, 17], [6, 17], [6, 17], - [4, 4], [4, 4], [4, 4], [4, 4], // 1011xxxxx - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 4], [4, 4], [4, 4], [4, 4], - [4, 5], [4, 5], [4, 5], [4, 5], // 1100xxxxx - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [4, 5], [4, 5], [4, 5], [4, 5], - [6, 14], [6, 14], [6, 14], [6, 14], // 110100xxx - [6, 14], [6, 14], [6, 14], [6, 14], - [6, 15], [6, 15], [6, 15], [6, 15], // 110101xxx - [6, 15], [6, 15], [6, 15], [6, 15], - [5, 64], [5, 64], [5, 64], [5, 64], // 11011xxxx - [5, 64], [5, 64], [5, 64], [5, 64], - [5, 64], [5, 64], [5, 64], [5, 64], - [5, 64], [5, 64], [5, 64], [5, 64], - [4, 6], [4, 6], [4, 6], [4, 6], // 1110xxxxx - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 6], [4, 6], [4, 6], [4, 6], - [4, 7], [4, 7], [4, 7], [4, 7], // 1111xxxxx - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7], - [4, 7], [4, 7], [4, 7], [4, 7] - ]; - - var blackTable1 = [ - [-1, -1], [-1, -1], // 000000000000x - [12, ccittEOL], [12, ccittEOL], // 000000000001x - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000001xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000010xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000011xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000100xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000101xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000110xx - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000111xx - [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx - [12, 1984], [12, 1984], // 000000010010x - [12, 2048], [12, 2048], // 000000010011x - [12, 2112], [12, 2112], // 000000010100x - [12, 2176], [12, 2176], // 000000010101x - [12, 2240], [12, 2240], // 000000010110x - [12, 2304], [12, 2304], // 000000010111x - [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx - [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx - [12, 2368], [12, 2368], // 000000011100x - [12, 2432], [12, 2432], // 000000011101x - [12, 2496], [12, 2496], // 000000011110x - [12, 2560], [12, 2560], // 000000011111x - [10, 18], [10, 18], [10, 18], [10, 18], // 0000001000xxx - [10, 18], [10, 18], [10, 18], [10, 18], - [12, 52], [12, 52], // 000000100100x - [13, 640], // 0000001001010 - [13, 704], // 0000001001011 - [13, 768], // 0000001001100 - [13, 832], // 0000001001101 - [12, 55], [12, 55], // 000000100111x - [12, 56], [12, 56], // 000000101000x - [13, 1280], // 0000001010010 - [13, 1344], // 0000001010011 - [13, 1408], // 0000001010100 - [13, 1472], // 0000001010101 - [12, 59], [12, 59], // 000000101011x - [12, 60], [12, 60], // 000000101100x - [13, 1536], // 0000001011010 - [13, 1600], // 0000001011011 - [11, 24], [11, 24], [11, 24], [11, 24], // 00000010111xx - [11, 25], [11, 25], [11, 25], [11, 25], // 00000011000xx - [13, 1664], // 0000001100100 - [13, 1728], // 0000001100101 - [12, 320], [12, 320], // 000000110011x - [12, 384], [12, 384], // 000000110100x - [12, 448], [12, 448], // 000000110101x - [13, 512], // 0000001101100 - [13, 576], // 0000001101101 - [12, 53], [12, 53], // 000000110111x - [12, 54], [12, 54], // 000000111000x - [13, 896], // 0000001110010 - [13, 960], // 0000001110011 - [13, 1024], // 0000001110100 - [13, 1088], // 0000001110101 - [13, 1152], // 0000001110110 - [13, 1216], // 0000001110111 - [10, 64], [10, 64], [10, 64], [10, 64], // 0000001111xxx - [10, 64], [10, 64], [10, 64], [10, 64] - ]; - - var blackTable2 = [ - [8, 13], [8, 13], [8, 13], [8, 13], // 00000100xxxx - [8, 13], [8, 13], [8, 13], [8, 13], - [8, 13], [8, 13], [8, 13], [8, 13], - [8, 13], [8, 13], [8, 13], [8, 13], - [11, 23], [11, 23], // 00000101000x - [12, 50], // 000001010010 - [12, 51], // 000001010011 - [12, 44], // 000001010100 - [12, 45], // 000001010101 - [12, 46], // 000001010110 - [12, 47], // 000001010111 - [12, 57], // 000001011000 - [12, 58], // 000001011001 - [12, 61], // 000001011010 - [12, 256], // 000001011011 - [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx - [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx - [12, 48], // 000001100100 - [12, 49], // 000001100101 - [12, 62], // 000001100110 - [12, 63], // 000001100111 - [12, 30], // 000001101000 - [12, 31], // 000001101001 - [12, 32], // 000001101010 - [12, 33], // 000001101011 - [12, 40], // 000001101100 - [12, 41], // 000001101101 - [11, 22], [11, 22], // 00000110111x - [8, 14], [8, 14], [8, 14], [8, 14], // 00000111xxxx - [8, 14], [8, 14], [8, 14], [8, 14], - [8, 14], [8, 14], [8, 14], [8, 14], - [8, 14], [8, 14], [8, 14], [8, 14], - [7, 10], [7, 10], [7, 10], [7, 10], // 0000100xxxxx - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 10], [7, 10], [7, 10], [7, 10], - [7, 11], [7, 11], [7, 11], [7, 11], // 0000101xxxxx - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [7, 11], [7, 11], [7, 11], [7, 11], - [9, 15], [9, 15], [9, 15], [9, 15], // 000011000xxx - [9, 15], [9, 15], [9, 15], [9, 15], - [12, 128], // 000011001000 - [12, 192], // 000011001001 - [12, 26], // 000011001010 - [12, 27], // 000011001011 - [12, 28], // 000011001100 - [12, 29], // 000011001101 - [11, 19], [11, 19], // 00001100111x - [11, 20], [11, 20], // 00001101000x - [12, 34], // 000011010010 - [12, 35], // 000011010011 - [12, 36], // 000011010100 - [12, 37], // 000011010101 - [12, 38], // 000011010110 - [12, 39], // 000011010111 - [11, 21], [11, 21], // 00001101100x - [12, 42], // 000011011010 - [12, 43], // 000011011011 - [10, 0], [10, 0], [10, 0], [10, 0], // 0000110111xx - [7, 12], [7, 12], [7, 12], [7, 12], // 0000111xxxxx - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12], - [7, 12], [7, 12], [7, 12], [7, 12] - ]; - - var blackTable3 = [ - [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx - [6, 9], // 000100 - [6, 8], // 000101 - [5, 7], [5, 7], // 00011x - [4, 6], [4, 6], [4, 6], [4, 6], // 0010xx - [4, 5], [4, 5], [4, 5], [4, 5], // 0011xx - [3, 1], [3, 1], [3, 1], [3, 1], // 010xxx - [3, 1], [3, 1], [3, 1], [3, 1], - [3, 4], [3, 4], [3, 4], [3, 4], // 011xxx - [3, 4], [3, 4], [3, 4], [3, 4], - [2, 3], [2, 3], [2, 3], [2, 3], // 10xxxx - [2, 3], [2, 3], [2, 3], [2, 3], - [2, 3], [2, 3], [2, 3], [2, 3], - [2, 3], [2, 3], [2, 3], [2, 3], - [2, 2], [2, 2], [2, 2], [2, 2], // 11xxxx - [2, 2], [2, 2], [2, 2], [2, 2], - [2, 2], [2, 2], [2, 2], [2, 2], - [2, 2], [2, 2], [2, 2], [2, 2] - ]; - - function CCITTFaxStream(str, maybeLength, params) { - this.str = str; - this.dict = str.dict; - - params = params || Dict.empty; - - this.encoding = params.get('K') || 0; - this.eoline = params.get('EndOfLine') || false; - this.byteAlign = params.get('EncodedByteAlign') || false; - this.columns = params.get('Columns') || 1728; - this.rows = params.get('Rows') || 0; - var eoblock = params.get('EndOfBlock'); - if (eoblock === null || eoblock === undefined) { - eoblock = true; - } - this.eoblock = eoblock; - this.black = params.get('BlackIs1') || false; - - this.codingLine = new Uint32Array(this.columns + 1); - this.refLine = new Uint32Array(this.columns + 2); - - this.codingLine[0] = this.columns; - this.codingPos = 0; - - this.row = 0; - this.nextLine2D = this.encoding < 0; - this.inputBits = 0; - this.inputBuf = 0; - this.outputBits = 0; - - var code1; - while ((code1 = this.lookBits(12)) === 0) { - this.eatBits(1); - } - if (code1 === 1) { - this.eatBits(12); - } - if (this.encoding > 0) { - this.nextLine2D = !this.lookBits(1); - this.eatBits(1); - } - - DecodeStream.call(this, maybeLength); - } - - CCITTFaxStream.prototype = Object.create(DecodeStream.prototype); - - CCITTFaxStream.prototype.readBlock = function CCITTFaxStream_readBlock() { - while (!this.eof) { - var c = this.lookChar(); - this.ensureBuffer(this.bufferLength + 1); - this.buffer[this.bufferLength++] = c; - } - }; - - CCITTFaxStream.prototype.addPixels = - function ccittFaxStreamAddPixels(a1, blackPixels) { - var codingLine = this.codingLine; - var codingPos = this.codingPos; - - if (a1 > codingLine[codingPos]) { - if (a1 > this.columns) { - info('row is wrong length'); - this.err = true; - a1 = this.columns; - } - if ((codingPos & 1) ^ blackPixels) { - ++codingPos; - } - - codingLine[codingPos] = a1; - } - this.codingPos = codingPos; - }; - - CCITTFaxStream.prototype.addPixelsNeg = - function ccittFaxStreamAddPixelsNeg(a1, blackPixels) { - var codingLine = this.codingLine; - var codingPos = this.codingPos; - - if (a1 > codingLine[codingPos]) { - if (a1 > this.columns) { - info('row is wrong length'); - this.err = true; - a1 = this.columns; - } - if ((codingPos & 1) ^ blackPixels) { - ++codingPos; - } - - codingLine[codingPos] = a1; - } else if (a1 < codingLine[codingPos]) { - if (a1 < 0) { - info('invalid code'); - this.err = true; - a1 = 0; - } - while (codingPos > 0 && a1 < codingLine[codingPos - 1]) { - --codingPos; - } - codingLine[codingPos] = a1; - } - - this.codingPos = codingPos; - }; - - CCITTFaxStream.prototype.lookChar = function CCITTFaxStream_lookChar() { - var refLine = this.refLine; - var codingLine = this.codingLine; - var columns = this.columns; - - var refPos, blackPixels, bits, i; - - if (this.outputBits === 0) { - if (this.eof) { - return null; - } - this.err = false; - - var code1, code2, code3; - if (this.nextLine2D) { - for (i = 0; codingLine[i] < columns; ++i) { - refLine[i] = codingLine[i]; - } - refLine[i++] = columns; - refLine[i] = columns; - codingLine[0] = 0; - this.codingPos = 0; - refPos = 0; - blackPixels = 0; - - while (codingLine[this.codingPos] < columns) { - code1 = this.getTwoDimCode(); - switch (code1) { - case twoDimPass: - this.addPixels(refLine[refPos + 1], blackPixels); - if (refLine[refPos + 1] < columns) { - refPos += 2; - } - break; - case twoDimHoriz: - code1 = code2 = 0; - if (blackPixels) { - do { - code1 += (code3 = this.getBlackCode()); - } while (code3 >= 64); - do { - code2 += (code3 = this.getWhiteCode()); - } while (code3 >= 64); - } else { - do { - code1 += (code3 = this.getWhiteCode()); - } while (code3 >= 64); - do { - code2 += (code3 = this.getBlackCode()); - } while (code3 >= 64); - } - this.addPixels(codingLine[this.codingPos] + - code1, blackPixels); - if (codingLine[this.codingPos] < columns) { - this.addPixels(codingLine[this.codingPos] + code2, - blackPixels ^ 1); - } - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - break; - case twoDimVertR3: - this.addPixels(refLine[refPos] + 3, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - ++refPos; - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertR2: - this.addPixels(refLine[refPos] + 2, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - ++refPos; - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertR1: - this.addPixels(refLine[refPos] + 1, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - ++refPos; - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVert0: - this.addPixels(refLine[refPos], blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - ++refPos; - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertL3: - this.addPixelsNeg(refLine[refPos] - 3, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertL2: - this.addPixelsNeg(refLine[refPos] - 2, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case twoDimVertL1: - this.addPixelsNeg(refLine[refPos] - 1, blackPixels); - blackPixels ^= 1; - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - while (refLine[refPos] <= codingLine[this.codingPos] && - refLine[refPos] < columns) { - refPos += 2; - } - } - break; - case EOF: - this.addPixels(columns, 0); - this.eof = true; - break; - default: - info('bad 2d code'); - this.addPixels(columns, 0); - this.err = true; - } - } - } else { - codingLine[0] = 0; - this.codingPos = 0; - blackPixels = 0; - while (codingLine[this.codingPos] < columns) { - code1 = 0; - if (blackPixels) { - do { - code1 += (code3 = this.getBlackCode()); - } while (code3 >= 64); - } else { - do { - code1 += (code3 = this.getWhiteCode()); - } while (code3 >= 64); - } - this.addPixels(codingLine[this.codingPos] + code1, blackPixels); - blackPixels ^= 1; - } - } - - var gotEOL = false; - - if (this.byteAlign) { - this.inputBits &= ~7; - } - - if (!this.eoblock && this.row === this.rows - 1) { - this.eof = true; - } else { - code1 = this.lookBits(12); - if (this.eoline) { - while (code1 !== EOF && code1 !== 1) { - this.eatBits(1); - code1 = this.lookBits(12); - } - } else { - while (code1 === 0) { - this.eatBits(1); - code1 = this.lookBits(12); - } - } - if (code1 === 1) { - this.eatBits(12); - gotEOL = true; - } else if (code1 === EOF) { - this.eof = true; - } - } - - if (!this.eof && this.encoding > 0) { - this.nextLine2D = !this.lookBits(1); - this.eatBits(1); - } - - if (this.eoblock && gotEOL && this.byteAlign) { - code1 = this.lookBits(12); - if (code1 === 1) { - this.eatBits(12); - if (this.encoding > 0) { - this.lookBits(1); - this.eatBits(1); - } - if (this.encoding >= 0) { - for (i = 0; i < 4; ++i) { - code1 = this.lookBits(12); - if (code1 !== 1) { - info('bad rtc code: ' + code1); - } - this.eatBits(12); - if (this.encoding > 0) { - this.lookBits(1); - this.eatBits(1); - } - } - } - this.eof = true; - } - } else if (this.err && this.eoline) { - while (true) { - code1 = this.lookBits(13); - if (code1 === EOF) { - this.eof = true; - return null; - } - if ((code1 >> 1) === 1) { - break; - } - this.eatBits(1); - } - this.eatBits(12); - if (this.encoding > 0) { - this.eatBits(1); - this.nextLine2D = !(code1 & 1); - } - } - - if (codingLine[0] > 0) { - this.outputBits = codingLine[this.codingPos = 0]; - } else { - this.outputBits = codingLine[this.codingPos = 1]; - } - this.row++; - } - - var c; - if (this.outputBits >= 8) { - c = (this.codingPos & 1) ? 0 : 0xFF; - this.outputBits -= 8; - if (this.outputBits === 0 && codingLine[this.codingPos] < columns) { - this.codingPos++; - this.outputBits = (codingLine[this.codingPos] - - codingLine[this.codingPos - 1]); - } - } else { - bits = 8; - c = 0; - do { - if (this.outputBits > bits) { - c <<= bits; - if (!(this.codingPos & 1)) { - c |= 0xFF >> (8 - bits); - } - this.outputBits -= bits; - bits = 0; - } else { - c <<= this.outputBits; - if (!(this.codingPos & 1)) { - c |= 0xFF >> (8 - this.outputBits); - } - bits -= this.outputBits; - this.outputBits = 0; - if (codingLine[this.codingPos] < columns) { - this.codingPos++; - this.outputBits = (codingLine[this.codingPos] - - codingLine[this.codingPos - 1]); - } else if (bits > 0) { - c <<= bits; - bits = 0; - } - } - } while (bits); - } - if (this.black) { - c ^= 0xFF; - } - return c; - }; - - // This functions returns the code found from the table. - // The start and end parameters set the boundaries for searching the table. - // The limit parameter is optional. Function returns an array with three - // values. The first array element indicates whether a valid code is being - // returned. The second array element is the actual code. The third array - // element indicates whether EOF was reached. - CCITTFaxStream.prototype.findTableCode = - function ccittFaxStreamFindTableCode(start, end, table, limit) { - - var limitValue = limit || 0; - for (var i = start; i <= end; ++i) { - var code = this.lookBits(i); - if (code === EOF) { - return [true, 1, false]; - } - if (i < end) { - code <<= end - i; - } - if (!limitValue || code >= limitValue) { - var p = table[code - limitValue]; - if (p[0] === i) { - this.eatBits(i); - return [true, p[1], true]; - } - } - } - return [false, 0, false]; - }; - - CCITTFaxStream.prototype.getTwoDimCode = - function ccittFaxStreamGetTwoDimCode() { - - var code = 0; - var p; - if (this.eoblock) { - code = this.lookBits(7); - p = twoDimTable[code]; - if (p && p[0] > 0) { - this.eatBits(p[0]); - return p[1]; - } - } else { - var result = this.findTableCode(1, 7, twoDimTable); - if (result[0] && result[2]) { - return result[1]; - } - } - info('Bad two dim code'); - return EOF; - }; - - CCITTFaxStream.prototype.getWhiteCode = - function ccittFaxStreamGetWhiteCode() { - - var code = 0; - var p; - if (this.eoblock) { - code = this.lookBits(12); - if (code === EOF) { - return 1; - } - - if ((code >> 5) === 0) { - p = whiteTable1[code]; - } else { - p = whiteTable2[code >> 3]; - } - - if (p[0] > 0) { - this.eatBits(p[0]); - return p[1]; - } - } else { - var result = this.findTableCode(1, 9, whiteTable2); - if (result[0]) { - return result[1]; - } - - result = this.findTableCode(11, 12, whiteTable1); - if (result[0]) { - return result[1]; - } - } - info('bad white code'); - this.eatBits(1); - return 1; - }; - - CCITTFaxStream.prototype.getBlackCode = - function ccittFaxStreamGetBlackCode() { - - var code, p; - if (this.eoblock) { - code = this.lookBits(13); - if (code === EOF) { - return 1; - } - if ((code >> 7) === 0) { - p = blackTable1[code]; - } else if ((code >> 9) === 0 && (code >> 7) !== 0) { - p = blackTable2[(code >> 1) - 64]; - } else { - p = blackTable3[code >> 7]; - } - - if (p[0] > 0) { - this.eatBits(p[0]); - return p[1]; - } - } else { - var result = this.findTableCode(2, 6, blackTable3); - if (result[0]) { - return result[1]; - } - - result = this.findTableCode(7, 12, blackTable2, 64); - if (result[0]) { - return result[1]; - } - - result = this.findTableCode(10, 13, blackTable1); - if (result[0]) { - return result[1]; - } - } - info('bad black code'); - this.eatBits(1); - return 1; - }; - - CCITTFaxStream.prototype.lookBits = function CCITTFaxStream_lookBits(n) { - var c; - while (this.inputBits < n) { - if ((c = this.str.getByte()) === -1) { - if (this.inputBits === 0) { - return EOF; - } - return ((this.inputBuf << (n - this.inputBits)) & - (0xFFFF >> (16 - n))); - } - this.inputBuf = (this.inputBuf << 8) + c; - this.inputBits += 8; - } - return (this.inputBuf >> (this.inputBits - n)) & (0xFFFF >> (16 - n)); - }; - - CCITTFaxStream.prototype.eatBits = function CCITTFaxStream_eatBits(n) { - if ((this.inputBits -= n) < 0) { - this.inputBits = 0; - } - }; - - return CCITTFaxStream; -})(); - -var LZWStream = (function LZWStreamClosure() { - function LZWStream(str, maybeLength, earlyChange) { - this.str = str; - this.dict = str.dict; - this.cachedData = 0; - this.bitsCached = 0; - - var maxLzwDictionarySize = 4096; - var lzwState = { - earlyChange: earlyChange, - codeLength: 9, - nextCode: 258, - dictionaryValues: new Uint8Array(maxLzwDictionarySize), - dictionaryLengths: new Uint16Array(maxLzwDictionarySize), - dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize), - currentSequence: new Uint8Array(maxLzwDictionarySize), - currentSequenceLength: 0 - }; - for (var i = 0; i < 256; ++i) { - lzwState.dictionaryValues[i] = i; - lzwState.dictionaryLengths[i] = 1; - } - this.lzwState = lzwState; - - DecodeStream.call(this, maybeLength); - } - - LZWStream.prototype = Object.create(DecodeStream.prototype); - - LZWStream.prototype.readBits = function LZWStream_readBits(n) { - var bitsCached = this.bitsCached; - var cachedData = this.cachedData; - while (bitsCached < n) { - var c = this.str.getByte(); - if (c === -1) { - this.eof = true; - return null; - } - cachedData = (cachedData << 8) | c; - bitsCached += 8; - } - this.bitsCached = (bitsCached -= n); - this.cachedData = cachedData; - this.lastCode = null; - return (cachedData >>> bitsCached) & ((1 << n) - 1); - }; - - LZWStream.prototype.readBlock = function LZWStream_readBlock() { - var blockSize = 512; - var estimatedDecodedSize = blockSize * 2, decodedSizeDelta = blockSize; - var i, j, q; - - var lzwState = this.lzwState; - if (!lzwState) { - return; // eof was found - } - - var earlyChange = lzwState.earlyChange; - var nextCode = lzwState.nextCode; - var dictionaryValues = lzwState.dictionaryValues; - var dictionaryLengths = lzwState.dictionaryLengths; - var dictionaryPrevCodes = lzwState.dictionaryPrevCodes; - var codeLength = lzwState.codeLength; - var prevCode = lzwState.prevCode; - var currentSequence = lzwState.currentSequence; - var currentSequenceLength = lzwState.currentSequenceLength; - - var decodedLength = 0; - var currentBufferLength = this.bufferLength; - var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); - - for (i = 0; i < blockSize; i++) { - var code = this.readBits(codeLength); - var hasPrev = currentSequenceLength > 0; - if (code < 256) { - currentSequence[0] = code; - currentSequenceLength = 1; - } else if (code >= 258) { - if (code < nextCode) { - currentSequenceLength = dictionaryLengths[code]; - for (j = currentSequenceLength - 1, q = code; j >= 0; j--) { - currentSequence[j] = dictionaryValues[q]; - q = dictionaryPrevCodes[q]; - } - } else { - currentSequence[currentSequenceLength++] = currentSequence[0]; - } - } else if (code === 256) { - codeLength = 9; - nextCode = 258; - currentSequenceLength = 0; - continue; - } else { - this.eof = true; - delete this.lzwState; - break; - } - - if (hasPrev) { - dictionaryPrevCodes[nextCode] = prevCode; - dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1; - dictionaryValues[nextCode] = currentSequence[0]; - nextCode++; - codeLength = (nextCode + earlyChange) & (nextCode + earlyChange - 1) ? - codeLength : Math.min(Math.log(nextCode + earlyChange) / - 0.6931471805599453 + 1, 12) | 0; - } - prevCode = code; - - decodedLength += currentSequenceLength; - if (estimatedDecodedSize < decodedLength) { - do { - estimatedDecodedSize += decodedSizeDelta; - } while (estimatedDecodedSize < decodedLength); - buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); - } - for (j = 0; j < currentSequenceLength; j++) { - buffer[currentBufferLength++] = currentSequence[j]; - } - } - lzwState.nextCode = nextCode; - lzwState.codeLength = codeLength; - lzwState.prevCode = prevCode; - lzwState.currentSequenceLength = currentSequenceLength; - - this.bufferLength = currentBufferLength; - }; - - return LZWStream; -})(); - -var NullStream = (function NullStreamClosure() { - function NullStream() { - Stream.call(this, new Uint8Array(0)); - } - - NullStream.prototype = Stream.prototype; - - return NullStream; -})(); - - -var WorkerTask = (function WorkerTaskClosure() { - function WorkerTask(name) { - this.name = name; - this.terminated = false; - this._capability = createPromiseCapability(); - } - - WorkerTask.prototype = { - get finished() { - return this._capability.promise; - }, - - finish: function () { - this._capability.resolve(); - }, - - terminate: function () { - this.terminated = true; - }, - - ensureNotTerminated: function () { - if (this.terminated) { - throw new Error('Worker task was terminated'); - } - } - }; - - return WorkerTask; -})(); - -var WorkerMessageHandler = PDFJS.WorkerMessageHandler = { - setup: function wphSetup(handler) { - var pdfManager; - var terminated = false; - var cancelXHRs = null; - var WorkerTasks = []; - - function ensureNotTerminated() { - if (terminated) { - throw new Error('Worker was terminated'); - } - } - - function startWorkerTask(task) { - WorkerTasks.push(task); - } - - function finishWorkerTask(task) { - task.finish(); - var i = WorkerTasks.indexOf(task); - WorkerTasks.splice(i, 1); - } - - function loadDocument(recoveryMode) { - var loadDocumentCapability = createPromiseCapability(); - - var parseSuccess = function parseSuccess() { - var numPagesPromise = pdfManager.ensureDoc('numPages'); - var fingerprintPromise = pdfManager.ensureDoc('fingerprint'); - var encryptedPromise = pdfManager.ensureXRef('encrypt'); - Promise.all([numPagesPromise, fingerprintPromise, - encryptedPromise]).then(function onDocReady(results) { - var doc = { - numPages: results[0], - fingerprint: results[1], - encrypted: !!results[2], - }; - loadDocumentCapability.resolve(doc); - }, - parseFailure); - }; - - var parseFailure = function parseFailure(e) { - loadDocumentCapability.reject(e); - }; - - pdfManager.ensureDoc('checkHeader', []).then(function() { - pdfManager.ensureDoc('parseStartXRef', []).then(function() { - pdfManager.ensureDoc('parse', [recoveryMode]).then( - parseSuccess, parseFailure); - }, parseFailure); - }, parseFailure); - - return loadDocumentCapability.promise; - } - - function getPdfManager(data) { - var pdfManagerCapability = createPromiseCapability(); - var pdfManager; - - var source = data.source; - var disableRange = data.disableRange; - if (source.data) { - try { - pdfManager = new LocalPdfManager(source.data, source.password); - pdfManagerCapability.resolve(pdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - return pdfManagerCapability.promise; - } else if (source.chunkedViewerLoading) { - try { - pdfManager = new NetworkPdfManager(source, handler); - pdfManagerCapability.resolve(pdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - return pdfManagerCapability.promise; - } - - var networkManager = new NetworkManager(source.url, { - httpHeaders: source.httpHeaders, - withCredentials: source.withCredentials - }); - var cachedChunks = []; - var fullRequestXhrId = networkManager.requestFull({ - onHeadersReceived: function onHeadersReceived() { - if (disableRange) { - return; - } - - var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId); - if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') { - return; - } - - var contentEncoding = - fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity'; - if (contentEncoding !== 'identity') { - return; - } - - var length = fullRequestXhr.getResponseHeader('Content-Length'); - length = parseInt(length, 10); - if (!isInt(length)) { - return; - } - source.length = length; - if (length <= 2 * source.rangeChunkSize) { - // The file size is smaller than the size of two chunks, so it does - // not make any sense to abort the request and retry with a range - // request. - return; - } - - if (networkManager.isStreamingRequest(fullRequestXhrId)) { - // We can continue fetching when progressive loading is enabled, - // and we don't need the autoFetch feature. - source.disableAutoFetch = true; - } else { - // NOTE: by cancelling the full request, and then issuing range - // requests, there will be an issue for sites where you can only - // request the pdf once. However, if this is the case, then the - // server should not be returning that it can support range - // requests. - networkManager.abortRequest(fullRequestXhrId); - } - - try { - pdfManager = new NetworkPdfManager(source, handler); - pdfManagerCapability.resolve(pdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - cancelXHRs = null; - }, - - onProgressiveData: source.disableStream ? null : - function onProgressiveData(chunk) { - if (!pdfManager) { - cachedChunks.push(chunk); - return; - } - pdfManager.sendProgressiveData(chunk); - }, - - onDone: function onDone(args) { - if (pdfManager) { - return; // already processed - } - - var pdfFile; - if (args === null) { - // TODO add some streaming manager, e.g. for unknown length files. - // The data was returned in the onProgressiveData, combining... - var pdfFileLength = 0, pos = 0; - cachedChunks.forEach(function (chunk) { - pdfFileLength += chunk.byteLength; - }); - if (source.length && pdfFileLength !== source.length) { - warn('reported HTTP length is different from actual'); - } - var pdfFileArray = new Uint8Array(pdfFileLength); - cachedChunks.forEach(function (chunk) { - pdfFileArray.set(new Uint8Array(chunk), pos); - pos += chunk.byteLength; - }); - pdfFile = pdfFileArray.buffer; - } else { - pdfFile = args.chunk; - } - - // the data is array, instantiating directly from it - try { - pdfManager = new LocalPdfManager(pdfFile, source.password); - pdfManagerCapability.resolve(pdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - cancelXHRs = null; - }, - - onError: function onError(status) { - var exception; - if (status === 404 || status === 0 && /^file:/.test(source.url)) { - exception = new MissingPDFException('Missing PDF "' + - source.url + '".'); - handler.send('MissingPDF', exception); - } else { - exception = new UnexpectedResponseException( - 'Unexpected server response (' + status + - ') while retrieving PDF "' + source.url + '".', status); - handler.send('UnexpectedResponse', exception); - } - cancelXHRs = null; - }, - - onProgress: function onProgress(evt) { - handler.send('DocProgress', { - loaded: evt.loaded, - total: evt.lengthComputable ? evt.total : source.length - }); - } - }); - - cancelXHRs = function () { - networkManager.abortRequest(fullRequestXhrId); - }; - - return pdfManagerCapability.promise; - } - - handler.on('test', function wphSetupTest(data) { - // check if Uint8Array can be sent to worker - if (!(data instanceof Uint8Array)) { - handler.send('test', false); - return; - } - // making sure postMessage transfers are working - var supportTransfers = data[0] === 255; - handler.postMessageTransfers = supportTransfers; - // check if the response property is supported by xhr - var xhr = new XMLHttpRequest(); - var responseExists = 'response' in xhr; - // check if the property is actually implemented - try { - var dummy = xhr.responseType; - } catch (e) { - responseExists = false; - } - if (!responseExists) { - handler.send('test', false); - return; - } - handler.send('test', { - supportTypedArray: true, - supportTransfers: supportTransfers - }); - }); - - handler.on('GetDocRequest', function wphSetupDoc(data) { - var onSuccess = function(doc) { - ensureNotTerminated(); - handler.send('GetDoc', { pdfInfo: doc }); - }; - - var onFailure = function(e) { - if (e instanceof PasswordException) { - if (e.code === PasswordResponses.NEED_PASSWORD) { - handler.send('NeedPassword', e); - } else if (e.code === PasswordResponses.INCORRECT_PASSWORD) { - handler.send('IncorrectPassword', e); - } - } else if (e instanceof InvalidPDFException) { - handler.send('InvalidPDF', e); - } else if (e instanceof MissingPDFException) { - handler.send('MissingPDF', e); - } else if (e instanceof UnexpectedResponseException) { - handler.send('UnexpectedResponse', e); - } else { - handler.send('UnknownError', - new UnknownErrorException(e.message, e.toString())); - } - }; - - ensureNotTerminated(); - - PDFJS.maxImageSize = data.maxImageSize === undefined ? - -1 : data.maxImageSize; - PDFJS.disableFontFace = data.disableFontFace; - PDFJS.disableCreateObjectURL = data.disableCreateObjectURL; - PDFJS.verbosity = data.verbosity; - PDFJS.cMapUrl = data.cMapUrl === undefined ? - null : data.cMapUrl; - PDFJS.cMapPacked = data.cMapPacked === true; - - getPdfManager(data).then(function (newPdfManager) { - if (terminated) { - // We were in a process of setting up the manager, but it got - // terminated in the middle. - newPdfManager.terminate(); - throw new Error('Worker was terminated'); - } - - pdfManager = newPdfManager; - - handler.send('PDFManagerReady', null); - pdfManager.onLoadedStream().then(function(stream) { - handler.send('DataLoaded', { length: stream.bytes.byteLength }); - }); - }).then(function pdfManagerReady() { - ensureNotTerminated(); - - loadDocument(false).then(onSuccess, function loadFailure(ex) { - ensureNotTerminated(); - - // Try again with recoveryMode == true - if (!(ex instanceof XRefParseException)) { - if (ex instanceof PasswordException) { - // after password exception prepare to receive a new password - // to repeat loading - pdfManager.passwordChanged().then(pdfManagerReady); - } - - onFailure(ex); - return; - } - - pdfManager.requestLoadedStream(); - pdfManager.onLoadedStream().then(function() { - ensureNotTerminated(); - - loadDocument(true).then(onSuccess, onFailure); - }); - }, onFailure); - }, onFailure); - }); - - handler.on('GetPage', function wphSetupGetPage(data) { - return pdfManager.getPage(data.pageIndex).then(function(page) { - var rotatePromise = pdfManager.ensure(page, 'rotate'); - var refPromise = pdfManager.ensure(page, 'ref'); - var viewPromise = pdfManager.ensure(page, 'view'); - - return Promise.all([rotatePromise, refPromise, viewPromise]).then( - function(results) { - return { - rotate: results[0], - ref: results[1], - view: results[2] - }; - }); - }); - }); - - handler.on('GetPageIndex', function wphSetupGetPageIndex(data) { - var ref = new Ref(data.ref.num, data.ref.gen); - var catalog = pdfManager.pdfDocument.catalog; - return catalog.getPageIndex(ref); - }); - - handler.on('GetDestinations', - function wphSetupGetDestinations(data) { - return pdfManager.ensureCatalog('destinations'); - } - ); - - handler.on('GetDestination', - function wphSetupGetDestination(data) { - return pdfManager.ensureCatalog('getDestination', [ data.id ]); - } - ); - - handler.on('GetAttachments', - function wphSetupGetAttachments(data) { - return pdfManager.ensureCatalog('attachments'); - } - ); - - handler.on('GetJavaScript', - function wphSetupGetJavaScript(data) { - return pdfManager.ensureCatalog('javaScript'); - } - ); - - handler.on('GetOutline', - function wphSetupGetOutline(data) { - return pdfManager.ensureCatalog('documentOutline'); - } - ); - - handler.on('GetMetadata', - function wphSetupGetMetadata(data) { - return Promise.all([pdfManager.ensureDoc('documentInfo'), - pdfManager.ensureCatalog('metadata')]); - } - ); - - handler.on('GetData', function wphSetupGetData(data) { - pdfManager.requestLoadedStream(); - return pdfManager.onLoadedStream().then(function(stream) { - return stream.bytes; - }); - }); - - handler.on('GetStats', - function wphSetupGetStats(data) { - return pdfManager.pdfDocument.xref.stats; - } - ); - - handler.on('UpdatePassword', function wphSetupUpdatePassword(data) { - pdfManager.updatePassword(data); - }); - - handler.on('GetAnnotations', function wphSetupGetAnnotations(data) { - return pdfManager.getPage(data.pageIndex).then(function(page) { - return pdfManager.ensure(page, 'getAnnotationsData', []); - }); - }); - - handler.on('RenderPageRequest', function wphSetupRenderPage(data) { - var pageIndex = data.pageIndex; - pdfManager.getPage(pageIndex).then(function(page) { - var task = new WorkerTask('RenderPageRequest: page ' + pageIndex); - startWorkerTask(task); - - var pageNum = pageIndex + 1; - var start = Date.now(); - // Pre compile the pdf page and fetch the fonts/images. - page.getOperatorList(handler, task, data.intent).then( - function(operatorList) { - finishWorkerTask(task); - - info('page=' + pageNum + ' - getOperatorList: time=' + - (Date.now() - start) + 'ms, len=' + operatorList.totalLength); - }, function(e) { - finishWorkerTask(task); - if (task.terminated) { - return; // ignoring errors from the terminated thread - } - - var minimumStackMessage = - 'worker.js: while trying to getPage() and getOperatorList()'; - - var wrappedException; - - // Turn the error into an obj that can be serialized - if (typeof e === 'string') { - wrappedException = { - message: e, - stack: minimumStackMessage - }; - } else if (typeof e === 'object') { - wrappedException = { - message: e.message || e.toString(), - stack: e.stack || minimumStackMessage - }; - } else { - wrappedException = { - message: 'Unknown exception type: ' + (typeof e), - stack: minimumStackMessage - }; - } - - handler.send('PageError', { - pageNum: pageNum, - error: wrappedException, - intent: data.intent - }); - }); - }); - }, this); - - handler.on('GetTextContent', function wphExtractText(data) { - var pageIndex = data.pageIndex; - return pdfManager.getPage(pageIndex).then(function(page) { - var task = new WorkerTask('GetTextContent: page ' + pageIndex); - startWorkerTask(task); - var pageNum = pageIndex + 1; - var start = Date.now(); - return page.extractTextContent(task).then(function(textContent) { - finishWorkerTask(task); - info('text indexing: page=' + pageNum + ' - time=' + - (Date.now() - start) + 'ms'); - return textContent; - }, function (reason) { - finishWorkerTask(task); - if (task.terminated) { - return; // ignoring errors from the terminated thread - } - throw reason; - }); - }); - }); - - handler.on('Cleanup', function wphCleanup(data) { - return pdfManager.cleanup(); - }); - - handler.on('Terminate', function wphTerminate(data) { - terminated = true; - if (pdfManager) { - pdfManager.terminate(); - pdfManager = null; - } - if (cancelXHRs) { - cancelXHRs(); - } - - var waitOn = []; - WorkerTasks.forEach(function (task) { - waitOn.push(task.finished); - task.terminate(); - }); - - return Promise.all(waitOn).then(function () {}); - }); - } -}; - -var consoleTimer = {}; - -var workerConsole = { - log: function log() { - var args = Array.prototype.slice.call(arguments); - globalScope.postMessage({ - action: 'console_log', - data: args - }); - }, - - error: function error() { - var args = Array.prototype.slice.call(arguments); - globalScope.postMessage({ - action: 'console_error', - data: args - }); - throw 'pdf.js execution error'; - }, - - time: function time(name) { - consoleTimer[name] = Date.now(); - }, - - timeEnd: function timeEnd(name) { - var time = consoleTimer[name]; - if (!time) { - error('Unknown timer name ' + name); - } - this.log('Timer:', name, Date.now() - time); - } -}; - - -// Worker thread? -if (typeof window === 'undefined') { - if (!('console' in globalScope)) { - globalScope.console = workerConsole; - } - - // Listen for unsupported features so we can pass them on to the main thread. - PDFJS.UnsupportedManager.listen(function (msg) { - globalScope.postMessage({ - action: '_unsupported_feature', - data: msg - }); - }); - - var handler = new MessageHandler('worker_processor', this); - WorkerMessageHandler.setup(handler); -} - - -/* This class implements the QM Coder decoding as defined in - * JPEG 2000 Part I Final Committee Draft Version 1.0 - * Annex C.3 Arithmetic decoding procedure - * available at http://www.jpeg.org/public/fcd15444-1.pdf - * - * The arithmetic decoder is used in conjunction with context models to decode - * JPEG2000 and JBIG2 streams. - */ -var ArithmeticDecoder = (function ArithmeticDecoderClosure() { - // Table C-2 - var QeTable = [ - {qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1}, - {qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0}, - {qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0}, - {qe: 0x0AC1, nmps: 4, nlps: 12, switchFlag: 0}, - {qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0}, - {qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0}, - {qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1}, - {qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0}, - {qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0}, - {qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0}, - {qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0}, - {qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0}, - {qe: 0x1C01, nmps: 13, nlps: 20, switchFlag: 0}, - {qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0}, - {qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1}, - {qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0}, - {qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0}, - {qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0}, - {qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0}, - {qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0}, - {qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0}, - {qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0}, - {qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0}, - {qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0}, - {qe: 0x1C01, nmps: 25, nlps: 22, switchFlag: 0}, - {qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0}, - {qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0}, - {qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0}, - {qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0}, - {qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0}, - {qe: 0x0AC1, nmps: 31, nlps: 28, switchFlag: 0}, - {qe: 0x09C1, nmps: 32, nlps: 29, switchFlag: 0}, - {qe: 0x08A1, nmps: 33, nlps: 30, switchFlag: 0}, - {qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0}, - {qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0}, - {qe: 0x02A1, nmps: 36, nlps: 33, switchFlag: 0}, - {qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0}, - {qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0}, - {qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0}, - {qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0}, - {qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0}, - {qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0}, - {qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0}, - {qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0}, - {qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0}, - {qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0}, - {qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0} - ]; - - // C.3.5 Initialisation of the decoder (INITDEC) - function ArithmeticDecoder(data, start, end) { - this.data = data; - this.bp = start; - this.dataEnd = end; - - this.chigh = data[start]; - this.clow = 0; - - this.byteIn(); - - this.chigh = ((this.chigh << 7) & 0xFFFF) | ((this.clow >> 9) & 0x7F); - this.clow = (this.clow << 7) & 0xFFFF; - this.ct -= 7; - this.a = 0x8000; - } - - ArithmeticDecoder.prototype = { - // C.3.4 Compressed data input (BYTEIN) - byteIn: function ArithmeticDecoder_byteIn() { - var data = this.data; - var bp = this.bp; - if (data[bp] === 0xFF) { - var b1 = data[bp + 1]; - if (b1 > 0x8F) { - this.clow += 0xFF00; - this.ct = 8; - } else { - bp++; - this.clow += (data[bp] << 9); - this.ct = 7; - this.bp = bp; - } - } else { - bp++; - this.clow += bp < this.dataEnd ? (data[bp] << 8) : 0xFF00; - this.ct = 8; - this.bp = bp; - } - if (this.clow > 0xFFFF) { - this.chigh += (this.clow >> 16); - this.clow &= 0xFFFF; - } - }, - // C.3.2 Decoding a decision (DECODE) - readBit: function ArithmeticDecoder_readBit(contexts, pos) { - // contexts are packed into 1 byte: - // highest 7 bits carry cx.index, lowest bit carries cx.mps - var cx_index = contexts[pos] >> 1, cx_mps = contexts[pos] & 1; - var qeTableIcx = QeTable[cx_index]; - var qeIcx = qeTableIcx.qe; - var d; - var a = this.a - qeIcx; - - if (this.chigh < qeIcx) { - // exchangeLps - if (a < qeIcx) { - a = qeIcx; - d = cx_mps; - cx_index = qeTableIcx.nmps; - } else { - a = qeIcx; - d = 1 ^ cx_mps; - if (qeTableIcx.switchFlag === 1) { - cx_mps = d; - } - cx_index = qeTableIcx.nlps; - } - } else { - this.chigh -= qeIcx; - if ((a & 0x8000) !== 0) { - this.a = a; - return cx_mps; - } - // exchangeMps - if (a < qeIcx) { - d = 1 ^ cx_mps; - if (qeTableIcx.switchFlag === 1) { - cx_mps = d; - } - cx_index = qeTableIcx.nlps; - } else { - d = cx_mps; - cx_index = qeTableIcx.nmps; - } - } - // C.3.3 renormD; - do { - if (this.ct === 0) { - this.byteIn(); - } - - a <<= 1; - this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1); - this.clow = (this.clow << 1) & 0xFFFF; - this.ct--; - } while ((a & 0x8000) === 0); - this.a = a; - - contexts[pos] = cx_index << 1 | cx_mps; - return d; - } - }; - - return ArithmeticDecoder; -})(); - - -var JpegImage = (function jpegImage() { - var dctZigZag = new Uint8Array([ - 0, - 1, 8, - 16, 9, 2, - 3, 10, 17, 24, - 32, 25, 18, 11, 4, - 5, 12, 19, 26, 33, 40, - 48, 41, 34, 27, 20, 13, 6, - 7, 14, 21, 28, 35, 42, 49, 56, - 57, 50, 43, 36, 29, 22, 15, - 23, 30, 37, 44, 51, 58, - 59, 52, 45, 38, 31, - 39, 46, 53, 60, - 61, 54, 47, - 55, 62, - 63 - ]); - - var dctCos1 = 4017; // cos(pi/16) - var dctSin1 = 799; // sin(pi/16) - var dctCos3 = 3406; // cos(3*pi/16) - var dctSin3 = 2276; // sin(3*pi/16) - var dctCos6 = 1567; // cos(6*pi/16) - var dctSin6 = 3784; // sin(6*pi/16) - var dctSqrt2 = 5793; // sqrt(2) - var dctSqrt1d2 = 2896; // sqrt(2) / 2 - - function constructor() { - } - - function buildHuffmanTable(codeLengths, values) { - var k = 0, code = [], i, j, length = 16; - while (length > 0 && !codeLengths[length - 1]) { - length--; - } - code.push({children: [], index: 0}); - var p = code[0], q; - for (i = 0; i < length; i++) { - for (j = 0; j < codeLengths[i]; j++) { - p = code.pop(); - p.children[p.index] = values[k]; - while (p.index > 0) { - p = code.pop(); - } - p.index++; - code.push(p); - while (code.length <= i) { - code.push(q = {children: [], index: 0}); - p.children[p.index] = q.children; - p = q; - } - k++; - } - if (i + 1 < length) { - // p here points to last code - code.push(q = {children: [], index: 0}); - p.children[p.index] = q.children; - p = q; - } - } - return code[0].children; - } - - function getBlockBufferOffset(component, row, col) { - return 64 * ((component.blocksPerLine + 1) * row + col); - } - - function decodeScan(data, offset, frame, components, resetInterval, - spectralStart, spectralEnd, successivePrev, successive) { - var precision = frame.precision; - var samplesPerLine = frame.samplesPerLine; - var scanLines = frame.scanLines; - var mcusPerLine = frame.mcusPerLine; - var progressive = frame.progressive; - var maxH = frame.maxH, maxV = frame.maxV; - - var startOffset = offset, bitsData = 0, bitsCount = 0; - - function readBit() { - if (bitsCount > 0) { - bitsCount--; - return (bitsData >> bitsCount) & 1; - } - bitsData = data[offset++]; - if (bitsData === 0xFF) { - var nextByte = data[offset++]; - if (nextByte) { - throw 'unexpected marker: ' + - ((bitsData << 8) | nextByte).toString(16); - } - // unstuff 0 - } - bitsCount = 7; - return bitsData >>> 7; - } - - function decodeHuffman(tree) { - var node = tree; - while (true) { - node = node[readBit()]; - if (typeof node === 'number') { - return node; - } - if (typeof node !== 'object') { - throw 'invalid huffman sequence'; - } - } - } - - function receive(length) { - var n = 0; - while (length > 0) { - n = (n << 1) | readBit(); - length--; - } - return n; - } - - function receiveAndExtend(length) { - if (length === 1) { - return readBit() === 1 ? 1 : -1; - } - var n = receive(length); - if (n >= 1 << (length - 1)) { - return n; - } - return n + (-1 << length) + 1; - } - - function decodeBaseline(component, offset) { - var t = decodeHuffman(component.huffmanTableDC); - var diff = t === 0 ? 0 : receiveAndExtend(t); - component.blockData[offset] = (component.pred += diff); - var k = 1; - while (k < 64) { - var rs = decodeHuffman(component.huffmanTableAC); - var s = rs & 15, r = rs >> 4; - if (s === 0) { - if (r < 15) { - break; - } - k += 16; - continue; - } - k += r; - var z = dctZigZag[k]; - component.blockData[offset + z] = receiveAndExtend(s); - k++; - } - } - - function decodeDCFirst(component, offset) { - var t = decodeHuffman(component.huffmanTableDC); - var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive); - component.blockData[offset] = (component.pred += diff); - } - - function decodeDCSuccessive(component, offset) { - component.blockData[offset] |= readBit() << successive; - } - - var eobrun = 0; - function decodeACFirst(component, offset) { - if (eobrun > 0) { - eobrun--; - return; - } - var k = spectralStart, e = spectralEnd; - while (k <= e) { - var rs = decodeHuffman(component.huffmanTableAC); - var s = rs & 15, r = rs >> 4; - if (s === 0) { - if (r < 15) { - eobrun = receive(r) + (1 << r) - 1; - break; - } - k += 16; - continue; - } - k += r; - var z = dctZigZag[k]; - component.blockData[offset + z] = - receiveAndExtend(s) * (1 << successive); - k++; - } - } - - var successiveACState = 0, successiveACNextValue; - function decodeACSuccessive(component, offset) { - var k = spectralStart; - var e = spectralEnd; - var r = 0; - var s; - var rs; - while (k <= e) { - var z = dctZigZag[k]; - switch (successiveACState) { - case 0: // initial state - rs = decodeHuffman(component.huffmanTableAC); - s = rs & 15; - r = rs >> 4; - if (s === 0) { - if (r < 15) { - eobrun = receive(r) + (1 << r); - successiveACState = 4; - } else { - r = 16; - successiveACState = 1; - } - } else { - if (s !== 1) { - throw 'invalid ACn encoding'; - } - successiveACNextValue = receiveAndExtend(s); - successiveACState = r ? 2 : 3; - } - continue; - case 1: // skipping r zero items - case 2: - if (component.blockData[offset + z]) { - component.blockData[offset + z] += (readBit() << successive); - } else { - r--; - if (r === 0) { - successiveACState = successiveACState === 2 ? 3 : 0; - } - } - break; - case 3: // set value for a zero item - if (component.blockData[offset + z]) { - component.blockData[offset + z] += (readBit() << successive); - } else { - component.blockData[offset + z] = - successiveACNextValue << successive; - successiveACState = 0; - } - break; - case 4: // eob - if (component.blockData[offset + z]) { - component.blockData[offset + z] += (readBit() << successive); - } - break; - } - k++; - } - if (successiveACState === 4) { - eobrun--; - if (eobrun === 0) { - successiveACState = 0; - } - } - } - - function decodeMcu(component, decode, mcu, row, col) { - var mcuRow = (mcu / mcusPerLine) | 0; - var mcuCol = mcu % mcusPerLine; - var blockRow = mcuRow * component.v + row; - var blockCol = mcuCol * component.h + col; - var offset = getBlockBufferOffset(component, blockRow, blockCol); - decode(component, offset); - } - - function decodeBlock(component, decode, mcu) { - var blockRow = (mcu / component.blocksPerLine) | 0; - var blockCol = mcu % component.blocksPerLine; - var offset = getBlockBufferOffset(component, blockRow, blockCol); - decode(component, offset); - } - - var componentsLength = components.length; - var component, i, j, k, n; - var decodeFn; - if (progressive) { - if (spectralStart === 0) { - decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; - } else { - decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; - } - } else { - decodeFn = decodeBaseline; - } - - var mcu = 0, marker; - var mcuExpected; - if (componentsLength === 1) { - mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; - } else { - mcuExpected = mcusPerLine * frame.mcusPerColumn; - } - if (!resetInterval) { - resetInterval = mcuExpected; - } - - var h, v; - while (mcu < mcuExpected) { - // reset interval stuff - for (i = 0; i < componentsLength; i++) { - components[i].pred = 0; - } - eobrun = 0; - - if (componentsLength === 1) { - component = components[0]; - for (n = 0; n < resetInterval; n++) { - decodeBlock(component, decodeFn, mcu); - mcu++; - } - } else { - for (n = 0; n < resetInterval; n++) { - for (i = 0; i < componentsLength; i++) { - component = components[i]; - h = component.h; - v = component.v; - for (j = 0; j < v; j++) { - for (k = 0; k < h; k++) { - decodeMcu(component, decodeFn, mcu, j, k); - } - } - } - mcu++; - } - } - - // find marker - bitsCount = 0; - marker = (data[offset] << 8) | data[offset + 1]; - if (marker <= 0xFF00) { - throw 'marker was not found'; - } - - if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx - offset += 2; - } else { - break; - } - } - - return offset - startOffset; - } - - // A port of poppler's IDCT method which in turn is taken from: - // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz, - // 'Practical Fast 1-D DCT Algorithms with 11 Multiplications', - // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989, - // 988-991. - function quantizeAndInverse(component, blockBufferOffset, p) { - var qt = component.quantizationTable, blockData = component.blockData; - var v0, v1, v2, v3, v4, v5, v6, v7; - var p0, p1, p2, p3, p4, p5, p6, p7; - var t; - - // inverse DCT on rows - for (var row = 0; row < 64; row += 8) { - // gather block data - p0 = blockData[blockBufferOffset + row]; - p1 = blockData[blockBufferOffset + row + 1]; - p2 = blockData[blockBufferOffset + row + 2]; - p3 = blockData[blockBufferOffset + row + 3]; - p4 = blockData[blockBufferOffset + row + 4]; - p5 = blockData[blockBufferOffset + row + 5]; - p6 = blockData[blockBufferOffset + row + 6]; - p7 = blockData[blockBufferOffset + row + 7]; - - // dequant p0 - p0 *= qt[row]; - - // check for all-zero AC coefficients - if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { - t = (dctSqrt2 * p0 + 512) >> 10; - p[row] = t; - p[row + 1] = t; - p[row + 2] = t; - p[row + 3] = t; - p[row + 4] = t; - p[row + 5] = t; - p[row + 6] = t; - p[row + 7] = t; - continue; - } - // dequant p1 ... p7 - p1 *= qt[row + 1]; - p2 *= qt[row + 2]; - p3 *= qt[row + 3]; - p4 *= qt[row + 4]; - p5 *= qt[row + 5]; - p6 *= qt[row + 6]; - p7 *= qt[row + 7]; - - // stage 4 - v0 = (dctSqrt2 * p0 + 128) >> 8; - v1 = (dctSqrt2 * p4 + 128) >> 8; - v2 = p2; - v3 = p6; - v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8; - v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8; - v5 = p3 << 4; - v6 = p5 << 4; - - // stage 3 - v0 = (v0 + v1 + 1) >> 1; - v1 = v0 - v1; - t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8; - v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8; - v3 = t; - v4 = (v4 + v6 + 1) >> 1; - v6 = v4 - v6; - v7 = (v7 + v5 + 1) >> 1; - v5 = v7 - v5; - - // stage 2 - v0 = (v0 + v3 + 1) >> 1; - v3 = v0 - v3; - v1 = (v1 + v2 + 1) >> 1; - v2 = v1 - v2; - t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; - v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; - v7 = t; - t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; - v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; - v6 = t; - - // stage 1 - p[row] = v0 + v7; - p[row + 7] = v0 - v7; - p[row + 1] = v1 + v6; - p[row + 6] = v1 - v6; - p[row + 2] = v2 + v5; - p[row + 5] = v2 - v5; - p[row + 3] = v3 + v4; - p[row + 4] = v3 - v4; - } - - // inverse DCT on columns - for (var col = 0; col < 8; ++col) { - p0 = p[col]; - p1 = p[col + 8]; - p2 = p[col + 16]; - p3 = p[col + 24]; - p4 = p[col + 32]; - p5 = p[col + 40]; - p6 = p[col + 48]; - p7 = p[col + 56]; - - // check for all-zero AC coefficients - if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { - t = (dctSqrt2 * p0 + 8192) >> 14; - // convert to 8 bit - t = (t < -2040) ? 0 : (t >= 2024) ? 255 : (t + 2056) >> 4; - blockData[blockBufferOffset + col] = t; - blockData[blockBufferOffset + col + 8] = t; - blockData[blockBufferOffset + col + 16] = t; - blockData[blockBufferOffset + col + 24] = t; - blockData[blockBufferOffset + col + 32] = t; - blockData[blockBufferOffset + col + 40] = t; - blockData[blockBufferOffset + col + 48] = t; - blockData[blockBufferOffset + col + 56] = t; - continue; - } - - // stage 4 - v0 = (dctSqrt2 * p0 + 2048) >> 12; - v1 = (dctSqrt2 * p4 + 2048) >> 12; - v2 = p2; - v3 = p6; - v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12; - v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12; - v5 = p3; - v6 = p5; - - // stage 3 - // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when - // converting to UInt8 range later. - v0 = ((v0 + v1 + 1) >> 1) + 4112; - v1 = v0 - v1; - t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12; - v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12; - v3 = t; - v4 = (v4 + v6 + 1) >> 1; - v6 = v4 - v6; - v7 = (v7 + v5 + 1) >> 1; - v5 = v7 - v5; - - // stage 2 - v0 = (v0 + v3 + 1) >> 1; - v3 = v0 - v3; - v1 = (v1 + v2 + 1) >> 1; - v2 = v1 - v2; - t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; - v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; - v7 = t; - t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; - v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; - v6 = t; - - // stage 1 - p0 = v0 + v7; - p7 = v0 - v7; - p1 = v1 + v6; - p6 = v1 - v6; - p2 = v2 + v5; - p5 = v2 - v5; - p3 = v3 + v4; - p4 = v3 - v4; - - // convert to 8-bit integers - p0 = (p0 < 16) ? 0 : (p0 >= 4080) ? 255 : p0 >> 4; - p1 = (p1 < 16) ? 0 : (p1 >= 4080) ? 255 : p1 >> 4; - p2 = (p2 < 16) ? 0 : (p2 >= 4080) ? 255 : p2 >> 4; - p3 = (p3 < 16) ? 0 : (p3 >= 4080) ? 255 : p3 >> 4; - p4 = (p4 < 16) ? 0 : (p4 >= 4080) ? 255 : p4 >> 4; - p5 = (p5 < 16) ? 0 : (p5 >= 4080) ? 255 : p5 >> 4; - p6 = (p6 < 16) ? 0 : (p6 >= 4080) ? 255 : p6 >> 4; - p7 = (p7 < 16) ? 0 : (p7 >= 4080) ? 255 : p7 >> 4; - - // store block data - blockData[blockBufferOffset + col] = p0; - blockData[blockBufferOffset + col + 8] = p1; - blockData[blockBufferOffset + col + 16] = p2; - blockData[blockBufferOffset + col + 24] = p3; - blockData[blockBufferOffset + col + 32] = p4; - blockData[blockBufferOffset + col + 40] = p5; - blockData[blockBufferOffset + col + 48] = p6; - blockData[blockBufferOffset + col + 56] = p7; - } - } - - function buildComponentData(frame, component) { - var blocksPerLine = component.blocksPerLine; - var blocksPerColumn = component.blocksPerColumn; - var computationBuffer = new Int16Array(64); - - for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) { - for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) { - var offset = getBlockBufferOffset(component, blockRow, blockCol); - quantizeAndInverse(component, offset, computationBuffer); - } - } - return component.blockData; - } - - function clamp0to255(a) { - return a <= 0 ? 0 : a >= 255 ? 255 : a; - } - - constructor.prototype = { - parse: function parse(data) { - - function readUint16() { - var value = (data[offset] << 8) | data[offset + 1]; - offset += 2; - return value; - } - - function readDataBlock() { - var length = readUint16(); - var array = data.subarray(offset, offset + length - 2); - offset += array.length; - return array; - } - - function prepareComponents(frame) { - var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH); - var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV); - for (var i = 0; i < frame.components.length; i++) { - component = frame.components[i]; - var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * - component.h / frame.maxH); - var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * - component.v / frame.maxV); - var blocksPerLineForMcu = mcusPerLine * component.h; - var blocksPerColumnForMcu = mcusPerColumn * component.v; - - var blocksBufferSize = 64 * blocksPerColumnForMcu * - (blocksPerLineForMcu + 1); - component.blockData = new Int16Array(blocksBufferSize); - component.blocksPerLine = blocksPerLine; - component.blocksPerColumn = blocksPerColumn; - } - frame.mcusPerLine = mcusPerLine; - frame.mcusPerColumn = mcusPerColumn; - } - - var offset = 0, length = data.length; - var jfif = null; - var adobe = null; - var pixels = null; - var frame, resetInterval; - var quantizationTables = []; - var huffmanTablesAC = [], huffmanTablesDC = []; - var fileMarker = readUint16(); - if (fileMarker !== 0xFFD8) { // SOI (Start of Image) - throw 'SOI not found'; - } - - fileMarker = readUint16(); - while (fileMarker !== 0xFFD9) { // EOI (End of image) - var i, j, l; - switch(fileMarker) { - case 0xFFE0: // APP0 (Application Specific) - case 0xFFE1: // APP1 - case 0xFFE2: // APP2 - case 0xFFE3: // APP3 - case 0xFFE4: // APP4 - case 0xFFE5: // APP5 - case 0xFFE6: // APP6 - case 0xFFE7: // APP7 - case 0xFFE8: // APP8 - case 0xFFE9: // APP9 - case 0xFFEA: // APP10 - case 0xFFEB: // APP11 - case 0xFFEC: // APP12 - case 0xFFED: // APP13 - case 0xFFEE: // APP14 - case 0xFFEF: // APP15 - case 0xFFFE: // COM (Comment) - var appData = readDataBlock(); - - if (fileMarker === 0xFFE0) { - if (appData[0] === 0x4A && appData[1] === 0x46 && - appData[2] === 0x49 && appData[3] === 0x46 && - appData[4] === 0) { // 'JFIF\x00' - jfif = { - version: { major: appData[5], minor: appData[6] }, - densityUnits: appData[7], - xDensity: (appData[8] << 8) | appData[9], - yDensity: (appData[10] << 8) | appData[11], - thumbWidth: appData[12], - thumbHeight: appData[13], - thumbData: appData.subarray(14, 14 + - 3 * appData[12] * appData[13]) - }; - } - } - // TODO APP1 - Exif - if (fileMarker === 0xFFEE) { - if (appData[0] === 0x41 && appData[1] === 0x64 && - appData[2] === 0x6F && appData[3] === 0x62 && - appData[4] === 0x65) { // 'Adobe' - adobe = { - version: (appData[5] << 8) | appData[6], - flags0: (appData[7] << 8) | appData[8], - flags1: (appData[9] << 8) | appData[10], - transformCode: appData[11] - }; - } - } - break; - - case 0xFFDB: // DQT (Define Quantization Tables) - var quantizationTablesLength = readUint16(); - var quantizationTablesEnd = quantizationTablesLength + offset - 2; - var z; - while (offset < quantizationTablesEnd) { - var quantizationTableSpec = data[offset++]; - var tableData = new Uint16Array(64); - if ((quantizationTableSpec >> 4) === 0) { // 8 bit values - for (j = 0; j < 64; j++) { - z = dctZigZag[j]; - tableData[z] = data[offset++]; - } - } else if ((quantizationTableSpec >> 4) === 1) { //16 bit - for (j = 0; j < 64; j++) { - z = dctZigZag[j]; - tableData[z] = readUint16(); - } - } else { - throw 'DQT: invalid table spec'; - } - quantizationTables[quantizationTableSpec & 15] = tableData; - } - break; - - case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT) - case 0xFFC1: // SOF1 (Start of Frame, Extended DCT) - case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT) - if (frame) { - throw 'Only single frame JPEGs supported'; - } - readUint16(); // skip data length - frame = {}; - frame.extended = (fileMarker === 0xFFC1); - frame.progressive = (fileMarker === 0xFFC2); - frame.precision = data[offset++]; - frame.scanLines = readUint16(); - frame.samplesPerLine = readUint16(); - frame.components = []; - frame.componentIds = {}; - var componentsCount = data[offset++], componentId; - var maxH = 0, maxV = 0; - for (i = 0; i < componentsCount; i++) { - componentId = data[offset]; - var h = data[offset + 1] >> 4; - var v = data[offset + 1] & 15; - if (maxH < h) { - maxH = h; - } - if (maxV < v) { - maxV = v; - } - var qId = data[offset + 2]; - l = frame.components.push({ - h: h, - v: v, - quantizationTable: quantizationTables[qId] - }); - frame.componentIds[componentId] = l - 1; - offset += 3; - } - frame.maxH = maxH; - frame.maxV = maxV; - prepareComponents(frame); - break; - - case 0xFFC4: // DHT (Define Huffman Tables) - var huffmanLength = readUint16(); - for (i = 2; i < huffmanLength;) { - var huffmanTableSpec = data[offset++]; - var codeLengths = new Uint8Array(16); - var codeLengthSum = 0; - for (j = 0; j < 16; j++, offset++) { - codeLengthSum += (codeLengths[j] = data[offset]); - } - var huffmanValues = new Uint8Array(codeLengthSum); - for (j = 0; j < codeLengthSum; j++, offset++) { - huffmanValues[j] = data[offset]; - } - i += 17 + codeLengthSum; - - ((huffmanTableSpec >> 4) === 0 ? - huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = - buildHuffmanTable(codeLengths, huffmanValues); - } - break; - - case 0xFFDD: // DRI (Define Restart Interval) - readUint16(); // skip data length - resetInterval = readUint16(); - break; - - case 0xFFDA: // SOS (Start of Scan) - var scanLength = readUint16(); - var selectorsCount = data[offset++]; - var components = [], component; - for (i = 0; i < selectorsCount; i++) { - var componentIndex = frame.componentIds[data[offset++]]; - component = frame.components[componentIndex]; - var tableSpec = data[offset++]; - component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; - component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; - components.push(component); - } - var spectralStart = data[offset++]; - var spectralEnd = data[offset++]; - var successiveApproximation = data[offset++]; - var processed = decodeScan(data, offset, - frame, components, resetInterval, - spectralStart, spectralEnd, - successiveApproximation >> 4, successiveApproximation & 15); - offset += processed; - break; - - case 0xFFFF: // Fill bytes - if (data[offset] !== 0xFF) { // Avoid skipping a valid marker. - offset--; - } - break; - - default: - if (data[offset - 3] === 0xFF && - data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) { - // could be incorrect encoding -- last 0xFF byte of the previous - // block was eaten by the encoder - offset -= 3; - break; - } - throw 'unknown JPEG marker ' + fileMarker.toString(16); - } - fileMarker = readUint16(); - } - - this.width = frame.samplesPerLine; - this.height = frame.scanLines; - this.jfif = jfif; - this.adobe = adobe; - this.components = []; - for (i = 0; i < frame.components.length; i++) { - component = frame.components[i]; - this.components.push({ - output: buildComponentData(frame, component), - scaleX: component.h / frame.maxH, - scaleY: component.v / frame.maxV, - blocksPerLine: component.blocksPerLine, - blocksPerColumn: component.blocksPerColumn - }); - } - this.numComponents = this.components.length; - }, - - _getLinearizedBlockData: function getLinearizedBlockData(width, height) { - var scaleX = this.width / width, scaleY = this.height / height; - - var component, componentScaleX, componentScaleY, blocksPerScanline; - var x, y, i, j, k; - var index; - var offset = 0; - var output; - var numComponents = this.components.length; - var dataLength = width * height * numComponents; - var data = new Uint8Array(dataLength); - var xScaleBlockOffset = new Uint32Array(width); - var mask3LSB = 0xfffffff8; // used to clear the 3 LSBs - - for (i = 0; i < numComponents; i++) { - component = this.components[i]; - componentScaleX = component.scaleX * scaleX; - componentScaleY = component.scaleY * scaleY; - offset = i; - output = component.output; - blocksPerScanline = (component.blocksPerLine + 1) << 3; - // precalculate the xScaleBlockOffset - for (x = 0; x < width; x++) { - j = 0 | (x * componentScaleX); - xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7); - } - // linearize the blocks of the component - for (y = 0; y < height; y++) { - j = 0 | (y * componentScaleY); - index = blocksPerScanline * (j & mask3LSB) | ((j & 7) << 3); - for (x = 0; x < width; x++) { - data[offset] = output[index + xScaleBlockOffset[x]]; - offset += numComponents; - } - } - } - - // decodeTransform contains pairs of multiplier (-256..256) and additive - var transform = this.decodeTransform; - if (transform) { - for (i = 0; i < dataLength;) { - for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) { - data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1]; - } - } - } - return data; - }, - - _isColorConversionNeeded: function isColorConversionNeeded() { - if (this.adobe && this.adobe.transformCode) { - // The adobe transform marker overrides any previous setting - return true; - } else if (this.numComponents === 3) { - return true; - } else { - return false; - } - }, - - _convertYccToRgb: function convertYccToRgb(data) { - var Y, Cb, Cr; - for (var i = 0, length = data.length; i < length; i += 3) { - Y = data[i ]; - Cb = data[i + 1]; - Cr = data[i + 2]; - data[i ] = clamp0to255(Y - 179.456 + 1.402 * Cr); - data[i + 1] = clamp0to255(Y + 135.459 - 0.344 * Cb - 0.714 * Cr); - data[i + 2] = clamp0to255(Y - 226.816 + 1.772 * Cb); - } - return data; - }, - - _convertYcckToRgb: function convertYcckToRgb(data) { - var Y, Cb, Cr, k; - var offset = 0; - for (var i = 0, length = data.length; i < length; i += 4) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - k = data[i + 3]; - - var r = -122.67195406894 + - Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - - 0.154362151871126) + - Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - - 0.00477271405408747 * k + 1.53380253221734) + - Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + - 0.48357088451265) + - k * (-0.000336197177618394 * k + 0.484791561490776); - - var g = 107.268039397724 + - Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + - 0.000659397001245577 * Y + 0.000426105652938837 * k - - 0.176491792462875) + - Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + - 0.000770482631801132 * k - 0.151051492775562) + - Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + - 0.25802910206845) + - k * (-0.000318913117588328 * k - 0.213742400323665); - - var b = -20.810012546947 + - Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + - 0.0020741088115012 * Y - 0.00288260236853442 * k + - 0.814272968359295) + - Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + - 0.000560833691242812 * k - 0.195152027534049) + - Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + - 0.116935020465145) + - k * (-0.000343531996510555 * k + 0.24165260232407); - - data[offset++] = clamp0to255(r); - data[offset++] = clamp0to255(g); - data[offset++] = clamp0to255(b); - } - return data; - }, - - _convertYcckToCmyk: function convertYcckToCmyk(data) { - var Y, Cb, Cr; - for (var i = 0, length = data.length; i < length; i += 4) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - data[i ] = clamp0to255(434.456 - Y - 1.402 * Cr); - data[i + 1] = clamp0to255(119.541 - Y + 0.344 * Cb + 0.714 * Cr); - data[i + 2] = clamp0to255(481.816 - Y - 1.772 * Cb); - // K in data[i + 3] is unchanged - } - return data; - }, - - _convertCmykToRgb: function convertCmykToRgb(data) { - var c, m, y, k; - var offset = 0; - var min = -255 * 255 * 255; - var scale = 1 / 255 / 255; - for (var i = 0, length = data.length; i < length; i += 4) { - c = data[i]; - m = data[i + 1]; - y = data[i + 2]; - k = data[i + 3]; - - var r = - c * (-4.387332384609988 * c + 54.48615194189176 * m + - 18.82290502165302 * y + 212.25662451639585 * k - - 72734.4411664936) + - m * (1.7149763477362134 * m - 5.6096736904047315 * y - - 17.873870861415444 * k - 1401.7366389350734) + - y * (-2.5217340131683033 * y - 21.248923337353073 * k + - 4465.541406466231) - - k * (21.86122147463605 * k + 48317.86113160301); - var g = - c * (8.841041422036149 * c + 60.118027045597366 * m + - 6.871425592049007 * y + 31.159100130055922 * k - - 20220.756542821975) + - m * (-15.310361306967817 * m + 17.575251261109482 * y + - 131.35250912493976 * k - 48691.05921601825) + - y * (4.444339102852739 * y + 9.8632861493405 * k - - 6341.191035517494) - - k * (20.737325471181034 * k + 47890.15695978492); - var b = - c * (0.8842522430003296 * c + 8.078677503112928 * m + - 30.89978309703729 * y - 0.23883238689178934 * k - - 3616.812083916688) + - m * (10.49593273432072 * m + 63.02378494754052 * y + - 50.606957656360734 * k - 28620.90484698408) + - y * (0.03296041114873217 * y + 115.60384449646641 * k - - 49363.43385999684) - - k * (22.33816807309886 * k + 45932.16563550634); - - data[offset++] = r >= 0 ? 255 : r <= min ? 0 : 255 + r * scale | 0; - data[offset++] = g >= 0 ? 255 : g <= min ? 0 : 255 + g * scale | 0; - data[offset++] = b >= 0 ? 255 : b <= min ? 0 : 255 + b * scale | 0; - } - return data; - }, - - getData: function getData(width, height, forceRGBoutput) { - if (this.numComponents > 4) { - throw 'Unsupported color mode'; - } - // type of data: Uint8Array(width * height * numComponents) - var data = this._getLinearizedBlockData(width, height); - - if (this.numComponents === 3) { - return this._convertYccToRgb(data); - } else if (this.numComponents === 4) { - if (this._isColorConversionNeeded()) { - if (forceRGBoutput) { - return this._convertYcckToRgb(data); - } else { - return this._convertYcckToCmyk(data); - } - } else if (forceRGBoutput) { - return this._convertCmykToRgb(data); - } - } - return data; - } - }; - - return constructor; -})(); - - -var JpxImage = (function JpxImageClosure() { - // Table E.1 - var SubbandsGainLog2 = { - 'LL': 0, - 'LH': 1, - 'HL': 1, - 'HH': 2 - }; - function JpxImage() { - this.failOnCorruptedImage = false; - } - JpxImage.prototype = { - parse: function JpxImage_parse(data) { - - var head = readUint16(data, 0); - // No box header, immediate start of codestream (SOC) - if (head === 0xFF4F) { - this.parseCodestream(data, 0, data.length); - return; - } - - var position = 0, length = data.length; - while (position < length) { - var headerSize = 8; - var lbox = readUint32(data, position); - var tbox = readUint32(data, position + 4); - position += headerSize; - if (lbox === 1) { - // XLBox: read UInt64 according to spec. - // JavaScript's int precision of 53 bit should be sufficient here. - lbox = readUint32(data, position) * 4294967296 + - readUint32(data, position + 4); - position += 8; - headerSize += 8; - } - if (lbox === 0) { - lbox = length - position + headerSize; - } - if (lbox < headerSize) { - throw new Error('JPX Error: Invalid box field size'); - } - var dataLength = lbox - headerSize; - var jumpDataLength = true; - switch (tbox) { - case 0x6A703268: // 'jp2h' - jumpDataLength = false; // parsing child boxes - break; - case 0x636F6C72: // 'colr' - // Colorspaces are not used, the CS from the PDF is used. - var method = data[position]; - var precedence = data[position + 1]; - var approximation = data[position + 2]; - if (method === 1) { - // enumerated colorspace - var colorspace = readUint32(data, position + 3); - switch (colorspace) { - case 16: // this indicates a sRGB colorspace - case 17: // this indicates a grayscale colorspace - case 18: // this indicates a YUV colorspace - break; - default: - warn('Unknown colorspace ' + colorspace); - break; - } - } else if (method === 2) { - info('ICC profile not supported'); - } - break; - case 0x6A703263: // 'jp2c' - this.parseCodestream(data, position, position + dataLength); - break; - case 0x6A502020: // 'jP\024\024' - if (0x0d0a870a !== readUint32(data, position)) { - warn('Invalid JP2 signature'); - } - break; - // The following header types are valid but currently not used: - case 0x6A501A1A: // 'jP\032\032' - case 0x66747970: // 'ftyp' - case 0x72726571: // 'rreq' - case 0x72657320: // 'res ' - case 0x69686472: // 'ihdr' - break; - default: - var headerType = String.fromCharCode((tbox >> 24) & 0xFF, - (tbox >> 16) & 0xFF, - (tbox >> 8) & 0xFF, - tbox & 0xFF); - warn('Unsupported header type ' + tbox + ' (' + headerType + ')'); - break; - } - if (jumpDataLength) { - position += dataLength; - } - } - }, - parseImageProperties: function JpxImage_parseImageProperties(stream) { - var newByte = stream.getByte(); - while (newByte >= 0) { - var oldByte = newByte; - newByte = stream.getByte(); - var code = (oldByte << 8) | newByte; - // Image and tile size (SIZ) - if (code === 0xFF51) { - stream.skip(4); - var Xsiz = stream.getInt32() >>> 0; // Byte 4 - var Ysiz = stream.getInt32() >>> 0; // Byte 8 - var XOsiz = stream.getInt32() >>> 0; // Byte 12 - var YOsiz = stream.getInt32() >>> 0; // Byte 16 - stream.skip(16); - var Csiz = stream.getUint16(); // Byte 36 - this.width = Xsiz - XOsiz; - this.height = Ysiz - YOsiz; - this.componentsCount = Csiz; - // Results are always returned as Uint8Arrays - this.bitsPerComponent = 8; - return; - } - } - throw new Error('JPX Error: No size marker found in JPX stream'); - }, - parseCodestream: function JpxImage_parseCodestream(data, start, end) { - var context = {}; - try { - var doNotRecover = false; - var position = start; - while (position + 1 < end) { - var code = readUint16(data, position); - position += 2; - - var length = 0, j, sqcd, spqcds, spqcdSize, scalarExpounded, tile; - switch (code) { - case 0xFF4F: // Start of codestream (SOC) - context.mainHeader = true; - break; - case 0xFFD9: // End of codestream (EOC) - break; - case 0xFF51: // Image and tile size (SIZ) - length = readUint16(data, position); - var siz = {}; - siz.Xsiz = readUint32(data, position + 4); - siz.Ysiz = readUint32(data, position + 8); - siz.XOsiz = readUint32(data, position + 12); - siz.YOsiz = readUint32(data, position + 16); - siz.XTsiz = readUint32(data, position + 20); - siz.YTsiz = readUint32(data, position + 24); - siz.XTOsiz = readUint32(data, position + 28); - siz.YTOsiz = readUint32(data, position + 32); - var componentsCount = readUint16(data, position + 36); - siz.Csiz = componentsCount; - var components = []; - j = position + 38; - for (var i = 0; i < componentsCount; i++) { - var component = { - precision: (data[j] & 0x7F) + 1, - isSigned: !!(data[j] & 0x80), - XRsiz: data[j + 1], - YRsiz: data[j + 1] - }; - calculateComponentDimensions(component, siz); - components.push(component); - } - context.SIZ = siz; - context.components = components; - calculateTileGrids(context, components); - context.QCC = []; - context.COC = []; - break; - case 0xFF5C: // Quantization default (QCD) - length = readUint16(data, position); - var qcd = {}; - j = position + 2; - sqcd = data[j++]; - switch (sqcd & 0x1F) { - case 0: - spqcdSize = 8; - scalarExpounded = true; - break; - case 1: - spqcdSize = 16; - scalarExpounded = false; - break; - case 2: - spqcdSize = 16; - scalarExpounded = true; - break; - default: - throw new Error('JPX Error: Invalid SQcd value ' + sqcd); - } - qcd.noQuantization = (spqcdSize === 8); - qcd.scalarExpounded = scalarExpounded; - qcd.guardBits = sqcd >> 5; - spqcds = []; - while (j < length + position) { - var spqcd = {}; - if (spqcdSize === 8) { - spqcd.epsilon = data[j++] >> 3; - spqcd.mu = 0; - } else { - spqcd.epsilon = data[j] >> 3; - spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1]; - j += 2; - } - spqcds.push(spqcd); - } - qcd.SPqcds = spqcds; - if (context.mainHeader) { - context.QCD = qcd; - } else { - context.currentTile.QCD = qcd; - context.currentTile.QCC = []; - } - break; - case 0xFF5D: // Quantization component (QCC) - length = readUint16(data, position); - var qcc = {}; - j = position + 2; - var cqcc; - if (context.SIZ.Csiz < 257) { - cqcc = data[j++]; - } else { - cqcc = readUint16(data, j); - j += 2; - } - sqcd = data[j++]; - switch (sqcd & 0x1F) { - case 0: - spqcdSize = 8; - scalarExpounded = true; - break; - case 1: - spqcdSize = 16; - scalarExpounded = false; - break; - case 2: - spqcdSize = 16; - scalarExpounded = true; - break; - default: - throw new Error('JPX Error: Invalid SQcd value ' + sqcd); - } - qcc.noQuantization = (spqcdSize === 8); - qcc.scalarExpounded = scalarExpounded; - qcc.guardBits = sqcd >> 5; - spqcds = []; - while (j < (length + position)) { - spqcd = {}; - if (spqcdSize === 8) { - spqcd.epsilon = data[j++] >> 3; - spqcd.mu = 0; - } else { - spqcd.epsilon = data[j] >> 3; - spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1]; - j += 2; - } - spqcds.push(spqcd); - } - qcc.SPqcds = spqcds; - if (context.mainHeader) { - context.QCC[cqcc] = qcc; - } else { - context.currentTile.QCC[cqcc] = qcc; - } - break; - case 0xFF52: // Coding style default (COD) - length = readUint16(data, position); - var cod = {}; - j = position + 2; - var scod = data[j++]; - cod.entropyCoderWithCustomPrecincts = !!(scod & 1); - cod.sopMarkerUsed = !!(scod & 2); - cod.ephMarkerUsed = !!(scod & 4); - cod.progressionOrder = data[j++]; - cod.layersCount = readUint16(data, j); - j += 2; - cod.multipleComponentTransform = data[j++]; - - cod.decompositionLevelsCount = data[j++]; - cod.xcb = (data[j++] & 0xF) + 2; - cod.ycb = (data[j++] & 0xF) + 2; - var blockStyle = data[j++]; - cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1); - cod.resetContextProbabilities = !!(blockStyle & 2); - cod.terminationOnEachCodingPass = !!(blockStyle & 4); - cod.verticalyStripe = !!(blockStyle & 8); - cod.predictableTermination = !!(blockStyle & 16); - cod.segmentationSymbolUsed = !!(blockStyle & 32); - cod.reversibleTransformation = data[j++]; - if (cod.entropyCoderWithCustomPrecincts) { - var precinctsSizes = []; - while (j < length + position) { - var precinctsSize = data[j++]; - precinctsSizes.push({ - PPx: precinctsSize & 0xF, - PPy: precinctsSize >> 4 - }); - } - cod.precinctsSizes = precinctsSizes; - } - var unsupported = []; - if (cod.selectiveArithmeticCodingBypass) { - unsupported.push('selectiveArithmeticCodingBypass'); - } - if (cod.resetContextProbabilities) { - unsupported.push('resetContextProbabilities'); - } - if (cod.terminationOnEachCodingPass) { - unsupported.push('terminationOnEachCodingPass'); - } - if (cod.verticalyStripe) { - unsupported.push('verticalyStripe'); - } - if (cod.predictableTermination) { - unsupported.push('predictableTermination'); - } - if (unsupported.length > 0) { - doNotRecover = true; - throw new Error('JPX Error: Unsupported COD options (' + - unsupported.join(', ') + ')'); - } - if (context.mainHeader) { - context.COD = cod; - } else { - context.currentTile.COD = cod; - context.currentTile.COC = []; - } - break; - case 0xFF90: // Start of tile-part (SOT) - length = readUint16(data, position); - tile = {}; - tile.index = readUint16(data, position + 2); - tile.length = readUint32(data, position + 4); - tile.dataEnd = tile.length + position - 2; - tile.partIndex = data[position + 8]; - tile.partsCount = data[position + 9]; - - context.mainHeader = false; - if (tile.partIndex === 0) { - // reset component specific settings - tile.COD = context.COD; - tile.COC = context.COC.slice(0); // clone of the global COC - tile.QCD = context.QCD; - tile.QCC = context.QCC.slice(0); // clone of the global COC - } - context.currentTile = tile; - break; - case 0xFF93: // Start of data (SOD) - tile = context.currentTile; - if (tile.partIndex === 0) { - initializeTile(context, tile.index); - buildPackets(context); - } - - // moving to the end of the data - length = tile.dataEnd - position; - parseTilePackets(context, data, position, length); - break; - case 0xFF55: // Tile-part lengths, main header (TLM) - case 0xFF57: // Packet length, main header (PLM) - case 0xFF58: // Packet length, tile-part header (PLT) - case 0xFF64: // Comment (COM) - length = readUint16(data, position); - // skipping content - break; - case 0xFF53: // Coding style component (COC) - throw new Error('JPX Error: Codestream code 0xFF53 (COC) is ' + - 'not implemented'); - default: - throw new Error('JPX Error: Unknown codestream code: ' + - code.toString(16)); - } - position += length; - } - } catch (e) { - if (doNotRecover || this.failOnCorruptedImage) { - throw e; - } else { - warn('Trying to recover from ' + e.message); - } - } - this.tiles = transformComponents(context); - this.width = context.SIZ.Xsiz - context.SIZ.XOsiz; - this.height = context.SIZ.Ysiz - context.SIZ.YOsiz; - this.componentsCount = context.SIZ.Csiz; - } - }; - function calculateComponentDimensions(component, siz) { - // Section B.2 Component mapping - component.x0 = Math.ceil(siz.XOsiz / component.XRsiz); - component.x1 = Math.ceil(siz.Xsiz / component.XRsiz); - component.y0 = Math.ceil(siz.YOsiz / component.YRsiz); - component.y1 = Math.ceil(siz.Ysiz / component.YRsiz); - component.width = component.x1 - component.x0; - component.height = component.y1 - component.y0; - } - function calculateTileGrids(context, components) { - var siz = context.SIZ; - // Section B.3 Division into tile and tile-components - var tile, tiles = []; - var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz); - var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz); - for (var q = 0; q < numYtiles; q++) { - for (var p = 0; p < numXtiles; p++) { - tile = {}; - tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz); - tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz); - tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz); - tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz); - tile.width = tile.tx1 - tile.tx0; - tile.height = tile.ty1 - tile.ty0; - tile.components = []; - tiles.push(tile); - } - } - context.tiles = tiles; - - var componentsCount = siz.Csiz; - for (var i = 0, ii = componentsCount; i < ii; i++) { - var component = components[i]; - for (var j = 0, jj = tiles.length; j < jj; j++) { - var tileComponent = {}; - tile = tiles[j]; - tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz); - tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz); - tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz); - tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz); - tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0; - tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0; - tile.components[i] = tileComponent; - } - } - } - function getBlocksDimensions(context, component, r) { - var codOrCoc = component.codingStyleParameters; - var result = {}; - if (!codOrCoc.entropyCoderWithCustomPrecincts) { - result.PPx = 15; - result.PPy = 15; - } else { - result.PPx = codOrCoc.precinctsSizes[r].PPx; - result.PPy = codOrCoc.precinctsSizes[r].PPy; - } - // calculate codeblock size as described in section B.7 - result.xcb_ = (r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : - Math.min(codOrCoc.xcb, result.PPx)); - result.ycb_ = (r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : - Math.min(codOrCoc.ycb, result.PPy)); - return result; - } - function buildPrecincts(context, resolution, dimensions) { - // Section B.6 Division resolution to precincts - var precinctWidth = 1 << dimensions.PPx; - var precinctHeight = 1 << dimensions.PPy; - // Jasper introduces codeblock groups for mapping each subband codeblocks - // to precincts. Precinct partition divides a resolution according to width - // and height parameters. The subband that belongs to the resolution level - // has a different size than the level, unless it is the zero resolution. - - // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding: - // The precinct partitioning for a particular subband is derived from a - // partitioning of its parent LL band (i.e., the LL band at the next higher - // resolution level)... The LL band associated with each resolution level is - // divided into precincts... Each of the resulting precinct regions is then - // mapped into its child subbands (if any) at the next lower resolution - // level. This is accomplished by using the coordinate transformation - // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the - // coordinates of a point in the LL band and child subband, respectively. - var isZeroRes = resolution.resLevel === 0; - var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1)); - var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1)); - var numprecinctswide = (resolution.trx1 > resolution.trx0 ? - Math.ceil(resolution.trx1 / precinctWidth) - - Math.floor(resolution.trx0 / precinctWidth) : 0); - var numprecinctshigh = (resolution.try1 > resolution.try0 ? - Math.ceil(resolution.try1 / precinctHeight) - - Math.floor(resolution.try0 / precinctHeight) : 0); - var numprecincts = numprecinctswide * numprecinctshigh; - - resolution.precinctParameters = { - precinctWidth: precinctWidth, - precinctHeight: precinctHeight, - numprecinctswide: numprecinctswide, - numprecinctshigh: numprecinctshigh, - numprecincts: numprecincts, - precinctWidthInSubband: precinctWidthInSubband, - precinctHeightInSubband: precinctHeightInSubband - }; - } - function buildCodeblocks(context, subband, dimensions) { - // Section B.7 Division sub-band into code-blocks - var xcb_ = dimensions.xcb_; - var ycb_ = dimensions.ycb_; - var codeblockWidth = 1 << xcb_; - var codeblockHeight = 1 << ycb_; - var cbx0 = subband.tbx0 >> xcb_; - var cby0 = subband.tby0 >> ycb_; - var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_; - var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_; - var precinctParameters = subband.resolution.precinctParameters; - var codeblocks = []; - var precincts = []; - var i, j, codeblock, precinctNumber; - for (j = cby0; j < cby1; j++) { - for (i = cbx0; i < cbx1; i++) { - codeblock = { - cbx: i, - cby: j, - tbx0: codeblockWidth * i, - tby0: codeblockHeight * j, - tbx1: codeblockWidth * (i + 1), - tby1: codeblockHeight * (j + 1) - }; - - codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0); - codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0); - codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1); - codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1); - - // Calculate precinct number for this codeblock, codeblock position - // should be relative to its subband, use actual dimension and position - // See comment about codeblock group width and height - var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / - precinctParameters.precinctWidthInSubband); - var pj = Math.floor((codeblock.tby0_ - subband.tby0) / - precinctParameters.precinctHeightInSubband); - precinctNumber = pi + (pj * precinctParameters.numprecinctswide); - - codeblock.precinctNumber = precinctNumber; - codeblock.subbandType = subband.type; - codeblock.Lblock = 3; - - if (codeblock.tbx1_ <= codeblock.tbx0_ || - codeblock.tby1_ <= codeblock.tby0_) { - continue; - } - codeblocks.push(codeblock); - // building precinct for the sub-band - var precinct = precincts[precinctNumber]; - if (precinct !== undefined) { - if (i < precinct.cbxMin) { - precinct.cbxMin = i; - } else if (i > precinct.cbxMax) { - precinct.cbxMax = i; - } - if (j < precinct.cbyMin) { - precinct.cbxMin = j; - } else if (j > precinct.cbyMax) { - precinct.cbyMax = j; - } - } else { - precincts[precinctNumber] = precinct = { - cbxMin: i, - cbyMin: j, - cbxMax: i, - cbyMax: j - }; - } - codeblock.precinct = precinct; - } - } - subband.codeblockParameters = { - codeblockWidth: xcb_, - codeblockHeight: ycb_, - numcodeblockwide: cbx1 - cbx0 + 1, - numcodeblockhigh: cby1 - cby0 + 1 - }; - subband.codeblocks = codeblocks; - subband.precincts = precincts; - } - function createPacket(resolution, precinctNumber, layerNumber) { - var precinctCodeblocks = []; - // Section B.10.8 Order of info in packet - var subbands = resolution.subbands; - // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence - for (var i = 0, ii = subbands.length; i < ii; i++) { - var subband = subbands[i]; - var codeblocks = subband.codeblocks; - for (var j = 0, jj = codeblocks.length; j < jj; j++) { - var codeblock = codeblocks[j]; - if (codeblock.precinctNumber !== precinctNumber) { - continue; - } - precinctCodeblocks.push(codeblock); - } - } - return { - layerNumber: layerNumber, - codeblocks: precinctCodeblocks - }; - } - function LayerResolutionComponentPositionIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var maxDecompositionLevelsCount = 0; - for (var q = 0; q < componentsCount; q++) { - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, - tile.components[q].codingStyleParameters.decompositionLevelsCount); - } - - var l = 0, r = 0, i = 0, k = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.1 Layer-resolution-component-position - for (; l < layersCount; l++) { - for (; r <= maxDecompositionLevelsCount; r++) { - for (; i < componentsCount; i++) { - var component = tile.components[i]; - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - - var resolution = component.resolutions[r]; - var numprecincts = resolution.precinctParameters.numprecincts; - for (; k < numprecincts;) { - var packet = createPacket(resolution, k, l); - k++; - return packet; - } - k = 0; - } - i = 0; - } - r = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function ResolutionLayerComponentPositionIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var maxDecompositionLevelsCount = 0; - for (var q = 0; q < componentsCount; q++) { - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, - tile.components[q].codingStyleParameters.decompositionLevelsCount); - } - - var r = 0, l = 0, i = 0, k = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.2 Resolution-layer-component-position - for (; r <= maxDecompositionLevelsCount; r++) { - for (; l < layersCount; l++) { - for (; i < componentsCount; i++) { - var component = tile.components[i]; - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - - var resolution = component.resolutions[r]; - var numprecincts = resolution.precinctParameters.numprecincts; - for (; k < numprecincts;) { - var packet = createPacket(resolution, k, l); - k++; - return packet; - } - k = 0; - } - i = 0; - } - l = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function ResolutionPositionComponentLayerIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var l, r, c, p; - var maxDecompositionLevelsCount = 0; - for (c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, - component.codingStyleParameters.decompositionLevelsCount); - } - var maxNumPrecinctsInLevel = new Int32Array( - maxDecompositionLevelsCount + 1); - for (r = 0; r <= maxDecompositionLevelsCount; ++r) { - var maxNumPrecincts = 0; - for (c = 0; c < componentsCount; ++c) { - var resolutions = tile.components[c].resolutions; - if (r < resolutions.length) { - maxNumPrecincts = Math.max(maxNumPrecincts, - resolutions[r].precinctParameters.numprecincts); - } - } - maxNumPrecinctsInLevel[r] = maxNumPrecincts; - } - l = 0; - r = 0; - c = 0; - p = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.3 Resolution-position-component-layer - for (; r <= maxDecompositionLevelsCount; r++) { - for (; p < maxNumPrecinctsInLevel[r]; p++) { - for (; c < componentsCount; c++) { - var component = tile.components[c]; - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - var resolution = component.resolutions[r]; - var numprecincts = resolution.precinctParameters.numprecincts; - if (p >= numprecincts) { - continue; - } - for (; l < layersCount;) { - var packet = createPacket(resolution, p, l); - l++; - return packet; - } - l = 0; - } - c = 0; - } - p = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function PositionComponentResolutionLayerIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var precinctsSizes = getPrecinctSizesInImageScale(tile); - var precinctsIterationSizes = precinctsSizes; - var l = 0, r = 0, c = 0, px = 0, py = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.4 Position-component-resolution-layer - for (; py < precinctsIterationSizes.maxNumHigh; py++) { - for (; px < precinctsIterationSizes.maxNumWide; px++) { - for (; c < componentsCount; c++) { - var component = tile.components[c]; - var decompositionLevelsCount = - component.codingStyleParameters.decompositionLevelsCount; - for (; r <= decompositionLevelsCount; r++) { - var resolution = component.resolutions[r]; - var sizeInImageScale = - precinctsSizes.components[c].resolutions[r]; - var k = getPrecinctIndexIfExist( - px, - py, - sizeInImageScale, - precinctsIterationSizes, - resolution); - if (k === null) { - continue; - } - for (; l < layersCount;) { - var packet = createPacket(resolution, k, l); - l++; - return packet; - } - l = 0; - } - r = 0; - } - c = 0; - } - px = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function ComponentPositionResolutionLayerIterator(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var layersCount = tile.codingStyleDefaultParameters.layersCount; - var componentsCount = siz.Csiz; - var precinctsSizes = getPrecinctSizesInImageScale(tile); - var l = 0, r = 0, c = 0, px = 0, py = 0; - - this.nextPacket = function JpxImage_nextPacket() { - // Section B.12.1.5 Component-position-resolution-layer - for (; c < componentsCount; ++c) { - var component = tile.components[c]; - var precinctsIterationSizes = precinctsSizes.components[c]; - var decompositionLevelsCount = - component.codingStyleParameters.decompositionLevelsCount; - for (; py < precinctsIterationSizes.maxNumHigh; py++) { - for (; px < precinctsIterationSizes.maxNumWide; px++) { - for (; r <= decompositionLevelsCount; r++) { - var resolution = component.resolutions[r]; - var sizeInImageScale = precinctsIterationSizes.resolutions[r]; - var k = getPrecinctIndexIfExist( - px, - py, - sizeInImageScale, - precinctsIterationSizes, - resolution); - if (k === null) { - continue; - } - for (; l < layersCount;) { - var packet = createPacket(resolution, k, l); - l++; - return packet; - } - l = 0; - } - r = 0; - } - px = 0; - } - py = 0; - } - throw new Error('JPX Error: Out of packets'); - }; - } - function getPrecinctIndexIfExist( - pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) { - var posX = pxIndex * precinctIterationSizes.minWidth; - var posY = pyIndex * precinctIterationSizes.minHeight; - if (posX % sizeInImageScale.width !== 0 || - posY % sizeInImageScale.height !== 0) { - return null; - } - var startPrecinctRowIndex = - (posY / sizeInImageScale.width) * - resolution.precinctParameters.numprecinctswide; - return (posX / sizeInImageScale.height) + startPrecinctRowIndex; - } - function getPrecinctSizesInImageScale(tile) { - var componentsCount = tile.components.length; - var minWidth = Number.MAX_VALUE; - var minHeight = Number.MAX_VALUE; - var maxNumWide = 0; - var maxNumHigh = 0; - var sizePerComponent = new Array(componentsCount); - for (var c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - var decompositionLevelsCount = - component.codingStyleParameters.decompositionLevelsCount; - var sizePerResolution = new Array(decompositionLevelsCount + 1); - var minWidthCurrentComponent = Number.MAX_VALUE; - var minHeightCurrentComponent = Number.MAX_VALUE; - var maxNumWideCurrentComponent = 0; - var maxNumHighCurrentComponent = 0; - var scale = 1; - for (var r = decompositionLevelsCount; r >= 0; --r) { - var resolution = component.resolutions[r]; - var widthCurrentResolution = - scale * resolution.precinctParameters.precinctWidth; - var heightCurrentResolution = - scale * resolution.precinctParameters.precinctHeight; - minWidthCurrentComponent = Math.min( - minWidthCurrentComponent, - widthCurrentResolution); - minHeightCurrentComponent = Math.min( - minHeightCurrentComponent, - heightCurrentResolution); - maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, - resolution.precinctParameters.numprecinctswide); - maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, - resolution.precinctParameters.numprecinctshigh); - sizePerResolution[r] = { - width: widthCurrentResolution, - height: heightCurrentResolution - }; - scale <<= 1; - } - minWidth = Math.min(minWidth, minWidthCurrentComponent); - minHeight = Math.min(minHeight, minHeightCurrentComponent); - maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent); - maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent); - sizePerComponent[c] = { - resolutions: sizePerResolution, - minWidth: minWidthCurrentComponent, - minHeight: minHeightCurrentComponent, - maxNumWide: maxNumWideCurrentComponent, - maxNumHigh: maxNumHighCurrentComponent - }; - } - return { - components: sizePerComponent, - minWidth: minWidth, - minHeight: minHeight, - maxNumWide: maxNumWide, - maxNumHigh: maxNumHigh - }; - } - function buildPackets(context) { - var siz = context.SIZ; - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var componentsCount = siz.Csiz; - // Creating resolutions and sub-bands for each component - for (var c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - var decompositionLevelsCount = - component.codingStyleParameters.decompositionLevelsCount; - // Section B.5 Resolution levels and sub-bands - var resolutions = []; - var subbands = []; - for (var r = 0; r <= decompositionLevelsCount; r++) { - var blocksDimensions = getBlocksDimensions(context, component, r); - var resolution = {}; - var scale = 1 << (decompositionLevelsCount - r); - resolution.trx0 = Math.ceil(component.tcx0 / scale); - resolution.try0 = Math.ceil(component.tcy0 / scale); - resolution.trx1 = Math.ceil(component.tcx1 / scale); - resolution.try1 = Math.ceil(component.tcy1 / scale); - resolution.resLevel = r; - buildPrecincts(context, resolution, blocksDimensions); - resolutions.push(resolution); - - var subband; - if (r === 0) { - // one sub-band (LL) with last decomposition - subband = {}; - subband.type = 'LL'; - subband.tbx0 = Math.ceil(component.tcx0 / scale); - subband.tby0 = Math.ceil(component.tcy0 / scale); - subband.tbx1 = Math.ceil(component.tcx1 / scale); - subband.tby1 = Math.ceil(component.tcy1 / scale); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolution.subbands = [subband]; - } else { - var bscale = 1 << (decompositionLevelsCount - r + 1); - var resolutionSubbands = []; - // three sub-bands (HL, LH and HH) with rest of decompositions - subband = {}; - subband.type = 'HL'; - subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); - subband.tby0 = Math.ceil(component.tcy0 / bscale); - subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); - subband.tby1 = Math.ceil(component.tcy1 / bscale); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - - subband = {}; - subband.type = 'LH'; - subband.tbx0 = Math.ceil(component.tcx0 / bscale); - subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); - subband.tbx1 = Math.ceil(component.tcx1 / bscale); - subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - - subband = {}; - subband.type = 'HH'; - subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); - subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); - subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); - subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - - resolution.subbands = resolutionSubbands; - } - } - component.resolutions = resolutions; - component.subbands = subbands; - } - // Generate the packets sequence - var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder; - switch (progressionOrder) { - case 0: - tile.packetsIterator = - new LayerResolutionComponentPositionIterator(context); - break; - case 1: - tile.packetsIterator = - new ResolutionLayerComponentPositionIterator(context); - break; - case 2: - tile.packetsIterator = - new ResolutionPositionComponentLayerIterator(context); - break; - case 3: - tile.packetsIterator = - new PositionComponentResolutionLayerIterator(context); - break; - case 4: - tile.packetsIterator = - new ComponentPositionResolutionLayerIterator(context); - break; - default: - throw new Error('JPX Error: Unsupported progression order ' + - progressionOrder); - } - } - function parseTilePackets(context, data, offset, dataLength) { - var position = 0; - var buffer, bufferSize = 0, skipNextBit = false; - function readBits(count) { - while (bufferSize < count) { - var b = data[offset + position]; - position++; - if (skipNextBit) { - buffer = (buffer << 7) | b; - bufferSize += 7; - skipNextBit = false; - } else { - buffer = (buffer << 8) | b; - bufferSize += 8; - } - if (b === 0xFF) { - skipNextBit = true; - } - } - bufferSize -= count; - return (buffer >>> bufferSize) & ((1 << count) - 1); - } - function skipMarkerIfEqual(value) { - if (data[offset + position - 1] === 0xFF && - data[offset + position] === value) { - skipBytes(1); - return true; - } else if (data[offset + position] === 0xFF && - data[offset + position + 1] === value) { - skipBytes(2); - return true; - } - return false; - } - function skipBytes(count) { - position += count; - } - function alignToByte() { - bufferSize = 0; - if (skipNextBit) { - position++; - skipNextBit = false; - } - } - function readCodingpasses() { - if (readBits(1) === 0) { - return 1; - } - if (readBits(1) === 0) { - return 2; - } - var value = readBits(2); - if (value < 3) { - return value + 3; - } - value = readBits(5); - if (value < 31) { - return value + 6; - } - value = readBits(7); - return value + 37; - } - var tileIndex = context.currentTile.index; - var tile = context.tiles[tileIndex]; - var sopMarkerUsed = context.COD.sopMarkerUsed; - var ephMarkerUsed = context.COD.ephMarkerUsed; - var packetsIterator = tile.packetsIterator; - while (position < dataLength) { - alignToByte(); - if (sopMarkerUsed && skipMarkerIfEqual(0x91)) { - // Skip also marker segment length and packet sequence ID - skipBytes(4); - } - var packet = packetsIterator.nextPacket(); - if (!readBits(1)) { - continue; - } - var layerNumber = packet.layerNumber; - var queue = [], codeblock; - for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) { - codeblock = packet.codeblocks[i]; - var precinct = codeblock.precinct; - var codeblockColumn = codeblock.cbx - precinct.cbxMin; - var codeblockRow = codeblock.cby - precinct.cbyMin; - var codeblockIncluded = false; - var firstTimeInclusion = false; - var valueReady; - if (codeblock['included'] !== undefined) { - codeblockIncluded = !!readBits(1); - } else { - // reading inclusion tree - precinct = codeblock.precinct; - var inclusionTree, zeroBitPlanesTree; - if (precinct['inclusionTree'] !== undefined) { - inclusionTree = precinct.inclusionTree; - } else { - // building inclusion and zero bit-planes trees - var width = precinct.cbxMax - precinct.cbxMin + 1; - var height = precinct.cbyMax - precinct.cbyMin + 1; - inclusionTree = new InclusionTree(width, height, layerNumber); - zeroBitPlanesTree = new TagTree(width, height); - precinct.inclusionTree = inclusionTree; - precinct.zeroBitPlanesTree = zeroBitPlanesTree; - } - - if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) { - while (true) { - if (readBits(1)) { - valueReady = !inclusionTree.nextLevel(); - if (valueReady) { - codeblock.included = true; - codeblockIncluded = firstTimeInclusion = true; - break; - } - } else { - inclusionTree.incrementValue(layerNumber); - break; - } - } - } - } - if (!codeblockIncluded) { - continue; - } - if (firstTimeInclusion) { - zeroBitPlanesTree = precinct.zeroBitPlanesTree; - zeroBitPlanesTree.reset(codeblockColumn, codeblockRow); - while (true) { - if (readBits(1)) { - valueReady = !zeroBitPlanesTree.nextLevel(); - if (valueReady) { - break; - } - } else { - zeroBitPlanesTree.incrementValue(); - } - } - codeblock.zeroBitPlanes = zeroBitPlanesTree.value; - } - var codingpasses = readCodingpasses(); - while (readBits(1)) { - codeblock.Lblock++; - } - var codingpassesLog2 = log2(codingpasses); - // rounding down log2 - var bits = ((codingpasses < (1 << codingpassesLog2)) ? - codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock; - var codedDataLength = readBits(bits); - queue.push({ - codeblock: codeblock, - codingpasses: codingpasses, - dataLength: codedDataLength - }); - } - alignToByte(); - if (ephMarkerUsed) { - skipMarkerIfEqual(0x92); - } - while (queue.length > 0) { - var packetItem = queue.shift(); - codeblock = packetItem.codeblock; - if (codeblock['data'] === undefined) { - codeblock.data = []; - } - codeblock.data.push({ - data: data, - start: offset + position, - end: offset + position + packetItem.dataLength, - codingpasses: packetItem.codingpasses - }); - position += packetItem.dataLength; - } - } - return position; - } - function copyCoefficients(coefficients, levelWidth, levelHeight, subband, - delta, mb, reversible, segmentationSymbolUsed) { - var x0 = subband.tbx0; - var y0 = subband.tby0; - var width = subband.tbx1 - subband.tbx0; - var codeblocks = subband.codeblocks; - var right = subband.type.charAt(0) === 'H' ? 1 : 0; - var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0; - - for (var i = 0, ii = codeblocks.length; i < ii; ++i) { - var codeblock = codeblocks[i]; - var blockWidth = codeblock.tbx1_ - codeblock.tbx0_; - var blockHeight = codeblock.tby1_ - codeblock.tby0_; - if (blockWidth === 0 || blockHeight === 0) { - continue; - } - if (codeblock['data'] === undefined) { - continue; - } - - var bitModel, currentCodingpassType; - bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, - codeblock.zeroBitPlanes, mb); - currentCodingpassType = 2; // first bit plane starts from cleanup - - // collect data - var data = codeblock.data, totalLength = 0, codingpasses = 0; - var j, jj, dataItem; - for (j = 0, jj = data.length; j < jj; j++) { - dataItem = data[j]; - totalLength += dataItem.end - dataItem.start; - codingpasses += dataItem.codingpasses; - } - var encodedData = new Uint8Array(totalLength); - var position = 0; - for (j = 0, jj = data.length; j < jj; j++) { - dataItem = data[j]; - var chunk = dataItem.data.subarray(dataItem.start, dataItem.end); - encodedData.set(chunk, position); - position += chunk.length; - } - // decoding the item - var decoder = new ArithmeticDecoder(encodedData, 0, totalLength); - bitModel.setDecoder(decoder); - - for (j = 0; j < codingpasses; j++) { - switch (currentCodingpassType) { - case 0: - bitModel.runSignificancePropogationPass(); - break; - case 1: - bitModel.runMagnitudeRefinementPass(); - break; - case 2: - bitModel.runCleanupPass(); - if (segmentationSymbolUsed) { - bitModel.checkSegmentationSymbol(); - } - break; - } - currentCodingpassType = (currentCodingpassType + 1) % 3; - } - - var offset = (codeblock.tbx0_ - x0) + (codeblock.tby0_ - y0) * width; - var sign = bitModel.coefficentsSign; - var magnitude = bitModel.coefficentsMagnitude; - var bitsDecoded = bitModel.bitsDecoded; - var magnitudeCorrection = reversible ? 0 : 0.5; - var k, n, nb; - position = 0; - // Do the interleaving of Section F.3.3 here, so we do not need - // to copy later. LL level is not interleaved, just copied. - var interleave = (subband.type !== 'LL'); - for (j = 0; j < blockHeight; j++) { - var row = (offset / width) | 0; // row in the non-interleaved subband - var levelOffset = 2 * row * (levelWidth - width) + right + bottom; - for (k = 0; k < blockWidth; k++) { - n = magnitude[position]; - if (n !== 0) { - n = (n + magnitudeCorrection) * delta; - if (sign[position] !== 0) { - n = -n; - } - nb = bitsDecoded[position]; - var pos = interleave ? (levelOffset + (offset << 1)) : offset; - if (reversible && (nb >= mb)) { - coefficients[pos] = n; - } else { - coefficients[pos] = n * (1 << (mb - nb)); - } - } - offset++; - position++; - } - offset += width - blockWidth; - } - } - } - function transformTile(context, tile, c) { - var component = tile.components[c]; - var codingStyleParameters = component.codingStyleParameters; - var quantizationParameters = component.quantizationParameters; - var decompositionLevelsCount = - codingStyleParameters.decompositionLevelsCount; - var spqcds = quantizationParameters.SPqcds; - var scalarExpounded = quantizationParameters.scalarExpounded; - var guardBits = quantizationParameters.guardBits; - var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed; - var precision = context.components[c].precision; - - var reversible = codingStyleParameters.reversibleTransformation; - var transform = (reversible ? new ReversibleTransform() : - new IrreversibleTransform()); - - var subbandCoefficients = []; - var b = 0; - for (var i = 0; i <= decompositionLevelsCount; i++) { - var resolution = component.resolutions[i]; - - var width = resolution.trx1 - resolution.trx0; - var height = resolution.try1 - resolution.try0; - // Allocate space for the whole sublevel. - var coefficients = new Float32Array(width * height); - - for (var j = 0, jj = resolution.subbands.length; j < jj; j++) { - var mu, epsilon; - if (!scalarExpounded) { - // formula E-5 - mu = spqcds[0].mu; - epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0); - } else { - mu = spqcds[b].mu; - epsilon = spqcds[b].epsilon; - b++; - } - - var subband = resolution.subbands[j]; - var gainLog2 = SubbandsGainLog2[subband.type]; - - // calulate quantization coefficient (Section E.1.1.1) - var delta = (reversible ? 1 : - Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048)); - var mb = (guardBits + epsilon - 1); - - // In the first resolution level, copyCoefficients will fill the - // whole array with coefficients. In the succeding passes, - // copyCoefficients will consecutively fill in the values that belong - // to the interleaved positions of the HL, LH, and HH coefficients. - // The LL coefficients will then be interleaved in Transform.iterate(). - copyCoefficients(coefficients, width, height, subband, delta, mb, - reversible, segmentationSymbolUsed); - } - subbandCoefficients.push({ - width: width, - height: height, - items: coefficients - }); - } - - var result = transform.calculate(subbandCoefficients, - component.tcx0, component.tcy0); - return { - left: component.tcx0, - top: component.tcy0, - width: result.width, - height: result.height, - items: result.items - }; - } - function transformComponents(context) { - var siz = context.SIZ; - var components = context.components; - var componentsCount = siz.Csiz; - var resultImages = []; - for (var i = 0, ii = context.tiles.length; i < ii; i++) { - var tile = context.tiles[i]; - var transformedTiles = []; - var c; - for (c = 0; c < componentsCount; c++) { - transformedTiles[c] = transformTile(context, tile, c); - } - var tile0 = transformedTiles[0]; - var out = new Uint8Array(tile0.items.length * componentsCount); - var result = { - left: tile0.left, - top: tile0.top, - width: tile0.width, - height: tile0.height, - items: out - }; - - // Section G.2.2 Inverse multi component transform - var shift, offset, max, min, maxK; - var pos = 0, j, jj, y0, y1, y2, r, g, b, k, val; - if (tile.codingStyleDefaultParameters.multipleComponentTransform) { - var fourComponents = componentsCount === 4; - var y0items = transformedTiles[0].items; - var y1items = transformedTiles[1].items; - var y2items = transformedTiles[2].items; - var y3items = fourComponents ? transformedTiles[3].items : null; - - // HACK: The multiple component transform formulas below assume that - // all components have the same precision. With this in mind, we - // compute shift and offset only once. - shift = components[0].precision - 8; - offset = (128 << shift) + 0.5; - max = 255 * (1 << shift); - maxK = max * 0.5; - min = -maxK; - - var component0 = tile.components[0]; - var alpha01 = componentsCount - 3; - jj = y0items.length; - if (!component0.codingStyleParameters.reversibleTransformation) { - // inverse irreversible multiple component transform - for (j = 0; j < jj; j++, pos += alpha01) { - y0 = y0items[j] + offset; - y1 = y1items[j]; - y2 = y2items[j]; - r = y0 + 1.402 * y2; - g = y0 - 0.34413 * y1 - 0.71414 * y2; - b = y0 + 1.772 * y1; - out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift; - out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift; - out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift; - } - } else { - // inverse reversible multiple component transform - for (j = 0; j < jj; j++, pos += alpha01) { - y0 = y0items[j] + offset; - y1 = y1items[j]; - y2 = y2items[j]; - g = y0 - ((y2 + y1) >> 2); - r = g + y2; - b = g + y1; - out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift; - out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift; - out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift; - } - } - if (fourComponents) { - for (j = 0, pos = 3; j < jj; j++, pos += 4) { - k = y3items[j]; - out[pos] = k <= min ? 0 : k >= maxK ? 255 : (k + offset) >> shift; - } - } - } else { // no multi-component transform - for (c = 0; c < componentsCount; c++) { - var items = transformedTiles[c].items; - shift = components[c].precision - 8; - offset = (128 << shift) + 0.5; - max = (127.5 * (1 << shift)); - min = -max; - for (pos = c, j = 0, jj = items.length; j < jj; j++) { - val = items[j]; - out[pos] = val <= min ? 0 : - val >= max ? 255 : (val + offset) >> shift; - pos += componentsCount; - } - } - } - resultImages.push(result); - } - return resultImages; - } - function initializeTile(context, tileIndex) { - var siz = context.SIZ; - var componentsCount = siz.Csiz; - var tile = context.tiles[tileIndex]; - for (var c = 0; c < componentsCount; c++) { - var component = tile.components[c]; - var qcdOrQcc = (context.currentTile.QCC[c] !== undefined ? - context.currentTile.QCC[c] : context.currentTile.QCD); - component.quantizationParameters = qcdOrQcc; - var codOrCoc = (context.currentTile.COC[c] !== undefined ? - context.currentTile.COC[c] : context.currentTile.COD); - component.codingStyleParameters = codOrCoc; - } - tile.codingStyleDefaultParameters = context.currentTile.COD; - } - - // Section B.10.2 Tag trees - var TagTree = (function TagTreeClosure() { - function TagTree(width, height) { - var levelsLength = log2(Math.max(width, height)) + 1; - this.levels = []; - for (var i = 0; i < levelsLength; i++) { - var level = { - width: width, - height: height, - items: [] - }; - this.levels.push(level); - width = Math.ceil(width / 2); - height = Math.ceil(height / 2); - } - } - TagTree.prototype = { - reset: function TagTree_reset(i, j) { - var currentLevel = 0, value = 0, level; - while (currentLevel < this.levels.length) { - level = this.levels[currentLevel]; - var index = i + j * level.width; - if (level.items[index] !== undefined) { - value = level.items[index]; - break; - } - level.index = index; - i >>= 1; - j >>= 1; - currentLevel++; - } - currentLevel--; - level = this.levels[currentLevel]; - level.items[level.index] = value; - this.currentLevel = currentLevel; - delete this.value; - }, - incrementValue: function TagTree_incrementValue() { - var level = this.levels[this.currentLevel]; - level.items[level.index]++; - }, - nextLevel: function TagTree_nextLevel() { - var currentLevel = this.currentLevel; - var level = this.levels[currentLevel]; - var value = level.items[level.index]; - currentLevel--; - if (currentLevel < 0) { - this.value = value; - return false; - } - - this.currentLevel = currentLevel; - level = this.levels[currentLevel]; - level.items[level.index] = value; - return true; - } - }; - return TagTree; - })(); - - var InclusionTree = (function InclusionTreeClosure() { - function InclusionTree(width, height, defaultValue) { - var levelsLength = log2(Math.max(width, height)) + 1; - this.levels = []; - for (var i = 0; i < levelsLength; i++) { - var items = new Uint8Array(width * height); - for (var j = 0, jj = items.length; j < jj; j++) { - items[j] = defaultValue; - } - - var level = { - width: width, - height: height, - items: items - }; - this.levels.push(level); - - width = Math.ceil(width / 2); - height = Math.ceil(height / 2); - } - } - InclusionTree.prototype = { - reset: function InclusionTree_reset(i, j, stopValue) { - var currentLevel = 0; - while (currentLevel < this.levels.length) { - var level = this.levels[currentLevel]; - var index = i + j * level.width; - level.index = index; - var value = level.items[index]; - - if (value === 0xFF) { - break; - } - - if (value > stopValue) { - this.currentLevel = currentLevel; - // already know about this one, propagating the value to top levels - this.propagateValues(); - return false; - } - - i >>= 1; - j >>= 1; - currentLevel++; - } - this.currentLevel = currentLevel - 1; - return true; - }, - incrementValue: function InclusionTree_incrementValue(stopValue) { - var level = this.levels[this.currentLevel]; - level.items[level.index] = stopValue + 1; - this.propagateValues(); - }, - propagateValues: function InclusionTree_propagateValues() { - var levelIndex = this.currentLevel; - var level = this.levels[levelIndex]; - var currentValue = level.items[level.index]; - while (--levelIndex >= 0) { - level = this.levels[levelIndex]; - level.items[level.index] = currentValue; - } - }, - nextLevel: function InclusionTree_nextLevel() { - var currentLevel = this.currentLevel; - var level = this.levels[currentLevel]; - var value = level.items[level.index]; - level.items[level.index] = 0xFF; - currentLevel--; - if (currentLevel < 0) { - return false; - } - - this.currentLevel = currentLevel; - level = this.levels[currentLevel]; - level.items[level.index] = value; - return true; - } - }; - return InclusionTree; - })(); - - // Section D. Coefficient bit modeling - var BitModel = (function BitModelClosure() { - var UNIFORM_CONTEXT = 17; - var RUNLENGTH_CONTEXT = 18; - // Table D-1 - // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4), - // vv - sum of Vi (0..2), and hh - sum of Hi (0..2) - var LLAndLHContextsLabel = new Uint8Array([ - 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, - 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, - 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8 - ]); - var HLContextLabel = new Uint8Array([ - 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, - 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, - 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8 - ]); - var HHContextLabel = new Uint8Array([ - 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, - 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, - 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8 - ]); - - function BitModel(width, height, subband, zeroBitPlanes, mb) { - this.width = width; - this.height = height; - - this.contextLabelTable = (subband === 'HH' ? HHContextLabel : - (subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel)); - - var coefficientCount = width * height; - - // coefficients outside the encoding region treated as insignificant - // add border state cells for significanceState - this.neighborsSignificance = new Uint8Array(coefficientCount); - this.coefficentsSign = new Uint8Array(coefficientCount); - this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) : - mb > 6 ? new Uint16Array(coefficientCount) : - new Uint8Array(coefficientCount); - this.processingFlags = new Uint8Array(coefficientCount); - - var bitsDecoded = new Uint8Array(coefficientCount); - if (zeroBitPlanes !== 0) { - for (var i = 0; i < coefficientCount; i++) { - bitsDecoded[i] = zeroBitPlanes; - } - } - this.bitsDecoded = bitsDecoded; - - this.reset(); - } - - BitModel.prototype = { - setDecoder: function BitModel_setDecoder(decoder) { - this.decoder = decoder; - }, - reset: function BitModel_reset() { - // We have 17 contexts that are accessed via context labels, - // plus the uniform and runlength context. - this.contexts = new Int8Array(19); - - // Contexts are packed into 1 byte: - // highest 7 bits carry the index, lowest bit carries mps - this.contexts[0] = (4 << 1) | 0; - this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0; - this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0; - }, - setNeighborsSignificance: - function BitModel_setNeighborsSignificance(row, column, index) { - var neighborsSignificance = this.neighborsSignificance; - var width = this.width, height = this.height; - var left = (column > 0); - var right = (column + 1 < width); - var i; - - if (row > 0) { - i = index - width; - if (left) { - neighborsSignificance[i - 1] += 0x10; - } - if (right) { - neighborsSignificance[i + 1] += 0x10; - } - neighborsSignificance[i] += 0x04; - } - - if (row + 1 < height) { - i = index + width; - if (left) { - neighborsSignificance[i - 1] += 0x10; - } - if (right) { - neighborsSignificance[i + 1] += 0x10; - } - neighborsSignificance[i] += 0x04; - } - - if (left) { - neighborsSignificance[index - 1] += 0x01; - } - if (right) { - neighborsSignificance[index + 1] += 0x01; - } - neighborsSignificance[index] |= 0x80; - }, - runSignificancePropogationPass: - function BitModel_runSignificancePropogationPass() { - var decoder = this.decoder; - var width = this.width, height = this.height; - var coefficentsMagnitude = this.coefficentsMagnitude; - var coefficentsSign = this.coefficentsSign; - var neighborsSignificance = this.neighborsSignificance; - var processingFlags = this.processingFlags; - var contexts = this.contexts; - var labels = this.contextLabelTable; - var bitsDecoded = this.bitsDecoded; - var processedInverseMask = ~1; - var processedMask = 1; - var firstMagnitudeBitMask = 2; - - for (var i0 = 0; i0 < height; i0 += 4) { - for (var j = 0; j < width; j++) { - var index = i0 * width + j; - for (var i1 = 0; i1 < 4; i1++, index += width) { - var i = i0 + i1; - if (i >= height) { - break; - } - // clear processed flag first - processingFlags[index] &= processedInverseMask; - - if (coefficentsMagnitude[index] || - !neighborsSignificance[index]) { - continue; - } - - var contextLabel = labels[neighborsSignificance[index]]; - var decision = decoder.readBit(contexts, contextLabel); - if (decision) { - var sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - } - bitsDecoded[index]++; - processingFlags[index] |= processedMask; - } - } - } - }, - decodeSignBit: function BitModel_decodeSignBit(row, column, index) { - var width = this.width, height = this.height; - var coefficentsMagnitude = this.coefficentsMagnitude; - var coefficentsSign = this.coefficentsSign; - var contribution, sign0, sign1, significance1; - var contextLabel, decoded; - - // calculate horizontal contribution - significance1 = (column > 0 && coefficentsMagnitude[index - 1] !== 0); - if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) { - sign1 = coefficentsSign[index + 1]; - if (significance1) { - sign0 = coefficentsSign[index - 1]; - contribution = 1 - sign1 - sign0; - } else { - contribution = 1 - sign1 - sign1; - } - } else if (significance1) { - sign0 = coefficentsSign[index - 1]; - contribution = 1 - sign0 - sign0; - } else { - contribution = 0; - } - var horizontalContribution = 3 * contribution; - - // calculate vertical contribution and combine with the horizontal - significance1 = (row > 0 && coefficentsMagnitude[index - width] !== 0); - if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) { - sign1 = coefficentsSign[index + width]; - if (significance1) { - sign0 = coefficentsSign[index - width]; - contribution = 1 - sign1 - sign0 + horizontalContribution; - } else { - contribution = 1 - sign1 - sign1 + horizontalContribution; - } - } else if (significance1) { - sign0 = coefficentsSign[index - width]; - contribution = 1 - sign0 - sign0 + horizontalContribution; - } else { - contribution = horizontalContribution; - } - - if (contribution >= 0) { - contextLabel = 9 + contribution; - decoded = this.decoder.readBit(this.contexts, contextLabel); - } else { - contextLabel = 9 - contribution; - decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1; - } - return decoded; - }, - runMagnitudeRefinementPass: - function BitModel_runMagnitudeRefinementPass() { - var decoder = this.decoder; - var width = this.width, height = this.height; - var coefficentsMagnitude = this.coefficentsMagnitude; - var neighborsSignificance = this.neighborsSignificance; - var contexts = this.contexts; - var bitsDecoded = this.bitsDecoded; - var processingFlags = this.processingFlags; - var processedMask = 1; - var firstMagnitudeBitMask = 2; - var length = width * height; - var width4 = width * 4; - - for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) { - indexNext = Math.min(length, index0 + width4); - for (var j = 0; j < width; j++) { - for (var index = index0 + j; index < indexNext; index += width) { - - // significant but not those that have just become - if (!coefficentsMagnitude[index] || - (processingFlags[index] & processedMask) !== 0) { - continue; - } - - var contextLabel = 16; - if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) { - processingFlags[index] ^= firstMagnitudeBitMask; - // first refinement - var significance = neighborsSignificance[index] & 127; - contextLabel = significance === 0 ? 15 : 14; - } - - var bit = decoder.readBit(contexts, contextLabel); - coefficentsMagnitude[index] = - (coefficentsMagnitude[index] << 1) | bit; - bitsDecoded[index]++; - processingFlags[index] |= processedMask; - } - } - } - }, - runCleanupPass: function BitModel_runCleanupPass() { - var decoder = this.decoder; - var width = this.width, height = this.height; - var neighborsSignificance = this.neighborsSignificance; - var coefficentsMagnitude = this.coefficentsMagnitude; - var coefficentsSign = this.coefficentsSign; - var contexts = this.contexts; - var labels = this.contextLabelTable; - var bitsDecoded = this.bitsDecoded; - var processingFlags = this.processingFlags; - var processedMask = 1; - var firstMagnitudeBitMask = 2; - var oneRowDown = width; - var twoRowsDown = width * 2; - var threeRowsDown = width * 3; - var iNext; - for (var i0 = 0; i0 < height; i0 = iNext) { - iNext = Math.min(i0 + 4, height); - var indexBase = i0 * width; - var checkAllEmpty = i0 + 3 < height; - for (var j = 0; j < width; j++) { - var index0 = indexBase + j; - // using the property: labels[neighborsSignificance[index]] === 0 - // when neighborsSignificance[index] === 0 - var allEmpty = (checkAllEmpty && - processingFlags[index0] === 0 && - processingFlags[index0 + oneRowDown] === 0 && - processingFlags[index0 + twoRowsDown] === 0 && - processingFlags[index0 + threeRowsDown] === 0 && - neighborsSignificance[index0] === 0 && - neighborsSignificance[index0 + oneRowDown] === 0 && - neighborsSignificance[index0 + twoRowsDown] === 0 && - neighborsSignificance[index0 + threeRowsDown] === 0); - var i1 = 0, index = index0; - var i = i0, sign; - if (allEmpty) { - var hasSignificantCoefficent = - decoder.readBit(contexts, RUNLENGTH_CONTEXT); - if (!hasSignificantCoefficent) { - bitsDecoded[index0]++; - bitsDecoded[index0 + oneRowDown]++; - bitsDecoded[index0 + twoRowsDown]++; - bitsDecoded[index0 + threeRowsDown]++; - continue; // next column - } - i1 = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) | - decoder.readBit(contexts, UNIFORM_CONTEXT); - if (i1 !== 0) { - i = i0 + i1; - index += i1 * width; - } - - sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - - index = index0; - for (var i2 = i0; i2 <= i; i2++, index += width) { - bitsDecoded[index]++; - } - - i1++; - } - for (i = i0 + i1; i < iNext; i++, index += width) { - if (coefficentsMagnitude[index] || - (processingFlags[index] & processedMask) !== 0) { - continue; - } - - var contextLabel = labels[neighborsSignificance[index]]; - var decision = decoder.readBit(contexts, contextLabel); - if (decision === 1) { - sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - } - bitsDecoded[index]++; - } - } - } - }, - checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() { - var decoder = this.decoder; - var contexts = this.contexts; - var symbol = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) | - (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) | - (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) | - decoder.readBit(contexts, UNIFORM_CONTEXT); - if (symbol !== 0xA) { - throw new Error('JPX Error: Invalid segmentation symbol'); - } - } - }; - - return BitModel; - })(); - - // Section F, Discrete wavelet transformation - var Transform = (function TransformClosure() { - function Transform() {} - - Transform.prototype.calculate = - function transformCalculate(subbands, u0, v0) { - var ll = subbands[0]; - for (var i = 1, ii = subbands.length; i < ii; i++) { - ll = this.iterate(ll, subbands[i], u0, v0); - } - return ll; - }; - Transform.prototype.extend = function extend(buffer, offset, size) { - // Section F.3.7 extending... using max extension of 4 - var i1 = offset - 1, j1 = offset + 1; - var i2 = offset + size - 2, j2 = offset + size; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1] = buffer[j1]; - buffer[j2] = buffer[i2]; - }; - Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh, - u0, v0) { - var llWidth = ll.width, llHeight = ll.height, llItems = ll.items; - var width = hl_lh_hh.width; - var height = hl_lh_hh.height; - var items = hl_lh_hh.items; - var i, j, k, l, u, v; - - // Interleave LL according to Section F.3.3 - for (k = 0, i = 0; i < llHeight; i++) { - l = i * 2 * width; - for (j = 0; j < llWidth; j++, k++, l += 2) { - items[l] = llItems[k]; - } - } - // The LL band is not needed anymore. - llItems = ll.items = null; - - var bufferPadding = 4; - var rowBuffer = new Float32Array(width + 2 * bufferPadding); - - // Section F.3.4 HOR_SR - if (width === 1) { - // if width = 1, when u0 even keep items as is, when odd divide by 2 - if ((u0 & 1) !== 0) { - for (v = 0, k = 0; v < height; v++, k += width) { - items[k] *= 0.5; - } - } - } else { - for (v = 0, k = 0; v < height; v++, k += width) { - rowBuffer.set(items.subarray(k, k + width), bufferPadding); - - this.extend(rowBuffer, bufferPadding, width); - this.filter(rowBuffer, bufferPadding, width); - - items.set( - rowBuffer.subarray(bufferPadding, bufferPadding + width), - k); - } - } - - // Accesses to the items array can take long, because it may not fit into - // CPU cache and has to be fetched from main memory. Since subsequent - // accesses to the items array are not local when reading columns, we - // have a cache miss every time. To reduce cache misses, get up to - // 'numBuffers' items at a time and store them into the individual - // buffers. The colBuffers should be small enough to fit into CPU cache. - var numBuffers = 16; - var colBuffers = []; - for (i = 0; i < numBuffers; i++) { - colBuffers.push(new Float32Array(height + 2 * bufferPadding)); - } - var b, currentBuffer = 0; - ll = bufferPadding + height; - - // Section F.3.5 VER_SR - if (height === 1) { - // if height = 1, when v0 even keep items as is, when odd divide by 2 - if ((v0 & 1) !== 0) { - for (u = 0; u < width; u++) { - items[u] *= 0.5; - } - } - } else { - for (u = 0; u < width; u++) { - // if we ran out of buffers, copy several image columns at once - if (currentBuffer === 0) { - numBuffers = Math.min(width - u, numBuffers); - for (k = u, l = bufferPadding; l < ll; k += width, l++) { - for (b = 0; b < numBuffers; b++) { - colBuffers[b][l] = items[k + b]; - } - } - currentBuffer = numBuffers; - } - - currentBuffer--; - var buffer = colBuffers[currentBuffer]; - this.extend(buffer, bufferPadding, height); - this.filter(buffer, bufferPadding, height); - - // If this is last buffer in this group of buffers, flush all buffers. - if (currentBuffer === 0) { - k = u - numBuffers + 1; - for (l = bufferPadding; l < ll; k += width, l++) { - for (b = 0; b < numBuffers; b++) { - items[k + b] = colBuffers[b][l]; - } - } - } - } - } - - return { - width: width, - height: height, - items: items - }; - }; - return Transform; - })(); - - // Section 3.8.2 Irreversible 9-7 filter - var IrreversibleTransform = (function IrreversibleTransformClosure() { - function IrreversibleTransform() { - Transform.call(this); - } - - IrreversibleTransform.prototype = Object.create(Transform.prototype); - IrreversibleTransform.prototype.filter = - function irreversibleTransformFilter(x, offset, length) { - var len = length >> 1; - offset = offset | 0; - var j, n, current, next; - - var alpha = -1.586134342059924; - var beta = -0.052980118572961; - var gamma = 0.882911075530934; - var delta = 0.443506852043971; - var K = 1.230174104914001; - var K_ = 1 / K; - - // step 1 is combined with step 3 - - // step 2 - j = offset - 3; - for (n = len + 4; n--; j += 2) { - x[j] *= K_; - } - - // step 1 & 3 - j = offset - 2; - current = delta * x[j -1]; - for (n = len + 3; n--; j += 2) { - next = delta * x[j + 1]; - x[j] = K * x[j] - current - next; - if (n--) { - j += 2; - current = delta * x[j + 1]; - x[j] = K * x[j] - current - next; - } else { - break; - } - } - - // step 4 - j = offset - 1; - current = gamma * x[j - 1]; - for (n = len + 2; n--; j += 2) { - next = gamma * x[j + 1]; - x[j] -= current + next; - if (n--) { - j += 2; - current = gamma * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - - // step 5 - j = offset; - current = beta * x[j - 1]; - for (n = len + 1; n--; j += 2) { - next = beta * x[j + 1]; - x[j] -= current + next; - if (n--) { - j += 2; - current = beta * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - - // step 6 - if (len !== 0) { - j = offset + 1; - current = alpha * x[j - 1]; - for (n = len; n--; j += 2) { - next = alpha * x[j + 1]; - x[j] -= current + next; - if (n--) { - j += 2; - current = alpha * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - } - }; - - return IrreversibleTransform; - })(); - - // Section 3.8.1 Reversible 5-3 filter - var ReversibleTransform = (function ReversibleTransformClosure() { - function ReversibleTransform() { - Transform.call(this); - } - - ReversibleTransform.prototype = Object.create(Transform.prototype); - ReversibleTransform.prototype.filter = - function reversibleTransformFilter(x, offset, length) { - var len = length >> 1; - offset = offset | 0; - var j, n; - - for (j = offset, n = len + 1; n--; j += 2) { - x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2; - } - - for (j = offset + 1, n = len; n--; j += 2) { - x[j] += (x[j - 1] + x[j + 1]) >> 1; - } - }; - - return ReversibleTransform; - })(); - - return JpxImage; -})(); - - -var Jbig2Image = (function Jbig2ImageClosure() { - // Utility data structures - function ContextCache() {} - - ContextCache.prototype = { - getContexts: function(id) { - if (id in this) { - return this[id]; - } - return (this[id] = new Int8Array(1 << 16)); - } - }; - - function DecodingContext(data, start, end) { - this.data = data; - this.start = start; - this.end = end; - } - - DecodingContext.prototype = { - get decoder() { - var decoder = new ArithmeticDecoder(this.data, this.start, this.end); - return shadow(this, 'decoder', decoder); - }, - get contextCache() { - var cache = new ContextCache(); - return shadow(this, 'contextCache', cache); - } - }; - - // Annex A. Arithmetic Integer Decoding Procedure - // A.2 Procedure for decoding values - function decodeInteger(contextCache, procedure, decoder) { - var contexts = contextCache.getContexts(procedure); - var prev = 1; - - function readBits(length) { - var v = 0; - for (var i = 0; i < length; i++) { - var bit = decoder.readBit(contexts, prev); - prev = (prev < 256 ? (prev << 1) | bit : - (((prev << 1) | bit) & 511) | 256); - v = (v << 1) | bit; - } - return v >>> 0; - } - - var sign = readBits(1); - var value = readBits(1) ? - (readBits(1) ? - (readBits(1) ? - (readBits(1) ? - (readBits(1) ? - (readBits(32) + 4436) : - readBits(12) + 340) : - readBits(8) + 84) : - readBits(6) + 20) : - readBits(4) + 4) : - readBits(2); - return (sign === 0 ? value : (value > 0 ? -value : null)); - } - - // A.3 The IAID decoding procedure - function decodeIAID(contextCache, decoder, codeLength) { - var contexts = contextCache.getContexts('IAID'); - - var prev = 1; - for (var i = 0; i < codeLength; i++) { - var bit = decoder.readBit(contexts, prev); - prev = (prev << 1) | bit; - } - if (codeLength < 31) { - return prev & ((1 << codeLength) - 1); - } - return prev & 0x7FFFFFFF; - } - - // 7.3 Segment types - var SegmentTypes = [ - 'SymbolDictionary', null, null, null, 'IntermediateTextRegion', null, - 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null, - null, null, null, null, null, 'patternDictionary', null, null, null, - 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion', - 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null, - null, null, null, null, null, 'IntermediateGenericRegion', null, - 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion', - 'IntermediateGenericRefinementRegion', null, - 'ImmediateGenericRefinementRegion', - 'ImmediateLosslessGenericRefinementRegion', null, null, null, null, - 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles', - 'Tables', null, null, null, null, null, null, null, null, - 'Extension' - ]; - - var CodingTemplates = [ - [{x: -1, y: -2}, {x: 0, y: -2}, {x: 1, y: -2}, {x: -2, y: -1}, - {x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, {x: 2, y: -1}, - {x: -4, y: 0}, {x: -3, y: 0}, {x: -2, y: 0}, {x: -1, y: 0}], - [{x: -1, y: -2}, {x: 0, y: -2}, {x: 1, y: -2}, {x: 2, y: -2}, - {x: -2, y: -1}, {x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, - {x: 2, y: -1}, {x: -3, y: 0}, {x: -2, y: 0}, {x: -1, y: 0}], - [{x: -1, y: -2}, {x: 0, y: -2}, {x: 1, y: -2}, {x: -2, y: -1}, - {x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, {x: -2, y: 0}, - {x: -1, y: 0}], - [{x: -3, y: -1}, {x: -2, y: -1}, {x: -1, y: -1}, {x: 0, y: -1}, - {x: 1, y: -1}, {x: -4, y: 0}, {x: -3, y: 0}, {x: -2, y: 0}, {x: -1, y: 0}] - ]; - - var RefinementTemplates = [ - { - coding: [{x: 0, y: -1}, {x: 1, y: -1}, {x: -1, y: 0}], - reference: [{x: 0, y: -1}, {x: 1, y: -1}, {x: -1, y: 0}, {x: 0, y: 0}, - {x: 1, y: 0}, {x: -1, y: 1}, {x: 0, y: 1}, {x: 1, y: 1}] - }, - { - coding: [{x: -1, y: -1}, {x: 0, y: -1}, {x: 1, y: -1}, {x: -1, y: 0}], - reference: [{x: 0, y: -1}, {x: -1, y: 0}, {x: 0, y: 0}, {x: 1, y: 0}, - {x: 0, y: 1}, {x: 1, y: 1}] - } - ]; - - // See 6.2.5.7 Decoding the bitmap. - var ReusedContexts = [ - 0x9B25, // 10011 0110010 0101 - 0x0795, // 0011 110010 101 - 0x00E5, // 001 11001 01 - 0x0195 // 011001 0101 - ]; - - var RefinementReusedContexts = [ - 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference) - 0x0008 // '0000' + '001000' - ]; - - function decodeBitmapTemplate0(width, height, decodingContext) { - var decoder = decodingContext.decoder; - var contexts = decodingContext.contextCache.getContexts('GB'); - var contextLabel, i, j, pixel, row, row1, row2, bitmap = []; - - // ...ooooo.... - // ..ooooooo... Context template for current pixel (X) - // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel) - var OLD_PIXEL_MASK = 0x7BF7; // 01111 0111111 0111 - - for (i = 0; i < height; i++) { - row = bitmap[i] = new Uint8Array(width); - row1 = (i < 1) ? row : bitmap[i - 1]; - row2 = (i < 2) ? row : bitmap[i - 2]; - - // At the beginning of each row: - // Fill contextLabel with pixels that are above/right of (X) - contextLabel = (row2[0] << 13) | (row2[1] << 12) | (row2[2] << 11) | - (row1[0] << 7) | (row1[1] << 6) | (row1[2] << 5) | - (row1[3] << 4); - - for (j = 0; j < width; j++) { - row[j] = pixel = decoder.readBit(contexts, contextLabel); - - // At each pixel: Clear contextLabel pixels that are shifted - // out of the context, then add new ones. - contextLabel = ((contextLabel & OLD_PIXEL_MASK) << 1) | - (j + 3 < width ? row2[j + 3] << 11 : 0) | - (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel; - } - } - - return bitmap; - } - - // 6.2 Generic Region Decoding Procedure - function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, - decodingContext) { - if (mmr) { - error('JBIG2 error: MMR encoding is not supported'); - } - - // Use optimized version for the most common case - if (templateIndex === 0 && !skip && !prediction && at.length === 4 && - at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && - at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) { - return decodeBitmapTemplate0(width, height, decodingContext); - } - - var useskip = !!skip; - var template = CodingTemplates[templateIndex].concat(at); - - // Sorting is non-standard, and it is not required. But sorting increases - // the number of template bits that can be reused from the previous - // contextLabel in the main loop. - template.sort(function (a, b) { - return (a.y - b.y) || (a.x - b.x); - }); - - var templateLength = template.length; - var templateX = new Int8Array(templateLength); - var templateY = new Int8Array(templateLength); - var changingTemplateEntries = []; - var reuseMask = 0, minX = 0, maxX = 0, minY = 0; - var c, k; - - for (k = 0; k < templateLength; k++) { - templateX[k] = template[k].x; - templateY[k] = template[k].y; - minX = Math.min(minX, template[k].x); - maxX = Math.max(maxX, template[k].x); - minY = Math.min(minY, template[k].y); - // Check if the template pixel appears in two consecutive context labels, - // so it can be reused. Otherwise, we add it to the list of changing - // template entries. - if (k < templateLength - 1 && - template[k].y === template[k + 1].y && - template[k].x === template[k + 1].x - 1) { - reuseMask |= 1 << (templateLength - 1 - k); - } else { - changingTemplateEntries.push(k); - } - } - var changingEntriesLength = changingTemplateEntries.length; - - var changingTemplateX = new Int8Array(changingEntriesLength); - var changingTemplateY = new Int8Array(changingEntriesLength); - var changingTemplateBit = new Uint16Array(changingEntriesLength); - for (c = 0; c < changingEntriesLength; c++) { - k = changingTemplateEntries[c]; - changingTemplateX[c] = template[k].x; - changingTemplateY[c] = template[k].y; - changingTemplateBit[c] = 1 << (templateLength - 1 - k); - } - - // Get the safe bounding box edges from the width, height, minX, maxX, minY - var sbb_left = -minX; - var sbb_top = -minY; - var sbb_right = width - maxX; - - var pseudoPixelContext = ReusedContexts[templateIndex]; - var row = new Uint8Array(width); - var bitmap = []; - - var decoder = decodingContext.decoder; - var contexts = decodingContext.contextCache.getContexts('GB'); - - var ltp = 0, j, i0, j0, contextLabel = 0, bit, shift; - for (var i = 0; i < height; i++) { - if (prediction) { - var sltp = decoder.readBit(contexts, pseudoPixelContext); - ltp ^= sltp; - if (ltp) { - bitmap.push(row); // duplicate previous row - continue; - } - } - row = new Uint8Array(row); - bitmap.push(row); - for (j = 0; j < width; j++) { - if (useskip && skip[i][j]) { - row[j] = 0; - continue; - } - // Are we in the middle of a scanline, so we can reuse contextLabel - // bits? - if (j >= sbb_left && j < sbb_right && i >= sbb_top) { - // If yes, we can just shift the bits that are reusable and only - // fetch the remaining ones. - contextLabel = (contextLabel << 1) & reuseMask; - for (k = 0; k < changingEntriesLength; k++) { - i0 = i + changingTemplateY[k]; - j0 = j + changingTemplateX[k]; - bit = bitmap[i0][j0]; - if (bit) { - bit = changingTemplateBit[k]; - contextLabel |= bit; - } - } - } else { - // compute the contextLabel from scratch - contextLabel = 0; - shift = templateLength - 1; - for (k = 0; k < templateLength; k++, shift--) { - j0 = j + templateX[k]; - if (j0 >= 0 && j0 < width) { - i0 = i + templateY[k]; - if (i0 >= 0) { - bit = bitmap[i0][j0]; - if (bit) { - contextLabel |= bit << shift; - } - } - } - } - } - var pixel = decoder.readBit(contexts, contextLabel); - row[j] = pixel; - } - } - return bitmap; - } - - // 6.3.2 Generic Refinement Region Decoding Procedure - function decodeRefinement(width, height, templateIndex, referenceBitmap, - offsetX, offsetY, prediction, at, - decodingContext) { - var codingTemplate = RefinementTemplates[templateIndex].coding; - if (templateIndex === 0) { - codingTemplate = codingTemplate.concat([at[0]]); - } - var codingTemplateLength = codingTemplate.length; - var codingTemplateX = new Int32Array(codingTemplateLength); - var codingTemplateY = new Int32Array(codingTemplateLength); - var k; - for (k = 0; k < codingTemplateLength; k++) { - codingTemplateX[k] = codingTemplate[k].x; - codingTemplateY[k] = codingTemplate[k].y; - } - - var referenceTemplate = RefinementTemplates[templateIndex].reference; - if (templateIndex === 0) { - referenceTemplate = referenceTemplate.concat([at[1]]); - } - var referenceTemplateLength = referenceTemplate.length; - var referenceTemplateX = new Int32Array(referenceTemplateLength); - var referenceTemplateY = new Int32Array(referenceTemplateLength); - for (k = 0; k < referenceTemplateLength; k++) { - referenceTemplateX[k] = referenceTemplate[k].x; - referenceTemplateY[k] = referenceTemplate[k].y; - } - var referenceWidth = referenceBitmap[0].length; - var referenceHeight = referenceBitmap.length; - - var pseudoPixelContext = RefinementReusedContexts[templateIndex]; - var bitmap = []; - - var decoder = decodingContext.decoder; - var contexts = decodingContext.contextCache.getContexts('GR'); - - var ltp = 0; - for (var i = 0; i < height; i++) { - if (prediction) { - var sltp = decoder.readBit(contexts, pseudoPixelContext); - ltp ^= sltp; - if (ltp) { - error('JBIG2 error: prediction is not supported'); - } - } - var row = new Uint8Array(width); - bitmap.push(row); - for (var j = 0; j < width; j++) { - var i0, j0; - var contextLabel = 0; - for (k = 0; k < codingTemplateLength; k++) { - i0 = i + codingTemplateY[k]; - j0 = j + codingTemplateX[k]; - if (i0 < 0 || j0 < 0 || j0 >= width) { - contextLabel <<= 1; // out of bound pixel - } else { - contextLabel = (contextLabel << 1) | bitmap[i0][j0]; - } - } - for (k = 0; k < referenceTemplateLength; k++) { - i0 = i + referenceTemplateY[k] + offsetY; - j0 = j + referenceTemplateX[k] + offsetX; - if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || - j0 >= referenceWidth) { - contextLabel <<= 1; // out of bound pixel - } else { - contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0]; - } - } - var pixel = decoder.readBit(contexts, contextLabel); - row[j] = pixel; - } - } - - return bitmap; - } - - // 6.5.5 Decoding the symbol dictionary - function decodeSymbolDictionary(huffman, refinement, symbols, - numberOfNewSymbols, numberOfExportedSymbols, - huffmanTables, templateIndex, at, - refinementTemplateIndex, refinementAt, - decodingContext) { - if (huffman) { - error('JBIG2 error: huffman is not supported'); - } - - var newSymbols = []; - var currentHeight = 0; - var symbolCodeLength = log2(symbols.length + numberOfNewSymbols); - - var decoder = decodingContext.decoder; - var contextCache = decodingContext.contextCache; - - while (newSymbols.length < numberOfNewSymbols) { - var deltaHeight = decodeInteger(contextCache, 'IADH', decoder); // 6.5.6 - currentHeight += deltaHeight; - var currentWidth = 0; - var totalWidth = 0; - while (true) { - var deltaWidth = decodeInteger(contextCache, 'IADW', decoder); // 6.5.7 - if (deltaWidth === null) { - break; // OOB - } - currentWidth += deltaWidth; - totalWidth += currentWidth; - var bitmap; - if (refinement) { - // 6.5.8.2 Refinement/aggregate-coded symbol bitmap - var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder); - if (numberOfInstances > 1) { - bitmap = decodeTextRegion(huffman, refinement, - currentWidth, currentHeight, 0, - numberOfInstances, 1, //strip size - symbols.concat(newSymbols), - symbolCodeLength, - 0, //transposed - 0, //ds offset - 1, //top left 7.4.3.1.1 - 0, //OR operator - huffmanTables, - refinementTemplateIndex, refinementAt, - decodingContext); - } else { - var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); - var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3 - var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4 - var symbol = (symbolId < symbols.length ? symbols[symbolId] : - newSymbols[symbolId - symbols.length]); - bitmap = decodeRefinement(currentWidth, currentHeight, - refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, - decodingContext); - } - } else { - // 6.5.8.1 Direct-coded symbol bitmap - bitmap = decodeBitmap(false, currentWidth, currentHeight, - templateIndex, false, null, at, decodingContext); - } - newSymbols.push(bitmap); - } - } - // 6.5.10 Exported symbols - var exportedSymbols = []; - var flags = [], currentFlag = false; - var totalSymbolsLength = symbols.length + numberOfNewSymbols; - while (flags.length < totalSymbolsLength) { - var runLength = decodeInteger(contextCache, 'IAEX', decoder); - while (runLength--) { - flags.push(currentFlag); - } - currentFlag = !currentFlag; - } - for (var i = 0, ii = symbols.length; i < ii; i++) { - if (flags[i]) { - exportedSymbols.push(symbols[i]); - } - } - for (var j = 0; j < numberOfNewSymbols; i++, j++) { - if (flags[i]) { - exportedSymbols.push(newSymbols[j]); - } - } - return exportedSymbols; - } - - function decodeTextRegion(huffman, refinement, width, height, - defaultPixelValue, numberOfSymbolInstances, - stripSize, inputSymbols, symbolCodeLength, - transposed, dsOffset, referenceCorner, - combinationOperator, huffmanTables, - refinementTemplateIndex, refinementAt, - decodingContext) { - if (huffman) { - error('JBIG2 error: huffman is not supported'); - } - - // Prepare bitmap - var bitmap = []; - var i, row; - for (i = 0; i < height; i++) { - row = new Uint8Array(width); - if (defaultPixelValue) { - for (var j = 0; j < width; j++) { - row[j] = defaultPixelValue; - } - } - bitmap.push(row); - } - - var decoder = decodingContext.decoder; - var contextCache = decodingContext.contextCache; - var stripT = -decodeInteger(contextCache, 'IADT', decoder); // 6.4.6 - var firstS = 0; - i = 0; - while (i < numberOfSymbolInstances) { - var deltaT = decodeInteger(contextCache, 'IADT', decoder); // 6.4.6 - stripT += deltaT; - - var deltaFirstS = decodeInteger(contextCache, 'IAFS', decoder); // 6.4.7 - firstS += deltaFirstS; - var currentS = firstS; - do { - var currentT = (stripSize === 1 ? 0 : - decodeInteger(contextCache, 'IAIT', decoder)); // 6.4.9 - var t = stripSize * stripT + currentT; - var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); - var applyRefinement = (refinement && - decodeInteger(contextCache, 'IARI', decoder)); - var symbolBitmap = inputSymbols[symbolId]; - var symbolWidth = symbolBitmap[0].length; - var symbolHeight = symbolBitmap.length; - if (applyRefinement) { - var rdw = decodeInteger(contextCache, 'IARDW', decoder); // 6.4.11.1 - var rdh = decodeInteger(contextCache, 'IARDH', decoder); // 6.4.11.2 - var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3 - var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4 - symbolWidth += rdw; - symbolHeight += rdh; - symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, - refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, - (rdh >> 1) + rdy, false, refinementAt, - decodingContext); - } - var offsetT = t - ((referenceCorner & 1) ? 0 : symbolHeight); - var offsetS = currentS - ((referenceCorner & 2) ? symbolWidth : 0); - var s2, t2, symbolRow; - if (transposed) { - // Place Symbol Bitmap from T1,S1 - for (s2 = 0; s2 < symbolHeight; s2++) { - row = bitmap[offsetS + s2]; - if (!row) { - continue; - } - symbolRow = symbolBitmap[s2]; - // To ignore Parts of Symbol bitmap which goes - // outside bitmap region - var maxWidth = Math.min(width - offsetT, symbolWidth); - switch (combinationOperator) { - case 0: // OR - for (t2 = 0; t2 < maxWidth; t2++) { - row[offsetT + t2] |= symbolRow[t2]; - } - break; - case 2: // XOR - for (t2 = 0; t2 < maxWidth; t2++) { - row[offsetT + t2] ^= symbolRow[t2]; - } - break; - default: - error('JBIG2 error: operator ' + combinationOperator + - ' is not supported'); - } - } - currentS += symbolHeight - 1; - } else { - for (t2 = 0; t2 < symbolHeight; t2++) { - row = bitmap[offsetT + t2]; - if (!row) { - continue; - } - symbolRow = symbolBitmap[t2]; - switch (combinationOperator) { - case 0: // OR - for (s2 = 0; s2 < symbolWidth; s2++) { - row[offsetS + s2] |= symbolRow[s2]; - } - break; - case 2: // XOR - for (s2 = 0; s2 < symbolWidth; s2++) { - row[offsetS + s2] ^= symbolRow[s2]; - } - break; - default: - error('JBIG2 error: operator ' + combinationOperator + - ' is not supported'); - } - } - currentS += symbolWidth - 1; - } - i++; - var deltaS = decodeInteger(contextCache, 'IADS', decoder); // 6.4.8 - if (deltaS === null) { - break; // OOB - } - currentS += deltaS + dsOffset; - } while (true); - } - return bitmap; - } - - function readSegmentHeader(data, start) { - var segmentHeader = {}; - segmentHeader.number = readUint32(data, start); - var flags = data[start + 4]; - var segmentType = flags & 0x3F; - if (!SegmentTypes[segmentType]) { - error('JBIG2 error: invalid segment type: ' + segmentType); - } - segmentHeader.type = segmentType; - segmentHeader.typeName = SegmentTypes[segmentType]; - segmentHeader.deferredNonRetain = !!(flags & 0x80); - - var pageAssociationFieldSize = !!(flags & 0x40); - var referredFlags = data[start + 5]; - var referredToCount = (referredFlags >> 5) & 7; - var retainBits = [referredFlags & 31]; - var position = start + 6; - if (referredFlags === 7) { - referredToCount = readUint32(data, position - 1) & 0x1FFFFFFF; - position += 3; - var bytes = (referredToCount + 7) >> 3; - retainBits[0] = data[position++]; - while (--bytes > 0) { - retainBits.push(data[position++]); - } - } else if (referredFlags === 5 || referredFlags === 6) { - error('JBIG2 error: invalid referred-to flags'); - } - - segmentHeader.retainBits = retainBits; - var referredToSegmentNumberSize = (segmentHeader.number <= 256 ? 1 : - (segmentHeader.number <= 65536 ? 2 : 4)); - var referredTo = []; - var i, ii; - for (i = 0; i < referredToCount; i++) { - var number = (referredToSegmentNumberSize === 1 ? data[position] : - (referredToSegmentNumberSize === 2 ? readUint16(data, position) : - readUint32(data, position))); - referredTo.push(number); - position += referredToSegmentNumberSize; - } - segmentHeader.referredTo = referredTo; - if (!pageAssociationFieldSize) { - segmentHeader.pageAssociation = data[position++]; - } else { - segmentHeader.pageAssociation = readUint32(data, position); - position += 4; - } - segmentHeader.length = readUint32(data, position); - position += 4; - - if (segmentHeader.length === 0xFFFFFFFF) { - // 7.2.7 Segment data length, unknown segment length - if (segmentType === 38) { // ImmediateGenericRegion - var genericRegionInfo = readRegionSegmentInformation(data, position); - var genericRegionSegmentFlags = data[position + - RegionSegmentInformationFieldLength]; - var genericRegionMmr = !!(genericRegionSegmentFlags & 1); - // searching for the segment end - var searchPatternLength = 6; - var searchPattern = new Uint8Array(searchPatternLength); - if (!genericRegionMmr) { - searchPattern[0] = 0xFF; - searchPattern[1] = 0xAC; - } - searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xFF; - searchPattern[3] = (genericRegionInfo.height >> 16) & 0xFF; - searchPattern[4] = (genericRegionInfo.height >> 8) & 0xFF; - searchPattern[5] = genericRegionInfo.height & 0xFF; - for (i = position, ii = data.length; i < ii; i++) { - var j = 0; - while (j < searchPatternLength && searchPattern[j] === data[i + j]) { - j++; - } - if (j === searchPatternLength) { - segmentHeader.length = i + searchPatternLength; - break; - } - } - if (segmentHeader.length === 0xFFFFFFFF) { - error('JBIG2 error: segment end was not found'); - } - } else { - error('JBIG2 error: invalid unknown segment length'); - } - } - segmentHeader.headerEnd = position; - return segmentHeader; - } - - function readSegments(header, data, start, end) { - var segments = []; - var position = start; - while (position < end) { - var segmentHeader = readSegmentHeader(data, position); - position = segmentHeader.headerEnd; - var segment = { - header: segmentHeader, - data: data - }; - if (!header.randomAccess) { - segment.start = position; - position += segmentHeader.length; - segment.end = position; - } - segments.push(segment); - if (segmentHeader.type === 51) { - break; // end of file is found - } - } - if (header.randomAccess) { - for (var i = 0, ii = segments.length; i < ii; i++) { - segments[i].start = position; - position += segments[i].header.length; - segments[i].end = position; - } - } - return segments; - } - - // 7.4.1 Region segment information field - function readRegionSegmentInformation(data, start) { - return { - width: readUint32(data, start), - height: readUint32(data, start + 4), - x: readUint32(data, start + 8), - y: readUint32(data, start + 12), - combinationOperator: data[start + 16] & 7 - }; - } - var RegionSegmentInformationFieldLength = 17; - - function processSegment(segment, visitor) { - var header = segment.header; - - var data = segment.data, position = segment.start, end = segment.end; - var args, at, i, atLength; - switch (header.type) { - case 0: // SymbolDictionary - // 7.4.2 Symbol dictionary segment syntax - var dictionary = {}; - var dictionaryFlags = readUint16(data, position); // 7.4.2.1.1 - dictionary.huffman = !!(dictionaryFlags & 1); - dictionary.refinement = !!(dictionaryFlags & 2); - dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3; - dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3; - dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1; - dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1; - dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256); - dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512); - dictionary.template = (dictionaryFlags >> 10) & 3; - dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1; - position += 2; - if (!dictionary.huffman) { - atLength = dictionary.template === 0 ? 4 : 1; - at = []; - for (i = 0; i < atLength; i++) { - at.push({ - x: readInt8(data, position), - y: readInt8(data, position + 1) - }); - position += 2; - } - dictionary.at = at; - } - if (dictionary.refinement && !dictionary.refinementTemplate) { - at = []; - for (i = 0; i < 2; i++) { - at.push({ - x: readInt8(data, position), - y: readInt8(data, position + 1) - }); - position += 2; - } - dictionary.refinementAt = at; - } - dictionary.numberOfExportedSymbols = readUint32(data, position); - position += 4; - dictionary.numberOfNewSymbols = readUint32(data, position); - position += 4; - args = [dictionary, header.number, header.referredTo, - data, position, end]; - break; - case 6: // ImmediateTextRegion - case 7: // ImmediateLosslessTextRegion - var textRegion = {}; - textRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - var textRegionSegmentFlags = readUint16(data, position); - position += 2; - textRegion.huffman = !!(textRegionSegmentFlags & 1); - textRegion.refinement = !!(textRegionSegmentFlags & 2); - textRegion.stripSize = 1 << ((textRegionSegmentFlags >> 2) & 3); - textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3; - textRegion.transposed = !!(textRegionSegmentFlags & 64); - textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3; - textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1; - textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27; - textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1; - if (textRegion.huffman) { - var textRegionHuffmanFlags = readUint16(data, position); - position += 2; - textRegion.huffmanFS = (textRegionHuffmanFlags) & 3; - textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3; - textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3; - textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3; - textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3; - textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3; - textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3; - textRegion.huffmanRefinementSizeSelector = - !!(textRegionHuffmanFlags & 14); - } - if (textRegion.refinement && !textRegion.refinementTemplate) { - at = []; - for (i = 0; i < 2; i++) { - at.push({ - x: readInt8(data, position), - y: readInt8(data, position + 1) - }); - position += 2; - } - textRegion.refinementAt = at; - } - textRegion.numberOfSymbolInstances = readUint32(data, position); - position += 4; - // TODO 7.4.3.1.7 Symbol ID Huffman table decoding - if (textRegion.huffman) { - error('JBIG2 error: huffman is not supported'); - } - args = [textRegion, header.referredTo, data, position, end]; - break; - case 38: // ImmediateGenericRegion - case 39: // ImmediateLosslessGenericRegion - var genericRegion = {}; - genericRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - var genericRegionSegmentFlags = data[position++]; - genericRegion.mmr = !!(genericRegionSegmentFlags & 1); - genericRegion.template = (genericRegionSegmentFlags >> 1) & 3; - genericRegion.prediction = !!(genericRegionSegmentFlags & 8); - if (!genericRegion.mmr) { - atLength = genericRegion.template === 0 ? 4 : 1; - at = []; - for (i = 0; i < atLength; i++) { - at.push({ - x: readInt8(data, position), - y: readInt8(data, position + 1) - }); - position += 2; - } - genericRegion.at = at; - } - args = [genericRegion, data, position, end]; - break; - case 48: // PageInformation - var pageInfo = { - width: readUint32(data, position), - height: readUint32(data, position + 4), - resolutionX: readUint32(data, position + 8), - resolutionY: readUint32(data, position + 12) - }; - if (pageInfo.height === 0xFFFFFFFF) { - delete pageInfo.height; - } - var pageSegmentFlags = data[position + 16]; - var pageStripingInformatiom = readUint16(data, position + 17); - pageInfo.lossless = !!(pageSegmentFlags & 1); - pageInfo.refinement = !!(pageSegmentFlags & 2); - pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1; - pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3; - pageInfo.requiresBuffer = !!(pageSegmentFlags & 32); - pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64); - args = [pageInfo]; - break; - case 49: // EndOfPage - break; - case 50: // EndOfStripe - break; - case 51: // EndOfFile - break; - case 62: // 7.4.15 defines 2 extension types which - // are comments and can be ignored. - break; - default: - error('JBIG2 error: segment type ' + header.typeName + '(' + - header.type + ') is not implemented'); - } - var callbackName = 'on' + header.typeName; - if (callbackName in visitor) { - visitor[callbackName].apply(visitor, args); - } - } - - function processSegments(segments, visitor) { - for (var i = 0, ii = segments.length; i < ii; i++) { - processSegment(segments[i], visitor); - } - } - - function parseJbig2(data, start, end) { - var position = start; - if (data[position] !== 0x97 || data[position + 1] !== 0x4A || - data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || - data[position + 4] !== 0x0D || data[position + 5] !== 0x0A || - data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) { - error('JBIG2 error: invalid header'); - } - var header = {}; - position += 8; - var flags = data[position++]; - header.randomAccess = !(flags & 1); - if (!(flags & 2)) { - header.numberOfPages = readUint32(data, position); - position += 4; - } - var segments = readSegments(header, data, position, end); - error('Not implemented'); - // processSegments(segments, new SimpleSegmentVisitor()); - } - - function parseJbig2Chunks(chunks) { - var visitor = new SimpleSegmentVisitor(); - for (var i = 0, ii = chunks.length; i < ii; i++) { - var chunk = chunks[i]; - var segments = readSegments({}, chunk.data, chunk.start, chunk.end); - processSegments(segments, visitor); - } - return visitor.buffer; - } - - function SimpleSegmentVisitor() {} - - SimpleSegmentVisitor.prototype = { - onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) { - this.currentPageInfo = info; - var rowSize = (info.width + 7) >> 3; - var buffer = new Uint8Array(rowSize * info.height); - // The contents of ArrayBuffers are initialized to 0. - // Fill the buffer with 0xFF only if info.defaultPixelValue is set - if (info.defaultPixelValue) { - for (var i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] = 0xFF; - } - } - this.buffer = buffer; - }, - drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) { - var pageInfo = this.currentPageInfo; - var width = regionInfo.width, height = regionInfo.height; - var rowSize = (pageInfo.width + 7) >> 3; - var combinationOperator = pageInfo.combinationOperatorOverride ? - regionInfo.combinationOperator : pageInfo.combinationOperator; - var buffer = this.buffer; - var mask0 = 128 >> (regionInfo.x & 7); - var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3); - var i, j, mask, offset; - switch (combinationOperator) { - case 0: // OR - for (i = 0; i < height; i++) { - mask = mask0; - offset = offset0; - for (j = 0; j < width; j++) { - if (bitmap[i][j]) { - buffer[offset] |= mask; - } - mask >>= 1; - if (!mask) { - mask = 128; - offset++; - } - } - offset0 += rowSize; - } - break; - case 2: // XOR - for (i = 0; i < height; i++) { - mask = mask0; - offset = offset0; - for (j = 0; j < width; j++) { - if (bitmap[i][j]) { - buffer[offset] ^= mask; - } - mask >>= 1; - if (!mask) { - mask = 128; - offset++; - } - } - offset0 += rowSize; - } - break; - default: - error('JBIG2 error: operator ' + combinationOperator + - ' is not supported'); - } - }, - onImmediateGenericRegion: - function SimpleSegmentVisitor_onImmediateGenericRegion(region, data, - start, end) { - var regionInfo = region.info; - var decodingContext = new DecodingContext(data, start, end); - var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, - region.template, region.prediction, null, - region.at, decodingContext); - this.drawBitmap(regionInfo, bitmap); - }, - onImmediateLosslessGenericRegion: - function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() { - this.onImmediateGenericRegion.apply(this, arguments); - }, - onSymbolDictionary: - function SimpleSegmentVisitor_onSymbolDictionary(dictionary, - currentSegment, - referredSegments, - data, start, end) { - var huffmanTables; - if (dictionary.huffman) { - error('JBIG2 error: huffman is not supported'); - } - - // Combines exported symbols from all referred segments - var symbols = this.symbols; - if (!symbols) { - this.symbols = symbols = {}; - } - - var inputSymbols = []; - for (var i = 0, ii = referredSegments.length; i < ii; i++) { - inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]); - } - - var decodingContext = new DecodingContext(data, start, end); - symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, - dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, - dictionary.numberOfExportedSymbols, huffmanTables, - dictionary.template, dictionary.at, - dictionary.refinementTemplate, dictionary.refinementAt, - decodingContext); - }, - onImmediateTextRegion: - function SimpleSegmentVisitor_onImmediateTextRegion(region, - referredSegments, - data, start, end) { - var regionInfo = region.info; - var huffmanTables; - - // Combines exported symbols from all referred segments - var symbols = this.symbols; - var inputSymbols = []; - for (var i = 0, ii = referredSegments.length; i < ii; i++) { - inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]); - } - var symbolCodeLength = log2(inputSymbols.length); - - var decodingContext = new DecodingContext(data, start, end); - var bitmap = decodeTextRegion(region.huffman, region.refinement, - regionInfo.width, regionInfo.height, region.defaultPixelValue, - region.numberOfSymbolInstances, region.stripSize, inputSymbols, - symbolCodeLength, region.transposed, region.dsOffset, - region.referenceCorner, region.combinationOperator, huffmanTables, - region.refinementTemplate, region.refinementAt, decodingContext); - this.drawBitmap(regionInfo, bitmap); - }, - onImmediateLosslessTextRegion: - function SimpleSegmentVisitor_onImmediateLosslessTextRegion() { - this.onImmediateTextRegion.apply(this, arguments); - } - }; - - function Jbig2Image() {} - - Jbig2Image.prototype = { - parseChunks: function Jbig2Image_parseChunks(chunks) { - return parseJbig2Chunks(chunks); - } - }; - - return Jbig2Image; -})(); - - -var bidi = PDFJS.bidi = (function bidiClosure() { - // Character types for symbols from 0000 to 00FF. - var baseTypes = [ - 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS', - 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', - 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON', - 'ON', 'ON', 'ON', 'ON', 'ON', 'CS', 'ON', 'CS', 'ON', 'EN', 'EN', 'EN', - 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'ON', 'ON', 'ON', 'ON', 'ON', - 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', - 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', - 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', - 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', - 'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', - 'ON', 'ON', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', - 'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', - 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L' - ]; - - // Character types for symbols from 0600 to 06FF - var arabicTypes = [ - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', - 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', - 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', - 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'ON', 'NSM', - 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', - 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL' - ]; - - function isOdd(i) { - return (i & 1) !== 0; - } - - function isEven(i) { - return (i & 1) === 0; - } - - function findUnequal(arr, start, value) { - for (var j = start, jj = arr.length; j < jj; ++j) { - if (arr[j] !== value) { - return j; - } - } - return j; - } - - function setValues(arr, start, end, value) { - for (var j = start; j < end; ++j) { - arr[j] = value; - } - } - - function reverseValues(arr, start, end) { - for (var i = start, j = end - 1; i < j; ++i, --j) { - var temp = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - } - } - - function createBidiText(str, isLTR, vertical) { - return { - str: str, - dir: (vertical ? 'ttb' : (isLTR ? 'ltr' : 'rtl')) - }; - } - - // These are used in bidi(), which is called frequently. We re-use them on - // each call to avoid unnecessary allocations. - var chars = []; - var types = []; - - function bidi(str, startLevel, vertical) { - var isLTR = true; - var strLength = str.length; - if (strLength === 0 || vertical) { - return createBidiText(str, isLTR, vertical); - } - - // Get types and fill arrays - chars.length = strLength; - types.length = strLength; - var numBidi = 0; - - var i, ii; - for (i = 0; i < strLength; ++i) { - chars[i] = str.charAt(i); - - var charCode = str.charCodeAt(i); - var charType = 'L'; - if (charCode <= 0x00ff) { - charType = baseTypes[charCode]; - } else if (0x0590 <= charCode && charCode <= 0x05f4) { - charType = 'R'; - } else if (0x0600 <= charCode && charCode <= 0x06ff) { - charType = arabicTypes[charCode & 0xff]; - } else if (0x0700 <= charCode && charCode <= 0x08AC) { - charType = 'AL'; - } - if (charType === 'R' || charType === 'AL' || charType === 'AN') { - numBidi++; - } - types[i] = charType; - } - - // Detect the bidi method - // - If there are no rtl characters then no bidi needed - // - If less than 30% chars are rtl then string is primarily ltr - // - If more than 30% chars are rtl then string is primarily rtl - if (numBidi === 0) { - isLTR = true; - return createBidiText(str, isLTR); - } - - if (startLevel === -1) { - if ((strLength / numBidi) < 0.3) { - isLTR = true; - startLevel = 0; - } else { - isLTR = false; - startLevel = 1; - } - } - - var levels = []; - for (i = 0; i < strLength; ++i) { - levels[i] = startLevel; - } - - /* - X1-X10: skip most of this, since we are NOT doing the embeddings. - */ - var e = (isOdd(startLevel) ? 'R' : 'L'); - var sor = e; - var eor = sor; - - /* - W1. Examine each non-spacing mark (NSM) in the level run, and change the - type of the NSM to the type of the previous character. If the NSM is at the - start of the level run, it will get the type of sor. - */ - var lastType = sor; - for (i = 0; i < strLength; ++i) { - if (types[i] === 'NSM') { - types[i] = lastType; - } else { - lastType = types[i]; - } - } - - /* - W2. Search backwards from each instance of a European number until the - first strong type (R, L, AL, or sor) is found. If an AL is found, change - the type of the European number to Arabic number. - */ - lastType = sor; - var t; - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (t === 'EN') { - types[i] = (lastType === 'AL') ? 'AN' : 'EN'; - } else if (t === 'R' || t === 'L' || t === 'AL') { - lastType = t; - } - } - - /* - W3. Change all ALs to R. - */ - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (t === 'AL') { - types[i] = 'R'; - } - } - - /* - W4. A single European separator between two European numbers changes to a - European number. A single common separator between two numbers of the same - type changes to that type: - */ - for (i = 1; i < strLength - 1; ++i) { - if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') { - types[i] = 'EN'; - } - if (types[i] === 'CS' && - (types[i - 1] === 'EN' || types[i - 1] === 'AN') && - types[i + 1] === types[i - 1]) { - types[i] = types[i - 1]; - } - } - - /* - W5. A sequence of European terminators adjacent to European numbers changes - to all European numbers: - */ - for (i = 0; i < strLength; ++i) { - if (types[i] === 'EN') { - // do before - var j; - for (j = i - 1; j >= 0; --j) { - if (types[j] !== 'ET') { - break; - } - types[j] = 'EN'; - } - // do after - for (j = i + 1; j < strLength; --j) { - if (types[j] !== 'ET') { - break; - } - types[j] = 'EN'; - } - } - } - - /* - W6. Otherwise, separators and terminators change to Other Neutral: - */ - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') { - types[i] = 'ON'; - } - } - - /* - W7. Search backwards from each instance of a European number until the - first strong type (R, L, or sor) is found. If an L is found, then change - the type of the European number to L. - */ - lastType = sor; - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (t === 'EN') { - types[i] = ((lastType === 'L') ? 'L' : 'EN'); - } else if (t === 'R' || t === 'L') { - lastType = t; - } - } - - /* - N1. A sequence of neutrals takes the direction of the surrounding strong - text if the text on both sides has the same direction. European and Arabic - numbers are treated as though they were R. Start-of-level-run (sor) and - end-of-level-run (eor) are used at level run boundaries. - */ - for (i = 0; i < strLength; ++i) { - if (types[i] === 'ON') { - var end = findUnequal(types, i + 1, 'ON'); - var before = sor; - if (i > 0) { - before = types[i - 1]; - } - - var after = eor; - if (end + 1 < strLength) { - after = types[end + 1]; - } - if (before !== 'L') { - before = 'R'; - } - if (after !== 'L') { - after = 'R'; - } - if (before === after) { - setValues(types, i, end, before); - } - i = end - 1; // reset to end (-1 so next iteration is ok) - } - } - - /* - N2. Any remaining neutrals take the embedding direction. - */ - for (i = 0; i < strLength; ++i) { - if (types[i] === 'ON') { - types[i] = e; - } - } - - /* - I1. For all characters with an even (left-to-right) embedding direction, - those of type R go up one level and those of type AN or EN go up two - levels. - I2. For all characters with an odd (right-to-left) embedding direction, - those of type L, EN or AN go up one level. - */ - for (i = 0; i < strLength; ++i) { - t = types[i]; - if (isEven(levels[i])) { - if (t === 'R') { - levels[i] += 1; - } else if (t === 'AN' || t === 'EN') { - levels[i] += 2; - } - } else { // isOdd - if (t === 'L' || t === 'AN' || t === 'EN') { - levels[i] += 1; - } - } - } - - /* - L1. On each line, reset the embedding level of the following characters to - the paragraph embedding level: - - segment separators, - paragraph separators, - any sequence of whitespace characters preceding a segment separator or - paragraph separator, and any sequence of white space characters at the end - of the line. - */ - - // don't bother as text is only single line - - /* - L2. From the highest level found in the text to the lowest odd level on - each line, reverse any contiguous sequence of characters that are at that - level or higher. - */ - - // find highest level & lowest odd level - var highestLevel = -1; - var lowestOddLevel = 99; - var level; - for (i = 0, ii = levels.length; i < ii; ++i) { - level = levels[i]; - if (highestLevel < level) { - highestLevel = level; - } - if (lowestOddLevel > level && isOdd(level)) { - lowestOddLevel = level; - } - } - - // now reverse between those limits - for (level = highestLevel; level >= lowestOddLevel; --level) { - // find segments to reverse - var start = -1; - for (i = 0, ii = levels.length; i < ii; ++i) { - if (levels[i] < level) { - if (start >= 0) { - reverseValues(chars, start, i); - start = -1; - } - } else if (start < 0) { - start = i; - } - } - if (start >= 0) { - reverseValues(chars, start, levels.length); - } - } - - /* - L3. Combining marks applied to a right-to-left base character will at this - point precede their base character. If the rendering engine expects them to - follow the base characters in the final display process, then the ordering - of the marks and the base character must be reversed. - */ - - // don't bother for now - - /* - L4. A character that possesses the mirrored property as specified by - Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved - directionality of that character is R. - */ - - // don't mirror as characters are already mirrored in the pdf - - // Finally, return string - for (i = 0, ii = chars.length; i < ii; ++i) { - var ch = chars[i]; - if (ch === '<' || ch === '>') { - chars[i] = ''; - } - } - return createBidiText(chars.join(''), isLTR); - } - - return bidi; -})(); - - -var MurmurHash3_64 = (function MurmurHash3_64Closure (seed) { - // Workaround for missing math precison in JS. - var MASK_HIGH = 0xffff0000; - var MASK_LOW = 0xffff; - - function MurmurHash3_64 (seed) { - var SEED = 0xc3d2e1f0; - this.h1 = seed ? seed & 0xffffffff : SEED; - this.h2 = seed ? seed & 0xffffffff : SEED; - } - - var alwaysUseUint32ArrayView = false; - // old webkits have issues with non-aligned arrays - try { - new Uint32Array(new Uint8Array(5).buffer, 0, 1); - } catch (e) { - alwaysUseUint32ArrayView = true; - } - - MurmurHash3_64.prototype = { - update: function MurmurHash3_64_update(input) { - var useUint32ArrayView = alwaysUseUint32ArrayView; - var i; - if (typeof input === 'string') { - var data = new Uint8Array(input.length * 2); - var length = 0; - for (i = 0; i < input.length; i++) { - var code = input.charCodeAt(i); - if (code <= 0xff) { - data[length++] = code; - } - else { - data[length++] = code >>> 8; - data[length++] = code & 0xff; - } - } - } else if (input instanceof Uint8Array) { - data = input; - length = data.length; - } else if (typeof input === 'object' && ('length' in input)) { - // processing regular arrays as well, e.g. for IE9 - data = input; - length = data.length; - useUint32ArrayView = true; - } else { - throw new Error('Wrong data format in MurmurHash3_64_update. ' + - 'Input must be a string or array.'); - } - - var blockCounts = length >> 2; - var tailLength = length - blockCounts * 4; - // we don't care about endianness here - var dataUint32 = useUint32ArrayView ? - new Uint32ArrayView(data, blockCounts) : - new Uint32Array(data.buffer, 0, blockCounts); - var k1 = 0; - var k2 = 0; - var h1 = this.h1; - var h2 = this.h2; - var C1 = 0xcc9e2d51; - var C2 = 0x1b873593; - var C1_LOW = C1 & MASK_LOW; - var C2_LOW = C2 & MASK_LOW; - - for (i = 0; i < blockCounts; i++) { - if (i & 1) { - k1 = dataUint32[i]; - k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW); - k1 = k1 << 15 | k1 >>> 17; - k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW); - h1 ^= k1; - h1 = h1 << 13 | h1 >>> 19; - h1 = h1 * 5 + 0xe6546b64; - } else { - k2 = dataUint32[i]; - k2 = (k2 * C1 & MASK_HIGH) | (k2 * C1_LOW & MASK_LOW); - k2 = k2 << 15 | k2 >>> 17; - k2 = (k2 * C2 & MASK_HIGH) | (k2 * C2_LOW & MASK_LOW); - h2 ^= k2; - h2 = h2 << 13 | h2 >>> 19; - h2 = h2 * 5 + 0xe6546b64; - } - } - - k1 = 0; - - switch (tailLength) { - case 3: - k1 ^= data[blockCounts * 4 + 2] << 16; - /* falls through */ - case 2: - k1 ^= data[blockCounts * 4 + 1] << 8; - /* falls through */ - case 1: - k1 ^= data[blockCounts * 4]; - /* falls through */ - k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW); - k1 = k1 << 15 | k1 >>> 17; - k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW); - if (blockCounts & 1) { - h1 ^= k1; - } else { - h2 ^= k1; - } - } - - this.h1 = h1; - this.h2 = h2; - return this; - }, - - hexdigest: function MurmurHash3_64_hexdigest () { - var h1 = this.h1; - var h2 = this.h2; - - h1 ^= h2 >>> 1; - h1 = (h1 * 0xed558ccd & MASK_HIGH) | (h1 * 0x8ccd & MASK_LOW); - h2 = (h2 * 0xff51afd7 & MASK_HIGH) | - (((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16); - h1 ^= h2 >>> 1; - h1 = (h1 * 0x1a85ec53 & MASK_HIGH) | (h1 * 0xec53 & MASK_LOW); - h2 = (h2 * 0xc4ceb9fe & MASK_HIGH) | - (((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16); - h1 ^= h2 >>> 1; - - for (var i = 0, arr = [h1, h2], str = ''; i < arr.length; i++) { - var hex = (arr[i] >>> 0).toString(16); - while (hex.length < 8) { - hex = '0' + hex; - } - str += hex; - } - - return str; - } - }; - - return MurmurHash3_64; -})(); - - -}).call((typeof window === 'undefined') ? this : window); - -if (!PDFJS.workerSrc && typeof document !== 'undefined') { - // workerSrc is not set -- using last script url to define default location - PDFJS.workerSrc = (function () { - 'use strict'; - var pdfJsSrc = document.currentScript.src; - return pdfJsSrc && pdfJsSrc.replace(/\.js$/i, '.worker.js'); - })(); -} - - diff --git a/public/pdfjs/web/cmaps/78-EUC-H.bcmap b/public/pdfjs/web/cmaps/78-EUC-H.bcmap deleted file mode 100644 index 2655fc70ae706c7ba52a5d647cbfdfad6072c697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2404 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 diff --git a/public/pdfjs/web/cmaps/78-EUC-V.bcmap b/public/pdfjs/web/cmaps/78-EUC-V.bcmap deleted file mode 100644 index f1ed8538287499647d923d7d8f517a00cdac4e3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TVQ!)88tSa;k;uAm5#wHeUdFwF voJ@OznOOFQu?X&sb`)LsaBps_Jp&^YN;1fUS!@iAMpy(B8JB)#+{Xj}Q4TH^ diff --git a/public/pdfjs/web/cmaps/78-H.bcmap b/public/pdfjs/web/cmaps/78-H.bcmap deleted file mode 100644 index 39e89d3339c74cbe06e7e4f76d60bf3556b0d4b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2379 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 ZWxHCHd+DL=OQIb$$lQ?y)&e^@{{yR6zuEu* diff --git a/public/pdfjs/web/cmaps/78-RKSJ-H.bcmap b/public/pdfjs/web/cmaps/78-RKSJ-H.bcmap deleted file mode 100644 index e4167cb51f66c60ef7d9500b450303b5da175574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2398 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 MmB7!(fvwX20)!{wUH||9 diff --git a/public/pdfjs/web/cmaps/78-RKSJ-V.bcmap b/public/pdfjs/web/cmaps/78-RKSJ-V.bcmap deleted file mode 100644 index 50b1646e94bba61b3242a680fe3023337e191123..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TX>Oq#<Q?p#>ygOX=*YO&pO<lO xASct_U?!HmVJw1sqa8&X8~5fm$uclPp(KMmn8n5rj3lN26-#7np31n72>=jMENuV) diff --git a/public/pdfjs/web/cmaps/78-V.bcmap b/public/pdfjs/web/cmaps/78-V.bcmap deleted file mode 100644 index d7af99b5e2ae9a21d534f1965c35a2b572143322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TVs4@9k;tm3#JJa=mvL_(C)3_w qCYHTnEP{KZ9Yqxr_vW_RGcZD-B!fJd#m3NRgheosQMHtD9}@un{3-|l diff --git a/public/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap b/public/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap deleted file mode 100644 index 37077d01e26f9ee2427592f6deebb145d628e731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2651 zcmW+&>su379)3?IlVlPI_nQO=7v(Aj5fH&R7(l=(3boRT!dN4sTpU0UwHkd20)c>B zl5n?bS84?+7Zv6VTibnh{|&dhz3ubte%bx9{j_KMVV?IlGv{}E-`~tRn)fx1_UpYJ z%}rOjtT}~+w!QmpwnA&krS^+XYi)05m$S9gTG{q#d&l+m4yns|Dce}m(qjF6eW$g< z+3D=){{O>Tr_-9f?}JK5*~!{65ZnhL_eHfB<na+g-iuqsR)U24O^q7s`TI@4=RH#B zebN4TFUjgVXwvsN4Z6Nolew=;ukYuy=r`2}{Q>%z{z!J&v^D)zC+!d8NaVwML)61g zL)3t&**cIMWF9CbAp^Cit)DM$7idCtX2BdE5^wI&L^3mynek^WK^AjaN>oayL>`K9 z3MU6XY#>S^b}mCn!Oj&Zd$4nrC~4SfAxb88t`Q|0JMB6phk4w^J5ClJx;W(^c6yA; zVf5WXUoZNJPN_gYh*B*F4=iH93FS0D(1dTR^aE|!iNRKqZr~=Anw&vEspST9p?s(x zJP73s87z@agQ8*30p%lM@C1~zn!!3Kb(+C?D4%eHjZn^62Ay)?pvyR<fl?ncWQKAc zTa{2Q92m-k(hxl)L1`pIx1mTFx-032L=4?ynJyyUO@K8CygLzio`48<njAjl(z@+X zKGnKQp<L3rtDrcEy9O&c8uu9}ms8vyLutZ`4#O}Da)lc<V#69T90a8~dN@hq-J&pD z#NJ#**l;<+Ylt5{Cx^IQ3B$LbwCF}+p|tKANyhem{m2n0ZI+P=DDC_RWBEEi(h5b! zNEeh2jC9LE!=h%S2TEti2&=y<z{9$`q4!vzbZb1jq4W?>I+UAQPZr(=a-RKi;INDH z<U{E-d5WOi(s@|y+nnbVlslmwR{m!uPcxLe#hz|i7!ie0#`Qhps2vo-XcZ`l9zBEQ z^P16iIdH@kFxmmC;l}{VabtQ=ZT?sQC?7gj3aT@W)q(1TF{dneM1HIt)Ii3%K?RKU zf*MU@w?R$29~mUQ$5r+yTNCi8n`p<inuKwaLm1B_!gxMO8!wTF=Py`Gmw3;gK?BX8 zW}eWXR?rY5Xs8@A>N1UAB{Ym1ze#9>dHgPDRKNsV7j2xdfX0MRq=D`-Ot2nexrqu; zOU%Rxi60XU6YS%mao9T{GmHm6X_d`mF3<%1WGbjNV$ueh7(aOoG%0Da2{c)lG7*}> zPel>Bhnq@}O^-x=Dj75l8*M>TnV{(*Q^lYeWU3l8(>zrJnk9!kav7#Bg6_3VwSZ=u zz44&?0=?OwHr{&}G{@*=Z0*;2PZ65Sd(VRA!Fxd##zo%S0Gbc)WkL&xx0%qwKridN zDA9XIju>|Z`B<c4&bJTrFz-76YLD|3fgTZjpMZ++IYCQ^kJWt?zN?@P&ewu(kMlkm zPxF#|H|4Mi5&l@vQqCU-TE_d6K+ARhbkJjZe-3Dc-hT+RlK35<Ra$>Jp~pG@2`o40 z{WWsTgp2dDJSPnP1}vT8{LOfg&-vRxPbT?0L8~>>QJ|-Sr(+2{t)0#$w3eIB13kk{ zA0qT4GA)AE8K)iCY}HR!OZrJsKYf<T@G;EOjSN45W%@e9bI{M2<*-SYZYC169_s?= zdCiO!^g`H73TT62rVz9dGptA{X{HSHV!%u@=%*nwJ)oBivqm|1O2lj!p-$s03(<t7 zBFr+;u8`T?pv}T88;`32v$>$x$ZQE{OW<s&EKIq?StehrVJ;lB%{0fTZjYN|5?|NO zRY`iUh`DN3o(z8OG{X*9=js@CB5dxK9O-ol^JZ-4YUg7>yL9sj*vZ1<eYSa)>xOZj z@z$-KzYN+#=Gjc#jF@l78Y8C{3wqF7SYS=wmIa>}ykG*oV_9JOe5P4o;@;IR9KrSh z?LwJk^0^EPRm8sVA=$eauF))(mYNqU2)9^A$l`etv)Gt*VDT0(pNiDSHi`JpV5LXW z`36Dn9f68$qLOl`To6>P9x5*j(_-x7I;c9s;~P-*n#cE`8t?@NRS5Zlm&nWy@Ug9C z+I8oPD2Mq;I59j)AxTfN37*st<C9vF_oRWuKaC_YPxBqIPfwA=r>#WuEQrKD3nS;A z*&OyS14!bR$H~WEwmIy7sE~x2YN$p5swo+2U?5a;KGdN5F;Ii|Kn<}#4ShhMhReoz z7t{#ja|6^!<MVL1Q{$dnp+<#1XN^SLp4Uob@!xRYlY$q-<RvZPmeNVUQZ_J~1l>|G zF)ld>mY81tE8v$-lcuFQhy5#&<bTEf^Zr&uyeJ^aFHRD}i%yAOxCAvu3w2i_)L53$ z@}LlETqE0jACyam_oDs99g_TY5h?h(kwm<VA^Mj#hw$<s;a)m4dtX*c<o$oJohNDE zKZBZZ5URBWYND2?NwV-)SK7-Ss3}Fui5P9e@&))$bIXlTcbk`;lKuxVZMh3j_rS0c z&oGr?8sPpASlKTNKe+N&a-pV~R<2>O-m-ENYPw-H5^6@!s#P-mO^jN#F|SNuwUS{L zgw^8=_ab`rBjQ+XXLdFUzB%Bqf72od{@umB%7nU)du4-a)4$4tniK!Z4s}2O>H^f< zf>%zc2ZXhFN&lmWHCD%?8!)bA01G@a*78|hR%q8Q%EFJX#I+{O#FKR+)co*uCS-wa zok@DoynaUFe-eY&FR|Q(NMG*;hRq-wiL&V@7r(*Q95QcYKrPDMIE1N;T^sFCi-k=S z)WgDNq{RI!W^G!TuN}dgCuP&mF4JZM)FaqroQhGKZBR=>U$fyo8vQyJs$<XVJc;}w z+F#ep#$Q}V->_%p#y8C4nD)&zs1>nqWO#C*RvO+0N#s}2{x(`R{_4tjdlqU{;1-+o z<3U@Y7+@NGkg}D6p>$!ZN+SRIFZ$Xg^3M&7R!Zi7i2JsfBI*eQZu7*l9medF&~E2| zd|TfaYk!wYa^GDh$G+R;uzz=vw0xha5&mc)nw>IP_)TP{phU5F>>kQdD2Lc#h@F0t c-la;q-(1!2s=%@!^LOuZa_4*AVfvHif0(Q+AOHXW diff --git a/public/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap b/public/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap deleted file mode 100644 index acf23231aea22e1a95761f7eafd35f1d42ea6b84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TZElfUtQ+JV?4|3G$lSPsp*5L- zp*4wtu{9x)t<jNjuRky2-at;Ky}?W@d&5`+_eQfZ?9EMNYIJ5e;KRUhAjna)am@k0 z#-dh7Mg|C!WRM55*cgJLB8&`@3<^-OM8@W+jQf}Z6<X%+vSgLx;}o<Llryv|W>o?* z-GEF#OMV%BCslD3bEiU{_ISp9EDQ%Z8TPR=9292Q$H{O|h;bh`!$AqgeS8cDWf=Df PG8~jmWNdF>+$RD6ERIW@ diff --git a/public/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap b/public/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap deleted file mode 100644 index 2359bc529d160857cce4c1d1bfca1322290205c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmaiy;cpXl7{{OI+O^wmYtyl`HDmR3WD>!x+fX(zk2fF27#QYS<BSfso4pKlqpYpe zk)MukySoY~ilQh=afl8@Q51zW*Z8N*x5C|jK;miijc<JMB%eHal5d{x_bY9rID2d% zcVy;pLFpM7NIuq^Ob#f6ne4Q#q!;o9eJ-zz9DOC5JC@C91wGT%I5<12{C%HSa(Z6R z9sg^Y)^(+;`<W3QI+z{;gc2Z@RQpN5%TFP0sCPWNFDVEQ;*_Mkj0l?6Qc`JU0k<3d za?sH01IC;jG77<<>GOjrry9(r-~(pVo1{Nw?mtLYJ4UUE`k0lkkCo*kO1UE(D(}Ha zIX$MVRMvM&ErC!&C=p47ic-|WsE3L1&Ed_Vp)Ij3En2goQt2?lasb+wwgN2;Lt;6| zwA_i2WgTGY5s;UQrFk$;02m7ZCI-O-t-D+~RMwf^W)!C+rc;Y3P7~9a-6+nSV0x#B z;@u~h&i0`=n`3$}i{kw*rgPg+oO_k&gBcVbb~2ssKyiMW>7z*$A19bDw4u20BGV`1 zC_arcUEGA?Vv6arQ52ttm@dgEF74;u%JB9>6;J2#3n;#bF|D?uSWPosc^1W&VWz81 zD6Sr0`f4AFuf2cP{3zC#>6(h-+M*UPR}ZZ3Otn{i7_C0k7_RpF0@Zzp)zK+0oTa^* zw4u^B0>!txwbtKNy55iCdXee70*deZm~JFd+{iNhFpJ{HZA>?}qPRK3^iu}K&mBy+ z6co26nSPl-@oO8??Kq0t<4kv+!-v;5Y52z#{B2@hzN>;4wmsUkBG4YIH)P39qY?Al z&-;u-#D2+V?9k-9C&B0ku;<`WW7q$+Vyxj_#Xjl|yL;UscaO{N)9#?F&dc}K;$|A` ze8QXqy8u=**sp^X2K#uO6#={Gx8h?Bj%vT*Jnrmp`kY>;$4NTfPM79$M&eedr~f9j zS?YYFb5gP<z<vv?DX<s8nuZ$GSsAEdo%I^lBrV`n{;6YW;J>x0b5+mtNTAx&)Lh;5 ZujiWNPKIm#2-aGseD|Rg2PkC##Gk&38VCRY diff --git a/public/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap b/public/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap deleted file mode 100644 index af8293829c90ce63cc4c5eda0318003785ffcba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 721 zcmW-eTTc^l5XJwq#g<wv0Zprdbp?XNYAuo|co|p6BA@|nO)v(6i>w8#R@%k}Gf`{k zMMO~)MNz7F#ryrXv0C+m@CEc;pImvE<TsN!nUguvjGw~C1|q$|o|s%yU+-PL*6Xd8 zw|0lSG&wL3jcG@sa?{a+;mEOYM2%_Pp1E5?A$fK`Do3=a7CHWZ7|=A?vu0Nl`C0-# z0U{v)63UlN0&Z^sm{C4$l0hs>1P@4ZM<OW1U|cOpC^$F(tCDp#OHwN|Cy&_d$(Y5G zG8KrF&2LT3vn)<IjPe%vQ_U@yUJ8zMd!aKOEp%pVy>h0a$e!5_#hJh!c`*BVy;Neh zTkWo5mpv{y40IUiYAY)$v->KYl_e^qm8H6=e}1|X^yMOVNa&R!*CX^Qk?RA!TI52Y zyG8CW=pK;^oAnw)aZ=<>{nqqplU^rs@wxhDkvt)i10n@xy-}nD=&h<LlkLc8gl7qO zNK#i0DL8Zr_#6@rZv-AbL3ln6d|@5oNG<S4gz#b*_>zZk)D1k^M|e31e5HzTtO9tf zi|}eE@HH3Vcq#Dse!}Z*z&9L(6AOSR{De1Kfp6IfCvCu!&9pYVV^v4ixO00S@Es@N z)I#8?0O8%;!1sy>@6Q9izmxDmBk)5D;iCfJN2E$w1*a9@=~D-cn9ek)@cWNQhE@3W zR*W>Mt{DX%Gw_p*giq^$pT-HF#ekpJ629;PzX%h)3<1A#6TYqnejOxy(+&K#g7BRT z{H~MmeLL`nQo@gmfIqeoe%cG=pBD)D)}AcI{0gYeAA%j<mk@sMg3yoUlJ#pDNI74> u^{--}Rd*VGj9%#5gucOu!1#H2euZlOd%88>EDV>zJ*#d2{xOGaKc#=yUE^>7 diff --git a/public/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap b/public/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap deleted file mode 100644 index 780549de19de05b6cbea4ccd4737351bc9ff6104..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TZE28OtQ+JV?4|3G$lSPsp*5L- zp*4wtu{9x)t<jNjuRky2-at;Ky}?W@d&5`+_eQfZ?9EMNYIJ5e;KRUhAjna)am@k0 z#-dh7Mg|C!WRM55*cgJLB8&`@3<^-OM8@W+jQf}Z6<X%+vSgLx;}o<Llryv|W>o?* z-GEF#OMV%BCslD3bEiU{_ISp9EDQ%Z8TPR=9292Q$H{O|h;bh`!$AqgeS8cDWf=Df PG8~jmWNdF>+$RD6C)7)p diff --git a/public/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap b/public/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap deleted file mode 100644 index bfd3119c62d9976dde9b1e59c572c678cf5811a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmW-eTTc^l5XJw~VoNEO2&Pqmx?BQ85Gy1Kg5&B40vb?if-xX2vLIS5w2cHZ5is;3 zUQoQDs8tjNMNzzg8><CB2wy<o<;m5DNq#e#lR24VSZO40cb~7T^K?MkUS96nTH<n* zOMBbBZK~w%^9R&(eyR5SDX*{F>r(=1dvVfUk4O5y@0Wb4U-e!1H*~A2RJ`p_EmhUK zs|1K40Wc(gs}%5L55S7NSSf+n3@1T40ZQtSjKh6U6fCovgKDBFc+P4I2F&J=F+qf^ zjh0Zdd1J_~mn)$$R9BDTOt6QW6CGiHq9bDMk|H@Nw#a^17jYkvhNEA18d6O*i_N*t zY3nuEb+qf~Y|2Q<uvO(ca#Ixu%bA+7XKlC@v@8+p5L&K?ofcZ2h@AngK*T(t6^htd z(27OOYtpvsii;v{?6HIgjar$A^(JY%MX+B4`$Py#T8#(^&>9qDB-#>D2`>}yh(Xyh zBIC#a@D(JyS^<2upYU2Q@bw*pqou&3KEfMb;G4ySV}-zDX9#a~0^iOfypscbr;YG# zEATxh;dnam_;JGfO~4QAgcE7N6ODuq8-O3#2p?O4AJ<Vy^gvNdRKN4&81PdE;pBSY zNjKrM!@$o|2&a;Prw$Unr~!UyCY(+Ho+iZ*m2pM}o*6i)2Xv`gf!}{b(5t|&k7Be| zajwYtih*BO5YCnX&-N0&2>`z>C7g2s&v^;od4S&+63!O@&vz1jXb1k7L-<Jo{?tnN zxf%FNI^n_w;Dsi_#iNk@HBG>e=3qL;^Px1}0SA^g5iYfXXF1DY`JMrWSXGZ@Ro2m> pIdngIFSLC^+oeaK|2#XMub5T`8{&0BcPR@0tE+*R*O2w6;V*K+;HLlp diff --git a/public/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap b/public/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap deleted file mode 100644 index 25ef14ab4af42f4b70ccac76cddac8f3b22d8813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TV`-3ET%a4|9qgs+k;vS*f}u5; zfuS{tfw46qk*(2@aj!ow<K93{roF*TEPKOP1ouX>G3?DvWNLI~IN-y;a3IK0v~kS= zzs90gM@9w+lw^<xv)CAdp(2b7k_-w^u|&q^sf_!W0u@^3@3Lf-<Kq;x6O=QwD`r&! zGTneoKTCcYeJ53M6?3OTp7wageJl(IIT`k`GaM9V*vH9mP>69KH^V^*#(jJY2W1%d Q2{Ig%O=N6uVB9AH0G^~w2LJ#7 diff --git a/public/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap b/public/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap deleted file mode 100644 index 02f713bb838a8cd46f5b262c934d0edc8c6e8fe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmYk5|4&m_7{=fC_V$~FcBRllz;YErOmJ8++hA^It!GRTMB5r54uQ*hgD_a3?O>Qg zNE>?Zg}J#o+1S{`sW_cFH=Ub$)7#5`!Y}(}W`Bao&fI=jPM+lRK6%c2&YPSg>?CM< zW+5{%el8~+?CgxZ+#ZQ^O0iUWOp%fc*_<++mAXH8FP)i5XXKocYTFf?nv!1Rvr<OM zDw(-|%%q}7Z3lY0X;)ve3lQ>vn2(m;0KEDZ;!gAlr{{u%(1@dgG>izcT$PWK<ptbd z?C>~?ipx=)_IQgqr&G0wpn4K+wZd7a2Du_)LOtF`wA~oghFl>n>k8?f2}y7AdG)u^ zuP5Wu^5)amger&E?G5|G-gzO&F~~7I(BNzEb~T5Zt7M@V4H&i_w-J)X;&7nsY;>E8 zweE65xUL+L?L{V7!)UkUCbaf|V2%4kYcgJ;Mva3jFRl31Bf@fIbyg*6w|YdSt8=nT z?M34i08;^nIS63Qa!vu7V<4C#yw1$J)eXUT9jq*v2{ccEnFK2URt;FyU<GB5`Vh?X zeAh=jo%7qQdazj^^16@f1XnLt5BIzi4$B_*X-CWblk+~kQg7B<^{_{;(f8WjF1IXd z{aEe+DED=swFsi|X1r2cFQ2I{v=?Z!0C~EysJS$|U2_$}JiUe6PTqPFz}Uwxd@k<M z?ielNE|u9en<m)RB~8?9G1N-tjC?@fJgX~|tWadD0wt?U$UY{NTsVyE!g)$QnMd~N ztCU<kgzRF5lF!n}K5wJsQY*4clazchj_h&^C2LK{*2XCLas=5|VM^BPk*%Mh<m&-s z-vlYy2q4=?Q1b0bWZ!uyx#B@~<v4BMJi7nvCO_xuAhPd6lw7Mub}dQC^;5`h_$b+` zK(^IG$<1TPesEH9OGI{yQgS<r?Di6$_7B168U*7QpmD;FMu+UwOf<86@YxpFw)w%F z1Kh^<!3?6!S{UVTw(yP|+=-GO8L~TvDY@H$?Cv}z_j1U7Iz-9+2(tTWN`9U~_Dd@z z5B4E@Fiy$C6tZ8ND0w6ydo)7HZ$rp_uczd3EwaZ0lsq|&d!Ghm`?DC9PF7+m?iNZ( zK`ix){?fZL{&^j(p;*ncd}+F{oByJJR~<CIAO|G>=Sly0GXAxOrZ8%I4*6Pud<ua5 E4QFp9G5`Po diff --git a/public/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap b/public/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap deleted file mode 100644 index d08e0cc5d98b2d933ab848c69dd6c504fbf1787d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TZD~+YrW@oP?4|3G$lB=0xYwVT zac>|e)81evmc3ytf_tMKMH?IU<~GSPFhZdugFKkU#t@7orT`U7WNe<wxR0q&sC_=e zJ{E?9oDBQe8TPR<9OPm=$jf+8kYOJ;<3VADeL!&@hJ8Ye2gMoo@i88hX4uEia8Q<E dpI{<e`(B2FatsUy6@gd<h}D2t)q?3D3jn3eM3Ddh diff --git a/public/pdfjs/web/cmaps/Add-H.bcmap b/public/pdfjs/web/cmaps/Add-H.bcmap deleted file mode 100644 index 59442acafb613b0c090314379f9f4c2fa134a1a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2419 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 W7#9+a>twevY`QZfP4^1i`2PSF56W5q diff --git a/public/pdfjs/web/cmaps/Add-RKSJ-H.bcmap b/public/pdfjs/web/cmaps/Add-RKSJ-H.bcmap deleted file mode 100644 index a3065e441a0e1f1a65e9109ec9bc4f826fccac24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2413 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 diff --git a/public/pdfjs/web/cmaps/Add-RKSJ-V.bcmap b/public/pdfjs/web/cmaps/Add-RKSJ-V.bcmap deleted file mode 100644 index 040014cfc0880371c20a89212942727c5dc30a78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<(QJ98{{4ArR$N%-RQ`;*Pnsm zfDaG{aWn1><Yd|#%*3)c49JfH;$R?-0OC*v!M)LrTut-$<}orrpd^Dln8n7B$k_Cm z@qmXTSF^+33WT%*Oq#uUD&sz;#*2vz``8&6_OUQ99OMMjtU#KJf$^YlAorVweVlCq uZTxI)5^dt_Z9*(<!fhOh>~Fdm56S{nsR6Mn5Gw+)3Jb$Qmev}EgS-IcxJ}{! diff --git a/public/pdfjs/web/cmaps/Add-V.bcmap b/public/pdfjs/web/cmaps/Add-V.bcmap deleted file mode 100644 index 2f816d320f08b8671498299c4d00e4564d2ece6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>X?$E>ygN<sKmI}pMl|k4-f}& zGwu!KWZE0d#IiRG$d3ZzU?7eF;!p;`z0r<bDvEpa7#Sc?l0hEKVq-{TR4HXV;Ni%n zs<^iTi!{4xDdRq-#>Ght``8&6_OUQ99OMMjtU#KJf$^YlAa{AfKF&6QHh#7?i8gWe mHX)Wa;Wmy$_VR4TgR($XYCx<C#EL+y!oqNnrMrgVATI!6B}eiA diff --git a/public/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap b/public/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap deleted file mode 100644 index 88ec04af49d1e8ab6038e3b36dd28daf4dcf0119..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmW;C%}N4M0EXdX%a&cixdCl-<t#;92;suH0)Gw_Xk%xFz?B#g5)mOH5)mO0AtE6X z5fLE~5g`#GA`&7I5n;E`Yw$grk9T1b58JuCUSC~vrQb9SZ@@528A{tpC9S;Us;ncU z8!21oY@Kjb+P4_WWaNMENUa>Dx8|p%l=LmHM8lDo74dk4_$_P(g(w!-Hg>R!685l< z1014^3aY5#2*)_VDe5@GIWEvZ6D?e#jSjAGjT_wJ4)^Hd0grgXGhWccE8ft@07Hy0 T#ycjM;sc-f!Z&`z(oFmT7oB|o diff --git a/public/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap b/public/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap deleted file mode 100644 index 03a501477c91d8156723f0c274a37d397ed65bad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmW;IQAa~@7{~FmUG^&eZ(!@RyK_0)E=Ic8c?GTgwb(lAe~#GII?0+zl4K@HGLs}p zW|AaHlF3YxOp+u?l9{CMiRbhDcsy4>e>V}aa(Oi|o_55LVd#O7t{WnpvXWAmdE1d$ zTf`^FES0m=s3TLsfp8`x{{L;Eq%GC7cQmCG!NK8pBsOBkd_GNc=L=I&qQJ~z4n>qu z#sU_xgk`K?6%|ymhIMRU6I-aEj&1B<7kk*p0S?hX6Gu442~Kf_b6nsOSGYzCH)x}S qTioFu59s0%Pk6=)Uh#%^eBcvb_(l(X{NNYvjJLc7T(1JRsQm#8LY3P9 diff --git a/public/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap b/public/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap deleted file mode 100644 index 2aa95141f9f5802818e34b0aa626e34e7cfee805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmW;I(MLmJ7{~FmF8eFqf1vHu-MQP$xfto9^A}WmtyrDyJxA<ndy}jrNhV2>WRfH^ z$xM>WB$*^hCP|WHk|gPS;`uy39?#XUt34QZGdVSu8udl5WtlyFrfG>-(jAt<$$7pU z_e5f1#8nwr4f!$|?vAC?;{V?hN_tXF21iFq5svgH;`V@JheC#-XY*N`$TL%z#te#> z!#ozSh$SqegcYn}4eQvzCbqDRGIp?wJ?!HE6;yGEBh*mGF-~xbGc?e|IWBOC7OrrO s8{Fa!_h{n*k9fi}Uhs-HyrY8;eBuk=_`xr9Ay`2JI;cR?K~xuwKLRC}r~m)} diff --git a/public/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap b/public/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap deleted file mode 100644 index 86d8b8c79cfa3907281aa3f25a46f178b87aedfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmW;IK`TU26u|K}mcGN({Q|~g_m<N%i;*n6Pk_0hhBxkesacI9O_HP`Ns=T<k|arz zBuSDaNz$Zgk|arzB>$`K@18oH)xWONo(l2>)7#w>sV2{J8=76$Q^{=5sg+*{Bi$FO zOn+Bk@`34ybT(0+%;nVoeW;8MwHdTaUu%_UY|W(7ZGJiya~zo}4zw_eykU%>gi(xP z921yC8Pk}-Eaote1uS9-%UHoG*07EZY+?)B*ugILu#W>A;t0n$!70vgjtgAk3fH*7 zE$(oS2UPHgDr$JbGhXnDH@xEmpZLNze((z!vY#y=Hi6g%Vk3yHAU1>84nl~yl$}3x CU7_Cq diff --git a/public/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap b/public/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap deleted file mode 100644 index f50fc6c14e67a228c4ba9a61b1357c16410e8228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmW;IK`TU26u|K}mexMN{Q|~g_m<N%i-|0}Pk_0h#=LRgOU-H=Ns^>#NRlK?k|s%# zBuSDaNs^>Vk|arzB>7);fA`estp0Vij%1K8n7*FgNHu$&+t}i|o=RkbF0K4R80r2{ zrE}eZ$p@x0(wTUDBAZqJ_n|U6)Mn5weXUizsV$vMwfm`9%yDG8IMB){@`f>jQH)_6 z6PUylN+@FnvzWs?7O;pVETe)ItYQsStYZV4*upk;u!}wH;{b;^!ZA*8iZh(!0++bL zHEwW=JJfKG2Rz~l&v?Nr-tdkOeBuk=_`xq^$bPnf*aTu5h>ak&g4hgVJBSS-C8t5k F&L0K8qip~H diff --git a/public/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap b/public/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap deleted file mode 100644 index 6caf4a83146a60a2db652647b9cfed5fb71bd97c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmW;IK`TU26u|K}mNve^{Q|~g_m<N%i-|0}Pk_0hhBw}OsacI9Ns^=?Ns=T<k|arz zBuSDaNtz@{k|arz|55jMPo2){UsY*I2ZdtT)zKN7de3uf8(h~jsa()zjbDsn+Z~x~ zPkRs+g0MBVxny-JpEv*akqK>N!#-X5)|zBpQ#PGx_A`lu<H%&Gw~<le4PX#M7{&-j zF@|wWpo}R@V+OOB!#ozSh$Spz1*=%YIySJ0Eo@^4yV%1%4seJg9ODG1IKw$EaEU8i z;|905Lk0JEz$2dUj2FD(4e$8CC%*8FAN)f4_0s~P2}B!+Mi8wannARKXb7Q1jg*}~ Ds&u32 diff --git a/public/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap b/public/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap deleted file mode 100644 index b77fb0705c28d647d0bf7b25246af566a791b2ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmW;IQ7Z&d6u|LWk3Ply0@m<0kK48n8+kCF0DD6%vt}l>PwPmMBxy;KBx#c*Ns=T< zk|arzv`LaANs=W0qwepXI-RF~O|>;06pCSYXIE?*JkPCbbY0J+azVQ_eldz|Ph_&a z9YI(K!nWAvlC`OP-u&N3CbW?a`*rDCYm)WN*>tAG&m<C#BU7cmCPs-jh#?GP1fv+k zI3_TOGNv(uS<GP`3s}SwmQle9R<VY4Y+w^x*v1Zav4?#e;1EYR#tBYwhI3rt5?8p! z4Q_FVD(>-sM?B#fFL=cp-tmD?eBm2E_=ODUrv*e4h&B+7AX-5*gJ=iQ5JCxG%FZ9F CgrqG1 diff --git a/public/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap b/public/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap deleted file mode 100644 index 69d79a2c2c2b00207ab27b68ebf4404aa17c6f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41193 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%0DAz<G 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 YZ0`MT5POImz`oVhp=s8CO5r~K2SX9n0RR91 diff --git a/public/pdfjs/web/cmaps/Adobe-GB1-0.bcmap b/public/pdfjs/web/cmaps/Adobe-GB1-0.bcmap deleted file mode 100644 index 36101083fa8fd22399728ccf533c48e830781de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmW;C(F(y(0LJk%mtMlTaBIfhF4x+{N-pdPuoG%?=A5N=wMddANs=T<k|arzco&c2 zqrTtG*FW(onLLO@qgD@TPS>?eUek1HxV*xs6UmVIlG@EG7XcULkhyBo@I3nOB^69E z(f*wdV^qx+Y||<_mZA{yj$0{0Ix*IT9`s=VLm0srCNPB=%wYjbSiu@Lu!SA$;Q&WC R!5J=ag&W-A0Z)>CkuT=vPT>Fm diff --git a/public/pdfjs/web/cmaps/Adobe-GB1-1.bcmap b/public/pdfjs/web/cmaps/Adobe-GB1-1.bcmap deleted file mode 100644 index 707bb1065c76d69551c287141cb258519132ef8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmW;C!HPjq0LJmd(o>ur8(emGDOo64xKA)R4P{);y(uf1rfHfqO`0Z2k|asfBuSDa zNgD6qQRYv5zs=X*d(Fh{N?jKp3$BcqrV)%9hACrtJFBEscU<-4$YeQZ>x!)(T$K;` zVx^M2_m0%cQMz_JEu~~AoJz(MX)EFJ2ytmt{X#Sw>=`e3#T(wy!UsOl#uvWPK^Hyr kF~ATbj4{C!GyLEeb1bmL3Ttez#SVKMaKs5`(G2{Fe=CDsrT_o{ diff --git a/public/pdfjs/web/cmaps/Adobe-GB1-2.bcmap b/public/pdfjs/web/cmaps/Adobe-GB1-2.bcmap deleted file mode 100644 index f7648cc3ff02c44e9594ccbd71deec742e253c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmW;IK`TU26u|K}mOjP(0>)!E%W0a$lq|f3HRgsI^TvBGHLGzXNs=T<k|b%Gkt9iy zBuSDaNzx=qk|arz{Exc7d+Kyn|GHXR$}bdy-tL~rG$j&lL$m89Ofu_tTH_VN$o7RM zlkf6_f**85HXE-`=5pr$J~V+1Z7`rq&sr02Y{{h3tzJ47a~!Fb`r8>L-VlZ{f>DfN z921zt6s9qQS<GP`3s}Swma&3Wlu^MN*0F(2Y+)Na*u@_9aezY{;TR`4#Tm|VflFNB z8aKGb9csA810L~&XT0DQZ+OQCKJkTb{NNWdsGk-PO(5DpG=gXa(F~#;L_>&{5KST4 dLNtbG4bdE;Jw$_u77<M%+C(&pl%2d(oIkq=y@LP% diff --git a/public/pdfjs/web/cmaps/Adobe-GB1-3.bcmap b/public/pdfjs/web/cmaps/Adobe-GB1-3.bcmap deleted file mode 100644 index 852145890ede3dc04339de284993da270d62311d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 470 zcmW;IK`TU26u|K}mOjP(0>-d=%W0a$lq7Fsi@BkOH{N@xS&bt}k|arzBx%w#BuSDa zNs=T<k|s%#BuSFwf7JcmQ>U}~*Hl|me!dX&bah9j!F3aLjfsS7l3BmQ8m|yWwl_4H zzD_^L`$2nTv+>$wE@%GlLlfB01_QeEtTplarc5f`?4@Hd$C0&Se;cF78^SO~Fp4pZ zV*-<y!Zc<ui#g0=0gG6|GFDK+D$1x}9UIuh7Phg2UF=~W2ROtLj&XuhoZ%c7xWpB% zaf4gjp^AGv;1N%F#tUBYhIf466JPko4}Kwo`e^~t1fmT@BZyWI%^=!AG=yjg(G;RB fL}Q575X~XlLo|qJ5z!=~O+=%JR*|yPA{FNkdfC61 diff --git a/public/pdfjs/web/cmaps/Adobe-GB1-4.bcmap b/public/pdfjs/web/cmaps/Adobe-GB1-4.bcmap deleted file mode 100644 index e40c63ab1e5c240841f3b465ade920d60be6328f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 601 zcmW;I&nkpr7>4l~8|5gz6Tq;Wr6vm{3v&eie4&Qnn@L%5OOhl>k|arzBuSDaNs=T< zlB5Yqk|arzT(^3E?^93D>MAPKr?Q<rQCmxEKB!106Qz}jL^7yq&NhZYx+j+p+jBup zM^iTH%tj6Qu(_<HDw7HR?{h&E=EA7k%XAn9W#zRssp`6Pbvz!6>AtrsV)XL*F@Qk~ zVHhJA#Tdphfk{kZ8Z(&19OkirMJ!<%D_F%E*0F(2Y+)Na*u@_9aezY{;TR`4#Tm|V zflFNB8aKE_0e5)7BcAY#7rf#P@A$wczVMA7{6c;HTtH4BH;^O9732(Z2RVdXLQWyK zkYmU-<Q#GjIfz_DP9isvqsUd{EOHk)j9f-eBe#*`$aUmAavwR6Tu4qNH<BaCmE=rv ZCpnZ{N=_xWl4HrW<Xmzu5v*8uu|JeY`=I~; diff --git a/public/pdfjs/web/cmaps/Adobe-GB1-5.bcmap b/public/pdfjs/web/cmaps/Adobe-GB1-5.bcmap deleted file mode 100644 index d7623b500232b6e62f29c2c232e6c2469a527314..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 625 zcmW;I&nkpr7>4m-=_tMvz_6R8WHFJ2IRbyaP#C_M$ZFh@BuSDaNs=T<k|arzBuSDa zX_6!%Ns=Vjt=`}J)YG%N3iEZ9>CWD$wYeo5lqC}J;_`Sr5mYp#8^R#fo5_alnIPHG zn2tKrQGGUSDk-XHYYYDGGeHz)!l>KJR2T*&r8UXQs@halK|w60mt0p5BggB<00uFH zVT@oDV;IK-CNYI+%wQICn8yMZv4mx;U=?dv#|AdBg>CF$7kk*p0S<A5W1Qd=XE?_N zE^&ox+~5{@+~FP%c*GN)@rpOR;{%`g!Z&{K3-$SP0Xc!(K#m|+kTb{~<PdTRIfdLp zjv?2ObI3j9AaW5oiQGhvB3F^K$X(<xav3>|+(wQg*OBwcedIuLAvuxUNRA{|k~7Jj i<WO=cIhEW>jwRQUbIHBrU~(}zncPf{rl(l7o@0OOeg}^L diff --git a/public/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap b/public/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap deleted file mode 100644 index 7586525936cc5398b86d3752a4eb45b15825b25c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33974 zcmbSyg<q5H`}SBd#()6>#^~;Dq`SLCN<hG(1w?s{d$b^oMiFd81p^VqK*jES?C$Qa z_kO;=|KR=X1B}HT*LCJ`94Gx=l=uAn^1|F%ImMb*PEM9))|Qq|nx2{SGqN<J%ZrM$ z<`!uN&YL;EFn@kwdT~~!Ioos29L@iIzDTn$t0=3m^uHIQv$8bJEkXjleZ!)C#l$ES z;omBdfBya!u_-et<MrB%dUx!zrB2QSF&D(VC6=I5swmqiK@>L%sw+i2N{zNG!<Ocq zJdNNHVv@oP6k!HE(?mka6Ld&WR%okJOer)<tAN6wpi7Gi=u%KuMX7ZYaVZ-$E&s>^ z$?Yk$5++TC7EIHnb<VFbg%oA4Ry$?);$R$@k;p)z(1L=gJPM79!(tR?IpGZQ7&)wW z!J1GPX;S;d#5{!w!Wo&d8M8oNB=ivm!UJ|f7ojKeF;i$QbPzgHsZ^n-UQNi`q>l@j zL>j^%M!o;^j0oPervI<+6Q?2wVGh2R4+reFD~3GkG$FYsWlU|O`ryo7Cx}AGcZY)y zxsPa^R$VF>bccxgAnSh6i^M5Kw40o9+-AI+wOSW<^;T!D3K)+#RruRmSh72~5X)V# z-T|%ochcM4uxZZv7+gyHqKeh!_-lLDY)7n!H8Eo%`FO!4GknRxko>LUi&DGoCuy}s zfAX&z;xJ<qchU~dXRXkcj9MEa5nJPq+2cgPka@N7UBAZEt5uVk<D5M#qFn-SOxH=( zi(%Xb*Z8<G9j9H6<Pd#MtC&QMI=&k9=_|LYqMLO<9~)&hS{(Me>ptdPg7;|?<=Zs- znM9ir8jGLO2K){r-O<KA3#_+&D}Ju@YZdAQg9<APP?J`x4d$LooC!xK>zd>nt4A?g zlM(Vbk|{oJLa=XV{LRK8tzHA77?akx>58?KiL!3{8tsAHL;kyru_^u}qty~6qGoG) zWXmSP3#+77PeXmua`g*Ic&)V06D^fD7WKFdv4ydxV^_<aGAO>L|0EtGDStAtM!rM) zw#F6Kfq-AL>LhWDj{$=xvV_GEMI6d}Gy~g$_r#&qw%QZfXF_Z2urmU;TqlcaopB}x zha?9LCiBL;rmQbUU`nrDeOKPU0jQbTA&yOk|IWQpw$vFXTp`M=VVz4RI@NGW_m#p% zSIPaRCj^8O&bWTne-wsl#y!PTPE8W;)v-Sp0~Cy;)&;z&JS>mnG1%yEKpy*i<X-Dc zsa}}B%9Y5evBr2l)_Qj&p^c4IC6K~W)f3dQ+|l`0wTWIOVnsxwK2BQgkbCRY?o)4z z+Z>`p3<o^0!}XZ`WC;E->d?YxKWwJqxHWdtrs5x!9#vjH{k`K)eT>ep	)hMjqg! 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 diff --git a/public/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap b/public/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap deleted file mode 100644 index f0e94ec196757e8660b567d8ece7f99869927913..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmW;C!3qIE0LJlIM^7;xz*=s5+_pVz$-y3-uoDWiW;V5_jU-8uBuSDaNs=T<;!Qk? zkNSR>uYcr|HMtjvN~!GAq^@i6l&0y_aCw1ICy+j?Nov=NTzFjMedelBqgti^UQ)p% z6V2c0Fh<ox+BU6>V<`$D@30Xgq!nUq=s*{G(1!sGVFY8Cz!YXMhXpKQ1#8&A7Iv_Q U103N5XSl!>Zg7VOJW1|FzIH}ZoB#j- diff --git a/public/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap b/public/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap deleted file mode 100644 index dad42c5ad7dad57954fc9a051ee7e222e83bee45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmW;C(F(y(0LJk%m!9Idac9QeF4x+{N-pdPuoG%*&RJ?#Ymy{Mk|arzBuSDai8t{m zKI;43eEnmeg6?_&uT`o(&8Vu9$|{OVHQOyQY6Ze)bwSNW+2x+gi$1gExaK(Y-wVo_ zV7&D^Eyk#v&Y8NAw+u-l<Q+B>ghV0Mh7NS02Ynd85JoVD2~1%Ib6CI<R<MQ*Y+(m` WIKUB3aE1$9;Rbhjz>`GD7x@CoEK=wI diff --git a/public/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap b/public/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap deleted file mode 100644 index 090819a064533f20aa68f562275556397683ae81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmW;C!HPjq0LJmd(q>-alr^r|-KAuqWZ^!6;WQL3=iZc+NRl*3(xgd}BuSbiNs@RE zkK#{#zs=X*`$$FYa!u#IbFK`VrV;ow3{yt3_Lq`Y&2d%Hk?~T-)@56#U6l>`B87r{ z_m0%cQM&p%Eu~~Il!!-TNh{{@2yw4h{6aM9tce!d=%9-pe$dANLyYi?G5#>Y6f?}R Zz!EF0vB4Jq*kO+YjyU0r3$EhhCY~ULRonmo diff --git a/public/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap b/public/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap deleted file mode 100644 index 087dfc155860e65d2dc828dd432ffe88239fde23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmW;C!Ab&A0EOW@?&>M-#%1H=ZkB`0VnAFpPf*Pzg~>bJ83I>gL_|b{h=@pth)9G) zNJNB)MCe=iDE<cL+Z_Jf_N1hfhN)dtGkNT~&QZ~ET<JynOv$j3X6iDPLH%5tM4Qu0 zMfRZ=$MU~VrBSIe*ZVV6O4@~TQ1UCGZ&^ZYnpb%tT1|F?TioFu4|v2Ap3z1JUG&h$ l052F~gfS+V;uUY0;T<2C;}c)_#t#-)VufG)iPphd>;OXBS?d4* diff --git a/public/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap b/public/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap deleted file mode 100644 index 46aa9bffe576e9a8b714646aed7f9e1a4e99dfe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmW;CQAa~z0LJlmyWFREzd-BM-MQ#uW*1|2(fI_`UM;qr?LEiX)ig;aNs=U)B$;HA zWRlEGW+pQ;NhZlmk|cH4fARco9)Is(HfX1FdTBB4$|=({CZ-L;l!2H%ucVc8T$OZW zIJIEww5{h{74!Q7iG=*`9jTS0bas4NN=g4@BpeJyt&qnf#BV+`BgAr^6|jO;tf7c? zY+w^x*v1Zav4?#epoBvl;TR_<;}mD8;2amY#1*Qz#tm*!Lmds=p@|mSxJL(F^w7rx a9`S?$p7DZL3^BqR-tmD?eBoPIKjIHvDu)yR diff --git a/public/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap b/public/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap deleted file mode 100644 index 5b4b65cc6292a5ba7d89e976565bf08814bb88b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmW;IK`TU26u|K}mOjP(0>)!E%W0a$lq7F!gSnxGH{N@xS&bt}k|ar*hNMZ7BuSDa zNs=T<k|s%#BuSFwf7JcmQ>U}~*Hl|me!dX&bah9jA(3$F8eKPGl3BmQ8m|yWwl_4H zzD_^L`$2nTv+>$wE@%GlLlfB01_QeEtTplarc5f`?4@Hd$C3GBe+#3?8^SO~Fp4pZ zV*-<y!Zc<ui#e1~#sU_xgbJ3if>o?x9UIuh7Phg2UF=~W2ROtLj&XuhoZ%c7xWpB% zaf4gjp^AGv;1N%F#tUBYhIf466JPko4}Kwo`e^~t1fmT@BZyWI%^=!AG=yjg(G;RB OL}Q57kdo6TW#<p7+OA6g diff --git a/public/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap b/public/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap deleted file mode 100644 index e77d699ab6a1bfd1e3eab6db428222e108342aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmW;IK`TUI6o>IUmUh0u{Q}0Yo8>gkVoDZfX@$9=hCA+^)U3u|k|arzBuSDaX&RCw zNs=T<k|arzBuSDa&r$F1J#{*(r|Pab>F0|<S4U^Tt&hiJwGFXY+)ZTtHqXrz!-Cfx zy6K*FKgjz*Yr)G#s}s4L`+pz0ffsr~pDi<<=SJ%q)5%m*CKZV|jy6iYEsPRx0D~C9 zFh($nF^ppZlbFIZW-yC6%wqwISi&+^u!=RTql^kRv4w5yU>AGX#{mv;gkzlG6lXZc z1uk)gYuw-#ceuv`9`S@{yx<jYc*h4m@r7^v;1}w*&kD#A$QsBZ$STM($U4YE$V$jk m$Xdu^$ZE)P$a=_v$co64$ePHa$g0S)$hyeFsO;3J;`{;q6UF)f diff --git a/public/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap b/public/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap deleted file mode 100644 index 128a14107750da2939d920c3e0802798c36f2e18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40951 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	BxW^%pYjuN-9#jwV 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 diff --git a/public/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap b/public/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap deleted file mode 100644 index cef1a9985191f53c4a8a35811d1caeecdd1a1820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmW;CK}*750LJlm9s3mT#ba}M+i{E?2I0Ydf^;t$thU~bV5eb3M1+Wlh=_<pL_|bL zL`X<T=(q5r^jCO(mxuqsw&uo3uFsmSOdi{|byTq|TRLG}S2D=cOr59Fzi7ldiS=ow zLi5mxBDwEVsa2}<)$R<Gl4kkDcfD%h8HNy>;<6+}yI|M2!7c7^j|X(nMGt)pFvJLB jOfba^k9fi}Uhs-HyyF9NeBuk=Sl|as{9=Vak*&o)>2O)q diff --git a/public/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap b/public/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap deleted file mode 100644 index 11ffa36df8404ab970df2a24b2d80b1dc6348436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmW;IVMjwz7{KwnUhY$zFR*p%-F-PT8QF{OC#ZI;vURs}uh^?~l4MqrBuSDalO#zd zNs=T<lFVe1WRfIFlKv;o?>s!7SO2zVPu$BF)nH~I5FL(VM>=iW5wWz_Cxu(|1DW$h za=719c~A8QG93-avRUze?+Yb;sYcAwl~P38yOZ%m%1wkqmZhgkg)T;kH->RcU=n3i zFpU|^Vh;0Iz#^8gj1{b64eQuI6`R<?Hg>R!J?x`~103QA$2h?$&Tx(kT;dAXxWO&% wP)7szXyO5nc)~MUc)=^)@Qx3B;tSvS!7ucv`Ah+A5@^#vn+Tc;L%L%90TF_m@Bjb+ diff --git a/public/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap b/public/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap deleted file mode 100644 index 3172308c79d57147cdbe05930228043faa48ca54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmW;IVMjwz7{KwnUiK-@7ihcd-F-PTHqwjkCur@cSi9S~SM1d~NhVoIk|arz%*-T{ zBuSDa$t1}nNs=T<lKv;o?>s!7SO1Q7U);+V)$rg@Afk?AcXivgBVrjZErnb313BW0 zRBpgic~A8RG868MWwYY{-WN*xQjMCWE2RiWdQ$O3ubT*kEKARn3Q0zZH;xHRqKqj_ zqk>t?VIB)u#1fXVf>o?x9UIuh7OJSBjs~`|gC=&dhkYF25Jx!12~Kf_b6nsOS7_lH yH@L+e+PKF99`S@{yx<jYc*h4m@r7^v;1_z#e5Qal3AAaTO$2Q!Xfi}}#rgv$fStzx diff --git a/public/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap b/public/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap deleted file mode 100644 index f3371c0cbd14c89a7d2b5a72e4e4f9cdc6d6017e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23293 zcmb@u30Ry(wlG{(z0h<zq|@mjc91k3(jkb59c&3A5=2BqL_|bHBuEeu5fK?=uqRdT z+xteduOTEMAqo2y!jeG9VxlpL8n^3`8TT2z<J{5fZvNB6%y;ke-0$AG|MMj|UFV!S zb?VfqQ}v#Dmk2Lq-0@8L3l&d3QCz9MY4hgD8+4J8o7GzipDEa;e&B`YDz`oTocivv z$DgSvf2Lw<<+j2I>6X$`^^*K^>WXd8ZL6sAG9TEsO&xJ#>fLwTnfAb)7$d}8{sUc& z(B)qqqbv)tP3V{V5T)hF93Y^UXUSSb=c35bM-b(1M$~SQQ`0pl1;rt1Oea)?!Voq2 z5=ui*nn#5^mp`Fx(W1I7OhU8yU<uW&rKX2|)wU=F&x-{s1osF+1WG~OgVYxdMXn-; zo<oUf3yL6*AfYf82|R)5*yTS_a~{bOQsY`n+VyIQkHB(=CDHPH3^kUnyj4Vv4^f)T zZE98vRtZ=R^+A`k+Ymv%$h{gla?w3xokxoPvc69s5VBgjNuVOM>3%9k-vu{;7(qS& z4WS-ibXi+E9769pzWhx7nS0K}g`IhZ5`4$yPlJ6tp~PoBA_}peuV2v0Aiv)ce?a{K z4SFbWMWElEA=iW`whH6|9~csqlC<De=!^tq`AG#5vLf)zouV^&Xq_O;qa+QR-d`gO zmWJFwU%`rdX_bEfp%2gsc2g4b+e`)IOEgCWh<N1WTl8t>9i<8)@gsCKjiOJ+()7(D zN)rVs=rH-U5-I7XzrCoYL4oX#YgX!!*e3#skrGBDgHlW)h*TPe#F7Y~P$cwnkQ@;b zK%|HWWWoTT2?5R(X(Sg0LYsfIz9Q=r=#?W{6hgeE61Yp6MS<RSB#ualoX7-HuP#v_ zfqs4Tf}$l${GrdQmZ*`C!~sQ!Qlu89|7Kr+R|66YlwgIQ5Ns#@$Ztu%_KGyv>9tQx z5|{cW0_Cz$fwvFuIQ@`Bm?;I!O9_LP+JO(Qj7gvb%pWB!ag|=%z2our52N&2rG@rh zX|Yfb9#JmY4n09XUfoyxA`wWJhZ6}Bi?o6&v9}$8allwb+9gT&C3>$nJu>l4V{Z{c zgkrH)>n9ddq4@Uk>yg|$JkLt;UE_}vnbt2<CKk&HfnPrfy<MC$e#z@TuQ?=63dTsh zgP|}I@2H>;ElGoZz)N7O)@v;(0|<ZxvSc~foeHD5G9y<kg4u&PT51no0gFlM6}8@Z z_0}v|9soFa#N+EDn0f}xQAc@A*8BKPEiU;6yl~Z9(BGAa0DpN01D3$7dNp0uNR;CA ztCUY5k$UGxqDNpGNP{0m(35wD1c5MLNnXyCK0M2O?9)GAb%>l$p-<aP^pcmw9)(Zu zOeXkBt_O#LyM%J@4-NA<Jo7V=f=VI_12tlAz=_oG8$dF>z7z)ddR-$Ic+C_Gye_*M z&_P}&LV$UL8K%wK5w!DzAo26~O2X#e76*7IMo8#2lADi!Q;Cwmz^)Df5eY0MpCpn+ z{006f)R#gB;Kf>)i%^eLQgihDQsXG^BvZCYVwrFB>Of?9+|sfD7yQE(uNx(P@!nAK zy5>qap@5~Jz2cyyku6QVcQX9Eb}w0UWf5KtV*<gsG$yY;(7x0I2?T0slDwf#QkRyh zM5tI=Ch1qEMX2%WLq*>3g>fp;l6Rn;w-@i?^A7F*ERt-mZdi<0TKN$OQSVq3FvVW2 zuqgbl&IXdNNQ7QtWL^pHh-4rkju7}kV0afGcoy0$Z4OIX{SaE>U$q{VB1i!xhIZbi zc}3IJ@`?r|B@&5uQNu_{fHVxkPP#Nd5nf$hZ-DjQv3RY6K9@GJtC1iUE{)L37pt!X zI;=o%++6XW5~;l#0_a)tz>+t9+xTE6ej7VU^~ReRA`$)yVS~Lgi)ycbVLn5>ZAsb{ zjnGqoH_nze9d9q`OQQh~!-Ces-=L-Wy5ddH=iLXEV&b>4cy)UH46VF2iI-+e?6uOn zh?hNac8zyW2}p#%6ECYc`^=J5kk?YEtv$QXyZ4AApjNZYeD<f`bS%Z-Rj*!&l7CR3 z*9RiSyO#dZCs_2GCkSYL=UgRhVzN+~pO%I%`}o|)|50)&ZbPqXTe8?2!(PuVZ3|wV zMCsM;^^|vXi1@(j`bS^hXoNKi_Ais&c43T2h&TdPERoR&S;}jX|B%#P*_4)I75wU* zcZg>1o(fS0Tl;T5yRxpXT%LTr`|E#lCWHetgk1^Lcsm??{W6h-CVCwPyAqMjyirS} z9))b-4f_)R>TcxqISrRxym*awpSUt6=vCsqAb7|Af5ztB^1K}A<{z=XG{3M@!D{`j z4e0RB?UHZ2TenBLe8Zb{zg;lo#ItPqrZ-;_ON7GTE+GEP<KIHi;6E)9=wfN<U)e{! zn;@uNlJNK~FL|qja392#a9UPiN;L*DDb3@P>dUy|gKE#c%WIzat24T%#BA_X?21iq z3duL+*fhM1&*C!o<+2?&^W`jPB!#QkAF(rJLb)q0Vo1$ex7cLuMXZA6)cebvDs#C@ z%2HTJXGD7`t2SrwAzUe+;HfgJg*_Dq(pcyHodqX!oz?qut%}~9`eL(aLB|?`JtdsJ zF~J?eVriliS#zz0?(mLk7RBdr0nLiD#U5U~{B(B{8`-v3{wL{R`iW#`1athpIoqtY zOK6EHjtPS-*$311MEQ5=SV)aI%IwDlIP+Y2W?gr@Q{7U*CSJ(mwdRzznB8fz47a*I zzcIC4%f-{6`uxrqOUjJioW!<Y)0*H}N1GBH(o<E;w8j;(OJPcE$Y6S7R=}QeoByud z*9b+{ShF81WS-|~nK5@VlB=@#_oy%F8WOt;8*|!A*w7kF;lIRkLGL|d5=$-xjqAS9 zj)~du1CwHUR7ih)@I<^-%tbp3tbUDEr~GzCjup}$*M3o!YmMkB=87y;yA#am4Y^}E z^e-#-<=b_Ks>~S&)9Ih?JF5C3WUi{ShA(CfTliF}WO3BbRO!zO-1&S+YdBYGPA+jI zuozxQ{ma4dJbMkza^*;q`9NC;HJA&-t$|c!BN?3DTG<`s%H<4h|GI=?OM*$ohVN}w z+f(^)i-t?|6c}}_c{Hc2g|sK|S=KOPuC2zHrylfYk*1jaft@96-xdjtPqoSI;ieES z+?wa{w-{8}d=4LI(b%i@)G{rXV@FM)G?&G2ImYmCuF$Nu<}sl;zoFEnaYdTqtoe17 ztnc1qP-}`lnSZMEcsgs_N{gDacNg0-^{x4h85c^<O6lASbjrZ`*O=83K4(|4O>NDL zwuxDZNjn|W9zUGkQhP9)_1-#}+nU;}9XB)-_mTFZOh<_|#a`V|Nk4g_KlJPHgE{n< zHT%k_wyAVSxK-S!awoF%4!JAWQ`}N%&)k#m^k*H<PvzPI>3A5U&zfq@5zS?-itg&R z2xo#Njn{TnG{>LKVBAyl#eWT=$FH|!bSs#)%b%+@rFR(UiG2F&HfoZ)BByg0`<*4* z9mN@%;%r(f>k=l}Lo6A)!d%(L_@-Q2lquDfV^Z%-qDo`c&T^y17{(?yWJk~pKEot6 z$tYoogr%FL#`x^IWRt-tcVxkom0MHu%?Tz5_!JsujWS1BW8pZH?W)SK1vun3g}G2J z;X<2*cC}e<78}(p&QwS>oqAemOX70O61HnyV=>*KI2Weul(PeyXj^ro|DNKOB8!%O zbce^UE9gDhPmep3ze*|YjvJ1lKQ6aun1R;1)I*uHc1MJ*ytjzD*8f`Yl6sG-E0#{* z;*!^A|E1a!yT6vcys;5czG~W!b**y}OZ@(_*5ZA+o+xXv(o)`4+Ng6U*-29&vpwSR z|IW}F*^_lxL%WxMyoNJW9f@c!XVG*#iM4Dr#~Nm0-SM_ivvhxLM?hB&U(g~m$?79| z%h>)u91Q5M<ZC_EdsCVMs&;32G%GGxAKNEmb+^>ljzn4g`_Qp8>Q85`vnyy@#qJP# z^3ecmn!=-J{#*#FC4597^|$16{<MZmWC2E%t;iYf?^(6t+b8mj*(*#@Tojj1brPeb zMa@)V8WGQh${d8|P>n|}m%dPAi85xg3bTsVq|(^E{(LD{&gV8~2%BqYu7{742exmk z%ck5)dU#`f$V_rm3hk|?U*GF_e0M^(f=kb%lS$3@P|y7b4753bzPd4U{;u<7W_4po zhqyazAeo-L->Dk9-jUQDKb>|dj<(<0h+0$L$ouSiT58p^!W|of_dL>}XfEc`FUV+9 z8ST67RMnwEIwPR8m^R*Lyn)VEQQL!WhPtz9gWy>Dr}utU`Q{edr>C#~o>sG<wlrgg zDYreaEk3ti#~0fo_Qp8~pKCJg&Nj<-#aYtn^p<|1tIAUIXFdJPi{{e(*$$n#uv14X zcn$S$E!`httZ<1v#3*JV-4fb<?Jh$rI#X#?(XZCn3usuY!j)_b_mI)BuDFBI?-jH8 zWxJAZHkI2`SdvL%47BCivS&1hW$o&^?0uRZHFMrjSHM*ryThE5*O0=;Cb&wehJ~?E zK8nlYGpwPsjH&9fSczHg2%~aV$Ol<;4KXa*QpObf<ju)WF)yW|rb=}!%diGH(v2x} zcy(QoRYMh=)Lm)STas<1W6AX88+XRk$Fgt^wW#VfEc4Im!E(0uUOKF$gLm5l<9R>6 zbTX<%!Nsz`x>{>YtHE6AC}<6I=1wIr{(<wAW=ZK`Nki_gtlc4Q_0BN*uP@RjHK&_Q z%`wH$(@&e9AFb-jtuJg)9f)d-YfaoEXY~(^<X$M;qi?S;R`NAF!m0B~SB*omSJ<H+ z&)y|t1CKQneh{c?%rZxx*L;}IhSt+>!|CY_J3^_fC8Hs9B*GfmnePgxk+kE<p99-u zwD<a+fVPlk4KJq|uY~mKnenDc8SL$z3}|*L{S-{dGsXyGB8_{u%oKDcT3FKT*OTax z+lrWFlL?t>i~$ESY=jGP$r?i&llEkd7FcDIiuz)|y6jRm{KWap`uzHoJ*u}$yW{Aa z+i0F6ai77G;xP1PS}Q%ZePvv=BNeWURLA_kNOx6zSV8wa*IwS5Ri_=P+P#X_ucMl7 zVGH66)`VBXx+*={MYQZ_ge9zjPz@K<C1*!(pxgC*vP;rNA#-m!nNigmSg(W?Rn`!` zN7pK$VLL+ju$|d;)ix!qq%99{g>~_*>9dssmD*Q-PftD5n!Gb{x1m05hq^9?&fWU6 z%u>;ocCIW!*C%8>k6X3<T6<cDaJbl0WX#+ZU0*O@IFRW{VeL;D(=G9n`ED6s+?mx; z#QSxm*69vpSyP!?bXIPOHzQYoG0IrzuAt#uIj6MBUPj{utmE-TL@y{<$DJ&6EN4-D zRCS_&9=Y9A-Vs6%=Q7umbh4aIKNkFf=2(p@p|$Xgn6=+x4K(J`Qm(cO)<Ju!QP&`D z45g*KidGwA+ZB$0TDQ7Ms@a_>ZqziSvK<e96>rtp{Z1t8%Ihv~F0%U3_g1zRwWUoK zzmfCPgSJ>2YAm?)z&tYf*%euo6PwbUsmy+>wRBN=y2=tb7R_veCTWM>m2RxEXw6ZM zEEcj;n8lZMR*tH;R7YAzL|=iugmvCN8SN=(GQ1Ph7C#llc5gbE=t)xKKC$NAa8rV# zhD9>XK)kV%esrBVhl}KE_J<n_xlE^`Idn=rL9$#i2gRTNevs@V?jlbzb1pwt)amCA z-!Ps{Pv1#DOs9WbPW||zw+wFO{ycqqZ1yK5T_N=7)_45r*@vxZH1DLE1=<u%Wjo_I z&7jnjX^-Bg;B)uuFKnY9Z8Rqt13FSYrH%-&X;0B0pI}v+vQ+J2Vve(yvc#QLwqz>r zu1qr~(Wbkb(ptjnWwgv5N1ciEr3d+tvs<Uc-xkv24>l(8(k5v`o;8`T?T|I(@5t&l zET|b>+plp8qiZ26P2!84<(2@N+!SUHGp6iLcSmqZ*0jcQi++DvYXz%+j<x2onHA=0 zOE#~aFYCzltW|uuJ+C!uro@=b+*>~lYter9bZe?9i4U+Kn$T5c@@Lr%k$$@+O&N}; zmhxs<LwZ-nju2+~y}Oo%vlv&Br+C%!(v@6HdtOFg#0Q1+v+L+Un7fGn=?SiSuFwcq zd>e6yZJLe}E~cY|M<%H=mt{Fs`%^nrc0YDtO<fohs%G+yage>M>k1s1){Od4V=AZO zNQ7CNnO~=CNNFzWF4|ecMYGn2=hbF)Z!MqQnfZR8JB8)%@~5G!e+$iMueQcm4VG9w z&+cchrImh=LlTR+F{MxF(Yxea7|UdS<{WdTD~8K%4s7=CjbTT8Zr&-~5$lAc%N^aJ zwTCrl^vP8o>8jsZuXW3;a!XQUH0%5wMbnvki)e^v+bXUjk^cRz!E{IyGF@T2!#fE} zdAX47yOs{u*2TYF%-p`i$p>;>@*oz_qTLhPS^M^*UCGq(2U9?6`EYo1ZC{Wn*Q%b# zJE}B>GxsfniF8z67bD}M=nwbMCIhWcvemN1$IR)*!h<Om{f<<<Nx`G;9FK|<*NJ)U z1;xH{E{*j))FTdZOZJyFl$x@P>AcXBYLrdaG!&Lv<*qWeeVJKmsigipOY6eAlFpFs z3{#0Y*<DC$n+wVQ3~M%h{oX%4Z6dvDTbXCwsy{#eL{sL@OqOhu?=y5DOW2+`TV7v0 zo4J=$^5HDZtd2C5(hO&iQOQ?wMNu@|9^}?JP+qr;FLkMR=kbyDQcs+61#M?3G?EW$ z)7he_G?bQ8sUwFgsxzdyLLDl$FPL9vNwg|0wJcuOt~Moe3Rgl~PQAW4t3^mdtDDt* zp?z>9yZ%TOO>+vHH|<L>2Oddik^P*`=5Dl!tyQ6^tp!|cU9u&Ui(s{Rj&O6SCC-xV z;X;(@rBhwiW{D+&)*8h^Tc**^62^&P^@}Zejx@8%tY(GAKu=7Y#8}-H$9Apt)Obj1 zTw^L%Wy-dNCRzQAK_69Q4W!X`A3Tt9KK|2mHuz*sPz6nfdw4XCkFys_c@-DUm05yl zDa$qM0u|=mGGh)CJC&BA5UWhW3hXLArpD-RPH|M#SMyaQj>bcdokOD>T9eF#j6!pX zCBm4mVzs7Prm)Jm>K-_k)Yq_)4X-QSdBLRFFWX(vQP5RvjHDGU6?-IO`sOmW>$$h1 zI@6kyE-2{-TRt|Jk{i=s^Rt#a;R5;Opn}@e?a}POJvPX+gX&Ug63uQ*=OQ_oF@kEs z5-j;$F_s{AsXJLn4RvMKY^#4=;+|L@(OPp3t?sL#Kfd_4*h>cb-qW;R2WOk0d2Gv; zwiHp@Mq1K<xR6v%$4M;JT(((d6jQ%gK8DlpRheTtgUkk+X3`rA`D|CTJBZgdE9|nN zbQ;21ub~n323u}p8I9$m>kY<YlWv!ml?+FZON?>Mv)-IfYwD_+Wh|mS$x%uJdQzQA z8{A)}!ZK5~qoyv8RvJUhnsO#}$D1`axiiNWYKb&y8`G@utY`V|^l_mxk0$fvT)ZpL z6~`6O>S04qH5*@kA)=xD<)q%U#=xEuPDfARo-9xD=UXfibEKz|gR5{|pkYkG1=$l) zJeds{daiI!Wk&&XzR=+Rryx`ESPoxgE}b*bk9@5{OM)|r>WEqGi7^V9+7fA#*2y`4 zKGm4V;LzsO(sTh+Hk5IJRLK=bb{A5_bamM+kyJ~y7SdR2MQs0;(a?j1tp&3xbM~mh zY;efwYfsuVtwEF(4(fMFXw%IfzR(!hk<=FVH^gL3Q9G5a<@)b+JFCC+>%X@*m6;!K zr(05B_e(QEvc^gI#86|hUC;a1@YPJq>nLeJa4O2+k}VOo5}vR?_?u}g;w#}G70yD; zfm~QLE9R?BN{gQ{mMZulTb4z~#ktaW1w~vspONU+c(}(_|9kVB8N8oK#aB}q>snr) z!J@3;H1H*jNp6+c2#Xl<cb3uC&8Cz@7SWtxNijxqNqmVZi`BH`IigsOE8Z-t3xu;n zlBtO1Hq_FD4xuT$A<dLSKe(T^$#z6ri|NJN;wbr-lJS}r<p&$aZv4BpH>rw#wXwn$ zXfB}{vt=&7KPK$eAC6=l>s<bhXjdo)^ByKJ74w07K~n`S2r*Wb^rtmQjS=n2hQRU$ zITs{^dlp5>^tI*gI7g*1&RWwN2WNPxBW=HGP*^8)rR<B3W&4&>IgP8=H7A=Qn#G<X zRyL@0l-6asL+hegsHxbZflH`ERv*vhWzcswS_>(uPpsdP;3^x1y95?pW8h?HkBol( zbUk9O2zqe!w~zBFCRLq(gUl{$OkeO@NaC`cT4R)1Je<I!R+YPiYFX2U`gC5wWVYxc zyMJqZT_UwdTQv<8ZUX6!`%yl(P3@GL%V&yym2m!?%&DYrK?WY@R&?YuwxX+u&*oyg z6OI&5rkx6*e}8gc`n-nj*RiQ*`)WGkTeF({4kuAZE!(?+&vpo#Lh2;Vl^u}>WA^2r z*Rd?-#xrHSu1~)Z;Y9BdI<fwO`iDfC$&UQatT$G6rF2Kzs~ao!C=OMfjG$+3{Vt>> z-lU-Ze8#Rc`txnQ#n#xyFc;!$Xegg)E8rsSY4#E$WS*6-6jt4++go7`Y|XB(wgoWD z@?FubQN5CmT35<q*=(RGyH3Ln-+!!ti|Vd=ubiIr>CWyfIhpuTDOW+~UZe+f^zF?? z(o|*(+Mm2XXkqP;@WcD;FLLU>^i$DXO;3a;es_KiS2Qe**;~o>Z`)J8L)Wf560ut~ zR#G3nKa{!P0%lgHnnIn#qr1M9I2EuCB{YGLH7jX&BF)gWRm3@@)*R~J7t^kBRvn0< ze|vn)P?tsB24?X+pR%ixCD;vzrBwfNdSeDm=?BjptUlvMhhA*THkG&M(j0qcu}#4$ zjY3|@A}P}H@hs4!<}zuyxyU8;NIWrJxlK9F3b&f=zR{d!jxk5RqG_sdMmr3iVtZnb zzaux<t}zAjIxeTp&lAU0v)&hIIjiE*ZDCx=HKtUXAB|wytjH{{ujDgb{w$p)TZOJd zXC$xZqD?6~GY6F}{YjNQl-XW@qzzHYkNMQKwz<Mo;ZeA<x{K-St9M9-s^+s(jZwYo zMQv-DO-B14Z8vyouX&4p(on==ZHe^gdZRFKTuNg-iEUDv5$VZn(pU(eU2T=`%7N=_ zB0YXb*VeWQQ(!}UXFPS@wlC~N>Ztgqn>=AO{$hkBgL)q1wXG#w4Na$Fi_%oxSj^Yb zYMN<|ac1o(wI;VFrMe;@<u>NE)tWS>*v9hI-5UDg#=S*WaxAl7+U`#;Z{hS@2A|hp z;D{s7UTahIgt$u~`3bbg*j1cVJRq}6OzK|Lte^_k6wC?vWL9L05vJ|X!u=0*LkUgu z6pW<uRV>{`Y$}S<oB_5{yUM9x^4=sSVL4oJeUv9V;K7VHN7e08DmK^b$=<DdR|#jd z-sk>`jQ;KdbNO_jEzTBou&hl%qj~wucf1|WM(?2Z3ffq~ngv$9kyr`@Ol>bq=W0F4 ze7LQ6mzovv<uR@}*n}buS2X8!i20~iVlHVA(ziFzcG93_j&)oW3$=x~^mbXc#jh!~ zF>Xh6ox~EkH_5JrbsfP)TH-(iZXh>>bd|WoY-}?hV?s2-ErF}OI+Mx*hVqUea{{U* z_GDx%LS{AMlt@Y%ViC<jyc(I(J;u_2h00tml#lO<@~ABp_0eXyY-*fBjm7WUD!3Fu zf<V8z=bYlTl5{%v_|6Qw>Xl57aJ+gru`$S5_D1jzk58#4{QHvW(MNX6xtRTVKg+sF zT|Vo%sYUvk|NG>G&?Mw4=^Hog381bV`s0&Fvo7a<UCRz{rqx`^0ew>;muJtei?kW` z`CB#JQd=ct?O8O<8p(=UE1BbV8kyXe&GPFMe7b>?z7%arH7RLyT~4bym8z}LG_N;n zwOiW*`O5C=+e3C6NM3&o{o59qlNhs&0hUBZlv&{nVrA3uGgU20XN<dIEKb3CpE2r^ zdMn4Wc2!eTn6s=EZuY&nFQ3KGz_zr{LiSX`ZM?5;Gsk+Kap`ww(XI@7?jdK2HK#GY z#Hf}@8f9Gaq|mJ5LcJLnt8w^yGVD5YGGAlPWd)7N=Eyz?>)Psyag&)`TD@OeWvm|b zYY3XIZ7OOnU>3ndi7nrq(3SMXnm*mGypc#+GVDK{!gg=u0zL9ZEt3_|YFm^gi>g_^ zC)@!yhU{`Crs;Ks4jHfDE89ZNvIaFx^)n@M39OXnS2|R6CH0YRB?NinT1S;Nw%)Hj zx>3kwQ#gsRFjK~4(t$X4oHcEM2<iA8y$Q25Jps(UL1s>Js+xitBz1B126H*Ag>Yk5 zeJxenLRu<~)y)NPPb<b0=Si|^%@HOIi){^q_#JtHPwfcj;&+Ad(Y>|qAeX@{=Tv-w zIo}lT((lMK#WEeN=NgkTkmfnlSp9XS@MxqshzpHwDUITiY-u#WCN&vMp)HB7EGl=U zo1*O+KFBYUk8jY`CPdohL$M7(O1t-}7s$))LB?3fxmo9p^NBR)Aljq!q;Mss654k| zFYJ@Y;!S8M_KR{)wKIr*`5YHY?N#)Xr<gXvlpE;|X{t1b+fryY>;np;*jj9n6vIZD zLE!Fj1|JU@X|&OhR$6N^Frhu0=JM5+cs`4l!2k-ZhzqJO-%-h>nTqNIqnV1SXbRQ3 zQ)m!8#p(2CV>i(#d!{X|rJRR|bBY^cJM;FcOttOt?rf*fT<P?8${WH<Sppx}QN!k5 zFqSb17vqxePN3m+wR|G42UE%gNk&5jpVAmXBhBTshDxjkTaZOBh8KbmEw&Kq2l;81 zCA_JKrMvQIrd<aH#nJ#{i6?^TApd*shPTU3W&!fYhgiX`XOGAh#MJ)uKwh1U*Raa2 zj7D)=Xp6z2g}YLrj*8J*Ws{u2W2KedhW0QH)r-HbrN<xRwFXYPS4cZj>B!9@SQl!m z!Ybjab_n4>Z78p=fqX9lu3s6BbW>`Fgq38_5>It~l{1bi?3uidrE@iWwAfzI?Elk^ zrYt&k3*7vbw35119*)TFBu6w~WenrvJc&(3<F(zjRNEHjDEgNd>FXOg3H?O7S4Mvb zem};z)gE@KoDOZ?o!69CxAss@T@fqUrEE)qV_q%&@%PQK9I{D*c7;1Kq{cL6VC781 zCx*eZnwkomW>>j^Pg1#w3-U8ApJnJg@y;S^8LO}ree$9sIi@b!l1K-(asjsZ0~K7M zC6!nb_#AV(Dc<DYsAo~-@T4w=PphWc)~LEftvkk1<V-Uq+QK2tl`!J0w3P%gE!*Ma z$!;m<Vx2*K#Uo{0SzRVe?^HJ_TB^AOOFZ3wov~#0w)f+vr6)9y(!m6+vs6!NsBx=F z%w(<%OW2MeT034yg%hdvz%#iFnUd)EJzViC#3}w$rZMPXCjImC2Wu^*c2dxiVN_Z3 z%)#cAabnEtDy$EwVx1fIrtFbfWp5)oBCv<mmw5PyHA7o}bQQdjeXLwe|8-4-Rcoti zRMsc4AhWnGgXLt<EJtQTDb0bIP<jg5Q}{R|Y{K;Xiq1-RP?`(XmAxiu4s1;|N=8$1 z7=7rS%(L+)!suV_?=I~mv^j#l{hXz2UrLjZMYD2CEGyiT+NC|1F%bq+sb}4rVUq}T zsq2e6(sqjZ{AOK8<_^6}2~XqT9-=YNT>%#p)^eS_f@%8-8!`_jO=X?P%xOqt&W8sA zj-~O{opH9fdXhR73c2-}yJ6FbXo{bSa+I0l&*q!stYLKi_8n-4_>9CU?o^CQ>m`t> zzE;&9X4K8(k4u~U^7faoUC+=2Yx-ywmq)`}WHgWZaZzp2Oxsz?k^(q!WxL#*K%;4q z+0a?e3*FJ_iOl>^r|L_6OU7)vy^Ky_cT86$?G2}YU+yV$Mb+nW(e~KSqAi8>#S<~~ z(Dmm<BWe4x4&U7u&t<~1iwu_H3FrxQz?}<YPJ4<y(i+N#mQ%H{$Pa=AIit+s?9dCe zOIe3Z(KMWvS(Dqt_J&3=F&{zqJ><~!i>Y<h8%6Yk95#95bku0cS9+SMquoA~M^@Dy zLO*_tCYmejh`I7Y<XjlM1((I84wkr6c89q_*u;ybtquB#sPX($E5|l7eY2sX*d(<` zcjm&Ple;VG!s6iZS9z|prpQ=mlhzma6z<5jXEevM@oQ)eYfYQ;q5pc{XMvqXzpNY1 z9xQBt>v4Nxo&TpLrr5z}4{f0VUo1a<eT$0eoOxVnm(rNXgq}D{>_>6umCpPuw)b&I zsyW|Mc2I9qnB>NS?xdW$!mzhu`{L>4`%J~gxb6h2W^YlWf`*Q(#&q=fL$n+H`>L}k zdx}T0>4h7HBAZoH_gbqKV*aIqp1;+W)K~$x_A>h_xeRKU%4yECNDmg+Gj<|+?!kl6 z{TpcEt54gBBaptFOLsli89tHRRBDMmlTI&fJSF|0a7SiG*v@j+E!YjWgm<UYiHiOx z`q`S}dg_d(KRjhmcIDKE!TJxdRySo*eM62#;jZZtI!gL;`l?vV6OA$R)d%Ias1K#~ zYHMa)B&+{}jm*WKyQ?{BP}6|A#9UHC0L$;x&E>(Pmhr9g@y5(!xs=^}Vl4|gRWL8@ zHCW;;Xd$U9&YCrG7rl6Gr+iQK-=f?6=-W?qlsE%uZCYFTm!<W>1%FNhi`Z4|M~tPk z$Rh7BSVC-)FqX8}pGkU@Hna<_{-#`$kgDBLOwv(qk8KTsN2T9h+moBVr^sAPE$eK4 zW7+2P7K2^dklqqkFP$;esYg^k##+`aqD?W2*HTlGF=Ql$m(tI-IdWf-aaE_PyR|Js z=2$f>Wb$!Yhrtw<-dwq(?A=&4a2+#eGt1*fg-6|#-dx_5)-K$UFq`1cZPK}dI#dm% z%;{@Or3WJ##Ao7|`Of;V<ff#y6uXikS~^?FqCB+tx(}PvO+wam2mQN-e!Iew!va`l z>Kpm?iuuHP)qIINYA0d)ABTsg7R9_~+K|Wm*pBCE>cM2L%%QeMStSi&oYo^Tr5~3Y z6HS3{MX}y3raVuKJ<cq%1X4w7=#E^s!It%5m^p(5(&FZ*-b_x(x}U#Tap}&(3A@Ap zTGl9`pWe}wVvGK!?3>(<47f9)g6GA~<yL<>S>+C+J%8vG?~;5KPF>f~fkam}<3)eU z{3>%_4csmqkFylmHJ-$F$Z716#Z=<ROlm2CD^8uZHL5<SDYZ3)eskN;iHH1;BKpl! z2OoA8wPd(z+fZL+lVQrA*rH~$o8sBtl{P&W&{WYKJ`rbuXP{I`W4T1Q17etohf8+t zj#LIWJzFJg=ktfsO>($b<NssI?tEu*i=OTIJr%cPcp{UT&{1YBa0F`Hghn@ujWsld z$yfr@Q-3)vvKAUci<#6^XoovmMy*|FmY5|}YYJ5Jp>;y8u#0%KG?{*|(I}yF@$|i0 z2aCJYsH_#yP9gnj85jL|F>SkMzji_j&qc#sIm6k#MXr!na#`O!#*()3*<yIRKv5Tw zzq^pHX@}=w#?*uU^b9Wb1O=V0d5R7{(UssTv4+`0EoqLj9nyvu%sDMmNOzPy5ofFR zC7Y_~%!8&dPxi;cy>jNhc|>p2vt*WDq4!Wp&=*hkI`r^RFoQ*!;byQov$2AvbY|8` zc2~4k?JQw~8(q0OqgfyqQD98;<g#d2q*G&pqn^FupaJfSl(^#DT8o~3A)s9Dhnr_Y z>E1~C^9`nmhVXrv)kd*7tRbh|Q+&955$%p(2X3PoE<}rRi~&_W6~=%a`F-iu(y!C# zHxEWM<<pEyB}_@PUM=<{LP-1^N9P5L(Fdh3r_#mytwC?6joeR@>hf(-2WmdesLMJM z&yGCuM*66_KI%B4tv>W%#+eK@`Z&wwHJ|64Bi}{RKfTbXYASB5rsnlMC6uYg1Alrt zTK?X3!)0RuXCf@{3}zee=c<A8Re}TVX*z_i00E1v%VvHD;Nkn)=PLH04g;c*sJQ?g zs3F|`YtS#xqF>UGB?#UoUm>H%iV;1&-upt8I2&G8BL$SJMVB$U6H%K12|1y91-xGu ziY(g^fWTYQHR`qK5qQgrw!|X=YTb;mz+6Ji&mv#)i!Z#GF2mFaFRU9A5H(*<s3n0= z^F0Vo3l<5Y&!ZpiK`xOGJCr~gYY2PgW+KGYoDH&%a3XciS@=Uty%$bL{l`8VeAQ2) zo75keFB|^Le=W<@6=2g%C=xyTUkY4dc3(bp*+2#A7ttixRgT!RpqTv+itYcb;wF{) z0Jv%k+W6m?@V~7B13&m54E*e$H4t?D+y9{Jr+-!#T^77XbB+jns4qrjy_ntvFMx}X z1XDedHAsVFP~`u8y1)qyQNd~dk6i_G`@i+>e<M#t!3+f>7Kqp?v<%Vh8nZCi4D+i) zx1fy(S}wtrkix-EwVETrE;an|2CfkY*LiWZn)(KN&_2X`;oVG3==KOub<;n}%VnG( zc<1_^>JJeE`!O5djwuQ5)51%MoG7?|{VDYaOH9P}T{Z}5>(Uy;pmcJB3i)FGKG9vP z8}A~`QjB38?#nlegTGxe@}~b_<W*y#r1IdOv<b+y2~7r|{SU!AjN6dyc5KUp);i)A zAXbiOtdP3~iO7o_)~L{T>i4Ncvu2%=ux;2Gh+S(@4y^8H5w#W|b|1)W(DVwTJ-(Xj zHAVsbosi{H+db4OW?9sJCncKAx*hoRogC4`qF{78rhmO`@T}6@t~u@yI(!`Dmeq=D zsPvYo8`rNED~!p;8y}-0%>(PtppjIt&ZI$eD_f+R+^d6vG5nYRu1thVQxseeF9}z} z&Ll!IpJu}{zhyDPmIn~Q@D&Uufcat}e6J#u7Q%)HAAdl^i-j2ZHc+|dnD=v-|5E+` zKj#12kTiD={u0b)zTb}7CGSS|+0=IYecyJ>kL<f_;H-erzV6G0&n_E2d<pQ6K#=Zz z>#||jB|r`xg%<UfFB|xmw{OQ>Ge~tq9pgUVjvcdaZ^x!Dfi%wo-|?!q`FGIV*a7;C zr!3pCwej3#gXQA<cH97p_(3!Li~`?u{yV@rKqY$_G|>g<!PEw=O!hh;e}#DFzTOA@ zjDrZRYXzMxEnqE$9+~?R{1_n~*dnOnJ_XJ6ec(CkfJa}ShZa1vSQ;(s1QFwT(DK`G z!O$k?+i?m+F9JgU9a`@F@NzA4L&H5EUN(5)H0bogRs1U7Tk<XEw`12%=%wq>Wy3$? zN!9_X>G#m~Ef~`WZ$Ynp+ks;NY7!Kk2R+;_;MgbO$1Gm=(ABX0$A)44ZR3ElVa>Wn zUn*C>&ke&Mo4|W^8?-W=YXQ?5=C@<Z8=&@c0NM#X%|i<_l<nP@4Z~mo1#lb%0Dkj# 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 CvoB%* diff --git a/public/pdfjs/web/cmaps/B5-H.bcmap b/public/pdfjs/web/cmaps/B5-H.bcmap deleted file mode 100644 index beb4d228104cd985130e6eed7ccabdb63e94ce27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086 zcmW;K`%{!<6bJD0ilU&EY;uVJm%|7lv5R0#3vuK~Ae)R}AUMiNf!%}&S=!yWI8Mxp z<RvwOOwBa$7J`DLX@&_Jh^A(mAQzEqXxl&0Q$KuvIrGl*Jn#8@XN<j{Vk@t<muxC_ z>X(>IG10LxF(y4*Y=u^RcD2K4-R#ht%ZhCFa+|%tX|))<xwKUO|Mw2P-RiK~EB+g1 zTdjJ7F~gjax+*&rG;o2YH72_{NUy;{ch*Kt|A9NJz~yL64k!YTe~b|70?ctCfU8QS z5<FeiOxplu+cKuwU<|Cy*JjjKx`4K4qtxk`>dH|*GcxUX31vqH)6T^xJ4={$tw7oB z$+X*o@_8839t~wrGSl7=l)b{VFA?+iZ2_pSVfrEuWxpTOekaP8aZL3-XsFKuLjy21 z7*QI^n7+zDIWU*$Kncp%Z!jJ7L^+tsbSMnvP$ARdWR%0|tZxM6ND$MJEhyibn2!3R z9L;4qwiM-<gXz1~D97hB9WTT1#%PFdT*Gu?9?FT8OeZ5zP8PGzsWgDb9Edu#7UlFz zrqhKeXF{3I)S!G%Oie-P)wCY6n?7VZn}CsLs{xv<5ZfHa`sQ2+ZmvTA7C(R%qly7i zT4LC@#R<?{2@&VKQO?COou7|#K9i|6x{keCO98e!LEl;dy0!oeYKsDB^M~lRbnt1b zWV+ymYc8a#Sp|5uhcLA-LTR@!{jeP6qQ-P_1Ii^ezqA$Q$3&*fuc2IC%XB3k<;o{a zKPjxM3hS!E`dMLhD69^JbxmPiQ&_(!tm_Kvx&;?^h5>Zvz>>~PHg#zLJtpwzN<`^W z4Y(1EawDJVW&+Ah)r?>BFsWPpXy+;j=~j#EcH*p_ILPZsV7jG4xwV?9*NE$S%K&;c z&~BTVZm&eS<IQxZ80EJJrn|FH?!L=(4^i$FFx_8<a{p7N-}6x(yw3EX8s(3-nI8I~ zJXCi)ibHv1XZkY><?$;_k2j;%_a?0GGxA&gb74-u+DX5{e4;R)6m#G}8iWlLV&<SH zK%W8T4XQE>7U4TXs^$F*3x_r^4b|YBVS=3Dbf%}lXnvXxFtz}6BjHRVCX|sX_I;KM zFuVdHo|R(c=mLO&0*D<Y#?g;q_Lwig#75AKsr`(_aK!k_0FyTG9goM*@eD{DxAD@6 zDDavnK$-Z67fqTWV6q%vo$>-0FN3tHV9=(lOjDas{t9QDo(V8zfxzhql<DP6&-EzJ k)jMA#p}g42@qe#_*=`-8I}pI_qmraz25&ckhx@&M0qs#}ZvX%Q diff --git a/public/pdfjs/web/cmaps/B5-V.bcmap b/public/pdfjs/web/cmaps/B5-V.bcmap deleted file mode 100644 index 2d4f87d5035f03485616d4986b6373fa0820d0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T;$*7pk;t>qo8groAH!>XMuyjh f42+FTOpJ|eK+FZid_XJ	}}!1;lb046pnFxKb%J diff --git a/public/pdfjs/web/cmaps/B5pc-H.bcmap b/public/pdfjs/web/cmaps/B5pc-H.bcmap deleted file mode 100644 index ce0013167f852a873b639e301088c094d468a750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1099 zcmW-g`%~0q6vodN6a}qhlS>5p<uF1>un5Mq5J!##vdM@Bf}@<c?Iujf(z0=JoR}3z zGc|)u%{1{Af`X(;rU@E|re>NT7m;gd^fxrqTR%L%JoC<b&ij0x*JbS8L|bW<y=Zfx zLtkbxMTSR3Mw)cC*z&D<dR3Xjx}{7vmlW9Sr8aw>!)l4};NoKa|MO+K-CAa~m;Yy` zTdjJ8G1Z)yv?e_XG;o5ZH6}Pa2(*7(bPX13xi0#9ng;QCPDf*cZvnXeZG=E4V1^R` zoRvxy;O4Ai+72k&S1{ECpkGb4=2BAudTmq=)uyA=8JOxyQ9dy;?RWuYM=I0Kr6@a# zm_A*FvdfKWmj&gsAg0|K%I*ZFJ®2-Ds;%-*{dpuU>v^DLBo-c0)(C|^V~)q7$@ z{aT1<0Hy{bN<#_Lm#HZG=P~UsLiy@7rUPy$2a=c$2B93xXF8OCa!B3vwV)jKXF9wU z<r@>z5g(KznM_BQqZ}<``gR@4u?0-WN-(%F9AX;RGaa9ga(p$@iBOaih3t7U8K5x( z!cJ~LIW>#vR6fe-K&I2xDBlrNlRvsQZG!Zs_nFSbV(6JFfF>(MH3zZYoCyKVmFUyr z4bWm#ih#tHNcL)R05n%X$XO4Rvr$av7NDF<V`>erWB1l#fLaIWt>s{7^F{x*Fn~56 z2yaUP&$bGt^X|C*e2VhQ!L5A}Q~MH>b_>(@D^V_JOc!!cE-L@xHk2RYm@d77a%lro zM+{2GM@&B|SeF&7%L>*{3f2_`>xzPPRl&NdVEwFMT~n~GS#W7*5I}bZEbB~TQ<nzN zV*=N%IFv3`g6jb&*Rz>!#G>3#<@hBF<Ga;EJJ-OXZWUy=184U{Lsm~L(@g`)&2>z@ zM%>t20?@00cFW9kYc<Mk52o9ND8Gg<-I<MY=WV9Dh;lcN>D~&Idml6XmW^`%Ri^t@ zD8IkS^uQbCftv9!8s(v#>5sK2k6vPWv<0=k*I`qik>BW_2Xp&XCjAQLV+HeZA^Qy^ zL(o7zrVY9Q^hLn@K~;vq0(@&o6}_Kf@lX!aP&LjSCde30VR{mP<|o+zV++AB63jGW zLK&%Kucw&+!>b_VX)%V5E(93JgQ!tr9Q_dHjClb}<bq*L<uew^A>%IsOxnO}JO%^D zQz35L#>*$dz<nYQW#R)~GHC|i$x?iI${k?51d^u$K%25MO>IW`GnjFD7QmDR{H8-t vrdKjO(@~zOJ)g&;Jm1DKe{F<0GX}&NKY$rerFbPXc+3#E&b*VWK6&oH7Gi0w diff --git a/public/pdfjs/web/cmaps/B5pc-V.bcmap b/public/pdfjs/web/cmaps/B5pc-V.bcmap deleted file mode 100644 index 73b99ff2fbca40e7ca5501f61e3f2f29c1fc1af6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=44ustm~1;v(TI2l^-9&YkfwB h*M<y?jZ938jch>71;l(nECj@2Kr98sav2P-`~e{wDhU7p diff --git a/public/pdfjs/web/cmaps/CNS-EUC-H.bcmap b/public/pdfjs/web/cmaps/CNS-EUC-H.bcmap deleted file mode 100644 index 61d1d0cb001dd484630e52eb7e47eaabbdee62cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmeIy+gDU&9LDkA-kV{N7%VIoIuhGKu~2XrO+`8pQjuoF2qrneFl_OF49p-n=(4rp z-2+WBSyWb*wJk$C%#4~H6s;_^QahLCDe_RpU(xgP!rQ!QtuDIxto6R@z54FG9(lO3 z)ZZEktY})^t`-&*IrCjkXOUXc=x@+ecPQAdtq!W?Ek1vs)gSP-YmEh|CC$z1)%QU) zpar!+2Vc51O)Z$dpuDtfp}UME(n(RGrfKT?Jl%&K*Oa8ISE@wWBNg?MT02tVv+_HS zPj`6q65WyCovl}Tx*ygZ^LwUBa!;r3%<Ab1x}xTwNy06QOcIMo*h$oon4pNqWsyaq zj$$n&>Pa+^P)YbG<|i>x5{)Dr6l*1sLt+_;5XII=qKm{NMXV<=Sutdab&!!vB3Cj} zBqL20Q)DAu5_uHsRE!ETsz^*zjA|13$wm#uQx(HY@w6mEqqt2mR#Lb+XpfpZOiOq% zg=;C?Ac+EN*hg`f9A2gLc2FWi?(ItI-H_5}p~M(UWGa25DKX9xNuga$)<`-DCq?XX zL{<97k|<RAvr{+a$^&bHwy3$&q@fu!u$G2qN&_LwX0N=Zn2yxb@eFzEI%ylx_EFNH zi_Y78I$j?#RpIKX^9VOu8igP{npq8c=Yzi6!IM@-1Cdhj)I{b9u+anhi$Qc8(+Qrg z0-I)lXKrHr;8}bd&%jjh+$g3AJYNQ0$N`%rrVhM#7kJ6eguu&-!InF~D`S{8@aiLA zYd(1G24)3#{Q+Q32HO<I3*NW~yqU$U1KXE?w`POETbLl&@hI3i9lUL0R)KfQ!Mjty zdlm-&SYE88`)HLX){JxfA&|HY>`G=D!S4IO9+lYu-d_s#&IKQ2G9BQ<Mc^YB`1nSq z1?*b@_UD126lNJXFb^DbfKQ021)tstJ{!-h1&6A^=QF_<8B8lUybv6j29BmO%fXlT zgRdrmuVtnl9J?DFpTKm16OVy!W`S>SW&+^53h;da_#us134VMK{FDoRPGTCsFZY6z zw=(O&sT%O>9B_Ip(+<v5g0oI=E}h|i=egf++;5os4RgQWx!(oucY*s|<bId9-(~K1 znfv|0{r=>BSGeC5?)Mk^<&5Nct^c?LZLa_74z$_-g%xPCUH1lfi~k>h>l%Q+0o(|0 ALjV8( diff --git a/public/pdfjs/web/cmaps/CNS-EUC-V.bcmap b/public/pdfjs/web/cmaps/CNS-EUC-V.bcmap deleted file mode 100644 index 1a393a51e079d1b5e7898423463fac5e87170da2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1920 zcmeIy`%_eP7{~GFoWo_^SS+j^bOnx!Vxi!&+J)#M5fy1jtYA?KEX#@)WZ7K=7a5uZ z-?Pvrt3_pHS%)&T%d&RQ=w_*1?0&x)S(fcz(dXG8`k9%gnSN;Inb*wu&hyjz%sk3W zeU-mE9NgTosYfj<FL#tU9gcFfvfbb2Q(fUuk8fK@t?BamgWdk1r^nY`YOd_;R8#vQ zHRucZg1!9c^7+)#6>Dp%s%u@<B#}mn5;F`#JK`QXX8&7BN<FC(6(s9gCAB$O7qar6 z*-Ob<i=PH)kOn19PECfSVa%z?mNZOGYOIomS&*81yO!@Y#f%BVu2m8x*HO9V)9fWf z1zNp(=qAm+W_Xz-5BF(~yy5<kGiFR0BwVt{C9$4_jYJcPg^IXM7I`FEDBeY)l|&l} zm4uh#eiDl$(N4ln@oo}@BsP)=Q+&H5`bjKS!~lsUiY`;Um-Gx0MUrlk^ekB{mGx{% z6jQuU(d$TWAhBH08%dO8=uI?bR&)<dWu@spnzAVR7K${6Y%$}YksjGVk!FgtNuo3} z;-x949NDUj^im>69_ddT88nTiQ(_(^a+T4!l$f6$HPPXY%xE?V2SsgiR8_{TB+8Vr z0`s0Cd3<}w5;G1NG`*6>chK}IX*`_1*CX$%pyRD{GDqIOQ<@+;Fh`nn(kY8q!}d`_ z70%%nw{U58w_XM!bD3>mWDOX-2;7;;ptL($1@2nJ+yQpE!B_=|&1d?+?gp@DCAj-M z#t-hnzj2Q*1NY8hI>3F^;Qm6eS7KVg16P6vZA=(Ev;pk97(6_W34lk|f&C@m(Q}y1 z;IZq0u>?#gj0Ze^HFzSA*$EEZ3ZA?aOkTi*z`>irp%vgM3$qnGT?3w33Z6}8yqdi@ zUO9B4!5#0!_tcFbaUnRI!L)<tt^v=h%piE-cJSim;H6xq7reY4yy66}p38KBBWuBH z#bDaRYy_`g3*NAUH;HKmZ(RZ2Ucl@CM;pOAtH8TCOgA`I3yv=bC(O(y@ZNRc{l(w| znP~+dUIk7rWctBJw}6i?0iT@D1i`0u;ImTjc^0z;d~pN#vIu;Y#<YR2SA%cznE~)^ z6Zq~j@V%Ak0YB7(A06PQY=--t;(kAKzZvc~!~K5Yey6$LY3}zc_xp|eo#B3GxZm&G z?+@;GmiwLMet)80VX`=2{f7s|W15)FISDxbtH&f@`xj10z%uJY;;H!mip=VY`~@`n Bk23%O diff --git a/public/pdfjs/web/cmaps/CNS1-H.bcmap b/public/pdfjs/web/cmaps/CNS1-H.bcmap deleted file mode 100644 index f738e218ae2b4e9c33a1833a49fe20027e869aa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmW;KTTc^F6b0aY&QJ<SAwo2eN|-4E0v1Zq7($GxgcyQXDiARvlrkc6DQ&q}Fq)zJ zOtFe0RZ&q?6!AK(uZCxz{0+vR;y%874=ej=t<C@Tc1C6rvGK7RvubO5yU*+Q`P$XM zXk^4tgNgX8F%?(4r^AuhOe7YXHAb6@0+W;K|NFQaGvY>UUWP%#P@7xMc6WB24|Xx8 zY35Ho<kU1hY<hGvV0ygE)n>20e9rXrB%2sdE||Wm<YLrcuK@-*RsdcGbOR0o9#Zfs z$11=fu%`is0Y?B;z%bYmK#k!jpa<+3z#72ofC;eY7%l=HR`51pts*$s^C0p8>zF8D zqL^bn7bOfE!Cp|rMG$>}M-|Zz=*<^{kS$U~2(ra_!hozx5jVl=kGhX&4r>6cYhaBq zY<5~<$ojc8p`_*^SH@F|d8s=ED-Ot&L#{$uDTQ36BV7PL#+>OAKp&*tJgq9L2LW4^ z)#{?PI-Z$}x*9atYlF-!*gM8D3CBi=Z+5`1VfbCfx0cv8z)m6C^}`=msN=MzqCYvL zV~{Eot%Ox7nIcj>#7YBk&nYp8bSH6NliVd9=)`IV@vu^|Ks@Rr*4l{2`y~-#ohH#U zO~jKz$r$mpi+EN;Y%s|X@%$w5!YxS<F9(Rt<HW0SNtAeff!OjAZ}v&XiMMBnceTW} yA_)=iPZ1xgBum8372@LwV)uX~PJFsVd~PAWxFi$A*KXolJ@MTkq1S4(1OEWOm*SlO diff --git a/public/pdfjs/web/cmaps/CNS1-V.bcmap b/public/pdfjs/web/cmaps/CNS1-V.bcmap deleted file mode 100644 index 9c3169f0d9a083b462427bf4e46a25296ebbd862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=Ij@2sOyo)qo~91%8!qshLNF; gfw7T^iLsFlh`E564~T_;SPY1zfLN|EgW;7w0IZHEdH?_b diff --git a/public/pdfjs/web/cmaps/CNS2-H.bcmap b/public/pdfjs/web/cmaps/CNS2-H.bcmap deleted file mode 100644 index c89b3527fe57ad3b32061f36b73c756ead3fb071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmW;IX)8ow0L5`6Ns=T<(sPF-F)m3)lCgy(%}A1wWv;C;ce;0)jHG-a`#Sc0-}im& z!>4eLH@_FB^Xebsx0I?buh!Gm?H1W4lbo3&%O+vAtL=)gdUdzbr;93QhpM?$t<A02 zjS*&tL;U}Bp((nec{o}XMHsVcs!Gdit>wYNk~HkIwOJ&|HsTmI*hZ_tSQ;1)BX%%R z0wx6+0#nUkx&X|?6AzfJ2Xi@KKAJdzuLdlngT-*t36{#hvH`3FkruF82-XrvKUi-7 z8@XUJhPc31E!fTgI}xNC>{fui6tEvcTERgPI7}o1;HVKC=Yf-0qJh&oaApMOk)#(~ zRD#P?a1~10!F4gXNg{*bwh7$jgZnt*1`ihSD1)ac!hX-}_riXD_VcsfEBn2%-y8eA dv)>2%eX`#t`+c$BH~R(HFTj33=$HJP{s+tZ#wGv& diff --git a/public/pdfjs/web/cmaps/CNS2-V.bcmap b/public/pdfjs/web/cmaps/CNS2-V.bcmap deleted file mode 100644 index 7588cec8..00000000 --- a/public/pdfjs/web/cmaps/CNS2-V.bcmap +++ /dev/null @@ -1,3 +0,0 @@ -àRCopyright 1990-2009 Adobe Systems Incorporated. -All rights reserved. -See ./LICENSEáCNS2-H \ No newline at end of file diff --git a/public/pdfjs/web/cmaps/ETHK-B5-H.bcmap b/public/pdfjs/web/cmaps/ETHK-B5-H.bcmap deleted file mode 100644 index cb29415de4f5a669c1b47e34ab889b5fdee6e428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4426 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 VUn5lgC0;DLe}&hDRI?#j{~y^L&k+Cs diff --git a/public/pdfjs/web/cmaps/ETHK-B5-V.bcmap b/public/pdfjs/web/cmaps/ETHK-B5-V.bcmap deleted file mode 100644 index f09aec6318dbec88491e3e488526882eaa930f37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=^EnUt?Oi}>ygN@FqW~AiHWh1 w4T!mbm=B1BfLIKOrGQv2k!7Jb!z({NhS&Ox46h9v*%)5=Co&#;!uU=Q09TwZ8~^|S diff --git a/public/pdfjs/web/cmaps/ETen-B5-H.bcmap b/public/pdfjs/web/cmaps/ETen-B5-H.bcmap deleted file mode 100644 index c2d77462d298cdb261f5e2eed5218fcba35cbe4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1125 zcmW-g`&ZOe6vfY1bQH7_;w1qNhb4%_41%&6h$BY=Az6ZfV9H5>nS>Pr!NhA>tPy-< zY6h8_Y2qsc1xeEk6EqM_%``zCBG1qU{U5sZ!~SKjv(CMDfA*a=@?LCVQAKgyrd+Fj zvB?w~5*8Y2(zCfR+oDgcD6v{Lm*^7<ate!!3X8L>7PG;L^Yiup&zI<nEhU!X(*Mj< zi$!lRCMCwktxAmp4Q!xk^)a?K(rYl^p0ZKXe_&6^vVB?~<Cy~vQ%3N!0jAjyz*eqQ z20B{>(^f#)x{RsX2feB@wQ1F5HlUhRlx;3d+lo-O8<}>zg0drtY3Cx8oq0^3uRz(Q zW7=g#`NE%Rw}!GihG~y4${u0b8-<yBD*<Y&n7+(F+2_u*&x-O@I8&`N8fsI(PzOwP zMwGe&rmvGw_RnV8pNI0zLZ$;clml^02mMhFW-}d%K{=#$eJd!3y_pVIqI_p!I^uzH zB%SH#5|pDQOy93YIX0K+SOEsqhd@OA8m8lOP>!!;IuV3&BA1;{#sk!+LGa17D5s_~ zoytZz?Z<Sw3gri4YVbzKhV_uz@FCNgNDMkt0nlK9uttB@H>QJ6V>x;>xdSvAl?)Ku z6v}Q*R)EGb2t4bAayE?V++37%$xO{5=u=$@o;CA8Hx&-h;tIY~kxWzXqrC8BdQpmD zFPG*!Hs=G>SV7-h3N9_4=-m>mW<4OJB>|jU%9zeO;+pdb$}0t3t1naQ0+d!W(~rwh zE@(^_HlSQo{>3dQKSeQJnul^}Ez{))l*^wm{j7LiQ9Q3Gp1&xbZHi}`;(1l^ysCKq zs(4;gJg=E?QM*4tXBsSSPi9kx2GC^!hmI(e4poxtJ}B2SnQla)+)(BDEd!%FRTk~5 zz_(Ln-D$-cUEz??rQUec1?A>yrfwsy>n;H3)<C<J$aHHZ%55j6+qo#e2QuB6fpX^^ zrn`u8H;d`sGL(CtG5wK=a{mpc`xPjEzQy#w9p!;K<6$_;!(yhtQcxbf#`I`2YCUhl z`W_=M?VSy?dQ~R9iuYs1`*ALN^~HmKUp6N9>i~KTFsEPjr9TJX9#9{lmtp?E2Bv{3 zoHa<0HkiQl#0L|fWCD!1g3C|<(~t>esGQxNrUMMFfWW8u7&Pn((3b^a!^AlJG0Yrs z0~p%~E+Z<Rkx&jCeHCE55Zp#1&~G#eqDBjO$yhKrj%A^YeZ&jK6Tx%52w$IY1Q;!V z_z54-CM--7n^67^V4R!|FkuF-$v~9J<xJ1?D9_YApGTuS-@+09tb>_$7eu=kfZbUs SS}75n>;w+>cVXen+<yTME_GA@ diff --git a/public/pdfjs/web/cmaps/ETen-B5-V.bcmap b/public/pdfjs/web/cmaps/ETen-B5-V.bcmap deleted file mode 100644 index 89bff159ec62cc86b7c4a3258ee0455cab10b76a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=^B!nr|V>@>ygN@FqW~AiHWh1 w4T!mbm=B1BfLIKOrGQv2k!7Jb!z({NhS&Ox46h9v*%)5=Co&#;!uU=Q0BE@{TmS$7 diff --git a/public/pdfjs/web/cmaps/ETenms-B5-H.bcmap b/public/pdfjs/web/cmaps/ETenms-B5-H.bcmap deleted file mode 100644 index a7d69db5..00000000 --- a/public/pdfjs/web/cmaps/ETenms-B5-H.bcmap +++ /dev/null @@ -1,3 +0,0 @@ -àRCopyright 1990-2009 Adobe Systems Incorporated. -All rights reserved. -See ./LICENSEá ETen-B5-H` ^ \ No newline at end of file diff --git a/public/pdfjs/web/cmaps/ETenms-B5-V.bcmap b/public/pdfjs/web/cmaps/ETenms-B5-V.bcmap deleted file mode 100644 index adc5d618d6912cb3a67e4745b63764120f93d17f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?HZDrms_msWUA}o$hOe?l^;Xn zWoOQ25yqxk#>Oidj7*6<3u74@nV1+G*?^b}i1~n62#CdiSPF>cfS5@MD9-?tKV{GO GP7na4qA}0_ diff --git a/public/pdfjs/web/cmaps/EUC-H.bcmap b/public/pdfjs/web/cmaps/EUC-H.bcmap deleted file mode 100644 index e92ea5b3b99b1f20d31c9760481de0472e72685b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmW;HX-^Yj6b0a!LR#wJkfLdA#QItYF__k&#-$pgwHAR0XbY(^j9ToQiYX4xOdvHz z^BOzU4fhQfs9HsF!Cm{wpW;vPT)#Xy_vC!JuD|J|F<COl3#V+>9gk~~n5M;9B5#aw zmMK{_pRicpnUjV&X_z^i=c6kU#UlH^x0uN-Zcb5|;haS`AM8t}1~Vy1mV_j`W*7F< z5~8j%Sz0d&CuDX^6mmYamwIXm{c=f!SC+Gir_7t&<q1VC+a8b8&?q^I==M6zo}lA* z2OUjxrk#Ef8JSrpx&kv+Q=p=VURG&uVU_)d*<!W6-PP(=y=ur8Qm0*hL_cCE+t$*i zraA&0t+}4%s$StDtY1ljs~d=m;F=Du?*cc1#59;40XMgRTRy@7w+FzTP2jGVD1dt@ zaK9Zqkcs2q;coC~ErH+k$5}A96+Br*oCQyZz_SQ=t`OrQ9GgEN2K4!JI2Vq9>NfCV zHDQ96hrp{Ss5KL(!Rub|rV}hS5@X=)UhpnNoCixs!TTNHgP*X$$29n)fn}8_g3tZn n%SQ0kP2|D1ec(GIE`T4S;O9>8YYj04eh-UqLp>(Re@6cS^@+ph diff --git a/public/pdfjs/web/cmaps/EUC-V.bcmap b/public/pdfjs/web/cmaps/EUC-V.bcmap deleted file mode 100644 index 7a7c183228dfdc5c236b7914ca68298520ac60a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>Kf{->ygO1a1rBPe_qDDft*Zx sgPB<NhOr3ljdm1W_;7D-t33lF6iPD4gIR10jYe1m6B(C&W!%RE0K|wbcK`qY diff --git a/public/pdfjs/web/cmaps/Ext-H.bcmap b/public/pdfjs/web/cmaps/Ext-H.bcmap deleted file mode 100644 index 3b5cde44dbaf7f78c716c3705590ae28e9bed265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2536 zcmW+%c~=xk9*pdR?&=e;<vuzKltY0AIRq3%Kn~@W864#(v{jVD0_0FvU%~1C%_Rsl zw}a!#GJ+$A3YE3{X7-EhN7<bHBVWAC%KT--FQTe+|E(+PemvCEe*ZzAJ3Tkolak@_ z<hl#*cDH%m^+UaV-p*ckdDorpp2yuiQlIy3s->`_!~OsLz3v`wueYcFuf=+=*PWVn zy}YQTs=kB}N|oa#DU8z6zYh`Dt1F6VfA!-q5nkI&;jcpi!e4uo({-;al$3^_qm|^) zpL@-rqgJKNJsRh9j~0)l6(|pYkpM&wCn{pWa4BL&Oo~`DavB&;fOTYGM8>P9z^ftP zH8J5eBol4NarS)Pwc{KmJzCY15S0o}^}IenEh9v&mPkqq{?N;I55=e#YOQnhK90nI z(Ltzn>0^LeuOB-H^@eHeJk$m<Rw&!ksd=mj>JP$LCDb2vV~tQ7$=Ge8-qeq^LcNtR z#tYpJ9(Tyr3>q*_p*G>D9BOms_!+1zVdE0iRx<t!s)X?ua?m-7@t08BVtfR9lF>); zF*d@N2=$J^R}A%TfUg3om-y<io38UUK)t8;-IOhv)a`46dLP?8<_S*pfque*19#Ab z6KZ?dgeV!as4$VwpFG5giK`qR;o`(CIVhWAG8}40z+@!U&WOo49A}s&FG1~!nk<9b zZJfLZ^|5iX6RM2KKBzsI?3Y7wsBUrqYH!daXWnO<azK4znu>zjubVmrb%0DIK^-(q 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 KcNEe6tK@(8IPMSt diff --git a/public/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap b/public/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap deleted file mode 100644 index ea4d2d97b8bc1df2abebce0d4f8c58789f723eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2542 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 diff --git a/public/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap b/public/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap deleted file mode 100644 index 3457c2770913963731993654c838df133deabbb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<yujq8{{4ArR$N%)9A>!*Pnsm zfDaG{u`(P80Mh>aOnZZwSoVei*^xjT0>t4!9L6BHH`-C6vHO580~>>ooOEMRt0N-= n1WGc<gIR10!B7!K21y15s8}L%^Hj!tOzj^0`&a}S_lW=iImS4e diff --git a/public/pdfjs/web/cmaps/Ext-V.bcmap b/public/pdfjs/web/cmaps/Ext-V.bcmap deleted file mode 100644 index 4999ca40412b66e87c56870c80cff32212483ee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>RM5v>ygN#sKmI}pMl|k4-f~j zG8_m1(*FERdxM!+_J#r3kw6>*#Nj|3#vr&i+EGF=`+zS48-q}zgLHFIt0N-=1WGc< ggIR10jYd!*Mh1jnBC~2K<36T-PyT%@0*w1a03e<=y#N3J diff --git a/public/pdfjs/web/cmaps/GB-EUC-H.bcmap b/public/pdfjs/web/cmaps/GB-EUC-H.bcmap deleted file mode 100644 index e39908b9844939a3c6d6baccced5771b8c1b1b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmW;HX-^Yj6b0bvh=x@^fcgdPo2C^bbR!B*V$ecRss^<Up<v#mEu8>bX`N|ESR}dF ziYT(U;(|CJ$SNud2>cj-3g`OeNzTp5Nv`@Y)R0Q|8Qq;-8R6G7pS#-U(?lSVit8fW zXJ+&VrU>?Qq>OaRh-LJIr!bIAivN967`mw&y?hMoy6|{!1{)fi!;OkfA;o61EZUXA zrr7tLQB^4WPDMWP#3Gg@qg3suI<<h(Y7zC5Qw|>?M`$=f?v}^3bnaxfB>#NYMU^7k zeoSNs$ZOA)=ecs1NV}1XlOHqWu#XgvM&(EqIpotqrVET-1<#z|xynSrSRHs#&h&%v z2$-k=lVywnrf!3m7?rPznS0=M6L@n5yv<|c;N2B4eVQ2r@7uwLi{Rr4CIdc&z>E)k zKFTD)>~-+vEU@sWv=U&h9?T1JMCOO6LVj&UT(|%hOPPn@+byu<2FpcEH(0p_R$XB2 z5EBFIm%;Z_%mCPE13zlP&*O{<e%%3^UhunwxexvX!Bz#>KFoB0odEc2XC8swyI@Z{ E08&E2d;kCd diff --git a/public/pdfjs/web/cmaps/GB-EUC-V.bcmap b/public/pdfjs/web/cmaps/GB-EUC-V.bcmap deleted file mode 100644 index d5be5446aa40898742183202ce0624b8acee5234..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T;qIjC8tSa;ktnio5kreT14D}) z8$(MN1LGbEAUm9ex5dqlVUJX^5<`m<8)J(L6GMwFBf}nPZpIb|AT7hl(Bdr3utyfi TmIJaQq#0U5fOIGW!yb76lc_S5 diff --git a/public/pdfjs/web/cmaps/GB-H.bcmap b/public/pdfjs/web/cmaps/GB-H.bcmap deleted file mode 100644 index 39189c54..00000000 --- a/public/pdfjs/web/cmaps/GB-H.bcmap +++ /dev/null @@ -1,4 +0,0 @@ -àRCopyright 1990-2009 Adobe Systems Incorporated. -All rights reserved. -See ./LICENSE!!º]aX!!]`21> pz$]‚"R‚d-Uƒ7*„ 4„%+ „Z „{/…%…<9K…b1]†."‡‰`]‡,"]ˆ -"]ˆh"]‰F"]Š$"]‹"]‹`"]Œ>"]"]z"]ŽX"]6"]"]r"]‘P"]’."]“"]“j"]”H"]•&"]–"]–b"]—@"]˜"]˜|"]™Z"]š8"]›"]›t"]œR"]0"]ž"]žl"]ŸJ"] ("]¡"]¡d"]¢B"]£ "X£~']¤W"]¥5"]¦"]¦q"]§O"]¨-"]©"]©i"]ªG"]«%"]¬"]¬a"]?"]®"]®{"]¯Y"]°7"]±"]±s"]²Q"]³/"]´ "]´k"]µI"]¶'"]·"]·c"]¸A"]¹"]¹}"]º["]»9 \ No newline at end of file diff --git a/public/pdfjs/web/cmaps/GB-V.bcmap b/public/pdfjs/web/cmaps/GB-V.bcmap deleted file mode 100644 index 310834512ffe49cbb7ca903abc2dc1aaa934e6f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T;_jsDktm|5#L!~Tz|dmH#?TVR zz_>>O$PQ=WZE>?>*dx^plyqWaY;j>?Xt8Bv*dxu&*x~@BWf&P+oTVA|$O74NKz4*Q OLrVyd4rO52BM$&=>M(}@ diff --git a/public/pdfjs/web/cmaps/GBK-EUC-H.bcmap b/public/pdfjs/web/cmaps/GBK-EUC-H.bcmap deleted file mode 100644 index 05fff7e8254c995031783fb3b4892d58a6b176ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14692 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 diff --git a/public/pdfjs/web/cmaps/GBK-EUC-V.bcmap b/public/pdfjs/web/cmaps/GBK-EUC-V.bcmap deleted file mode 100644 index 0cdf6bed6d450473f92e691e9015e4028113607e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>F(sM>l*5;>yaq3a1ld`Jp)6F z9UDVS7z5)T2_QS1g}24cj$w~fvl2s#6B}cT3ll?&EhEDoX>P_A2OurO$k5^}&9Fxn U$d&`LBcvHxLV$EA1H&G90L*YQ;Q#;t diff --git a/public/pdfjs/web/cmaps/GBK2K-H.bcmap b/public/pdfjs/web/cmaps/GBK2K-H.bcmap deleted file mode 100644 index 46f6ba5967cdfb381f001eb1193f17b43d943962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19662 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с_g64xi5Q2#n)V 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 G75^V_vt+mc diff --git a/public/pdfjs/web/cmaps/GBK2K-V.bcmap b/public/pdfjs/web/cmaps/GBK2K-V.bcmap deleted file mode 100644 index d9a9479843eda25fb0a8fd69fb302740813d925f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?(XDm<gM$G$g^+}LyJ8FLyH|7 zLrWL~;~ohhJDi2L#m$akk5sb~LyHp|V~YzDLyIjV!yajF#uf)hmc{#9oaHs7IT;y% z?7e$rWEmJ46c`*umn>{t7tYAUD8MMn$S27l&jMsKv#~ZBaR3=SjDn0@2*I{OJ^=ma BHq8J4 diff --git a/public/pdfjs/web/cmaps/GBKp-EUC-H.bcmap b/public/pdfjs/web/cmaps/GBKp-EUC-H.bcmap deleted file mode 100644 index 5cb0af687ee20a10ecc367892ae49d7b1e74acd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14686 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 diff --git a/public/pdfjs/web/cmaps/GBKp-EUC-V.bcmap b/public/pdfjs/web/cmaps/GBKp-EUC-V.bcmap deleted file mode 100644 index bca93b8efbb18a13e15025ad41d23db8267d2577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<?iHNpz9jytm}~|vTzYYi#-EF ziya$7OBe&=9tj{joQ1c=&5mJ@RI?I8ixV4TiwhG&i!CF=9%*jI76%|L!^qI$EX}Y- V7RZ(ZvLmD!T0($yC<DVDc>of+Gg1Hm diff --git a/public/pdfjs/web/cmaps/GBT-EUC-H.bcmap b/public/pdfjs/web/cmaps/GBT-EUC-H.bcmap deleted file mode 100644 index 4b4e2d32294538b5093ed3870bb9de37abf21599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7290 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 diff --git a/public/pdfjs/web/cmaps/GBT-EUC-V.bcmap b/public/pdfjs/web/cmaps/GBT-EUC-V.bcmap deleted file mode 100644 index 38f706699f395dcdad5c6ad93d1a9b6fe9f66c78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>FyMw>l*5;>yaq3a1ld`Jp)6F z9UDVS7z5)T2_QS1g}24cj$w~fvl2s#6B}cT3ll?&EhEDoX>P_A2OurO$k5^}&9Fxn U$d&`LBcvHxLV$EA1H&G90MDZ`>Hq)$ diff --git a/public/pdfjs/web/cmaps/GBT-H.bcmap b/public/pdfjs/web/cmaps/GBT-H.bcmap deleted file mode 100644 index 8437ac33771536813228e3f9c1cb6c35af3acc72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7269 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 diff --git a/public/pdfjs/web/cmaps/GBT-V.bcmap b/public/pdfjs/web/cmaps/GBT-V.bcmap deleted file mode 100644 index 697ab4a8e756204de9d089c8c136579973c9c0c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>h2Vx>yap;sKn4>&%n@P$HveS z#=y8o0>}<$;caoVW7s3r43u<YV{CC@Vra2tWY{Ck&Di1qq-7WxTAZaB_Q(R+azJ*3 PG($@WkPc;F*dq@BsEjb& diff --git a/public/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap b/public/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap deleted file mode 100644 index f6e50e89363483070b25106b94f729ae38587d28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7298 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 F|1W$<J1zhK diff --git a/public/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap b/public/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap deleted file mode 100644 index 6c0d71a2d04473870c60dc59342400fe1b4ccc48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?d}v(kgV$(>a6RLD6()7LyJ8F zLyH|7LrWL~;~ohhJDi2L#m$akk5sb~LyHp|V~YzDLyIjV!yajF#uf)4EyKvr;w;Uu WM;6GI1F|Ee8CpVsbSMME9(e#*4Ku$0 diff --git a/public/pdfjs/web/cmaps/GBpc-EUC-H.bcmap b/public/pdfjs/web/cmaps/GBpc-EUC-H.bcmap deleted file mode 100644 index c9edf67cf6d640607080ad2775c14760df77dd96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmW;JSx*yT6b9g#5sk8Wp~4N)&xVRox)HTbV$ezus|KWvvDSQMS~>x=+B(ya0BUlu z6%kOt4Hc2GF1UglxbS2ABPP6un<sfsPEPXXX#b+E+1!BD*VCI9L0u1cn*#w|gwxrS zDPjY5-n?Rq$kpzwmCIVmyqWfuhcg+mzHbZ5v`wp@hcVL>KL6=RYg<RGO;Ht6RMl~4 zSt{y(O{j`XH8gQiRh3ndj604rs5wY2+7`-b6*Nc<a(ENDqr++Pp1l>Ky|sm^&HD=; z+9wK$t)ehQepj)s%u_r}`l(`yg7UVH+^&(zQA3V2kz3v=XL`Ztad5W*jA@Jk##_Kd z9Ww~-#lii9U~)TSfvGcK8b{@WO6C%Hcmh1y4IY;<De&Ydn5k#3gQp4b>=1Zf!{oti z6ubz4xoRc@UY-Q=dw_$U(n*6?$3RJtJ6^g;jq>$5#5V`P+ilD>@U9aqc)|M$rVo5* z2OmA)(*`C9J|6*Jb}~a?@jO@xfv-Cl8+_{m-~Hf66>}N<jDY1vu(FZq2EW4Kw~M&} O{#*cmbpu~q-L(cH=foiZ diff --git a/public/pdfjs/web/cmaps/GBpc-EUC-V.bcmap b/public/pdfjs/web/cmaps/GBpc-EUC-V.bcmap deleted file mode 100644 index 31450c97f640ff40bd79677cd3e97f4485453d9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<?d9Ftm_);tm}~|vTzYYi#-EF ziya$7OBe&=9tj{joQ1c=&5mJ@RI?I8ixV4TiwhG&i!CF=9%*jI76%|L!^qI$EX}Y- V7RZ(ZvLmD!T0($yC<DVDc>o({Gim?; diff --git a/public/pdfjs/web/cmaps/H.bcmap b/public/pdfjs/web/cmaps/H.bcmap deleted file mode 100644 index 7b24ea4629d0d4cc9f0cd5852edde324156ef0b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmW;HTTc^F6a`>fNJ|+U1WZdKHfIVU1k*B<fK+25)+!M2(n@L!6H@F6LJ9*j6G(~C zoWu_Ge!qhtpdf<x8-3!Z_)}QhmoICtte5Tlmx$?8Ib&?}s>Rx(Q8g4%)hO%E=p&pZ zbEd^7Ox8PjMK`8&BW>|axS~6oW&igkGq}l(87h;Uvv6yFZ!CT`8Fx4oMHIF4enru4 z=0tE`J|(&Hyxf(akmS7OcH5<8CAK8mJa(nqZ+l&STNO<SyHA7$=MRY%-@IAwD@dY; z6&k8o;nW4ztQ3zpYh1EN4pax^S*I7#ix^1NSJlh$Mqgu1`n0NO1ulZxtr)ni5I4Xb z4ct8j?)iyXaDNayXa^6g2^~Bd0FMuYCmv!HJdJ~A4dA(h7zQtngO>*h{HDE1f!7`2 zO)W7E7S4gi5O^yQV<H$?IwJ<Or8%6-m%zJDuyTMf!0LIh76$JtiE;3u2dp=NjWS{c zd^`a*1H?7(=`z^r0^44~0-qD$iweHVL>7GO1K*p$4;PUEKTm>RjJOVd4}m{N!QVP! Q2JBoE!O~)+#IZZH2g5hHiU0rr diff --git a/public/pdfjs/web/cmaps/HKdla-B5-H.bcmap b/public/pdfjs/web/cmaps/HKdla-B5-H.bcmap deleted file mode 100644 index 7d30c0500520d563d0e5891c8f4781c61ddcca5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2654 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 QxJF!^-VRzcnd;s4Uw<mnYXATM diff --git a/public/pdfjs/web/cmaps/HKdla-B5-V.bcmap b/public/pdfjs/web/cmaps/HKdla-B5-V.bcmap deleted file mode 100644 index 78946940d68cdd2ea1bec1230b1eb0b19b8d5deb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<>8%@lc?)ts_T)+v(TI2l^-9& lYkfwB*M<y?jZ938jch>71;l(nECj@2Kr98sav2P-`~ljyD=Pp1 diff --git a/public/pdfjs/web/cmaps/HKdlb-B5-H.bcmap b/public/pdfjs/web/cmaps/HKdlb-B5-H.bcmap deleted file mode 100644 index d829a231015161e107123e211d4a78110daab6bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2414 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 diff --git a/public/pdfjs/web/cmaps/HKdlb-B5-V.bcmap b/public/pdfjs/web/cmaps/HKdlb-B5-V.bcmap deleted file mode 100644 index 2b572b50a47f09a51c777efabcaf6a9e3faa26c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<>8%@lceips_T)+v(TI2l^-9& lYkfwB*M<y?jZ938jch>71;l(nECj@2Kr98sav2P-`~lkWD=Yv2 diff --git a/public/pdfjs/web/cmaps/HKgccs-B5-H.bcmap b/public/pdfjs/web/cmaps/HKgccs-B5-H.bcmap deleted file mode 100644 index 971a4f23f791f75d4e604ad717735ee55529eda5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2292 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 diff --git a/public/pdfjs/web/cmaps/HKgccs-B5-V.bcmap b/public/pdfjs/web/cmaps/HKgccs-B5-V.bcmap deleted file mode 100644 index d353ca256b54236a4acefafdbc08e5b719892014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?ctrCoLsEyWUA|t$g|L!;gugB m!)tv;hS!D+jEzi8jE!tS%mu`JKr95rVn8ef#Bv!7ulxZLvn!hb diff --git a/public/pdfjs/web/cmaps/HKm314-B5-H.bcmap b/public/pdfjs/web/cmaps/HKm314-B5-H.bcmap deleted file mode 100644 index 576dc01112bd7f28c30804661f546ece203c53d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1772 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 diff --git a/public/pdfjs/web/cmaps/HKm314-B5-V.bcmap b/public/pdfjs/web/cmaps/HKm314-B5-V.bcmap deleted file mode 100644 index 0e96d0e228e0608f77f035655140c6a235d4ea56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?ctqkY-pnEWUA|t$g|L!;gugB m!)tv;hS!D+jEzi8jE!tS%mu`JKr95rVn8ef#Bv!7ulxb;p(_9Y diff --git a/public/pdfjs/web/cmaps/HKm471-B5-H.bcmap b/public/pdfjs/web/cmaps/HKm471-B5-H.bcmap deleted file mode 100644 index 11d170c75ed8696f0705f9fb9f5afcf3b0aff4c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2171 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 diff --git a/public/pdfjs/web/cmaps/HKm471-B5-V.bcmap b/public/pdfjs/web/cmaps/HKm471-B5-V.bcmap deleted file mode 100644 index 54959bf9e776c990460f2582adee80d317062d20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?ctqkVs5DGWUA|t$g|L!;gugB m!)tv;hS!D+jEzi8jE!tS%mu`JKr95rVn8ef#Bv!7ulxb<jVlBI diff --git a/public/pdfjs/web/cmaps/HKscs-B5-H.bcmap b/public/pdfjs/web/cmaps/HKscs-B5-H.bcmap deleted file mode 100644 index 6ef7857ad17cefc4ab714d209716002317c23baa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4437 zcmZ8jd013evOjh2?c29k=w_A8=CFgvq7qzk^@xD`0wSnf5dlR7Q9yCm)7>;SOS74Y zYm#viUrc6VGI6pQCz(tpv%kE_o5@U)$)fRP=II37O=NNE`u=<0{Z3JJYB^QEs&i=J ztCE7I?R%OxZ>n!~<xHQRotc}RJ>A7>n>N(BO82z1)-|@c7Hq3&YTn+|T-{n%JK4+{ z8eEU;TU^a`Ep^Si^v%+`I@jc^#S01wmzEY1Ae;bn%;CeT3&=!ZV&I@V{z$Hch|Ct) z{7e~3S2|lGf7&LzDslPAmX>3aa-Tb}tz-MPr=6kQiN3Pqb3Km1a%K!PeOAx+99tqC z&G0UNU2!{3HhOl?_vZK{#%=xr-kGN;q<x22y3#IjC-Eu7XCpqV%hzaPq@$H|w2+Qw zq@wVDQn<PBNI2<SZRxDA5|KEG<ZmPXT>>Hg9mKz#_?w7-TN<&UTuA)$h`+$;pF2S! z9i<f=2PJ<r@y8MW#Q#Sv{xITq5q~^cWtb@|e9wuwy9sHl;ra0=nhb<IM)E~s#N&v6 zH}UUDB|-?9V9m9Xy!8t^XC+=TSuR;6l1>~Xm_!p3kxBK%Fmf@}fKKEh1Yab1B$SZ1 z9OSKFfxw9x+ldVdi6rFBDdlhGM!vC{ys^&wPDsW(P6y$Wh(dx0eJz%}7L!EwU8tFO z0gcz3niz8`&PsL?Mj{9$0)A^qE?Gf15G#?$MsncHW7acykz_N8JeTExbGgRnngo(c zEM$f0*ahCPuv<MFeKx9l_HpfOR99VBEpwc@G*IQ1ds=vHyWm;kZFC<T+)2bA$Y<=Y zmYq%j!P~;+E1^%C<qm1p$!epoFz95xH##uWlOHH%Q73o5lvFoZ8S!j+<>^-Yake@j z@z`^19{OT4UvkEDNp7b{b_ZO%vE4~T9^KTr>4@si=d&))IiE7)JmG~WEUAM__{vvg z@-hfH)0Q9bZE3tv#4M-kKS;E@Q!09QaQW0yPlPwZ)6{ak;YcaZ<nw*CUFE)*K<(Ql z{v_r+x$BGNQXqffGim!eQd6JW)!yn}%#R13E9MREM6Y!)(Y?hV-P*o{PaNFO_q$`f zi@l;Jvwe$ieP;z(MZ%fk>5aDvcX+mQ^O3bXy7KLdSo5*>9#jK~lSE=blmQ!B^oT~` z1jx9PhLGyhkb(^_LyZ+BnV9jLf{g(DEZ9RJK{B9~3713`>YN}x(ni@O39yG|t3d3* z7CR6bWg}YapGYj$mEl0lcB5G!CR`S@PnHZ)LSE*)`FOtJQCzD4I8+kJPz<u3C7!Ct zGLPjH<DsO-1d?GjnI%ae!A^ses)E27Pv`6T7XGv3b_dT6Z*H&k)O9AXv|}IfjwOmL zN^w%bd})DRlTnzRg;6I*2!en}2#QVG47)&(lbd*~ycZ93nPM{q5JfXFIrn7*Ndm8$ z5!;dJF6~(3njOB%x08#a%-`DQox-^F*e`j{4$L_&+=ZB0i!i@6>+~ESuhnVItWYW| zSg}1TG$cmf38jw6oh3RakeI|oqDUdZmPaV*^;#4_B&0_O&BtCLVi?gtbZm9$QRk2s z$RxD1OHSFUm{EgR$jh9%uQj+Z4~T+VqheMRDNQND>x*5N6s!E`oFrmI>||UvyG5C( zC~`3(o}$dda~_?DC<S2`iV$%d-b))vMtv+!f|Go>pI0iVzgo?6qR3Q?Y$N+o4#tTv zl2uYTTCE{2vYXh+UgXz<YaLYcwFBqDJ>hgvWQ`Qh30=vlAoD#;brY(&XEW6kOQSrM zAb8q1QN5*9Yj-lWeLK~BSxoJ)QLSS!Q;(!m?Z{@P`irU7DKoXRmTFxIOzj4$b<bgH zPaM^HG^Pe-(#pWzxoU4Y)%wDj+Sf|8{wYiyaL~yE%gN+H!qmYmsts;q>e0nid&0uh zCpJ^<2dPYbQl{FIg-kt`K(%8Vn0kB;)s7!x>Isc%Cu5j;axc|RO=s%q2&$c4#nh*! zQthc0rarxbYR?2S^_gun`G=V#?}uefJ!7TXnMF+fQ5w~LRL>mG7D2|d6;yjpV(N1n zsCG7<sb>#S?LSneJ|9C(&#xt=&u?VvxfwL=+#bk%A%VGGSVdxA*i9o|3>OMs%w}OP zwnEB}%~bnwE>nLJOtqgZW9mzpG}g111bHXm+m`NaG`-XSu9tQZ=lMt)b3Owy&(9~0 z^KDFh*+k1;o)7XXaZG(BiE6LZGWDl(srD)`_0=k>UBLYd`>FP`nM{3c0@YrtVCw66 zRC|3VQ{TX*yopVD6PxlDHsvBV<svraZEVWh*py4yl%Hc$eqKw{-${U+cb2i~?*fSL z&ZOGA*x_HqQtcO&Onq+#)!xI-|FWDu{(d;by^lb>-%1U?nnKEdHG`=iIH~r*3a0)# zi>~?gHh|wOVCrucQSG;8rvA2`YQIZi>hBFy`~5to{((~M57kWl<7}$^@gP(Gvyy5b zMl<!pJyiRze5U>>oN9l<_#aK7+DFYy{qN;e`*RRe|J+F7FO$gHzhtp#ALFa`F=FsB zHtMg~sK3^;sJ|7FguiW|%RZ68`Uy7qlNvhfQwkG5tzzn@hp6(IN>+Y0pQ(S3r3?OE z3C_=xnfm#3s(rqjg?+IKQod-QX<vpy?w2Z~U+y5rufo9j71sY%HcPo|hp@|eH2(5p zGV^j1n|dXKn66Y)?aEe`^z{M~`So@ha@7PyS7QlWtz+udO;r1zWJbS{AnKbGs(mw; zssC_M?H`!SKOd*sKlih||6N0j*PN7IixSP(R3ctmSnW3WuL18!DmQVT1uWbbj<2LI z0YvUg0W0@S(#07faNnF1nfr<Xxn&@6Ux{u~VL+2=-K0q{a$l=}ii3D#I}B?vsMRd; z4rhClG?W2!C|iP|RbUue4dPH0z))?1G_(=<tzaD54#LnL2pT#7!mtfs*a0EKp`Z+> zf?+rZjKldXe0Yv14X*}yc%3K?ZvxYB14zSd)IPi)LT*?^xDhW}ZzO~9#uSLSF>7Av z4Ls{cgJ`?aBARZBAl|f5>81mMZ-xWCnF1j<7lHNWdX{*z5sbH-V80cW6n!fl`C^!M zYdI5d%Mf?l0>;}J5PW+owcRe1LT{I%ycwLgo56C&fXl&B?!-daokFVISqtHJY9ap4 zK7hNixLn}8OPS&BG$H%$ERgPQqp5dWgxq^^%zAGHSnjO@@!l4QyVpb$@7uv~e+net zFJj{Ttzfyo9U|@@fROLPY3_IF5b>P`w(oWUd~aat_eQFHk9H3dh13V>AU#+)A0AX0 z;XzF>LcTN#Ntvfc7?HUEBjLf~NMsg_BnaY2lF>MlAsa@fnqlN|Sr}n<VPpZ?EKy)& z1;9vY0gRLh!bk<$Xp%HirwAjBia64OHf<7&>`R1^g9aD{5k@7!G>ZQ$N1dW^G(r?c z<0WA<5lo{gAdKb!j7|m1XkH177L|*m%hA5f4x^R0zfOkH4U#lkhjv?}_|Zmyu^=Xl zIUs5*41_WC9h>Tau^Fi_HXCJTfUzR{J70pa#YPyzSYtSNV=Hlg4en_|=orq@*iN)* zL*3p&VeAly;{w3AEI7v%kj7&~c{~AZ<LNYHJRjx7AdIgNmGLq`9$$}qJ($NEAY{A^ zq=%NdhKIpmeHe}_0hEV1xMqOxa2~GWMDgJwh<UgSOb;7Ce7FmB`*8FR8wB8oP0ix< ztl#Z3T%RJuUB~C?`f95EE0U@I+C{~0r=`l@R$mcPzpZC+{ICTK{BQ<D@WZ*($PX_R z9Q^P~kon<FVCRRMAeA3J#EhJ$f{F7Sn85ig2;#h)0_U3`g!3&JfFHu!={7(jcRTSq zy0J3uR+)*r3-DsPm*72huRu39jx2ZA;GJ|gg2LUcG=jSipw<&6*tjPWLb)eJFmcc0 z`d%>x^(<rx_msm#?pcqgd4Yy;Zy46-&4gs`%|;V%g<#>{jm*Kl&6r=iK{WFAc+9Fj zjVio73vzgSzG&s`TZJIrzPp;w=$MnlkK*gbkIp0#e<GNw{E4vjVcfrfr1F7k#9`1( zfDgv-FyNh2C6RYNhQFseXTc=iIh#tnv%!pFi(uxR_#2FO0fN&dVMSeb1Bw$w1MiB( zin{ctt1E|>1Miv}Y~@{rx=qPE6f3Q0xIuTWlO*1?8T0Mh24TFbmB#UIGl}8;Dy-VS ze{MV<jE87GSbzr)RzVyetQAFmRK(Jc8u6h!x*Q_;(TajtezY00?oLDSyE8<AcV}ZC zyQkn8-TIr^tx}P9&p~9n=OJR<MfkvWm%udMjhCPIgf;;0nc!&>cu!Vu9r8=Fkl<b9 zJ*B$73_ISl8qB<BtuAh~py4*z#Cuxsyq*JyPe8<@0<um_xEHXZZ@?iNcpwZb4#eOu z;(!Z%11XqSAVVj)y4`f$Lqz}rO!p|(xdo}HEzuRLb%H;#c%TX=GO$56*`d3&=-h4` zsK8$2dIh6__Zl&LuMNA=>%i&jjTSAuHyMq4a}l!Me9WL%#qsDZN<fdLh*9qf9LC<2 zy4zZ#!h1Jhyxy(Yzus1z>_wA45JcW5VFrDQPAq8LXV*C=Gw?oqDR^Hr_O&lg=Tgiz z-ZxnS-Zu*|?^Dx}%$1Q8Vv>Eu3i>WEq1{p|imP;!3L}b@`d+neQfov~zZglQ14(lT zlD(6W971hBptj%O6nMX47kR&xA{RPO;{B1j7GHYaKT*cL1dQCDf=KqKNlxCMjV1IK zBp@j^p+diq{mTp}mKu<&!28sXFBtFFOt`n6V{ZNRSbzUktiQiG8^t}k-vKOS0ML0r z6a+qCz+?tYx@bY?0Xv2n2#!HTNC|Qi@bw>vb{~}aKsF*X@EFe9z>E*e1nw^)3h#_T gs5_Hz3OX|-6CZSbjZh5~d9mn$60ZxXW<yf-Z<lq_Bme*a diff --git a/public/pdfjs/web/cmaps/HKscs-B5-V.bcmap b/public/pdfjs/web/cmaps/HKscs-B5-V.bcmap deleted file mode 100644 index 1fb2fa2a2ecdf5abd6b7cbf2cb5f2ee4f0b11fe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<>6hNT&(M4s_T)+u`rggk%@`1 xkqwBsfS3=6g@9NLh^2s7E|F!SH^VDGK8Dx&j0~?08`&6M`6n_Sd&2lm5CElUFU<e| diff --git a/public/pdfjs/web/cmaps/Hankaku.bcmap b/public/pdfjs/web/cmaps/Hankaku.bcmap deleted file mode 100644 index 4b8ec7fcef466bc4090dc13c8edb354cb94d0b67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmZR25agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC8-WN55U;8L(}OlM#KV%a7QCYC05 b2F?~128O0E2EG<PMmr#1wndhKv6%$`@^U5A diff --git a/public/pdfjs/web/cmaps/Hiragana.bcmap b/public/pdfjs/web/cmaps/Hiragana.bcmap deleted file mode 100644 index 17e983e77264c62ee149d1c8ec576a23e8f90eda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmZR25agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC8-WN55U;80*_VP;@ya%bRdVPRls W3S-b|;bUNIW?^7zv1XQNu>%0E(j#{O diff --git a/public/pdfjs/web/cmaps/KSC-EUC-H.bcmap b/public/pdfjs/web/cmaps/KSC-EUC-H.bcmap deleted file mode 100644 index a45c65f008e7d6ff34edaf53af15ea471d4f6d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1848 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 diff --git a/public/pdfjs/web/cmaps/KSC-EUC-V.bcmap b/public/pdfjs/web/cmaps/KSC-EUC-V.bcmap deleted file mode 100644 index 0e7b21f0a612b1acc41c1b23ad0060da539eaf2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=^gB>>l*5;>yaq1a1rCa3Py%~ zRSXOV8JL*%RRh^|EZqC*bs6?^H=8o-=V4>q&&$NHpP!LozW_JuenDx5{o+8j1Q1I~ IGw+uI04wP+sQ>@~ diff --git a/public/pdfjs/web/cmaps/KSC-H.bcmap b/public/pdfjs/web/cmaps/KSC-H.bcmap deleted file mode 100644 index b9b22b67879d4043c75b617a24f96b0bd47cf4ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1831 zcmW-i`Cn648pfaZ-Xstpq{<Sc0?DO_pe*VL1rZBKEjtn{iUf!dP!=%(Tq@Iku9Rx0 zoqZob4(HsFMRSu}J5Uz;x6Ge1C-cMop3i%hdzSZk-&gr>U(4L1XORb!_ZPeu>guX1 zE>>69d7H-P?uESmXY&i8*?Di<!?C%@qq#_MAv9i@)-*HY{r~)VZzMDyiabts`a>aa zWmRWeOKZ2kmB{DQ4+Ft#K3^cDYuEJ_{Yv0Ps;*spF+pX^r*zG^++uewccpli2U0!D zbNbnqZ&UP!?r%Hv3+hTfVWp5#R*I-=rBv4fD~r0;_nlv_xb^akUhaLl<o3QQcv%&A z)hGwQKb^!^62G}E@k5QokJ(8?B!1f~@w-Zi-)AH-CGm$ZB>s3t;!n0D?n(UlGl{<x zCb1;(*FlNDeJb(y+$0tx{?RA#&uWQ(WiCt1=vw7!JHWDGTYUzs4a2?qHRY~l$|-9l zx>m8S0;@K7)-O=bdYi7Lua5xhgXmqK*0npY8-Ul1P&RUd)G>*DSCG2y<HJzc+3Ul` zDZHM_-pH5C-KfIaQu@Z{V8z~zzHt6c-^Go2@LaG4VrRfT#Ln7z9#}b|XBA!uu7RCX zc`?{|@KUe};^knK;O7-q1zx4Fi{O{QE)%Z-uM3y<`M_$3*DI`6<qhC1VD;eFRdxmZ zi!^o(qDW!wBzzDhU|lwG2I4$eH;D?ns8&QRSPzM-3hO1&1m=fmfsp6zhv-+umn7~& zjH>LGDwfC~usdX^b~YGn^!oyAR0?FX5!f6?HkU8P&VqQJuBkj9@<Oo58_D~~&SKe) zqKC`3&E<>IxPdH@A=^$=3$Lz~iJQRNYIwwRI%Q-@Hy9NX|4vWhfvy$5xdCh!q2SFl z@TMN8ww!XCtzx>pC1s{=1K1is<+e?>izwK>M9%G-x;D6dSN^sa*r}1<6J0y8Q%mP} z+N2SIedjT-JByqhshghNlYkjU#;(*<`tF<@=||)4b2+mWAHA)Y=Xl$pYyNj-l=|-1 zda)zw0Nz!iKPsI+Fb*p(Xdf!U;qZ%Y9Mvv2V*lK$ChP_Eb2w-ZdqTd9=siRu6rCg9 zW{-x!I}m+Byvq@N3f_|%{RZ3*GZnlarW5>@Vy1x)Xr_z!AfzA7YVe_O&4dqpgv<-z zK{79a-?N#Q!9y_X6+Q`5dVNYU8;DOU<~8s+huIAF8O%1~VKUpnnjB^)_<~~k!57K= z68tflx51jp90Y#?a|rw?nE~*xz@LFXhdBbi1ap-5*RZO{3_=jhF$hII5t-u<Dwver z=P)NA>^5^UTs$e|mZF+75UFH7f^b5l!;B=|E?i{JLu9(lMF=-yDvl@Bm<{3tM3xdu zg~&lH9U>R83=$rSxghe>Vs41jYAhe30I@=dLU*hP(Go|jD(t%NYmL>AxZ#K`L9|Kf z+Ttoi2jZzo4aVi(ofJ=l=n6X@`0Vivh+Z{*65?iIJQu=W7Qc*Ne&vXdgfpgmMezy5 zrnQ6vBIrt#felci7Gg|I)Io%hxC${5&YSiriAIR~lxTvOLPCbj4A||=#B~x6k&r?3 zNJ+>D3Pa2*i2)J|YGM%L2_=RV@l@*EmKcS2UXlofOJ;mFD;<UdMk-k!!AMiBlQ0{} z$N;-bRxXSaWaYugf|U;=$7X#@MxJ7MVMy~dS;fSLoK^{pLWlH@;U%jEhDO$>Fg_ux zo{SQg)j&omtacdXs?`y6&iWLi;zt+Q$al@ytkqkv>2YJTJPn%*E8SR~Xu(>;ax>N^ zgSOd+*qQvk8}G&%5KaGK5nH3d(%DbitR8Z|m(`%|eHma4Lwi3aL*yq%65|s8Y1Xxm z_q=pvuYuIPr@H3eTcXZ=naS<@cjStGwC>B4`qOE+f0juh@bhI^C=Rj+2NS^l7*Y-< zWvV!sqs&7GIS+HF{IE#wb||y<Q8u!UY~(tUnI>=~ivf-csQK7Np5q&`=XgZdQa)Uz L{tvCv`X&E=BnB!` diff --git a/public/pdfjs/web/cmaps/KSC-Johab-H.bcmap b/public/pdfjs/web/cmaps/KSC-Johab-H.bcmap deleted file mode 100644 index 2531ffcf41acc01338f781c845c7f50f62fcc84a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16791 zcmZvjXLM9owxIXEw{8_xLIII6AdzztIU6K`0FiSpat0xhlP^(Hm84QhRjN{VzZMen z-0s(w4fJbw@SD}M*8FH=qQTh4HpyU{WFrK|HrUKpGxKj|X<hAecDm=Du+QH6oHA}s zPv5*{*VeVG*W{-589camkF?&s2d9o&v3c3b)ET>Sa#wE5NzL4}eDl^Vo40y%SFY&k z8MR?U>i_1?N!_|KXXV!IG31PuD^q*+nv|J7X7Y?NqGF4hhez4JAD)+1m~}AibXKZL ziZ0dE#p<;Vk9HnhCG`$&QaQLo90zyt92nK)u=kK7MgGs<lK%^1wf|q)PFd;gl;_pF z5u*RvCX)9$aEF+Aqr~yAUDU^@GjFWOzxIofmt|_+ROko5PZ#3@1<nxX2M*v&mAqLZ zAH=~oTdWW2!#hv(gJft6;B5q4D6S8hs(z3{c@eyAfQ#X6Yf9b{csf&G3hV~-!rN0l z9}LKL=iSo0W%|J=$y=cxq-)+v`CyFXt#*7cR`S-+`Z~#5i?)fhdL3_^L<=^hOI|jb zCZlO9a2ha&md*s`(o(+k16q~0owqMEjXb{egJsb6BEMWTZy&rXsUJ|u7ib&A$XE1i z6v=nMv&EEri~3gTP9Xa7U9@;7{Pjf6Ad~MF*BQ-@%RjF99zElh{Q7z(PV?jCOuXbL z%9#YoPtr4qn%}_d%s(yp4Uubr96fa=Sv0?~IL<W8cIW>O&2Oq_nn`|h<4g<5Zy{$| zN&ah&Gp!}RrFTXCWyx=aL^~u~1KR^r#5&V~7N&}EhQ7>i1MCTGON;u@!giu(2J?pY z@C{AZ{EpN|LGKJ-I<Sj4&oJisUExLkOcv$tKzcL32QpL8-4kBMJHHojF0ePc7r@^K zzU9=@sIM?Jzc0EsQ11`iBxe2qG0$w_-9z9V25&C3;lOR+M)1Ykkzo#=*#mwwy7vLo z#r2`6@nJo9GQ|2Yj`xq1#19*&e#jik9|yf1a^pomjD7C}F+S`8oG8u@djlu&F23Qz zfs`l1J1AZ9r@-?%^{K$vH%|jURy`k1M$dHg%mX(Q$Sld9#XFg=`E$_&{=?Y!%?GXk zE`YX@_AI15>yh7+?e;O^i}b8h@|Wn@dYZpf&Uz$&nd5An<S+NSeT+4dXOoa-j-745 zSFIA`EGs2{4fV#hDF;_)yZv4xf32KtBKaGPvrQ#`qnu^<H#yF}Ci$DaL;X3DzXf&% zIiIP1Hr5fjqG#Ll0d(fsj?{O6XHn(v6zADk$L!(*b|aI9%pS4M_JwypaIi>$i0kY~ z^_(4NCY_xQTy7c#3hyRp4)kmWTIgZQ7dTZ4T+nujQBV*0-RW8oCwh))Ul1>za|SR$ z^;|qKQREy?L6TVKl1wRRAjY{S)RTeDfepoVt|h$fMGG2<d5(4$G(lHac$-S%x$f#Y zH!Ry-cw7sb>A7)I&_d2-O2KP#Zh{oFbe@|i1+Baj3r|Y{)BoIbq%kk&X3(-!w9PcN zpdD{!iWYR>O^ekyw~9A)1h*DiXGu7>S<Q3%p?4MQypb*i-NZQ0A};6-j05%%=lKL+ zPrjPze!el~-tab~g?%LPd~5Zb?}@H7(etsM><7<KV1IZps|5p)8zgc*103}8*!6-T z;y6DR`C;gu2!6P@&QDk4{CsF5kXwX4mce<ZS^>-8JQJlL9bP6#K?eHJaXvO8W5H#k zXB<2`sgDP;bP6)T$G&L-yc5NJ!Q#6nN#cb>^;}5Fjw|+RL6%<VDg{&ILU$>cDi?Z4 z!8EzhQwpY=7kX*I46g=8$-%YW*2OteFbg%adFJq{xgE4%o*@MbC@*wL!6NXBd6w`j zwYwMvUJ5G=vtXqq1#2m<Q%Avi;1-^2zH2MOxd?AVcssZqY832rYr!7y`@ru9f4~x- z@a|l>&{yR`KQ%7&SG_REOu8_HPnc-wh1uZds`CQvxUdYK<!W76VRw`Z>tI~(a9r33 zVXGw<av<h9^};p;b|A3Zl#6Ow7Y$1<)>Gr6N1Yer4fA3nwJtU@lP)rz7kg#91Gm(t za&d_IOylBE@mX?lg!-K3#gXEx=WQFP6Q5h;V!9YUk2o$ey1w{y^(Ba2%%q$o#zjWf z*Fc;XF`T|+6(1)4;w<<ZiFI+dslKN0E`-(`-o?Nc@Opu-!P^qr8c|;>;5u+A@N6)} z$9liW$otwz+{LZ5bbq$H<hc6U>Ls`M+8dYR#MePCC5W%1<5HsdI(b)>oE9He;1U~) zuM3d*>+34!C03cQ8yb6vaj6A3O!_6Z5??QIT}oBs5;DHt;=I(&OuCe&o=fTJ;_CxX z>}#+fm)KN&eWA0d`ufr0{^(vnc>wYY`MQCkmoRj`!SJpE4gt@6@Ub>7WmCueU&5OB zhKqG62Y%MdrCrpS_m}q2wo&ND{QJ_8p?5!WP#y!cfMdn_$VuDBN#aNK)%d6-xbfor zC<R<5xQ^=iXaHrlf{#W)n+S}J&?I=q0khCKS==8@X2hnT3;W=k1}!!U)1hHMK4Q)J zW<py-+h&P=geCON0l$S2oGXrxa;UTA`53{ESbILUh>v#B?#1w6WqnJjGoO84>a0cI zGBGY=QGLtBb=jew%k{I}rHtGPz1&oMtBlLd#kX26w-nzR$K_VyTkF*_R^SG2aw!A2 zju)|rd>b6%+i15pd^ml+Y{TK(O6zt|-lYy7GuwB-RKFPFH%#%HF7Z25{FWMir(67P zbp2T_w^g~^PR+~hft^_~m%FH5?rIsAyF27^FJNz{Uhb>L<^JltJjj&GBTeh_>yE_B zY><~{n@N|wz^&QtvRj7VBbWDyKVC2ISAT+B5%njTS9oP|wx_I4{0-%bCH_Wo#VP*A za)tIZ(JS@D-&C%6yv;+S)Za|>3Rc$NLX0cy7yj48d4;Xf-x4Lv#w$(5@V6H03f9(- zBXgxSw6?%Dz;@!g(q4@#-FYp}%#~j7bcDuC^mmfDD}&T?B_rDtI<EfCdS#0EyXuu` z>hC63W{AIsT$w5Up2n3~qcn8V-)ovXblTtB4otQKQ~uxo-tnRL^~yqC(4QADP5c9Z zELQ(O8nJ>Gu{iyMB=HL7>|-`Z|6p-`>`52@5HUW+uk#NDvIPB@{EwRghx36WL_Usv z&`5E8%+&S2E{Pv^QqRW&8N^YdACHEHf%%xJ>(4-rsp}tu9NyW-EJHu_kEZ~~i}mqT z<eB;(V;4VWx%nr+zZTp?a9h;8%I55!B-T|2xGXWQdZ<qZ#yWk9xUMFlcdE$MX4F~Q zSJ|BX)8TKCE`FB7)l}*;f$e~^#CesC+CLk;J%DrI>yzy+_o{!cUL7d@`FeG*`WML6 zq2gcUxH?Syi@h3QI&btgEzc1@n}vTVkC$1wEJgjxnXxMk^{--vtO37PP5(N(v-&qd zz}xm`L)Z!-hpC*)l-fZL?S#gZ_wRwW7ur5(`@PM|bLHwNm8+xGx|;4tyqc+=tMe?q zx<d8pD#LkojVV_*I~-TH*d6pLo5EE#g{$cKL`}yhhEqRrsqu+houAYP*U+>+X=EmS z(n39-U<f}M034U?j@;5h)la5Np=o?FQwkmO$s8@T%unV@q04LhmM`6O?0_8H?zLM* z>ZFi;rqFFkVf}P1j5nk((Uig@mlQToDNKge&@F{c8cAW(u3Fd(dJE{U#Y<sJ@U7r$ z-Bb!wmPlbL_%=heuq{08DR*#cVMp|K?jnU<Qlt>CsSul9*d3W3=<Z3m*IF&?4S$-U zg?+*I2aiuuI518MS>1($d4_-=3T_zh98P@%&q#2ugQG7CNAslHU9>O*MK~^n;~<U) znW<*s1XBy~n+vBxn+|OTG~&U+S$x=Rw-(|p6fQ`V!iC@#p<^-irSN&-W9Keh4&Mqs zVl|z!2HHAk>!EFcwvh)@SGXBHTcB-)mII9_u8^@S+)fAW0=Jun?*X?rP7C+Jcfgb) zaY>P?6d61wkHalR7I<d^DRQ-zqIwgg$W7hD69;d7c;a~ycoN~oT`g+BlT5iGxJEpU z-CESdkRr@cQFCNkfMdHZ!dw-#g0FQWDN6B3QEG}7wSli4eC^>Q9xLhyPp3>R>I|NN zD(VKlJ2(cas3%V^bTd#zY0wy`qJH2QtfB#`MFR~j8r)ushC*k6ibg;m35@|NVt|T9 zGdM-*5XY#aXsjhg6TNnu$W!@bA(ML1Sp8%flX?Y{dNq@J6O($gBk>bD@KZ~jpVl*z zKE*TqG}Y2iyMgPWu1|Zb`RO3FJ{{(8ema^utLW2dj>JzF0yktBpYG7OPj{>5GpCvK zSp#5OOF!$O#%I0M`Yg>fKSTDjVbDfHo8d_OY%y??!}x3$JbTso*#XnI=2YvNJ3Z+d z@4m*nuXR(s*28dK!;W7Ypss5J9mchhYFrzw&TC^#_q9pXF>lxAQO6WtTds0#1v*x; zlCQ0Yun_{*;@S=vce?c29&r2A`MH?#xy!UZuV?A!2^#l#lIrJ-*ypX)`aH!<`n-dB zJ|6&Wlp3F>!_N%=Jj--^K6$KuJ_Fn=aC5<7wmx5qj2GV3;Mao3?th+x?p%lQ`EGPG z`@V3i>kE&iU$C^lXr#_Bnws)OYn3lj)cPXTVSLe1<G$#k<`?~`4>ps&;3L173g3(j z<BR!}7g1(~e6bptHSnxOW;6J$=-r0?ec<<lKVa#XZ0=vW)cGZ|_)E;mm&s~<+0c>r zWpnUdz;~zIS3O^*!#f!q@A-0up<m92cOkrs#^{%<z%N&V$25Mq8T=OT+3>TMeYp$# zUQ@2Kg04FZy>1zD-DM_Sucw~t%`Lso27JAvI<I$ur#C!()ViL=fLtF$Wr*dtJ~Z21 znIlD$<ofGUlqJ_kY0+f8K3a;V%JmE>n&xd(X=@Qd_jSCxBDR?8Y->eqG1n&m2|J4B zh+Lm0W)WW3_35S-EfniIxT3}4y1q!w>v(EKOTewAS)0{!LwMsYEn2EK;-qMqaU))e zmdlMKDO%yU!P;NxO|7hxA~wkzM50Bjfq3FYYs9?4=2x^XU5nO>-oU3U+9<{iHt3>F z;=F;!QAFny5p~}nRZ^5K){QQ-hN$~SFKFB0?E~B)t{eSSZw!M6zwic|e9<0sk7U{I zmBbtAv~WhY`}lD!+9x*_YtaGY#u6!3xv@-&4abe;Qfzv=A3rU{c)T}=_=@p(Z>$A6 zc_YTL*u|S@MR7feyTOKd<A7+fTdbRgnRJt3x!F8jib=%XY!6R;U?*U_xNde;DNYc% znMOSk*cV7#ezPAsiOX*ep-x<Wb2yN={3gbw7?<Vdc<PO*XPQPaJ$4iKpt!l{&FNwm zw-CooB7ox7+3u=RDNd1_^Q1UcZqAqDHpa~bQruQ<E|%hU-mX>0rMNxXm%!ZtNW!hS zBU)GT7Fu|7BlXVIH_@6dl6Z5wdT!z47k3ro77kP~arrG;Q`}u#x0*sr;VX$<ZgmAm z>~af7q_~$jZ}kTDR=qV4*au$rw_@UzTcfD=1>#H<_k)jFR!mTN3rDJ$nB~?~GwIe` z^sdczS0C5nfqE-fiU;eh?OHrUZtaxfVUAn7q<FYjPq4l3@HVbyh(@SUj2$j!gDg(B zJ2;9n3`cRMLy9MZn8GuaXBsV-ZfWrhLyBinp6!z2IpF6aJdgT9Xp5jNiI?J~=>4<Y z+HcCO11h&g^|s;&-8L=rHk;RNH%N~fx8oorSb95&a<V#aH-^^IG;X&7p9;RM#@%jj zxNrA1lWr3--=3K5K5<J4{BO^e;^lgKt`@J5+l<mG$8APwwbyo>sFPx*+wG-v2-EGh zmua<59JiOHYw-rr+bopgO~AF_H;eQ3dg|GH20`5ItzwWUux=B`6>o=!K(2VF7`I7A z6z>w(?fvi(6n#auw0MsgU%9~V7ySyWReXSYeUX4j+*fP`U%h4;0fiS2GeGL;D<(&P z)YDfCbb!=T0NJltXn}e_rgDI(|5aa80v>otums}JGfa)In6`oX$W4S6FNt4~VEKwk z7f1lNGF=0Syr0};fT{o0CSWr7Y#@7mppm%0+KF6aG47Dg3N(?pJC=IxG%z)QvABbA z2(Se1v=%eK61bB}9Sa{I`E;iPW$Jfg?I&cp(@8YYmO6WWpuITnbOTQ^>Q0&(cUW?P zj^NnS1Dz!CP6qEFX%*;<ZWc;_$$!TS><0e|HSfgQ+g+?XThb-K<iE3>I+Onn{T*QP z-`NXf^4~Rq^wC{RM<7kCyH0eHi@h7`XCj!pn1R3mao%kJ97wwd!He+=3>Mej=4R5} zHtM;XmhFD?xCVyk-Qf}#X51Yqf#Gs@v;;;t?(+JPUe}waCGa|uv7Tmm-OUsuFj~yJ z6Jj~co!Ra`kVP7!cPC3=oN;%m1jftV84}2J+?^?b310mZ>u9%k`5$s5Fj0-bBufHQ zXeWMT06#K-9~r=p4B$rw@FN5B5+tyomj)I>Uu<Y#33M-WWm%>KRyLNvDtK1ILy{q| z4w>~`G(h|iz#|9{KLm&$0y&g(ZMOurrAS~qLOT#5kO&X}1PCMoY;^&)*T8<eiv$id zmJ)GGiJDSEKwUyWT|z)zV)f7xry(Wvz`4PBz{T<4L6*ehiItH3EJ-rVl4MItnt*Jo zMhPxs$!nIDv_!Bq<rD-{p|ye5)~zKSz;^=Q8GIM;SnHB*Jl$zP5AgW%CB2~aMrR+l zqXd7xWFYSu?2r<C_Y$Uj$#BZAXK2YNbfv?e0Y3p_$yjLPc*g|rlfY+z$3m4%0Y4S} zGr-N{nH4W3v%MSskSllRnU1^joqBhP8h5?wyt~4byX#Hs?glIV?pDL|wU|j?$EoM* zmX?0qN%iY4hV$!ghJKx9T3`3eNc?(;nqN;)>+8u@{MV@ddKviT$gD+Xx250Uw|s-& z@{PwdzG<M=H$++A5M_Nsl=Tf!);Hra62Bo4{mn8*;x`-B{AQn8->RkG5}kcZboOn1 zL%(IEe%ly)6Eo@Cmg@Po2auru+f3k0;L41|Z;5^HiCXs@4&xq%^Ip6<?<JY;dri%x zd(85CX_np_4t^x~(WczXRJljH?@hEj$h~QX-ka`l+~Wi8%`=UA^HuLHLV!-WN2lDQ zQ|{3z_cnmr3N9Di4se*edk56IFAn3rQ;qvH_<nuEyx$O9(|UTpl_B?2sHd88zrAVR z@1SzO%NV`i72fXf;sM_uU|RPFT6&+x-KTN)Y25uxa1+ou72FJU-6sIQzZjj%vfXbV zH%jKn{WVfD-?+b4N*2id4N|huaet$fEb<P1`?QoS7P*hHF2S(eCwo=0RE+z%Kn(qT z0_u`wKnzLA3h)^2l9l4RzhBJ<PRgsqdVsMmSuMtcB<gE`<TFdwit_<JK?zyc2jnVC z)>CI^F2QqpfB`Jo1SIQN!iMpnJ8%oL4kP;j-=k!!xE}Q5y*Z)}hEd-JFWyqgc6c!- zCFHeA@Sq-GUP@@!gG}IV+CjisLWc0cRO<VH_>Lv}k(oKlT~iVi_73}W8c*N<AN1<G zn4LY|J~hA5pyiODtC0ljc{J!YBp7E(u)a%z@s<P=+!{;-M+g{92FGLz5&{Mr^EAoS zU{j|A2?2w|>On%lU`zNJ*I<gN!Bl8%!L{Qd%@*v?MS~robv88E#i>Eob&#+xNZ1$b zMH_nC?KRj(HOM{|?2l3c^dK=`a1ad{f<ofHAbUiRxG#vm5qurms1ymNd(&!uCl8i5 z5+5v8<G~hnKFG23!EVY#Sq}~v=0l>ahXf-J@f057DLlkecu4T`uod{$W2}em!F4tC zVIOdP!S#c82)x4#>mfetL+r=HvEVrwdYGl2hl`=FReiV~`bLL5%z>V(=EH5kT`Zc1 zyA9*v9+d7k^^s*b9=V+Qh$QW!1a&@Q|9sTUupYHAlOCn2`G{!YQGd!q)$?dlw)@>% z8qCl~b0j#{cr;If<K)po366I>S|q_tZ-aO1Bsf9z5fe2yQLINR(j}NB#-nv2L2_A- za3O=_vL0<g+fFm-J5xR1H8Rcb*p-7*CGNX+)Jg51Jg&iM`rQx-&d~3MX>g`|H$sB5 z9p8<V;2iIulcyy(SB&p)6od1``feQk&%w-hS=1Mz1*7>LiSFPcaelX$F<C5$->n3< z4croNJ82b5>$?NgN&bG1{}5az&hOcagM_TX72^J$+){9*B!1sSJ>PdkKZjD^vtI{U zR^PKUf-I}=2LQ?Y2G@hbB@b>8>-*P{+lU+n{rlPA2u!}mg$!;6w-jCMbwLu;-?My! z*%J5te)T-|q$fRYtmb2uV{ofjkGp2OPkS|(qmO$_aGUWsO@iCyaeoQ!Fdq-l;7+gp znH93v+x&En1WBv}_n?%0F}RP(w?9#X2Mj4?ODr{9Qc74@%9dDa@i^J~N?nFg>Q<w) zzC%kBK{lYAY-(v^>P-=Bj$jJ}Su&+9p|$chIi2f%Jj7u<&QRm=ICVarV0a!+v-I&o z>Wis+O?gaK@bOx;9<Q@I=wrU}@mAA(oa2zkJ51v-8~Ecr2<$~*zdCDaTx~tms&!|( z|9o6aQ?)ixO4}N>4WzW4);5yT_GWDpDeVCHw3K#~+7?pUNorq{(#}S0ODXLlwJB2C z)!X*Z|3gZNJ8E&~N;wa#CHYy}LtM3_a!PxOyS67E)=RW@kZ38xS35+^(!S!T9SYw- zwMucTYH^TCv1+wgw9=8l(dk;s8Aok8b<Xx`#{fCotHsKdW}ugPElJ(du|O<b={T`! zr)9hU(`%HDm)bc}I?<?|E2Wd9c7c{=nY9b0bc#3OKXV+VQ_;r6D<#G#WdheOM|vJ` z6>vUpz^N}?z#A5#nM3$eCU9*wn(3k?TDwz9y+-YBqjZ_n?vv7$TDxCMS9!PpCtb8g z<cT1Sh9{WUQWo43rgiChF`t<90pY<D-11Va{S!A3YySjSvlMGznhkG5TE*0R(g<Eo zr=PTdwnIEmaHC6isy@NRFU7(?=>o*UKj}&zVd0<jroIoIX+SLe6Egdyghgev<q11R z8EtvO(kL^K8DVOfi44oOjLR8M=)W>2GMPXZGWFo4Kg(#}lW9N?GGr6VIJtf@mwG%h z^TjAj5XX~6)Egj^4DT|^>~v4)%`#5zo^Y+9tT8h5K^dnLPjJc0n(>~^z~;!bfJO*Z z_8Po9;bm8RvL6~Jcy+Y9ELEI!Ca?{>oMhB_D04<#7Y{F|;B~yKj8lxd#=uVS;+B_n zhL^sn!;qDA1*QVKA=4&Z%eo^&|CJF2)WK6m7*NMfTh<#H=44%8%Jg4dKOp5g`mn5@ zm~~vOd5<%u{#rLg$_5&B!=!AGqi&>>4VJnLDI4O|zhVaVc@y8ukun_2vSI2hV-G6J z;2Fa+)+J@*faBw|EYpy(iKbCD$)RP0y=BwXEW?K{o9&H%FIVc=L+ZxH8Fk~-sGFe9 zx-3KMW~!@hwxxBP$=5A4&AR0dsax$Z>R9P@>$BZ|rEPPxZiAG~le$et*?g(nEM<!v zbz7utu{ZIrG-?T7vrWvhrQ)dL;z-#FdIG~&#&wFieZbY?d>ZR<G?uLuc}m`-Y@Jw7 z>!JO)mTlCh2~xIMo+e4z7J1r0%CenLlcj8{*YnrY=F{d#64E|x#b@M-@w6RvJd~%H z(X#F0dfG)jPdW7X>n$zYp-<_(UB=T9Qnp*3j*_xHj;EugY_GS?U+bidwmcn&6tmzd zmsH9Qh~sHyx`tHrDcOgRiB@K2$U%E&0I{VZC%p41v#Or5*@U=f@pPdnAve6t$PmHq z)0MzDWLTXcLXS{9`ZkM(65!2-H%Sto?oiJ&SGN0a$2HVIpCwDEq4BJdgc`}SrV?uG zc-BlpO}yT}ot98jk!P*Y#C&_!T8t2<($AQ0p_ZnGT8Z_nE#(w(J!3A0n19b$o1r#9 z=2)mL^fcbsP7<FDQsWt48RA6l*~D}SF_)jQ-a?&#Gl8AO`Hbvch!`itTz<BgG9mFZ zMl(cc`)n!i>mm9Ks}<@canIJM`7D<*cP^f>o<e<~(UT!^IX?*P>?e*NSWh9s*bw&i z2iAFLFpzZ~8Y0#Yc&(wKlK2Du&kwXa!~xt7q~$}y!F5&754cw$&Ypk3?uK4RCnFW& z?D>ZYK+-y)bachqpCPUvrt>{x;E9dQSRi&HG!EXS!13r>jjl{|ZKXaDdaT`?IsdQ& zn1wDz`-fQDvF|?|08SO_If2x3r+S_@&36BTQJSXD+e&DLK5ws~nex1&gl0RQcaqQ? zulpa25|-*Yt2;CgNH2wOOrG}yV$+}Zwh6oUXUDzo)zD&n-bX@9<#}HTdF6RO2`$s- z{Ux;Ad_GV@E4=zo7WV<~@b_~hg!2+2cn+;KB($EM+2E4UMq0ZG{ARa=wt~xPAfenY z8Y2B1BEkvngopb?Aw12{o=getZ!Dn$ZV5{x32Rpk8-|1(ri3k*gh|?jvB2SaJZ>J3 zOT%$a3CGu$aDqp|iO3{PkT9NhIGLv*GI-kI#_c5B#I0f6hA?hJ7`Gve+YoL^nZuTF z>qZ(*=_27aOC;PjMZ)b8CEOlb2Y5Pm(Qqf^NK1#iB8SHv?rv(hheN`>yyM@`mFGiE z>-jKCpO04Kd4@WlW6PdT1~<iFJfEd;&*!T7oa2S(YZ#zS3=rA&ABiA;tgp@=Il%j| ziD~`VG$ZlHR%-s(L#-eCI1+yx2pt#Z#|dWAkJHri<1%D6g4+y^Zv2rh`*AnV9%S}f z)=#3Yp9m0t!Z-e@fg|y!W|TWq?v`QvM1JTej^KY9WV(MEX(s)|S=&$Z)%pns{HGPr zRzX{98b6V(|0xGqj#hql8`jVD&7_}`)$?;ZN8-=iq5OG7M&i#L-~2q!k?`{hLx09$ z|9P8QKW~R`uX<j@Tl#|czG$J&7p+X=MSH`1(J9;gPp^i1>x*s@PLmfsB-~eC^ptQv z=Zjtv?(a?fXO4vNP+xGPFFa5jFF3Of4;6jEwj3TV#)}ca5#oG-+Y=^Y3BL|6*OS7d z#Cnm5_Tv)HFkVcN@ECb9UBYAK#S96LbH11<;qhMMe~ywv!U^gj_1gXZ`JRL`8Beko zVX_xtvKL{p7hxRn@YGBVlUEJn^MuK(hUb9iqF#6&&wS<x*Mq_flO()|d4{tdUeZ9q zOPNz%WR_E3fy_#HSMjXoS%b`4@auTi$4hv_S_yNLC`?v5ycu3Rns7GHR-PPqbD4A7 z5;eRXeIyLSyWnAf!+Uu4^6Z0WKlA&5N6N*Na(zw8NhOt=JPwzXW9!RVALXo%@_Lz4 z?go#=D(675yuKyn@op_oFr+*QTmx{)@DYiYvp&ijchPbVBg>l^MtO6mloQpJx8flY zS)PI~UY-iEErRV3Bn&NQVU%~|>4Z{FA<Mf$;}o)-Q^;}-@5+0E@6$-i`y$&9`T#@A z2SOhVosh76Xr`8r08bQBJ_<bMu{@mzx3zqXTgo{%D`ypzkB3GcrF;T16TweT(ef$C zO@lTa+6-tjd1mpD*(;v|jVPvkKC}gV^g?77HJ0+lbO>3#@}*6s+>4H7@U4JvB{&AG zoB=Cmb1z>DKLb{d@haaCFXbDlZ$h3^<8n@o%UOBlImqO~OPE@|oo5HS8L;wQJiDRo zN!0Sa@RE5iKj4xGX@m%IM8xQ#5z~+e$@hp8JOdTMkVP<L5f7aliGzsm7D;eQBncz| zPbAr`k;dRT_=_|{s5$r+;9qk~q;+G7q<HNi|2%EJSfJL6C1%o#l`O;UmcCRqUYhEB z$+^eNc++~BFh*ZC0@nl_7Vstc!k2B-dfC=tyzH!TFFCD!IS?Ar)5}rRGt_)J75Yqc z&4;!S+7jgGte307uYnJ%{xVx#FNxV-?p5m-_Mczae|~A2Vf@lojbA#b^Ow%1{L)M1 zm)_9(I1+vtXn1}ZYw0i3pwECl8~P&X<eq*Z_wWll$S>Q#?{pZy9MHI54fXt*;4psW z5c1cS>ijjulwX;6zjjjV*UlNnuRX!{0pHIse;o>Lq@}-(0f*`QbppK8;GGVBhMDy1 zJanytzD@Pl9j5gw1NJL1z$=n^uas!;6&b--B-maNQ@>(qyy7C?tHzeTdJTLl@Fdw@ zbuz72ovnmdJ=J_Q9Qr6T>D4&(yqXK&a@AKW4d<)X@NqQ$YV#O<#nJdH?uEP}Eo{HR zB?9{mLoNFa(_z?e5Z&5uunE|2unX94unpL6G<77}Z?sa6{YDQ<?Kkj&>^FwQSa6u_ zH&`F`8)IS$=tTRCNipi=7<HOq+HcH_5f;W2EK{mmW7X{$Q1`0Kw#i}Gb{tfjT!C$O zM1kE01$JK)*j#e6?cu1mM<8a8q<uCWY1`vtvJ=r~&xjG`#1wE=YTFxQRStJ;o6}v} z=6Kh(3GVHKMDq4Q2h@XBhG8F!gL;r{$v)V?@Yn~NA#t!>49EPi4|X;wan^4iOf!@0 zgCt$;gPAdwnK72xF%}lIeQ;?^sW-;AjG?j*u8EP?8PqYV_CXHL?Sr{7Is6FwASo;R z-~kASoDdGVX!N0Y8hwadm3^oUZ#u;FDErW$Z1=xzX(UzcL+KJ}YuJazNTeNN<0aDG zVIRtrNC)q_f7M9@XWc$TYADi4&@d%kBV7flSt1eQdHWEKXoL&C_8~mF2-&zuub6<B z3hu3a2v0lGCnm{O5#bQgK13W5=__&ep$#<n&`xTcCEABbkwiFGu@4(y20%Z|X_0-H zbXSCXkoI8$-3S*U?Zd4p3_;>Bu5*N_D#CtgAMQ+Lc&tDG7a1X@eHhO;GBSoC?H|D{ zwGY#>$f%fRE@Rq<M}QtJiS}W3cKh(Wbct|L%s#vVri>WVYUQmt)NpI<!`mouXVN~r z9WgFV+K1Wr?IZPR9<I85q$%_X$R8o-iEwY;J`!v2B$`Lk%RWNr6Tx-0kF=-2eM$RB z2lPxu&k-z;eS~yJgzJ;`kyxvy$IxS9>Sv*TMoc~Kab#9ZeXKuc#~2A+B5c(W(iHX) zBIpQ-Hv7nCK7$b4J`!s$SMTj3u?}7s6CkdO#OCkOSO@c~5&Nh!+x?+eBTLjiT3;ew zK!Qe=iG4IlA}bvB(FPJ(>D9A15{5V7!yJiV1S6~CB*HC+2wQw)9fo;5xDD|d*@&^; z3~mcJw)Y6zdjvlzlIyMiVJ<qGu$+!IWpy1*;e(I1WuhMKV7l$2-I=^c2gGoLVz{A9 z-lJ@b_R(~v?9q&D_gSwI*+zYWM0Ub8Q6jsjO_s=R+Biibd%P>o(zv~J?@=y4L`Zko zN12~dq34dyH8o0@Xdh*MMu`*cqYEhzDB4Gfm!fzNQ6feAC?Rju73&oukf=uz?4uhQ zfunm_GRIt$jx_^cA4SI)%V+|Mj&-1rh@xXmz9<`4v;m5aal<{DjG|+`(=|$(!#;+S z7bVYOA0xPmlIXCHG2Bshv}lW%z-TJ3#R|kp(UvjE3{#@5Vgf`^Q6fqE7?UWP5|bp# zjk1SD+r$*l5seZ!+Q+aIQ4U7!W3f--WYj*!P(@=)_t+*donn~Hw7+vqicl)bsi=Ky z7lm#yDY`C-2NUgqK%PmZXRP3$&<pK(Y~0b_%*nhsrcWMCjmB1V9`}Ciybg3t-hgz8 z#@2Qou4**4w(~fJwezMT*Dr=%06Mm|^A=O!rhv^4rX)Hr_7bc?bWjYlF57+H*63ih z`N2_iC?Hp(!{FF1(Gd<iZ-+!jdi5fc(e$=DUn<epQ89{Vv|FO-jU}4VMWSPPBQ8{w z%XQK5z|4sfWjBm+fE}F#E(?g?8=ZnotaZ3kQQWC0?o<?aDmts1MrRumoeO>*`1#-# z@GRt6<V`(aMtkr{?L5xX?7aP0*L(+klFx=|=X3Sl&gbsCo!^UT&JT3>H=HS*|GJ@e z{y64;ekS`uJ}!WrKQl&{6C*4}Up{xD?0j!bj9XE5{<;`7X5aI3V`AH4n)ji(fC~$D z0X~6U@ER-ytzjv^C$$SYqM(47<Dyrii{a@Z(WP+plBn0T`DI0P8OQ+=UG8mmF-M|U zIXm{7iYR8pj{T@2%JGz4KqMbs%^WEp)`+fU#0p}Qa~*SpA52J;wI0RP*!&X0h;EDt z#5!~fQ=?!8-B7R`9xnCR1*>UrL2UgLaJ&BEEsbtfo6G*uT*LOoNtD&hHUH>#hwV$0 z=nikki**vkP}yAUmnhTH_BEzJ9@F+UVHJ_cw7JhO(b&@Vu>nL$W!gSAfGB=Ug~S9{ zgB2PpumMz%&9r@8O|2lEX>$i(D#&NrT)LME5}J1GrhNr&Xhpr40N0EvxB+4N@H8s8 z?PL2`h!rF=ZEnd+MFO+ahc8}{C~n(F9{JL7tw=)c0;x!bXOUDiG;QBfsb~apg;X^5 zrd>KM6-{EgSD}Ed!RBJRR5XjJTtk6-54LYT%_Gxk`!<4U86%PZtY{T`+g7$7-)?Gr zs_kQSR`827+qVyiR3!W?(TcV#Grt9+AFET*4o2>ZO9eS2+utZ%D>}p&u`d;5jch-i zSHaaF+n>UR&_g!YyQP9H()PzXj!dZS@51NDwsb%HWJQlyA=Y0#V^aN*itX!uw%7`O zsb>2}WV=7IwW1F%87mciVID6P{Y;zN(iQzdPLYZM-q|08q=Kwc#UQs-3`YGBo}n(O z7-mVuaJN<v3RMsaRg8+4iqX`$e_6pAt{^d5F%G%$Jh85ykf{|Dp)uVmCPSM7oC<y# zGSk7&RI_51Q!3_xW6f5uW-G|`RV?B?i-CCX6-$xB>{KkHyd1d|$gQHh8ayFT#abQ? ziz?O^?8;i1Jk#zwG3#Kx<ivxs`*k_gJk5P5-Etqway30Pr(XP_&B^XV`<&^AU6Zm7 zPfV60%@fTdEmV%QR@adf%{tO4E$hg(<Yh<Ghi4t@nCv>1TQBw4-o(_rRtHCBRcuHe z@tYwcm5s#l8|M0NIsN+0er@vGgtV;Rc1RxnTYQe+IHc+C`e@_dWv0db4x9eF`SSYj z)+ew1HxgI>HbRWwH}M)bzmfOi4~qQPLT|T^O6hW3e%l}ORsAzDB-|k9ANL?_|5AKp zKf#ObUyu3lXU7OR*cJbF7OkIakanQ~A$G^wF675Nc40hrrH}yGF6456UD#v{RF0bL z!qzcr8_ZT==NPqXjM^<G+b34->!8{%COafn9U7Au#uP1#dDUEl<{xPyyKo%7Z{g&a zEQeHf;hY$OE2(xNV`g)knSZ2>?824VZtf}lzPbF{x<<cm!T%<|?<K$88~6LMQrRx) z_tUdmd{r{~_sgZKiBt~L%8pXiR4Y4MRn4TbtGwOWsA?@$ZKblCS=CM|yGvCksqCRu zU8S<8RCPBhdr4I<qcTmZ`buSgtr{RzgR|S-=_8c`v}%Y^Inb;cCROQDIYg>5%*vrs zHQrM>QmRvo$_ZNCMyfkVWtOA5qf~d7%E?;Y!>aCWR1cKODOx?;sGO?Rqoi_%RHsWd z?VTyrGtKJRTD?H3ml~C`yzV<CQaM-5YJM|&0?So74`|Br%K2#-$47`9=W=G1neDz? zQokxr{?BK<-Pyr6Rd&<Z2Q8ga)xq21>po4YaP}(4NyF;;z)6x?otiwDcguhDmZsHv zwE2mKX;~+FByT*iCoSv0txfLx@9eyPNRd|m&i%80A0o})bf=kbw$t%%c1mve<`$7R z=Sa^#u=~HcO<Mh-ue$#*EiLO03%vUE9XZv^YuxKEe_w2mkbex!j=Nt{|E(_aA5-P6 z0rJ+425$|N_qug|D^uRuYQ42x{<yL6TYJ3;5Bg;NF*#ZPh!b0rEzSP8OyrL<WyBx% zh`cpMlKx{zTGoF|OkVz{=34Jh`}#WH#vl7rPsw;Y-m4Fv$zQx)ebh((HX*y|qmq_y zPnWm1>f4*OD${y9TdF3?+dH%>%lY<BshU#n?E_LZLu%?t)l8{zOVuo+#v@g8+SbHt z)qG*_YI;l6!t8F}^^vM2TEl;@*7TLCWsaKuQngZQh8R_=rG}wiXVeVSs`W<ANU7TF ztQjqpuS-p)R%L6=1gRY5teGTLxkk+lsoJJBv!!ag*36a4(ONTKs&+`tLaExRHH)Nb zw^Z$tsy$M(M5^{m%~Gw}FQ<BGjW@gJcO_D-QnOsD4f;cCR!FremCU!XQnN~`El162 zsdkw)8>G6P)@+e#w^YYT&DPjhSI28jj#MYa*KCvOM0v-Q_g9<mIHbCPR5vu<sVCKq z<()XGZX)m0*XpMFPP|mN@Vt{K)h*3;T1a&(d8f5hw@!Q~Mc(e<e5aS!{JzhacLs=7 zb6EP$-t0!-m&m(@RA(}A9q*b_JyG7R$C8qFX~ZOb*CW+g*1PqkdaC(uvQ$rN{caPf zp3&vq{_@}ZIp1C4wI26Ld6&)ao%Pc8B;#4_m3k+;WT!qZahyz($~k&+pj0n6PY#yq zm2z^pRIf5lj*#j#dUBLhualFknGLLtgp(Osy-7~8inbUhSwh)TonxGwqt&_Q$@x;f zLr*R?s&_Ke9VeGc^_~tVS7x`V?c+EVCnub8qMn{gk`o^DRI=2J&=d8ga)F*|A}1Q? zsb+Gbp`2<VCmK6Wy{0Fc8K+X^1l5*$s-0FYbf4-VCt5ohsS~MsYJi+*tEUFZiS~MG zh@R+Ro#F?zwI!}oqxD25IW<8}bTv;+G*0x$JT*n$TAg^hxmTZ_l*%Pu<7t-sY58P% zJI>qSNuR-|*?LbcmgLjRlQ*8;o|g6J70Da_GcE14zocsKzYI(E{AHsy{L4<A^j`fm z>%DpK&Xh6lVgLW!GI`@)JEUd(tzmZD4<(MjdFA*(`P(XaZ+Yv#t(N0W6aMa$<6Yf< zZ!E`iyZ$}JYyOxfzgd+oza3_emfx-R>hqwyxzt<#d7r_5C#LvEBT4>;BU%2@RM-Eb jS(?1xN=Lu%P}lq8k~h9TCC&9;!!_f-#w2h2@1Fk!^~r-0 diff --git a/public/pdfjs/web/cmaps/KSC-Johab-V.bcmap b/public/pdfjs/web/cmaps/KSC-Johab-V.bcmap deleted file mode 100644 index 367ceb226ab1e33624b30512716a3b65feb5a100..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?H%l_>y@98n565GC~(t=abE=^ z!@ep8hJy@DO#7;V>^c_ief7Ew`?(uU8TRwAG4AJOV%X2m$gp34n{~gSG{b&zAX@^6 KC3TtiO923;%QA`p diff --git a/public/pdfjs/web/cmaps/KSC-V.bcmap b/public/pdfjs/web/cmaps/KSC-V.bcmap deleted file mode 100644 index 6ae2f0b6b7238adc67bd9231668d9853ea3c8e1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>K*K?>yap+sKmIhf{|fg6$8UT z1}3I`)j)O~3-`WyU55SK&87_ddDs~D^D;5)=VxTtFTl;ZUr?H1zc`RB0mPEh%=@JP DC895z diff --git a/public/pdfjs/web/cmaps/KSCms-UHC-H.bcmap b/public/pdfjs/web/cmaps/KSCms-UHC-H.bcmap deleted file mode 100644 index a8d4240e6adb3ac1db859085b769a0715be03c72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2787 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 L-Sd^C7t;R^VSazv diff --git a/public/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap b/public/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap deleted file mode 100644 index 8b4ae18fd3efdbe020e4e1407d2f65125085a71a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2789 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 P^z)@`@$;3W7gGNZsUm@q diff --git a/public/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap b/public/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap deleted file mode 100644 index b655dbcfb123ed06c7eeb87dfc96ecf6759363dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=N;^vTdW)E;jHTsuIrH~uy7IM zz6wT$eN_w$2N{@{_EiJfbu8Tb>UA0Rb2pnZ?B`))+|SFzu%DliVZQ)3>wZCLhW+9| NwgeDMN;B`50suw^GhF}x diff --git a/public/pdfjs/web/cmaps/KSCms-UHC-V.bcmap b/public/pdfjs/web/cmaps/KSCms-UHC-V.bcmap deleted file mode 100644 index 21f97f65b4a61adfa13f55d5a096ceab45eb485b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?H%l#TdW)E;jHVCD6nu5<Gu<; zhJ95G3<nvQnD$iz*>x=3`|5QW_H#FzGVJGJW8BZn#IT>Akzv08H|u^uX@>pcK(+)B KOG-2EmjVE*uriJS diff --git a/public/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap b/public/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap deleted file mode 100644 index e06f361eb6d429290806b9f9cd7a0aebce22be4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2024 zcmW-i*<Tdd6~}+4s=J|qhEaBurY(Xj%A!ONY*88+Wk*0!l%>H27iO?oT*=I*WEh>y zWZwfw)x9+eYFE?kL<YnOiVL4lUa~yoB@cN>GTF?ZkWX&sp}x1yUFzOj=XcJL{@hkG za{2n`g`xA~u00hMC53xSN-A8{=SKQ{uJ-F=<G%OCTy^gcjEr6$8TF3)&K1Q}4-dQk zKYz?M>KpToUWs(J`+TmV;>Nm~+UE9J5L641UahVi1pSv>ge>ZlTs<U7ecr>m4xiL@ zUR92$HR^%xThXer_tqfgPo=AheX7Q4pK6Lqo$8EEof=W|YCeim-OV30sC(q;48pXN zqNcN`X*yR`x~C^prS0Q(weZC4ooa#W_GE(VPUh|6?mJat@RRKk+z|NoDS=PR1U^fO zU{v5ctpeXI68K(R1Q!Lqe@x&9I|Y7diJ)KLM~4M|?2KSi;3r)IKix0zvy=$N1%BQp z@QV_GU&c=f4691fOg*3_!7_6lnC(Hr%m<V*8!x8J=BP^HoD9rZkUF=AlIQAFC3dbC znCn98+$B{xeb)`#t%5Y4;-%kwjb(>7Pp@|W`a?N=-A$JDlSJ!h)XdoRZZ$n^{es8+ zT#}v752-uc&wFI&i*4fNMWr0`;%c*HL&}ghqK>#XVrBcrG0C>kCRsO5OSI8jo4(=o zxHoRf&X@aJ<6m}q+%E@Z=c{aWN9ik%+US0DMRvX}?TC5Z=5fF7mYr`hI^{PNkTyqa z+;0xbDQ|8R#BXldVcB%myEk*P6E^$T%kk{2-~L-2^Xa&IF=;+SFlD|Nvy-v&??TIV z&A0h8ey8u99|KE)<|b_?SSo3GR+a{>0D(M-Il&ZYyJVIPZ8umhv_fJ9(2BrzOIk5l zv83$<D}}a?SQ%J_Klk@Kv@&9ql2$G=H&_j{O0Xlcb^z>HjCKe-OVa9z?*Pw%)@0#3 z!FNMzCSGXeB@!=()<XQCq_q;ShSm;V11`?n0p20=lf=(}_sQA`nNN~I&`y&fTeU84 z)gSb3txsrJuLATQBr)MsEf2)fR7GYP5Ep_)+(_I<bY_dT4=qf%KZQ*Q<0uk&oM;<S z!d<G8&yNESOOVQMQo4~SlwuSLd>$LY1y#wucNAF2Lgu|oz`aVO-?xix?q}1f`yvwL z1pxOuQM6zY?F2FxO3A)(TvfUj&WO*p0*hthxvDB#7Rzb(Vx2HXVO_ieJa`Yui$dBh z54HlPA8`+a>|-B{h>;FdJ-8`m*5aLqmEs%^8&swJQ9eaK`j(n)3)p~1Md%1Py!6Mv zAe`p4{^@h9_S|a5)AFe*EbqEgjVE4p7gp;1sejeu0{sY#QecEwoi*SGYe3*Cu_jyK z8dyto;6t!>n9*PzFzsL`Br^uAQ!yRHx*+^$mVll0m;Fr#>m_p!n3v2_uzriV56lO% zQes0eh1V}irkmI$$vgx$VlzF^4#TV?<|nfrTD8q=1RIykcCZODPl8<`^At1>nO$I4 zVV(uMMrJqI4Y2EAH(~aIO~ULW_5s4hWO~5~<^Z@Pei51Hz-4GccJIO*1h-nuA%FJQ zI(U?94ueONc^TXe9t(3c;&$#Ja|}G*VNQT2ASh#PNDf-Sw}2-~!D#Sg1Y^Nd5R4<9 zN<jyBMocgPe7hXX0MA6w3GPe?W+9Mc3l{qwf7fe+WyFu#f|KBNLb{eE8N2~Y(Gd+U ziM<<XDF(dBZ~upGU5W#5m6x`HA9pULfVbx_?Za2!v@P}e<Nm2<Ee#@gNeS7&y^c^m zv`z|@gAd4|3UD7n2f+vZY5&rtP!;%j3RQz&L`a0pFtk(gp(DiKM@R(GWho>g$PYdy zg*u6k%b_mts}$;y_%)$(OQ;Y0W=_cG&-u4*3CF^)!HA~tJ1}D8@K%^rWW+%`L*Wz{ zTPU0cBN5>Y7|E9KHZszrunUGTw^KNqw6peb4h*MFc*k&2xD19u;r%eaLE%a=avWhd z8Mz48!zhr$4PN_OT`~$kb3p6;*aN*>t%07J0KFgv`uKD+W(I38>z?vpZpdqS`yVV0 zebS6a18xLjKb^q+K5y<@qb}S+36Dj=s(73agnOVo9uOh&g)M?}0>AR8%C;viI`G6z z@{?<-lJI1b8ka?}u`Zt$D>_iSEVBL=+mZ04NDAFw?i00aC6TZ)2rLgEYGp{Iij@(H zU$v2aHJJ)lv&3$zqOd$oLgG^kIi8A4)BRM`E39RbXU#&XYez-TTCb`^Jv&Gp&uWGB LRYsqvzytpSc&T|h diff --git a/public/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap b/public/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap deleted file mode 100644 index f3c9113fcf0b02e1deea8246bfd27408becc8401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?H%k~kgV$(>a6RLD6nu5<Gu<; zhJ95G3<nvQnD$iz*>x=3`|5QW_H#FzGVJGJW8BZn#IT>Akzv08H|u^uX@>pcK(+)B KOG-2EmjVE${4#z3 diff --git a/public/pdfjs/web/cmaps/Katakana.bcmap b/public/pdfjs/web/cmaps/Katakana.bcmap deleted file mode 100644 index 524303c4f0c20e6cd19aa1d35805e98c2c05cb7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100 zcmZR25agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe y$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC8-WN55UU{bJea$}HdW(NS2fFFMV diff --git a/public/pdfjs/web/cmaps/LICENSE b/public/pdfjs/web/cmaps/LICENSE deleted file mode 100644 index b1ad168a..00000000 --- a/public/pdfjs/web/cmaps/LICENSE +++ /dev/null @@ -1,36 +0,0 @@ -%%Copyright: ----------------------------------------------------------- -%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated. -%%Copyright: All rights reserved. -%%Copyright: -%%Copyright: Redistribution and use in source and binary forms, with or -%%Copyright: without modification, are permitted provided that the -%%Copyright: following conditions are met: -%%Copyright: -%%Copyright: Redistributions of source code must retain the above -%%Copyright: copyright notice, this list of conditions and the following -%%Copyright: disclaimer. -%%Copyright: -%%Copyright: Redistributions in binary form must reproduce the above -%%Copyright: copyright notice, this list of conditions and the following -%%Copyright: disclaimer in the documentation and/or other materials -%%Copyright: provided with the distribution. -%%Copyright: -%%Copyright: Neither the name of Adobe Systems Incorporated nor the names -%%Copyright: of its contributors may be used to endorse or promote -%%Copyright: products derived from this software without specific prior -%%Copyright: written permission. -%%Copyright: -%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -%%Copyright: ----------------------------------------------------------- diff --git a/public/pdfjs/web/cmaps/NWP-H.bcmap b/public/pdfjs/web/cmaps/NWP-H.bcmap deleted file mode 100644 index afc5e4b05ee6f4be4f17eb616742b59aee4c5ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2765 zcmXw430D)z7XB)orqc;Y0FgzuR6rIL2*@I$D1r(oAP6HaER9A*L2N+4W%RVtL{?D* z!tUre@)*$(aHFgL%lj#>eDAzE=bo>t>ej9A-tYD)%fIW(y6@ia>9}#T&y!PB<jc(U z`HDQH*Sg#Np7Zy6`}|$Kp2|B{yL;|-_b7e-YgzWv&Q8yN{d+w<{$77i|F6aKe!nLx z`)p;|$(r*g387TmX;y3*v_!iJJPSd>({#;S^7J$kpGlhc+_O~RX&M~Q29({Do*ueS zBJ~rR*QsA{NV?w^qIWr5dY>c>3swv}v>bUjREiyr3W*)|X{q(YRa$0aAVJ#~9q6@1 zKX+&qp6AJK&-3!J$Iu@D`h8%SNEn79(GKhs%p5+mQ>f)67y^khsO&Zl2_Z%WAx5oA zvnX^6bc$gSdIj_|(5s;*5#0;D26`Tb9zoB?(C^TrISn%O1bQ*_BIrk;6X>;^7xYx< zr=h1ow?Vf<|3wsfI`lZ`8PH|Ll1(x65Jb<a3(rm&dJv+wXvr2ndMuX8p$kJ1{8J&> z`6Q59=gKY&Wc=Fu->_ONsyq9n7&wJM4FYutG$3%n8n}c&8v^ZO;2HwA5$GnmKmwfz z+#&(BE-c$0xT}T#KL$r0MiH~`k-%AyKrOd=ZjIcURHu*PxgSQI`}qz0^oBeigi)U} z0vP9ok%KTAq>)1~8p%kh>dc|Gkun&+$s^S;E?7pIU^J1DE5x`cjI_bHoHoJ(U5OZV zsg7J4GD=}I<7Xv|mb}sZFj`|q6&P(~^dSrdqmR|_gA}7rV6-QW5o{{r7{!OAJ!9!G zu3E>+VO$FttAgPtWA*ryV;O6Naa|a@sM_<WXRH~<4XpRr#yQcO!nhsVp73!ujE<Ob zuOjACdAykK+`_K$Qyg#O==fzdyntdN7Di{tL>!E+Jrl{;$(1IK!MGDYQ30b{oVX6- zt~k*JL&ZcNj2=w%t5Jp2GBE(7H++IK?+cxD!MG<)#>42hOzwp-KqfO_3|c1-;D=M1 z%!P5^F<A`bLC7Qz`cRlW2jh_<9-<MGjhxHxa7=b^e2gQL{i?f&$}f1CpV(iNfI)sy z1x8|CG-9LK{h}MpB2EEJ5T+zBt92?=kq*<Gsc^m~B4VnXV+b5mO&lf2Q+`!0rs5Po zXCqVnU^1regV`NZ55XMeFKw#*2#tDK4HoKp=?8OSGb8jR_j6faSqXC|y>h7XQ7XUM z4;C)JDgcYfdsRx<F5%T6VY}_G9;?n0Doo2@(V^2Wuo(MvJXmbxbUN4`+ceK0PMEF$ zi;tbIR^?;VHhlvuA#+*<OB7#wz>=ibX<(kn*FM#8oZ|IKFq-)KG?>@>n!6^;GY-O1 z#F=QqQiYi$)m2KxnPjkZY~OLua9SDRGe^Mok(pYs{jQmMumiT4cCgIInNHPxg2v4f zuq@YXB3QO_HVe!r&K?EJvCo!+<yvRY5q40Vy#SVv*%sAZM#b4yuma3pC#;anb`VzN zob3WD&Y67#c0`!V20JRw<$;xuxnk8>PUGfyykqj*C9va|<5esrbDa7K%-sSjv(I(n zUA}j2P>nlD5sU*X7lH|3C&i!_>{LiF1MIXE%mJ&Af``E>Nw5s8${IXH*cl;Mjg3}E zkY`nG3$|kIoDl55dVvtU16Csjd)4q$G(N~Bt+mWYgPjYTk0Y$kI-f<@d0{>utWlUh zOxSN^{y12ZeZCA|yQKMA)p?pq^E~N`uK6~wOY!q}!7jTNxPn)(#no)KEO2pJ!WL3g zX9cw^@JOw;g(9#vEO2^?cYzDl9=gy0b~Suq0PLD=(XNJ7QY`Kw%x_<e0=t2=Vk~m4 zZj!~lU>))zZ;D%?iwD7Olf_c7&I60(s$50sB5#K-+fpRh9mf(EsyktcD|^?vRHZu4 zP%Lq2RdJ~ftjDv|1lF6d^Z+{tt;?}sebRCg-eg;s(^dCbx_>zn?4Es@OVMv#z794( zmOH@)cQ1Eiljm?BD-zfPtnd^cs*Y+Jw&DPL6u-g+`Q5To4EET%atu3p&J~{DlgO0@ z#a=@*Rys)LYNW-oTCOF#Rx60G+C<1|Gl^Yo)2j1U`6IKOhO{?6h13?{(|{t@oPmif zViIjHOu-G)D!~+0xsJxYX@VJIdvgz_WO?%hrVW1xFlFB#qC)Cv^B)DO<2-e}jf82p zy-k7Xh<uv`Gc@#VIZUVHZ9Pm^#M@SdTpYw$niAPSy>EL+;=3qdZUC|G3N&xryK^Mv zT^HH&=Pu2QKeI^9pFZMv56#>BK2-Bs-rph@-{0X6@Lv_g{=vpAl87HXnm77GDv9`T zjQBpBSL_Y^KDRaqGmNJYu9d)ysD-)fSq{v|r^PULJ77j>XJJO~f*GSaFVo~TE6iA7 zEd%DB(6uZqdc)U_z>LFMErK`2wK|yb@>-K(X(>Xms~BTX6!#U{yw=W%{p&ctem#-w zUN0oc>ovr--m7`*)*li3-?f_8`u8PL_;(xG{V|qEAAOov{&<K8AImIfKUOMI%Q=_{ zPrWb`wOp7<hhTc5u#>Ol!K7AVdR4id${SHIQ;IhzUfjV(3xajRMjOn%t_{B;U8U(8 zeSnz?+owd1X&lpmu?8f4%2nlSH2M=Sd%EM(ZLD62|HNyOVf)PE?Q?(jC^3E-{n^J) z?FT+ray$U}^BInrDE$1J=1uv>#V1)P{3lQIp7^JePqHC=`E|kv=}SJx95}v|Xx@k~ zReX{Q@k<NGgDCvs=a>h1Gf|a0C^pma@}7NjA6CTB%>tPD@tfrs^CWM!tMV;s*$Tlz zBH6OTEQs84!YuS{CBr=A+G<qg+ca$J8qA`Mt$vKVq-_fGuxooC%wlQ#utGYkF|$u` zb<+LYC&-@dZX$nmaEsEs2flhp{MQ<SubssGl{by_^)ZR~CXtwLaU}IyzUD3ac7?=z zr;6O!0rLpI{it>kW=R6fV+7`L?J&$z-XSMqVU|7Rw93`cyEObeUp^W3y&C2z`}bCu zr>);_!>ow=u40mRSf%ZUTOlfK{t=_vd#K|_Kg=rUPyVBvasQ0K^8uJ=Q+}pkG(-Mb XrHH*W`)32MRW<hQh#YHxot*ywvCtb! diff --git a/public/pdfjs/web/cmaps/NWP-V.bcmap b/public/pdfjs/web/cmaps/NWP-V.bcmap deleted file mode 100644 index bb5785e3278ab7a24b3080cf22ea0f609aab4595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>K7iM>ygN#sKmI}pMl|k4-f~j zG8_m1(*FERdxM!+_J#r3kw6>*#Nj|3#vr&i+EGF=`+zS48-q}zgLHFIt0N-=1WGc< zgIR10jYd!*Mh1jnB9Ce*<36T-PyT%@0*w1an(Z0(1~4%0O=n=(>kqW7f`Mso9gtlM K#KF2yhX4S!xj~o! diff --git a/public/pdfjs/web/cmaps/RKSJ-H.bcmap b/public/pdfjs/web/cmaps/RKSJ-H.bcmap deleted file mode 100644 index fb8d298e9bb8e090139bbc5e958f11a237672825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmW-dVM|kS6vlV1!_6jlIAtre^(Q4FZ7qdzD5oo@Ra#hW!6IgQZI@-tuH22r;(#pN zc3YNZS(fEYv$QPBvQ!BADC=#XqScEBemwl(fk!HbNFU1>Bk}7gaWoL{A8z;i1EMFU z4{IWvNv5>Xr0BhQO*h7LLrrNh->#lSLj3oW!qAeMaqC|h)->Tea;}$x{o$YmELjUc zR{7a&frS$QWo5ftfMs7cJ_O=wHm<s|3QlC8E!XL=<urSBZqy;?QZ`$@%4*3wLN)nX z+n&6;62CQ+@9W3HUT_zpc26N`_n3|mVKzHu^CZ-n;frFTv~yf?Rm(N9x6Ui4C3gkg z74$}$oK14D#na+atIX1XsS(~K;G(1+Dk@kU2fl}dlU=}*w+Zj3fgc<roaz9cG6)~) zz>j={)2+bMHwYicfu9^8oM{H0876!>2>i@TINJz3dxh|M1o(xUaIPMBE=2h9Jn$=- zaNYqt-$(7G(`^H#%Fe=N;MX3)#RlNTFyYb#;5Saf<yzq7vxINY0Kc;lu2_LrNR>(o zt}4K*<3p7z@0?PlvV!j!_(PZ4@LR#PPT;jP;l~v4rw+n(Kk&Lv_&EXmrIm2wAn-<< p@M{eCTQlLN0NxxV{2m4V(MY(p8+a>1xP1xs@6@aCX9<2q{{oKurl<e_ diff --git a/public/pdfjs/web/cmaps/RKSJ-V.bcmap b/public/pdfjs/web/cmaps/RKSJ-V.bcmap deleted file mode 100644 index a2555a6c048de98d68f534fbba18baf4b4311e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T7UUi5rR$N%+UUr**PoYhZy+br u-e4w{y<seZd!rpi8yolLHpwzDLZKvsJebAC5R4?I02NDQY@W)vj|l*S$t%tP diff --git a/public/pdfjs/web/cmaps/Roman.bcmap b/public/pdfjs/web/cmaps/Roman.bcmap deleted file mode 100644 index f896dcf1c7fb118fc491094edd6244e16856d586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmZR25agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe u$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC8-WN55UU{r`}Oa}lMG#?cJ diff --git a/public/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap b/public/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap deleted file mode 100644 index d5db27c5cf1f5b0e66e16f6314d042a4ef707222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48280 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 Jqc2`({U4}20Ez$r diff --git a/public/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap b/public/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap deleted file mode 100644 index 1dc9b7a21bc59b6540d55b3d8933e5a6ba9f8947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt>=&#X>KtsO>ygN-Ak0v~ yz)&T?kUKw#u~CeHu~7(!rGQuti20Zp8@Zb2STejeY_wo(WC~<xWMgD#WCs8tU@Wu% diff --git a/public/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap b/public/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap deleted file mode 100644 index 961afefb66cb70ea2f10784029572e5f68ae4740..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50419 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 diff --git a/public/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap b/public/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap deleted file mode 100644 index df0cffe86b5e9f154c5ef6207120d6bd43706631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T7n+yp>=scVXrt9IzrXXCw yz$75uyhpR~Dq9nG<CSnmhD3G)4#q|?2F6AqAeI7RIUwd^Vr=AUo?FD&$OHgWaxI<! diff --git a/public/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap b/public/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap deleted file mode 100644 index 1ab18a14367cf31113eddf5ae15d9fb3549f39ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52679 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�k<Wf~rS0hy=rOwl+C~jAyU8PK)Of>sTLal!IJ% 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 diff --git a/public/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap b/public/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap deleted file mode 100644 index ad14662e25e7a4e3bd7f543c126ac24417bc3665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T7n+yp>=scVbr0e0##=xK; zT*1I3Al<x2v+*ih6L;g4a7Kn?b_NCm4#q|?2F6AqAeI7RIUwd^Vr=AUo?FD&$OHi9 CU@f2k diff --git a/public/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap b/public/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap deleted file mode 100644 index 83c6bd7c4ff0abf4634765312b8a3026942d2b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53629 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 Fe*>n-$F~3g diff --git a/public/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap b/public/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap deleted file mode 100644 index 22a27e4ddbe26664c57f778a864b6872f6c2ba03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt>=scW5>*2)qs9|yi z1CxOCmXDc@SJ^ta8?S^jG9<A-Zs=fa6k}j)6ar!?AeIASJ|@OSt_|Od7#o=YCpIz| diff --git a/public/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap b/public/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap deleted file mode 100644 index 5bd6228ce62ec10f00316b136663ed6b60ebf9e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43366 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 Uyk~SGTv&9{NH!N6NOao&1LeutHUIzs diff --git a/public/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap b/public/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap deleted file mode 100644 index 53c534b7fecfd84e465c8943fe3adf500a4444f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl?xY*)9BicPk;tzg!q5^X z$j}nrT*t6SW_C0~i#-EFiybR_iw6T^OAsT&9w{L02E+l)b2AxQoY)v!T$mVIY=JV; k+>9*_j-3Bx_sB55H<o^H#K^$-o>!Wak%8eoOCt*p0P(FjU;qFB diff --git a/public/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap b/public/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap deleted file mode 100644 index b95045b400a77419292cab245f9f66f6298dbb5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44086 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 diff --git a/public/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap b/public/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap deleted file mode 100644 index 51f023e0d609798e72d46bf41309e092d72ccb07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt?xY(U;$~>3>)|M<Akq>h z$S^<3kbzm?y;<|z-1mlD+>Gz7_!t=98%w`8Vg%B>(wvM84DVSQS$GoJ3^>?ZJQx^T Wf|wXv+<<gI^V|Z)78e1=76$;(y)@MT diff --git a/public/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap b/public/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap deleted file mode 100644 index f0dbd14f3795a40b23cbe5b826f776f4ea7cba4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45738 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 M|Id0?+kYqj4{W+_`v3p{ diff --git a/public/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap b/public/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap deleted file mode 100644 index ce9c30a98541e23244876fef9dc67c2639fdd746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt?xY(U;%025>)|ZOz@Q+~ z5+=wnKgy7SS>U}{^W5C`hFsi?@2&V47~dO9zc*q8(!A1~j0_C#SsGb*lGzv-3^>?Z aJQx^Tf|wXv+<<gI^V|Z)78e1=76$-t!Zg<a diff --git a/public/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap b/public/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap deleted file mode 100644 index 982ca462b1b047c945d3b7b0123eb42dfd8d48cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46837 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 W-NpY7&VvC#?^62*GzIJ*TmK)sASzq{ diff --git a/public/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap b/public/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap deleted file mode 100644 index f78020dd4028d56497c44b7afa94985f0d18f8ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl?xY(U;%1@i;UxH|VM<Gw zAVc&2C_@Hjf%j$`zURI-<l<(0Z^g&J_}*Chy%8gj=537TWMp7?&(gxelf?G8p@Y4} agMqOnh>5Yq4M+!U_+G%+;v&G<;s5}C8#>Vd diff --git a/public/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap b/public/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap deleted file mode 100644 index 7daf56afabf65a4707d7bb06d829f56b247c9e80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25439 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 diff --git a/public/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap b/public/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap deleted file mode 100644 index ac9975c585ede6958758980ade161f687d40d58b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmZR25agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt<r%CS>KtsO>ygO9pkUpY R&cJYlpFy!nMUA0J8303WB^dw! diff --git a/public/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap b/public/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap deleted file mode 100644 index 3da0a1c62f19f720590b54fc1de7b027af100945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmZY4T~8B16b9gTW_C-zEKrO{Xki;z^rld0f@uiR4Ix@Y5SLOB2rjVUBlNpUP=hJZ zdv1(>g-o)Woy5N}MSq0Xx}bOF<jFbn&Sa9qe!QNoR8Q&$d;3l8Q7)HBPi8VX&DgDM z+nRaOXxgQQmM`yA>eWi!YTCQwVdLmXyM5o#>UP7ff4B)v+t$V>7V@)mi{{+VJB9MW zeBMkKX3fd;b1MvOy0r&<??&oubPQ)BVR$dyEjR@Q&I;fZ3Gvn_@rs6$x@>Plg#y)x zX}a?kEYdC`e%><$20DDP28u4w=~n3;YfUN!NqxPZvI05?&-otvW_;5=!}nylUyt%< zl+mDX_+Nh*P#INNtw$dr{1ChXUIIS?FN4>>tKfC;b;>uvHz<DxZc<(VU!nYsMf4fU zkC#LGQ~v(u*De}lewZix)C!Fy;3WZX&^P2uoD+Dxms`YHQbW#;e^>-@HZAgi;yP{& zWD?FQJ`$vs2>#XphHs|;qU{Wr(w_ML#!@oBh)Y#C<^_Wo0+Cb8kt`GOtNE+q)oMTu zssZYjYJJ(5D(B#;5O*QMkP8rfkc&*df=E%h0uh2pKo%j_;C90e5xD^|3b(hWWz&#b zRBl6zLD~>8BKP4&Aj^<dh<?Z#L=y54vQA|avH>y3<S~Q}`3bH9H%{bdxLpvvM4rNp wqC?RMpu<SV5ARzv`vpQd{}v?9x)J#u^%h7t)_##p`b#GV6X-)611%-;2k-K;>Hq)$ diff --git a/public/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap b/public/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap deleted file mode 100644 index c50b9ddfde9da7ebb2f67eba68d58fa2cdee902a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmZY4-%b-j6bA5bW_FjB)(XXlgci2ZMQ;j~CYXj0-4LQh1aVs`0>K3~0-^u5Re~A} zf!=dtd<`$jB)i#pkSY2QUh9J1nUi16nQtbO9QNbYY`t;h?!DV>>kkWsTy`>-E9mA< zeaq3UqgLCgw)A3cyY4pXuHANa#(T|!1O57aOLv`?<9@gbEyvNvCl-pcbBos8&l~01 z-h9!@mS?TW>@!=#cLXo|O?YJmUJ39jgaoUU1Qk=soOiaMLV;=~bi;cC7VFfIJnfqT z106kE1w{|&^hxzLJDF5WlKFZ$WorfqFN7Y2W<t{;GxT_Q(1`P=l+j3N^k09Vsf;SD z*=O7(d>_0HUIjk@uYotg8{jVZ8s!_{>y*C*w<s@zmneU26Jv(*!{w;)gulP~wTDJn z7#0aXwxeSy1Zf}`4vmCTrvyR&`6ls})Tp-|9u`5o4V&DjxJ;Tuxs<npj|7<|g1<F{ z(d$V=ypsb{Iurlj*h=mf@u>>WI%5zcAaZIsmS-Y)F@I6HSkcsos!_k%9LOhBIR{^b zxCPM*xd1T$xya;8hzyk_h$ut~vI4mZ|0et>k?Rom;P*H6d=_$($}Na7NCzT8<SzUe zWDT+bF$md&NJH*Jx>U9yTM)xc9zqz9pWrL-lSF=o-viN4<T3m>x)favT}HZLc*mys kFA&P<w+Qjp%-HXEut0hfo#*LvxO93rg#jcnbfU!m02g_%<NyEw diff --git a/public/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap b/public/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap deleted file mode 100644 index 6761344639bcde069cf7133d52e127536dcdd037..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39443 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 UUp1g87AoR8lAx!|poMAw7d?}<%>V!Z diff --git a/public/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap b/public/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap deleted file mode 100644 index 70bf90c0efb66da2a7aa19a820d766cfe3ef3183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmZXOTTc^F5XWcEIeWU@mZfZql}p1S79^z5N>bApgDXKP7qONqiI&*X4WK}=trCdA zkfrgJ7Xyht_z`$)Hfb#%WUGFXdH~<d<To>!%YTOcem-5?-7jsfZ&dVHA`y+;jYbo? zQ7Gn3J-uJ9nA>GNxwBR*?G{V9idh&}jIAyGYQC(O%(7Yfcv(!FranHgker@*nx6Ti zW_C8`lIcih`Ee{BnKjtpNi`1=Fpvzl?yF}Q1*S5f*3?k}2)KY49L}4IKaqoG`Qku< zr2IqQT9x53c5B3YqmOC9#u%lIM~wufsbJV^KOvOJf`NbW4wool)bNDEc2OJ?65`;c zpP)ef6jJW+L;J(!l8eaH(1-h*q3fqC44xbu@4*4W;1a^M^}xVY#=%>S0%g^S|2rMo zWBMgv;0XDp85sT1o=<ru>4jFCtG%qf;F2tH(%3e%$v{Ku(x8K?N{7}7y(CCw>vVo9 z6cU=DzJBn720cg2BSyO~0?>^<sh7s!Hdi^pnB+r+OHAXVvUg<EI`zIs#qdoAodqO{ z4~R=)3KLO?b%IKPt8OoFaOM1AKszD0CwL&ZFE9jCLA2k>#LgnI-v}~-6~Uex?ZdBe ztS?FK`WnG{_A@qTSFu5??_F4bl~bcPvGuOHj!xVoIWwF(&yYCF9G%yUIC+ZBhD@9a nq0Syd=MzEakYUSZoypkR&at6$Y_Fabu${D4-0ek>+ADtn7bS_K diff --git a/public/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap b/public/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap deleted file mode 100644 index 7a83d53ae70ca3d81cda827cc224ec8c5efa4f17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40539 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	TSv}^!0%Bau4|_Jjy$rZ_2%S+!ysBd@ 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 diff --git a/public/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap b/public/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap deleted file mode 100644 index 7a8713539491f51c52ba3a1525d181efd32c1f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677 zcmZXSTTc@~6vxk*GdtZbWho0-xil<dK|+8638payaf4DWVqB^u3Q^h(pg^&$5{SW& zrSX*)1BpKP5qKn<w3ZLDRX<6cf^TN>n=?6=|2Z=m`u)tx?(XL{*Eb60Xd)3G8jHsh z=2RxT=9u<=zTj-<&E!rxo7>Ii-V~h7ur{@|WnSgy&76~Wav$qX+i}d{k@=)G{luRB zqo;N@XOs3&YU$DV*wBo{0eVh~YoGuJ#R>wL;ZlkdaGe9WlSdg~5CCQg064EK{6qnU z8=e3HX14(JeybMx2KlZ2(2Y)RM9PCi<%i`2ksSeug}ld%m@4W1XYUAw7$>ViMq^%9 zwv|G%b$uTppcVpK4iS6ceW(`(m`auj(AQOoUXSQv<mBLZ4-OD|77?yjJ9J;21cZul zAYL5#Khn5zOkY|p1n6hKjJl2gsLk1Oka4;+E@m%YTs#+wst8uzwhZZQEi26iG?K10 z8coo_BBZ*fbCc1i)Q)y`K?@kre#9HDlG`p@p$)@I2aUpQp$mqiN*Fbva6=5Jq5c8) zH1r-dD=dX0{yZ`*3@o5=jY}&9n?NTJdN2e60%`fMF+eXNxhuIZxhI*DOh(Xqt1@o| znfF?fk}OO1g6JK7oxswf5-g<|mR3GvWo8x2%>CYsrI%@4Uic<f-xb%<pJ-70X+i!| zWd4#s{}pHc8lk_TGQYsc-{a_iV(1@otOndO6|386`B8e$v9@}a!CKN?4%QYxsV)Bn D`n8F} diff --git a/public/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap b/public/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap deleted file mode 100644 index 9f0334cac7f3852b4d06dc9e5cf0f9646ba21a5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41695 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 Zk@2$oe=xv)=QA%Cm7k5@(*(V9{{Wi~yy*Y{ diff --git a/public/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap b/public/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap deleted file mode 100644 index 808a94f0fd9c3b3cb0267e5cfe4dced2e65ecb1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmXwz-%b-z5XNWDIlJBd1-57ft!#`D2?2^1Xk!fNHXub1XsKclmC^=Kpx9Oj#6XvV z-V}mK2_|ykjrWaLWRo^UpTWzmxP1bjpl$&(`OSASGv}M3r$K*wc`Y$NJC~BWy<Shp z9goK=`J(YiObV?fQ?bRQ6j+*xCzj)h=~OJ*Y4I&ANN4j&DG^J?5-YW0C>E1CyM_Y( zzQ>`yKlbp_{9qu|5gzZq*D>J3ANkU-%=8cYI}zZ30VkXF^nM}CC@=>Dy1S`Ffq)5! z%<1Xxr7;k9M|*$*2|D$?FXhy&c6OuHcKIq3UBz}vi*nIRY0#zTvg$)ZiD1xjp|^RC z5=LdKp8KZ8jdg~Lv9gxCC{QPbpjkgitM6*xOhllvq<=mtxz7*FqAT-reR~zw5tQi> zg!5<u<>lFv2iuMZDBJ1!-%_4I%SFpR^~wLSQAYh}>$fOlW$SD8QP5h+W=_Q8!Q-dL zPk2t?cv4)H#Y#3;<Qhb<Q-{T_1nZ!gxTugXTYKGZ!`ZD&UIQnH(6r60wdsSCM!1Ca zTr=&4o4kW3*v-|WMd|05$hQf$*0#Jh^cF30LnV8t4I#1A12I{cg&ArX)`3Hjc`)$~ zvkeT5IQ3i_RWG1=*WiJ{eFL9CuM5@J0#T=ssILsd1``IWN&wZ3%&!$JjBw_{48g)w zW)n*TTi3Bj@_)y$Fd1=F(x0*X=5Q9Z9xJEy@l+c{qK)&YJ!eFVP}JrG)KZF{YO4&j k_XM>KhGkR!RKW6Lgz0;EtiH%pqF4>=T`^aOfvZmZ1Ch+M8vp<R diff --git a/public/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap b/public/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap deleted file mode 100644 index d768bf811ffeb0d794b732a82940fa1442af499f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39534 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 E-=u#IHvj+t diff --git a/public/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap b/public/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap deleted file mode 100644 index 3d5bf6fb4ef94b452ed1ef0df926fc2bee55e973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmZXOTTc^F5XWcEoITxcODS8ha%o(|f`kCAn3~2ITnS3Kh_zHn6k?$pK!IXgB@lxl zOXDjq1`>VnBk)KzX@w86RX<5RfNy5<o0-hzKSRHtj}^9difb#YWh0(U#s=@iVoAfy z7nUp|vr{Tt8zm#Pxm+l26^gmCl^@c~^>yQNzGM`wl2!b8QOsDDF*H1#8XJF_8ULea zH`gXp87XylFgy1+o*0}kdG}#u2^8R<m|i1T&2j=B;6V21ejXTjfSCeL&Srk10NoBI zfPke#J>Tl(-T{8I&ws6x>*3k}QSDJJNt6yp{mv6cOqJaD7jFxN7$?&gjXDK+OiIXu z7k-$4LIi1V^r7?NV#&i)GL7D@v&hv`Hii#(54K?!p?enL%G%+^WhTI1i2?D-@c*5r zg#-H1YGNPzrJET0(U?m6M(A8WojiSc`a&qGB3Nz1)JIxtN{bFn6wsRVX6RsHQthLu z(MUvUMmoD71Uj_ubDtb-J8y+H3@RNIhg%{b7{-+#YC_?<=vV!H{q~XnJ!)ofB<xNj z(}KV}8rQgtQmh#Q1R~(|g8)x16a{pWl6#T|lKT=<G8#tbt;(DQWX>B&Rx&Ty_M)@* zHG$Px#amrwSY7yxXA_H9WA^tJtiH+xV%M?$uCjt|!l$_7g4}1w+&O{nYtGyyLU&bV oZkdt0&C&hD(B0!$_t?iO);Dsz=L8#z$9Zg|?0Iiv29(D9Ur3XRZ2$lO diff --git a/public/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap b/public/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap deleted file mode 100644 index 09eee10d4fb4b9fe1e70a1ee56825a207ae8034a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40630 zcmYIw2V50dn(uecsj8a^mmDQYFo1xV#c;)}pqLY&A|Mh(6akSrMY`Ne&iRr-R7BLa zyXAI|cF>lYotd58oi{r@VYmCe>D9LFu(LC}v+wQuihaM|Yg%sIs#8@beBuB7zwbc* zaL|;OUtExtky#iJy>{)2<uNN(tPR+5KJRRLKyvYw!t|Ug0lRX~<rU=T6{HoWpO4gT zxpXODq5YMBg7hot1=p05$?53<kx_ehnG*IVColr|-$(yd9=vd{h?qqDekyGd1s!Mu z`Ho}<{63m}I==Qicd1G7+H^z|Vr!|7$qCOttP-JSAJiTK%Tfq{7zl)=OprXC%tyeS zEICLzC-Yt~?@D$BAn=*H?u$atEe@WZ?%GdphCDy#>EZcYdanA?pi4Gj19v`<tDODf zu=^KD+UF3uI3&WP#tR{TjQ}ltdI3IN4POR=JDdbvasXb4<O5fN!sI7g<R?MWr)Apb zQqcP6YdxQ@3VPw=@O-OUezIQ6f4JfOd|A-*9Pj5w9iMXJqAocK?@juvt2h7GFuZ=z z^Lc#G^K9=#hrQY?C;ok+#J|7bo#^yDUd^Xc+|TL0T%r9U$NdX$@8{t`KHfgw^7|+G z_Zys?jr{v$$;9wsEm^?-loY8;##tdh{Vc}a+1<t6&7DtOeBt~;{X+9X`$G3ZdZAiq z{3mXsDn6CH)>|1iP5SGxFa5p@^82Fv%b>(??UyP+_@cz5#Vcq2dK8v}KX}n4AV3(b zfM8OPtivmp{<_NOvNbHs*O7;OdG5=zCgtSy|8xQ#4ToSCQGp}jtAM+K8+@@EzBsXP zm-(-2S8DftvHXi0vD}+SZ2yv(a`3(<XF=4&yQs;&;Ei-0Yz4kq;Ol_`^;QAZaA(Gi ze0Rf!#LbUa)bD`mApIJ!I0N5~YZ?h=S5Oo4We_2fc!4)CCQ|cmU>d$(yN}isi~K5& zuU+R~lb|+lxUd6+cuxXLfv7>l)DT8NIw#c<usBc(oRCblGv0d?Zc3K5V2N?n7&w6& zCe0<NGOP#YBmh$@|8)2w72d)YU2?kuZ0#b#!nl?)!kYXa9U;}3q&^E817N>U8A;Z$ zjy)hlKwmnwF4I??m#R+cn&MdRZWweSZ8u1DBIzlhqo+-=00AfLCn)1ft0VC(l~J^M zleYT0SH(4xX1jJ#<pE$gF{-d?(I6Sj7r|V_owSupYJ<{O8h}zY6I8%Fv2*|b$5^q+ zRi|O93McO~z``qB9OZ2wZ1#W(5g%27|ErYW_-T;W$|a^PxFkRS>>Mw@wG6aO6yZ_o zlpDD77*~9zFEGCI)<r#pPNl4mitY&rth*pcnu;X%sdElfC%i|BzzEt^aoVxWRa%@P z!^%KhOZCbqdVou~MgoW`@xoT_!o47pDhr_ofBf`ep7Nm{!k6?qfT%sJVY;5RUcHfA zl;dLgDnGu-#C<(Dgm?jS+YsIxT;pvvn$obRZGXkJrUGz11>nJi2a#-GhD!urr2$cn zKxtxlEb-HDgzO@E;Ad9^YuAv)Dm}O{J-Cu!ss{m|;X#dH2o6iF%76DpRW_|obzsY@ zvQJlU-&J>Vc||CXtteW*fr6K6eRV*woX+FSn-8%H!ydkN2QF9$*H<m&s#;V3VN%0L zMLwx0Bo#TV>V()30`=>`vJb3kt$YnEPNX%K)SiN-)lg}K#v_DpgvKb^bP*@G?l9vi zB%D@l0lr7*xCX6jsa(t|B1z|Fs8~(7H+95bcL$3VMqD#yLc19`z^&;E2X}b;I>j=w zYHr&js__~Ht(O}Jf~%JfBud{;;eq@pPI}Ecffv*o70Va}wJW|Ao@LS7Ubh44it2^V zqV6>far|Iip@Y__ZYr(2R(VQM;3)T@<N>d?%-VRhzShutZoHr^s^M}n_r*)W1EGzZ zY77;ou@g2&`P{HSHIAQ~I5c&xRL-hcJsV0xsd^@ve@1zi8y(IYbGXN<!+FY`l^s`W zSbNa`bcFPI_2oWr9@sjNTy<t9*H`K<tJ>L>c0c5HRO{-VgEcD$eW^|JQQ<!?uLy{g zkJltt3Y(i(wr;SNR;}RolX!jdSPBnsW8Fvg<hM9iZ{eRD<G(yzb8IlRad~ZF`wq*| z7p^1AZ>8S}>T|a5w<p@KPm5OP%JfZ*dpa(zsXAR5Rpb6dEw6cJNAqEMdp-Mm?Mtuf zv>J6|W@Y%}Na2@$t*3ZNctv@oSEXlF2><XHpE+5ZC+C|Th8MRM)~%~t`uGt2P1(O5 z{6$(-!03)&d(+>zjjTG&O%1UXftAPGf?D(9evuoXnCPgdb^E!#oqoLG=c|9d`@J;Y zUclcmRj>IwU*V&o7N5Ejt7Jmc9QDhAn^6x^;Lke^|Ava9<{t3%23*q`6kNXThay-a z$NnkRBmk^f@%wdJo<_J+8dYrkiVgo~>p9mmZplV~nAi^!MLo+eGrO5XM4e7=FkUKl z9L-e(Cg#A0K1zpTntqWnYGBkbx@|OWblK=e4kIy4J5(-{kuyreSok1c@r5zBK0JZi zgjN$RyDPYW%7l6sGyIEEV2X&uvJWmkDR}SXdnY7OElTtwozk8CC}Gg&K&(qmG1$iS zNf6ZNK_no$G9OUW>T)p98gHmEh&2MKTtcmzXpNSDBnoO$6Aa$e1FYNeEM5+-Tn3in z1@l&&>J%nY@Bu2x@gVPm>h(~)4&>bwH1fuUCd{dN536;j@)nRo(OOE?NiD@yr6xD* zhR5gE3Dr6QRcQsSfS&}2BRDXS95i|ypvsrW`3MFGb@9+CO0|-{rXdxfQsvpTaxz~f z=lEA-R_?FV9I6bEJt`Mf8F;EWyh2|U<6e;)!VkDsZ4RnFP<_tih_{M=@!|B+!QeU% z7U@)-VMtV0tda7B3P+Hy`^h;@{GzZ^u&nhk@i1&H@#+(crH#wNRs_{#OEo1zQ@+@g z&3$%irPbkt`f6RB*sXlGTWL;uhhB*5iQ678NK}jq;XZrOYe;*%Lqm0fTA(!2D4`kj zkp#MF(pT5CD64Y^6%P5X96#lP)>3jFJ1q##V+HY!5@^Tvz)E9qu&YiYkaSAp=(t9t z?po)DwR+GrBn1V~krO_%TihERxbGSVb^La{t8v&nW+*GpdvTDiIYia$x59mGQwGe^ zMT6xc&Zf8CNz1pM@ovtbEkNk1Aa7TLT4;n*4JrP5zHH}KcS&%Ol6<v7sH;j6R4ztI z;H!5#x=K=rcetkq<x7qb!9(kS_FbfF+D+c=xeVO3fh)D58^mr9G;yKFJEFZi-9__; zP_s_xG=+4gLe0e$H3w1x4AQA^V`u)h&K=y--P5S*3|TzmrRi2**vw11idXfVH%c0H zh`^1JHzT*o=S{MoimK?gK9#yJ)PomrU722Rytep2o<G<2$0qAhj8*+hTGv(uR{6FB z%N-8<hq9_|{O1SxPowV~=Kmp>j$jj4>t2{V107k=;|sSEVIW3mDxw{igsLp^ax;0B zLz`n+a}11nu~APlu@BnAN$qOrJ*IeIsEZ=qSH<pYBpuo{(0fq4eG0~WpeqBqF2L<Y zta?9G=%GJ=)|EI|V~Itl?ad<m1R1}GH_Ix**FsY%w5@}F4K(RV-A#JuC|J%D2G#@g zt{xb%`9MRNFmWBKkCCBduol5YCK+@S+V?|)mdNf(H&|!6Sg{By{Gm%AsHHHzi&k$2 z%MLQN9kt3FC$#UuPm3$G7C>z<)D<h%YX73QC(r`Oep)$AUnMX(-B~^#0tR$8K|pGB zt~FW{nxp*@y!tTu<0sdhpA>7T_DP|H1_hp6b?iUnHxMK~DRzExUH_y=IqOW}Np7+R zZ~ASO(>qR-+uT3T;Ggc7`=Xk+-&t*v@XDJ(Z@9gdRF#m{B-XqIMwTfCasO*xeHLY~ ze>>^lp_r)sU-8k?5-dFIuiYnpw(|4y|8nVHaz4*^wMd@H=bt7k)+<rXN7Lk5&9oo? z>B{*Ha$R=SahoLX>kX6dol+u`L~qMwa@!Z0bj}rf!FpXWjfrk=vz4ACy7TG_@Z>rf zh;_zEq@ajQVk{p$FSkX=ZQ-(|i2qFq|DV~vQU75Fw@3210}VR<mn4%4n{DQ!7w}nf z_f;zUKr7;zPxiz3dc{2_?yGg`KV`XEY3e;F*RPWMiunWJFVo%>Jd5H#b>P1cD=t!- zXcMZ>@(=RIw<uUVF>5eFRFvlS0W#tQ<`sej!;Ds(VwNm=%XOjKC2#W=nx5mM*)XRO zYvR!UeY6hICH}x1BmMEvzex!Z63v5)<yu$%Y4*o~vQ;aOAC<?C$hBT_t*2b;{LGhs zTEIWeQ%q!H$6zFJq~m_X>`cv0P!+404Iy<W0S#T(WwF*1I*jV7DB2eXjhCRqw9t{B zryG=TBeC=C74nJ-1N&fLuW?Q%^lu;odxcjj>23+kxh{0%1s}c1pD+IHBL3BqId}e? zJ@eu=fe)04{3kd1b^KnrB4UZZ>Tra%?F1))m>r2(B3-4V<(RfT1NtIaJt6W|u&f|v zMn>J(9bd@+PKt;m{^7|be{1-{q<qfD5UsMgV9i_*{ICfghiK+J;gyf@+i=o+l@6R& z7B@-Len=ijmGAh-^)dX<g#Y3?pI*dk^7%k|V;cWFp8upM8Aq1n-nc}*z3QVJ{>Q}O z06uW@ZpoZ4f3Evou@c=T1rBa~TJjQCrse!Q*S-R7BMt_6mwbq?=Y!#<rPyLs{Ta&l zYeoh1r4mdRi{sv4K8D{U#z^xbb<1UG)Jg2$Ld@Y%Q3!2eWNf=IDbh(npsJd5)|V(% z3DD*aRww7dP0*VwR31e2(!gK>sS1&5FS9XsZDRzfb|K9>m@OV^HnWN-1f7a(CT)JY ziC`cQ0l{>IHQH#6QJi?v3O=S51o4%JI3B=0DinYWTqXT+7#rO!C9gunfnpdyT_}eB zIC{4fUWL+EVf0lf196~CGjKx?$lPi&w~E<Bm|qUBRtR%(aJNi&wE|v6llgEQY5#gj zEm76nIwj<xHW%oRpdd`E$h4N!<k61<U@ltdUn~CllA_f~|HNwyb1P9G<yt4X)`Ji1 z<qxyvAGyviU08!RgDI2`>~1>v{-H6qnv2}Zp6-%s^@_YC{rliqQtKwz99d<8a3@pU zuOa<T3VtA$Nuki2Kzg^StJdnP)=?#tSisx|V&<-yP&<?UgO4p`Ha}s^8840*aWL3P zkg$()Ysjkv{PJqM4v{#qMSv|FJ~q)YPdrdi*MTjyYvgx9z8lD+&6&05+txRpv6{YI z_l3*Q`RYx4AnDud@<fJ$RSp~+EFe^DT1$F#;?!2!u!)+tP>T^dB498R<VZTPn)ROm zYYsG>gmx`!-N!~#3D8Cc16LF+J8=H#ZUu=PNakbf$;Z3!)W_SUS1B;97UvGZw<)@Z zTIlx|etMKVji<MF3UkT$RWXVOY6ou)2J^3z_)lVo9OWsTTw+^gTWt<D2bqusIndd9 zfK<dvbxX<AHd<W@)z^sS3aiRsO&6#N2J>LB5UQg=z9?2~le$&VEkWOL+INh!MnR(| z)SXl}-xRnrnOI6EmVnt&Xp4iIgQP7V8e?f=jAC~W^grDr)rwxVf*((F<f$fiJlDl* zJk`@~WZG2&+J1MO;`wO$Dit;P9~TMlUnFC=D84vOTcjdB%f;pm(7ch3h0%|b)UPrY zhW71{#~ly(VgB5KX%F6ib>fOVvsdm)7;tVXF&)BJ{O_JPsNYVS%4n?tdep?S5$emJ zWebLpQx_?v<34oUomQB{ZfB`+9aOjy3ni7sP<fpJX*xigl4y4X)NF#vT`(32gB~C+ zS2Y2&Y^5FRspSBz4I!PW2y$yRLicGpoGOg1g-QWh!&w6c!U6(a3=(_e;dUC_K8O~n zGgj5PhA?)=gH?yZ*mbBZW0eI+WT*&}Dr1@LFw`EVxAMiVQm}?V^J;P6BHa!ZNo>@M zj=GXN$LXCD#GFSg$4Ol-sYqm&5LHtaY08A#Q82PXQTT&yPxtSrO^dHh)qq+)<|H3? zZrx#u#tR~E&(rq@!?X*XHj=sh8eq0)lrqque^J{)*sBcPv@0>|;Nug-7DoD)(zztC zg~2@fWD&3QFH!d|RnP4wbNdjJ%<UI!!HDwbcL~$JWG+cFmx$*G0tUS#0j}q3LZ(BA zIgox_0&g?mftJplARm`0x^wV1PY?1JuJTw!U#7*;;>y3eCd+BvsS|nf%o5qW@pi2I zAlJ6Vw%LRx_Tcvo0*v24PGF#vRYgNzAu)n^53M>277Q~4O8#FYoeWQtO=#H<e$B_y z*lPpK@1(Y^C_{4@%p9y5+sc~Vg@$E<ErHm!DIO`=ZD`+g;OKR^`G|b$>d;o%yy6o_ z{u`Y<=xN&{S6#6tE8?3RJd`NaZxQM@<DfuM$K;TwhZn9a=3`kZ+a78=L~Ms?e}v*! zlGh9+*Om6<nDgZK^tQwE2l%vO)Aa!#{x664mwOarmz*$kg!Q}C<ctXo27cR{@qUBS z@8knL`B1wS3ZUgQ?b;1hQ3?}P6-jD0kZvEbK}9D57G9tBZQ#P|kMpt11XP~{ld;{T zf3adIlP`T6G{2jFb#!LY(yBABj{VB7WjzLgi||U(P%2C()9L*ZB{jR8Yj%<<XY97X z4KS83;2e^ka-nSx+}n*pF;+~+t_!!eNHw`IlqA$TlEKq3yat-e!2-~9Slmxa!ISU} z3SLVtf0E;3J?IbN)u&C!CnOj14h{5&(GM8>CS0%`6u;gje7#q+9Y^~+c9?y#gxZ;K zHy4@`VE!<hKP2=o2Ro3ta+teGY)7f>2(=UF4_7rMiH(9dS1L@ePF5cL+o#9*i`{Rx z{Op3<b-MFJUBYEKj(?(ky-GF*cLcMRB5P9rPI3BZ7p+a;9*x2Lulduf`DfAQgL3@B zl>Nt00ir$G><jYjCXmaO6+5JEEUu2~SkaedqqWc%HE^abp=A;OW9nF{DHJdJG>By4 z5}7o?z#6gAkv15~Z4<q{K?P(=2MuRQ;}WnIqC-a8JhqNh9%a?e#9Ri=r-2_~BZait z+0g8+wnY(V(Y6&~O>G#d^#>==F%)bsB_c3iV<^TZ6plmwZ}jTwmAcwQov)#Gg{o5L zRH+qEs}!qw$eWKd38-B}3)LSa*v=4JiZkl89o1N{ou;-^4#4axVwWh&Dz)p3<{jjd zLyF)kCi9S)S1d+m<wedv6%RP@A&K`L7u{vElWg`=jK`sNUb7RXSBt-0O!<p^uzTPa z;C-frX&N1NcjPY%`~CS>jvpHNWC?!qzij^8FujVuj8mwBL-%<H&a71hRyPG59eT`b z_VSlyyl?CD8s$FS{f+n6@V*%SGv~38`W5_TK7Uzi3c;4ohxJI)kHk5QY*ydj2>16& z77u1YKh9cnRIRyGCEa%>_5M)fuj<<kt%S7#na%Tf02tAb_A)ZC4iS}$&_zfWhCoZ9 zGX@6GenwJr4zq1kPc8wi=(5nqujV}5t@<-{KBh2y@2B6!u-Dt@Ym~%8&bC~QEsykL z{z92CYL`U(YRi>udFYq=y@crmY5tTFAHaN?^m;day$9yc2)2u0*MVKj>^clu>=L|A zq_6kWPp-f?NVa^{>jUulDth-a>33ID^l<6$N;QAElfO)sYfi{D8T{!bb1r|mr^nG0 zj+bkOH;{2>7%Ks^*X@Pi2zL#HBR`r5cQ1fOHIWDtspw6*_d)YHxJjl$RrePg?yp3_ z%GYO!27+V)8{P-QNk)OF83JKdXEg0Ps=ap;E#*KSv=q_%nTC7E71(^Z`e{mpHN~_H z56$1MLvuHOg7hO=GlH!EY*(nQ0OiJZRXwf|#?|_MXJV%WPXq0D!9%b!lyqvofstZA z68@y$8SIqVu@AH#ag&0k&_~!VineUh?+DXb<n>u<%c1>_>bVl>^TjG#0PFWuWb;VW z@L~RP4gbpTZ<F}nZj)<F{Ex@@ACL3iQ@r;i|KlN(4>sCAyqAFXZnpaFHFhVN+&O}3 zC#dS9SyeERH;7H1s2S7Qbo!DY2uz3g`Z#SqrN&r_Fi}8Lg(S9Ov5stgazev>rHZo& zmDvhPKeC=zEP+q;Fjq>ZvtT+C=B{J=xpFd{jj}L*jm#Gb^Vc*u0q6^}&{|GkAk!J* z>+|rr!SJ~rr-=6J=-f@bMLnH?B-`|Ps9g->OVHflOwN_zH}YwK_&N=y&*Cw|E4D)N zZJh96l_C{KUJPgO-o1a!;=kN!E9zJAm$CehYixybO_XBukNk4@;=(NbYB;+hg}*kU zmy~_vsok&B`TSb`AHMv58{{5WlL?!C(Mh$P2gz78X<*P1AR-!`NT;#`89Rb(dtDjS z-DHZnS17Z|L|W?s_s>(DASTeZJyP3lc*vk}iBMTgn+voEaDa>+6{<bxz$#W3i3>Wm z2zasMgfAUSA@!?hmp^oPxOVu`{`F%2N)X7cbE;cs^*|;TgE<=R9T9QXsY>riT~QpY z#k8ed9Jod#v1Jb(5@B=|ZFF}UNKwr5(c@23b+8>NL&WLZaVTGYo5ZHiFNhLD&XUew zCG&-Xt&qLWR?T0hwtV=(8Gdkr*Eu3CnO!2bVw|k`QpeZ%`qw$QjDnr&acOKA;(%SG z{d&A?E5t*X&V$zl;-|aFr#r!hfsO`hm19(WTd8`!T=n`oNMsN>ml8$Dr;F+95?p$e zcoFP^Feqx~%Z0D0gPqaZqvH5M($7Rx{kd|q8uZh1WNbOi-z0+q`&y*;1Z9Pf{<%4w ze|?>QzNj~m|M?Ps>&)Le&0YJN@QGN{8h~T8TT9!Dp>Z?o#vG5P`yA^&i(w3<9T8&J zYOx{_MsL#Q6tSv|jychW#ZVooo;(LLd&OQ13%8PXM&n>5RGfmUU92IEjct}@MbZ~3 zv>zcFIv}zEqcG$wSTe}%Yliw{R(D0H*hV`+UAK?c?WJm=;jqw<gqn=fOUHw0m%thV zNLM25@*~X)?(<mG`!QnWvZdk%OS}sxk>oMP$J1c0n9W^>uNnPXfI&yYpaWfS<?yve zoWBNrdE(qn;cJa_52KZvnz=HxJADdaGKdK|&7g}gewx<i!`uyF&_z3FWM4be`5Q1_ z2J<&m<7xC$TrMJE#92ZHJ%qk=H9EVm{otNAvYvgZ;-EiHI?R<|4hTQ*1uI%|?C0NR z@}6S;V<Z2u2k$B2PgCT(C31}irh0m=nO0+q&qtz(2Y8~>5XI35s467#4d_MgEdn}H z6v$J#gLK?L+o_fsVxb{MxStL8FAA3BFdj|r`on-1)ObSAI<OkVJZil`x-XN8gHRa^ zmLxiSoHjba$SUFCX?S=F<^KVpl}XU!3e|`}CFnf|y=P$R9PK|3b=OIIBD5b;3>0B> z_N1Z+$8}G$b|9035(g$f?Cx**crkr0!gB$oQM%{na}NXP8{*fC;9d}-_qiKnFp403 zGZ+Q)MeOSk>FdStbqEFVyY=kh8e+$BB5Kgt1!-`jFt|Yx>3h)%7(JdbvTv|>u%!FA zJh)q~F5*2~`K^<3hu&0x7q7Guu!gesLSZtNO~yd$RghOg)gjR=($*W|v@;!9LwOdd zFCjb;``?pB>w%dQ#Eu}TUPZcNX;q|ZNKHqt5GFKj0h}icY&x#09!cs4<xm+w?j0j_ zj!=18JDMl(0M@vbG`Wxz@lk<Fl#o!Ziy<Nv!Imi4c580w^fiTS$REtXf;Et~ZgZOO zQ%wZ0rj4v=1JN1l)*GucRIN*(*$~jYkOZK!dti32H0nr3wJ^1jO&t*(L8a+lM7q5( z0)$2PbmX29bH-FRxI;C#n{;VdUod$XqNHMpK#@Pyj%|Ult@M@~+;SzOMNsR{YSW-1 zh4k%Y!x--s!ju!-52W`4NbhN(_Y~|WiHhSxIEOap_~_GIH^{XRd6@-FUU=f=x0h9j zbR2379yLxXaIoa4ESG{&>kR11oL~_`J!BwY86J6J8HEbdG%Kq%iB<8Y^>{ZT>x;B+ zlY?b3Qmo^tDm+AG+Q2~Fw@I>u36@X+9|C=ARDEj^DE6(Az_l+{w5(>9RgNf3s{zAc zN1&E<8q0dgvd#(PROJc2w9k+B`I0_A0R+n)Hwy*<*pWV0*5`stN1@Njxz8EFB_@K9 zTQT;zus)+ppNoiASptJ4%@l#XE8r74HNGERJ~%5@A3rttdx<h1_)m?4WH>0qBnzVL zfnv$<oG)gh5K`bzAWn^P_i{YH3$xLVpu~$Oe>CdAKim1<4&KD@lYhBO9@;HGIoa%v zIQ{2p{!V)9No%Hjdx?CnRMG#Ft-QkY{F2-s$N#W|zwxLm>&WNv18z0TY-g2_@}#Xf zms&(<+6L8$&~*^3C93H-QlqApqab@gi!U^Lkq1s-H7OwJ<Q;A<()KMZ=*hc$Vk1h0 zfQTB^=j4Yi$-i62=Y!;_j8S@TM|YvwwSJw6W59Ltvr$*t?82H|$xJ#_y272^(o7<0 zGQ!|i7(Ytt_Q3;xBI00G(3S@S$6#tH8QexK5yTRX{<wPwbZ;dXHB^<cS}cU|A*~YB zV@wzYqkCc4gSM7Ij{ub-8FYn?Xs{|kW!RGrgt3Y%;xHCUkh-g^u28s}%xX`lcLACw zYYbS@q5dq$S<n>)chS3=V0tULlTA8Op+Aq*r^2`^3LwK`h|VH)Wdb#?r8T>u#VA?v ziO``TO(%u%^Ay*H%@|+?Gxz$3UQ$N@w5%sHG0<QTFkEUcqO)pT&Y2x_CLVKhf`o9x z8KjPr(3v7tF?g^JGlwE+EC(jm>|veTVI+}^?A8o=vB3a3kwPajapDaydj)0-P@)t$ z(J)3OsmUd<$sZXLN~}f1TA*>$4~EgfcsiNRCb3&O#fUQ2c@;W$vNd{*fVz#MEKm#5 zCb^)}N%TGf9(NRJ^sI<&Y;jPvXF(|b$I~kbG^S3ak>eFctJGvoa)EUa4c>y2=p~#L zOdeR><oXRlqfHtMu9|>FOCnCheq2MBszgK8{wNe)UmQ1s9eAYZv2%m};)X@0<tPt- z!_6fsd>G0<b+DAWTT0@nlc2E@gB78&VAUbRXGQe_t247YQL8hx8d3eJWc7-(`bt(G zYW3Em(b9?{S|@{bv6nSefwoT8<&t%U1JzsOP{ph<m}RrZiPlx<I*=bd`77R0q6S@K zNKE5mMY%MX(V;k{c@T{KS7Qb?1bb=%CDuLpQ$Decz#@dc9*U8|K`Q)h2n3+KBT<Jx zuK0)`ETam>q${R>aTyuYW75%E(Be16VJRA}+^q!#_MHC1cZ>MkIeuH>V?O+kp8SVA zevBWlOjoieSW9*K^=J;grJ?dsxP1m1ilO=nv|kiw9ZCCjXj#o_BBAXN<(GxFl`vB- z+^0fM4(-Xrw+N*Bq^f44SZyFRuB1W@t$DPA3N?vBi$84&LPnQCi!*5n5E?I&MocI{ z;||ieRYeggK|6)!G-ysW%m%_>JX9W5Q1<CRKPgv?^y$BR7l84g_z%foxgos?!KmR) zm?%gyLFjZ<Lx;ureQbU&PIm8doYA=w?OZXLiJ<fQVdxNfu}?F84d-F#pkj*76!A`@ z+!#^gHyd&%%0^d@nC^%0FTMGHMJRFanTp0uP!oepDQ%1uqD5r14$<Ze(&f!saz#uX zHkp{5L0XKe0TEhLp*j!x&uGnug${}_HiQZ&(~LgYLm%wLkZU9ZMlRu~HEIW>7L?>4 zRqWT9j=B7u29qZqS$U@`9onz`lb8BWiasM4n^}&QVrGee_zFkX8^(G=)xBZD@E-U* zl4o@2Fw7s2X2L06M|l<@8O8L>zgeU{smGts74la){_YAsRLXxJ!(SZjbmo62@V`0A z|K<pvE3!H(%t4C8C#5&bXO{67hg*DF{4M+Z`S4!;;nK#`&QK+Ll;ToX1no}HC&J_H z&~hBQvOvDCCi2h~%D*fG{?BEKu}uklMt*mGbo+}la+}Y9UkLv=lXopv$gPy+V<ALK z#$%b~3_%9^UI}YM4kniNZAC8fUOB<o7eOuQDiXU&=ptkl0$@6t^-$Wr9@>vVO(N73 zLhE^oP_QM7Ja$6=)R3jn1t}|^Q70Z4$O9DZPl@D{I$YZ~%URt<sM|nBw~`kZ;LTF@ z201N_*y~T{O>A^C8{I<Rgd>hdVqhi^%!@RC+KI=a9o1V=ij*5Yh5Q$Lt!Md*=y#U4 zr4DUp)2o|SDP}0823ceg3D$Z?uq|gb2Vpc5y3@g0#_Ih^*EWG+YV6JqC25&b``rd{ zCP@9^an`sJ56Dd5LYM3Lq`Ml|YGKYMzKiEwq&2X`MV`7aRK~wp+m_DnoL9s=<w3U> zR4f<xUfQ!n8ZnTD?Na|y=t)v{?u5zpLW2h0*^Ov}A&hwBB|N$T=UC?^+PMxb_f!s< zy5^uLx%0w1A3qbsy10P4l?qRl^60BIw8cpWbjBO(?(im-%y_%a_`pnnXg9)}IGA5X zh9x`@-mC<>3$+_@!r!db&M%?EdivRd)TA1_j>tCO&z$+3SDVOh=Z`Mob78!*gm+%4 zGxfQdRsy63bi~0xD7zmFNPrBB(C!A0weV;uJc?m6$z*1?T8mVe5v`<(VSUzWQn!ZA zWRS`gv<9ijc<@8+JCKH=jq4Al^?6|30`J75jbkvAN1E3`yH2PIC(}1I?l|jIm}F#9 z552pfH%4$EkFv!_XMnQ1fzY3?%tGqvXHuAAOcAoDF5;7+)b54O$L=n^Sx-j8wVydj zpE<*4PKx*LWrE$44twb5BjDFtg$5tZuqW!un*{o1+kc~@1s2M_oZ6QOpGClD;mUHR z4)e*?@_Pn8zvj(Bd9L*F1^)aD|9#3(`NGwi?-FN%_-~K52c3|boaJ^0xyn%?_EP7% z&OuM8YIGBf#zVJ@rmlq4=@pZg`uESY3oV}T&Oq8z&g_w77&W7u&V;E)gB0~m{U2i` z{P{utLlpl=;_oH!-(KJqao?SLZ>1<#dCOxv7KZ!Bu?)DiM`hU#ws<m_41?Q+i4>SP zgXL>Fm<T2lq0~SdbHrPx#rL)eGmF7OShWLr7$hR9WNOS?D+Pv#5vW>`?bPp|>D?@g z)s_$k(NU6^BCo0clTU6|+gBs7orz#?PQma-VR!?s%kU;L9MA0Q#hwxvjwkl@bY?M` z31Rj%s^Kj#A&Q^jl)|uy4sQkfCW$JBIc?jxt6X`}zMendHCZlCgIrl=i>gn*b7_<) zHYqK6Jdm^=P_^zwK+&89!<Wg!gJed8Y8U#BgR<IbXLx5g>AA{!3YD2myTm8=E<8Ec z1`Vs;7vGoU%2RUXWvzb3`QA0TGS?J`t!@tNVCh1WKb6>EGHC^<PogTKLT{zkv>l*W zY0{oXW_&@1Y1@0NnRyF)S748b@UR3e`JFhp6S?4G^*B{V`cAR&of67){aK_x7qO%p z+}lX*B@qb}x2*z6)8<Ip6mgy?B9%_idK{LJ$42sGq4F!O>zPvtm=<HNN_poJn8#dC zC;=UEY;TG*GckgFD-0(R6wo)<1bYIVi6w8YQG0^6rvN4}V=9ii8D~~Xn6>D+4EF8t zrkuRF2^jn$4m|?HM`0N2y+wPn&VCT*XE=?5VLnPRe`meh@<*1*mB{vyzO^&K^1~By z<y!v!y1Ee4CcGTl?!tyI;S@i}g9o{6a4Bm*%J2x2RnVFPzY@g1-2u<E@XjvMyaltD za3@5-xwQII%RV|t(K=z|hUxA02s&;M#=<F&rJWm4fyaxX-kCf^$O;og7%zbCjZ&>Q zZCVDsMVMHJ=_s&Vrz3};YY(Z(QT@YB;cw!gt3YT!z|5u0vV^qUfcF^m=mncVZCAi{ z9-pMce;P$%&PIH9Mqg)ARiy|m0T_CtI13P2w=uqMgCf0W!}#O{q#K6Q6;LG%r{YWl zv8NFG8S$lxyp#kx&XAgtI&?0}q@G;pxk~J(jKf*#p34qB`P$)2lAzQCp8d&qR<}m( z50Wb*9`Ad+{lW59he0F%bZ1>Of8T97&XO-zUX#shC!D&sC|t+cKh*1?VxM*cG-2T3 zgca8sGP9A)Y=b)n;Mr1TCQM!+Q?W3$U%2f9x4q%Xar$JhFmPDac3Iq@dZ2|lN80GX zYMdO#uEB7$<{-5M!)=95)(GtesXk0we+=4#VagMAWz1PMMqy$Tt=j;5g`Q=ookDdH z+}c1Vc94lRIKu8LtouBf)zQjgMUT#HoIC5a!<(xXI{S)GUdPybxKuSC1v49v46$d5 z-$cMS;pCeLI<tY=FVf+1GQX5opELYP3&Z7f_@-dbM(yayq*#sc>u_oE9ExDiSvGtF zhRbMAI<u$Z0Sw>3x7p7T`&rF5QSeQqXio!sDjN}%+vb<i5z1b!hLKW&$H@6cVL&>+ zOq^fNW_E-946~<${k#&6o*VeCfVZD+3hv9U%N+EUD;?xX7kSbsKTy?fYfI?3I06s1 z$nPF8aV!ZxH{0MxTD`HBOdQ@tQMD-35*-R@XB<@TBK<d5^JTUQMoYzN6`6|>Rl=jC zV&zftzLqtw)iuXULzl_W4Q9Y>yk6L-SxF>@Y50nB66W9~cK<TNYAtiTZgh>Nzs#Y( zkhJ;e+k8o@N;{As+&`kZV}d*DFoN&7%=l`NCqO^y73ma7#Xe|pV_lxoNECTjz_<yM z2^bY?5Z#P83L|R58RKfAQ+v|84DMVL9!1kf>#)Ysm0+DbQUbWf31nikAQ_Q!hkara zhH_hAD{eTr<0su&w_t(Zb0)P$+9N^Z710_@?`yGgq|1@?d$30V*r2BzdMP~I#2#)& zAMhBp50&wVh?%^)m1I1ej1@tRH>o}aoi`jhouNsBfdpC~O4@TsTPh@om4T$5l4e)9 z9ZheqAokU?HV7Jaieo!5X9CttVqFVWq0&SQ>2RZ?S<n!`?wmn0DL``^G)D@fS78+O z-Hnd83hyM6caks<|4t(9Sp!(X-Fh0#JHebwt4g62Md*b334te)G_xLNR?&NIP_3u8 zD7nQ*8&Z4etiBvNmnl^m=RW!%EV|~1zcq2gG6!pbmo+2EdckNt=Vv|ZVh!HJgO=9b z#H|);s$(W^Z2pVyu4uujHCkid?`%m`n3HHFaKz|$f9po?*3G!50V69V?X(<8AuOVY z4G_?v(l=n#r6g|7*}26tND%5$^mS*K;;m?87AO}t5bG|px_k|WZUzXcE7F00bR+1g zH#lPKiv@i3I(5C)8EF=G4EC_(9*p%KuJsFrgbH<|g%Dh4#a@~G@kOtA=k72;TsR@( zMTMX=qWN>hNYDq7)LQK05^U^%TRGfu6cqQLC@&YWodYPL$oV`z5H7D?p#;R|p7L9I z#ZM^<vIuWjtn2{6AB6!UNCj!oKq|MQGU6)~E-V<agtLU36qLYIz#Id<+z;=<ttR-R zMC3tuZlzW&BqI#H;5(5mSFCE!lUs}0kIQ^R{nGhxj7@%5Cf_|McV%~_%lG$x!0MNd zBy)S>Z!i5OkpJ!=N5q6M{KCqKixOrHKZ~M6@dVxO4rE$jW*hcwB8^R)pm$S*f5!Mo zsjI#a%PX!)8f|?ftq)@(N6E}h%G4jbDLCfBYJLk51m@&$V1@<of8q4RWv0fCy%l*| zEU%Y%z4OB(Sci#oav`fHOW+5g2MZ>av2hcT&#{_AQY&(j`3Q~PKL_uhKpe{Gluj@Q zKyNA7FQA(lyv!QU3w;M@$3gK7>xcmzRd^5;RnvYy((kHQ)2Tq13LveRlX0ZIF(NK2 zMn;d^paz+v&2XP8wDW~4&w>^&$etcdSRHiXBDWlX`%LqeVt)Dq0v`YwNrsWVU@z0x z$I<$gxBwqe;jN?kKCUF`2`3|m#QBZF#0Bwpt4T`<duv3`KXOtSIU&s_u=#E3`2;$@ z4c_{Yx84d?y71>ohpDitq+bg>=R-}`NyhW*82{J(id<)~!9Bt#MnNH@!UeZkkgg5F z^l_-qRjQ_%ida=LvFw2%BRq~(51$}8s2b?4qma*{x65eze$t_2s~CB_i=rWWXBDAX zQ8%$xzzo;zXlN9`>aH54SX@MGp)eW@qd{;BsW@NClZ4g~#WQ6%JPY4e7i;|Qs3t@F z-VM90{Xhlx-NgIu^aBKKD4io&hWXWGewBLUg7BYd<Udo%JkC)f-hba6C7{O}>b25D zm;$9UF7aDg^27D~ot=DWU*EEU;{NLr|5W1tDe{-8d}h5;0+4ZIGKAbJ!^#4&H;D9L z*%-#Qz}R?(0@O1~zxNU5V_+iNFmVwlx5o|Y7gD(ymHgI4%|g(Z(cbSPcL&Jr!Thtm z^M~Z_X#Ud^{QJE6cts>L25ne+Q3w;KiClf1@ZSegow61g_Zk`hbjAD{OenUV7WwZz z<(`vI)@ijS7rgkiBb-{3NY{SWvxoI;hrY#7rH7#$(y|?@f|+F}sY{}5tFWIG(X0b; zqoShl8Bd-q6{u2TobdtgEM+5@rYk4*o77$o_M2)uGCC2+Kim%m`wayzDey4ko5@vf zyfu?Q%9F?3<<9i3#j>9~8}fm;(38J5Eur1#VWf<9yMmmHDQ$<2L$nO)qos$}==~I^ z$&lXL4(}a@_s&WxGJcq$DX%@h(3}6Tdu!z|#Y$)V`}h8IWVdi<vBP^M>;nh3&>=RD z$&5^u{U$!1&Bwug^eQ)*y-ZoW%=O%IlmFLp%QF72H|^JDx%8nXu3h^}2i_dOKT(+i zvB}O_t?<D`WIP|0!gW&V2K<=tIG)~H3tbmUR~)+stY??L=M0(K1aqNM00fejGSaFh zeOFcel=!d@7sH34SfRs+20iW6NjA6)CKJGBRJxye@Y%BUmOv#Fp1F%#3D~a@dy&Gr zfxUpfjdi@g8M(*%*p$6p32);7f7^@Dgx=pm5ZRCFRraf>=Ho|%@kGI%N#@JR$XfPx zApxCvcXE#`Uz11jdKOt$@sGWE>jD0WKmUZhAE8KP=6jO|Fe7R^sp>jS-p!{S8=*rD z@0!TF`<3V?^TpFBCE=0zgj;bxfI<~5%-PSLt@!=5x2xoyIJsw~EGJUl>cm@hUi{-5 z{HqM5>?!m2$o32h;6seeAl=#pw@%Q><<ev*yq7Lwt$Xt}MHMr@`aV(s2SKs7nXmYi z9!CA3dyBezGmIj~aGJRhdw#MrKo;ZH0RHin4?X0k=k2HYCk9#0{D}+yDVoJwmum`# z&dYM)+l{={hqrnwh%?KpZ8JgeQ?2!A575f#+Ip(4@*|cqfhUV*t-i}q>|R2;!=%v= znA|Ar(a90|Hi$BxBX!HP%>f{93dDN6N}U%L5Z2_1O(JPKuNu&SIRoSvO(RAv8mM3D zRIyIaou#9sd%s`r9_Vy3G#=hIc*@lh>|@^QIc1==yP?{jm@z0$)=utJjigh42`VBC z@^MK%X1a|1^q$N|E@LT#A_(&${s`0p#MN{eqwYFEOI<Ksgv_^E0v{@%c~|g)3eOuI z18`R@V@y&>UUUs?Bq5SBMQ4gy=OC$=h+tIEsKKaqKv3XGL_sIv#z87ly`Uvp5itW8 zBsc27LcvEHty)9$IyZ{+l9Q-LUDp{zs&iF~lu24a)-f40z8GI{%;sH0H>DDzaOWvA zphsqy3DOF<S4D*-8)>TZ=;x`2LX`_h(qno6aSJ*&Oq*edlXZ6Pm}rd&tUIpZCCKST zHZh^n)6JS0ZVe8x2I;NEYHLXd?%~wJsd^Ww9=(hy2yct~K2Ag|q61yaF50rwrRK__ znrjM>iD^5jt2?1JQ-gwWuz>~z)WLd;SaCZ;7@kwXZb^$njmBdq{83p;Rn`(E#hta4 zS87?qO4_jATM+OQ-M9z#)uCaNwjo}F%7=ibA%Qe(bC$%0U7CiyIP(n$)D1~SL@5;f z8V<9D6F6q{7S7<Na#E`sGV~3ZtRYKmxaf>+G)SSV=_0Lx>eQ^!fSZ{b_1^dv#oA?g z@GcyY0&Fy}6(7gY$?4#jLcHObjj+>lP-{tCjpr32Gz+&48@(}SsK!3J3eI@sju?r; zYIOLx{}aa^L*2nk@Dw}*1x;c8N$|((T5KoaZ-qw6PPuiKH|O%^yqTQpBel*P_gHiv z;6Kk*mL@x^F9xb}g}y{39PclX`n*&#h3ICx6KLB;;DI0;$o)tag*z&82gL}}5Xv(z zaqBtp$8Pk;uH;ic`l&BEqFE2mS$9LDm*SMNv-#Af{|0)_;G|aEK=vIzwd*G*8{PRw zdHnO8{PP`*ez>T6n?n3$KfZO9&f?A(H{=)T@KtEvEZp4!?-w9G>nR2v!)o$iC<gk= z8E(h)XI(3GICUsr%vF%?2P3~O4wbVfYV0O+yd6vHk+&!phmK)QBxdx%8mQ~tKw5|} zbBxS+(24{)a0Uji!NVMA1TuC>bRdr6!~r^SMtU4ZE6U-Czk;8#|KZujOq^yTrRE(< zawFT$trua|&tQ(G*2}8L0kkndnhhpzQ?*D^&4!6D^HGf_uF}R((zO>RuCj?jP%19= z<8Ly%l)OEoQ11HCY%-cJyu}P3%!VqwWfwS%UV+g9V&6jSo9XCPOd!21CbQwXAZGW) zvr=O$87?MoF9KeBS)?rMB|c?PbrSxMXJ#Y*u#f+Ir94*7zuKT!*GqNX(KubyLBRo+ zTBeNe#`6D^W|#AyUzIBY8rSnb<~-O;d2@_XHGgTSUxd1I>iPiMja!$<hd#n^5>y62 zS2*0qokuI-t|Fd44kOh&>3cgt&8Bd_kuTw)ilewR_029tATHVX)G0kC)VmU>eH|L3 z(PBea0&83^{p8w0Z-2(8Qs3si%^fY{pZoCUP=04Mzq5)rhnZI4-M^j+#NACg*6RjU zi=l^+j;%@|!q_DYPm~I|RpiG9JZ`x{XQs%6sl{Z<mvn|<P7Q{`#W9ifW`K1YJPMcY zWy8G!WZQMf8QBwXE@2Q0yDw4XmF4R$Q<&f*{pnKwDRk*iBPcHBpq5OQlEHkj>JpuB zf#w@<Csn7W(_XCo6zPgleBh;je6}?LE>aI>T7us`=XI3LE|=b3B=$`>*|SU8+Y9I* ze<})%+mRX-zdS?VX5)pondEI2d7Fs_%Wh)!t>W7pn2jWjiL|jmXuLuj_tM6F9>eJ{ ze4aM$rnAv_2iOr>EMYHC<9%xTT3y!?@#Sf$-3OlU$4yK)&pFM!&ea|%|EQEd$mb6- zW&-%n_u8ZRuTzv#-JIU89609qx5wx=8B|_RpGv4B9T}`t=)8m$NX0s~K*w%6qb0x3 zf_rB$o*3Dv6t)=Xga@4nA|9A^(ZjGS3@=rTL(UYhjDW_}g_y3(h+UzxJIU-WHoKe5 z?oobE92PA_tnC0iUWRMlcu_OEN70;|$9yVRT!`MV+X&BczM0x1|7ic1mu%kiTZiA9 z<QZ4FznuT!82^jr%R@84-lL2EZke*%Cs%AcL0ZC~wgBr=VA>n*omQC-lXsV~C2%hq z%r1)1<$8RxT>((Jz^AUVg<9BLzo|3)BQ5{P>xo-OA%A#*Hyw8RD4B2mu0YwzpBrIW zOMbixZn?nZO|*}Xiq!A8!@Xm0FP+@WB=<@Mz0{LHd*VS-J&q#gBwAyHUoD~cid9{g zSyv%-gb@=R+0L}8_D#^|1D%xgT+j?|q=N_Haj95SNbcpb&Z97}gS@kn4sEAH`vfoa z*OYaoLDwNVvXzc(A@>f_dkF-$FDzBkPq{I?E|k28ATI)R6URwsCQMw@be59Ylj7_d z34LS}b?huqqH=U_okcFdUhEU!-AbF(s?GvoqKq`D7p81IpDJ=k6~!DO=5}#!IT$gc zjNlvPCHMLF<=?91ADMX58vZPO_L%%5<F}e`)uv#)_6zGy^1&L-WGpN;Oy*N9QmtbV zbZjNK;TlGhCvMQUg0<pawFJ@TkMS3Aho|Y#xkg*7Cw=Mg&ywoH2(Xk3<GB4@yloI~ zJAi>0nEjmYpElFaO-k-4_t$?}qmK|KgA6zfGMl5Hy@VdN$xYSdN@g!>XY--+0<PrC zlc;DfkI|RM$?Pd`K<b++Rs~_lZ4E*S^nc0@L<4g{ud4vjyraBs3xAf!XZK>AX_I(6 zS-ySoTQ~kQM_GoZz~N-mMr?GxC0kRwh8%OLPBS(;dUf4!Xv4jj@uWJ^w>2ADw`yu{ zvL=_+&O)UozV!<0TL-;I^_CmD0j$6<v9>M#-A8m4SY*52a3@~6oe?pv_a4)TBbkzX zLugy<SgFPOao?6L+Ce8;pGX=qh2{f3W}+FquI)5AH@G^h1%6dkcS4x*)6CouyZ1ot z4yg)bEy<&yEVwd9YfXVxti&h<v$MKA2sh?wsu!Cwu;UkQJ4lX1C2V83H-k7arOrmn zTvW*9II7XSAs?<bh?3gC^aiD7KtMHj6!;bu--@-mj4YL66pliL^dFOmC^_I?0l`Eg zp;*j=JeA?9aLpP2=7YqH67uLeCJA_CK-@w^XPwTd!-r88rB~yo6D)#8up>%X+~X{1 zMF9&%ka0q6fiGoPw}Bu>uUHu@9H1l^|9}KyG6jF&23N&JW3`40{*ewP#>q23JFpBe zA<&WH&~XOpG*G8DSP!e?R1u_ZMU=HXm^-TL^^3t#KDtvrrey*3rJnL`fv+{xWd@k@ zd@A$9D(ME;SEn<D;p57F&?-WukV~w7F{uyn5rVOE-WK0Y79R>8)Dg8n!Obp6J_TTH z(h|hfPWaD_dgAYZ+FXy?9EEC%Kp$_w4lAsjvcoIyCa;V&;B7uQ4vIY1X$Zx?Zn6p1 zQaz4HDVOlYm&PDqO9E3Q-jK=buuCFBU=dF`sFvuBD5x5Ii#uX#g#`1$?*hV7M+J-` zn)gJ0&0AFJRusS)L<1HkEl_YnDpncMDvS-5z%o3>y#i>8^J;iktQ+2}hQo;Zu(G^v z#qwQ?tXUqwU4=`q1&u9Mqtr?2I+aqqm3N8Xc5%no8L=C#c+nO46c6lzk}bg%gm`?3 zfE`T0F^V`r3J0g4Xr)CoPKO&(fChz)!;UJ<p&MRTcG(o5=9TkjOGnT1he>irIseId ze*1vjdqVCl<Nv0X`@*Jn^MBlJO2DQW{Xk@cx?z)KzRB7(wBp#Jn&Y~Po3u-k>dSR? zCk++hlDvyFZYGutL#2^6=&_(k+mg?kQ^Bh8t8rlR5p82MRGy+8ZYmp9PkIQ}T#)zs z$!id#J7bBL?IsyMPO3L*tFIX=bn5XC$6K3Jbr)&<5~Ee6F&k*NlT+t$p(34*?56>q zO$koT4luF^dI99X;PwQtq|kOfX+L4?zwFp|ZQ0lXy*0qUF-sirXEq;4+s;567D+`C z^BU7p98%%!Yz%x*vIPuQl+qYQ6C|ukLPUW943dKQ=_(QCBq2mq;rilU2mCuY3<D;~ zQ*y$qin^kXBA2yVP~ifrG$M6W<KJiix>8!IS1qD?%nsm2D8WUe5c8Pp#u_0^y!wH= zQYxg!HDwV(co4oDl~?J^!djw$VbF!UOVB<b1XubfC^1LD{by-<NQZ+o0sD)Qn~2#) z!I`0|VjHY7ZYm0Cy6y&PU|Nf<>wj3k2<1T6u~_N|iG^hX8W^jK&T0%tX+k1faFR%E zDy>aZVkO#`NE-JmGN!HFDb(&#q)36d?zNj~?M6lL^%#f!cMlaF+W~v5{C1QS78*N> z-!bikKZ^1(aIzd#=-Pr_Ub&0wXgG@9df;m0gcV&}gKZaKz~li6Xe_wS>v6;mun3Ke z6D~t2ep9xccwy8m;*7h3Clw{f1;JKcrbd-ks@Ijos)(;srpZ}chMI=2RB5DO?7C(_ z`xa7q%318WH$L464pi~j1z4f7(*a+y4Lq!enDsC^JbbKT6PIAYlmp0GWb>nNP|8%f zS>stSSpAgHp&*;z-XemBplD+hcGMqRi};&D00!$ybH$h`Go}138Be^X=$%r2sdOFi z(+4&S0oX<vh98<U6fdf9=FVuKbqgr#s{ftc_fGTgj&v;fN5UU1=l>3J^=WxBzE_ZY zRdTO1m(Bk<YH)>;-n_b^D;}&H0JnIUPq1n&wB01F<<Ok~AMI3ug0ikgJuOhc+|^b5 z4!%qrPk@d<I(J^N0#~=+N#_6O%pC4^DQ6a!_f#Lb@`hvl?>EZk^Zb8>@&6U7;IpfT zdd^UJc()S%T|GWf+`Ceox?B|~o0p95lt&Emh+ZB_RQ&wa^SJe+Hvxu%VeSGEVdN-` zoB-ar4gV!5{{Cv-v#UQWm(7`s|B!wECa*ZpD{{t{kB9SyZ4V-q%>`G>>o(ILZ<dtV z8o^q-Fm!m$hv|=<l)BZ04I`hN6hFBLBk3@51l<;e`v=(lz3`}<Jt{=y9nL0ADmr_E zqRNqXa5Gs3Z4QFT|J&4ifK_>=`=e{Euk6BR(>u}x1S>WyC@P3l!GgVu1?&wAsAPSc zO&9iN(^b$Il_DyNf&$TKl5tO}naoV)Op-a}f6tk7&diw<jY-Z-a(|25``r8ZxcK&0 zSAFa6eHVhl{8+cYbit2Y@B~6yy%{L=<S0Ga;Lb#65-Axxn5<_8y%9DUrk+0`oi9?} z+MrxnEm^kF%R3~=Xc9|Oka<WzS0@n5QPLGmuI3S5B)Cl>|MsjIu8=82SCwa~+AfCO z48)$U&PA;=0vQOp&Z<uMRvj0TpqL^eyr9s^Zy40!JpJ%?>Do$mZG|$NN1MzpO|F1b z3~!_tisee-xo<KkO?uiHK<drtnI;utR+B+$(ko30XhajEO_F>47y*%OBCN55)Q3x* zAvj>e3(4?&*#*cn<ysQr!!ex0GxV4PjR$3<{%AZZ4bLXS)7kJeq@<7<3rJ(Wv9UlJ zo~&F;l{+UG>XU@{dHl8BKz>W+mYkkhT?e)6TeT<Qm0?51<WyX<*-ngUFuFHL5)gi6 zgkDRa?xu@drHUZQzFE5BM=mZiSWilBfRsy?O-dPM+^DNVCW0}<I?b~xo75kIH;y)~ zL%YJP`;o?pm8YdNB$Jl)N_EM&ie2g<c5WLjgEC$$)sLqRH>r-9E8RRS<A^2K&E`#P zaG1<DcC4V*v5K}$wx^CM*Sj{GAjLC&iZ#cZo2DxE9ZGAl)Uiyk8N>><$Gep$(AxR# zj<IS@mbpI8uXM3`eUV3l-c%YU(vBRj?i~ZN1`;2D$>=J~P!Oz?@+ev!{R<%kTod6L z;1!am874KbhB0Qac#sCTcnH$6;0l1P5H(C-7jBR#Fp#RG)2Twb5E27oB`_}p0^F5F zvdMVNAmR;NTvR=SFb3)ekq^@mqMebr!2BmGCKJA+Q}tj~U{<(hnhyaDeqCYAKYsqn zDFHClF?aiXZnh@|RUJ&?Q;KUsCW2PN>^+kt!+~`CofmL{gyO>ho<lBjt#;E@dm2HH zy{eHF$TtDi6IQVx;))3z&=N#1&GoGap9u*|On#ry)578<=Kb-DymYg`Tlk?F9%zt1 zDB@P=`(7lIY-i(1B48gmauBY;<^+N7cq2boVnp3tVfhR}s|6BFM<VoN*%*9I^veP~ zE_{<P!QqQ8xE=`6Clmw{KnzH+zH$Hvsh{it=4~KCPCDMpTaLJ)#vUNrf_DkI?-$xD z@V<h>3OX(Ll%L>z_#kjNsIB<x2k9vivQq$_bQ^7;0X)i+2$R<F4t~QwT#$R_gNxAM zV7?RV&ke+TzFy1(SNvwEA0nY}T>&EywN`K}%M;KY;#fd@MSy{j9-#x^LjrdXfHHmw zRv_W3SZJr_+H?6kX}sHmcf0eqPieIa`R|g?@8J(uCnH?^RO--P@+AV&H><5{Sw{wR zh}*^F_7Tv*`x}V1mE1js@$Ur6V-2f2Bsb<5Y`LsE64YWmc?;3%k)&ar+!w;$-75qq zBrN+d240PBs(-71yp@l+PUuB{;)k#)!{bxLdPYPXo&)%v>K@Fc0|`pqN?>W()p&L- zO4un*rMyUh0Zwu-Lu0nom}6#AV}{z8sXAO(XRg_qX}Eiq+$})^@16$LYh0plOqKd6 zoSb*h(#FLMVw=N<UfOTCbbva%rG7;S4W}0K8|#F-oQk1BKZ(#M(MLif4jr`;oce;_ z*!|HO{^efn=0g6DSpJU~lo!qXpZ&GI)P8RvX`lMf=1|tVOS+d}Y?vgME!I7aWH%Ig zLne3DDfU42=34gNI9hj{wfkZ!4wSG#Mw}~!59-u^@z!Y4xf1T}&Sk`zLTyo!Et2%> zY2$3!nJo3|F_HRRFzC)i;rKZ9HNUY}R2U))hFT21;FLwPZiey48~a_HiTrl~zw#*$ zd30>VZFMpPmZGE!@#IP_FgWb>h0>i(pyh<S6N``f>+LT0bjm#wednnB&N1l`(m+u5 zWEpvUO0e*vloy#QX1*Kdy;$!>i+Sq=);Nm{r-8W+XF^KFKXQr57Z%dt6rsP3*5u61 z@%$fw{EKn?zDaw{jsMpU{%vf<0{-V|o$H06v8dwa1j-+;C&P(i5*FEb?fT(Ft!JjT zTPr90cfw~a_<K>uxs!&+2gqZ%b54-gj}e5B63Lk=J2OUKbLqu$XtqRHj*Hs)jbhi~ zMfyerDvgz(7B`L+5=YU~>fCo0O1vhC*UabttiN!Y|3lZ|!T+?GKhEL3Cf@5R#G0b# zPYvXefixa~pw0h5h<1UJ4w*X4#5tDnNu$;Lzgpe9cXXL}^W@=p?Z(v4GWc(H@V}oJ z?cu*Q6_H!s%9G{vdK_`gLVh#3dKP<!QGe<qNyJ|oL+^(gD%Y|b+4SA9Ldq%Dy;uVW zyJ+UuycgUzK^>k;KPn-e8x57Ph^3o80#ZqQxHzgItacB-Bl8*`{`dUhIgOs0brt{o zxR?#a({E+~>BrbmrpwT3a_u1HOJNca!&f}@#d^b~T<S=YOiKT_(T~RQUI2B3Y*d_i zZp9N-;WcL7Kd#e!bFU?i_hj>)mHfYt^S}Fy-d%Pflw9!<)}rD~Hw$#(!g&r;wTt56 z9!+%=%Db5Q#amx&lKNvHWAslTU*)o|R?$mY?9x)wA5Gi$(8`0fQBe%?@N7XA>F@;7 zKS{)e7dN!UmU(I&)3iau&}4TP{y369jx}_y?Oelu8=<vr5svQS?xte)VXpM6ZLIT< zbbhn$qnYGxmXI@xZ@t(qdaw8@?=`E}r(*$Mk7IcI@OVX(a1@Sq-rH??{LgXxaX|Yq z{>2Kd=M?|j68<=fC1>N=k8U1t?FeRn2!eBl^h}23K_|6OQrhQ1#@Fc$PzdyrA8GR< zZ6V;9?kb?AZHMVQ#q^ycLXsx33qX~H^7Z5Nsu#H$$aH#%^aG{=EHSJcCaS~KoFYvY zDua6U6uo-V<!KOo8mItOS~rQ-2eK=1^wLaLIhIzYkP2jl87Dc$(f7xLsw(8&qqHub z3?#w62IXgzH%SVF19DGC@2L<*CHZlJRI^K@Z7Tl#i#!Sq9J<gb`IkrWFs>kB2va(j zyzpES1i<mQ?^9lfQ{W;E`Lv+`e6L}bpdlE%&I0NvQX2Nj4f_Kc_JP23?l<09C?Oe1 z!(kc93nm%3hSUJpCSrsSsGWsU=P^=wTACnNuGDp&0F<cn80{=n8f34A1BQm(46kn3 zDRjx=Kk{DRXvDW*^59J(ibMoFc_8Xcuup$*+E@?|uh9`Z{mHFp{%P9vw2zbdXVdvW z5w8yA)gjJ_!Z3LH^IPL6#L1c|1lejH1<RMF>Ml(aOdS7)3hB@>^2Cd2$&^$2&T9I4 z9=VW79>qv1xq={dDwf6RFJ2ti_ovDI>4yFc_}4I(PX8zGohm?mXWV%2H0_Nb?Tx_U zas8S6?J*DZ{O?S=zqd5q5?7JeE?>)qYr8*9yy#3=V>*GOuLX(to{eW;9T3Ft%y`}# zuMJA)RIR&+|6RHidT~DgPZRH%et(N_3!IsGYmPKfLds@Rt$yw36ANz5=8x9*!_n?j zuAG~EcZE@;rfiuiWT!Kkw`P(jq4dc_^w<-symd@=XOC90i^oK^mk$_wyO_Rx1Pr3r ziy%9kjy~H<8W^itC%u*HqJu+Lr#zX11f}FoKDj%U-AyCcPSWcbexaA1S;||p6=x{5 zyGV8;>CY8W6PLnG{kf1B``5_*Ygt1gfup0dh&Y32|9ZJ05z<A&B1F+N%+qyI(vT!* z(3$1DcQ%Adi~-!17-DZCAgX7&d0jkzl=E<9z03Q{%<7|~7xetqcFmG<YZ`x)%UhOS zE9RdP{%Js8P;xl#AGwuHJ_sURF}f@J*waGNwpOYdOY4`BmIdsgiZFV5?G)|bOZ&HC z(lC0<h1@bjguS+xTuNY9LRjZs_Wlt>zp9tUEAROr#TU6TO){ZgCe<LQ^qI%JZZ>U5 zH(VMcIYZQj1Wd#ax6yy|Ck=Dtek=w=ViH|{KIt#Ois;`pI>`UZdsBtE57{maf}orY zYMZKEn>Osj|JQG5J+E5EtJWFak_&Jpx;|TO&@)FddninJ2AEETOz28yl6%uxbvEq| zgc<do3psa!R`|>RGLL?_l34sn|1qp;##&~}Ez60S0tyeTBOM84?K%3Vdq#2GV!4m( zCnMX{*K_IX>3{;=iY2!~fWcIG=rc;60c-)G@0!VU4Xc|mvz|TjA*IWiJ(rg4pmjm4 z)}8Vq(mjJXmg*f@=)NoA<VvuR59yUudL@l^hb!G-%BX_Du5PDSw~)6NNVW0A?j`>U zv33wWLHpqh`e1>?<Mr=*(kq!t%OpB<64s+Z9T|kZ7VEHS2OR!Qc_1v;kTZ@6{%|(+ zrJ2;^1k_{;yO)42s)SEKbv>ZHPC}Opl7()PlgHxbal9^xG;EL>*0Y9*La-(cQ)3(A zl!mG7|1JF+Ch#yJ*fvCyhA4>G4G}`z)isQf8iE64xgk`MMbJj0QEBisHu(7f>EP1n zrEByA{t!CE*-5-NO9;$n%vd3pD=@zBSUDJUDH;+#Bs3g>*5N-SKn(h8q&-oa$1m*R z!v$}}51$x5!av#G;33%9Yers|$KT8u$<b_+ojzX^?dEPivV&LV@E^0kru;oO?KKns zKclFn*Me^^6#9X2WF12g&sA@F*Nxsa!j3MCfCJ0vz%q;;)>Ri!dD9WT0u=@w@LC9O zJ)k&6)`@<|1af02h+P+8iEhy8`cDV<pTT*t5MLX^dw01*oB0KhAi{`8Yk#m~$?NXC zGM-l^NOvSYl*lXRJV+NQFJ3!!dpS7D<pOd!AJj?c7dPfmzMR%XlByi_#til_K^R)Q zPl6>mgCuJaDP7MTzEVp%xe!UO=i>BR@H>;50$Q7^)bG<@UPnGGqIXjj09ne%>H4!l z++lBo;j%M;o%a*o*AHilX#rnk-5yhe5!y<FD`rlAiPC=-CFwsa^_Q6X&%$5OI7RLP zBPR`#v2lvhI9aU7*EsJzGz()liWCzs`YUfe)=Bt};rx>j{z)kRG35D7{+S>D>ylyC zDQT@b?Ja$$)FAOUU3$-Guj!K`kw}HvXR!($sXag%&yv!e)ULSM{CpkzXjzC-n&Vxz zlhz)Wnn7A7`kYUYOQUpkDydjP&INf_E5_!0YGI_58ZDEJwMShlj;kFyQ**GJ<uI*Z z#5(uT^B#;RD!hbL&(@t+L{D?W?HwMl+$yl-3doJDDDcU+gqedB+1PZ1H0?((8b(zQ zGc_0iQ^0~l5-qGM2Jegx9W7)psJ=qthmwwoV3K`hRTfi(`@Wn8gQI<>**-%(r|8e& z-WeFqDUbtVF&%_si%Y!ql<xXjI_zR-Fv{XUqQguYhK7WXIf~>4ojR<Np<>+-!u()? z=+x=E7LezQbwedmV>0cUO)K`$ioH^&>^f9ThKg_l>r`o{PC+?zhB=O*TAcutNJAz1 z#-&PQmf*@o^7Bm6wUBk{)lP%R9?+O0HD)W0<IGX04jo70Q06$Kbm~c`fp+TUp)=?R z$05maP;f_0*BA7wrFV}w*7D~YwJK#W`pu;pLJfZyO_!~CUNVf{<=Yq9m3L{9R({fP zNUL0KHE8!YYHw_+Un7=<7XETRxfiG4TX>GZXz}DE>6K`2uvi`1w3mszVivE6=WkA` zU`>bL-Z*eVtIQU9ftK3h8`9#Zs~C@nOV*SwIc9movGm4br03HCafzPS7WPFVs1kHj zm<K_SnO-$Pu<?-9)}-Vp+%S*Z{8b1houh#(_hzztaTGZEuOrFVQS@t}Ee{<gPgY4! zRwIozYdkIu?NK@bf?Ffs$fG|krb7inU?Yyztka!#dLVvBx|hzJVWeU+xiE(e0Y(5a zCX?q!g<P+7aqEPx75w=E`Q~1J|15t}sMYvt9aO81;r}s-|Hs79Mi0D9;U7lv1sYOs zkL=|md$ei;|80CnhLEYXcdECzSOUn0h&%Kn_Pxl=L2pFT4|b9dHVef-d-r9k8MlhV zk9nJ)q0?JnMzk;cQoQ&NS^Nh;sq^_r0smo{HaMYTjU$YIeM|^~+JCpkD((B}M<B7V zd<z%hl^F8tQ{;LE`Ct{%WCYwIAp70<x_6V5=Lzcb^>WKep?_%q#oPP^=_HPoN|TOs zETtV;E=_tf$hF+$Hd>Rv@|#i9^+JrZOz6wyKTLdH`1~0EVLBg4<0Gpi{zD@FAw}w6 zsonI~ZjHN_&#xy5dSY4FmjgpkLk4@_mDITjA<cpzo1@;_hQ#^omzP`S^P5wC0j64V zD)T;CFLH#wm#K|R9Co|6${FHV#9w-dT3Ak0t&`RWNTX%@(*XC^v8q)ad;O4dMMup* zNw~t|mcV9+Hd)sHPmz8g-}Eb0*9kheoIOW;D*k=FO00S@N|u(FIbUb<9~SVDWkdUh z_G=aU-wX5>cty+WeH#>CI)>cLQ7RTn*MfE9B@gN07W&0B_Lmcs=hJ87<qyM|9g6vO z=}9`X0dkV9@7_zhS4$rv7<Dsg2_wC6G=RRo3sG8<Ck;hk^vz;@iL41pUI7$GEYLji ze60LjZwiE2@YV!!E1r7G@2`{I-^ijQJ-N12e{Cau9gJwcyhC4mN_w_F88J?l>)bk% zc4UU$+o3cCk)}Y>6vUbWVRdR6BQ*uf_X=E{p2RVMImXLfnNR>Qm_)j_i?VRyes8~g zZ=c=~AvuCZ`{)|KIR_QfyBlIz9DJ}o=plGaN4uwV3%4eGf((KwH<sOr)p`Plc58JD zwD%%K-<1~JQTY!t|G{l=%%It<=ht@d-_I1fQfXnu0s2WKbtg9#>2A!RF6xL*)(jF) zmRo#T=^EBMk-ED~lHUiM#$7D&(xcoupP`obibf4;P19Ywk|c+l+B8$wG=tuUO`JN- zV&aq@<2N((kbi++!3dWQI<^k4=hwFLYa0gP<XG!)<0ApQ+?$shc)4B-Wa-<@W9Ypj z?D`aP-Isi@pMG#0l)o!M?n(rDM5gT%-71dKhijCpF**}Gz>n7{kG)M@0i<geme6xA z`MH_8QpZ{LY^Bn_o;**`wVc&`kW09kHo-GRZ=R5E9w8%;Grh>;eC8~W|9cs|TtIs% zxp9nKK0;nk)@R6XY=cZHpfevHr<b=FjA&4h2=*xb4YzIag2@zZyYEKsn?X(Mi>T8T z+}D<Dcy}3VN;NfQU~>#8sU4{vPQAXqkjirX0jyM~tJ0BXY|1cV>x`z+^m71cLJTi` zpWj>&g;%=4p(Ri%@KU0~ez8%Cydee>tcoGDmbOjgKOd{#$%jik`1eQn_lNoShdxOW z>&)6*<xSg{i3M!6-I)u&J$NPZdckI3t$Vpmx*sFgZ<p(#6qBLt^pg}}46?ofFx&S< zh|tpRs{H#Cj)@-?*SK^X;kTCXTMLFmY6FE)!1~}$B2iQk!Df=K&!N}nBGv)`Nu0au zO75DZTgl{Bw8^nh#8K$UgK_LZgtS0fNFJ212S;FxN2KU}SdZ(y;eoxrhF%OKRq?{( zM}B3Xr3rFphK%s>D?8}xQ;0JQQs(^}<$ksfS(+}#nk{MikG9jNKCVx_N#A_6Z-oSN zq+)=3n2@(-(zoL2Kr*$DBV_@~N3#5pEB(k@$XD|1>GEyFs}Y1oU|)_~$Mg<g;!u$B z>0<-^n2BDu4!qos=$dn>W6q`d0tui$AF4YaB03$O)^nL|=Q4y`z74KtflaUubK7a* zf+bCRy_yaPr@z{CRNr(&-*l8T9dT<qNSY3)P5YImeZN=%-Nkvq{uw!soFZG{!mXc4 z+LCBnGHEI?0u4!<P6})HI7lXPv!d&YA@xxd-6D(+2ofhg%^t}S_;NqL38INvpb8Ve zuwv^;Fdh<NL2%?k;1Sjcj|kVXqQZhF7;shiXQBV%Ik7~439v6midxOG`Etb2Q9it% z5AQ<>aE<k}pe*J7&Aw7i;zZjz+87hqt#fPLp|=LRR+uK{CSLcTmgwY3xXJa-5eb^D zF3bqCnGs%d2w#fH9ZfLO`iZoD7L^rvpqaO9K$<;+qLXxnz+eHv2K+`c>tyPMJ`r#k zN%Da4EX>u-rQXcyePFv+^_R@a%kdG!4va;bbTV|1-QPx@9gv?L6zgpx#=PD{>Rsjg z+mvVf0EvevK!)<wu1z>8-Or=<w?l3o%EufUf<;)am!+=l(89l2Megs@*W+nwY@SX! z=9Bx!@Gd(NQqZn^Hk3z)woBh^lAj%;_A|_WTB_Hn^(yPyA$_w!e;;7`B5FUS4s9e| zI|)t>ZBd6dlW(@LZ#I*zf?wVsw)`2|MuxU3Lz~Ee01SPz9dG~ZLH5_t$wI%`OP`OY zW65(J`(_vU&3w`^n#8%n_3jweg}-r{zk#(pacJ-T5^hbF#00Gf9Z{%5Z2G`muwRe? z5)E3%WaldCTn#+aTe}r&Ea@+j>%GZavBGRq5&WG_U{NdldD}eFbrSb?onc+44MY27 z`vGD<NQd^&p}lNqkK9#4?fYf?glCq@_PxXo&?@U@LRzR;#oLmfo#4OC(`xeh@ErbO zw01dMdoN5IbbYj)TPJ^WQhT)ESKgln@js-ASy7RHev0l~iE2Hmb4=0iVYcnYmEOp% z(|n56D26&@Vcx+UZU(pjxu0rT!&(gV!ZDAgHF8s!?AS&U^tBuH2vvSPIICUptXyI$ z&7zKZvNecU4ogi5Qt5QHatE;$A-kdpNp>11=<7;C_<Z+bW<MTKSxD;_D~?sk8K}qJ zyVF&mK0xyXhQwqv3KTuauNT-kGhjx-3>jeX_Ez<>5vVL!BRVEa9YBFA5(Qdc`1<tc zBguI;;sZOs5k^2o0iKo^VYe*btgrCb)fI{`Pw`*Kw_-%ZlKaI$B20I}VJW=g!ZZkM zIW!W16T*@m#gJ6AeCGncUad~5g-cowv_qIG(m%~3vSY(a$9my(b0KbxsY>G#<~Swd zy($X0Jx8|hA@+he_}9=Xdp_yfz?zRB%FMn4a<zSDq&?rIYa8p@O6>)-`4pH)^GTr( zx!bpb5ZJfr?OUO7;`W`eVzwy87Fn@xHQM2+#S^0RC(ND)FCc6#9%>6#b8;lUe3;*Y zrALsu5Y*KJ&UN9R^BILjBGM3V6x0$c8Kh=ZJsQ1NcpyNeWH0;*!&Ab6D0qLBx#cu} zn8r)z^PyZM_x-PAtvq`mh?g#UxTYaoOy8=YenluRRbzPjM1UFwcWQ$>hIIpD_(zMh zC)@d}P5jkH!O*J4Us%uTrbu<W>E*4&wpY<gDEAX?kE-~7J!xMko!g+;b_?6QplnrB z_^ngQu$yk!jF@dYY{oJg_Mk0eY1bafo=yhF3g%k1%r?1t*U&OyksB<mTdQ>icBk9Z zg%h%BL%)%|0~56i{WPAum&(clG5Qw{kj~j?o-L04Ng~&<*2WUV>HaB$wa<Yni?o{b z*RDvx%33!7Eh+UMp>HC`Mm(!cq&-I@XCbYY$(uVcC!K}t&z_`xlJsUMshGh^3usHY z!E%=VHJJQ<4to%YWN#0nq|!`cpF%zkrjJgs#;p>M7B+*bP27r@5v6O7Yu8?V*B<ih zp!)29!JetuGrT@uD*gJj&Yn%|OX+jP?O&IvUBFBnQS3RRk8Z@?0)Pa;hbk;PVju<A z5OJx(&LgI;;5wsS^H2Su-Vdg0WnujNqwQ+Do7pWHDqhw9foXrxj|_SuUgpLG(i+6x z$v~J}JL0<Cpuo}RXQf}K1C&Uv9wZzAg%jERjaZMiTxwe?`B5NrMu+{ychN#WsQL?U z%agkE<?aI2zLE{kRfcB~dzNHhPLOvVsrBv9o<()418TRv=kIjUN+<K5OSIu>-xhGo z-kxpAi*YTwe<p>;o7i@!w*ATnv*Zuv0r~}d0hD@4x|q){?xgP|({~o5m3^74FI#<o zocw--0HcwQmJ(R@9t6?1mat!^D!*QWb^PuLwbw*j^U)V?2Ptod@UWp&Hk1K$izE+3 z(Sc}s>mWeOqN_j$?x(BO8_1IgofC#*Ptp~JWCn;RQrtim(8u)FD&4KMFlGE^Drr4H zk;SPAw(^xi#jKw7T}-f?iraY%7<UMn(3~zerzOwDrAfS=vf&v*Fl62PNjIgR?!&Sh zP9XLS738~R2AoOCrw663vwC|bwP%p-eYg=*(2+*31~5QOy7yw(MgD%``e`BUR=I!o zJ~BK9(#h})b$F`Of}K!QY&JrNC)4hOIDo?l(l)>hdX@fGAuVZG$IY;v2C(k4CP*A~ zco8_iNHab>Pb}J+>*p6;PPruatIwy{S3Fv+f4IBmfM{4ve@z<w7-0obq#WS`caM-B zBv|-)6S0mVgPVmITJz{a;Tv9`lI{g{+id>)JNF)=Hge+Kwfub~=1<r9S0snyrVks( zV;4MX*{*BYOLovwBRv;Gn+m1YW0GTwN2$)GCXP9h*V-pjYl(c$Pi{0z)oH9f*0sr9 zK0m?VmME9bGg`u8?Wd%=6>9Y+^)i#{PSMik-u08^YQqe^RFK=65BkrTg5b51^mTKY zkOB1<6@w8(9Yh}kc;N`Sa2S69S^a<9L>IOjFXZ`=FxV^+umqHYm~9wrS%MK8gjIHj z@xvIX_`zg>O{)azsOA$S+=RUia?-$Z&`PH&+h<C4#0?Xt3&z+9>Y>=@fS=goC8sNK znzEe2BIq>wIFU+Fa_S|g!Qj-ZPJ@i&?s2R;+RN!e2bL%UsjPjg)E!N`$I+JUM*MW@ zWv4;sH0kXrl6|pkPm%45K@oKLhGAeiLU>qr9Ci^f*yqXiIanhtX9TpM<|BT4o+}ua z@Nx;*V*vgN=~Fm01mPDG9`!W?<BY!od<g6y2~)#IUEZ~+_rg@2!nMU*Tg2a6-4oao z#NS(&j6SH{(s0_lw8XzzFAN~HtL}{#C><<6ohz_kz}N`w0?8EMA{1a8bUHv>Ody|Y zb9wz#b$B)D34%CiU!d9(nKP6OY(_l>wh?Erkeq3cH+eCOw6AyVUM$qmvCJ94?5Whg zg!G88>)}n(@J6}EPY{yYE`A=>N`12G$!h*yl5+xop7POnCWuk(uj?7DI!pjj=W(XS z45o$qoSQ0_ZBwizO4STw^D=$MD&aG#ee+%-t=THqY=g5&SRv2vaXG&i^iy`jBtniq zfV!!>0yH;;A_U(Bd_|*;x%*uj9oR^o!Iy7cjA|*v8x`5`0=k^;#X^^!F>+4?-q<sS z^aO*wzDOnQxk@Xx;MgVij3xFI*Wo?nMGkRBE8Q#Q-<}p6wl0dF59jZN^7le|Vzl0z zsu2F~bM0x}YkqrH8!i+LuA6>uCI2p?XM%Iei?!O-O}E@}FMn^WSip6O_txIr!2cXQ ze4Kxm&fg2xI%a+9t>^Fg3Os9F`n~lKsUB`14>yY_0`}e_TB@5<6HT5*(q~@enI~G? zxd|#bwu-98zJOWeO#`v!0h}%mY-M*9@+^b=^9lA@7URj(I-YzQs;^$j_$+qOU%3l> z172RehrK<P49+I^&(KmzAD$-fhD+~8u-l8s?TzyARHkJT?ncW@^ub2*36(!_2Oi&_ zJd}tfm5fA-X<L`U>ldo_Y}UPnbZ=(%<-lavR}kj{*MU6(ZcpFcMBm*kW-<hp0R+8B z?b%pxtznp$1BLRyF?FDjI^(2nq#2GBvO`@CzkS+AKMUH{|0m?Q<Co}8n^#NVj)xg) zO*a3})%?#}oCR9BDLEY%#x(4rS~kox4%Jxi#wrwI2~!#q42?z1nnCMx*rlzci_)t` za>Z4?upRbx<h3#K^{g_Gb}U31HK}wRDL<(4)wHw-(+CoCPcEwnk}vKzy%FJ2xssJF zmKvwH)?oLE4f>jsQb)e$l}YOPc==L+?&?;0d7aWUF_X{6wkpJ?C)O0<I4q5J4b?Ru z;(DsyI)TO!&E0HCQp)34?NVB;%GI-Fo21iJuNkhj@Mk6yi>K5&kF+GfSOKFjeZ4Sw z37Qsi?>N|N<9NAoENGGtcF*O~bE!rNC_4y^>zU;Ut;u0Ei<R0CWB>vE090DV3J1eg zNZll<b`MR%JVEq;uy#l!N=3ks)Rszt=t2@!alF8_Em1jF$ZFE5glO36t;XtYLc$cc z3(S`pxv!|?D?=qxNcDPFy@A&3U|529ty$>PqgiEb6Te#xj5ElWAPgdTNCa;8MJdA~ z^^2yDBxoRBv5;ATo(9ZJjJa(Rx1KG4ur0*)ae$^##2Ls)XekzgZ3;ghr?W3GG_R-4 z>-6@y@R`}?d)ns-HQU8L|Cc>kAVJyZLQ=KQhe6gp8%b+a`|MGYPVDjUN<iDy%XVzM zG(`fE5Z-t@b~cF;5Ixl%=3x&PeSzMz`<fuN2MB8CYqa~xcHjmPngMBDU?c5;qNN}w zFihDN@IH?STogeFz9bqz4Q6nYBLq1emFdKyh0g@tAhuEs038=rCJ%`8B78v*0Q>Lm z&u%mSE>*iTng4Nrn}L69(i-x<+}!3NWN!PvHJ@fxz;uR2HOu6}q^Qmab}3WnsrG-l zKNop}RkaOH8dwF|u<0COdV`UBGwxw(^M}Kiu~vYhiv-2D|Ap6|VZ+DBOE=OUue8si zFHQ8ND@xXb+>-&ypbvFUWIfvvzui+HJEx3BWW9_QRjg0q4mRk+M|_6k5GC<)9Di+# z!UvD>!Tmx|s?UC!MO)91*0V~R2W`WiqJ`wMV)ofaY0y9i&GcP~{Il8cAE~A`ciIk= z$u4?MWgm~%|NaDhl7x6NJ-s6#fhrj(B06ImQ$9~MJjte#585Qt4+_Z#MG%Of+hg|q z%LMi>!L+rQ^e<;`9F?yy1Ru$W^!+ok<4wW7I^;jLu>aT&s#Z5$kL0p%XQB(=&W6A% z42C)16}giYEji|v>|i<aLZ<#g2C(AOaAhg)TdE(yCIX%)g-}jLJY7_B!-L&`Rwj)E zfa)N$7h6!+iFCtT9`O@0J8nXV#7KYy9T_P=M!@F;OO|d3zbNJg@}VHnZjgKfIRX3( zBffgfE#Xcd2^r;>L>&p$kAy%W9f@VO<04;xBbfIgyf{et_ay%Af<GN;18DfWF#dV$ zU&iuJ4)B2h{<o}=NbON7vb;g<a!j#7us-RJ^~!gue2&U@3U85P^8F16fJZy@9#Uhl zYa{k&D3aSSM+DB#F`b`ZLtt+f`P*i=z1%|EJ;}rU3a^hRBjd>69QJZEgY(sPP#Qr> zS3z(c1-$R%%e=vOt!fefM9*JK;on8_&nI95GGX^{oOPtT*6lP@P6mqBtuaMyHAZl= zTjQ4ang~*LAf$Aaf1{fg)r{z#xy-Ipun*Gfev-C^mgZAQ7@r-d@9*?8D%Il+wP`M` zXY@#4!yx*%?t~dj1fjI%D@Zzt2rswRBgWP(A{GL39bqY|yFpP}S4*vH2!4R(;a;Rd zHMC+s!aZvBDsX~PVH)mE!G&O;99@1;A~Yf2fakYPq^*;nuOcGDag;lvXj8Dk3Ob?K zc2XOxA3Gs`52moe#mtqqO;Flhk&V+CsW`_fgK2CqojSwZZ0lItBGzt@;0m*?Goa2A zo^*nxX4AnO*%=0DLT+2A45o%SBPH89(w0uz6?HI68eD2@XS63o?;Pve&UEb(9Tc9* zHtbs`X_#MwSpX^7vXq`N$*@Q|j`2SDL&fxTLqmkIL)c>x)DMe^n2!nqo&=%^Dd0d@ z1*H+#T%k`2Xn{9oCSc*nnF?Cl*ul#J_{B5a376bBo?LOVaT<RR`11+r=aVAqU1RS+ zi2P5B)PGtGNl=(_Wa;yn?DNSGq!4Z=>OhCnrQtM?NG!JaflzrM3~c3tS-O@aJ#q{n zTJXF~pP1=DtU53eU;ju)KT^rZB}Q1t?k`5A@Cx?F!=!Nr(Wa7fdE|Fl(!)jcVUqO6 zLi)!;<PlKn`J^Ta5f!A*i(c|#9f`Wjv54-am(NhUN|68XTqOByFR9N>jz)!hc>6k$ zlXt)cTNluaXVr@()CsyxZJETDA%*}SRof-0U8X($qYLnJWk&s0)fu6)t(0vm&@x*N zv1LonSWjmRO8ww!Puns<`Nd*hMQpjmIaPMX2|2a#A-@wHGI}WyrMDa?i-0o`Ya<9| zQ$zKP&;0qbBmCJ>g@3TMF<C3qS&RNTEjbn!FIA?no_Gm4@3f;-J0Q2LCoQW+zjAwm z)aXX4lcbseVq3)CKzfveq%MY(?WP}}#z?#$K;B1!DfYo6>4Vv%Qew!6*tUth8?E%E zld5zXJ5IobUzRC1q|rArrJhK_7ty}c^vwx!%~Y}Yo8EX8L6GL{;u$nVwyhLuhWB8e zG6?4_sNP@!!s(E=?P8&DXf$>3JF`_X7E|XJ!K<0QigiZwXUnlgJb$_TSB78de~#q0 z3Pd*eX4iogn0Z)Qu$w?2XHS!9(@f<L$65bO);|MM9CFV-OOgj*g7v2@5o${SY4Im5 z;JN5t1RDE~9()-p)z4t{Gub<5>4OydU@<9;Cxe@i1%LGNXNT!$N9eD@)tXHCH~ZjM z0>XxsZ$*|J;TfS{tTFz32vYt_znji}7Y}2R#LC_L%6*d~Q9*C+*r?i)bhc#Kwgmjw zmMUTg)wVP0?R~WIFdIBb1`p^44@zKzwguAQLDssLBB_9LybzdtdQvc@nJp2MKpH#* z(-Lz|H8|r)=@D{!zOg5b^rTDY_3XSs$TH1={0=fmOk}Pk0&7(m8wEc8mnit=cLynd z8OUD-@e3KBWsAQ9%WU&{jiXQgrp7n$yezlR*YUkl`3`z<E(V&^8R#NnJx#T(Vq}^> z9|V{mMo%n7!Q7ia=66<*5rKprNh2faWbhQdxQBk0OTJq~os)@e4$d2UJtz(aPbuFm zHjFG~ws^EakoOkTpotG;4W9aG-Q5LmcwA)KP9zl)WT3^bA&E3b)61D27tN%6ui74^ zUI`;*AbLJJY|mvS%t~2HBs&L7^3;W`anpFRR6Cv3rW(7jZ~aX6`f`I!CQU$Z9d>C< z)L)<Ktu5PMV`io6%#~B5i_5ToJt@s~LmK&(ouqs<@B<D{>hNOLqp@|n%t$_2k2Ktq zyb(!cogCZjv(y^tR$1UuKijKP=g}C(cx3iPAK4O0sur`hU~{t4al-qJJt4hb($z!4 z58Cqi?KvLj7L+Er8n7MbQJe@LbVG{L$~3hy6}lp<z%VFdPofM~n`cChtL97{6#bdM zFbhNqgZ8lqjK02Xqq%Got&Ef^qtxn?v>IExK-d)NQe@T~CO3oSdkG^nXeCS#25iJv zow1~Pp4yD44R5^)2@UgCVSzpnI{}9TT+mRx$D?{D(EWNyH-ez*bVkyYCDn~(<x{9I zYk-@LTF(Rxmlold5FtmgVoh;ia!up#L1FG34Ym>1ZV%KH98NZw-0_4_q`D^ojfXI~ zN#j1(#=S0$nCSbdGTJqB{x+RQm(7}BaplE8nIKDWOUNr=qjjKRfe4h&9DNylUSvIt z=_1x+Ibu&{105?uq=mRYhVcl<?!jaQpkBhG-LjgOjR&It5aHtqwxSohgAPf85ZDi= zxen|}#K$CW#GSs}Q3x-tEe5KjZ9)iHjGIwsTQsvp8L`Yls4Z0NvLkqxUN+m@6`P0N z2Id=Nqmm67<cqP~>rN_lr<A&ra4FOkC*gTt+)o?k(uM@A4*X+vd(3qOLgfH$uG<c6 zvu-B>LUDepYuz?C<c6r*hG5mY&1&72)zF41VwMDEO*kV3m-DMzA}sNwE>n<a3{qVh zt4k*hs%rz1v#I*hMY_6FW8D%~mtv?}>{^$CN9&S=zt8|$n4E=%2JkzGWE0~iB1eTH z;1Ats3{(LTOzkHcjZX=6z;$%|7KkR`im1dG+%5Vr*o>qIxKEt*K;}(7$-<GSkmw#E z4hgL0FJ1v`rHUs}=g}ni?(hhjF*+bXm<vLc{^g%I7EAy9HQuo7!KQzV;V;s(8wr{g z@5s^0bFiB!#LM%}x+ss@c_v$^sp^cM)tz;27t`c?-`gr{%!8S~aiiRrr$Enyd|;&3 zWk&0Aj54~(MTGoFu8nC@<8&dpqdSb$09rk2=2pCuqwt#B*n5rEEs#f$!EdQFl0`?B zlDfIn84d#H3{iTH(tjfAt0_pFhN1rTbfxzsy*P<I*nw1B?7=Qrl?~E^P1u-^{NXHl z6^k}IA>!zre$p%O3VCFaQa72@#gdWPf+JrDe=vjJ-+W;yU_!|07yN3%tMMZV4-N}R z+=WT!6I?nrQA>fTEy8Tu$6f3EB<n6iX*A(mX~lB)DD~nx(>Rj_fMz|Z-D|G)4Xary zU*BWonGqK@MLN9a*KJqp(@FKFGnT!ob%)mlle9(`t5$CDgwgc;G{QYd-40rLjI>UY zub$DDo|emID}zRIVJWRmPu`9yOnv}PvV@c_piDPGny7<DX)G(!l@*E^Bi8%@m`1Vd z1n~rKr8<K*gO?X10{^`*HNfa}$bKRy5+Iyv=?bZIgW9l5YFLL23uwa@o!*3fJ>B7a zLtnZ`v22<Gq^^iF#=y8yJsy)K%T{XHX&MDX=s_EU8m7q&Q&x-dEH#o+;Qg=^MZN|I zAYzn-w5?iB62603cY3LE19ps3pl@MD|NmTcvQU#R#J@Tq$demZ1wgkjZ`ulG+ko^8 z!aVdu>kvYU%VL%M;@=9xJmO+%WB-VbQ)4?$sziug7k2WpMSK%1yR$$HeSl1nlxP)O zfcau=2!?fGDsR{=)rHZza8q3vsS7t7X`MH%gP$88N5XqrhqYv=1B_TEd+`p0DzlK< zleG4rvG#zecE5nk=xX!zwL5jSz!GiqMny#04lFgqSPO(Oy1zC{0CUZ?OJQ1MX0oX^ zjnt;gU>ZKeyLO4GHYJ?NwF`w00>}6=Q)&~1ka}T0zYF$lL{)-GF)l}-@nZKDJ@5o$ z#Frt(ctdduVqUPx2vh=`dg`H3YU_g<i>?xOg&?8ajY^sw=9UnxVxv>{YU`_Q{CT0) zc9OrH$G@HTYMaRC+7X8RoSeZ3?tU|Xz3C6hq-6>_x0RH6v(k9H|K1vMZ?$R?`#oVm z6`%W?boaMn>9=^X7EgZnq%|T|7gH#7w2px9U8z%8hq1<VveU?5`6lGyYz+6q1U&q3 zwuq>p59gDI^Jwj2R-0^mh$L7^=(*Z?q!y=Bg$)H2zi>dkVUnJmVb4yRzc{RG%tEi~ zl}3s3VC9P?yl;{dXe@4M+u&uLMXPq{{{@3$`tOpMO5$F*+p{{`*IlPfsygAKi>}xq zgxZcke)o(FuP-_fQ$wVw5O55J8KnZ<_X`N)NAp|jy{l6HJ>;MALKq)R<O5qKirhXw z20hiOvb#5bvXMVo=Wgch5xhNAjyHwCBusvs`1CCCUkM`dW89yYOqy-jlKqDTe~3)p zA<w)Yeg7a^{Qd0j{kB9*-1hquzdsv%Nq)8Sv)~0fp970LX0D$zH+0ztSs$F4A~gFS zH~r5Esiq`7czVRL@Q!_#Quk#3Zo}tiD`r>v2xr{Sf7X%(ZT*>A8Ra4)0jM}SbtX9s zZhDwZGc7?U$>ap#fq^T*7=n?|12Z8o2}>xDgacCxj=Pi=34Q#hfRS~+gn966o-a#$ zqh$HlpaY)-Sl0b!rhnI1ZTX+`6H5IP`6vFGzh2&4Vv5b?5qf^qef~6Uy{ODj?vF=9 zoBo#oO@`_I4f}1uj4ZhMAc6eF?QE%k6i?%at&7Tot=@b&U*W42TX$Bv7FK%lE!Grm z?q)xpd`_|KdurB>*$-=R3(8!o4_c2jM3pY6-@`*H)@ajfGb}l&<=ZP#_;hPnxoc{9 z_Kh)?b&eeC;z~E!w!3V~xlGN_8d$cvZHsk-k&ln!u^y$<WNYl?au!(Ox2ST*&m~ra zu5^sTk4dHL)iPHXp6EHvO`C1x$CT3KXrAby?NoTaRBDX$R<w!w%5;w@D&MSIC~2}W zT;*%VmK$jK)<~-{ru@v@vOqxcv9_ZP->*D>Y(i;5g2j^VVmZhUCTnmekxE{++}}iH z?Ldg;H!;QCO*vs)252?oS?(ILrp_`=V`q&#Nev^~OntgsIxdn21#%Xw_ZTPfbYE-u z#FZq(s2Vo-nk0YIn94PQm1|u|i8qh&CsmS`U*&z!yst`GUKN-?w4$n5O{v;t^$g^z z^?oFn`A7kt24E_D%rR^QJd;7ZpnBRG6PIKQ3FN`eNt)6;hnwZHl*!ue;2a~*Q?(dR z?&`lqJ`THxW!~iS+$57i&P|FtH&HtsvB^Xc>r73cSxk1>i54o7m;UUuLNdp9O6|;} zwJQi*Cwy^?n^#2by0J(hxQ{clpA>2I*O#vMwe0feB-ph)W-9Q5o^lk(qeaTr{DSxC zd6Mre*)l(-bf0IjQOmRy^GJK7C4Ppc_xEQ!T5ma#6r)blhsl;iZzFn-aaBK7_LFAI zlbB_j@0R+4jQZm<>JM{&hiXZ$KQYS@2;Sr7@N#p+Yi4%>b2ncY%>CW{0cdvY=cWez zIOGdw%0`n9_GXw%X0sC}7b(!>E*Z^fGB<fzShNq(ihWCqBX~%lWdXJ=;<CD*EtKb| z)79~EYU2qlwrpOyO)YTOwl_sZHqFx}hvd2Q;-*#pO~)t5)-c%3BTOFhY}Jwh0v05% zXx?pZK2W6hW|P&@X(9ZquQoZ@h+H}Rkdf~;A4D#B_c)^^q2;KtRey-_b*)ljD{7<p z_-lIuBjnP|I3|S~gH7Bg64A5jBx#&^I&m|pSggL2h!$qr3i`*!5?^(Nyp1hkJjG}o z7l=^V&0$)iyA~E4Bgd;+VVGq?L|J~^9M9=&p)|+c*X*j}I}qQNWb{^6xF46e??q}U zzBrAKXO=m>?u<`S;cR8(CAQk#9#OGYug#VDhPBmhOW!I;vcwo|%6Qwlkn^+oCd+=n zyYuTyET;P9d}W&t_p<8vL@i!h^j5m%bj2~t?y}vMU9Zo!q$5<H=(X|gnv3GCgy_wB z)o&tG0|FKJea0*a4l$@dpRu^b5n&uiB>W`F1JNa636zE;MzNh{%E#y#NB%q>N!?IU zg(u*65sp)t%GbgnRU$FY9>&oFmU~O+p*(Ok$?jf$l&Tf7&b`6~e}k7O6=O*#(D4Bk znTTB})4NmaVr?U}ZsR`Gx}VW9I)?%~ORdGe)LMYQyYWfu_|{bzD#nm!(O?~qvyl^4 zlx66s6+Fx8%2t(+QK{7>4}2iIho1A}jxZ!~&jW?r@)^C5pT|=P3EyfM@+0&yV&xwp zt<vK?Y4q`N%Qp7t2xX5B@M&H{*a`R%Y`kxtbqRPBmy!8!RychO=+omASKZ@i7y5W+ z7Ja-RSbFT|Pag+sYxR#em#gftTZM^UUJ88XTpmmxNbdAuI9zjapg3>(Zj~ON(xxbn zRZ54FLJg0i)8wJ~d?R~v3n~Egz|ag68=9)nH&@>~$u60+WO`{f&!d;t#?wnX=OJBS z483$>JiW|3*<~Hzo-W*<UXI#AFVD)Lms8+!x_q3^qOS)Y1g08$3%*{=1LzfZZ5+EY zYcjpEkWZjjHms*tcEO`~rEoKSL&ljm!lz(U8SN~6>+EUzM&W#Vm1fYZIzM{V&4i%T zee~)?EfE<JH`A+Uedsk^I=kivY|6Ey7<z5#W_oQsz-QOvR?zE7_`7@~y}orNy`CRO zuOCIO?M}}G+8J6lpLQkkT-vomp<TOTY1hHs0MS_&(C$5@hbY+hQQETu=G0xt`FX>| z5=L(%a_m#TaSy#wY@{~|!&oniq`d}z+G|!=ulr=$8$O2hM(v@!bKGg~JdQ|=Wfp9? zYu-d}`lr&Hk;m!HL_n7p&7?OoSJRstt-I;1!b$YD*t0@a>1`vQ!fv}!dfU^L-uBbc z+W{Ns?J3LY?L;k;-adAc_IU<Sr01r6{<~@4Bp2E@m50#2RR9^?8KWJcch&{dJ8N+7 z-B6BVi5I<_zKq^o$8m5fh~7QTQ)$0HN2FnfLi?BUBeZ`DqI&a}(EcNO+JB7ip!eK@ z={;{Rde2WwX7{$B!S@d3O83rc`|17Z5%lR|9etXl();r{p-)$6)9L+!7<zxdWg&$# z!J7_D<&+MjD0CnL%^%plj1HWPpaW<5TsG*7VI3SFLI>kK>ENuzbTGl24kjkj!6l3i zrtz(GumJ9zz4);oCyOO%@T^21urc(3K9xRj*U<-_ar8lu#Yi9IVo^UhdXPRSUc?^i zqv%6#i9Pf)(1(Gmfw7Y5!x-K_o{ms1v!}?I^0c^oCmqQNp(D9@PzJ+}Db5Jh;Edt0 zw}+~dGsto`k~-bQN(^5uzdt7r3SQ*>fRFP?z{ly-@QGL31j9$>Y0}4XnBn;*qCC%c zr_YbOnLpOMPkufr521JAP4rI_3H{S}zLtKuPK%{q9+K&oC#}i!%OuBS`sKC&_GOke zlYYM4Mfv=&Dt&&MvM*q6`~sOzzA#Jl3vWI9B8*92jFssZF^qmO9)G8!k3ZieYW3p= z`sXNdFu8{Q#gMm_5c)m+@n}B%yUS_%_drSh-@TLR-(jEpJFfii@c{aF<vyc79!9f& zz>b|i_?YPTsL=OEvgwceW9j$Dn*-@L+k)8t6uy~E|F$-k{%xZh(y?j@^lyhTfPXt- zDWP9^X*&8<a2cat&EH19N}WT$%H#_DY878dzuIisN548|37}satlsqNv8(9UG0W-K z6F1VYr&*4%uUD2%qF?XPis;v;EkX1fSIbKJ%~+mDzlr0n^qaY>=r;>a(r?l-**7_* zne?0e*17ascRquD8+eR<8(|^z+u2yn-!3en-=_JoZ!=HPZ`XUVZ?~*u-|p9p^aVjJ zU+D0z7l>P;FUIgJ`XYu;r7xzPqA%uYo9T<(QWyH-$b9zVByN2vTT<vtKORV5hVk9> zWt?>veYso|2Q`VlJgvFW?_8(S?>wW~cRr;t^t;%KL-e~G%W?YMel3`OccwC*zM9H| z=&N~rGkukUet4C2guYtIRr+e(Y5Hn2e>j1CpPOgK>`J9S`@+Ef^K6s(r!!iN;ioNp zx%9JV68))Qz01#Yt?~4ybiSDWlv5K(e@a2^eqO>0-F^;QX836zQGPm+$6;NTN-1yO z#2D|$3YU0CE;7t^te;`z9a|`l_9WqGpEx=(ETi-&MdFD|doO2DUOvAR5`V?X-i4Gm zrf4fDFWaXDpgbFmi!y}F#x3|dZ``{P#nBWLMYy$mf`(mDnmi7m@Z;h=x#$$$GzWy9 zSI7}KTpEsIg^HiXiHujckHe84hzYNl1XZgdZaa#(n6kVgU5i1v#j=F*N~IJPten4- z@@9X2n(@jNs7&Q*3*K0H$bxrNxg5r|v`8EU_@D@O!Ou+4HQu~#Dt?c*grZ!5wA+?b zo;bO`)P?bCS5&UrV>XIlQSs`TNhlV80`V5Nak!ovgkn7^*W#UqqrK?A>Vx1Iyhgtk zg*!*xYQ~`lYhux&nu%P&t&{ma9A|2%LCZY82FHaQA8%PahVpZaqfzI)!ti^=G#rIk zmZDsWSDssq4m`IRH9ogvE{a3kNO>)c$&{Dwo=<tJZW(?DiBYJXHW9za@Ub{ttZhYE zprI#P7wQ;qO+wA;yhKgvB6&Q{t_4hn*QN3eC|CNUSdHFo-HBdoEzovTZVfp`d7Cl= zg$aQ%+#1U$x5aKoF^!`UKocaO%ti}s%Z{Shl#61wICr2BMag(Plf`{0xBG|=u}?;a zx6R1HQ4*idc-s;TO<R@~BUrC5MJ>)NlW{m6-ErQeZD#!Zcny=HjA0z=^U;nnJ&O86 z#VAfKM^Unaa)$w3aDEwT=I{~iE_34;_4C_xI5AU00~`yJ@p~^i!;vNi;CzW_i=zNw zV8=;(?}7(LqJd3EVMLcUxMNi`c)?iQ;15E<FGOUc7>C*1kcCOokj-JoZ`g_lk@Eqc zTL3+w;TT4`;e;5$MueO4vLw6`8^}RpxRAo5@catyCGiV8@^~VIGgRu0HGCDy`~!?* z7abfGAENxK0WH63jzi%a$oSP@R~&^-KoNy$aCI_1e|0L>!qw@>m&UJV!!U4l72a@l z4?cf&|9TXK=_t-X0OHqNIo@_H0KI)J96fd|b`Of_*rDTEJcpnDT9UXa1^s(1L)(UO zzaLH>Mk17Jr*ZPS1hIr)kI=AIug}I1UQa-eUSAN6Vu^VF_2qc!^^NGz>pL)auIGye zT|dd!QQm1tMd69L+8Kyh+c}1#PdX=Husah_{m%IuP3+7;r8}1=pjcx<0oj6gZsDPf zcOJk;I*(vhbrzP!Qr;Db!RU&?-07Mk=55yktjMlK9w-)bOzf`J=;5vn{3OZ)d@4?q zpsC$Pj^*6#r+K4{!N_z^z-PKAg9da@oq{5s`=MNnT68ZF_hg`ZyR)`2-n~N1$nFyK zd5_MDwbe5n?dh3~`u8NSMUlp#`Sh&NP{SSw(7fj`M|nfX=b?08j=~o&yb*vQy%Dhx zMQjj?iGr5hSZD#sym3^+$9i?APzWN^>xXXX4ZsI`BQ1J~_b$Y%dlz%eyxvt}687%4 zVE2ccMsOs4GXULvGxPw8XteNV%p??3HH`kvZ1myHWphxh+JIu`Mm%$9DUMEITHJy> zz;8+T{4H1T6@DuuMdG(2p}X)~i@+xMt!%X7R<0PVTlu?D97ez1I)O)TW5-~ATUx{T zZ66D&aC?$Fia1b@+tanvC|6@}Zm*9-v3V?tZ3|H3W9HmGEbciLhvE!ce7l6FGu~&? zQ{Lw$7HeMs*efh(XnEgs^jTkg0Ez?*R9~XFX_1QClQG79OHix6bX2G>2Z~|e3M|*Y z4VVmlJ2_}V-`Q!5-_fILcU&x3dv_v53-3%s|J<2^&c8EF1EIaMI1|NE)b-A4%V9iF zgeiUJj3`QQ<*uGbqYOaX?uOz0ccby--B?VRyOS-8QD$K>-(3!Jb9W8K>+bpl6kF#q zBnB_W(Y}o+jwhoi!5jLeEEKLs;k5W^CLP&8N4C+CO>|^09f7QvCynf;|BCJFw&cMA z{j;80AuyJ~AX!?X1eE!z0cCM&qL#XlTGNF@`STX~WuE2VrUZQGtp@zoM-BK5_M`aY eqC6PgCggy7>3Ai2##Yp`3`B8N`5{m?&;J`5G_K|V diff --git a/public/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap b/public/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap deleted file mode 100644 index 6c546001331cf4f2f68563229f994b55730dfdb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 681 zcmZXSTTc@~6vxk*GdtZbrIZD%TpAX!R6>9P2GbaWxIrlwF)r063Q^h(pg^&$5{SW& zrSX*)1BpKP5qKn<w7>`1s-L7z!8bGc&6%9b|D2f&{eEudws-UEt7}DLB$0>@j>h8& zV=|jtu?=gtP_#D-Msh2Y%WvoMZ;N(zNSoZ)Fs||oM&2&i`A>DHW!uKk@LbZIdTLGm z(NkONGf7KI-5pFVJ{}t#oHjW?&rxXw6yTtkegGp>PH_Sr<Ur2EK^7SJfSCdSPA}%q zQGo7*#({uYEdagWtHr(nek&HZ(aH62Wq_#isFEPE!T`~L`-BlwCEfq*9ib58WH!iX z)XmAZQb@M0@52PtLSV@uq7U7V^+F$0$ut1^x-KHuBRUv9+B@8VJ%pYGgzMD~-B%|8 zfl?fZmxlk3G%g*|*H#k&V(gb*xAC8~SxXKwMwj~8%-PGc7eY}L!77`kF1@W4rCEnY z3Tlmd6LhdJsm}52L?j}$Bb{B)0y?xG@P@18w#!y%!;sQJBXC;;1;Y^~gql#eF8b9# ztlv2fd_c_%N#U?JhfE6r^J!e;(n`T52oi{(KL7%J8TqhLKsO<|CwU;bFPW4~gwcJc zGIt4?`$m$Iq$N9kboalFV|hXGmop5@OJDF}dKoLs`O%E!SDB!^@J+0~FRh|C-k^9> zg1l$QyhVZDYtFnCLT^oFUXhWv!_oW9(A(!&^*JXhRyQ;9qx7C)ZTTdNwWO2w*XBW~ GrT+p)28xXU diff --git a/public/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap b/public/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap deleted file mode 100644 index 1b1a64f50d204b03ef0c5575233687830a1b053a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41779 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 StUu@Nr1Glp*C4U(!~X!6rxDoz diff --git a/public/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap b/public/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap deleted file mode 100644 index 994aa9ef9f50495a3ac558630b0234680be23c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmXwz-%b-j6voe)ncZ&xP+*Hz(8|Ubkr1F5gEq#HZUa&TftD%;Q7LTz1&VEjKn!## z=uIJ*lt3aE-gw`5MK)<u^clR|irXjf3F;Owliz$NbH4MPp{D^~Y-u$<H#3`*x;!3t z`yIF2BY7jSa8wGeCX&&GgydhGj>VT^@u_4q(qZw=&r4_igcOe^qVeVGV=x+(Iywja zzTPLn-aqxB#km20(1^O*9vbVr-`?-VAGzX?%=C|Y+hO2<0VkXF)LuTsC@?z%y0f7~ zfPe{z%;~A`#ZeG<M!JCl2{`oKFQw$IHg==McKIq3orN|^3v$6jX~3yxGwLHkiD1xt zp|^RC5=LdKp8clAjCDqev9fx1QlJhB0kgiJQr}m{Ohllvq#qs?UFRRmpfmk*ZEFSA z5R|E5g!9t~%B!=I2ivwADBJG*-%_4K^F^y>^0V(#gN*vo=5JBP^5)md<AAlCNuP+v z1IN#fpYoi*@uaXIi{(tVz}1UTL+zFtB~S}Z#7Tu*$=c&`8ObhX;u<(WgvKpqt-AM5 z8sHMvaZR)fZt`}XU>8@17Nw74BHt?5T3U13;5)R)_2tZgHi*Ph2gGDy7G|gsSPOPV z=E20<%{DMJ?9j6*R6T&|J%fh^4-C8pJx)~L2t=JkqP{i=8H^jOD1KDe)4!H6Kg^l) z(**OA=?yIQZ(hd&$^9M0{6yGZP90+D?ZFIc-BwQP<*7D;L>uE#d%=hnrl`#ds3jF2 o)m9j49|&se3`?fmseq-0Fw=K)Sb3Q)N3i1Gy<)Bm0aqFS2j0}Q<p2Nx diff --git a/public/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap b/public/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap deleted file mode 100644 index 643f921b65819c9e8c80a97c51fc68a89053bd51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 705 zcmZY4TTc@~6bJDC%wFiW<yMG@w6F~<`ckMg!8C;EhBR7&AT9+F2rjVU5_+!^#E=x| zJ1@qsLMGWwC-G~{q94L%T+}yn^2<5%pUEUg`tf$ITsf^B?jJPtr`c>eHI+_hb#t%0 z<LK6Dz2Ow=dcL$<u2sr4yW#9jgw5k){m=WlUUTYB?bCf|IgUOtxsadBEn2ysorTij zeBMeG=B%mID?1E*rnwJ%??&=sY#bM(VYFX++i(jq+!erGBjmP|60hHslh>^sD3GC; zUAp1EhZJd*5WDP|h6FltwGN67(3xiOfz+ImO_Kb2J8i252+IbZ1!e;?0W<J?dBBLW zmsFymz{tP;L{%gzOVu7@l&~YPGFTDp7_0<V1*?G7z&0q`0^6kQ1DHiw0c?e`cQ!F* zDLYx#j2G<V{jVJ~Bn4rfuyb1*kE5Lc+CzciK>U)R-Fv-F+$BYGcZ0(sh`VKz#}v0Q zb1)ruSMix3xkT`{1~KwyQW0&XA<3=D|8HzL{fl^1fook!;KLwddO4Djc<g5WX6<HG zRYHnNy<)X5)1`<UJO#WTJPfe_-UqQLi8tU$DptTX@HoU8#5%lgcp4F#;A8N5t9m8{ zu}#Ge_&9_E-bKU#ya+@Iq5?huQ3X#x96{8mXh77#ha_<VZa|#Dli|gP_yVs3yqAb` zcv1Kiz6xI=eh@yi)yx_EDBwo|;eZBk`SM$cxErQ+mvD=TM6iEiD2_hFFxZqMCcTTc M7f9G7caQwsZ|b+ZK>z>% diff --git a/public/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap b/public/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap deleted file mode 100644 index c148f67f5e9fe4a108519eeaace89e708a51f8f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 689 zcmZY4-%b-j6bA5bW_FiuTM!Bnkyf_RMQ;j~CYXj0-H=905X4dtf#3ogfzW^3DnSeh zf!=dtd<`$jB)jQ6$SnF0UgLt^nUi16nQtbO9QO0=Os#(8?tR>C8Bg>1Y-S>x%^TKE zZObuAN6nT~X&S}qcFnEVT)XA$j76=31LO96({P=p<9@ygOO9iVjn5Tl3iGAHukLbn zZ?;&<lxIp4nOC-kALzXHH{q2PcuRn{LdaD&CH{b=q%YcAP@zDzdJNNh4;E`zkvQv} z1Opv8Uj;=M=+tTDE<2r2ERz0qHEC-m2+xO}g{DJOAuIHJanOwOmz2>+XyjjiqN$83 ztkG*eBzzyd23`R_0Iz~K!0X^H_!{LK;Omrs054Hq24AB5olVSX$`2QH^9BEO^J^E4 zurMqVeq!sRNpw;`XE^jAlsqHo^j&NcZ$Z_)?eH)U;%(UEF~wEF8p<ZUWqct>FA)5# zA&lHk8shCNn9?5q|Hf9bzll#(c%^d&@c=|lF2-_9Braz!S1y+|HKJ<NuQd8|J*q6g zS0M%<qL6bC{gCrazJW+nxdfp@Bq3KISK;4*uM@cr@d$oj!^mYIH>uo$7=?5odWhVG zAA_ty)*%KV8xSeTeMpze7Gx7*n8`y36Y?0o0zX0ISNL5JeMFwXk0YQ6Gz5$UVR+Bh za>oebKoAQ>LpmUov+oh&ty%hY%B!SO;r^-NB>IuS(5Vu$=ykj^N1_(Fz8@6+0LGcP AI{*Lx diff --git a/public/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap b/public/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap deleted file mode 100644 index 1849d809a679e56414f4e18dce8ca3c41109e84e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmXxgT~8B16b9gTW_Js1`H(_H0)?8W@dl_~pp7wxk}41c(hm@UAPXCT&=0m1f*8^Y zB{3-mlad&NSH?>dZcLhy-E{PKOwsKR;4io!X7Xgtyl3WIjPyG^kW6jr%P*HQzB_?{ zzx%G=AMo`rCRNQB*-U4&c-l9VSV-!rq&}a~7JFR%tE;|?`)Qx9r8Ry1Jd9|Xucvop zXdpBi3H_;$C6<SWBHgj*<NMu%^W^6-%1>3r${xUo$uOdTF-gd2JtbyKP`36C@+uU_ zP=XCs_N(z6k~^P(XMem85@^@%6ewyyb6dIiRVlB_L1OJ4p7yB@tC%G$0K)Fs9@-w* z`fZQGtyZzXo=}O_+PW_H+YUvdvZP<JieCs@0ZW3#!B)W%U~6D0Fdb}~vRSYh%3gp) zD2stbDSM_8t7uTR5q4UKS@!CDa1E`M?D+5<VcV+H`gnx07bv&eI&B>Vf^yT&uQ_6j zDNbX-K8=DHv-Xptw>b3#+p5_kV*;-Ua`R&Z|5h7va~Gupb$LG|Ip6!gm77A>WlNQ- zJKu>(6&R5Z1K^z?qA%>O7IwI&G+df2O*oWV#X-%u-drubS40S=0^S1df*1jBh8UH^ zIQVrcqTo*O4v0yJDVU8gokYxl-+<YqH&zSZAm*r0!EZrm;0;79!E{3;AX4D15NqIG zh!qH(h>Y&3?q?y^A=2ROlGp&h39$uJhUp>V4a^$wCL*?B)}caCaiAiRiXC249o79G zsMG-!x6Ng90$e^8gT$B)I?ql%8*#7K{tj<$x&zJdplw%n2kF^Kp*%udL2`ETsS^4N DWh&!c diff --git a/public/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap b/public/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap deleted file mode 100644 index a83a677c56df6f1ac395d2ba71e60a08b0985e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40517 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 a37OdObi5pcQd`)y42*PD=|ONqxBmnBOHRfB diff --git a/public/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap b/public/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap deleted file mode 100644 index f527248ad547015ad8af1181e646da3b235de08f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmZXS-%k@k5XWbB_paBYlyaq>{Af5tKtg~P5=>(Z;svFEV!WbF6r!{jK!IXgX&?qe zj>cDB3?%yCpWq|8q)kcqH?HbmQm5dX*?e|3Gqc~Boh<+T+|2Fn=Qr0kibgz<h>cFf zVhLj=n_IIDYrjymw+lvcCzH$X=JIcgc6Lmi+1fI$@(V`ZF4+0Krqi-*V{CjeY0f^i zX8(kjcQ)sfRysBjpB!CIJ(`>toihbM-${85BoH8(3V;!*q(B4(aA*1`3k-a~Oio#s zwGwb(Rv4iFTfI0qB5n-@ZgdMxua0nDeOOI!Zs`C60rxTEOd)#z**mhtnc!v%MF-p* z6(b=k*xbiC@Gu9<Pq7E?$L2*JQ@CjW4EEHb*Nr)-pBx;Q-~gd-3E_HmLhsc{hCn$6 zT$IQEkF>5F^DiAH0t~TVTGPgUG!`ssWRhQK=kw<;&tJ%rBFU_}ZEEE0s7mb`wDO?Z zs<lBE)4AfDE=)(Gq#f<<fiP&$c_dn{k|P%#5W$et#p7^W4$2JUQV3O95}G`$1crv4 z)4&H*%?JtW-XbzJ1k9%jRgfjYHVAT%gZ==>;2R9lJZL$m-Fq1t@&KTlAnp?PiF?Eh zF|DKfPGRl}GWQL!Or(jDAKk;RQ&?G&{FMyD%F1V~&8=dUIp5o{@+uRg$KS;I`|>(^ zQ!SD=D|7D|GA|{g_gXM-jia}rFt5nCR}$!bV(1+TtoxiZ1?$@x`YQcDv9WrV#YWOe L`x{R{YNY=HNrj7y diff --git a/public/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap b/public/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap deleted file mode 100644 index e1a988dc9e80be9a0803e22d021b1e81fdcc5b94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40608 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 PXBmj%s`5jiY@Yu&if*PM diff --git a/public/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap b/public/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap deleted file mode 100644 index 47e054a961adb3d97caaa31c854d9b8ef4555bf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmZXS-%k@k5XWbB_paBYlyXo{el#2+t%LwA7))af;svFEVm#0$3Q^h%pg^&$G!TO! zN8>9m1`>VnPw<gk(gqU$jjQ^X)M@d}Y(6`inc45mPL}_EX6APH^PB4%MI(_+#z)5E z@uV@G&8^vnwO=UO+XW-FlgZ_GbNM$#J3FdQZ*3XP{DP6U3wD05;k0bq7#&+knKMtU znLqmS&gNXoO2@|&6Qp;0WO?b~#Q4apDFFIU%4;Bj0LfGUjBsTML{I>CrjD|}zz59a zl=btX1RR*v0Wk2jR*Vjd8?nH(9--;gVa}@$s!7f*9bhovK4P3HMBhJqOO`kj+-#xf zpqry&Bt!)p`xpn_!NKxV?7sV<anZ*VZW;j5-iydpV-D&k2gfBiK<HmYxLRG%*F4D( zD93?|^4R~8)|F%axzj{|82hC)Z2WtD-l9e(_@#C}cmCr1xhyG?%&Oa_M&8b<)UH7* z52~$N8+0?BE6(ZsR3t*$k)B@Y01dj1L`yR{eAx+M3`yNQ0XOBK%rGH^P?aU2$wNvY zHsqWJ-lJ-UNm%z5kf|YHK2@lKED5$jkb@lb2S5g2G(_{D<(&5HWoXEQfNqkwL);_o z64S(#j_zB9xhu%r*TgcBCQ5#E55G)eWl{21G7Kv#pYURK6|2no){d2znIJv>I@aEm z*U_77k-Qn1dry&hOEP+|1oPH7dK(J!ii~?Df!;@k-l4#n&pA`Dww<A`GVlZIt7loP Nr<}CE{urcs`Y)UNj8*^u diff --git a/public/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap b/public/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap deleted file mode 100644 index b5b94852a57b19bcb357a6cae2cae2e7910e05a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25783 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 S(T;EjMeP+lDW<dC`Tqf=EvY#G diff --git a/public/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap b/public/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap deleted file mode 100644 index 026adcaad4c56cb1989bd31cbcf3ad21f3965a17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl9jqJb9BicPktn1f%($<b zkzrpgAH%+?`O%E~Dp)!9Gcq#l=VoBsSKmB0n_)i>8{>XnCWig|Kv4m1*8PIg4Ex1_ WYzZKilxEs5#lWzyu91adzbpV2cs2|G diff --git a/public/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap b/public/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap deleted file mode 100644 index fd4e66e81f3507b190fb2986a26a45c1c380e302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26327 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 diff --git a/public/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap b/public/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap deleted file mode 100644 index 075efb7054901b1022af68e723647769cbe1d556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt9jqG~;$~>3>*2_)AhxfT zk9~fwLi5~Q1}+vx1|1$o21W)s^F|h%M0N#X#(mZEa~StkuyXEaWMbS`-#oX7aX+sB L>wZCNru|X?)N3(k diff --git a/public/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap b/public/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap deleted file mode 100644 index 769d2142c03b10680800b3b6ae883e27fe04c5a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26451 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 diff --git a/public/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap b/public/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap deleted file mode 100644 index bdab208b69d287128195eccbd084c8cf4ca658c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt9jqG~;%025>*37Jz@Q+u zua=K}ey&3E+*}4O7Dfgg9!3U6208Oa7Mo;tpu8~SzUuiojQc8BIrlR%G488xo?FDY OpI3l&zo0eKeklND@-b-u diff --git a/public/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap b/public/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap deleted file mode 100644 index 6ff8674af772af896d7d33c7addc37c57822f8a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27790 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 XDie!M@tP=Qo=5R?GKGx`n-c&3T8mO+ diff --git a/public/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap b/public/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap deleted file mode 100644 index 8dfa76a58eb720dd1992c2cc9abf1dd4b39c5a66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl9jqG~;%1@i;l%x@VcNc0 zKKADSxe6P;=Q41yFf!=yFfuSQG{%{?u-GKAKWdoFxUahTe-7im3Rcejj7*IC>Nk8Z RV%*Owz`9?sv6^YW6ad@#ITio_ diff --git a/public/pdfjs/web/cmaps/V.bcmap b/public/pdfjs/web/cmaps/V.bcmap deleted file mode 100644 index fdec9906621904180f42bd5c91f377397fd6cf95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso<EBpOmT)Tv=R_np>>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=#j{(sKmI}pO<lOASct_U?!Hm nVJw1sqa8&R6Zht}+A}ahp(KMmn8n7>XoN*Dkx{jjaUT-^bqy(L diff --git a/public/pdfjs/web/cmaps/WP-Symbol.bcmap b/public/pdfjs/web/cmaps/WP-Symbol.bcmap deleted file mode 100644 index 46729bbf30f3b2f176492d907fb8ca3f6a1e3026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmW;C-wMG{90&04*(h8{xuKNv0%qLpa><2~3lnNLW=^QFb+%;wBoDUVIgjE|#O<e# z@tKd}B$vniA>#wbv3o<?cDTEXw}N|lnu$}&C+9GhNi2g*?5vs_Mg0F$E=4Nj<%gaS z-0Dv!qw&legW>&3S`2gr-Jo93r6xVAssnXnw1B!ZT0%WQ!k{%%Po}{NAH@>d0EGtm W&}LiN6<vl}ZOovd>j32_>FyT<6+0XN diff --git a/public/pdfjs/web/compatibility.js b/public/pdfjs/web/compatibility.js deleted file mode 100644 index 594c20bc..00000000 --- a/public/pdfjs/web/compatibility.js +++ /dev/null @@ -1,595 +0,0 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ -/* Copyright 2012 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. - */ -/* globals VBArray, PDFJS */ - -'use strict'; - -// Initializing PDFJS global object here, it case if we need to change/disable -// some PDF.js features, e.g. range requests -if (typeof PDFJS === 'undefined') { - (typeof window !== 'undefined' ? window : this).PDFJS = {}; -} - -// Checking if the typed arrays are supported -// Support: iOS<6.0 (subarray), IE<10, Android<4.0 -(function checkTypedArrayCompatibility() { - if (typeof Uint8Array !== 'undefined') { - // Support: iOS<6.0 - if (typeof Uint8Array.prototype.subarray === 'undefined') { - Uint8Array.prototype.subarray = function subarray(start, end) { - return new Uint8Array(this.slice(start, end)); - }; - Float32Array.prototype.subarray = function subarray(start, end) { - return new Float32Array(this.slice(start, end)); - }; - } - - // Support: Android<4.1 - if (typeof Float64Array === 'undefined') { - window.Float64Array = Float32Array; - } - return; - } - - function subarray(start, end) { - return new TypedArray(this.slice(start, end)); - } - - function setArrayOffset(array, offset) { - if (arguments.length < 2) { - offset = 0; - } - for (var i = 0, n = array.length; i < n; ++i, ++offset) { - this[offset] = array[i] & 0xFF; - } - } - - function TypedArray(arg1) { - var result, i, n; - if (typeof arg1 === 'number') { - result = []; - for (i = 0; i < arg1; ++i) { - result[i] = 0; - } - } else if ('slice' in arg1) { - result = arg1.slice(0); - } else { - result = []; - for (i = 0, n = arg1.length; i < n; ++i) { - result[i] = arg1[i]; - } - } - - result.subarray = subarray; - result.buffer = result; - result.byteLength = result.length; - result.set = setArrayOffset; - - if (typeof arg1 === 'object' && arg1.buffer) { - result.buffer = arg1.buffer; - } - return result; - } - - window.Uint8Array = TypedArray; - window.Int8Array = TypedArray; - - // we don't need support for set, byteLength for 32-bit array - // so we can use the TypedArray as well - window.Uint32Array = TypedArray; - window.Int32Array = TypedArray; - window.Uint16Array = TypedArray; - window.Float32Array = TypedArray; - window.Float64Array = TypedArray; -})(); - -// URL = URL || webkitURL -// Support: Safari<7, Android 4.2+ -(function normalizeURLObject() { - if (!window.URL) { - window.URL = window.webkitURL; - } -})(); - -// Object.defineProperty()? -// Support: Android<4.0, Safari<5.1 -(function checkObjectDefinePropertyCompatibility() { - if (typeof Object.defineProperty !== 'undefined') { - var definePropertyPossible = true; - try { - // some browsers (e.g. safari) cannot use defineProperty() on DOM objects - // and thus the native version is not sufficient - Object.defineProperty(new Image(), 'id', { value: 'test' }); - // ... another test for android gb browser for non-DOM objects - var Test = function Test() {}; - Test.prototype = { get id() { } }; - Object.defineProperty(new Test(), 'id', - { value: '', configurable: true, enumerable: true, writable: false }); - } catch (e) { - definePropertyPossible = false; - } - if (definePropertyPossible) { - return; - } - } - - Object.defineProperty = function objectDefineProperty(obj, name, def) { - delete obj[name]; - if ('get' in def) { - obj.__defineGetter__(name, def['get']); - } - if ('set' in def) { - obj.__defineSetter__(name, def['set']); - } - if ('value' in def) { - obj.__defineSetter__(name, function objectDefinePropertySetter(value) { - this.__defineGetter__(name, function objectDefinePropertyGetter() { - return value; - }); - return value; - }); - obj[name] = def.value; - } - }; -})(); - - -// No XMLHttpRequest#response? -// Support: IE<11, Android <4.0 -(function checkXMLHttpRequestResponseCompatibility() { - var xhrPrototype = XMLHttpRequest.prototype; - var xhr = new XMLHttpRequest(); - if (!('overrideMimeType' in xhr)) { - // IE10 might have response, but not overrideMimeType - // Support: IE10 - Object.defineProperty(xhrPrototype, 'overrideMimeType', { - value: function xmlHttpRequestOverrideMimeType(mimeType) {} - }); - } - if ('responseType' in xhr) { - return; - } - - // The worker will be using XHR, so we can save time and disable worker. - PDFJS.disableWorker = true; - - Object.defineProperty(xhrPrototype, 'responseType', { - get: function xmlHttpRequestGetResponseType() { - return this._responseType || 'text'; - }, - set: function xmlHttpRequestSetResponseType(value) { - if (value === 'text' || value === 'arraybuffer') { - this._responseType = value; - if (value === 'arraybuffer' && - typeof this.overrideMimeType === 'function') { - this.overrideMimeType('text/plain; charset=x-user-defined'); - } - } - } - }); - - // Support: IE9 - if (typeof VBArray !== 'undefined') { - Object.defineProperty(xhrPrototype, 'response', { - get: function xmlHttpRequestResponseGet() { - if (this.responseType === 'arraybuffer') { - return new Uint8Array(new VBArray(this.responseBody).toArray()); - } else { - return this.responseText; - } - } - }); - return; - } - - Object.defineProperty(xhrPrototype, 'response', { - get: function xmlHttpRequestResponseGet() { - if (this.responseType !== 'arraybuffer') { - return this.responseText; - } - var text = this.responseText; - var i, n = text.length; - var result = new Uint8Array(n); - for (i = 0; i < n; ++i) { - result[i] = text.charCodeAt(i) & 0xFF; - } - return result.buffer; - } - }); -})(); - -// window.btoa (base64 encode function) ? -// Support: IE<10 -(function checkWindowBtoaCompatibility() { - if ('btoa' in window) { - return; - } - - var digits = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - - window.btoa = function windowBtoa(chars) { - var buffer = ''; - var i, n; - for (i = 0, n = chars.length; i < n; i += 3) { - var b1 = chars.charCodeAt(i) & 0xFF; - var b2 = chars.charCodeAt(i + 1) & 0xFF; - var b3 = chars.charCodeAt(i + 2) & 0xFF; - var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4); - var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64; - var d4 = i + 2 < n ? (b3 & 0x3F) : 64; - buffer += (digits.charAt(d1) + digits.charAt(d2) + - digits.charAt(d3) + digits.charAt(d4)); - } - return buffer; - }; -})(); - -// window.atob (base64 encode function)? -// Support: IE<10 -(function checkWindowAtobCompatibility() { - if ('atob' in window) { - return; - } - - // https://github.com/davidchambers/Base64.js - var digits = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - window.atob = function (input) { - input = input.replace(/=+$/, ''); - if (input.length % 4 === 1) { - throw new Error('bad atob input'); - } - for ( - // initialize result and counters - var bc = 0, bs, buffer, idx = 0, output = ''; - // get next character - buffer = input.charAt(idx++); - // character found in table? - // initialize bit storage and add its ascii value - ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, - // and if not first of each 4 characters, - // convert the first 8 bits to one ascii character - bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 - ) { - // try to find character in table (0-63, not found => -1) - buffer = digits.indexOf(buffer); - } - return output; - }; -})(); - -// Function.prototype.bind? -// Support: Android<4.0, iOS<6.0 -(function checkFunctionPrototypeBindCompatibility() { - if (typeof Function.prototype.bind !== 'undefined') { - return; - } - - Function.prototype.bind = function functionPrototypeBind(obj) { - var fn = this, headArgs = Array.prototype.slice.call(arguments, 1); - var bound = function functionPrototypeBindBound() { - var args = headArgs.concat(Array.prototype.slice.call(arguments)); - return fn.apply(obj, args); - }; - return bound; - }; -})(); - -// HTMLElement dataset property -// Support: IE<11, Safari<5.1, Android<4.0 -(function checkDatasetProperty() { - var div = document.createElement('div'); - if ('dataset' in div) { - return; // dataset property exists - } - - Object.defineProperty(HTMLElement.prototype, 'dataset', { - get: function() { - if (this._dataset) { - return this._dataset; - } - - var dataset = {}; - for (var j = 0, jj = this.attributes.length; j < jj; j++) { - var attribute = this.attributes[j]; - if (attribute.name.substring(0, 5) !== 'data-') { - continue; - } - var key = attribute.name.substring(5).replace(/\-([a-z])/g, - function(all, ch) { - return ch.toUpperCase(); - }); - dataset[key] = attribute.value; - } - - Object.defineProperty(this, '_dataset', { - value: dataset, - writable: false, - enumerable: false - }); - return dataset; - }, - enumerable: true - }); -})(); - -// HTMLElement classList property -// Support: IE<10, Android<4.0, iOS<5.0 -(function checkClassListProperty() { - var div = document.createElement('div'); - if ('classList' in div) { - return; // classList property exists - } - - function changeList(element, itemName, add, remove) { - var s = element.className || ''; - var list = s.split(/\s+/g); - if (list[0] === '') { - list.shift(); - } - var index = list.indexOf(itemName); - if (index < 0 && add) { - list.push(itemName); - } - if (index >= 0 && remove) { - list.splice(index, 1); - } - element.className = list.join(' '); - return (index >= 0); - } - - var classListPrototype = { - add: function(name) { - changeList(this.element, name, true, false); - }, - contains: function(name) { - return changeList(this.element, name, false, false); - }, - remove: function(name) { - changeList(this.element, name, false, true); - }, - toggle: function(name) { - changeList(this.element, name, true, true); - } - }; - - Object.defineProperty(HTMLElement.prototype, 'classList', { - get: function() { - if (this._classList) { - return this._classList; - } - - var classList = Object.create(classListPrototype, { - element: { - value: this, - writable: false, - enumerable: true - } - }); - Object.defineProperty(this, '_classList', { - value: classList, - writable: false, - enumerable: false - }); - return classList; - }, - enumerable: true - }); -})(); - -// Check console compatibility -// In older IE versions the console object is not available -// unless console is open. -// Support: IE<10 -(function checkConsoleCompatibility() { - if (!('console' in window)) { - window.console = { - log: function() {}, - error: function() {}, - warn: function() {} - }; - } else if (!('bind' in console.log)) { - // native functions in IE9 might not have bind - console.log = (function(fn) { - return function(msg) { return fn(msg); }; - })(console.log); - console.error = (function(fn) { - return function(msg) { return fn(msg); }; - })(console.error); - console.warn = (function(fn) { - return function(msg) { return fn(msg); }; - })(console.warn); - } -})(); - -// Check onclick compatibility in Opera -// Support: Opera<15 -(function checkOnClickCompatibility() { - // workaround for reported Opera bug DSK-354448: - // onclick fires on disabled buttons with opaque content - function ignoreIfTargetDisabled(event) { - if (isDisabled(event.target)) { - event.stopPropagation(); - } - } - function isDisabled(node) { - return node.disabled || (node.parentNode && isDisabled(node.parentNode)); - } - if (navigator.userAgent.indexOf('Opera') !== -1) { - // use browser detection since we cannot feature-check this bug - document.addEventListener('click', ignoreIfTargetDisabled, true); - } -})(); - -// Checks if possible to use URL.createObjectURL() -// Support: IE -(function checkOnBlobSupport() { - // sometimes IE loosing the data created with createObjectURL(), see #3977 - if (navigator.userAgent.indexOf('Trident') >= 0) { - PDFJS.disableCreateObjectURL = true; - } -})(); - -// Checks if navigator.language is supported -(function checkNavigatorLanguage() { - if ('language' in navigator) { - return; - } - PDFJS.locale = navigator.userLanguage || 'en-US'; -})(); - -(function checkRangeRequests() { - // Safari has issues with cached range requests see: - // https://github.com/mozilla/pdf.js/issues/3260 - // Last tested with version 6.0.4. - // Support: Safari 6.0+ - var isSafari = Object.prototype.toString.call( - window.HTMLElement).indexOf('Constructor') > 0; - - // Older versions of Android (pre 3.0) has issues with range requests, see: - // https://github.com/mozilla/pdf.js/issues/3381. - // Make sure that we only match webkit-based Android browsers, - // since Firefox/Fennec works as expected. - // Support: Android<3.0 - var regex = /Android\s[0-2][^\d]/; - var isOldAndroid = regex.test(navigator.userAgent); - - // Range requests are broken in Chrome 39 and 40, https://crbug.com/442318 - var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(navigator.userAgent); - - if (isSafari || isOldAndroid || isChromeWithRangeBug) { - PDFJS.disableRange = true; - PDFJS.disableStream = true; - } -})(); - -// Check if the browser supports manipulation of the history. -// Support: IE<10, Android<4.2 -(function checkHistoryManipulation() { - // Android 2.x has so buggy pushState support that it was removed in - // Android 3.0 and restored as late as in Android 4.2. - // Support: Android 2.x - if (!history.pushState || navigator.userAgent.indexOf('Android 2.') >= 0) { - PDFJS.disableHistory = true; - } -})(); - -// Support: IE<11, Chrome<21, Android<4.4, Safari<6 -(function checkSetPresenceInImageData() { - // IE < 11 will use window.CanvasPixelArray which lacks set function. - if (window.CanvasPixelArray) { - if (typeof window.CanvasPixelArray.prototype.set !== 'function') { - window.CanvasPixelArray.prototype.set = function(arr) { - for (var i = 0, ii = this.length; i < ii; i++) { - this[i] = arr[i]; - } - }; - } - } else { - // Old Chrome and Android use an inaccessible CanvasPixelArray prototype. - // Because we cannot feature detect it, we rely on user agent parsing. - var polyfill = false, versionMatch; - if (navigator.userAgent.indexOf('Chrom') >= 0) { - versionMatch = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); - // Chrome < 21 lacks the set function. - polyfill = versionMatch && parseInt(versionMatch[2]) < 21; - } else if (navigator.userAgent.indexOf('Android') >= 0) { - // Android < 4.4 lacks the set function. - // Android >= 4.4 will contain Chrome in the user agent, - // thus pass the Chrome check above and not reach this block. - polyfill = /Android\s[0-4][^\d]/g.test(navigator.userAgent); - } else if (navigator.userAgent.indexOf('Safari') >= 0) { - versionMatch = navigator.userAgent. - match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//); - // Safari < 6 lacks the set function. - polyfill = versionMatch && parseInt(versionMatch[1]) < 6; - } - - if (polyfill) { - var contextPrototype = window.CanvasRenderingContext2D.prototype; - var createImageData = contextPrototype.createImageData; - contextPrototype.createImageData = function(w, h) { - var imageData = createImageData.call(this, w, h); - imageData.data.set = function(arr) { - for (var i = 0, ii = this.length; i < ii; i++) { - this[i] = arr[i]; - } - }; - return imageData; - }; - // this closure will be kept referenced, so clear its vars - contextPrototype = null; - } - } -})(); - -// Support: IE<10, Android<4.0, iOS -(function checkRequestAnimationFrame() { - function fakeRequestAnimationFrame(callback) { - window.setTimeout(callback, 20); - } - - var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent); - if (isIOS) { - // requestAnimationFrame on iOS is broken, replacing with fake one. - window.requestAnimationFrame = fakeRequestAnimationFrame; - return; - } - if ('requestAnimationFrame' in window) { - return; - } - window.requestAnimationFrame = - window.mozRequestAnimationFrame || - window.webkitRequestAnimationFrame || - fakeRequestAnimationFrame; -})(); - -(function checkCanvasSizeLimitation() { - var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent); - var isAndroid = /Android/g.test(navigator.userAgent); - if (isIOS || isAndroid) { - // 5MP - PDFJS.maxCanvasPixels = 5242880; - } -})(); - -// Disable fullscreen support for certain problematic configurations. -// Support: IE11+ (when embedded). -(function checkFullscreenSupport() { - var isEmbeddedIE = (navigator.userAgent.indexOf('Trident') >= 0 && - window.parent !== window); - if (isEmbeddedIE) { - PDFJS.disableFullscreen = true; - } -})(); - -// Provides document.currentScript support -// Support: IE, Chrome<29. -(function checkCurrentScript() { - if ('currentScript' in document) { - return; - } - Object.defineProperty(document, 'currentScript', { - get: function () { - var scripts = document.getElementsByTagName('script'); - return scripts[scripts.length - 1]; - }, - enumerable: true, - configurable: true - }); -})(); diff --git a/public/pdfjs/web/compressed.tracemonkey-pldi-09.pdf b/public/pdfjs/web/compressed.tracemonkey-pldi-09.pdf deleted file mode 100644 index 65570184ac82fbc478a403cb8dd64a59c0065eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1016315 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�v_)@^!rDg3@1D%o#Hk5G-tYeQE;I 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%0Dz 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%0Dbq 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	}jxZRoZu*Kus6n(8>RC(+J%552Na}G(M*P^O; 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ℜJ&GKJ?cT=j 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£ zspv$}7QJ&g?s>L#`!hr1&%5x!=d3zHci2vbhU`FnRI7psS?NN^7dgr)okR>PCEkaz zrgYa14-Q!YaL7yDqmuu)+2dF)CKI-AHbmF`JhkKlM@4CE=!HPD=>d{bXUV~m>S1aH z;uzu8WnCePTe4zgd@3lLo$+pd?E7IS@G~o`VuE0S9>)|cv=G8*Is_-&(o}5K(KJ+e zt`{uCJX;Pz@b|qm;<i-)bjL}2UEI5o<9XiK0K5MBw)woRWPR1iYxRB4RfcdyHJb5m zukWf*Z;+Ixj^r6T{$D$3zWb7Lk^p&_LWo|aZQyTHvZ}rQ-u<UdTmD*OOn{ABQxp5X zXUP2IiUqd$5^1S;?W&ZxX7Y5$P;9;CyPdhm*$Q3z6v7Y{9=5mw&KHT54_#R=Ot|dk zq*%SGI)?MCj_T-22tassUo&;&Er65&pCj8(9<nQB+QlNli#fm~4GtrSnkb#^LRD1w zH+iR5%0^cfwduWuvf-}X?um&?EpC&E9mW>T_~ad+ao!{d6|E=Ixou_+R(VpZqI&>= zoa;u-#xbw?*~MWE;IsW~^LQu0)U|fnsZB{1csT*M_cY<en<>Ww&#udp+N5;SK0C{d z*HM|>G^(yL{+QljcRUzEi5wN%<m^f|&UG!de2<$u(418J_?P@<$lL;R)8X9#JM-3J zcJD@Wf{m)0Z_&@vjjx`@=`hMDR?LoqV!b&*)NMnxvZ#-$Z8Su<X6<auhcw!I8jI>F z%M8VOSNwU;cYW`@9A$FS(8q?qQF1t&f>vx2D=+2^K#Xy3D=zz*m5aZ}-7VoY%lGYZ za&1TDfJFS9<@ijBovvS3T|CmmL{-`uS*6buaj5=UDb~5Qlrudo%$8bg(F&aLtDPTl z9Hg5%>WLn?wG@c@Ci8h_)f$X1QLR`<J1-SuHi9Hd)k3rULdwpJPr65KG>h;el3hNA z<Ix;X?0S!z6ASj(QWe3?+?>-kCT^@FO7eCAt#y0HiZ6fIE>JZ(D$aOQkOY2%R1cr& zSM}+6kMu-0lLU$8HKu&IiHijOMwu=y>g}|Q#QEpB5qSB+6h&L4c5b<8<|LsCv~ACK zHeg6vy|*)k74RQ6O=HFcFTb8n#(3QKyyyIvx}3XVRGnc?W3XQ9$;cC(A^&WKu!NK% z0jaIWh|P7zi77hk-m?prpZIfc-WhWC-paHM)=qm|%|*5p)sfiGu^u1bUh=N<f^=)Z zy(7ZoVfM<Ck-JtHksZ@)#W;ON6k=C=?Iu#E7Mick)^iM)od=kO-iFLE9q(y{dV_@H zTETd5)-9g6{bAS_s>L}ar>~t;k*D)T3$JrCb)JE$f<|eM7yH*Y`F|q9EO!FB=Sha& zyo<ve!m6z&R)87an9R<NQ)Yg3%8m20D6U8tg8R=3P{nXoW2w7_IWA07HFaZ0T)5*I z&A3rKntxv7Tlo~zv@Ex<yEj_-g3r~xVHzTLweVr9-3l|4N7au}^*SidV?^=zKWK8o z6fqsJM#!9BNEJ3i3JTQ?m+#gXRV*>=(b$syX77|^sFmx~T2DwZv?c+zbRSH-;o328 zt{uPQ+Bq0;5|3EFIWNuKi7D-zcS!~<H-7DQ*Uu1Hij6>-#O+cs)9M>)S4mbx0;NYJ z(33bXh&o3LZ&ku}!{p*!=YQ$0oKaDU>qxpk=B!>|W{r03scW~0vZs;H*NjE`WM}t? z)a<ErBdT(wW|YQket{v2nU5TF8x6M9f5@p~i1#^~Gj<^_3mercj+_~CgHVz7kg+*L zw&3->C<P?*;tgT90MyRP92I}Z8w;Y809#L8_c`PrRw8NJVij1K14?}ECXSF5au|X1 z=(S^JuAVDwdQN<#z;1ipUP#tp^8Do?Wk-h;P;8h?jxk~Z66`;q!i0$U-Pe&z8Xl5c zam@^}RbLoo{fKO*cmgn69hud3ddLZg?Cr65&{G5^^@gOD;0F2Y-n<=acqGF*b5+3Y zSe>i{!~-ar9tk<i5i)}Wu)=C2hI_0CV-K$@>6Ml}s)>U(>huNV_9EnS#>#xmwoq8p zE{dt*y)KgJ5G3(=2*bfVRDLs0q>`*=FOr|#psJ%ah85qbBWav#<}#{0+3Fx>H&uY( zjhl6a54)pJJ7-JdDM_P!Cj%m+SWgh=*4MY`Io^Qf8umP?sYJp*QSA`z`rfB*(Wu2b zk%V=XMQDd(8KT=qv2)c7VKHITrv~cQkaE5W6?J<w`D~3HRfp!+&M_@-2yt80L$>y@ z{D*KwUpq7WsFumo&WjxHrK8uAiqG3K_S(%=XSQa;?j>$ie531W$C4XCT(uFzRc9Cc zjq8<xtfHB0U(CX1p6_UjqH5;d);?_IMPVxe3SmxZ31KMwrfPz8&V~v}MVW|U6HdZU ztJEGc(*d%h6d^`uU=WfhQ5e=yh%l~)jTv$QTF8Vkgd2J7mVv!??mcQ}illK{H!6GK zAuIjV&NrH`ovReKPhdQ)rdi}})zu*<(hBcoe?sWTCLYpdhxfekKV&6s(d;rUG`z7J zHx_CkAQxFdB-~>kK~|p|@Lq%iX7vL0p^A|ZaQ7%l(VG%>C|*QWAn$s<0dje7fXnRF zD!-*2X@Qwex0pE>X(QO)D5^d@Hl*+IdRfjs4`>K2J}!f?T&|t65jzWV-we@{+D<kC zM0CUc2vM}Q#T2^O2T8+n!J{HJ4LxL6G(g;@@{r0V8+*J~xd<xx<03+FNDg&KMoow@ z-Sd=fo<gjOqbvlfLI)8MJohpjtxOq+ss1ezlIH|Ki&&ls|B{f2=a8fz#0i@$*tI(v zA>x^4CeK(h&623>FS0UBD8$;p+9pG`UqW_rBbueP098ZWYDw3nMzVg2YmR6Po$d2= zL}0FKd*paSS4&W9cVAShUDv+Ulk%zNe2(|E<F9^0w-u6R?4j(ys93tOD`batL&O-? zlZlwVhcWW6FG2Ly9kNrB+VMgTfhOf446A!RVa;kDKr6G;Y_W<E+hqL+>feaC(%&dm z^52+5eQ%U<U>{Q4SVwg1YgZKF9(Sh->O6xiD(8#Z<`8D$A(uRX2r$eJqd(Da*##2L z2Z9xxh!s@&ohBgV9uiBvpCtf2oJ!-M;ffj*e?26gfXD^MmpaXD9#TBJc6-pH`t-Ai zIC-JnK4vhQ1oIGu?O(eNY!1uUh)Ut}Q8}%gzJ|~k>j?+l)2iuRD^^xK&l=o~3ZBNG z-;0q>+nSJ8^x7G3W3qp`fTeb(x2Hi0U4+n?x9bEB&QMG-z70%8JcTNye?9FeeC=jZ z*HhPK-1Ej~*E?ld?+%~d<5GPC7ILkbi`3pq5;IXX<z6{6MtZ6{*TZ=1*HRHv%Ycch zdTyIbIp520t<E}ESvVUW)txjzwcM=uNP?=VBGLbx%L~~xIt`sPTHF)nxmi18)~XL7 zEChB;l5VkC2>$$}?d=4Z&uO<eCWTroNMCgfxq8HqSCk490J$+Rj+4^3evRzx`_s|h zBcKMpEoNEbj1mWrN}jA~66~+ax^8|k6=tjct)k8pyb3Z5v07Rf24KI!$b=r*agDqP z$g-;;3ajcqfB0UQEvATb(5hu3lDBCYINQPuUYMb{D45eB@>I9YVJjEfF_Yp2YqtfZ zN0)Mj{Cn5F(ynIuu3O#^+O+1b5}BG|ibiQ&Qgk8axn@O!E)og5Q?@WJ5|{UHiWv7f z-#DYo(nEHVGmcW<cEc18T5KKW%yas?7|u8mqJUOUCgZjmqzfqV56qTnreK}K4!LWL zA@ohpGaHM$L8||ICRA2J%?R|GnT#nM1Lq1}Gx7g>;SBno#{c?wll0*MLS{~Db+w5A z(zsUakBZN)89CI`GLmMTm@!Iwh;&d-yE()b;sE5*H50qK1zy5yL><VANH(`sDY<2N zLLAIFv&#_3-f@`HndZ_ccPa&kF|&GI<K4ke2;k<j5jQ6Jr`^F~PMGB(_}G;cUYAw5 z)Cq*Cac^h98MILeF%ub<fFaSqb84(%$a3aG+#9ha5R%(ffKlymImXyoy{LGQv6ww_ z!!!b43*EG+2i>)7s0fy<SgEjuI*r^eJJ$Sl<K1?|c>B~slhu(L!5(ez$~tY`Fwrh5 zG`ZD^C+VG#&Z=!@=;3J;Z{!S06R*?N2SM)6<PgV^_2jK9kB`Qc4<ExS0lrz@>7g;~ z_dEgL<HgDl*39zBCp7Q76QsWL`$A;AkBI$v{Q8ahJ<58PZLS~VZ|j#;$PqUID+vja zDm<|wpL=`<+c`2+k}k(TipuLrP;|F;)J}c&dSW!(!oW%`#OB=8w}sMwA&kZ>He;IO z0CBqJv)!>o{F;AIBncIj7y}`1twYpm#AH1LP5UF)C^yLF6FWJ^^DVs8WjbKCG-)7~ zHX4TB&k|(bL`8NqPA`h-4ynd8M4*jbhejy<o`-7+@(jb?@dXKS9hsKn6kb%*scSi; z$FE+7u^F~JrgmJbc)(7b#a1r&I+mmT<h{ssQ;=lYmbC>G#zL&3yaleX35$SknzF!~ z6xbq+O=h9?Av<ggS=scELdUhk&MWk+-M*D>iD&aib+<`E3Z1Pd;ph`Tc=&re+aN_@ z4hyC<D@58c3rC~r{nveWyOEi@PpVfmBG|j#D1_LdHKKfCRBw=inIStR0}yrWr2*;B zUK+Og2AHKw0A#YyB89B9EW{jH2FNoDVY@_W*gh~cWL{hs6OqI9^tN>d%@gRuq=fXP zxVlLW$yW#|ZLkq6lpXS%R6|(k6C}Xi%s_0OS`pq^>b-6mhLDV`dpq;fgl1%IHxy}| z@PX{(g4)T`9gR@)g$Z&k=G`*bcCHo`L;I%J`rX^zC$sb|1oq9QSFbO|;6CZ0om$Km zA@gvI-m$M4^~KQ0mK&$j70p30vwJ&xpw|;!*#*-&Vzf4KohYHVui4!R5SHp}5-xZT zc@7j?XAw6D{d14Y{>k-%3E4c$<~BQ1eu_v(yScV{@>c>^=V$oy89PM1$7Kp~AgxcQ zLC_dT8`~7dSPj!u@5&m|RIA)rNaX{`SN31h4YD9e$c05hno2-761|T0Ey1w!bt9U- zgmgyhx~`Z64cFC9GbmI$P!U#9+>obUF6$A=N`jH>!i9UBt4w;kDY*8Ar8Zs@mtL@U zmB*OMZ8FHaATUhSR=bpCo&e;SCsSk7+d7+_sS^RBX?07zW5Jra@ukN>P#jee)FBHB zM$=7o4b$RpqCnE>UKg+>Ac>dv30UoGt<t!!)k68h#sjE!Fll`kO4N?a`;=bE*4kC@ z@|IleWKL|@ju*u&*ndPPi~xeb4@v3enm(ncRrb@c<kB^pk%nqDy7fF4y>=O?Zv?E< z^;OvYhV*ui(E2@J?ZEA)-S>3OI0pAPneTg?JIRj9agNLm>ZMC&8&V0uYj*YHLHj^9 zqUGQtdR7}G^)#eqjprz)%KwJ#ve%F^O0~Nf9^|asT+_EMu<37eKLfOqra3(Ur4sam zO-?qftm{UJ)8dqRT7U-?ju~(<wQSQd6A}Ubv0PT>XsF(mq)=U|jt_IgLo3Ik{N$Cw z%D6dXmX9I%-|LC8zt`n)HcV8zG~bW}DqE-ez6Ibgo&f_QMGe8uQqW}HAo;En+2@3C zp9(XCP#K>DlNK375VV#&!48^6w5w4A&UTpgJB`~(#pVQ*Oskc+*gf8@Qa5UM*qqYz zgxg@8JRS~)qgu1PYA1|#Ps1?xZYv`}!Z!Vy5mxsmDg{ol?L&rjr0TTLDv?@xdPr)e zwIo6r6o>8jSICT<m2sZ#VUabJA?1bE6=iv2;)%9$9ax!d7S%>s8s*IrtN5l8c0vXf zL-u;=V!ZXf>j3MiYR?<ykMg0iZdu&7(;Co`rsk-gHX_S2Pt8h!(tA6R!FxM4!8KD? z8}Fjp7jJa*t9_HzqZK*Vhx#PNgi$*IV*8oy1i6}xqD233&<;C*_%?qzWKK><-qo7z z^D7~JmhZn06OhKiVdY33)k8AchU}0Q8q*gG57Vh(!5HI*?A%L;J4z2(fdGUpo*1j0 zu#}|_E8ae&V$~4)_76icfJd{^?`y|+vpT34#n+A;wK^dc-q#aX$;3l!-q<Qkl*lxP zmDe9q$?%YN;gEfxD;jp?YgYL~NEdrW!}qkxLomRQrO$^<O$_U+x})mSuOWV1PZg4c zn4Ozn!@b9GTlN)}GM{%&tcCAhBz+Zju|zgF5!eSkA<Bt*V~$K>CxqFNiVI`O+7U3} z=-!yuuna{=2a-crWsQoTRbk(?Q!ClnVR1)Pj&)q`-Om$%A(}cQRh-tWI98Q<b$(Ph zDa&w3eql7EW0Pm#mDXN6){>0`6Wi}`)-h8apj7FPzYW;O)k;vG4>zpXE{C~1LEKra zJPilo*#7O1Vk98~fyw-BBahy8tKM;Y#)wz+W((R{acu9ffa-#Z%^hTSeMDnhe|-t- zTwj?ZM>Rc=%-N{c_mfKrnl}b+<4FpIgWeF;;`|d8hBst&a3Ob7c$mPZHw^30@sP^_ zk<H-sM1fr26z2Cl?);5`({bZ8*AFS&UQcd#x^~1_vDvVW0`xeJWK#^7#srj~7|<0e zBS}49E7JM;j*&Jd0j-maKHhmxbIR&g!F~9*Ln|YA%`(~RT$S-5@^<&S^u+|K!JZtc zb|_!o?h}M679A&uGshct?F5&Y^bU>#l!LaMC8NrjKo+WK;KIJuaD+*P9u-OUgw%;n z#lcgMXfpk;8NTOE1a(_g9mxqA_z<RWh_yI*@ZDI?niiOPj}zpgK`;$HbA!4(Rhpv= zw4S87&H&s}-y3_o^f85A*d(fbm}H0%=&3h9ix<&~!$D$tX`YZqSq(J1b3mDa5C-VC ztre$dy7GDoYv26d6&PXiq~6brVNHAhDML48S15&?XK+|wor2kBU%OfFkgWF6>~gPY zio`U-dgqI;_kBTg2+^{h%H{-k`x^jH>=+7m(F$H~4#=o>je^c)-|lfw`%=0&ztJ$< zuBXMvhEyWmu$@sjQKRG}hK5{SUR0}L3SzEIYH_uX$cWl?mS?vPpz%GFZ;*ZcWL;sS z>s+1jhgih5+xgzw<qqF4X^(autUD>9dcnqe=V=Z(`_7mY|9icx6jnic(5hGZl0OQo ztDqeu2v`klNCIOd>GIKF$*-&Kq#hQR9@RFU>|AnTNOuoL6OX?UbT)L*K038AWzQl~ zasQg_!%!h5-)ooeRPZaTBMn2AWrQ>Z1Gx5Mdr{A`xVZE=&^2S&WUNAV8Yg65t%LkA zn<pB{lJ9ZW<87fcj=4ZPNETJOgL-mQ<latH{Ed=eyNMEuZR!wZey;N_p8$|;Hvy_c z+GfLcjck3FXdSXbojq;#bDm2K71E|&R|?o}>73WyxpLiKIUh3T2X6!=-V+b3i|4jG zoHk^|Ll-63DZZ#=nok@Ns3-lX_7f0zyZ5C~-O90%lOoKvVUlwNK?ta2L{Jga*Y3*Q zLOSi*8`Gl<iM3<IG%5m7zI}+G=pQgXLArYxwG(!~4Wr1Rt=kwVm6Q;fyqdHjbYIBg zv!lrxT36&kldf5j;fRz2w&?7IqA(#`y&HfstM75<u1P3iBRGFl?E4T7&TFSS6GCHM ztT-yUqn?))!z~!HrJ`x2r4C?4<JKas&u}cuN^6ISX`O^pv(f<AT2o!5NO8dcmj2mn zX+fXJ3G4m?ohOba-4~V}AT`n;D>F5a6Czg_1>?;$CX2s8mL7BSUjSv%dkE8}pKHb* z+@*zKmGy-<v=b8)%$+nc%^kcLQbti%EVUiFiKtL#2v_);IahZY9`D`b)cD>Kn6NYK z#FM*`A<N(nBI!w3@C=c>BaeIDQ9jfE{QbZF{(q#3Ed@8xnO6&@(>$j?de7AnlpiS8 zLaqG?UAHbYWHRRh0u|6C>3uVAM)ZH^_rLxAzkmNjH8a1fuEYcWBLMh2FXsRI<8S}> zf9&7?(|`FpIsNzF|84*OdkjyD?Hdl=tYq2BA%T{#+0{zhbDMwM9iocQZh}<sJLC(r zvaIjQqP!9F7L}7W#;M&VaL7&wgphZW*r+f(ge-5z^>@B!NL%Pvq<Oi4|AR^#ZetR` zX-2inExP9y)^*|5Zdrcq%CHX;)Et$CcvPnJ-tHzvyDy#Sjol=7?RMov^K@sFQC$=W z5_{CQ{dxLmHb8R#%Nl7^_`5fT>`XmGD6si0I!L(PI9GExtZQlzk=T!Dm%oQBfuR{C zeInZqJGO$^sWrR$RYZ=WrD+nl)rmsP*U8Ilv>Z{Glta=HG7SYGqHZ>oyWKqPa|$;~ zX2H7R%iL1A%NM)4cx|6}sGkNBz<)kvn_x)!z&d2OA(ie85G=gK<b(7u)_pY}J<OK7 zTMV_Y3_mL&4<VnyeXVnWhg4oPqynoUcVR4=w%Y5fZ_18p-wds%g~Ga1`lp;v^~7iv z=YQ?)`ax8=9rcc=7i^~z)I*jS2}xI7yB%T(;s$I`{K#wONY*uT9&r6&f?Jln?7SAu zO5m+;@xE(Dwlw3!l`1N0zyf*aB*VT->lZv7)!o&FDish?nR(5e%)3FRJ9ZZW%uQxT zv?Iw;?WSVQR64g*qq$+imLXqXD_@yZr9~i)6~u>-B`QK*Nm}JHsn%Gd(&{R9av~F% zVRU(bEVl?#K*snXDY1|eGNw1Gg+F18VG}ikff5y7vry})TX;fx?zQu{M}_|*l5b3i z;NKW)h{B3POy<|Ds8>Ygw<5ZtJiA3{+KpS?`N;w)ta&@A45iL#I|;6}%YV@mWY#Jg zw~QW*65eg<ungX)c$hb+a#@FDpjRHWRBa@V=1s7I*e^$P5r4?tjf!dqooeR#qDS-c zj~O^w4(n?r36LGH2`Rze<An9UA<<9qc$}0CZCY{}w?APLv+JugJjRFYM6$k$q+GjI zghO@|_w{w_KuDE@x^`O!l8rGkK(uai=RVG#A?zcRy0V9lN+r%oTLH&5Z2Kg0B0ceL zU4#i4#T)4*24GY!4`|?!3*Ba_pE6^_oDu@9U<Q%X-PgH#pB_h_GG6w+=Au<d!@iA{ zsK`7G>&#vf&~fQQE*q8<Dp-eP_2pT^$**c!!uH9GkQssy`u?PJ2JdK?lqWbz{C%4| zDmq|2d0I;a*%bwP;x)ukA$K$~Y_9jP_%&p?{vn+K3R!Ywh`rz9(Pt~r469;n$Vw+d z@{Wd7;1RH^QP!0&h};bC+M*FHcZ=$L8@hAX0|cae?`g!$y~|>4HIw2?B%0ox)PwwD z=6nS-C%DTj>mb`_$KD$P=d>!@RE)|25l6joVK1m&`OfCJB*26zq<gWW*@4Bz6$V*h zTN2RUeFk8NbIV@X(`qAgQNW@$iI0gt{9C<M&$s7x$PZ7u(X-inO1cfIXt~-6KNdQJ zu<38rEBbhr&ML5@vXvT>E=zlrw<4Sx6Qm=}jR7y;y?{1onju61^%D|#$swy<tR3h4 zw16zxtuah}%)Q^rW>HOOG;jG4{+@|>v&4?RF}(z~Y*Y6cL{&=M(`1{JRo?C-e>PKc zNxLq^8iUfGWs)Y6T6G5e5XVXMgvp)*ZLSq~tSe^8EejR^T|lD0J5IdgL^_gTeF&v+ zqm({Q+<D1;JO+`Xt0VGHds&lpZ1_*9wB3%P6~WlNmBN3vEynEKO5mR`T2}V5Mk>&5 zAFwD|@KRDU&vf+FaS&4{3Y?iZ=d~o&8>GjzIpfc1SnU|@>xndbqkLB`qO$f6E4*7f zcI@@e`G{2^yNsp@cvp(Rc+w}cB<Sw-h`19zclAm%eMGp4b7{mEqPe<_u(E3P{v$9{ zq9z_7Z!+a(Zf~?rOR{LDknPG#lsw!pN%S}s&7uR*6bx?dV3qBS3(h7DDb$Th73fVA z<ffeK_VYXxN7eE7^<?Bj_y-T!NfkXAz||gkWx@YZ38>x6&~G<RS4`YEDe~i<UCVOg zyyIx`z2c=!y8KC0wsN%@aWu9$MC9O>9lJgv4*L<Y#(JEMShegnkf08(Pv=Snyp6Y; zI%esJD@674wFgy{@twsk=A1_VsW&rc?yJ#P>5@G!<@anhHbG2Hta#D2Q!8+)IdPN| zUAyXC6GyI~yPn)7-b5vFX774lvF66f#@aC(?YL=ii+@yNxA$|ZD!ya8^XvD1?oRsJ zF(gm%i(N&<yxp9WtsU+@n{-o`f6C(NaY6)qiwTI`|2L$dN8BP&)N~e`shSO9JAO7W zd!yH@WbN6`UOiDmd=)9K-A+)4IBa~wWEXFTrZ`q`VU(+ZO$A-nUa;opl6mzG6Vl$8 zM)Nok>1sbVD+{GVx|?=L$8ykAy74R)GhFH~jOTWB$Y+iLu7sShzI(C@Qa*zvb85qc zRqV1QF5$b*|4}Wt4|)~3Jt3WPpKvd>&aAH4&kbSEGf6ZxyKQf}^i*?8T#dRJR)%uA z*%n(xui0CXUb-<8ZmdT><*UU)-+X#<i;T-u5$VbUK7+_CEXxtL`}c8>ebKy_^*fy+ zobz-%(vPL|nYI2#FvdHx+lpTCQQ4?t18LE-60P6Ly)+Z$ZcLDUf)8TU37}{u&*{jo z*j-oWoS333tA;S(jB*?ER$T$=v0~MDk2ie4=u>+$+q}yKFU;Yw{!Q?D+63RU3psQ1 zoS6|ybyx3inM5MR6MBxUKW$X(xFrj@+IdL)9D?O;LkJ8nKM;0C%0kTbE|$_`*7p>2 z$ootfacy;v%8{ot!7%W&7CPQdqOst3n=&LZc6}xFAR+;`nLTkcAI6g&m3jvA1=+6I zNlA>>jW@a9i2$`?#kN3h^sG@OW^E)0>$R;_X<E7n(lMtstL`mF97gqAJGqvafde<A zSG7zj*??uSds+pR<2*iWDdu&4p%)oV<M*}(a90v~#yhayD7}Tg`r*YJw-WRoSApWp zZslVu=Yj|zekE;OfFy^>p+?t^QGW<~zY&<-9mzx^&-Nx|#a=aI{5GiMOp6}UamSE5 zIU4eLWMOS@OL(pTpxJ4sslYj_!KDa^T>nH(?Q#BbryRlxxa@J|Afn0zX^{4QtS`<< zwY*Wf!X-sl<>{LgUtDfdAnoJY3G|%kT+rZ_d^HQ}tE_HRPA3<^sQ2Oy5c!;Y9&_i0 zSyo|g8}fIfq{Si$-ZFIJz2#Fe^8XWdFS)uVN0y%Z90g~fB!fv7+ZusdH2^_^8ifL+ zoIjxFUFP48H~|Pk0?F9xnEU4!bGy6$jjF&bq_8^^?`UY7m^Ew<AIBW-niRn9(Wi=c zLaqcLcRJ0750ouA?Gbe)@vz+45Q)WBDlWCL%ehTo=_gzFqU-_=u@8)=v7ow3&WVj` zC0|f~PF4tmz7?)3I_0P&!7ibvM5ztMP!?uA3CtX8=2Kp?dr%T*^l)<hcs23_?j9T( zB0r~}R@}iaI*;lC51DM%Jmi@XNqojeh!OR*jHB6ZVO*^iid^Q+tS3?8qbe{E$-To} zsW?OaE#*oX((5VXmeS4O6Qzc9*>^7ZMGCM}0zN8UR3p#N(AVww^RNGL)#kWDCUi8s zqZ2f^M?D|DAeQmh+9|znEg@MX69ze9Ly(-r*iC#iOx0Q?u%-pmw@*C!Ml6u6%o;f! zk3)l`Y@RGEniSGQRmbzs3ReF>s!h;3t?{5Wxhh7ip3B$TdfDK<zaPX2Ap(Cy?@C%= zJckSo?6LY<h-Arq?=F%;=GMQHm>E!C41_zc?%BmD_L84`J)Lf5`o_f9j;Y&ZU=-G7 z<2pkVhV*RCL<mW92#0pcl6<McB%=M`I3XtFdWfWF9pT4Sm|#pl7<!+>kGtv(>p|a% zLpJltC(~?wGbQ>y$<wdFG)mMvnYwHw1F9*FNI<SdL89t#!oo72So2|r1XY&Yb8T(L z9Xdw4W)|n(P@ObB!y_Nr%N{i&1mjCf-w=twBusy|R(Ev$M?<uS_q#ll$0ZEx^EqC` z7lt&~Y__o};bAY=4ihaYMWF0GtEg6x3E&p=b-=Q+ko#%Lb@hHlqtxrNMmq1paC&qP z2N{u&Mw*?3{L0Raa+gJ54ng7>pRuy1es?f8+5Jun8nNp$;c(incftOB76D{6cp*vK z+Od5Ee6kTLgSb_3Apv`3NqkkQq^vy&*{{H8C(vszA^hSWJtk+NudY_YGFnrdv0?A~ z>_w%Jg<(R(ozP5OKAQJ735=ZMP}Em8b5wMr{R_Fpv(taH;EdgiP|>X#(HsTg@2Xhp zH{k=rcy~PJ!2m=LjyVbBCLN;L$H7UKVe@k^=dOjWqn?<w5L0u}cxU5h0V{L}lV&~M z^KZAUaz@z?7QP^6G-<${Puo+tH$6or9Tg+2BSWNKWEM?AF2ud6J2JJKEX%BV_ls_$ zQQ4hu1k*tbtt7<T=yNx-)!vzTCo6TjOQ7bri;H^lCg!&;-!F9t+?~B5#CnH~+>QNL z-_tOu(_;J=>yb!JyoS9+mr`hYnR7EX?dipo``nGv0iGFa1l*S9k_ld+Dn#t&EEv&| zvmOK_&PFAJPcK*lzfH1s0>=$=nU{7Q4MTrDk%Zs(#B~xtozlmkVuH5|Y};c-nlNUx zduL^AR8sb1GDi6so8qcR#aijO{h2vq*>tKic+0TRYL&%IozBw4*Z!m-PI?J4opKiH ziCL^hmv>G%@3{mJJ(T5Pcozce!~M>~?6dc+k`&_uYkf()><so*2RCWAWFwZp>hX}R zv9m8Ow!T!MHtv`t9eV97@-R}QHLmyh)5)5JJ|H`y+PM*Srg~Q1B3_tT#9{4zbefcL z`;MkJtoxpgIk}%pF{_k#7Zcs66q%pq<2Kz0)Ht?O<Yva!x)MJ>6?zY#>RdMLh^$$1 z$^NH<Ylh8p4Q@eal_r9%V+gD1K36t4KxF?q+FLcx+A2)Em0~uHisY}E_3bd!4lBl; zBAMj|YDX$FIETpxUs;Lqo&zELcNHU!#nZiWU}~mHsM%5Qt<I3u8m4<IE*i3WbBIX! z)#j!Irt64gCi4w|c+wLF>TRbD^A~1478crJKRXZw*PW<XSahd*L}AS6yxSF=EKuL0 zX$5eH+(UI`(f3Um-QDu+IW!-h<qz9$di2y;mm}A16#*f=X0h+h7l53~g)Nblf@L}P zBHyb{Wy1~=hIwmo&q>l|38YrXdjXBzQkJZ|&ES~YSQrkux<K!Wb-*Fr`K+BM@~&^D z(rsb^hRij>q7s<~%Eo#f(Pcw0^i#uh^*$$pw$MgH=mu@=?uHgbo$FhKWnLj{wEJ8k zwEZH2DHk`WT4$BTh}5dI<|1nIl_3I-$Js)agoaTXZiPcpF@EiR8duznV*%N{7f7@% zinU&u6$ty^*LE2RAdzvk#x&~nLtkfV*Nmb#ozMQ+-`P!lE6aUAMQH;%SNAO<B_=~u zeMwZ}Ei^$$k75lesv2;LU{H~a!`|0~`fskX`B%R5-*#JQ9m!JP=XkO=MxR^XN)0lD zbWYsW^A*em<ayT$V;@i0KUS)_mgp*UkBWm*N08$;$hZC-lEfA&@r$+_QUUG|9`t&m zB_B=d;J&vXr5;re->qFap^*I|Wyn282dJ)~4d|Ti5Ww=jhI|arC7l8N636<<9J#MC zcyCNDTs<nadfS33%GYeg*FG<#^bL}gcuT;dyd@AXy0v8Je#3stP266Aza{7?(}wUL zy((MpqFYT4>%OHdQ|-^WLT}%e`H$bbk~9w3!>E#_)#eAxAxFVw&8P{wUyp+cYTtG% zRd3J^U^TSSh?n+pC%Ks6wL3KhTTbre5KAel{jzq*+zfz_$obzEr{al-cs_aUrnt)z zAyolSnB3c7A!gg>s;K(f_2f(lGq_Vh6G>O;DLIqA>wCL{ipuETnA~b>x&2!Pc|=OH z4q**GnOEREn~e@!65JYaOiwGitI_9(mud&2*>xj;Fw|LyjLcn2wQujTBRwrYI5zQ) zW!4yESN702gr6lM;@*C%2I`lkqavbPCu`qJ3?Z%vcIHW=e!=t9c|R6ADzz~em0%{t zyv|xzZE7cSP*0_b>|(1~__CjNhvAIY+#>cHiy=(5*nmD?*YW~Y?p(9?!vxY-m6*2) z&T#{P5OOx5Vu8Y5A-%<LoA*x_DGtl>j%ttjMa6<TAwPR-1IVl!XK<8S6{GAPTfDNz zBtnSI&V@z%qXPE1vn&-k-MM4Ee`;CWFf18tn@=TrN~x{4T8!5X?5(H+R~mMFmPU(4 zj{XbCx#JeA!}9aCTC?LIvM040TmJ0Lw}3ircQ%GA>SbOWf+brBwrkmeXng!^b9=b@ zMHpr{=EF_x7mlH2#<I9Sgw3Fy&Pr_W_b^+$R=9Y*_vUz1K6i$k)YG-&bCq6*N;dS= ziR8r{5~}w^FxI&l|FXt!<*PO*mgOnNN~yDliqkHRFHqGdTX?~d-H7z8a&;VsFcmd~ zRDvH3Bd&#ql=^F6MQ*0&3WKo_581Xtx@3LG<W~hGPs(Z6BkJ{K`q?mrXQpU{;j(mw zR6-DqsMKv3s)a&fuI!J9Dr+48{q}3kMA#f93C5h>8zq6#7FvyJup+XjEhr@Kf5>i^ zVi@W0uN^x*f4$RmQ`z;Q{_fG-TJaO_NU&aGjxdFt$HXoX#KaK)&)1x;@)bkMm4C=< z=as;=>ZsQ4YR86b+ga&+&e2o=yFD<4-5fC&HB{g2Pf4p|M>_uwSKC(98jFf?H!esy z^&ykke+0@vHJv|V?b(q1=4#xZwKt?4sw38PQNCfTO$p0m4-rZ_DzT9k9U?%mc2?+w z6D$F{lhjX6MI~8sXOflGK0vx3va{7Iu=l-HMs(cDDn-QCyhGC=AHX-Wojig*ajgjB z#G@108xT?L3C<zCH#j6;<q!*8I~?FR4Jr~dU>n-WrZEOA7P+2Dpx0_ILN$W2gHZ{9 zy+I0+n=PaWF%sN!gQO|W0y6L7dnYOvDvg6ZHhrg<<|{Hej8@kfxy~9mWOD)R4TPHI z?=&jdide`9Uu+E^%P)i!xIUV_@eIlFf9-a;HQ7?wa8v?CJ_jj}J){dFL%L>p?OeMl zY{+@7bR?<^z(AIOpB1vJrXl@yMD5uB)e_f^l513X1oJU?>;IwHCPW_PXz=Lg!N_2? zET{^*MYW<(K*8nxy>jIMRng;LG`l7r)<%x1{C54U5GrJ9?;*Fx8M2j1994%sb9Y-> zPjvB+RkN*c<8F2~c`|B(`u4awj2(|clR^OPdsu<Do+0k}^g|Blv4>y&?j~A&*XWT{ zEObDD0KF_oG$d;;gh)Ha(2QMrSgHO|EkqNQYM4VX;(Dt6&1A_6G(r<CFKvDsP{d5% zA%X=hlE{~1bFDlv*(sOo=#kWjNc4x?l^1Jt3@%XaU%qAA!2^v4(d_*_{hTY7ZL)YU zpdU87R-BF4By0u)s-F8Dl1S<E`$@+kWf!iU2NKc<+Ldt})kT&K`)>MX!`(tMk&h?H zls{-;=QpFMNKe|OhbOC-O*gZ1_Xaae*k1pCqxu;X?)UkRE~$mMgw+QkCQpqEMrayV zebSi$5+F^7;aa`qko*0w!d@)jYeoy+21^G&s=`-IkRr0db-i+Bh?DhwjxBSGC2!y) zHmFrmdis+CbR$T!>M5Q5P9nSM+_v&FQ)uSU-KnVjaB$30o_>r-M;9(@*-gu7USGeJ z3J9Ux(<L-;UVX?tRuoc1>e}rde^5?sL=36;j!I^<W3s}65AY8)lG;1#cmc3ZRJquB zvXFd?klnDTn_^41mI_R=;VI0n<vFZYWsmm+P4Ki#<+?|t0P7ZRsnlrt>~&@Dnl5Z^ zYVFP|ryY~4>*yIr)@`S}ugxP$gT5`lNAOb{5~v$b7oqEz+c(~<)$S05Wy?f$`5GqG z!Zdd6erJb9WjEZyihSQ>1sqzDG2?n>)jwbbjrtW~ykm#xo>_<86=}QOPiQux9&6o( z@bqHu46zp!LN)m{t(&&R5b^Mc?u`h@MYp2K++J7Dstuc)-uc*0_Bm1H^|YKp1Nck= z&)~$8j!vrlf9T0l&{BuZ|DU;;Uc+{Yt&!ZL=MZVJEfcB}*09!lRFYD*7IFdfdYX`j zBqUniKKD+qSl{b?ZwqP1W{Z{4(Dv);er6>|pzTI(;7Mo5?gD6bZz|x89v<rZ@0sF= zgzz(FU>BEw><uP}tjl#|ASX{;HvHW(T%-h5(zKq)lh^{%i3#y9uU#tdW+(o1ST}Qy zYL)lec_{nlt4j2GA_P7QkF(LHqgo^BjoT9et~1@(UbiW3soWq_r#mQZ0na}j3cJ_a ztxAUZkgIlzLpLP0$)#3&>}s2$x~kn|v5*qJ$bv~5Lu8p76=XG#N$`4V!fcp+7b7ZW zd7C$@<`9J!DLXbzWt-Cm6;NF}n$Tux$EIyrSP;xFNRi%|YLd`07DJRGpGP1wvRnYF z6aIN1Vo;+h)1)WzcESOT1-<W))C+sStV=I86qGO75|W@x@`*v&yxMh1t#MM~^Jc<& z!)Eev72Xhsx%rW*yU+^Zx!p-4jrDP3Kkw0zTUkdlKHH%ao3{!{OES$)cQT)EW%k5F zx-+?*;e|5Q7l55_bA;&I97;_I`ACS-^Q{ejT&0<{ZIRhFQg)+y&!c2(Vfqb%Qs1O4 z&E5SMxawyXS}ZAnmZnhFd;n^0iHrtcZB&buT5~qnS1TDJ6WSIUfsDg?QigidQ%wG~ zlP9@$SniniZp~`<TUSG44_@JoTw>~D1{t?!K$H%T%G_@iXqRiJ;`@$LRddIC?&RyL zqpVWKpm5qOc{|c$a|b*`Jm6L(qR;N=R^+I<yHiJmQz93Qd*P&n9s4AFnVyMwi|9u6 zTpR|+d54QK-2RaqNq~?Ar)6w)sxL^Z+0cE6c`~X!J{Iy44XhKIU^G04MwMy(cGSd_ zk!)OI(ydEEGG@>ANtq4t*ASM#r`7!OPpii&s3?C_-r-qKySs2b&Cg_SWRKlAmATy# zQvs)pB>3!=wIVw2dl)reiQMl84zJyEuVL2ls6?2WF=5r!%D(sO0ok$nTb^D88{X}V zPn;T%zy)=?XF@Yb0Fy9WREvGUy+aA9K+q5(`X0HazDdH6WmojGJN`rR*6UfQc0*@c zs2qtINr8f5XCz5$M^}!E6`KL#5XQ!(oKgo60xgz}hPrJGj`_-%!xFs#yN3nXZ-a$M zT{K^UFq>dR(jre1_B>%rwHqU7)K=cE6Kp3^-4*}VT<OO3#5gz$H1Sv0!t^&rsl=0v z`$@E0C-wGqB^y>YxcQbND?$}kf;9w7G$u%|D-W3s8nRr~VGD2%+k~}~iMpN^(b1F3 zm5rfxKYK+fHqv@;ponHp1?1R-oOS^0#h-v`4%TMx0)^abK3$NVt8mOTnwaT0EYG^c zOm78I+yxx}mQ>1C_oAYb%DJ{->mQVM9TDH~h~oSx7Rs&_D?Xn*Y$3t0IlH5pYIVP< zXwP*-81=OtUw+M2As+ObL5*k+N<elMH{@!ILV8{6+Q}T>nDD`ME?01!3!^YswIgUB zB4F^^EpnhMq0Bgw+FosBNY?t0QYnp69Sj~@SK@fB9mjW3UhVSE`r8YbYvlq|hc(xj z?Q?@<Qncl;<@B}U8pRfne&M69sc(w~qS3*%^CPA=aBO>H5(IfYb+v8n-uxLg+kwJH z4AOd%7d<a$VWY#O-e`uup<0OzD$=f=)S;ci7HO}Xyb-|81S!M&sI29&FZb};?bldh zL?Nb|G0RttlQ9&>D|r03T!nD~QB%AtgtBT(T`qa;xcC)*3@hmu6~1T<P<cUIPeLAZ z5JRr6DNIhIz0!MOu@K3lYv*!N<17*IXnHzq^Ao{4QEKd7CP76u?w+05sBmcnKC|Dt zg6yI~>mr7=XU<@Hk6p`!-w8ICJFxtjj}cC^I-qyVF>v|Xo%7psSE3qY!l9?<_H65q zaKP=Y2~VN7exs82tzE|a)>6B@Q~;42x+CRlQa}2#`3u);ca<c)y?(I-(YYo3A^#bx z-Q38vdUtNRbFdZg6YuMZ37$B#N+ngI5&xPQ50mb=c5UYtTy77MkoZccZGj5awy9DU z7iIfgi!#QjvWt>A`D;}>X4O^}PL3*RGNgi)A*+9k#?8#v7wz6sWpflEs$F~=!kBnS zM*k2ixG6V=(x6c#_}6ZC3kXT^*4O~e5=tQjRBr4mp-hy@k6rIXT;t4e9=lrfd#6+u zvoON7yBZZ#u0q^`7SWqbUT8di+7C=35eH!WkH@S*3ks|5rG4Prf3kcW1^NBCI7@Il z%2>KV(Qt`G{JS)Xp42hl9$$252zI-6iqTU0sCp}T?e3RJvVMe8LVnRE+A;pg4XUM$ z7LUlwNXG~$R%0H|upO2J!4SfIjUPr1>Muc)Kn=)g@7N|suh|ofPU~*qp?cyh!)LmQ zb61YLfw}rKo@Ei;iAaP@x)6RR1;u@L!Mt-rjBYw-Gw_OwoZm7??<TDI-2J%xsP^U+ zgpBA&7G^Gh-GsXrckNaeN5bxxIwDeMg@)wgF>Ue4!seEavtHL~)o@{C{f&wJHzL8} zn8ozZ!Ly`SGPz|cg_9KKAH<5~ke*0V$d$ykw&Gr+5mLQ1A;6|B{o9fvh?Er-^Ca#j zNhyd*_68IxX^<(Y>~};qpfMS(T=^lrC=eoYAJ?Jbb?tzf`EG{PdH)y{SL>+MUN&7( z9xJeRu2bJZv#Oav^+kDbbx?IR`;act4VieyQ>pZZS+r%R(WG3$IOHs}W>t7In%w)= zd(YBdI|+c>sonpNYGL*^<qj-hIbcXHeZ5w+-g?>(Z(gfzF(K*z?qk24i#sj6V7`Rc zj0#BDa;N3*98KfWS+RBuMJ$FbZXK5F8&U*4Dq7MiM00u_@{FWmDFRTb$!oUlgDhdV zuBT?XQ9Vj)K4GUY=UN$l2pzhf1Ou)o9CZWeg^kw^o1OF~WNuLD?hVrcBu(|y6~pzU za(q%TY`3?KQxW>L<5R@?kg}0TcIAxz;FfOHL4T+E^aShi_J~y2ot6>HeuxSI{h;Y) z<jsyD|F8)+?J5_)o+gAt?tOIas_S{}b~CNMQhj~T0eL;;5)2{ruBQtW{jG>aej{1x z;?%iSW>t|@7^!NYf2+?F5l-OuAHw>^2auBA@tGLVTuG3p7vf<-jDA2ZqOKMNP!Jdo z(2ugeX0oq5-msK+R5JCxAF_>Nh5ma#gSU<>W}jnrcdmkp`Uf!Fj$O-4IgDk^@{Z6j z9nRPx!0(4xOs)cisBn3wA)kHT5%GO7DC$IY%S1%BNda(F#(V7`PdisdTu*n;7hmwk zPmuY~vm<;))k#rAi+-gCQ#l1zLMAozu$)A|{Vq~{KJ^kdi3f8D)dXucmWJeAT-U@- zYDsqEq#~+}`C-*0jcS)<qQY+LNmS$1*{bncVW)7lYp9&YCfK>$B4oQwc6SEf$kni( zxdYohTS})}3u{LUH3EoZaY(=49<oQK?|T?NUWA<@5;80rJ)~;qMsQWu(R5w&+Ii3F zdhcpfM4owUuTr1e(GF@%7E(t3HJj-c)Q~Xw-o1`yRka~oH$chH8p*MrvSgBpHf=j$ zt6#S5yZSq-Q@fB7Z9~pOVy1Pg^!2rC%vg%pOnc~w{b}GCb7N{q4<`=Erhe`67sII8 z*ZX2iA*}N2X%B6OJY_}LSI{vIE~wn+=;Slg+#qe`N^Y2GG!o_{lCEGUH#6^Mt5SP= zkOmc|Z|xwAr?pemy-|X`pFxpSI}Q4G9==V`?9)5KE;l3&=xqxPx|}yE4(BOHs`zA- zpw$giU1Nd_O(mnP%G{6}I;qoHfUKrq-&=4br8<5xf|5tquHPN2D>CBDKbP)yjirV* zW?ga3ZX0$NxXxt`%sAQ78eCU4n~jo8I!^4I<g`FOA;oNTJ^^a$Z{#GyPBDy?-~96W zv!A`BN%bgPhFp1XNbjBWIdXDVDy*O0n0Re9YIY@WNUT^g5mKzF{S@zvC5A1P8lSJo zuFf-acg*6_hS?92?{kjzj%>qhAEWY?_RX%lYiswb$uL90Q;8O@-tv*LSB3;bC%eoi znOA@790e`j3-j8U(;hM-JEWg2J{p>`b`pYT5Y+Cv>dDr>jA#)dL=?g6Xcvn^dhN*a z{oP<zF9Tyo8+}L*(AT-DW^M#THtG-oz0=UJd`v_{relN%e;<+NeJ=MqNfyog&~?Q^ zJ1R~Hrb4yMNK}3v!M=wqZ8HR$+%VbTDY2+Zt)QB@6_A1-z!`g=J7s~0D|I`c(bD>Y zs#x2oIF9Sd_3&FwhxL}=9$UDL--*<2mv2FmB2AcABYdKx%%w~XP7O)&7@sI^+{Gu3 zgXDplE|+YN&pK7Kc^_L5&Yh~&yInKSmuBshPtz5pNxWJ&fDnjt4G`ow`M2;&&Dx9w zoKVd*hxiHav_h5*n=TqQx*^r|+e_?S@@>#waAh^^N5MnnuKQdkbsLZ&#*A@>U{{c4 z1sDO%#eZPFt;rH~0ecAwi3?=MspP_w23Ki@h{Hnq*h`{37SN2Ju}z|Lj|E`gjw>xC zN>O<N$GEjqeAdA*O8GrK@z9xH+X7!^TcYAuC&Ht;hmatb&1+E#eE^)?$s<r#Xmus1 zn?jCv;<a%-52<r^m{T3wVaV#tZ-vKnF>)~>?S!@yiI5h!y)uZ^;=tJEH+XrFMgb|W zv*}Dy4>{ed9S>3@9i~1u*02nF4<#x|oFPW?dSb}D@AU}6dKcHd@Aa$D8@T8uNoKQM zml+~6e9|1>EU2J!)@uq(nx`9KwWCQ*FJ!FYh~Vg?D~;5{H!Y~Dc$@)QzJ5!5)fJG1 zx6sHco)Vy3yT=)oz`wkwc6)*@q#W6R9=#3NgWc9LqV5ibNr4=dQtP7<9lHUzppdPO zHC~cVJE5=p+<ri%o@nQ5r_jXeLR7kZ$ni#4KQptwQYfRUj^mKGDD*@uT(Ial2ej*| z*~5AtxOQ|69Ujtk#UV+G5E;D*TPlW8b}Y<RvUeffAs$t3%8>HAAqvnwo0s`>^P}Ug zojBf_Ibhe!1;raCC4VMaiC+ePU9E(u&P!9R-EL?el97gnPCuh1D%>_~soC0L?)9`= z2DP&SHzcms_dP{Sx5O&}i)fKwES3$u$$f{+CDIF5Sh|(d$C-OQxo!E56wmp#MI7J` zf<yChH2<cNcNpCoXvxLPnq5k57GV7Q&W6JHTg)WySVLfEhKA!Z-%ARjXjBI=uhnde zw_Gj*wlHgNHH*QF$olm8!b;EGc5K_rkh2>#lS^w0!lv_ysQpykdYX_Vjpk24Y|6Rm zRS*=9hEV_~d!&Eb0>kdTo}|&QhRB&G(_YE3&WC(g=86AYy%TJK_mg)x;dtNqyV!@3 z%x^+R%_Uo;5GC>S=3^=}hU^`$kdmmANtto|TqI0}^GVA6GC9NpdaW0lZo)@nK%WL- zv>fKHQ@vX+$^7+H8QHb-u-4ky+%tCc70=C}JDOb<r<|OVH|&)lq^@Y!d|m@MGb-Ie z$OQ08`+7x!Gnwe0{a8o{ef#EyJ7TIZ3pPc6ibzkZ@yi%s)Q-lnJi{uTRM=6wF1*xC z9wDMM_gKMJbz2Ugl;~#G?mZK?=ay>K^Pp=bc$!l9^9Hx=d)nJ&i}i?Y{*jZ*&anCa zD5g==$wN=y)879eXcqyF<&x_dqGIQ6j7gf1NzyI<e@}b=_5bT>@2Z`gFe_^qat#04 zbqlfH@jc8J@dzqH#nd3L95&Z9u7}VqJLaeujMfoGK2>a#+uelzk!!n3ifGa$5b}I0 ziHccw*gX~lNI;@dA7uagewXS)<}6_n7{jB!xvKN_A##Sc4T8665{PpDM&wMNc?cpg z#Oy$Ve@AqFCPamw{Z~gz1hpuTT-QFAL!73D5p)fzjBdZ=0a^Sx<lZF?d36UcvB`$O z$j?`fiow$`A$Oy!j4D4o<SnHSlc%F`hX{9R#jI$N(DVx@L#nhn<g_^|ItHVTD&ZHh zhlWBpi4dQ?&4k>;bi)*M{BcbFk%_UM9E#S7t<#S(Y`z8DS`}C?wGPW+8M1VG>r|jN zq&)Z5i7z<46}B57Q5B&J;32M~CD{TBgx0h8*D(r=f4QDqb7`kS9KKOaEDg!9)K0K_ z!YgbSG{U-3wsxLZUr+PZhb&PaO;Mejotd{Pu%);4<k_Yhrs2i~)`>)2Pi(?(RYcq$ zm8}>R0e_>aItF52R<NjV&gaKtbmzLFI&0>;yR3wWE74*m1$I^--wj1Q>{S3%;&j)J zD7xu6cWoZ_T{$QkLUNi5M$a{<PE~T&;UKu~B<{CehGZ4qSv=#RBb0Bd87b6U0L7~S zL{!@XSOE@1_0vrbMun^=hRI14dw*XO(zx#nz_#Ftmy5UF*G`78m9KX?r7=y;+<aMU zC!eI7zS*&8>YaeS+vC=t+f9>MnR2ZP|FJQVVvjQ|W(n&-%Yn7z^ROZ+$Pcj5Z7-mV zz=;Rtw(T9PC`VKjbIVli<~u-w5X}VA-NR$Cy@eOXX02T;_RWs*8$cn%<78)Vsa-QG zeM_zku0hEv?fkTIxvv1x=p*q|e0mk6!2Npq*RsYgdPokvE$Brh(Ud|LO^(b>aMUh+ zm~SzRnHnPZf2<=e)lyQdi_)}pX@P5pv+sLm*(jMei^wz=hO3_FvXy7F0EH}TmvYb2 zh0#ed25V(*83fODf+4FLf;d03PhpPgnmM;k2CzjD#aa?B;ACbw__I#K7AgOSs>Xiv zV9gexfq1UzI`W7@iz%?x3t?}R3;)8zVVWJwYpx7LHC`2nS$30|;>TYR-8`l^Ob+CJ zy>EV1j8O!;aC56Eb$^J$-|e0?pLv6-<nX9C<3~lw9O43ZJ5}ucXZI+)`yOLg_(ku+ zz1L3lY)5K*aP8co_;%eSuAN;xNxp!L&aZMQh9X&UeRYJFu#NAQ))-a{Iz+%|gL2$X z9A;jvALDN^(a`zVQ%5;O0{0CGOCGY&Qtc{3yLNIRu?j4+v}Q951H{72HaEI@r;zR@ zTr*+jw@$r`5EaI1hppV{X~?!5P->HtjcAVoMMR9>v9lGO@@>lc5fHkbY4A@UEWU__ zXL27?Lz4u9^!9Q+Qxw;%yXbF_gy+r8&o`agk_5Ox+P9My>MJrGFjKbDO^zYoIf%h_ zSn7QT0dlvVAuI5X=J!QmX{O3B>#@E0mcJU3bFpRW_v44W(`ucn!x<#LFd{MhhwK>G z-MzD<=Ur#LQL0eBZE;usnAbjCGj+;w4z^sxtpnu~Z9#s~hNLj|?u2GZ&oY9r<kqZm z;|}Xr)~FftI%bAdC0|F9ZE;-LLb7bg@*)s5mh+cTsRwDkL_z-;l?X;VMO@5v4Oto( z!nyfGAIa6q5i|?gjH+gA_TyB|J~cwx+}6Qdh&3n@>sx|dB@W@~#ssF)MUaq{OSG7< z-Is$Ak0)u>eVmdcps(F(!)xcJ?Qy0BUPcAx*x%X-m!0foG9Qa^=ub)BEBwA^L)~QA z7(@o&o}bZfRCkNIh+X>&h~#mm;`&XG{dOl|PyK9q*;;ko^B4g?zY&$`yd^Ii@vLDR zbe&6lV+&SdmR-$6Pd^JlX!Le!570%$u8PX8+)Y^)z@1-+LV*d|?1YJeuq}BBtKx*U z>$j<97tR0P_nuPbZ6wb(277K)<$azp!31tG|Kx93l`aPm9x70@^dG&#z!|Lae=$ZF zXEs3wId2BCYCs6J`c#P;i>+~j@SQ6fE>4FOz}^8>+`XP4?_4J;+M7|GY*`d+$l}(W z+Ph_gW_M~rsy=+}ifgqtORhD{J^CC_NO=R_^N<kbsoyZa6=htdDqDk@6x3;1g&_ig z>-oLi8YYw0N;${5W<yrH1(8%teG_S``3R{F;6}+hxly`u5uX`d8o8eKcGqr0urP<< z?n#?!3&vJ9zIb3ndqDkIVTvlraQ)z^a~uc)Ls?JOro$IoK54_kZc*ZIhT6VgY@$(i zROZg;vx~zaOZG(N;&BIUDfgTpV=FRHJAA#XKcWRIn=MGd!PwOz7@O-Z+2;%zPMjbh zce=TEA@o+j^9gSi&mWCR)PK(4q?x|%5iC|}rRQE8^O-yUdBX$j%QH76Fygy%!OxVn zoQHU+<-X6xxPDebdSCNANqe;*a|R1-bvp{_#>@~N(a{L)yiv{-MRQM4rS*!%>PI~D z8ZD3?@Nyh=U75^?+`T)hy`mKrF|cnfjt`ibbt^6uT127<K26+;Gc>BSqI?NvcFx1b zuVJo1AJzTVRr#4ubQ*&<&L9E-Z!W4!a7WlG-s}CICWG|+%f2^mL9=(sZ|#cAuCIIO zAnPa5646~dO<yOJAfl7Uc(8>|!gf8@=kPj_*DqbU8NW@yTed2seSKTi?)Af3{SwdC z%KP_+R7n?Nhn)p9e&ZUyuB(0kdr;45jp!bl>mmgEB1AmuzV9@jK!>dgwXV7%H!33D zbVG{NY3CL}n*jMNby&HIK@0f+_OMmRx9L0-vL=LS_w)c~^p;Mxe{t6&`hxf9geN{M zD=mcoU<lmcg)Tz62QXv`YzUFq(xKW97KZi2(~zok*Hb~t5W4#oN>BIG#<|qF6#HHa z42ZJ^w7?-tc%raOXU7!NOM`_u6&sUFbZ^GrYZnZ%qv3TOAM)n%jB6)eaif&@du$-j zv!29-8fDD$0#U{JlHFldw>Bs>$d3^@4TqHQ8EdLr*qVz#^x$I{tK-g9w$Nk*;U7<S zuE^tLbaKn>-B>8^ZC*xtNUA8rFDQ1jA(B*E^_0Z=qKalfe^m()HO$OPa`rmDJOs?t zJM0YO`=xkD_Zx;()|Jv>vziPV4D_i~rE#ZtB|sh(uVg(5B)16Kt@=m1rRQUfijAHj zj5Chvp4dU9GVavgE_C)ig5s>XhBr$%+hJ-4vP5B2_t*gBa}e*f)_tyvFYD?;qB#Yh zS5>MhnmvgUjSlZP!am2++XkoT#YoSC;GI9DOmN>X#c{JEkrMB)NAtTgmbui|7Fim} zcN(`ow=w4~Sc<(ruOB+{*5p?+>NBoHxnfx2L*nmjE9WaNBb*YmeewI<5y#|q>Js}% z=$>!F9xm$W!RR3@W(w6E4XGw(h-$eZN_~E8ouk1#k7k!^^s_SQwStgiiCrS<)`>&c zu_Bz$C2kX6-}{Az`~IXm8bxzoyRHnaog&m5)2`{%Q*r6qi6z{c5HNQ%TF=ZxR9wRZ znI#upT2JEnx57SiW8#XR@qubD3e|3PqS}!$9qhdNnY}SoZfb~p%^RoxyuL8^t@*+y zi2SVCea=0Q+b5B$TTDlfrJ}1YSo~OW*=-?fh9oaHfN^u;wsSpEngh8lhwRlORJ73v zj0?s=zUv>!gH4!+l@&Dsu_J|uE!D8=I<64dDcG8VGXevK2?=@pY((sY6Pv5?AI%C( z&@jd~IoJQ5fyUG@Hy8PXRyUvZF`FsmtV_r&h>+P7Gg;Uy*k>62JHuvo6GoLh%=}4x zuJ3vCSx6S;wcD>0qar@BPgJXm4Z-cE$LLv!Z^*L*KzS~8&SOqyK@v<u`W=jrQjP(3 z{w#rt9SE2(InY=Wa*+_o1<xT$OOB?LLWe^E#3$GYlQs{s=ah&8CQM6ic`k4Yv4_`8 z@xaL*p|JZLtLh;ca%(21FmZ_HxX1cbACf@gZ{F<4?<P~{^K#IfPYkJ8x$iO7neAg% zF6F(E1G}H2!7mro&!nF?f)tfJBflt8Jk>L2uP@H$`f~sEoC^Bz7@womNw24LEZ)p@ zdd=pug<aIUK|O|LG_`h+N+oM2wsGf-=h5ZzVgBDbxBCytbf_J_Baz{BuvDhOVHF~U zv6d5e5Sijba!o@NBR-@c(2dis9VT3Gqq6V!J*5cQL&ZQI@RGhkOBwi_>k+qh3M-Sh z1%}3V84zWlM)Q;xtn+->k{^&n=#bvU=ySqPkEVkAhMBiF1KZAY)$)uH(YT|-OHG+E zvU1%P;rJ}%%`Q&5u2>2u$qcypMT7?%!q-hdY?j#c$i$iI2Cyq!Ff#QdlE=1A-1bis zKQzXv9RKmj%~crH*JOWRQ(fG!bCf24vyPrxjImCV35(tk+`x#(_?>5&Q=SE>hioZR zu*`;=+v*+bdp{Ev5xFb06>{NZa<eC}LcF^9wet++&4oSRK|{3=dQ@Er4cS=?=xOfz z949Bn7b?m;Nq1FweaIzbAeGUL=1af8_DW~%D%4)PrS*sGlx2-gbD(**9`w$qxutv8 z*C9)YZv@LCK=v3E#Mn-bz|w4+@-8%_D`z)GMG9`@Msm9#<$Pu_s&lI>UT0~#dG~s? zV`iLH@kcwyF5I&dE0XfV9E!63bC;Wo6+W)!+0Df6D%MIq(pSrLhE&cs4Yo&ohwS*H zA--Gpumv${*NGgmTEmdLhh5)EN(dpfQ&hWU#lzgCr{;`mg<2t3I}h2tcL<ku@-(Wp zpuYUhPAZJV+MO{-ZxgI1k=hOs<g^7M=jtZoS{EJ)`F<vvXO@<8p38IB%x7`qx>6Gw zhr+lKqf+hgsLG|)&NOdG>Y7fCm*#p)MT&Hf53;)n^;7|J7bx$w%^|lcEo|yIs7Fjj zlpW)53UGfqdd?6);m1x|<y~n<KikJ^x`z`Lf%P23uyRJR%Uz?3>JlCmitU%!$}K;i zG;D_kcCQ_UOte8NKUq(!c-51j;LjM?Eyh(%#4{AHTq4A9*UnX^))GQNe`DX{(J-b^ zvW)KJ4X>vaCk)v$n`l_7pBiTqwV&L@d!{|}VY>&(LQRbea;GkHDc}5HLc43{7w-CA z)rV8P4oDW}kdnH!tMF~(M75W)!jh0tF??dOkhxlrQz#+NgwJ4_gblk^djhytZvM_{ z`Q!O~hn6K?0g*59uypkk4(@}J$Gzgx!c>#n2uglWbWuLHDtk*k!I<B*10$VFSRO)^ z)l9`<gPLP?2-AFw50k;UMQ~B#wvT+f&oN(4PEpez@)P(}h4EosAV_?#_}lmHX@L~M z8~5G{I`Pf1xn@l9Q!<omOHk?2lySk_a%K?qKA#3%5E;Y?&mcjR)72{NJ(>{Bn~AmT zt&RKKgiaVgbImT*31H<Pmpj$B+<xKl3^2l*W?okUJWo_FO<PC8X4`{bw{B9{g%@U3 zd{;b~_P3#KR>%<DoW+4o47cA?z!g081bS4vLuHEYY9yyZie!gWcb6E3oht>Ce)y<v z{e<jaPkZrHJ8bgPZh<jScVE_#rLAwNp5$G{3tK+ns*2>2im)!CMkSPf&7`d#vR5t9 zFl`?LbsigKjJg<GWmzTvL*5}$pOa85Nc09kK5w_e_PCMHT_Ht?r^7b@JJJB+?g=0? z@6d)_w6McA@d@efRs-j#CcGiN13IKvIB%GW7sqEJ^>!JNy?xEH5Qpr=%sR?KtQq~C zks4Fks2PSZDUJG)5ZHTT5H?qbjj6W?JVXW309^2O#d>e^SZI06b-s)g0K<20j)Az` zaL89Up0_*m7`D1OR6N}F1w!fTh~nLI=Id#{ZWX3D;(e~TY>3@&Sqh;&?YI{R0RG|A z;ev73Ilni}n@USJT7fz|^|e3%EBykI(d6_*B;pc_4QWa6)jY=#n|MdPr@~s^%4v37 ztSP&M*&X!Rz3ReZ1IWsn8AS^>9n$ORAzdPSUG0iU*rd(cjiVv?X4m)hi4AK~uN`Y( zeTg%*PQG`OLAB?VA<WOV)3)xsjOru8Pc>sm-cN%UoKFpejCTOf<plZtptFQ!<H@9u zWuEoTZfkwB2Iqf4Dt+&C!p>~MGZo|y=~{ea;!(%H*6@rii0azMzXF793~YrHQSEi2 zA?fgtGuuXUY+%V&y&2WrnuXl&*3`SCSM3B?;xI_@_EvLuD3X7P7~z|C6jm+Vu*FtF ziid@`CP2$UR9SZ#A=#eSm%6v>OWLH7Mzv#wYL9`hr`d93wM5;_*L|<ug5A~OMm45} zEZ<hU%d+GUlhbeP^9VqkstrmM;RaywV<0uiy)shQoU2*?u-)Jvwp%|TC1pZ*#2swe zojqI-QUU&bj@{e_!d6fo)fr(9R?myqZWVV(I9GONU2!Y#sEHZ3?}+Y)Z&A&@3t7&y zcJFmCn3A&loUtUQA^Yuws8W0Zz2SZ%Vsti2d5kh~VZL@7T5e+^-^dl0>k5+h7uA)i zLnw&WfNUu$aDDB4wlG&VTTjOP67>+J1Fcl9L!l!`k-eI+vX`;mkM1nOmE}J@&Z606 z|D@gNY<5r4v$ONxc_`vpZVi=iVH2D!)&Q{X9a=O!M%DK^zjM`K24qkZ7jdWW$+3^- z>ckt<W!n(lrAm<0Z0uS!=u9_rIgNHE!&JvihBG8YBvxJIt!)gu8;w*g3(Y#fcsUKe z<Vd|i{02{=10u%mQ8q|H#0C$mur>@|H`J&)A|WZtAv44JiHiHt#?-$N>PpzMn0e<m zrpq25=AefNojjxo8swh;L7@WV6g#CTZnB<47H$CUCt(Ft;<h&c+Oa{(Fjg0G0~dX_ z#;|TbHA)5Rjk`mz8~B){g1-=|;rP?iF0tK@do0SP9ao6ThOiCqb8L+UAm-VxMcwB_ zBI2`d22RcBeV5YuIkXZ>8$l&J(YP6L0+r6abTIGXo|#FV&->@C?1640I6sjShvDDs z<d~94T(AD|Hlgf0ghWW9x4KxP?8AknwgWTeitNuXwN2)`RvN4k#!tA$(iW$=5nv3> zbw&K##+~-Szu$8M7mz8OLBw6F?TL;QvY(a62fD7iI^rB8z2+_ytYPC_Gp{6drmXv( zrf44LYe81;01?!0)a{Lc%x!?AMS=y!q}z(Dd?19S(c~B^mlZXpr{>MzTr`X8;-En} zr7Pw#a6#i{YX$E&xp;<-_mEXGwv#vNwq}M0pc=>B7gLpO(Q@x5SMw`pSVEF+joN=M zARbjwGJt4(iv%br7xH8p#NDAywmYH=iuv3<bs&z8z1L2?G%oGd(+V;5q`qaM2zC!@ zG&kjzyDPe+2sYY%0Tkw&<TdG{lm;2L-&%o9sD;RNAKP$@je9g@KX0*r+I4*=jM^9x z{dqt^wp!tzzJ|psD88>*<N}_P1~Ia^?aoY!C05>=T&f&v_LB>@l$<JErSYw9M8<Y{ zn`xDWVb)(nz$Tq^?f@;|$I3qe*LFX*)}`n+CBa>em?ckMeeXy}Pn^BK8soTYuOLO# zujK?N-f4FE23NfgbM5MyIa676S=}=RIV|1&4q<M^13aILWq`Q&*G!K1Nx_s*^L4rI z#F7%FQhM1+j(LkhdhS9<tFnB0$STGlt7RR{MY$|yPc>aTohCg9h>L|0`}d2+4(%SA z(UU{e^lXbO@n5?P?=ZKh+dNd2%(cam#I2_PNFapB&Y#hPe3g)4%OyMG{DxEbtKyrq zcz~A|PU<F^p3D5CmpL7S`PuO-9`n9Ts}+1%J{V{JxQ?*P-mr$*Lk)?{X?Y74Y{3)b zKRzZtY!mEsB@~D#&N?FY$_@l5Cox%KrQfk>Df1_vh!r?VRP&qr7OtwctiSE|j}X3v z<ozz9Mhr9A3^8wX{w4N22_w{X;oc7K+wa0=??5w+n}`71D&~j*S8kHJ1@}4@<jLFZ zD#Mm!C4El7xz3>EazyHnuAe=WQ8S_gcdaKkGIT`|TG3cnPpgN9xM|Sje1Fwk5D$sn zk{D$+AgD7iB3V{CzB-WN`DS}zqqKLG7PpW@mSsxIuW}#NY{6Lq&8c=Y1Ya7>0#Mh^ z3GQ>SN@t=XWUnV2e~2)dokUY!s%Dww{f+@UN80LHFkLGclG}DHnT?NzM{)eN!txqr zvtLKd3``kDe2m?MCLVI@_Ggpr$B>)NmP=rC7ZBoH;T}t+-t%}@2G&-!cuU>I-)FPU z0Do&|z}GB~rzJ4XmY{xKltZZz@d4??-^y`wS`~X&QGLzCxky5Y@a6#%jR1=8>;<eU z_P?G8qT_g$-*x2mlRGJl&W<;BQr-SOC;oMu>FUAjow4scExUW|#1%W?<!zrIVAGxB zVI7u@>Yb>x=sRP|nG=p_ObYI%#~?i>?-wW6j)#3`QxvM6lBH8CSp(mGDj=(?pplTQ z_j%oP3hZV9ynU?uTgL@2=*jq7(ROn1>^f6n`{9dZ<!iSG+-pZ5o-(imiy?>bG1t4d zU5}*8hJDTpU)FM65f`_=gw7Mh39`1XO7yj3U>;MjEPjT$3;Jy^6MW1n*cP*5f(s~^ z-XGcWc-17jIoPVW?Dx+xYj*B*B$>4zYowE@)`rSTy|+VIC*!D)EtFMVT@&EFu1CJj zaah+)Wg5B|3o-k<rsJ@+<~f5*u{;jae7{u&Th?pHtuTXQZ%jwi%Y8_^Df1~!{<gJ) z;nuhSQEwAWt?k!WAl#`lH@JXbI|t~LCLbWaM|Db!Hmmm`y%t_i8}Dr~OE2>RmJJit z4kw@@*KMcF<B=HA89b#Wso0wB;mFp7VmvDEddG>Wk0~~q@>S2lNZr?06+cn!T7Ta! z_m=6z4?Yr=496KZbH7p6N-;4F%9ek|TfJ0UF|#H6<>k0Kx6e{n|8QNOLDB-U!E5Gu z!?PUsgV3!AtY5{OroET4qsqmz<x1h28l*^42#4zgmLc?DNqo@)ZcK$|LliHx0e|Mx zaW6x3>H@=MG>&^SX_>;r7^lA9vz(E;8|ESVb&NB6I~+o-xkLsZHZca{Kj7C<?T1ew z`!&#z`83hI$cTfGjhU9pQj34vm#3#LjR@EtL?mu!4{|)>!w@FVJ3)-11_k?`rC1_# zNNE|(?m0XpiV9AfJ5?Qth?J=0K|%Ig01)p+w0rSWK1>L!xxE5qHwSs}=3~0vsR-G9 z+d8W9H-wvf(w?wd(Q`kfmW*z~39uMAtbBe;CnK6xswypmG9<Tnh``fZa-|#B&OX}a zs204e-NIUsZhgL<F4G={sjshow77P&LpOj7K>$xHA!$gxVtG6437Q)ef9eMH^dhQN zTWR+zM;)ID;oJri2nl~G-8)jv-@u&F63`(Mf_;<rSyUHtuQB;K7Yj6Ihhd#2O_ygF z)h<!3CmL~gF+vKYga|@!!@_Q9%BL3l4XHZGu9G(z(vU3r097LkgMz&J)#uD16&%rH zBB82$#Sp=^SV#;wMsKlnF?R|kJFa90LN%qE#K9K+g3wmC4+P*Xa!WNXwu2SOQYB5V z$;2`2#gKokQX-^hDf*sIFDn_Ap&BBGc<mS+O<0#Jt43qH7eIh{uC7y)2*89<t+pv( zm;F4|kivZwH_ASozw98haP~Va^|W+&SkH;p(~OQ$DRMq!hI%w{+>KnIuoW&NQ-rE^ zs>=@952&uE9nw`YomY=4&Rn}CtfSgOmB=af5J2hU3;<I=tiQ;M<-?e1?Rv&*xr30! zK_O1^wPXEX*NngKbA0E_JK@C%XYItnT9^WkbyQ{20($_tgUv1pxz!VatYmdm-Oi~Q z&yWGs0`FnKkjmX#6<F?45Se$t>cT=S^dZ?eM^pH8UEQlq>na0CM=M_o$OP{1bn;pi zpYSn)ift9f#>phSfDq<vTjtZAzEl{{wm_C*(Tu-xKo^IutBck~^gRVsh-wF2YR3@z z+$^a~!Nz^i?p*ri4>Ik2Z8tSTGI`f5mtQ)ZGymdWRNfxN3roXBB@xxQ**Zy1faj-L z$^wcUq5GVK;$co%VSMsD@~B+9aDGDO<<aX#d#zN*woIT^sH3?kMo0y-wGt7F<siwM zYsbyHzJ=hQB6>4<uP)L|i-^^%K-O#K=T}}=L|&acA-4hoGPg?N?d^$n-VUxE87z;P zpdlgCF9FkDd~$LXmqd{{hJs%dFF|@)t-a+V9_#XmCY=f<^f5&DBkWmTEm45>+ggFp z6AirET^ZLCIeAo~1IIU4UaTGUeP5Ff{@QWflj0a>_kK~Sq`Xa9>cR;=8Qg5A!I~{? zzt_cJXYKYP4xfAL#`{U^R5vvRTip5QfO+fcHq)%`_$m>+?@2G+3ClKEPpjhZdzmiB zUi7-ZNr7FYza6L_V)kqrBdQ#+R%wC#L}Md=GDgu!d-*fpKWoX;owUW$VCX!Mb}u2N z-Ae+)CcRIFO?BCulTHbvaR&YR9=_e!liIeXHw~K%r}s8OuIyyd3O$i9kj}CrIaZ7f z^Oi<)mMQu4IhP@+Qd;_ih08~pVKQb=UP@n6CzV*O=<HD`^*Mw+c#A+l-%{Do$BDbK zP%|%DouxqGw=eJV&gP#!IX)1=y3ffnv=0I%i@Y0vBE`lH5mmNs_@4fG?XXfyAd0mV zbX4<DA$JRHNH#x2R{W=3KWrJc+S-Vgf(EDuxJB^}^BprIntZf$9GPSRCGJMs&L@#< z(RBsmIF6@Sg-4X|31MlyW^KmfsbYIIBe9MbNwqkb&A>#n3I1vCdu6`7w@sNH#BRN3 zkvzM{=GQx`rQapWSdnRI=xigtRN?n9RfNL?@*5RocOOx)`C}-EB}P+a*@-`xh-vLC z3_E(G!kdR+rkk<CrABUrQxZ2nZrNcp=gm*CN#nGCOB<QruczbA4368=qJB$D|957% z3@di(*Pqfl2}al)KA6BI=PqPvsF2F8hGf%`pfvF*xu}FY4y*WiRC}TgRquLSPbc&t znc~fe54!tds9XWMcDvSC@7(|Uo|~b~QMeWHR-WANhoFWna;7J7kE6QZqzYMhS3BXD zvsrRdrl4W2KW$VV_C9^FU%1mu2L9xk(!*n{yvBtNd8_yIBZQ*b09c+k%!R1>nncf= z9V@@S&A6A3ZiW3se5VUt0a=NR?C|^Gy*2>BJh4A{iN{+gP|>0wd7%!oSi~}P384jo zA$!Mu@}*q$h@8OFAqorPQ0=pjBXY{)G~%{ISx7>3?ey6r5|byA)uU3AbUle0T)X>8 zKkXJ9>wCm6(YAI@dgmtfS#@btyO{KMthy%xAWq%MDuQM8w2dM2h3Hc~(t#*oF$YX^ ze5JDx^$n*Y3quNiM&-%&*ryt+CqK!-CY;AJ@oDBItQ)4Y_^BwjsT*d2=EhwXrUU8k zm4pBswc`Rk^`o^BIjwD7=eG!v4c_mQgeV+{4Y83p>X_9DUda?pK<U25j_Gq8`PpRJ ztxKUZ6QF=@F_jjybYc~rM%(klR<WNm3@bJjM-k?$#p&14-i+0^Xy>r|F|hld9FcKC zsHy#Yk1sM+^c0pvZ0x*0i~wQAx5d`{en_QQA+d35C){EcqM{YHR__N<^t7aub}ZcM z>BlUYySZkLS368ZR({x2DrX2#)0TN>ZnVn2mM2;|7siS_fhx|>E?AXHD{5!WuOmY~ zhJpzztuM0XdcRv1+L7ef&K0!lThRa3JOMsGjzmj=Pk>7%>4~gb8qoLdxBN0bf1F!C zZr>S#t&km2spSBZY%Kx1-x*TethI#kM2{-NDD~vRT6>OviqHh~ti%D2F<`rw8d1+R zjcQLNt=V%m1^jLRI{G{|L7QVcvC$?+8=h_2ph_czEK=7nt2AwxY35l3u+JrC)4u6d zgE^X2dub<Z^|{g>Te<1+T4S+l!nRcw^Iqd+2NJ29AM5DkChY1sY(lpqG-C`Mk)Qs$ zj!=9j=!8K;Z>5f(0A(=Z6c<!(F~uj^OFYmm(3>2hJ7w}<ahO5wC!$bsK5tiC9=ucM z^dDzhD4y{8@-s=d1j-+eGl_?IuHBqyFUUpCyggsqb7yfz3VtFpye92Ltz;BmSR9-Q z>D`&{BqV%50u2qyaVduq!qGcKW%3<-@9|x@CV^N`02TN1L?naQ()nq>vHcGIeq4A6 z3D7V}<h=tjtam^lF74f+mJ@9`38UrO^*voyyOc<I^hQ;MSBS8SZGd=xuW-$ut&y`) zQeTTv;W7fEkl5_&j+Ol?zklMc2QYTh1o}Ur*crdWR^VJim)kqq^mIG0(SHY<*7*eb zRZXIj6D`of<lW<ciTENzLw0KoA`tMY4^~UP7reG!QQZ$*LFn*XEs3L;;dlSF-i>IO zqK<ZKW?Qr2ir)z_@|CVa)FRy;TIbbE!1f|q^COcQ0p(r1IYa{BA-R&b7Z{@hfXeNb zt^A5@`<?}A<UX^Dyp5n3Xzhv%Oir*rKGWhJ4o9VJLf^Ei4XY<{`&-ZLU`MId8%H*I z%-TNCAMwm+I!d?8|NCEDJo>E!Wr0UOK_>|IulD{o-owf}VY^Wp!Zc1}Rm@jsA-jJC zQ9(4L9QNC;I>5ZEb5tz67%=j(fYI#zE{LG+&SltYt2-!y`hQvPS?puwig7|Hl{*6L zhb=P9#nof)-s9M0Zs646F2R`|Udl{KLzC{-80Oi9c$Tu;eLjfebwWl|pkX@w6&OV0 z=x&W+_9i=w`YW~;mCxNFVesNA2$SpDiQgSB^yyjc<!|hR&wez-LA+6FCFYbXHPbP| z@+dJ7te;Vh=pOY6S*9D}E!?(PvZ$;2dAhLH;;`3lDcSY38(V0Y5jS1sOn0z!I``23 zX64k8>scqT1y>TzzCy09YoViWn2y>FVfS;R;uT!y?s(jMb#&{dxaBkks$GjSbdNyX z^f<=12;}^=BN=XW4e3O9`lQ#NwUc>ExkLK7^C5e|E93%dXu2-ZxeA+9g7t&MLptQO z<3`;4gl->SbVcCWxq)!Ak)*$M=>@!fZ*F2eF#t{-y}UMvrFPBSb4(Pc&}N?FhQb^n z%#%mc?|a<mM9$e^P6DGO%@%7E=L<2`A+r3I9KunaCXMZ+8xLFM@mRA&1gcd9#G0hd zogfbVcNE+kxZW2ui%JyadKWl1PKe3_jG!m4KHSMm6MpKhN6Vv9VtFT4<?9`e`?WWx z^xa#FhykW6r+Kzo$O=Fc5WP-t9kp~585jL)2%i|a%Sj<j;PqtF@8r!Y(M+IViWCt~ zvAK{@IURL=7jPghIwYYiV*45mg)-X^CY0Q2!Y-QLrp5Xp#beqRo?~*eG@SXq-78)& zj6Hp)vC}kUj{?L8v!}G<rG3oF<~S<B!rOJq?GQg5mC(n)bN#hb?Qz_~g;{C<rr4o& zIraORtxm~h5q7Lmtl&Ngk$Ic37Pc}72s7-~={btDa!+hWV^K~*hzd*qgU(&2YRZ7V zj#`v?Y}a$o2Dc`(^8LV{G44sK)X?4?)3*Zk4jx^{-CDavCa>MzXRY)7yhc>3*a2X@ z`x;q$lY1LL*;aTkW!AAxH>=R<KnWaXln<HEge3g?R?YHwL3gdqx9Fi(M1=Joi_e9v zn!``|sa8Edj<T*MCya`1{mtZ<UMy&_GD_R&8OdG-eoJzPHEXx4u$sw!9F=N?M#<#q zr<>|p<n&~%^{$|7SdTllm6h=hp<*tkvb2a_?h{1#xI_-U&S6z;*X*944_R%_IG_z+ z4|gmco17sG+mP~j=2-$Rn9h!Huj`uiB2klr^;*ojI`atPo`NmV?tEfgxkSN`=L^7A zCJ;934=}mc=NHZZlqX+5NWNfH-qf&t{QUrH6SM3MheGd2LVAeehPX<ophdrPb-Jw^ z(CwUBU3t0HXN#T|hsk*A33jeYr2rEh_Nd=YsNEtEZCa+<eaw}|Sh9`0BdIc=1p=JE zs#PX5z_>n%KxQ^C7=3={e+6?Pe$vCoNQ9!40hvgBENB7<XPxa`-)U7;wCeYL7j%Za z*I66)p81aI#E4+^F}7mNw<0A%)~Zs~w~m#@gn2mP`gZN)*2vM>g3t=b#!7WRe$-Q2 zqFE`dmdzQwX6*c&Y7(j6Lym@<^L<W?``S^i_c_~jNY}qRH4gGEwon^}+}XnYcebvS zsIxWK-{GF^yYsiuRmc5Z=IKl>RR_a%cS^G+CM9-N35iPL7Df8D#C(eqHij#uTYX;0 z!rrJvo@k+U-D7?bxx?E!pDW!OW-gDaXL3Rex79T8g>6Dazuxz-T&Ihz{;{QeZ(A-8 za*j<g&>W%=QvLQ$Nbx}n`dRT^IE;pWvpt{~+m-rxp0G2xs`I|q3*_yT8lb2kZ!?8z zo(wMXb+QD9x1Bi|9Teu@-nIi=h%p;#=0gddCzh$otXni{x{l+E=H0s8fnz;p%|#<c za63RV-;V;q+WEe=hhCy$e&{K!zrv!B_iISm2B%KKcz97MGkp77>?FhpZX*77{0y5E z-x#*z5Uy-2SML4w^sAROxBEBD-8C(FnZkePdpQ(pc+64sHS?L@jZOh^E5Y~NJ53N- z)oaP}&td7rPZ$a9Dj{f-hw**(`;0So5bY^jh;jo*D3XF_0Ron5l>zkxi!131bn>)_ z!Bo8uS7Vw##y!20%`da3zhQuWtaj&GG<<!<%)Ya8JPQRCo{9J64YTfRC)|9ZWj~ME z$ep>p>>bq>-cc>5y=J+oja>EL>sp#5VGC22beOt=qhk0y`DaxkaXe3E?5*)@#vnQ( zY{el%#g2%t(ng(+-_jpb<PufoF>2=@_tYaQ0sZ)+EEYDbouEIt9dhPI^+Vj6Yv)z6 zc268B=Q65$*axEO?vUMLjOG=TB4XjjRwCp#B&K>F^Y`veM6n+$fb8*s``C;<NYC8& zDU6%IfXtK)*=PXowVt30RE5p4h3xghn$3SfBZJyX*3m__!@ePw;Oc8wx1}wrpG6jO zzg^#`P4&houH1samX$;07Vve>*S(%D4by`Bz5$|rXWEd0k7~(_sBHW;K&0ttD1z^M zBwH-ka;Ncq&n@r12k9BFA+J?e>`1X_&c#5pYMqde0nP~tm^^Cyxceq2Sk@B2W)#+p z;;;n}e7Bz2HY0Hx;u|BPc)2A^ZR~41n2>X^bW|)PnlG@8%6-=RoRfAlVM5;A?&V7~ ze)8_I_wQ@6AJ?ugS#yaPRO&FIavE0B2ifBSAr#*?y<P+fB2jLbqW$k+?nl=&Ta0gq z_wVFytHS!(QwZA8>alZHg#Sotvb0V(c>(pLI~9Cq2l=XnQIUy#uOf)TVaf8ee~3q} zt|v2?T?#Y0mL+jxR+C_Riy-8_N6IY#53yp`j+0V8yLOaFo5laxQx8T?hlCV^EkOq% z(61d$vA_sS1gdcsQo6ljw4Ztrm%Cl~9`{4U%FAD|_}$vCnTn+o7DAX*ZpeO{=Z@mI zB^7s8rMwYG<+bZZJt{HvCamw(#6#49eZ#!Y(;AjKB1*SG(LbVzLvV5{r&6N_uG>8` zK3kmYv<GEdl|Aq5_oexy9Yqe`c(Z8g+XTMcZqOjoilK+-jB1Wk;e+<hIGQe!-p1)` z)M%9s!xkE9hxd*;DlXCE0(#GMeLrD%JZ364a#^Z+=cw%pmAQC2vBmte4nED?9`}1? zw!!U%)66l&lnY&1eL$MoI99BtKbu^C_-wmHrO#+F!w!$GQu6Q2Sclz*X-Ug?Z?QT( zTlVU%L%w~mGxG|px<{-|p>G7+hjzP7{x|Dbvts}ITfY8lg(pwA()Gu9j(V(!S$xPg zXmwg~Y26b*u!?)5Vr{mg^*#4`0_?bj5<RBoL+x5#qugC8Yv<Y6J28qAk4l{NrrY}J z`>pS-dKuu2UeHUtrB|?in_XO6;j%gK5c$65SjcjV#|>5jI)t`9-8`EY#BJM8+5J|Y zIGP+y!9?j~J5|S7zRzF+O;T%o;{?n+Dg!YK%BOma370t>$7RN|XRyby4oYK|$V=ej z#r*mZ*?<sySKV6NiRDXfjxVMe@$$J2j$TKHORejo$!J`Eyc4U3>h{7Gb3n8gw*9RL zpWzOWO*jfV?Q7*-*oUp=3zaa^9dvKcw!LyB%kR|ldm9|KU~W)3oQU?A5Wq^u0yt(b z$Uq3cn;JFVd(oR4Z(zDa-}il|^VtC@)@b~=>$S^{nhDt<-k6wAd$qpBo$#ZJE}Bp_ z<2B2Zo{G=;D(vD^i?Fx3wxWlIcFq^Pw%x@4oS;bq<<Mh+Mg2+i3uuU0uy-}9a&2ZV zKj+1gVJg4cmFI3pg@X=pQZoC}DYGy*F@>Z~j0uGum5S#Rb{uDH;TP?MYfgL!jaU^( z@*uNASBpLNb9uYt*yp;T8Ic4~TW3feQBhJWZz}gWLeJ-5r3G68@*nd8oU>+^4W3ej zC`$Yktl|lL5q6S@V&45l$V`$gFJ-SMHh*^430pQrbICcKRg;SEIE7@**G|sp5WIWG zrzlJhHKLN%XsehDoz#H+8c@LAgbjHyQ`q0>@lm-Yf6ZnrAW~d6mfP<<){ltm$wK00 zDcNBiRlw3%1Ez1|!R)S(l_sn!53zpOL@25Z&xm$eR!3r6Hy$DN&x8|%Xa^d1elIGP z$(!sH5?~C_Trofknda~C)an*8d#{*0#BVUZ!&5kAh+ACK$*5-NMzzvNJvj~6j%c{) zGM%q)kDuKsK(*T=+EL*tWyl_Tg~-X=_Y|7m>||TMajI;&z647j)zWXZ`!T+c2J1BP zo1cdRk1rYWw<>bT4_UcwBlv)>-JJE!9X=N4dB(kn#sM+vbBH{R^H?{x^R4EhpRw~2 zMw&4S?ife~b$aaG_tTpBme=fl?{_9)2Qz+46zj)fxY??+8bFPmS%jDO+zKL>QCsjh zJ`)x~fFB|<dGp}&+*0O+m&in=Tq60wELqOn5$BJjG9jrVfHIe_8H407ZcsCEp!W<s zDsMGkGuo{nov;YDZf<(IXmc6G$zmsbk4UCcKhs+nD|sza(^Kl#t~+%Tm+l9iMA>b} zDb*<~Cv_ns5xvStZY38RkA^h3<tEw;J5?+=JBAaSPdyf{#T#!2mXU-p5syvq{Ap}z z@wR{z2_cC=?-;mQd>AcuTW4XP!LTHZ&Gb@3BPbh#m+pIx#?4r^wje;RAm)pT19m+T z*GD4^a*hn^NKM8z#-g;tRAh#QJ+K8aDkUl<MZ|FdLi!wKyZel=<#STow(L4OUzUpP zb@-Z*@F$(CHQ?3`Tm6G(iy^G@)_hjOUg&KAWaB<J+aj)uG3Hz?Rgv;5I=0#U$^6o; z0)dhv3mz7;V*+H9DGs^FgRtG+m1q=v%=N}#Zf}fq6KsvMA)0hP#q|5jeTGP;m^7-X z!VoF2>&c-w9%8FxOm8Q;gxT_S&+4^XNN-g$5AjCETVx@MY;R+jQ*Ud&fl~xAm8!u@ zbC^nb_S+jl$@`p$$WaM4UFR$ti5Bg4D?XOxLEj?7N`{7U!5bz+xt{_YV}EfZGA9<o z{Jg%$vSvKUF}xEZ!*(61?R`jB5^J`Q;^Ww!a|ru8^I;q-ni0p&Og)ZerZ#{=<3Hgi z8y*#NsZdOlnK};XI0T5`wF$T+Q}$NnC0Fp0>mQ?XM~)UkMThq}o2P03lI8mB<F?qH z`(bB!V~v#~M}@Q3j(^|u#%(92sz4g1_wytCqlnQ)B_`DO3}r7UZJa*bII|R66?56| z!enS)MB03p@qw5?o4~t}7TG4iD#H)^cP3OFNnqVBJT(ZZ25u{kUEk-<11gEJ+7+KG zL>dvf(}8Re7s@GE{>&_+%qWS9_PWopn@+g6fLG{hi_!YNqqhV34}NtKazXkck-v2y zVa}ML!qj8fL5Mp%50L`?%aHx_BpP|s9gwI_VX<>7<Q&!NW9jgJuWUJ*S=W&A0d%n+ zK)zR^K)p4=6GkQDeClwQ&mWeLFy+^g992JWF=TVB-2(qqALf{B3|rA-SoOx&E>;gI zixtW4C<Roh+o&2sI}cNMimgJHqz_r>4T3E(8YE4HUxEq_3>sHK9KVDtqDn2I`PUhM z6!gn8z?2mCIjfP05tWjktTM=oS|G(KCa$^eQ=?%eMx%0<@p?Cx>xspD1D7Ljol^fl z?eH`88@88K^h7`1_t+G-zW>+{OdZY6Evox@wXi9u5aGY;Y3DEGb{$Pgkk)02DLrO^ zat?}jVCmV4IMNpF;zF1mpO7`{_#IN3CB9XRk}_~OTJ?bCgbtd86V~(bBkE#(R4nMM zAkAj@j^;USx$E=WYq!umWae8`#TjZRc4R?AoYM6~RGyyscLjZ;ne|wF&2bG7&A&Bw zTJLZd2*{YQcHOuimGBbD7}DLo+U-~ChI}?IY&RKD(N}%0D8bGnWEX=&1U%Q%cSAF* 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Ðm5Dr!xu4t@h+eD_Qi`UZCJeC@>^f#nLwbU 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	Q7oBzadKGz8T)5mQD3`+*(R*X#Jvoxko3+ zPsqv2+#Y=bsf5^2oH|x6x|Ntl3ek?m`K`O61=MU*>|6!vyZ2+9zpq<~xdw>>V64lH z62;u_w?OwPnjcf^;as&Wh2xzk{pbGum{1?n^l!<0iMO>MRIF;TqRSqcKklG;X)idj zuCz<$`cIFzFuD|fcYhl9GQDa_HA=_HnMZOGQ=bUq?64*cl}(3hQN*O7kGtHP)mGsw zT2|P_FEh=nt^kYGq~YdHXk#455yH50c<3>8sR|i6>-(u706K(#Uba{zcwY8MdqFr% zU{$`yEG7|M<wl-cqD?x4=Y^99)mq&rx}g|1ivE1=s!3sm+IIK-=y44_E%YEeWb1Wc z1u8DT9}73Wu)=v0GyK6ZDA>&&kw=zghzNCbcttY1+6%i4e8?-bG~T~_Oek$zvDE68 zO>=I_>5*6_B~8$25ijeWcI|TVwfmGYq?DpDpr5QIB-GKFB1)n%)+ZrP(im~hqP!O| z&Ro1~LRvpNq@0=a?mltHurDrxqN5f+$A}eQ5#I1zRt7^Id)`%fdaeao)l|W$#I{uB zI{Ubh+5Y^)+x@DV5<Q1z<HQLjxlyHBm#h|JDEX>OYlqKl1J#V0#MX>N?cB0A<P?#V zzRs!PmL)rYXl`~`gMdxtCkw6D3-#@G*qB~1ytiY+22?QoS}Yb>`f4=<2^}|rSg)*U z_%YN=Ceb|@shgaaM$)mPZ(_VdTk&}RkAOIc3QU2))iG}LvnHYj@F`%%TT5v1-!~h$ z6Oy9NK}7P+Vs$$`!923EXwvo3@NwvtY)yBqoN%DHYSN(FGzw0=3_nPJup*%o$CiYO zgSwtFSn1?FX5*jaijox6^-&8?+>`9sj&W(>iyxq^6@c`TUV|=&oy;=(szF0wu_v8X z8p>e{Xi0ox4gNX_tz^$fsvG1x%#v~n3t?1Ep}DCRT&(|G%#Rco?z*I-xparD8WO)$ zIn&OvM?A63aOmj&lGTa79)`pIm3tB^ch&O8{C@6FTfBv~%`THI0e89T;*AudOv#c7 zsvYZTG^5)G(z8uIATZ3YpAWeNEOE&WoOMl0#%IXf<WNr2KV$+!_5@W*K9FV_Y18gM zY{AYCZOpJXPg~FqS@mJhJhNP+eF`hHOja^s55ed+7Y1F#O$-KlnU0N3j`gO{4pEY| zIgHCMD-`uaaS`wHW`*ktroGngzBP5tcp8qfswx4|_Qgi&d>4V51l)9H1(jnHudQ4i zw{GbrY|e4(Bav+5hJQdWy~gW1MTKCK*l{Z~oKrQI1)IQb*Wd<;3*P)d^C@HOjnYGV zk$(r{nAyO6V7R)|pVR!rV5<HE;;Np4{`I8kU<+7#c>&O&pe_Mh&?EQ2GT33fH*ybw zuaQ3+<SGpPXgL(Blx)ZD8QrYyBNR93d;;h=E3}q`lwsZF@5#0To~*rZPr_plgS<X; zSX6BbwzAgQEX1yu0*y+3WLBtJz5SdIn3dYiM}k15NqKJx?md}RyE^7I@u%07dF$LP zx8FGmg=#cpBGpO);<QZXNvLyd2+Ss65UrEB2=pk#TdWNK#*<Nwp>d`K=f%k|Sbq~m zms>?pxtmN~H}^}m4-(T~D2#K*Z_US&>@$=h)@e{oB)T%|H{NeMI^khSc!E_3k;aZQ z`mAITnRm*hUgR5EGsyN0QvW7qvrf9etDFoh8e&->OK?;zU<Y$UKT$kpu*8UIir6nM zJsPbA0fs4J=IgdI4!-5)mJNhi;mj*fE<cNBtMxDp_K$1RPPH>KuZ3`vs_a%L`Z^!1 zQ5@9;Pf&jp(+V)ph=y6(KQTYf7LtR3Ga$kV5jU>vHZJH*akJbWPwe<Gxu#;Raw$pk zJk4#d{BDKhdJk}J>U1{B1j!3N8{MYw`F+-9Y1*wAzF5dEf8=w7X8CYsG+VzRi;eal zaR4oH<NA;az5THCZyAb5J@LQWDci3{9<&nQYU>u1m{O82R_MS9a1@p>f-lhH4Xo(L z4-j0fFjUa@f#hSp>`zVd5AdevhKXQLn}VJO4P3sJ^@-ka0nR?F4z8N-`(fhv;<{IS z@SCcxJipO%=ddX8wO@GIeC*A7y94rL&gC=$!p2j-Ua1Idj=EH03!QfgS0Ar?4Zcvs zxI4HeZ#eZb0wSO#$@5hum?M7v%8R@d>6a8vO_|yXoXATFhi3Oa0wPfRIOou>`H!c0 zL1(^@08~=M#%D>p(vtA(?+wQOdcThn9TPe9)I=r@y_L>Dt3RrbX!3%oNd(>Aw#@eF zMKL^+8QtNPgubzEcT^;A+M45;4SH0oQp48E37xj5{&J?EiAv2QeeMS}9r8afR`J?^ zS@Jl3Oy_FhM3A^<q`a4wchrY}o#APr{2rS<oLQ>p2vK9pO@W#lutDCN_h(jx#g1;q z9@1yO5-8p;+tOL?DJ-mNxc<%QO2=ZMqnoq|)&lH*p$w<i1^ihtVb6uAZqg*U{wI?S z7r(xqDyn^yBtN9xxqZgKjSXBSebEv<=CI<}V~LNv8n~&F?!q9L8!xj?a^cVU48h~p z+DQ((51>Q`iW2csGKhQgW3l&0N=o{>o#_reN2GOuluKVk9}SX`y0Y_pYGumTN#)3w z4vQXCi3Aqw$ny`(NTVi#rZikdsQ~YhP?L3?!z3*&&m=lYBG~*GWYwrnT@O|8PKar0 z!6AZ$dG!m5yU(EKMjo5XxIh#gNvo*?o*V|MY)N1IT5e$|B1SXZ@3bM;ns%-4SR782 z@Dt+HtygLkdBwvq&qsHi)#Vue@;;Jo(mse_nv7Qkg?^eFaKg~Fs-&QEAny<>IG3ha zN{5MyE3HoX+j85@%CPW8pBOV&#w=~aHqmG3_Skm|E@nsT@RaI6J>Xz?Nec^i9LcwR z_*$1JS_t{7%!*=_IEgmzt9QeBcA^V%fzC4S@0L@BZYGQ+&TfD^E_@~=YM;K!Z)z`V zo(tRrEbNPi?Vu~NRV<pZ?-rU7^FazY0{ZPNq|4)^=?Nph*XS*NH7gwUpe|#TDtOE4 zngydbq$YF%Sk9%Nm22qK(cdnZ*okM2rszXMgemv;edFE50vNc>)N~%xT9Vd|7qAtT z$5W{DQHYHcX5msc;IjMB6)Lw!g{h=m#~HfLN!-|&75C<qy-N}l4OGFTL|J6ffz}Ip zIcD9V3r?MA6a&!JHxy&g8EV&Lrkbod`?Ei<)a~`y>Ly2zwpz;D<wP~?a^9uuS>Q(T zVO!pW$4{+4Q&iTJvto5j`>E8st0)HMF$~S+lD-@z$e5PX(`<War2-`F>Y%YHEz_T` zE8mI}hn{$24^erRETufl2j#QRx=UMw>NXrGPxnMq?p^Irz>P?YqT=*?8}xpco0CRz zE}Iecs&77kDNXmKl1eo#zPUlkcgh!JEDVUy4#l_6L`jkJB=J4CK_~~PAo<1sC10|z z_`&sU8<t$qQ!1HsDS?!#qL;2Ma4Dj;08ie{ZRM4)2c*5&r;NDTAJ>}N;OJYjXCh9J z6D-d=K!!=}e47$99Ri)h9u-zXP>RBi2SGh65dm}2;IMV7EL2wC#iK6TD<Z$#exJaf z1gdIrc^R_88+6<Ejm4^K7oaU*$(#lyNy6h>5_T|*Amh;GJ{qvY0QIOj%2j;;Xo9kh zgCUh82&6gWJyCxmBW0+62>#j}aAZPzJ_mCdt9Qku0Rtox(7o0!`*B=Fi=^6jRPxgo z=f!<AOug!az{}`1okp;Xt8iRAx|xgdm%*ks$)t95rMEK8tcS%~aD+!Y@f{V_A*b1g zmtq3_{mnk+A~ExZevqi~%?|~0#YF%ykb_ag)XwGkw<pDDjZ=xcCn*g+n>vV~B-NQY z8VeM33D&4(m=GX#l{Zbb9g!rLBIR7!U=D#XxLBdE#9l^bjtqJDN1i)U%>=$bHG7k6 zrqGJXBsM404kb)D+SJ=bZz{<pRdkZo*T8mt8AQvh{v(w|2_e8P9sA+;^!3hrH5xNs z>JHtT)jD5wm8?=_6*Dx*9N4j8cJ4H(n|0tIT9;lwV5RB3EtKJ;t$RpOUfI*=EP^OD z9#I$*{DyZ9Luqds>2i7VMPLyg4$sD6t}g_Pr)ILG)2%>s%P2PApxx2nK@l-&NZYem zA0?5!E34yW+qsk(R9<2lQ{7It1O(IYfP1xl!xSNYkE{2<M2UiDuFy%@hFrc{LUu8Y zwNBa~kRjYbWyyCrsU00b4%fnW!GNpGfh)*B(z+$RLuSe)%8SGe_!4XXAweZeIw8wk z6KF&<$AS?MM|hebox)d<N($0(H3~yx*`~aFrP%=7ahu!yzHelOl%PyBBXxncuza?c zrH_%gk^=0SYth&1#W<XJCw*j)L$~Eak`0eviEf21H_n6Ju@EO#mHo@?z3DhQM;kkq zffiYq2I?)7e;&z$?<!fkAMns>5s1`0)5EcFA=<S`xz3bV2cj-@r<r!3;|farEVkNI zCs7pz`pr`$ouIss`utUS-2XD3g24lFq8d5-D&zuyQqRh?Qkn}4;;9z4B1sI9emDqQ ziwz<)eX_jQ7J+=BXuBft*?wx+3>$r`f>`w~yHndcbx@OTtRV#QRWijvllOG2s(Ca% zRfa)RV@{xUgd!=&C8zH;XTbJ?#cSe3Nw}{p>?yw{9r8#*CRQ)?s?7iLbtN*>;pWh6 zt9Op@F5#x-nBA!isTV|vKPM~;&>)hdUSq;Qp{cx#_jyiPSVK__jG;!Wg#j_wrvdbe zl%D~~HzQbZx&i^U4qjrfD2R3G=K-Lw8m8ERTHA!8gnct+KgR3Jse?gJLwAtjOXU1d zo47i;yL6%D_Wt|*+1K6DyF~W{Mx1QW3aNbck9iV#Eb^3}%Vm=Stw~bzary??O3nQ; z4wxOj?AL%bs>geD)8o4Pk|-Q?YLcI3X{+8gtOuCU^ThQ$yKX%l{#@7818N`noze-e z+A;6Brwgllnj5hZDUYG-Bmi{hmu+^gA}r}|Mn&>DR;7oJ3DTfFsnN%_8e*3Ihn*Fm z2!UTi^&<BJDL3b;^2W0!QlK<`XR5idQG!&2i$NBAQn^>HtU=BN<nF}deCVZwH|!#` z0C7DLV?Dn-1Uwg#G5DMuo6PURZ)J8oEMq%sSoIZcf*WE_l;v5uGl@_1_DD%SC)N9j z_G7m+Y4b*^yi}g2H=;A@Gl+`gy(ev!ZkZ+;+<hBu+>{)4sS4EY8htpGLu@sd6E_ua z81jz`J+F1tQ=|2xvdgj+<{jW4U3t6K6G>+L6pu9KvA6&_O9&4J?Qg);rKgJ%l(0Bi zV6<(~S_4<Z8>|bI0x_P?0LSYX{bh9oC%B&@Dnl>A@;U>z?BEk;p%QkcbO3LrwbTUJ zMWE4=VVBm`8!Q#TMjv^XYFHpLEtDQx#eNq0b2J$xE`D<IF=JGV1&Xj5A0rpgwca|y z%^g43eVr<HqNu;^T_aF5)D_6_RU{=T*^S?L9ZPzr=|N8k%yt-8?`I4#eE)@<Sz>eq zqOly0VcTS2u^}iCylws1ZIBM%`>b?zKUVkGEG+qrIdk=}Vw3sM^&;^61@a|_kg^6W zqb(o{S5)N;@dd5Im~!#|hE)HT>xzJz8;btlW{Cg)kSf#vlyoqCxBd%K{i{e){GawQ zQ6Y6j7193<r23Z${WtRY7cI3nvvstw|CUAlYyN)|n*TcSkI3R5JeBo7@zlS~|H4zh zMN9u)^?%{1|L5@k0j4st(EXRi<1YdGUltGMZ~pZ^*wnvvGB$>9HkI-Jz@~o7CH@DV z`oC2;{F_<*Piez{=o<dzX!svyhW}PAi2Vz1{YSCzZ^42p{r^pg@ZUm&f9VkZ1CIU6 zr2eN}<nM?1{oX_U{Qp8;|G{Mc|I~lc*ni63d4FNszwLiRw|^u3Q~vh;6ZwCh`|oIf z@!EeCR<?iPxBtd%{|(~)gW$4!gSYJ8>$CpHn7<?cwdQy4w^;4JFx~%N`=984M=^iP z)&8lOzEy1hJe$AAf6L$gzxCh9|MdN>zh4<U$G^%yv;L0!_j-Si{`UTtwB_4*_rJ~i z{`brFuT1Yu1ng{oFU5bi{*wvjVEuN>{Oj?3ss7)XU`J!+jEg!_LRVX8*}bYB$jfO2 zq;<1nFf0pGEEj)Jmym5)TL`pu9#;rBfdCL7NY4GY!*z$H)K;HMo-Pxa>W4@7>{XSv zvMg;I#u+nnyAfY~Gz5_pV*iMkbTyb9K&Kj8CpTb+Y2PrQ)_Fp`5-1=ec-MZA+LV<2 zZ3F}$D2D`aLIMK-p6{gZ@U<Y<cfilWA|kaZ0QL;za_sY~V1RlHZuvulJv}dSWBBO4 zK}USCL*nQqjl{k$Hv_N+@DBFA>_m8!pKE@a2oM1Jz<}xk7lZ(<YH46pSdsv$q_DWY zNd1UFK9+)W3%z*ekN|?Tgwb>etiGr)a5Z0V05yRe{<%Jy4m;laadv>d0CchlQpbiE z{e4Kg_u#uA>;l_x^61G!E&%hOda&ReM0i&KfWZ8?v=`bvK2WX=KYKo@h9TiR?rmNB z@kW^S=^)Uh*ykYuUB}BPtDjvmA+Qm4<*d<<iD7&-c-;N<ld60)U!gq;+=LMcO7fur z0B`u;M~ndheRJt#9|@+0)?<uhZI5-0TmJClR(@#!k^{iig7x$~BA_RWrHNhgHQ!C~ z0)CZx#Ky;W9O=%~bhUrxgHiN?8rTd(4Gevy%pu*RtYMvo4&43HQO2p%1K{24y3kWA z_R+IOc-BSlfBj{$j28jmryu>81;Ee`6(I&3>?#eZ_i<G^{&9u;vPE#yC9>@k(f;+r z?n@>A>mKn-uItFBP}Q-qc?p1n8?JlH1MIrRlt0>cNE;Xc=#vIp4ZJ(s3%K!}k4OMc z-ec;E>QT4jfxriy7P=n%i~5nRD>DBfpHs`zf1Uo5RY)5p7Z0I^3`O4zxCUs2PiI}% z8CQ$}#2VfykQ?fKX@eK+=Jpf1$O^cz!QnkWaC-}(AMrb@Kezd#+6y<9dtF&DfAp8Z z+~+~X3p*l&l^i+5w$HCwr4YZbz3UK3RkTCE>%(0inxHe#E&zUIWe5T)lI=I2kymv1 zExxH!0uY>2K!)9e!-E50?$58im!pw=T~ibsTK#Q4;({Om4uAaOOFkGMJt;NzcZKsV zv>wB~FZM5%FN9F=ek2PsJQGSh%k-qw=n}V2Z$0VFlH!P~6aG*oi4JFd?{0AQVjs=t zKc+!1R!$HueSynf5l8EOa~n-mZ{ITCQXZ*aQ2XpLqse}iT-ka-tuiTw<e@_iAmktN z^rLS^Xf4486#eCG^^A|NQD!%^SP#N$(CmXFs6PP$etH8i?iC_eWgDAo(@1c610(6n z^z;xq>~1cQN^M<l^ZOiOnm@6UipkQD#kXKX!8sWDI=~es<jMxQz%+(IA3a1as%{ue z=`*zga{Q40?H%Fo8J2hZ81Kh~f&IAWQ9@Y4ubq5J!K%`oaH0nGG*-QB#F&gJ>wpq9 z@OebWI|~wBfIBQY>n_*@#g$i>8E4SIo+fl)bm+iAEpVQc`Y0g=Lm!dovB_>s2fMQ) zY9;pZTxrypbRL6e;h|6m94i3V4?GkS{`1Q^YxX)e1+W#jX`jS31#}KuU{;$-F`Web z(&MQ70#qxDsz%5+9Lxqvw!BT!7t)&8bzJL6tWB%sPl-+wbuz8Yk7RSNBtfArs%4y7 z<`v35pv~)-0l`_I;=L0d1`MG-TX)M{{6J<c^ppg}^M&{GFw@(rk|Or*=W4AmP00Js z)Xme+Sj!dZRO4Ath_eEUCvi(r>Op`1LJT_HUBhWf92;EcZJ%|kl1iUVWih?PqKWg@ z2!pjFavHoNvUA)!W=l>jY~<p_x>A?qc7Cn&4iKRuiyH0K=QVoTf*X0Pq9>gpt_Qvb z&@fy>)^lmpn0H!dtYxC2?$*0$*UxX?UgwBt;yDTlhd&tkmeh6-12OT`Q0VpNgeW8{ zn~(4#SJ+QFp%vdw$1JyVz~{yy)&%J&YyM!WO+`l+$aUUdKq3%!df}tLWTDgCinCvP zNxBH1^Gg%93h=83QZYIqzukI_E|J5CxlOSsn4T<OKW~dbs;%mT5s={4QE1H}7UaF> z9JO9w^lAwTV`}w-D;_BFm@E><Z-eAC;k`vYry#Ew)@l=6*CJ@AM`HNVVrnPttiM8f z>Y>drBrHr(RJBr&JENw#$Q!!L<Lmr@T#QshjU%7OqR1Z>x__#8*(ogNfY&L@pSz|W z6{+58tG{Gs!1G)CM>yDwWmYn0i*z0hoXm|#YgX+1aH40rVn|<rt(;WG>QM;~;1*}8 zYiX<@74fv|{>f<h#l_4Hiq^H)243{W=_fHn306Uw><&b^)=8b45Ql_@QC)Pw*5e{J zB$>T`GAe!HzmE`|8OrZnehN}hyA~u9qRpU8xlv~&eD7D&G8FNo^jIw;cO^QhwNb3^ z+7<v5F$@E~U2NB(iM}0>&KyNbJBO?+6RCE)6{EPno#ut~evbocH-^@!5y`M!X_{ov zOmn_~$|Xp9=#ghp9?8vl0plFSs7eZFsj%`{`l?dERmPP0r%ogW_h5D1d*Oxvdu8J` z78H=H_I}3U^dZ<!t9F1cM?j)<Lj(NtsBOf7WY^;~7ldkEaPh*Iy(#1=OBDmQR>Xvk zjdE0mbrjq~Bbim{%*|pm(};WNnbR$^K~q~s*5yEG&oAw&A)80(X`v<3lRrV`h2bkh zAw&$P6^*st`w^1hjTtY2(VQM}s_80;{tVZa^-s=1mjD4bz!@|a)Yx_KK{2=sN*CGn zfPoxt8!W}7q?Zbt>J@|T!V$1$mcoS`w;yG5ktYI;wU-Hido?WiL=&~4*GR_1#^MaZ z$$m5E!TVWsOC4`e6MfslsPVLu#e&oB!_o0?5jRllIY2bKCs1`|4_Nt)4bCznn<H)- zSSL+$G)~2Oxf(Gyy_Fpkt@JgQmhbGjI&hHlrd4QOnN6k85h{52dSF1Qeuq^a>~QX@ zm)qDg<kSUgb{R*C*e<s7j(!R>G%;)2Qh6$Qxi%xI{TdqJP%rc)gbkOD2wAIwOaVGM znshy|OdD(H&!fo^py7AnHw)se?0VSD2fDiS?Xz_lqr|c61C}&tT0v8BM1is&tv&b@ zY#Qe6(Yx|-z+1Xh%Naor8%694`*yMl!-zj_ewRLMhpr!90qkNYWURN{j>ds_{;D@n zl7uhT{9u4E$x^XQ2<f#WrBn~+RuRY2)mac|+)EVvb46?V5~f&iq~y<cOyyK;xwkx` z21V{Ek2&_?hd6SG_x7i(jFNXf54j=P{O-`-Nk`p9>}yUn(?h$UWT!mP)7`<k+e&m_ zsD90$gU_NiaPtrW-!C2Mg;g)b6W}_l=v98|)5EE^8IbZ65psx!^CA+oS*w(&*cX0q zmUV_$ZS}>v*sZ)9D2_f?sLauNdh^%n?vTo@dNtMTOi7v*F29BCm_a9rSBM#uk&;AY z^x2cpPLWCm>Nu=z++>I#K^$-V9nmd3)CSN(QY-~lv_FMG1xwNX!KMF8wK{xp<+|9Q z%esX`0CisHi#SvF;jCK<(<obJb>}<;sg<ov-Lfozh|<b5D`u<S*RG#1P<hiu(NFI9 z?L>bpr4|GLl$(K}3hD6#TCxna?Lkq=T*@{USNWy;wwP`>CI^zU{_S6RJIF`Z9Fr}Z z!?-Q5NQXaCb0jDAHo4-G3Dx@2*LsgNUD3n&h=ag&KOt^z&5<X2_=Jg>B)pz@C`e6| zkgT=rNJkL2^vew)h+@YOQXBO5`+3T&8-LP{&SvvwO?P5i(!idngum2)4_%skXf6ue zuicX*r3p-38(+87xV>C@wy^fF{NaBpUpDPr{iD-yX747F&B;`O1;;+mk6Bkukb3eQ zKswKM*6du=!dPRi0h)f{7dvlT&)Vo#?yL6Pz?A9Qz01*t%thnfdSW=+q(4%`t7Inj zPU&1A?kwl?`;4gSvQv39;MXBq=mq4%%OKj=(1~dX7HhCIRBPTx<szZ0;NHp5aP+#j z9hQGN5Fg;f(}R<JsusKyqi4d=7(2J0+*_%pcV132R>$K^Zwid~K?qp~o%=ROA)QEA z#=hM7g5sg%_@A#NC<v^v#XqMFb;7VyFMoQg1-c(R=5a{9KtV-3)0@(-huGYzlwmb% zfX-BJhD-J4L}wOJW^c#2e~?pS4^58bO<qu}-cSV`cvUL&97X|rhII4uyx$08--eHn zB$b&)>bg=un+mV`c5<FLfR4Mx$E<BcIFDE*smv^ZFzUne%{yhH&ofZOCV*Ro_y1z3 zGAlxt3OCs0jt^K{b#};osf^Yh#i=jq6UjaO!(d4J`ulaIxpR=fjjo#3igM&rCvl3s zd+=#x_kiui9WRt1ODml%#6sx7xjI|0&&)K$hWU8bN2k-%1*w?|vzsMAl#x)zSJPXn z<e6dXd*?;sVxDQ%mN`YZXc9GF=M7IryWCE5?~gyLnk(@Q2xi(8{?N~;YPn|a0WC$U z?36>P5|uKYp*}J*PpP{IQ(cNG=lzSaN5{{FqF%PP%|u02pUPdDWNvaE+4!|wnnyhB zxQE9Pivbm_5n2!>Ya8VVZx8P=Ne`nX;2X^a9kea*ivg6Ngde!$RbCiApo2rhg(_yU zOi!B{qPW0_wcPVqBUiZVtWPg)Ee2RPhz*=QA?n^YLCv%m+2zc!$_gG`h?V5CA@0Xq zvHjXGm~uoajYvgp>r!O^;?+@G=j7bTsM>Zzj<@)35D=C`WH-o`BsP3(%hR`Qo<64Z z(H6w>We#sa2V>DdvEm9Jw>?JYCyjOI+*=Lm0KXjK1!`**akTIE*@Au5Sw_0=&~x;G zG0u39?Oa6H>yzEJ<cuB|AX!8=hOOC|!1&gu9k8{2RWAyIYiPr?TQ3UX9j9^hW>q!S zpeag{;l3YBM>NE+l#LElcnFO0Xz5`^0xEN#p1jZmuv-g6qD~KZ#W>{XY5}HM&4X*0 zS3tf!kIsNxba-OCjGNX-gch2L?PEh%!xByg4#PIXP!*GBfY=M;b$MYVieMBeAY$O| z|49Y?8Iid4)Y5@m#g(|3zCzkG<tiAg6{Oy?u~G{XRo^m@?PQ8!Hxoh%vF9a0%=e_U zt!)DgBaPM0*7r*g@BP+%`jPZm%)ld_cXM>cyIf<~7yvhv${auHIN!=w&)f7>ap}cw zR&(;T#c2!&)!T{Na@~pc3|dvsU&b_#-I4`Kd%f>{L^XNVBtr!yreIJgvgzP;?L%PH zuxL^%oIR~s_suDq`k;T!*>NBSeOY0xH{O*>o4hkIH%n>vNU3C@GwGy<7L`$jI*4*Z z1!`m8ICl4^?pl$}5q{!DMn5(l=apBYW-(dx>vWgpyAh9-H%GK^g#xoMiTtAf*t7w5 z%IYYOHWg$a@B+9#dpmAB9DA>I?zP`gx!0)Mkj7^>(sb(C*(W#Jm+DB2F+&cL2Jf2G zE;xVu`?j)3qf?2=>CVSNvF3o~PI1yIaAsEEqy6{ZmHXna+1<|+%E-@liA>8&P;2-v zePVPp{&9kZMliL7XHGc01u#5bMOxr4&Fw<%S+H7}@e{S4CUXJ$&l|{l8qdOdT&4L! ziCN6K1dEefy{$YMJQ5-d+z5n`dl)-a%DAJuvYvhy)?)7hKA&>R4(~@5=%OYT5Gl|r zdadg)Uo5nhwqC?vZD#k`F83Rd<K$jZzVpA(pBrImweq|L8sD<mn%g|TZ#qi~MI2S| z%us~tfHcunsfx5C4?onJT6p&o2Aa*!0&%+rsc$Lpei=+?N2lMVD;8x(6*c*!1>NU| zr#!*ei~pRsEIh7x2)2<=zztgHZ7mWtQ?q-c>$@jD6vOJQKvf+BE9$h}xW8a!D;HX# zznT5nL^{s|k`J<9VO4sraRWga&A2)m`?Ec%;B?3RP)^LWzD+J<ItrpN0>)_IL@qyN zY<i~>dM&Wu!f;{?D0+C;m1%>Y6=6O+)FU`SEtJO=n*77KsydS-_e^|E56|I9Zcd*K z(L;myxqJx&xq-H)@54#C3xj_(f=Vck2;`(o`;sXLHF<Nf;UM-;(pZBQC-l~D<SH#$ zZz~B_IoK%&sZj2HTjn8Iru(Jt!v`hL-xZyR4?oJzRcMIeytswHzseHVv=uV}uUix| z@8Mdxq|QFxw$v;P`*`gf(!QygyYj83BIDoFEBKsU6Ul^)qxs7PLy2x(?;Jkqckisz z7hpedT;_$bhfI(CUy?9gqHAk#^b#I>+B~ZsE@ks(5u}0S-BpX|k*uscLrX<^$PR1S zmt7Dp4W?|QH?0IdImYNZxdO$qf@<aN>CW3qVWgykUdl@oZ(bhHPJzyjs)M-neo<#A z@!V9Qox`EbJGd^Kbv<gxQ4kX8CSPCZ`m7INM`jp1$ynYCW{XrVMe{Y3nmMN-M3<r- zYC*P!u@gu8K<@PRX1bt})pBA%?lv}b+}mX4-hvU)UR2;P^>vZHe!vwjv54}iL@-l} zaNAJA)#i!Xmz$+@`n*6Q+qn&BS@2B){BHBOp*F%&QF()MNwx3J)ea_MXO|6cby>U} zeR;XykFnq>uc(JMrzwo>V4f5{jSMxfhyj6gRU5@1AF`@b=F+axbloC{XeJI$^5T;x zCt&7yOfDhkdOY^U8!1X4B~P0+$ho3VJjf;7#hrP+3vR?TRAC%>)`$I_Np&!WK*|7Y z6N_ZH+ahohQtBI1v7w!Kersc{#Xhh;cSku{bOU<tLnU8aiiAg^6mFvZl!7kZ9zpJy zj&QHdWj_RSAYS2GJ7*+@Q7p}eLxLk$;pEskn=(<N*4?hle4d!}9CwuKPIr+YvuJU7 zs2;mNr}Bn8+Ns3ExUnJs!^|(<wbbQF;aF4-Gj!IJcZNU761Yk)c}P<UlBEr}x)jLJ zy-kgox&^~QoV0Y_&6JPi+yR$c4z&-5oj!%g8(RyJK4hSzygV)?^V9pXeJoWpmYmPI z8*v%-OmzgLPaju;OxJOKPp1K%7&8wq)F`=L8Xi?l`0iIHnsM@@mhfv{LSErsQM+lA z1_M6yp_Lt8-JsR1Q`#GiMNORZ=9a>;Xqk<R++l>!o@*0v5(;yeXzG)<9&LWE?4s$X zH|gGyIuRP<OJiuO`<~!ysbn#pz-Ns@V(k5&$)zI<LK&O4#B8E!H@A+}P*P4s_U`VM z?z7{c(Dcx=w%0f?GBxj?ci?84fok!<V8OpElY0`Pt@h?h6}%wBS7baoOvX#S&K#<r zWRB~KvPtZ*<d`HJ9ev0R?=dgE|2X>)KV;NCq8^&*brdFd_uah3=~7D)&P*`f7GolP zuJ0aAdUxc66y(^@$UHSu%QlK(@;1K&^|fOfhS^+IVeu^w6RRc5b<#H6M|z(?#n}c{ zTReMJ0@CR7^es3*;0@=$zJ}p;1y999V-?fNujLhPPL7ZjGX)b3D^(geGs??Q&)=J= zExnhq{cds>D^Zt60!O^fbWO~v9b!P0v{-RkeWifn$w0Q9;udanQ&Dk(n_+MC;8RG+ zUGLT{w%;DbR&jIB)+#%^tJkwN8_Naxyo(Csh<ZT60(E(T^FCQ>m~CDqb3BI9Ua+Em zEuO^5F@h2V1^y!mL{r`Hk?u6Nnf_yj`zJ2orB_G=&qubn{p<M@R^RV9uveSrNGKcK zpdt2`@+~|Vjw#N=yDnG#Fd&Wid3=&gm3ds6@J8(JJJ=H!BZ2HWhGdB1d<nf*CU?O+ zcOR}Vkzf4l1v<+$1<17hX0JwpS$xP?gQ_&^pG8+n8#}ek9#eNINs=yQmk~HVX7?Sn zJ5ipgnh_yA%W_B-i#C+wVD*eEJp-ppq+2Z4KTEje#C`Ut<&DtjT9F#?sSVFA;tD{t zszH(ivVm2by9P&YnT5}kPVAUvwWe7ZK+^McCFK+=xxP$KtL))YxD8qF$O%0)+rPjh zY(7lv;V}9!jx%-b<-YSBorK-Q3OrN;wmH~R;v@($WmO@q1>r8G4oe>EZB+O;Fsc<( zAJ~h+{F!8F6CM7DR;fN9+T%;t-7@drT>C@A&@&cp_ZqEsE=$~_sTt80B%-9wJ$gS# z{_Et{O0SRm6;)Aua>oJjZgA6FrSaT0Cx1CyGNB1bF~T<|FY~!h7nP+BZ!!5W$f}*- z<UwM6&4I2jk#bK!F$V*45eN}glq)Z6BZ<{YQD^g2Q%~8}ZU1CgRCJXd=%i&L^(l4z zImmI#iB%MSPM%`qgPJ8D&s3OaP(IE>$IEpTjSxeDL>@zGNDs$ru0m&JO)Id8Yc+?? z7t>G;`TSw#JTIl4s*!SM?o<eaQgw=}Y@u`kL$KA!#dG%kF3$o5*mq;M^&!YLE0A_k zPLplP(%HZ54NteFZUSf!dIM$TVflTzc#A`*jAej(5@jyiE27XsGlTV_eZi@RV7M&) za*p(b+jO87u{!bYi*xA9R@pHrIe#V$8Vf1E0e4dBOtfX{ILiB$AOAH6rFmyWK8z?y zSmmkG%VKv03|{v<25I6pOGdDdZsTgI7rOA77OM1mMPI$<%C>%PLaU8#f|ZPEbe|@Z zQ%XO%7}k|S7#T6*1#JOLr~M*fY>HaQYxiTAdn>OqZ8v}p>8<Hd;ettN=+m<3@$_ss zcZvG$vT1%d-r=QXmM`hG8&1Y39PdK#WkjVDLlQ7MxfmQ<X5pG>?xMd8T#4KGI8N)~ z1J8OAZS|JRsc|_^!}rblIrUk5uWeR7wWxQWb-OK}-r$(TI~6=EjQ4c|Nb!aj%1zD> z2pziO%>#gF7DP^=i4iij08h54>~T=FNH5~gS-`Wso`!OD^$gKnkPs%-8T)CmKvhnh zwL>()1BP)ObOn)igqffV9#HO`o7pQTs$^Ttt^ie*&7KAwimOc8^DaV&qr@=WvrtEq z5Lex@wKVO`Sy!xQ-{j+#`TL=O%Wsw^?IPMu;f)wb?DuF7-)N`prQrZ<bJCrC_E^wl zn{0_;r>cgcXv@|7DtK8^io3;VTCe&UuC+KX)MPi$ubKe&dUj70zylxOHRmp}WIbvZ zVGcwp7!S>@85Ld2QaM6~4_3e5Op*`l(h+_nb>)UdNF=iJU;PMQjjtn5_amKFQ5;vo z<L?}WSdmd8d64=0w7(mF`dJK|E;8cdm8Kt3`yl&F$29hX$0#)eKrRj><<cTL7qg(` zj%${~{)`VDb9`;YnkA%uFA$+}*jUX3&c1+g6`*-PvXK^1QG<HQ$Pj6L+;+*}@52l( z&ag%b7I?@^%N*h0kHH4|Brl6BQ>P}c52kU!5YtF=oxB8=2=WgepgSPIo%1>+Cr5=! zhUDcX`pFKg9&8M~Hm*D1fvg5~;=l2z{L-;ONBU&$B*BtCX_~1%B^cAtQr<|G?;;T? zV(jc8UqIcE9HQ{5U(*E0_%u}tg8@_h3ae`BB_ugGz?V0z?IBOTi#4_k@<+KTHBBb- zlEE~;K--v0q2G#Knyp`-lX!v$Szoik)llo6R)oyM<m`Tr{W=-WMRx((#o`B{eR(Qa z<YS`l2y4BX96{mOW*p#qO%vjlYi1ymx!C|B79o%F%%rs8CYFrD9$88(jpGmgqAfxl z#$w?wC<3p&^Q?h}lZ2wXmk1BMlUm*FpVVw%U)SEZx?@Ki9VXa}5&%=+X%q$8R+3eR zJGcytXV7giwY}~g$x@hYy;q|9s)v-9HRqJ8##6)1MKc#`_V1a4%H*L(^CrUf!ksO~ zCnZJTez>6%q8@H@y8Aafv<R{LtUqu$9eRikFp-_5>RV+2u@H2%Ue@x;9fxi!IpPYy zo_9P8c4NPya?u7O+MnT8-sz(nmCk1}!6!CRQpe&Q*$u6C!)N!Us891cxU&xSREvmh zU3Nn|T+=TFD#R~mEiDVhw{q~}(ZgoCwdmbFkpmI|&KH@uZ<PKY-rhO7l5TDLP114F zv2Av2+qP}nPIuC=?R0G0cE`4D`=p;|KiYf0<9p9JV|-(c8ms1ARd>~_n(L2yuHRLc zp>+vC-RGInrtvVTGn(;*0L)>ORVBA*979!|P*tCChoSXsxm*d>wcV|>WfC^peEl|4 zqzvYI^IR?=qg4c9od!N1VUKHVAt@VFGAhWsu|u{TE@8xu-qTPuvMegv!z5gd2T#6Z z+DwCR+kHP{63zIiB7#+_w4SAkZAMl!vrp1Zj+!=N1%UMjR_F2SOvA@XY%YpDzRjU1 zS}HRO@nug_q-#L#`+n&>-NRwqKKPxS`UCZ_);uo*-1d%?lNiw0dZ(`F+`1n7(W60v zW85ZEmf-g;@ZetFYP}-Q>VEDxZA<8K%F={S*SY!zv;d<=tR#2Nr}9?vh6q%f`d_(f zc4L4g*_UP86)t<Dm&k@44J-K)w7A<H$JMNh_Zyyww4SBY?V7Gc^L2d{4|2gV`0uCb zGF%xbj;cY{pfQLIYSsnSYWt+{6R|nWtTSL%4WA!3RX8{F&6;pZfWi;%l+P7n42sV* z<Csd?4Fe(3`!~oQU}c4?lLG~X+0V*weKX~K3en5D$CS|aD|bO0-hkzXRilqb8s~IQ zsYN?l!j{A8Uk@G~*warXR!XWG2Ay9uwx+~W&3W+hxH4&U#ZD>Ne>g-QJZjflmQ=6c z5_Fwt=dJ}z%E_jk8I6wEb1d-+fb-zYN3bm{wtM7D7Mqkh=Sy%N_4XO@dtu_R^3HA8 zc$cxq<;Hbfera`ji4a<?Rw9<O!MH8__VpPh!vF;PQW!A9WH77bCkyVk*;$naFC-;5 z{eb`)6$)VLeY#9vlUAzHrpOrzUZ$FO%MJ#e>H3Js*Cz~<9i!Q9naL4^H~+10+$p=A z#B3_F!D<=g8JqnVgLAT;>lb4p8OHC5gh=FyQDV>A;4+Kt4^HfcvWwoRfZqjI=?((H zCqQ?e;9bpP$CU-HDju$H^tg2Ftv+V=zgkk##4+5b;nuoeyWL+yCN@y2wQ~U347HTZ zh_X$(d?SPiB}0YMo(v%Wxsd~mpG;K70y}`9r#IWLdm()gVdy6;X(CqBzwERak((WV z_Ss9hOdnS==0kh0BNtZm<Z<kUQ+-|>+IgTcz&~X;0Ue}N=_$O3r>W))quG}SKy4;< zhbDx;`XuV*Z9S>>f-++JBH?HS7$W6oMr9N8ohuv0C4nz%vEprUG|!hHf6KAAz_Jcl z?IguL7`!G@oPspsYv0AXp%QP)rUkn<rtht<1X*7AHSCSWXt0Hf57+=$Oe}N03rOls zPX`otU7Kd}_srXk(yQY$ry~(nE{KQ_nDxe9&2n>g%&{KmJ!Nq2gozpJr~Dt_yUJLh z%0%%R4DNET6coiRtX|!*S?%B?H9Pl4Wp4sCrZiS>RaWIA>d5R?IlE&314Xhr&%C`1 z*}Y65QYL3vr11c}SW~abQX3IL91jsAtR68=jgn>2df%)@?Ty@2fCb2#nBY0~rv|J< zPO=W4BQJfYQ;<Q;>M4m!S)@;Sz-}jp1QVb+hcyq`ZtsWHu$qS_m{)pi<ttaS+f7?Y zMz0rknEAmwqV=FKWf3MB#}k_l7UuVgd*}3vs}&cPa}7nNTjT|6d$-a$fH$Kgj#Q9+ zi<L!eBKV`8E<ItJkND2C>TmnlRLNG%k2Ahe!USug>crw)7xq~Tms2AmH%%ugD?H2* zRa|NLCcC<h+QP8nq-WtF(`*jpBCR@yl3iEaALV>gMMY;E6dR2Om{dxm*9e(?W$fi; z4@-jXz(ou+qeAe9#=aV7S5nittTccL=7b!~Vk@e{?{8a%w`sfD7FD~F4X)%A;`Mcu zn5~0c*hAv5??89k@TTWOI+_n^PH6yM5^2>Aa2|)X9s{lPxUCt+N@R8V6v>u(bIDmG zAJe1X1~zY4taZ^L=~HBiNI0yqGJmIc?(J4oY~fvYyQCX;vwZRf8LY_-D@4B3IZwT} ze~*p2loGc$?KUv&JSLmBWUCuNJoGA3_8~#?)yl#I(blqiBU5-%n^KeFmnmDQmuL@` zm$edvra#;%YuO9ka){?Obm|+gwPb-AHw|IxVXK^)ozG)s7a;l)(N?GMsQ9|zG7BML z1qRwW_ao*NsVhPyJ>D6Ic9to<q`4DLlb?ua9-t_9QwCL>_Ow0hB&M}Kuc0}v!d!<T z$8;1Xdud~tT<%L}5-0`HHo|kpbe)Jt^Prc9z$mp0_2aV<$t?wXYJIP9d|Eo?aJ2Zz z1c^auDQ$}+zX=tN3sCR=BIA+x_`=E5mS4PUcnh5AktdS0#?Vv>W*s58fZJ`29})+6 z!sRtyRX0LsLvlWn*&R_#4T2y=v|I+=Ea|TQto>MKPj6|F#u~(h1iRyj<9Rv_*!Y6S zc<_lB0K_+mQ>FsyLa2(<jG;$7tH3=FT7824ZWwZf0w1u*p<5g0iPy%5lWDAM+V@x_ zE=cMmS3U63l4&Su@a;4e>@I_|{LDV)YVQcY-qGxGwSLe#F=y#OOtdQ;ZdVg8&)anS zmQihYzwpo&2h_Ius-lG()G2y7%e;oiShb~~{;;d+G%hd_2n(~40Ek-i`~qYI$?<^3 zip$&);D!bhOHh`3&7`%{llhQNRR)^@^piM4CSWyiC+GaKf?I)l(Ab`ON2;ioFKBV| zwK4?#4pjrW%Z+r`H>{c!+lubb(YG#6Yzf|Ya-ti;v=obx&wbjSr18TK2=x=ogiH$r zt;AYE{vNEQib2eXoCpv31m{YNUhgzH5#(z@-AfTqnstY1B!q!zYdFOLCl1ythE7(! z$0w1srd*@gywQP4ie4T`kCkGpFw$;Yz(EKO_7i|??&sm#BcsLcZx8lw;Pj77K^S%v z6~>BZGE};U9)5Z2YlvuaD(m{Ijtrp1q+V|C-+4;kWiH-<{qnegfkis8cx^dK-$Ck; zGKBvV(ENps{Xsnbe+4vuIe$p%IXDWK>e=Jb(SJZ=e-fI%D6@YMn$jx#;_8zBMrcYI z8Jhi9LX-Y?!t*ae^S8hs*ZT*d$@))1^H=jvLX)2M!vW+MPWd~b`F}Y5zZ04tbm#Bx zA$0T~jv;>{n#>=R+}{vQ`VaVyih-UHkByBPkB#|%a1Rln5u_2Jk)TnaQT!V@X+mR0 zV@_j9V?|?4V?$$0^9M8OLgV&#Uh+3w@1MNnzW_c+jXzk!Uyt%HTaaJTUy;8)zu3h8 zi9P(a*B>n5-}%Eon8-ia!w-V;7kT)x{L1#n5&uRW{!TgmcK%<v{$dXQZdvm?S4fA) z%J$*#@&|JG!MT1sy#IzAGB7Z*{jZTj1v5@1ulb*7B8H;$aaI(N19Xu_36fyR{Ap?7 zJ?N~TBFNFL4RMCkl7q<b1%k+GB%`C~(0`D{xJuuy^h{r0dhxV%xSZ2Gs~<n<94}dv zbp!#dX!3swZUH^osuYAsB9cU(pr?-o(~XgbgNLW$48r?it7-)duL!CuE>6q)bq7dP z0+80t2%Xr7+$;z@E8rS$TaLP1kXKRS1WXKYqSMzk4iN|n4L_(HFYw3aH{MTstfWYy zL=r$4ri{9G+rWUdpCItopajMFb!h>D?FoS9c~Oy2fL=F6aF4@2A$bQx6GieUXyaw@ z(t!lYONIa<g^FUKNP$LWF#wx~<;(z)OTV#5zEYP<@aKfXC*fYj;k>G#`0-^Az5m>% z{rKl32rSH26fW{L-5lht+8CHXj%f5;&5Hmi+<vOFIg5|?NCjMILg>*~lr`jF2a=U= z0{FrNtCzrsh0knR21@ob6*iZ^sRK{JBLj#?R%P#qVPuD(kFAgX!g|saCg(6%WqeFr zjK5q^-2FJs^Sbz<Zn~`~QbIM1{S^REq(~HgTw4|%TPG}NR;B0!7=Ra<cXo^_R<u2E zRxJ^LZT}`dParuV7;hEPXdP~kW7pf@E9A&0St6Kl;f;65p<w`7SjONB7hVY8t;!7@ zRcT0Hgf=@L12mA9tu7zhT);wxh?|CdETL)i-CNkeF95`{Z!a{GRU!awojO0?T82_m zSaEqEhNYsSKD0MoafSdOY(>8Bc<j*^u5c1BO&xJ^ufgeZab5mdum`~CxP5Fz-<tDg zUgQu8V|ir7T@u8n^O)Bfi;WH-6b4m+kedrfI<HS=1ddld4za$3I)=Wid9;2@4S&mT zYd&V-+*S~|Lv6!Co%T9*E#t|<j7H@IZV*t8V4i`tDI1nchL(0pBw9wQHL-Fm-RTyp zqv_yy5#E?k(5MiRVc_3IE_IroMA_7Xl^Fp~s>*jy5F8AYajzjEosz!$4%{5Tz{$;W z2|q8YzdmL%D7MtF?9NkY?ZN3FxQ4ULay9IP^wn8NP)LW9bObjYH&srhqd_ABqKy_$ z!GWC{nWHoz`CHVy+m|@jDW;z7cQQ&@`iC)FRTpc3@h%lGsm-^}cDI(jCDid(5QhiD zP42IB`z<b}9vb(X1TCYET&KrW<IX@W^Q<HV+lKpQ4V)Y##C3+!2nqBUT<c6ChB^`i zI;tI0Y(-Ix_+0yxHV4tRauzK}`D1i=t~%<`ow*PYqwH61x^uwZqc;}kN6>~I{X047 z5YKzse4VZp#pm|W1>{P;aA3IG7$x}Fwu@m)b-F6EVpTY=ld@LjZ`0LjXwKG_itj1+ zqeGuWD!g_=TdXh^`vkd|NV}j~Fjnue8D`~IV)JparG2(-TKTdbiw9}duKI4EY{u`X zpqd>|&q5~jnI$Q{9yQm&UGH9nnr_u_mT<xDzJ1d@^Xrc5rr~3{xjr7+<rsqq2(#u( z!q}EJd5npQ>#FG`8d6tlko;P5KGvf2RXiQ~PEaED2N$&V0H+7J$x@BanWU-0j0yHp zd`!qDbaj+YK5-b#8rf|IQ!#>uaJ37iYM5%~7`c}%_5#n$h+}7}+BK1hirSaVa5%Z` zBg=TGa{)-thIvkN`?lsQCu^?z!XHq~*Ev$?e1_>I*2_toE9_>VKpxV4E{-f^%z5Yb zf$0&lqn&5D9!pu0=;Dg{1}}<hy}UOXpu|f*?B=7NDQK)fT?-nBB5E${k?frsE%E^P zwqr>s4$s@Gl!kBJmZ~ycA3{!?=t*cTjOLcpT!>(t--eRe;%`fxAFg#X3O~5Q!@<%{ z`FumK__&Z==al%8ijZ?Z?c&4h?zcDeh^2lHA?rvr1MVv^OY|_$=es!xP9EfTj`<eb z8J^-yqDjdPHukH+B|M$;cn!>NTFvMckd}@&%tvi_jE5p;W2q~8*fa=Ou$rp4UwO1x zg^VjJg}sRB!mstX>3q0f*QPGDExM`JVwucBqpKKYA4hAp;LC_x1;X#<EjkVqlS%fq zm2fGQ{m_NtZ8%B<DRd0k^3Br6u<Q?Q3->eV2wQBH$jgj|f{441GI%z8u)9${{>v|b zPj&D+x;YwQ?#d%>cE8<a8B!nz*%3AYUKdx6QZ(|B<2iPjGrtTlLdi3FX@F?+2+qe! zBsDk(F1cy}9XkLf1vgh6^7i4jtGqn~y`F!Oa1s$mR%%hP$)7(kPTH>;33Pz)Fjq87 zgwl)wLnOgm(y8@@3IJiozC-M$hin;}<@W?7X9=uDxW(VxXSr|}X~^*KG&E!u`zf$! zqP0+K9frQuab-lo_FWF-h$&hW(VQ`l=OuTT{~Pny4)pR1AyfTODt@A7Nl*GkVTO?v zFO@OFkRwO92&3p}$S0&6?A&N%-DtPV(bgZGRD$1|*PhKY#o7`|GWYwhwvKWrQ8;F) zl>GN_uA)3MCF>m#!l?)h?wLv+mbUII8)_UXE<3Kh71(|hPYsxP>Br=&1QXlUbky^m zxT9@CDnVtZekqdYmF_N!uV17-JasTMR<cU$L_$`kv#`slM}#wejO=WqU;4QSr@hJ| z2{UySHcU!EA?@Sry^BtL62`*0r2CGBi)+l|*q{^fqRC}#lXiOdqB5?@L9r^*)vJ7s z7{HJNr&9g2N?Mc0mDcuL-DfegLUeS=T^EpNLs`87cBSr5+}&lVRV~(6JZk4rCRYx= zgXgK5^2UsOZcu?pahQS*)y%ae?s)T)LXf@ghp{z|LuhEQX8A6N)%nV@WaFB2V<$V$ zAk_%n)g^qS!#99IHBK1?DcqZ4ajUN42|?-kRP6QcCHZ}Dl9#ibT#smDuH7X5TqDF# zW^A8XQV^&-0ul=O7yJ|x_|wr*X0kgl78;#*>-Spo#mNOi%Lld4sJBD7EDTS28RzNr zP&$|!jdF7Wr78#q<Wa8LT$i`b?BTKCQ`Z-AG<P!r-$Ubqtqfg$Y%SeQL$}+#Xhy<t z^w3oQ8W@!aHOVO*`E~ZzlXGtou?R|)S&@7ShR;Wf>sb<T+c0g?K0Wp+UCsVnx?v6i zrP3$7kxlJyyT?`~uVJt%&lyz+v#^u<3~PoH2u2XF;-^qcc-E^dv58@Ijt>!+kv>}6 z1Sj-+<-2$(z9b8QOOgdCP1k;9bZ<+wMHg1>K(EjUh{vNbj_j1^b5-4$PK`5Gte;1y zu|Cj!?jL03^1I}rQeiC?PoDS5=AR8vecVSWBYNPkdb7)g*QAx3Z1%QtFaz;V?&T#* zSj~!b&ex+1#;NwJr4G)Gk1zr$jCqEZ&kG7*RSmg?Gi-`0x+0~+i4rn{DB+Zloa#K# z%TzsU!*tAM{Fxj?%E}LWc(tb`j__z;P6yQXmtp5yc?gKx?cYm@og$jA!_F;!DiTi` z?16x7zNMbQH>f*bmlzPNYqXm}8Wq&tI(Sy$tdz<7!ozS7p22C#CvKsDZgOhIZ`BB( zy8p=i;Jv+%=-uuPJjVlO>2?L|)hYV7QV?9cAnTC=J1ipN`zyGXwy&5bmIgyHW@Fqd zU#w%2NP1C>9dm4>n%o+G3|A^`3Y^xmeO6VscLtiW1UQb|JB}x%z0E6;=!2h8DLq5b z{2btpKqDsu!#3S@g-KFAA}xcOo+^_UF$QkkTwm#S7Wq|Rme!-FeK+|wrb~&@$E%K9 z3x52d)oWl%6|f(O?uVs*EEs9I-q%X{y=rd8EX!AF#pO*aPb1|E%ac8aI%VKCTl-F2 zev2OenitK6B`-HH38{Q4X`2L#zO!|#-r4>OkmSk8JM?`j`?M>ww#`7Y%*Az9oN}q- zOxjoz?*!Ur+Pl1$Mi&XwBNx>daG4iJHNWJa$Du<;?TD`{fX>UPtPJ2HwQ8UyNyjgc zi-6gbnT%uYw&$MQ$}W0!)?qoDr>9mPHe(7B#k~=EmL(U#FAX>XM*eOpihR!?_C2Rc zZ4>F`ZRLBETKn;w7^Mur33FoPoN2bA*ba-{jIHCv4jlQL(vfuIPd_(QOz~UpcquZY zYH@F4xCWIEn~Lp%vL9N4^)b_A4ux8Kx`)0;k4KE>86;4id#~a0Lz$y=Z2AttJl^tZ zA`(qw!N7~p%|eZb62fYiu!|cSz4K-KOk(p95j{CQZTHyCaEXIqe^i;W3FWNhFsqEU z%Imtk;^IjdHfasHoWb*OC~~V_Ik~>B6#!n~n0*E!g1!4$9~2`06APu>22;UJ`xIsk z268~!^mwIO+Jo2110E(diILHrv&>DpZhlf@nuFm`Ef>tHWWTg$5msZ?0ecU`lXLf^ z6|fi^VfOWQ`{VzLlKVuiV^tQznFylt$$_WJaq7M4k)`Pe_)qr*==A~;U+d&?ZufUH z(~8#=3&YRw2!0q>D0)7LTXC6tm6=E>9Qi!(zUgedfAdAe5Znm<5Z0f=Jfgz3t_uD~ z;ZOfBFUtQH%1qW@MdC*>FKlN2uUensL&5lG;m`EZ_@nOsu+sdux}Q%#NJLVQQb0=n zUxuE4(_zy8yHn<Gfq$>^****^|7H`)`ca$zS>@CH+W1$M|BsXXy{7*t;{W9a`f>E1 z<vhbb6_@lM)%-7gAl-+$6OV<7_P?8fT02?k8`(RUnOM^p+E`lZ+0)osIyunTSR2te zy4cV-n%Wx~(HPq}+0*<ct8_4PrExHFHnRRlRsXvo>tE9wY`@*OkDfzn{ANY^@8voh z!>?QQ$LH79|7rQN=w|!vvHfu~f1lzJvi`8{G_yAOxPxZK#zyu=)&@oncp4vxX{fDj z91V?(@fetB{-cL@3@m?cXJq)TzaL`6zd~&P=icKnG5@i@)`xW{-p9E7)m!?%>xBQ9 z8K7ff`rFh1+s6#Rf1etlqh(;E{okq)6OA<Ew3aK(qGDo%0~4qZ&(6-UbPaWN56*-! z4y_@~AjHfB`I~bk4x{$cpMy0r_g@?D3tpEm0=7GTT9g_5tSj%cIVhZ|Qzb6NPvBJx z%Auqr#Vo+%6&KRb0O%a*_mdVO1p!fS^v8>sLMi9v11RtXAm!~IL+R`T+}J_(9HSh( z#Yl(21F^gE_qRON1gywKd#Bj?B+3eqjYkP3;u{iBf;|Dq{5>87EeoUy2vDnS0RTal zmiM}XR1+YD7Zq;?+jK1O=MY3Cs9F=y7r%Nu5y!iZZ%9~HcmVA_{d3mR?>P2g{93y5 zzACh0!T^$!7+c_XK&qdtCKi?OE9-n|W8X35-?^GfG0{rRH!tRIe3%Y>K5MZ0c51&< z__DG#H34M<AO|tQ9X+h)xp(?B7Xg&<S;M?@6>pdWf~twJF8TWbMED5fp{hlZPN-w= zm>YrF1~db{!+-h^6fOhK)%&1TT9{KvP)g9hJ8-<y<y!;VJI>zOKY2`bguHj9b)e5- zkqsj1_I7=UE+Htty}muu#J;Ob^iM+Sf42XY4u+%c3xZ_6834n9M!N<0U<<?>F~=(d zFoC!?@^cT|E`STjx2_jf_mkg`_qx=T6#(Z2+J)}TiWl5T3mAZwSP-NGaL}d3H)*!_ z_%{cE_lPEd6BO!7oUfWEKHn?F(mSoGJHE~XI8z3F{n~f_4Xo38f7cMq@df*`JHuZJ zxatl25^zDQ6NTEj1JN6xg#`}s5gQy}0Y9R%BN@#2{OHmn4Q%h!91P@54p5=quaVCO zjP~R86VJHFv|6aD@9)M*rBD;Euqvt*i+=Bu;5cs`+yrP>BH^7nGHkwY47&l3ety&) z9z9Tq!0atuYyKUG3s)!|CVK&8)R(EcRMAhV54tr&ZzKy~at~6pBD?Fr*9xzx4|?(H z9T4?dck93{Itx_UD9U%d^Y5&HKr24`?{1*Ly8hOcUqPL!{CRy`;P2{d-q&ma7oHM2 zAm%VjI)Y<A-O-i4cXp^>fxXq~`QVNA+`)buT7LDTMW4V0x9Cpgf!i~D2kXx5{MdGM z@6kB~QDgt|Nl!V72hMo+2CTa@?VUFX`3Cmo82IBL%K2a6yN~e7M>u}K=G*G?Nyf*a z!^g1S)ZE_v-j^6Qd`^f+QO7&B)-fMDY-q*Af(l?MX?)|MoW(9WwH>tqy*u8?YV5yu zQv=WYyjb|I`o9}v!kr8Q19AB&A3)W>QD#rDn2l{BztIaJo<}Ed5L@w(6f!&d9Cv~z z%X|Y%j38rUD4RQ8S2o@<ILAAebzg~X67;#6MT_Nvv6mLjbX&1wSs%KwCZ6UQQM_Do z{_%!<we99{ebXm{<62iVI~juXb?YrH)(;ots3Nz{MJ};u!#!*T)1#W-?eWHlp^F_} z@AhUzF@^Q;CvtQJp)#kfd`y&bzrf47U{)P1O*%h!)8;Bl_AV(;O4q7tb}z7l*xpYc zEFVII=%J^W=<AYXh)dsgw$6=SlYtM<H8I`tn6^Au$CQb(-Th=#xL7-lpe#rY-yvb` zc2dRQ7ZZ+>OKeAi$+bCFhHK(+^4FHB5*7RIy^tc$IcJNAu)vy*PM#PCd0V%}D7ue% z5o%F~b9qzLZYt9Y4SU?0oOHIPzT@4B?r+-E>9k-w+JkaDI{Rs<a_yniu0oT}8`YmI zG4qJxCSUyB7QQfQ6(lvOfD9ERXfA2QSt(a{3^<vHeC8r-jT8eO6_#d47w?19w65^h z6-SMPudeT1a@3PAvg1uvyYS&Ml^3v|m<)W1m_Sq6R!~{JZwSlt$G4S`Xj);+=|Wtw zKBUq&A4P6YB!Z#X;nATMTC^N-p}EP0cCc&jX^LgXgWA_$k1mY6clD-VJXIDxm*GV$ zqU5KD5S+qQ9*@I`pun7bTy+9$Vz8EI4KF&L<*NzhRR+*j#@G&txaE~C{-WeBYx+Fs zWbEVQMNf6ZVc?`EBC`Dr{o>1-q}nz1+n1_0jA8-|1+-7n<cNOf9N-SBi0J(p=x0dP z6=OYLh*f32&r{OM7?Dn-@#iH;-nob1DPqGwbj-JqNvyBc&E~9~JT_S8`QtXgroX0v zJ*;zBZq`2rcMwQjes7p*r1Gi9-3}}6nQB_S=;?NVE@vyapkuq9e-D$xJlo$`tx57g z9dnOant5twv`%-2=gI|46CWwE$vlb&s1#k4K;aFc=8~VY->Q*kNxxK*RpU)(9agC+ zkc~j4xNcqW!tGWp+H&T%sFFG3z1J0C5cj~PR?fK$bdc|59Q3tOwBbySy1qzW@cbFw z5teI<9yCtxK0y^=agL<Lr#8I1He7SLD*{@jz5|D!Kal4hANUFB;S0fYwq}Du^Q?+` zs0CWt^{$MZsyUFit02kdS{C(*hbP@9Bg;Jgqgm=SM)<s5oaH9uEg4Y`j7&=nl$<d! zv=UC*G-q*4B71FVj<Q_zp)Hure3?o{+nSMHeQ!tU!iS0cX?$e1uTLj^?W#uPOg#89 zs84g9`kUGhc$g5l0iQtA;plk#MJirQaSJdMW<v(9^0CT8_q=ct5s(KKJ!=4rBP2VM zmC7r6E?#HkWi)~G0^j5_gG)u~OsPM{Mo@{TQoC?f<~!vg%xyv$SR#-?2MnxnvTLo{ z81?J~ePR0ph)n{zJu8$5j)SlKaPYBEsC5}9>tVcuTckVC7`2XJn`$!i(jaU9%Wj&7 zG`b5YkdMT(#R*v&L-Cw5Q+0Esil5a<na4M(l@%Dnd^*Epf(#y`U=*ZBB%lXIg2-OJ zftOcO8-7I!6z?5HNuLk#*&#PDJX8Y5x1EBNx{B)0=SBtB6;OpcbivSuS3w*|uU}y2 zSusJ@UKYsV=O6QD2I6i6ws|v-tjn5;1_c%#A;0UqO;tfR<5nhTi_YxcEJ4v>K%Ev3 z1xi}MWxlq=GbdI&3OaH>BlUDw@(DF{g4&UI^hxQ4rKIgDd1hX5oEb<TiAK{*V8rsp z)aEV*7qz}MSzM7?u=n9Q6`b_eL!nZ&=VapsAwn44J77HR&-K!TIywj_Co4RYo*d75 z!Bl0Ia%^`r{}2yqQ}PMUWoKXZO=v5l02Yf->#Y+ZL}3bZyjjIp{kC@)zRYhTam*bz zD^hb0q5fLT#ij^n%=-#@wlx_`7jcC?)Y!&X$)9<TcrwBvWZuAhi>UTI_xPhaG3pZP zv;g5zI<yAS9oSz6C$%s5Q$nWv_}KScWh<L``0Hx~_4ZvguJ0Ca`n+w*!gm<n6PA{8 zunb{>rv^%U)wt0~=??CFEtCfJ%ypBljpO<gq(l4@?JJ;z;fQ%chL`LVbr%lJ{c}|P z_<Ygx8GCLm#Q_z~ylgowI{K%#yHAkuKq2pbT&&<N5`jrS?c8qd*vUr{Pwn0<93hf@ z((!(@bC3q@v<cR^zfl|ep;Bcm+!_^fpO}vvGFE59#^!k05%KI=I?b!+HUyIlqa!aB zA(B3(Ey)#imDK^4rNP|q?R8h0u_uxk#AdvRU#JDohVc4}tg1UU-n+0^=3tu>rcs-j z2^O9}15P5D%AtD2r{PV2^uSg%TV!UWlp|Bboy6p}jreHSejAXtju^&1ta>P{6!ezb znY@td@R&~Y<qVQeDye(ZjV<*F=+sJ~A-A?vZ^;zvfw(X2Py3Q-m(G?~frf>PJo)O> zt}5Q>@qCSrV|z{Jv~DX4729z0+1}cEfvOF{Lc5KNzj;)Kyp3+pBTrsq8U?3bx;YXW z{AUPFT38eMIVv_Ax8}HT+>uix6{#LBhHk`6cB3q86gj>hC|Yf}kO13DWUp*lhx3r} zNc6su?#kI`bXDKP@+EeDgFzI!pw)p{y6^j8Pu=pxu~%j|aQ!50KgXEBmVisb5m0Kt zAX|6WJ+6>GZ$$4zVby!35_Yykl&YE&LWss-%__4z%~=_787Iw9Qfy78*rKd#rJ~Rc zR>^PsJriS+2MO3AMc&~Z#4ZM%3xdU@_xTzcN{AAA<^-rj9)Mkch3PU|z7=>rOzTlV z_e+Jq?d=Kbikff2W}bSC%^B`j3HbgAI2y7RJ&{k0v9Lvk><MOX?B>(ueFZC=Vcx7u zyrYvDx0*ka6v_yT3qb)-#9(>RC_n{?F(y>1+{7B=3|>1kIl5_XXBVRp7yG4jjp7Pq z#Ti3?qLZs>)N@9KAKq9A%RCTqXmEpPw8M4(zyhNBoGD4#4;_W&NJIR?L5-?Vm2X?* zS_hP*93_R_tZQ5#aGw`prNgM}Z?kb@a<K9Gy20`DSx<-yYm0Zg`Wf?-C^0r4)CiZR zG>>bssgJ1At9pca>oX(2Fz(dsA~x5nf2R#DtBrVee<?)#M7a}A8zK|@nOdDf^~6H6 zG`H<X3!1CLh<&`B)%<&z<@T4;5%)B_%Jr9Wy}~lB!0Q2=Yex?92w^5EL@b0yy-a&9 zCCTlaYd~FN2MlV7!P5d0z1I>)(|au3sWY$Bwu_ED^S0aWblsel?sGhjs2|pshtD8y zI2-0a<{3t>W`^03lhf8K{e}1#LMZI8M);s)(Uzz-K&YKJzX+N?ZA7kdBwadjV2lf; znkWY`fdxo4O@a!J3m@9X(ubiMR1oxipLd6H?f_1;A9Nmc=a8MlDy1mJnqYYvgDYc~ z%0FcGOdd6MnnvT?#X6ohFTwjDsmCn$dNCE8YIw1UuwpFJ%8VU&vR3Eu)z3VcfRarY zCk?9*-*V|Mt#r&<a9~ZO(*1wpqRLyaASDt(pAm9!o(XY{57CBdcARmPaCv<pbIU9b zt2}B|_N<Y_V~82}qU~JsmJEKSP^*T`5I<21?DZDT>Tpmk&TcX9;A8EPYV8~Nt>WQl zj1uPM<h9os3Wsh=3z+jx)3oM5NoHcq-B$CZDMamO8qO5B>JDTv4f15$2kV}7ciJ_< zc6bPNjryGJdoF=&yMWa79C0V;fC@7RBi;*j7UimEvB35^T`}ouyifMk5DG7r(J9kI zto>dw#o@Tm+j{CpS>BJ@5YnyhwkiaswLj*#X0+=MARjUS7`=9~CzU_j#L>O@iSOQ6 zSU(-mF<|8zrYePe%x#l2y&n(y`9`PVlY_3Q>J-2M>Nx7gXO6gQ0Lw~F&?cEVP}Nbk z*S)VM2pMBKgVc0!Z$W{_G{K<C!BIZdnx%f=P|uDvATa*btSB54mO*#I7VbTbgYsD% zM#4?ErSlL?Qb9j9;an^1FrWQcnG~Ettiwd_)Bz^1l&2lek*AS-gwhzY40Uns7RGiV zn>C{zCoQpxSywCAWW=R$to&K!s!uGQ%6;UI9EE6&%NZD_YW=)BF&bAEWFnVN`p^S# z9rMT;WXFZ1;t@5O^QWEYZ#B8Ys|igq?6A!?i7c2a^~T^|B_r~9&+`^m2V=t1g`QL1 z$2p#LV44SU!iFxO9Sz$uFcmSL7N>A9y#ga;UZF%MJ<QGcls#VcFlz+Mg4MpzXC}85 zF`<`!xm-)@7083RYQ_{qckR)7c2l+OFkLEAR#R3f^MZj0?ifMyTD&*+&%S^;W#D@| znW`A9?d;ozfIV~xt1vCU;tvv*t$SD&c(95{`>+)O?P^>@c^(v_^F+P3fB2|!BCPxp zsFyAG;swx2sqDkEYKgNUzJu&YRjsIaEi#CPlYLFw=NC{_X;Bf`vm<!$dt)yq$vdP= z6~WnR+<kPD<eUqfi#y_^w#>S2pr9j;-s87qcd=$t?Tjt0w5tE`+Un;!>OfeunX=;W zB6}S4+Q`AsxGSd{L$tTr$EGjRfZunzGPA8IzmyonU+(?6=jhhjxL*=s_T6e-#KXfM zl+X(ZO4Q=mu5uJbn1?XqxQLg(T;$52I#~g-yQQHO$Mc|PuP@5EA#=aSrdO&FXI*q! z-a8cGkPVxoXZ7~6T9=M^xcRAc6Lj~|yQKV{9_LbA<w^Gqs@y+hTLD}LBy>t9Yq}4a zc{6;x%WM>4Y<B$Ty)xR=XT)|S$*J+!qyA-5qlSc1zY@?~>WFcDKKpRHh;ro3l?<R; zWoFsgP_{sa&vVrX7Ul4%bNh7*eo$vk=-i(kbYzq|g5hX;f=LBXw7qr$N#RK=C#YWr zpPhp;oP7j>NzuUivdLE8-2rzrPoA{<(^vabaXx`u+PY6G2DH6DpB6?G+6*DUy24R* z1B#4ZRboiWb^F>+t>wVPTYsK*jA<IO(VT8emH**MXvK#{UO|w)I-gr4tSK7~B2(oo z&eruK?E74m7D&_WbCh%Is9d0#yF1E;jZ|0Pi}I{O-9eV{u2xMG+BnK8vdH(HmB-=Q zoW$(9Ov73AJS6G^mF(|)FFlt`kdS)KBU)IH#1zhF@n3k@iKf15{j7Vr%)hpHC2c-Q z6q##L9?)e$4g=?23TNT58N2z43^^8|oi_?0PPYwuaa-+)`fx{RlWDx!9Y)$_Mqvk& zCf25ShYv8EZ-1(0)Z{t->D09!i7>t%2w4VD%}#M6+`9hTZsKtM4`<ixS$k|ARF*Sk zI7R|lK&g$WzBql*X-f=7d$NbQbv<DVnZm<8e1;CPTUBYy*6~8{-iIZQf)7tT<&8*d z4_>1{08fK>(T0%yF7wXp*DJeaQ}?)XLMg>J<(<QD_NXXPeqytS{wf}Yg)2!gAW5Ax z1XqDJdOkQ%xzyytu2*vPb@e5<oi~)%MErhjzm5Ba4J`IeG9*6p%Vz^YGGk;}bwi@7 zcGmZ`ERpEDE?h==8S1;7E9B=#Kj0><d|&b%bmLKNFske2M53Bor&fz#sZ#Uc*BPqz z^{5R4dKD*^jJ`$lY1EC~c934MYYjJ)S!-%kbr<lQ6*~G!1+$O$w`E}F!{3Q%*y{3v zRd%F&RR`8^c&Pi1*Tp%g1J6{!(lg$`JzqkPGY!cd<8!I!L7F7rdAH35_sqxo+=}NW z$fCuUv!0-<udlWvee*encn`7q-1ne{Cd_y_+SNwX6Qn$$!yO^%Of{Q<rN%p&T02OB zOZf3DF)Pm4AyH4v>Yh=k;*7(4tSE8!`!wn;zjr^S&ldHL+FeR=z}H$TduY$b3af4I z-7_`$G)qi-<dlR~$raMCInJ)>#2iXUb#JhV2@+u?vbxhR;BW@SKi`_Mxfpi0kF)GQ ze`*IP29tesMg5thhA(q@6pe^dX1C;#!O`kohU{8<eDA^Dz4*{B6^Z^(lgU1e@nQQr z>2S~@U7<hzM9&J+CxRBf<@MfZ3`WK+k^SOIBhi;1NuDR~eNW=`R`k-pgh~}kEwn&g z_>&6t>IR$bOV*8qLlpmrdim0X2%Uo_)z66goXAy?u}!tk%<UNH7+;cmCc(|LLMG?v zYh7v?rX@uwPU!e%rzb>6GyXPhoF=I~U(u_S=Wy?sk&E2j*NCV-tgggc#ccBhL38}U z6?<(Cui7L4ISBPUZRvLDhexNF@Zf_y5{|8~hw<?R*qzxrq@vLxGjn)p8p$F|IMgs3 zbgrlF<@P2w?gNi&y|Jv|sUPiMqD5C~J>8yq4Y0Bncp0WEU40av{mHZ@EaDZF>}=*G zHvPOQq_S908YJvBgXQZ7#*z>|t7n;wlqoZd3o7YT_e_JhFTa%AYX*G^BQkJtz**k* zsDIUaWM{6tieDUKqic0$e7hGuk|W3qbgDqCdWfurqU>QjBsCc5o>BjF(|hBBwH6nc zKWX-Qy=P12pyWxXlpx<F+>x-~V%0sv&k5m!ZWW}756le}<y3KS%0&5q{#t#hYM8wa zW9K$eg6*fKXOUMV#vPP&QM<C^rm8mvcDsn1k}}^qLp6;CMPpv=;B5VsA`&Wu=qTjC zH~<%s$Gg(FCX<DK>tGajdI+&T-IcGGAdshI9Yx$QdWgrQ-i#w_qnH=LRaj2?2>Ba4 zS*?BfGxQH}b__Xm5_0xNVv!p!dgqy$*XU833Jd*3R4_l-7$Y&<9LE>s`L|`eq52~) zrO7>wEagQhV|L6Sh2mhYhy)%NWi=p|McSz}L98lmuPJoOHl`M*M$VwiTdyW7qwjb= z-LZ>F<6+uOnsH~sL}l#8jD7P1F$rH(_7$l=8(wBgpk6t^e&^Cdq0hXjw~y?rvXF!B zDKIB)gxIC=xLkv^f6xXK4oiV16`<R#uh0%6!t#;u@?e1(I>OG(RrWOHR|>b*PXxMi z6>_UuGfq1?oZuh^Mn`P5Ghsq|)>{#%-K3jk79YWbrgKymPYt)?3>tSC0}deSj;CM) zn*!ZO+ml4~sef!IIh~w+b>LztNv1gFdcrGQj=zbOXWcuLt;VMpfnDBe%$tt9t(vEk z;5KU~HMH$k7Y}I|NS+>sW`!=7Lku&Ra$8~@Mn$+*KJycZrF=HM2XT5k36-1n=;bjd z7f(%(k@GGU-!IMi?3ohA41yv9sY6!BJ&e{Ac1ifcn7s;Mh&l8WVhiOYP#8079cLXo zs>9vZ2RYllAj2oeOLFohI|!cd9=n^P->@j%@5kVwqj|}$7Wj}uTRB7LS=1WI7n}6K z77Vq|q~WRhCt*|8NCgy8yN!Lkge$tv^lkk7hvwU=VyND76g(zY%TyTkKM}024zD?m zs#I>AVwkz*W|20tC#C%Lp^^;u!tQIkLm7x6Opn<g(ebZPzN;Z!x-PYNvma+VQqUqK zG~ahWL{sgK7pJHko6`C#m5h+9FW*Rf(&pw$f3{yH)thV}sFcOxBR8ZRb6jUIQ6Pf~ z$Yn*qk7_~R!b!zr$pdR8r?N5h1q%aO!E|d!8>;IK!L}TeHF_A)Bp4v=Mz-v+*!t8h zwndyFtfT0Cclzkw1Q3;$;SXNBTsJ=Hc&{I)+emYln35^1ucMoeG{fvFzmmg&BrTXJ z=eFWT&pN-w?U;MJr>xCoGu^k$iA1=LxhXOcP52(g%)#?R)l*>;#xNLz#*c=^ey-@w zV+m8b+^9~6Bo2QL*z9vEypO&oJxs~6d})r}#q^ekj?85xia?muBlYD|%_(mK_3=<| znmEYUF|?@zrM4(U{o&7#qt9plsd_i*g%T*Y_SUIcP#%;m=RX>8?#_72MN#J?KBi9v z5VGU_D&p;G4z`rpv4f=0`4g!Q^H3g-ia;0<5aWzH62A0*tDQln3Pyl<uATknr0BxJ zbEAr=X-{Z%+%Y}PD+E74n=RTzf6A=)XwG+GM)9CBYntb!0VU$y9ZsuDd*rTT`85Y6 z&v$~uGQ5Ii>E^^zGpcD&9e8bA@{`CFM2DS<`MFdqM(6-s@=%3tT^35Cg$;9sN$;v( z@<M|r-5_bG8CgK!>#Kx+Nzg54@57fk)IRY9`0uM8lZ0DXx=_)=xjl>?J1|m<A9ETz zw8qHjeW>LxqWVlqc3^#58B0bU+B6s`Q0-OMu3D_PDEjTJ)^VSae!4KxHDr!a(V^Gr zm1S~H@xmh6jHqi_o1hgd#9hDk(Se)Q<_<(uERfqrOd^wcC~Au?s0NyjxY1*djU}Hp zY`*5s63iKvf;&I$B=(d=y$X_kNm)-k?XVrrLwo3QlCAmSDe&`P!Wj2<pdOJ6F`+5( zds?S{vZ-z-b4H=<1W3T;w}i()Ffm}5rQsmNdNwYKhR``-Wo;N<v~f)PWaT?5wqv|2 z6WDj<2z`E}BTjhP8#!@2M60cU``c$g^fNt!cARd@1d@tT$2R=sZ<01t`8DaO<_?UY zLsjG;V+5!n*`Fo`&|gc_-I_jKn6(+|1;`~Tkk>MRDY8t)j*e+8gl3b(>7OEZ6(PHA z0tlH*a*OcOl`=|)U{Go|SC~M61R-_Ym3XH!Dj~+uT=TB-`e&HdBSP_WJk3d^!kNaG zKmk}y5Un$U10Q;A^gC$ny^?_6J0Fv#U2v}Gr8oA|g)pAElvP2WLwPO*bz4{Tj){9? z^2C&=!QPm7sw^0d@f0O*L0Uobq&$DCZA~hsfNN6D7S_Uw!lCF9DfKPc6`4~jP}RQ; zVKFN4Y_XGP=eSLZE7D&J8l;k){T6d2U7|8nI~MZhw#PZur{wWO^z}Y3XiDVku@}+Q z@J8UH{ul4`MC@Z?+o(h&EH+03Tgb2@BiSQ3LaOTql`}f(KC7L+2JO+sl-Kzt0-Vi7 zx>$v#)qeS;uQ$kSgoOt5EKnj<Cw;ojEo)Gv$qRM5sLw>u)c%Gt>Nhxn#}XsMoN>Je zUqH9zf1qjM%WhE0CvWHQDxIFRI|lqrYBSfv#iQouQzwT2{Z1tv0*4@mQ~>A4jEb_t z+*u$SK>yV|19LYp*BMQXZ)UkN!&wVX`l7kTp7@$P?1d_hW_iCS29L!hX81l@i10*T z$R>nHPmwi-gam@)Maz_I{-L$fSEB(iZttZ=$VT}{)oB2wVrbXwF%)8`6PJU(c$_Sb z&$s>aNEhW8b`z|=8vW7FK-u+AN{J}F#qFPrWD-D-P3_lqUo#+pvK!|fEsF;&V8XkY z&jTY;EV>;8tM&|tt~!Z9TlgX5_kMmUqV8Ubnxk-gEP$m(DDl3$vFld@E=hbjQIv7W zP4rBwC=)`9KfztchDDa+g81GJm1jqGtJZE07~nIC{Jq3nq6d9&@Z<dnTDOFSx1M|B z>w>{HbK1mT)k*L{&a6-`5{wSThdy@{*NX1WeipWM)Z<{&av>YwDtt|w6z8pl;&mL+ zl`{`r8~mKVON|;d`pqTV7|*-(8U!vO@@UtlQSIQ<RcPAKQ^WUG7!1kIe94vJaeC7A z5f_Tp8;jQk9Juh{c*@Q=pj}bzA7n|XLKHs&+7}TLIiMA8($gMX6<u)1x<e+)V#sM! z(iKvhfGb=Js`sq1tV}D%StIU4AX{VVmQv4hB^AfsUY3Vb!l_V4!jRYPz7Ca$(rB#R zlj%$qp0|{cb%c>q89{=x5z8lg8uvpzcd@6L?BE_fx$mOlss-$@kP-;V(~_<o)hz5N zUch1P*|VJWgb93zk@!LY-J6g4lEv2{46SzPT^GN|UGp7jfX`zFy3DP;%^miJtu3{o zm!=om8+B#FU~~VhSyFKm?@`zwj!}d<!n3)Cg39t|c-Vi2+u;;gp_p#RfDDr?6&)|R zBJd2Wf?btDGA^~7quxJ5yD!(RgTa~Z(`#4y9>T6;q7im_@GzR+aM2!VR@aVUP`eV) z(Tht&Vh42^krc92K#)d#09YC;MMw<^|JeaYdh9i1ff39zPFYIL5H|$A5v-`dL`5t_ ziO{p)baDm~Al9hafP$UJcFJDWo5|U=5Zu8WN>7Ap^43I*$HC%VpXXS6U<;OpoUVkK zam4%iV2z<;U2C*7Y45DLX#X&N=>=J-dZDuROB;yZW^Q7<?tT5yDa0eBLfN?9dNp}E z#IpKJB@}{?eJNu`K=;SbD3X<2Any)8#YR1Kx=pz&rhT^7!*vZ(5S3oJ`PtP7PTIL` z$~f`@+69R+3<cF_79Z%&iKtz#`q2YAb$>r6Y0CP1-+oouq$C%dPMYutSK(*_Q@x2% zd)&$fmZ@;RnJVbeaT2k8<+JY7g>C%!L9ieAJ%6<dHxaY$M%Thu^P(`UQ;_|1BL^M9 zw?qY}Uc+l!jTZ*7x6quUOCWp<5KjAHe8Dw=(h{)-$+*uq5&7Ts81*3FR3ts+BJ8pn z<SqB$MKX+2I|iZWGJbXiQSYgR4QOpzh)nLfU4ZWEHcOWeWZ`&9#{cke&1uYSGg(~| zYDoc$1UUQj<48(Q3*phAcAcRL*$x*=$=Mk!ooou_HNs>DTGVwx%9v{432J?J>j-C| z{mQ0D6=N9vXMX}*BP2mPznjrgTDXS?F}%xl`d;_7;?^<9atSfZ*iGh$kp18td_Vtj z6Dfr)Si<o5?$6j_g~h`<X2LnOaXS@#wCCiqt_NYG;`8{>o$%C~S0^E8XvxDn(6-=} z-C0r<YZ-nmCg^F&C6CSv+p8=~9>Y%@tWwoDqrUyfp}c!>iS+4M4Nee6m@g*zOoxu% z!QCY@xDFfl2e7F_4Z)Cn-d;{jcLzyaL2u8@a_Um&{UV522v?nUfq5of*n6Yac2%q; zCSRDED!13Cgqn9-g9CT98JJ@kNS92=@j5t4oA!EavDz%jzL449=S8s4X{`!s&haXI zcG(ySQP6Q0TrPBzEDsoKKwRFkB}FQJtSSez@mSi)a|z1)u6ACFilqZ~mnes;3d`(# z5Io=R%`Gmx_wren{nDwAw3zvcWBRp4?vuAtlvIlr(-9qD3<IB;K5LUOWe9ci(S?O5 zfz#Jb15u)bZ$;-DI8Y6F#@~}2*B6CJdC$wL#($Q9%2=NZc*s(pl%P(Ub%>mkVj*@! znsoT%<<@);AEjh77eHLNr92r+JQaBrObxa#Kdm}C;r%TBIk`Dwq@Y4_)0a{E^UJvY zi_`EjR|PKzP^bdvC{Q`_p)yoF9q*6gugP?=){P4-CQw>pm@@}mh?8!Jtp~T#vE*R6 zq`M_^aLum!C@FzU`7_ef!=OJt!GkL0I;4Ad3&@>Cq?cn1<$y(w3+SM7<7~e`)7h-s zHTW<So7TUl(_AYlgAE77HY|7&;aVdgH=$~8&nkr&fY@3YGd)^5TYP_|Mi=^Fa}s4o z@25=Inb93f7g}}pFv_a;ls%VPOI-3A^lgRp?rk~4c0-DODz-AO%fQ<sDJ`|*lhYDS zfvYUAfJ%<>L#wi)J4?)C#@Yf%1N3z#29@_?Eco<(W29Gs-XqeiMHt`UT+dfQ!78XA zVBMAFw1)}Z=8C+cK{PMtuQ~185qe8R85&jDQ;|VLivht@pxZQ*=;k;~odjivPj4hZ z&4xDzPB(SrBEu*0*S38gU1*BY$TPu&fCKP3>Cd5kjb~C|K;tW<pJX2RiK}Q$MUD?B z5Evn&Oemt8n3~Q~#Cwb3g>iRu&J`Q8-0q~v5*8rH5N)SG*y@JX1oYXOj(FEsHDIj? zq{9<@kP51RzaRzUyL`O*(sBeGbIWD3=51nE^R?AX*6;^*s2laDgu4cicQ#ZnH!%eD zOhAT;-VV(Cmi9Y;+%k6TNL+z^U6E@<DWs3zykc(nXKD_PuGKN>C@X1Zf7@tHhr`MB zcvNqCAMUfn;M))KL=0cZzVV)Oqw{XWf5?_(Sbr&92|(DOTU}YvTl*a6+1lGhLx4Ht z#P#^T<eGjpq^*7RN=6h0=^4tnpW@zM(?1tkpdAhR;9C~_*BHnA8qb*v!XcNHHo)(? zk?r4eIOsZRT};^9dk$g)%)^tVvB|cNb)0~-S$F7kH48bkQRiC_bd*)MDD)xD?nyie zwA$yBny>Fjjui@a>+^3Gh4~U{9f-7en-_#N<Uqb5u(syz8s(~F8ykj|w$B;m*v1mP zw*v4Qd;w^lr0n3*;$A21UcFMAp~Z~qn!~C+rWO~ykcd5l>&Z%y5>g^AxbgDXp=o%f zPc8~q>qJXLjGX(nD;=a#4{Bzg&!BAT>UA@AR#1+Vs4SC-&WfZJ`Sok;J>+HwxWQ|1 zS(xn#h`2_q2gAVgs*8aqx%k@SUcba3flvgHrK_w3Dfx_Txcy>cGjZz}T!n$nnU*+W z<4xEO+$?K%H5wvJZ6Rj=#c1rh{Q&t$QBa<zp@R>w#EBA8bCs{i_wzyx^fmG-WtRN_ zy~;L+A|<J49g?oWWl=rKwx}HHEs{BL6^x*j)zj7PX@eC=e~U3U^Cx5)e6*|)QgnJU zcwL+fRGcUvr_s#^o)^CNcf=PSIzMDIQ$VKxR#o29$#*ax#)6^$ByE3rF#MCh{6(sM zkf=`jj&8O_c)uB=d?2WQP?>matiQWs{GGJ@;8p)5ZRzO$j@tf0C;uU_m6w+kl;r<F zZ50*&rG5Q7Yx{fZzoD1E0)JfIABtMKkIVTRYx}GDCu>Xp%Yx-E*7l!g`>(Jq%Llmm zKf$)lAFS<%Uj`E+JsvX~>wiaWja&^Z^{i<AtEtI{?AXZO%)#P!`u4wBoH$tOIhfM? z!|3FHgmY<rcRw+(v9z)Nz;&(6eqXaRa&VwAvUAe2q|tMv;iD0t5&q2(Mfx`}ufDyW zfrXKyrIE2C&A-;|%}h)kX`HMLKL}w18+)U_34V=fOlVAh6a8BJP4;W|r|{RA#)alL zyOiH@8U2~{qn95!|3MG`{^b99lx(d3!e~D{RDMIK{{V$QRJ<SU|G&$BX8D!>kF3A1 z{So=k@4sKsU&s9O3jfIQ`@Vnd^?&30_cQ+un*RH*;(rfKGtm4#R`D4AhDFo<-y6Aj zOn(vDOsq8j^Ek$1rvHP(#$#suZB&1F*8CM>p%K7iX8p6xLQ5lz$3pj4n}J3Q@BiWM zoueyRx9;KC>DW#>w%u{ZwrzH7+qTm&I<{@wHad3lOP}+ed(OG{zWUz(zOlz1BfIuU zJ-cdD)tYOrHRode^B7rKXeB;W;eUS5Mk|HS%KnefY>dC|6nr-3e{5l=|Kncyb%o=z z|M_#+8UOg^w<{i>{m*6Cng4Q6eJJh!+#Bov?GF2JE%<YlkH_op_ulX8(=+^IoxioL z|GISlcy9jDvd+r>@ofA<%>L2L|Hp^FkI$iJW@7svYuV*Y6_AwCQDi3hxXW{kKs?B> z74TCadjTjC>Ocs<wgaI#MkTs+82sWONyt{ZK&em#6?j<!d<o5}@Kwr90J{Px)X-)J z5iT3$(a88^v3R4X-z>at?bov&&z&|r?$<7sR7AgjI%mTXdzeH%@wP!w-o(I%bp(V! z3$(D{!T>T9O}*k*?MA_;p@Fbb9swi-sGLlgaN2_=z}gfQHo=g??e{&(WPB3g->mqI zjwnD5?_I6yFZaVI2MRx*K31nrW3xiWJG&i+0$#8Pf+V)H3EmeVy;lWZY)}+x`xXOH zmH`t2Tt@@vvI<3%j-rj6PSe^JY*M|~R4fOSjlj=YPt6N8$LY#C8I$TfPl>Fzs9L(6 z_WQ(gQLKUq54?$?e=0FLJns&O0Bivb0az<2JX^8Sr}I!11wOs=cnv-P@ZJz;PAD+U z@54c}@QwZkRdo0QC=|JPq-5@uC?2k_U!Aw}yL?6xmtiI9I!O6MLp6&c@Bv;zR<((; z%sjrr6a$Xv(!db8=6ZU(sIwnZSwrQ0i;V?t*FojQ0Gs2l)C#4A_r8U|Cr_UQ;Ll?n z-H~G|-2l275(LH=<Mj{-0F)M$GgHJ{hQp`B`^k@iOoZ$o{tA8i0EnAxj`#MM&&_2r z<_a#1&ejN#4(Q7^2E?C3_hc<7F-8Z{cgI8NVUK5yQ5=<q&jbR-tX){Ogw^AOx8jc9 z-?C{tM7JJ%9w-o%CMiW*9=as3JtfCym7S1I?Oxqbx4nXS{n6j^Qn|!Az_5qZ5E3WA zaTh^dzL=_A%fu`tGuB4Vyg*{H#(bQSafT#2w%muYl%__lQJV6sDmrtT##zwE5<c38 z=R!rvHs^5Pe3YERXUbS8g~)QjI)xF=x^RrEm2p)<;pp_LQPy^u*dd}<akXT&^4X3N z_Kerd+D~bikQPgbvmNnT>?|;xjfs?R`eC2&n{9`ZdLC0tWpG*o!nT`O`h&%fYJH%z zTRop~tDD6}%1hERB5CK2pqT{~;f@GRpdZV4MC=#n)`}CRrlMiPTKDUxzFGMUQoKni z((S2K;mITj<@aVa9o8<j`obFaLyaZW#tTxTYAS9<{VyDo<dV1zCX#3Atumx7^w@@Z zdI^Koba%IAbWI72t!!_PmEUs{&jzl~CD}ZgoO~{g_5rP9zh$U04tNRIqBqdnR_!n; zI&h5F;-!(%tVFBIJXplj)g>{OvSw(Sa`Wh~?XW-!<By?OEEXUJ-8!%22OShMIz6gk z+ON0Jdp1>xN);FGH|DgyRG&Q$JT?rv7qC})qXoEtyvLLcS+up{AM%TZZ#jf9=BuAe zJ`k)>ZR!dV9w`?IHZ&6$ZY4>%VesH8pX{CRP~9daw7RLfOQ{;8r0vbbrgD7yd^6V+ zc-)De$8ac8dk``9V_7;Bo5fN^_en^9cjS2EA<zj`d3@rA)u-c|8WVe^p6;}iUqgkW z8vT-on!WzTdQap6Ff5kEbo0yWKDM|=?Atc}J@LJ%^1*WbO#O7J(BpX0ax`O47G#`K zZL;v0xu&oKU)|hMNC7Jqm4jp$<AK-5y=ryL9JW40dY3L7n+{vytQnu*T1mz%9Od6u z+Q?o$E~}-Lh>{P5LD*)_)ID}sXeU&1M6wrT%@bAb;mawC<tpDki$W%6eN`>q8k?o) z@PPH8`gpvrd1k>w_k+{;d~&$2u8^zuocY`Fan7OwdtnPHxmiL_wVrhFecRo@Pfobw zfhebTko-{`LXEVfR>m$ymT}v!d$EF^uklEivZWT4+V|LG^QvCLR#Y^25!@4GOGfff z&9)sbU3c3=agE@VJxj=B?<z6=9lbY}>Kg3&D}f^~<u4v$W=wHR`E}}<k^M09efPcT z0o0veS@*;4LQEk!aaE1#K-8hmu-Yix?k!bc?G$W^NLon;9QXU4=Z!F|S7Tus0+<5O zzX!KEIJn`~+0!nxGMq!HYVM6n1A31a*Gzail|HF~uI}h(6`OBxaW?E}@|IVe*CW3L z;oWp}dhr9u!;|$)i^Zz~zd|N*37GzCV)094_eTW!9i#lWiN&v6<Zlwb4@KOcc?I1^ zmhle>-|wP4T7F$S!(Y3_r<GDsl~q&u$SdSk|240m|J~{5PcZu1hChDYf8-S(V!FTO z75|ln@9(SqHLswiXQH9|B|ZEPDc^_t(0`U)Fn&n+*qPZrq<l;)ANYjz-{%*WrdA)y zy<gD%zl7Vr0{-7Dc-VfOqK`v_QfFoVb@=~(c`?&}3?Te?{{;^JYYzKIw)$^0guk6n z{6EnmJsrcpJ-Z(xE&qYK{tB(=|Ef*>2ee}T2byBQXJ!1A5C1l&@SmX7FMFc@p%zeH z5e8!3L1IW+%;Cd}cZzwIu~yFJ4mOfWo^F<LQ%=!=Mof}wXmr9(luEQtj;^+rNx_Cn zQkjlPk&do`fuWXxWlK)cW}LQ&YFJ`|Om@;{9)z4h*=AIddRRhgRQ~73KZ}fkrpBZv z=fS6ErKhOL6&G$M$K}C;Ov{$R$E&5QDI})m4j7sgMaQOS<VMG*W~L0}!`Vg~YpJ#S zvJ0~1*8-3zCaNjG*vI>VO~#}`@sbwo9_%SleE(kX?dW+A_)HA6*&j2KpLMmIiFAOL z9?gJ@ESl~+k{zQRMGn-J9kiIZTo|(ZwY*%|)nr0oA^+-rT57CnY8cIlYHV^`%4u>^ zX57a>Z<AbO9Sf+KK`O_QG7(A0K`PO484>YOaw*WT!u|YgPEd4LouET-w?}{12NMB3 z6e_gn<P>E@Io0SA9d8+!eJsL<PCAO=GMQkONk%$45DE}}bV}4QnuXTgm-x|Edr%^I z#(>`3++Hyn;B48i1qD!Zflw(f<i#jZ#VEYsCntM*NdR?Z00IR{1k@eD(8$I8P){L! zozcTo<6!-wU?Q>5GmKJFk0^7^Bv8$XB&bk<{a+KI_EC-M$c|&h!$Re*#X5^Y(Fy51 z)kx@&<>e{m;+m|qMx^VlhEm(hEe$hHwxLT^ZrQyuRi3X%o_&IG9BLTl&HN+}Kq(56 zs9frPPR+OXY%ie^x5kziLZMm4oZg;<JXec2kIh$rju4VCC7&;}AW&&7tuja4XVpJZ zPV@xmGVa%YiLGDOzHwG6tR5eu9lj-X-p_Bf2~}&ocy2Ra<yYg2tBwCYYF(kzF+xV7 z<#PWx$1@$8K6ah!cWx~mT&{)b*?*II(6CTEJ+=o#(&9{Iea~T7{4v%KGPRJ?CHGiq zDz+fJ9kL=w;ik>=(Rnljw}+|f#bWqI*_e2j2aF~JF81o1&6m&C%6DIuO}51bAUJQI z2bxJCp#+PB8KkvdTg-?0KC55$mI2=z!V0hyDR;<F&3d*kHQqiV`ZRj(_+~|LzKzv9 zzIf*}8@HbucqNn~!C^ViuA^mL?@P+`#&B5YZN8CfVl9SxY29+EHs**DSkxE-y>|_W zXNfhYA5p9!ywO(_Nkm-a9!_=SymTG#r-_#Vv%IW&?glNjU1VNo81J2>y)s`-bIy0$ z5u8MRE_J@XFVAE>tL@bipJNAq$Jupy$Ek0u+tH{-GWKdR!)nQ0@8J~x@?9~^EZ&L( z&!N|i!AW>wscAjOv_vXkIBwbMFeF{=RfF4nXH;0q&b<t-6dKw9()~4gX0y3A=PYCU z8tTMX8_vRQt)T)@YsxvFU-e$?G&AgnF$C^6=X7L+`?WX0x0-lnYpin(^T9_>)#r7A z0vx;ecCrbDtCu{57Z<7B=8GvP96m+Luqbgu=;xBQq~$tpjc?7!S=usJs|l_Q^J<Uk zep1ZOg={<`$89b&*ZJqZ8JzQFtadMbinK-Z&v{)mJ;$RdZaAbJI2Pw$loxR7b)==a z7<*u2hV!v+y__t>6*pwHRXtTGcKLXvDlSjrB&g+9oHU}oRNWOD5}!PCbJk>9lrtZ4 zPiR+9SH8@wP2ieJiBm~f2}3Wv*iK$+B{%HJ%#o&;#@(tkOgv(k9KTaj@2Gf>Rd+yT zQ0BYBl7VRCfx$onf2anL!o;rZkix2)03s4PI{pPr(ErEy-T#dr!0+nyzp|8n0TX|P z62G43f1@bn#UvC(Bz}Vu|7r(7|Ie!U-!}Xopv2!-`!ArxuW8Qz8I)l9KoTEmJ3Zrv z6(1`b%fCkwf3T63y7nf2rRsi*Xn)5J{}JOp?E4u1GM1N}?XMnr|8wGr_OC1B|NE%= z*BJhfsQPR4^dE!;J@ao)j{hdCGSD-!{7=K`nVcI}{3EVXm8sYecZ?H7l7`XxH&$du zA_<zNeJTBY9IbsLns9TL2Blc_K|=&Xq6}2gfN3Mugy+V9s4|HBGs1F3$HUqKyVI<L z7l$tg9`7z46Zel_Iu1PAc@)3rg?)<bhVd>-hN<`j7SII*;%2N5;0J_IQUbyvxZN!g zNE`yK3m6^(3D$Y}p`M5DMAy5OsC?o_<khJrT(r@FN1MdQRwKdyWaH=!9Qq8VBfSmA zXP*O>A_%OJY=FM~H5&js0*vj4qz!;^FmP25J`|Ks7XWhdC@4@iZ?X^Xk4FNAB8kpJ zXo;<=_WEvo7GV>pN%&MQ5D03yWEeFNUY{a}T3~r+)X(-;8+3KDtD(Yq?9qqjSKZ-n z^TboSYP~$q5*%Rz0gK+;aX?iVSjFd)Xy$kDp!-v-jv*R|up~R^K1>h*9lUe{Q2PSN z!pY*FfQmk2f~yS>fEngN>ROzjPF6T-RXAFyovdhBv&ZUyEin7uCLLlrwe`Q0q8jxC zK6<kT1M!7Nleu?zK3cIIllhH)?}XWM_z2A+7A)jI1g&V@!vMkE0Cavpmw>^vH(_7t zlQp&=@WVfYWiu=V*BKsT0GNP9;a1j<^7gA;KwCg$lS^Pm^u9q)F91(cVMf(_dU<ua zbSB{u6J{&SGskBF!2Hmb0HR-83o=BF1){IsrhSGvGnWhqKoEe(BP0q0Pd1qG-&}qA zURotQ(oEUM#JUA+ozFSDeqp|h%M)J};+WsVqF~qBuir$W?RrqVSS$80tR*F;Ups?T zy08&gZ~*y5Iw&K3JgT*AVaKxFqt|Z!E&t(B)9K`Sql0PDzSZevYR+QfYCd<vGn3X~ zw$eUhi6a!*^zu`wIk^ZO(^chgVG}Xwe9;j>2JtojkIX4)T<E0Hab%p6&?s0bRO?CC zr@*DbI5iq1+M%b@YtQ<HZuJToox_nsWEe2mNmIV>HN`AyPZY(5rl1WMWmL*&xnnK2 z$8*!y=&wQ0H6nq+Sf31_I5Nq<E}-<~N=4m~exZO}$XxbPPQlT}IfPwO7!B#<>FrRc z;L5%7Af+|Uh9*d$u(5XgqT;e^cAC+i&dq(_963d<JJhIb2XT?%wK@}pYx&g@gDVD! zT$%ROenH?}+z@^CQ|U;SV6oy#F1HdIu4hegSMLP-Dq0o815>_|797!0^~6B+OHBC! zl9Nzh9Q%r4A$E=Y%f3PXjpG<#%H#}_P=aF!X+NpMn44*fq!7wPZ6Q7ZoF{yDY%`VV zw};I&4OK}!;C5oGl7*e5x9dSGr*<h<fUh*3ZcBY*b>-F@k(PwXVwE)OQKqRd$66kH zAgqpf^~H~4c^o=qbj;rCN_XR`O3&LF=|mmRg*RlZtA}>{gu8{fwXU!p+EMz(kEwu$ zE*Ge%p0N(Yko%Y&EZUvsGdR6B-2h#6^=WE9t}K#DVYSf!S8MdvWaS(6cQr`owC=8= zT^4J1kA($f3YJpN3C2yS7xbu&PtDD}`_^@MTE?vRsWKyzB*)F1-N|-WYo=((2c*xV z9IY-xaOhEn+!LsE6}D3Y%p4XSId$_}DZmt6n=d0U?_&2N7N6~o#MFuULRI_l3ASRq z0>;#<cIF;q{NLE!{rQp3ozeYcKCwT>IWQ?UJl1?WADiVq?%Kqy17Fy<;)h{(>#l<a zAl6%}?1D3s%^j9_e0Vz9BZ5OS$I(}5PCyn+nEl~@wNyZ(kz)cn{U8ys@H|vDJibLK zX=(Z$fw&c?cCU(mTduS14QY{cAZYF`t7Lwf;A(r#=9)VD;$m6lmNL6FoNslFKI8ko zz~Z=H{qf7mpwPrujM>Z1@ufgY7x2j(=unC6mi9S*m!I8E+znc;@6KR(rW~>^?8XJK zQCjI5F1SzSnx=gDGcwY_{jf@ka!|Q$2_AIBw&JUXQjH>NLg(Z_12x}IdUvqwNTonk z2U$=oDJL7kUu{CnDhsp3Aw}<Ut?)3LJo)t+tRkyoJ9Jwln`P~_9dj2znAslWp{Jd? zEeXYqmT7wkl&k4nv+j3&VmML;f!HmeR-9^&7JtMb(^GesE{$2z_A>65*RO@7mMg*Q zAO+LAzfEzNwfDJ~&mdK06N<DN$!M1J3UfZb)!2!C+p0nPq}+=y_U(%a&$XC~r($(% z$)j`RN-oXe&}He%jVuB{qusn(n^wtM-P>aZAr0k$x($s7eGrz7gPy+J3ypBwBvHzd z)%(w;?35cY^r0GI2`r8B7|nXQ>NG2*n>C)shISWMXtlonGEH&;_jJzUQ0w?R`Z`Jf z9(Ftiez025XkUn`{oP!i;z=P{>^r0QiE$MY9C`J@TL<O0)5*N)Ej{WPLg;N7?ul&< zT$NzNm1C8F;P#o3^S&Kr6Z<5bpl#14N0tve76RU}#VGN8mD&4iEu;<QxZP-^Rm}G< zJo@;_d=ZB0lwI;nBskmEcqM@rMkXR$h90C{tYH*5(2D2Laq*@N<4-Di+2xqbx_3J^ zDl=zYK`nEo?OV1{nj54*6^`*Yv-{Hf1|+#|_#Hf4dBUj%{g4ZSV}dLl4=RUPj6^-6 zpbnuY%+~KOx*>T^Z%F$(6|;VNT_E4y*ts;^S;HUn2&NUyi@%>YIYcR`1*vkM+EqF< zc|bMi_<l{hX<pujUV%P@=nFXAb2%y!(wA8){jz4rtZv!qdLqn)UT#Z3D?9D3Q?PG@ zS){tVtc8i5;iEu@C2o@5-gmq@=1zdaK;$t}V{dwR*fJ&lVz*+4*ud{0=_sCi{Ye=6 z2JDAsymeM={W{=V5Zv}V&^r>40j8jyU5Y&-C&(q~Pfo3^e+8`nLB9NN0PF8=(tic4 ze>JdT`YUAp7vpLL2{i=?#a{+iABgD}A@-M|I{iOaVt?E4Pl%P}e_>$tx5fSnSpQ*Q z#rlDp|1+rifz^IDu%cuAaD@Kf8Cd-dwf@c){>kaFv;D(#n(c%9VrKlsK>qn+V_^9! zXY{Wb#ecyW{eSnJ`WtifS4#9xjQdySi2WZQ{)sta{IIJ2A2LU0a$Zadrs(TzSg>`W zglDEaf(&D$ZRn%$7}Z4x1)pcn9WH`K8l9T$`Yfs(%|q1U>nLJ^)k>-BhD+qd>N121 zZ|u~ba^kVg$YsrI78a$9Zx7D3-R{=C&Y!<b+_z46tWV5Ss1W=lIW##GmM;T9$(7qA zQZBOxE`r}$T7IH~*Z(NW^{J47776+SU3^#Z4h7t%aIlZh#fE&Cq<|IZ@2~1yH(n<j zLUAVL5A3Cf8l-3WL}H7{RsaHpNlH+P0A!ty=pUIW<0n%TII1QB;X(!lfoROf6i!T@ zX)-GVfFc0AP{k7S-4(bzAUu^3^prjB8o)Rvn>-&3o-U9SDz`~B+U{3Lj`lq1y8_t9 zGvz9epbc0*<h$H8nvawMaaA;+ZK^j6b7nJ8q)VKDuY?$O6j)_)Y;Rk!3NZ-KtZFb@ z$N+%cnQ#FwVY0y`8@wO+oXkQHGW|MKQs#K@pfUnty<k7yO35eaevwek0$D!qR^k)0 z8_O}n-e_`sL<B;JVT7jpv4xUvHK?*|lF<rOHpndi;ktCNa9iK8`}8V5fqoY1L<W#& z>mei%s#!(oB#wj9GYMpERv^Xip4E{1&f&8nx=L1bVwWU=JO=tnRr6%+J#OeQ-T{ad z1mg258L|Tsu(Gn~@kX#SVh?ZV+!{VjKC1)F5HYkaRIkhO3DbEyefv+7ekaqgVOqsD z+SHq?Zl3`)zrdf(wS=)EioxRiWqM0(Yi=B7c9>&GH0mJR=b#0nQH&j*maCs!QcN8z z9Ze0LwVEH|e-?CW)DS$c4E=btYXQbw@VDH!RUDu?BHw=-r%HQVK48hxrlTQfHbB@T z1-I5_P2GoY9_w13R&3eG_UMMOlYGuI@2M#xu_OzDX|r3^eJxXDH(kn)AzAyfaDT4{ zPGnhe4!{Z?))A%6J~jMkq~kZ_KRTQkH4VO8S3W<-Y@B|2*X7JbVKW{?9VzJr)5IoK zR%+X1tdqzE?=9KZ@^S!x)aLg(3S6=zO)@Rr5pR9*W4fm9@ip-=d_TYYu|wlT9xm(q z^2s7_z3c)9R$%VfXD!JrK_5-rmu1QLkxJp3gpQya`*tt?jUA;oSe?r;zfy!VA&)Ux zS_%^M0P0efW;aS}K5DI<`bylCFJv%HUW6VT?ZuvhM2g$BXT6XoyUf&*0SaIA!dkD? zUS?g4wiJ82HmHAY4<7BUXu`ODNWAclI~HmdL=)EbTfUtj9gMFy8|4|Qse7?%yY*$2 zXI+zpk=`$vF<LBwOP}12QlFnjp1f86)U8_xUbu1PoM@lU^Vm9Y>=;H2t6QuInc$*D z2eVI4Qa$HJEVDQoAcE~aoBxEvQnH8`jc{t&T3&5lZ@McqR#hgo?;Zh)!M`e`y?Bra zK1QO<ilh8UYAi98HGRureLem%sSUmw7e)yi<p3#uQ9Fzl?hdb3zfpH+<A?T=n+NzM z!DSv#2`0K%0s733$h5VdAcs~<i?HE@{s+q%mx>2{PJwz98AGIoWojK;l678jOD+Po zG+EKKHeSa8RZlWCaf#Wzri-<(j9}URR$f{4-3q7mA`QoZ6m;!tCi_XfJBvYq<uOKL z3vvh3D0}o;Dydh-bB`OSR7wzolvp{(xXL*6#I-i9;>%61iY|sjJ-(rT`V@W9>rM1f zM*n=2;>)UsF`AX@)5`f_WvGPF_YNZ?>pn)l^lEOI)*S+ep5}^T2`0;i(<_6vAwP%U z-U@2FfH6ekD>%IMk5~=~r~yeIn2$tH;&V^RG<9tBuc7>3n{EEPLKge4sPnf%)~|xV z2MO}~42r+>$Fctk34bG>1m$Iwe(R5uSN%7k{P!LI8T06WZTP29{=cbX{e88+#`1rz zV|^6W{?my5TOEt}qmK0vc3D~3|9kd{R?or0!tihXVjpgi|5U*G?cDrU!20J<{%27C z_06A!px@5>A7|tLOi$s{e{|aX_B-+E|80}aUm?UF;hdg@@mJCEH<pS4pPrqb<v)q& zA7eRKe`l>e0Gp}BN1q@*?N<w3dqY9P5Bp2Q5Bo_dJ9}G0T}vqE<+5gddqc|xlJxI- zD<zBdmMiO3XW#V{EEM}b{;s#Y9=UG!c)DTJzRx<p){m+>4>8|PHIH<Qs1o&}Ae(_o zUBm$FJ+;U%#W+H5gxI692-irDKegCBWivEM05GEQ->_9Ok(1LE_RgsZ$S4oaVe}4@ z!O`I-1EM1_&?7Y1-QD#kAx5sRxwomMV{{_<E~6+{_`RUuQF@4n#Q!Vqd(PvXeKlPT z@#kkx8&H*%r4;~+j1GdgA2<ns0Q|;w06E10%-%98T72?yQt8qB8d3=|9|AlZrdkpO z8~W;cI+FM*I<Q3!Kr%?lGi=E6cMp7~`Woh{he9UOW@{=wQhot`QaA6az6Pw$HFTZ# zsL;Sk+)Wext=*ef36m{BlYJADlb1DMV@`f(b$xTRI4{J9#I)sCN&+|G7HjA<>owM7 z-;B7LxT?H>HpVR{1yF=4uY)5CtHT#*3(_!a=A4Y9hWwC>su3RISMht;>v9K{+DZpP zd$2~%ccc*rUK71718d8}OPpt{(e<fqZPP|J)y33TV=yNFNB~9wVI*_!xEa<_);pfH z#|aL|_oQRkv$JyUw>`^y+S2zFzknK~&gJ+|sWC^K1y$Eh7L3s9CQn{QLeulJk<l?* z8@5Pj&+n5>K-lkd_@Q1#fmfW60!W<d=5YK--sDVe=^58fBK)E6oQX$o&mwQu*$*87 zoA0Qu?;C@!Kd@hEX)oVTo?o<c`ZUVQ_h2mB!8bQJ1An>=p)VtPUSRNJbbFyj)aC5F zPYg`<cQ5a}@7`*c&jG$m-M<5n99cZ9q4KHMSev0AqQ6ns+91~0fG3lwuwkVkrDCdi z-JfdPDyk!S=hX#JZ>Fty)g?qH#`tV~*x8R#hnHKt6ZqV2P<WRQd6jRbRe0@5)0UTz zSCsI+cBodqGblXZf*7N~JzuQ82{TtalDuF4gbR<3&fv^Jqb9-vC!j_G-?@Lj&wwXI z3Y&N*+3oN~f4`<OKRh+rk}7)DWCh;oD0#>0c;`BLLqnHU*XNA$`YOD%G&#TPw)|GO ziC0$@mbb$?^sWZ5q4+-VsBH%a&<Gr!ql|hM-sDFm&p4f4O8@pLGR)-Ok?{>3rk=J$ zerV$MNA1a#IPA(k6{GVHsDje0-6xAn6}Gzf#iU#g^z*L`Bo|^}8vC11@bY)NgqG2D zRq}WslP4%$`5DFUcg?9uOF(ma`ZAo07|IIMl<wdIX%_m9{;jULH>8eZx5C6OwL$mH zQpFK`=E7y*{1xMz+(hDRp01xS@Gvm351Ro`mIiX(kbs4T&!C`$QI9Tuf(L1f*NswQ zMu=_VE756PId)9QTtD)vrS!T_07at_?ni2_-6T7eJ@~MtX0^}R;eX|Evnr~z3d`@! z{uzu(Caa@@ASC>DecaUP8LkSmtjf90K?PXLDb(adUf{}Py0)L~;@ulSG6}G8|6?YR zyz#njo&l{{Qq=f?`qeau2?HOat0E_Z{0nAE4%(v*{WW4B2KfLv(9n|I0{Rq?$D?3Y zt&+NHWl8EvUYU@SBE1|Pk1Q}`6jVZ!`r_cd5KN@#TO1jm_Id#u149KvvD7CyeBV8; z=5)MCm7xJ)F~n^*1}yWpaN1L6+D~?>9g8mH&$;vLpH_C!ki&L`6rT4Py1xOI3!|gV zkISl~raU^<bi&U%Pq+<``0zkwv~(Uak8ZRvc7SoM8C<yC&ahS;5~Ii5`MN(gVjdq2 z7l4wUlU>~w^>ATUS#f&|x?QWZDmXr@W`JnNC7rI$bau<oH^`;fhn(%g*$gZe1Uzj# zjMx#HGTx3j#1W#*vB<BvQ8=gMC5E@;3AH5OZ;;W7vukInK1uI&ryJq2He&F0q}cJf z5MzGpF2Ue4_rJ**tyN^a#xU{z8MRfE!O+43AJVc5snvYhbHp?d<_a5~+JI%u==T08 zX21&>o0>|vqt~F0q=$rZ#Kx$^|1co{f7gok)2(>vRYD#+?V-ye=Sb*)S6ew=J0vj2 zGC827y_b@5{X_*8<N`>Y5|A7&1+a1;e1PO!l)+FW`&^J<4{*Semq`=Avt1}pVAmp^ ziY??II<+&Xq3pwmJ)sE*q<I(7kEmKGu{w6y4n@QjV4fmt)O5Cbe%oExi1em-F`q6& zG#N*Chd#nvjH00lXWtut3<cEyjj@Zn=v4K>6M`XPSOl2DlS~+YC!Bb{Cu#1S8Ztnm zfLkTFwhdzMx|Td{VpQOfh3${|dknfgRf&!E1h)O=>35r&V>tuayjMAo(c3WcoK#k} zmOaS`$W$g<O!QK3&Oi$>&{r|>nSux4XXf9rm4?;6GvPLHZ<F|DWz(vFM9EHk%&zEI zk(xq$ErF=6ysEc?IEKI_wGb*#Ha{TJ3=>H7$t2_e+;VA2JPKOTm*|OdNXa*A^oJYP z0hD7q9YALyhe}pT(8zPMX%#Ix%0bmXE1$8cM_ZYlWHT-)<sL?~1yq*4q}<5nB*WD8 z4RhF6q1+vwPZM@;0C&|%@b6~tURoHV9T9Mwa*StaysU@Yg&uji83U!II62rgZAH8= z05?<Ip)=m?^>2oPDWN(iHs%H^e8K|PpchEJzlQBhS!!pn4aUE7JdshiJI525DW6`Z zJLdTjn3QqQp_3=y0OXM#NlcG`uWYAaC8E`s=;Tge1KWmhp1$Y!$*bPH!MWtw?J9)r zQF$#?kfLf2@>LTX=f+rOXY!6V5jWzi&(rW!;0hvsr~uwRb-!!RDt=2R3Rx5jVUGz# zxDUn{>li4E_HGy!35cY+G{zmsa41I&+VM*C%?<LniAr~ndH7UW!F=;P$?;@vKh0x} z>DK}@2pn4=ew5(O-STX_lW%%t-=hZQi+C=w8A!PpOtTSpo`2vZTgo};Ea@E9F|B^_ z#?(G!ieafg{z(VrBTAD8HK2r4W#N86&I`M>m$6xLXj+##`UC+k8sG#-6@Imsz^l}> zsn=V@gz$=+WE>$g;PGs780X7$8;pbhHM~V3WhRP59QFB`!;(gl3S@J{EwU>k|44Gt z&`m!}jf$W{OcbV9m|VDA@KBmn)KCLx-^2wQ^OI1}(e{tIi5ovgnh<4i``KHiQn@%Z zx9pdin)drB3I8x`eWHCGOexb!hngm=B5b`2NoUJR+(cAMeQ3hs>k4#S58~_)NHj76 zR%wQ&mLVS%pNolRgbSvK!8FP!itoGwVF6&&2mqI-?2^0q?1$lzU&AN5GY4-zCU!}K z8R3b@MGaEcpf2$2Ms{Zu1j{*wTIUu<W1}R9gOT3qAX)S6mBWt$GV<@FDh?k{_;t7h zy4_XgO4Xy9<6|__+Mnvf!1);x*<<LEc|@dObZlN$Z7?JHxEg_L=zhn<J2_n%vHYCN z+nK3L#<|f#dQC+A?x|%#lyo9m&QRbt$6vAq9ErKk7OUsJ#W@w8IM3|lxUZCxKz_<C zWS<DWBnwqsY;>C>nr20%V6l<>mFdeqZ8ClKO{3rQK?3vXip5T3b;1`T*CS@PbX3zv zRoQ1(AF+ddl-O4j>*Z3jy>y=CYNsR3D@VUWx~H9`&1ilFm~TiQ)`MnJmk>>l&!8E- zI-mLEX|JN`y)wqOS(w;H^{`~a1$JI0Pb8Y^e5X1Glk+iU*$%`|Zk4GV3vRSdIrOlL zgdY=bfJ3}H?@lEn^aO9W+H8j+K@4IOIxRPJjXneX=pMXKijhScm3$9Sbz-4l13&mW zrx;Nz6-sGLiG(iX`pCGBHt0_;`K`ft+~xaA27wQDQ?~VU+(43Il<FCX5Oe~baAdkZ z8pGG#WTybY0<*z&k&*B9el~AYQ@Eg)Iz~B;0zN>3>^Pl-VA!-o<7c6d)2Fx2B;+(+ zA_(An30*$-natwW9{oV?F(5nc!KqkS9><^q#X*UK&^RZJD;{jVXrydZHzRV_Po#*9 zoR_I?*49NS6-bzC>-cuVJ;hT|1Q2!Frz?ZqF$9H-ET5J@S$Ko?NJl2MNtAR(;!hT2 z<8IIv(d~SMh=kif^Ng`^`tXBLl?>5A8NtJV+4?{E@k3)G#OH!=#Z*G?Zw{N_O0O|a zdU1;GiNPnB#M$$+pdzJ8>T=MTnLkR;l}?&rZv}v{CY)uo;DG7Gd<QcSR6nBiF=`aa zSl$khB(!myW5CnT%rzVySx`|@rn~m;e1f1`ok}TBFD0Bo=WKE79(v`|soLq=YD%<P zwy-V-zLgaNv!Fq4_`cdFjF?LFUQrNKO5<d&io!0L7JA+<9b0Z8>NI$b_~nHOW*;B! z=F^Qn>U8)kN(yq-y7JM~CZ7$p`tVIL5SS(dDVV4JnNjNz*vdfM7bBZaic%phbPlty z%Fo2**AC5w>}#0IK<hYgFQCb_`>ei46gU?Os<3gNxB;!5vnTi9xx7Ms`Zs6;@m2R? zv)-ST%$A3MVkrSF(Ps3!yZi2fI5b`aw23ylV+=(GHTDiZ|KK>VZtEK`8;WY_*uU#F z3Z+yQ3=Vp`9SJBkq=^y#@r8JQGaFp9ixIFuglTDNOOX9Kv1j-mC+}1`>#e5doTAfS zj{Xj(%l46bs}MC^M#=0D!I*q8KZ`A|;M1v)QJ{X4wRW7M8>wtbm3iwKp#$x;a<)od z3(QAdu1-zRzEFi*2n>5D64G6$EhZe_Oa&)61{d0yqU8k$g#Yl#CUmt9C?!bAW#DCv zw>vV&ee4!UjedEg!_E5A1Xc@F<aCW1><fqz2pNrx*<3_Fw}_GVKFQX;$-14$I3$T7 ziC5m@%0aKUB-<mYSiQAUQd}8NwachF>cSqH#E&)-2=-(>$x2Wwlmx2OYg3oE#Udx; zw+ATWwl*-2;B_X1AIb6BecxigVPp$kfJ=W*c7~CcWa6ERzF(PmxJ++_CAq%MPrE>O z;R!*LDl&*7nv%%Av>7HuTdV8QG~*%RB2S1#;dR}jIi%42Y7FshzwaUZnU{L-D*}K$ z89+3&LSkv75}0RO8|A!x-j>|d1!%tDlN+pfsusKq@jy*T+WwQWR5B|tk?ZTr*P`vx zSrV*T5WYtUkz6Jy>V@Oi;#4chf&~*Wn=4lP*%Xj=;=qL;ZeP}Ivq(cjn)kSr#lGH{ zmOs@naieD59_VSB0HX-FSQ@1>HG=afjVqGgPuXA7SO_g!xZ|n8R-FLxUXmKQ;uFRB zHBS`*7c_w#BRP^AT;tK38(-g9q$h~%*j=>ScESGish@)<oVd><g`<3(w5h_KuOKX+ zWyW>@iF`wT7TZ>6SqP(%kD-px$X~zN%DTs#9)iVEBz9oW{~5*T$t|3ENVD1_U>e&# zh<kAE-pAquk3<36QT(|41sk%<cn~<BAnpv#DpHN;xdxB^+wqTOz3IC?6t9q%d_1DL zG1C3}GN~q@K#RSL997T(m;hSqM`Vd*ik{DiW@}Q_KFiQ)J|i9oowdX`A*^uhmkss8 zvp90o?mY`*%rkKUv2aj1HBj07R4I(bDZHu^Y0y?iqFDT#+S4%1<w9Ws0EF`@!CuB` z=h4}m7{;IMd4w2YB?u{P4oCxf{evY`xBD4~$urc+zHPm=?%i+KOl9_*veJMi_=hl$ zf7#z*6dvvTOqyPPw3Qeh5~IL)+RlSKCq+Y*;|11%vD05i4W~j5W4SL|h_Fm}TxO6? zAl21f`(c)Mx59&2@)#a7plWpeEraz$;#i!jzc)0r5Vx(>fOPS4ua+<iyHN?nY2hc9 zT4-`(4_W&%W<id!HFEEkS-9vrXR1zjJpvrEk__bxkeDr#?imx@IU$^D-qFjkCrL=^ zWV~T<pCtDUyEnblnR<E_-tD>-;Qony%-8sgV@DC;bQRILp4_EaXz03v44x+e4MmVO znG3{k!cM0s{_`)T*p}JWg&zI#oEYyBlxCmp?d&dDd_l%<Fl&J<5S3A~s<p=4BU1TD zfuD8x*{N2t=HE#$`CQR8T0-OA>xjLkQepz5UFKKXwgkhoIf(oUYDYb*D@r<D*z}{L z$pK7NB+p_f&4>(>)2BmP$x#wLTUraGyKCcx7cgv<U#YCU?~~bWDP2ZOdA;C_^G0xh zZa*Zbw`#^9V-p%*zE_rEf5~B*Ed&QI0MQ>i{np8cDV-ok)pinB;m|fl#RNA>pMH22 zt%6pCQG=fIzVc*^(>flneXmwNuJ|?@pge1SC_M*hqg1~x^rJ_<PTjDh%OwtBjmcg# zas#uzlvDZ%g&}z9X8|><h~`>~dg$qzE;=NPr?RV+1+c7ZEc@GMZ_doC8EaNsFH7PK zqu1T5^AV?gpZDH`>5;O=rFmR2;y4v_m%Q+#r<%M^aq3`iZiw6}Aq-tMF`>;3Zi?Fs z-;8Xbvl6Q%*#t{+hQ0`sFlQBy)(sFbE8&KVZBd9Ih@`aWlqivyD5?T?yeGmp?B-41 zhDxHqGV00ga}#)cBjJlKJd72=N`75mgrf+7$e)olF0$>+yJLJXt%S0JRPscT&>UMZ z$lT)am_1?PBI~1kCLq(K?4=i%%(m=+1Is%F$3PJgzNue1nik#zcSGTbmd^H@CF^~* z;}z-vH`Ou4a)}*COxYxQ?yWJB5cn8(hgBltVA>goJBjeJU&^R5ZW|M{fC5o(TlzSe zl=2?TCDt8Yqcj%OuwyM?pe&BtoTa{i?<EKgCZSJAuopr?Rld<#_Tz#tw9%9|8i+~t zsNG^zm%r_v*I*GX*_Ho%UtGg$am3zw_Bb9`ab6k&esQj}IM6PUc&7GLB^H2K5CNlz z{KTO|K!Pu*k#%s%mcVw#ql<}t(b?^q@|%1{oXhdfbs@r6p{V#6TC<yFj1w8K1k<56 zWL7*4rx{#UrUPE_37;9QEtjb8u(jp0Y4=_=szd~P48x{kXB3@)QA}{=)dYH0?gCfQ z!mM%_JD8bf3h-jgnw(+29O?TIaMDR(?$U7cBdkKfQN9&0@Exc0uQ+E2$<3XG3OY3M zB}*5Y_ncq|C5_1J3%U3TaXn2=Yd8g;u?ev+tsp@l=Oiz8LnP+scMH@&FMR`A$H0LU z{4eTnVR8&F3JQfWiI%(0B_#Yo6u2%@Awp0xEer8KtCO`wT2^X-MNUV^jcd_-F8+4A zoX4HkROLtfFgl~@*B+38gVVSCU|${{HakZCHQ^mC6l@P#F8qdc%byT+bQ+-FOM_AV zK@79rI9f@n@DTcYi1RL}E89qS6=)EuS^|4B>WjWKPTQk$L5r8GpNoHB;1-{RClIM_ zq&2c48^fVrlE0n=a?f$15^U%7V&eo06{TZl7`v{zyp~0HU!e8zjTIBg1hb`Wnr0e> z%lY(;0w$=n&cqBKzb23;LdwKfPH)fwtc*$_8x#+3-qC05^pgI*=c8iKz)=*$a2!q& zvzVDi8<7ia^SA{55I>GX{bK9t1JBbEw>?ncE<WD&0U`3Lt_rZ1_T)<|wa-E`>@_;0 z5ya(5Sf0jqUI8GNgzn;r>36`1(S=!S-|F-HjS&;GqJ=0s>Z4kBc|^mvml5p8;om_E zs{9K@$Cnu`S`Ma<!sR%LzZwDfeP^V0|E41{m(J9LlcvZ84FAwJxj`E2N`9hD(zBi% zv?8&zq1FPZCJ(Y_C&fS(A414y6bORv8lx_~qR>Yzp_8|s<*<^IZGl!Jlp=*<p;9at zz0Nbob%gS2S2D+W*nU4ucUdu4)~plJHcFGFC%d>ATjL_5ruOdN?pYrpg9@1^CP-cr zM1%L)=+0^NTKxITyh%0w*8yZsjS~@eDygN;8`a5kUFp{h!*s(c`rNp7N8W6Rlom?I z`EUUE(xMD5`WZgI*wx5_PI(H(t{SY@o=H4o&4$lZwe_^6s!(coWNb5}v{kJ<eIQ<l zO@!S8MH)QIW+<a)GX`5|l%z~<ksKD~EZ^dssaMv@eTd(8JWXOcgz6t<QN%7G^Fk}& zMfo?ZfD34sGW&qj%uN8x%_6G!UV<(PrTaMov_s%brq3@jeV;Qq+;X{7t)|S#S&C>( zYj2qvukdtjan~qe($=pIzI>K*$Ri||Ddl67v>COj#xl6F6UcRMy0r9jvOtalbUl12 zTon$*!cHYh!3OPU^&&MlwKX=Z`)Hfu`^14^b5E=W06X<XG9>h^^1v_M6+xdq40@fH z1^wo7)EUm`?eJEnByv&>^vnTvZ{R^}ZnXyknC*Qv(TD#miM_HlKOM(|x(Pfmw?|NO z)BLBNb2?lU2SC%};?LEwSC6=`%{^q{&ZfpF(ttIlSdfjR#>JuO2<h<4k^v;U{hjoN zQy=6eFV1I~jz$?EKMa__9QZpJA+n}u%YkaqQ8R;Rcd`1-1Qq^o1iq4*iye12{>f0L z#XY{o0p#xzUAg7zHKy6N*fx+u%%E|zw!pyQyHE>P4^>X3n2d}vG3NC2?jxC4UJ&5) z0#s(Jk{ODDsZlWN15k0dkxr57n}nIMqlD>HKTBVo7o^*b7$rgsw3*&Og-8le2EO7s zg`#A}<>bnVR$J-Xqlqh+3%&-9*~|4ZLy)vO0&$L0Yl6V$0m)^_rE7*1P5O?-_B`&c z30x$<aqY*0ZLTk82vLgS50I}GAKId1l*%`QNO{@iCWsR&f%A?=Aj-y;6smc2n+{sU z6Bi1hxEUmglYM1hqHEVB)yoJ$Y7{5LFwcN_B6`a2v-sS1cYxf)hw^zBN8wV~HjiUD z@LS{yf<)3qF=0ud0=9|&{dU}ze5Wh&AeD6R;wF5pBciiRa&F1x)oS(+;T^r<;fy8* z8l^+WZ%_7)5Wq(Tc922@4?Sldc<f)-4Bi)x8o3<y6|Fe}clyXUzY^&?lR$lO0_L03 zy%t-XF0pL8^9}2oAwuNQD`cyXKw0-!-KNnjEDkfem%Xa*Jui`}K#TvWc1B;H6&Q8D zF~-&~#5?syc}L&A$P>TScooExi?)vJ!u-M|%r{*H(T~TM%RP13EITtFn#8z(PsNCH zc1W1$w@xI|Vn3o!JEz6cAXzTzyG#O}ALwmB_Vfe#?h57pg~}^UmXxf51O%>9_=fvB z;w^UU>fBipqMs?gq={@z01pIuU~mggeG%`ZPv?A*@n(224H#G%O9q)SreuLmR97Q* z`|uNYovs!bS9K%excVbXg@<WZm|^Se*9|YkVz2i1r}jt1OVP=_yFEW|=pRYt&cy>t z_O$_AaXE!;{1j1+OOsy$HQM9M<kFVF8p^r$ixF~3$<yS^0;PNJr?)Z@Zv&Y$&9OIx zoo-c?Dhas@71=cI+gn3HOoF@YN(|^&Y;K<)tTh3U=FVatO`Y=1FJlsBul3;T8Ma0U zAe)_D6a<JZ?OA&9JNqCuPCr_+Qx+Q4=8ex9yjwMkAy`a{<oRuGoZG*N$Tc)Zet+Qx zG%HEZi4RO=w7(DrkUyOr3CefEuDs3T4w&>O=k02h^$C<`?rB*Um)tZnBBBrmGGc4R zwz!B{53wfS8wn3J_je=8@R2h(^QQi>NP!Ktz0_D~XXQ|VPmUMrGP(Pr?;QQ%aU}Z< zomimmB)o?&ZQ)^HsiXypmLd5?TxdzLA;DPeIX=u%R1@v2*~`vRD)hsl{;(b9n8?s> z-a_9*`4vQzJyGWpT@l2qm5uzC*{IBDPsR~R_*E<O^7Fnb&k5iZ3<;Jkvsp|Nv?v#@ z50&vmpyWd(ka${*X$KZ~6ZRdJ_|&a|03b?5O^?OILTLF}lxnJAiZG|=$Q2Z{znCSB z%@7O2s+}~l?GBWM<U7LoG~h&O)ywII<(;WAtmHV60Nomyf%#?lhiqN&%Ee%Pa1@9( zT@IYys6Z9sMz)9J2Lmo>TN>tix*UB$vp*n5yEt#iqFC5B5}giYj~Qf^S6<KwuATK) z#q!MZDY1<3z8JkW%dUBMLFU_ouvpR2fW~royJhvNKtW8;FGivlmcWKRMd@B(FtZ2m zPl9tZab?2>yK%cC0sKDebDzI(*dckN<kKT9s9`V%(zr&x>@Y>T)p_U)Ib{v5s)`T- zFRYMp_{gL&b0oc^qCm7f){)egub{N74iKxijw1R}WQ|u)w|A8<FUjm<hGC^`N*<Yw z8QZ8mQ=0Zx3|v#h>fREQyMYQB<XnWgDqf!e=jj-6y5JDtrGnbs=9Hn!X)C!A_bhlV z-d+MhOV8x>&zk6nPIe(l!qj{=orNk<RLMV9rM%nL;=4WXb%07hxG2Ea%q8=OQZ4%y zbND$<TS5Y}uKUb7Is)=%5DZ!Yyplh$kYl7tz<#qqfj#*mxbMnmEj!yQJ;P*!E7XC< zxybc2uWc41V4+g+ncg39s7xn_H0$>}Kx?6;d)1P~m~}t!jX*M61i}tA+giF3Dh3I9 zIwGM2X8{Dqx^}A^ieH3$7_{9FB3cc!3W`f!;2l{9K-ei%kj}~D-6eFeyf|bbXRM0- zF+x<FcftWu0;jp@Q7&LaQ-yDs#>G8+$1T!70UeUM#3}WUo`Nv9a1in}YDntN&YtOI zcko-fZ_#erDQflq6p5MlWYmSEHRK)rCKCDre710z<hDhM86uRRMldptq1TLOmqDSh zqfvhWUZ(#Qw8e09NeOhF_eVXYT}ZnhDrJ#^mOaP*el&YX{(uK(g49$Rs{}=!bRuap z&pD}y(lp%QR<Ak^J?LY+KR=`GbX@<s(q%7&z~O^|cG^B5{tj?P5jV-%73Pz;K==|1 zhMD<?R1<90%kamNnGkX(Qla(7NV0P?C#&x+UXn^LN@Xt3@YsPYno^PtK>ad;Ya&3E z9w}cN0-8H+X$H_LT{`Ip%(IH4H3pz7Q{{A2xR;DBfYg;MIa*agQAgNc9~#xj<8JzD zEWx~JN^P|^s+;&czS4RrtXN$<iPvxts)$-_?GAjJ8KB}5h=VUT?(IAjRn?32`UVXS zu3WkaO&y>GCx(Y4Thl8YQsL?HlWKQ!K6)$6(NtYA_#vp?*{jjx${L1moAXUkz0T-q zzMt1u)>b4nr3#+=U9qX7DoU1!!diZujL$A(yQRDDQo?`Pb}B0Rt85gWV=jz=TH7cl zDni|(a5#q7hlMEo%S1k1Zo=|GaD0XCkPa*sY_qsf7gKM(SnX*j=v|A8PvK<SX6rH- zda#{It*RIG#wt<Rgv>MR{@}Fe%iz5#8ufF+;-gdYtN=Q{V~mqM*UUZ3rBJk`kzLmm ztTe1s{fT&j_#>^#0(P}yvz)I&2em4?=n;v+<uvMXmPxzl<igs_E09Emp-l6N(T^a9 ziXH}(`lHK47PU#F<IV91sN)dG?TBYju&L;+;hxf1K(e2EZzM1!S|;^DHO0?lMn)1b zDqiQBG#zktc+`7bmF~t;7*t%R$aRScxc=m6&?_<byAQXo=QaZfVOZK{+q&^6u~G4+ zN;AHZCb&QNml#T)rxHRfTtBsu*w!!A)m-?l-&yjb#dZmVmyu~S@=Y6AI=WGzss|R4 z#yvXled>g~)GX4RMxb3nw|71)i^w(g?CDFY$%&r$>RVsi8i|Rllb~~UQ28P(UA*nv zUCTw@9f3g$UcXxgKPLiAJr!3Ig~P%Z@zcZ+px5wx{)N%f36y2fCGOF%1H_8lY_P}? z7Rv=Q&%&}wL-ssT;CznUIFyqO^o#ppuP9N{fTm1ql2x_F<4=%99)o<!3MIKRm<wkN z5bITKH5g-{<N5N_wq}zXhQ{w-1%Y8mqrf8u)iWZhW>;U%@=W37VWIbkI3F{|8t8D7 zN#F_hBC%ko`@c8l@atvLAEJ0NgzHPoX(N@m+0W_FGZnU_GMXHcffL9GfM9L+HzHcN z*$xCFadmg$dFFNIS5XY8f(F_RAlIF`_6e21oj+AF>C6NY)<C(5sa-CZ8;v6sU<}In zjIKMB`BK0fS5;9JBYd>VZ_P7>@`h+%S|n0W1F@7_L;$(D1&;yE?9OzPg=j89{owKS zMoaR~+4EXhbdz(_m9H-`v{%vqX*X3f{W<#8e^9y<1W6Wy6q2Isa_S)g0c*c>dRc!h zV}~PPBVw{f1XUXR?h6zeH&$rMH@K1BY5dP{<75w8N9NlZVpaQfKVzUi1C7}T^OwJw zxS6S!x8i>Cn_R!LSM%Gc&c?3i38k-a1`4&Itc}rU=M=M@a6~5R!BKP2XksuPo-Tg5 zeoLSQEHv<e;J?PEN}ugifX7{|tx+;i*hPyuLl3~iK%6=mLC4rP4_~~WN(GlZfI>xn zTYY^pbw#V9Z8f+-UdzrV=jSnVv=tYq0@2|@D6^sG#g}SKcj8E4(mCZ*9>t{x;9OPP z<JHf3HH%)BDPt@1hQ5W(+@PK8g@k@kRhqfSyo$Z$hd4fpYBK8z3L}e%JOS{`(Hvn6 zw-MiUBaJE!-*U<eqc+XIQntCM`|KkMdmnuFIG@lQ;LTftiJT_-GP*Du#&04k4ktfP zZquF<NB%M~8k$n*u0R)}?kq=4QA(703a~i3LVY($bKIihtGTcT7ymOKqKCCYklzuj z+u54^P|6ri?J$>VG{e7wMbt2Ii7%O!DzZ^YC!X4qG4m`%3JR&omE9gAbr{g6H2HJh zrUr4)TbHx}K`y0TYsf6uHd(}kgskdO6dVLd4_kEUvWXdFiDmSp18ECPVzyKqtaUK> zWR??FkpgUA;Iyl;*SRxRVn;f_`W6>DiN;35WxXFhS=0lW;r&<Aj`N)RA1E5$Ze-4% zrY?gUyC$@xTep{6D|JkEIgHc!A#;?n$o)y)N;=2hk_B##03L)SxDD3=T|xNb%>&|` z+Y%%K1SLIg)$|4_bcELNOEWq%;Jf1;-F|BOw?jTJd$>~y+JCZ=-eKVVA_-#x-Yem< zU$W(d0?u$#HYONZEL0#;*4)UAuB$7s05;jws#kpuzB=5aLK6BpQ&qk*QkZm>U_zaN zokr6u3K*RkDe81j6fhjThbbYi3q@+EYd1$afc^im_6|Un1dF0=cTd~4ZM&y!PaD&= zZQHhO+qP}nnzsA*oO92;=iPVX{r4mOj>uhEsmj8xs2!EL7JMAm!VeXSK#-n=X&^k- zMhBVeIT6XC#xrw=xII}&$XLFr-{=^v*iB}qx-1Aey1A#ocgySyj?>kAws5KYne5tD z_P%=X?(Z@^hil}XyGxykZcEQ;>TKwAF!EzsA?0L=W5`5u@Xx^(Yfr<e-I{S#Pf*s} zdG<tUSn5EBZVr4O4y^7!ZN$h1gJ3%29r9(bh6g8HLlk^S16X4Oyei<7#4Bq|C&<1u zmowLLyGu`D^_Z>LUgEj&5{wj)0+5Yhc~iOqG96o3AhoiZQTCj*od-~bt8SKt$P~}h zFlGUxMSpKPYx%s?`sWgm_xLWObxyjd!}$DRYzO_a0VFw-GaWw`sWqoW8}zUcbmTz8 z=IDszEQ~4_{IHDpZK)k<L+al83r!uN;MD5&U3iPxtMN*s3$Rjc@v8Mz3_!~wE{JDu z{O6V)O@D3hA<>QaN60mlOCw%4ja>MV+1&=>lfwMQ6*cJrHT==Ns(7_p^kN~;T|)~Z z=75XEBST6en%0jEH^;Ij;wlj79*Eh9tW`a<K(-?#@`94|7h=VWkjHN<3{i0wd&<2> ztb-YLx#yYV?Xz+1z?@Z<&NgstH0GAa%9k5z3*p=^z&9PaTSK^}B*RTd1}(3j54ge3 zGJkO4h7V2+gQ0rW1uq!PY7>EF@FQ+{QvJ~KEJNYzx%j&be39APl>k1^4M6JQh_=RW zR6vZW5R13UCPp8|*SA%HPs9VIliFtE`hwd6#?}%91O=<gm0n!->4Ab~nI<<nQ6`8= zKGZ7>XyeYyK;w*I%X`<9-F%QOS0oeTeY0~HCn2ZKK;5K8f@2cxk8(qC(Ft@*x&^S} z(A;+|IuPpNDJs(2e?rb2%?`XFHgzYS$)z0SsR-_=3g08L_zkuf-JCB9jwFEr!2{&O z5-3l@3?K_|-$#*!W`%0+8HA>Sq!W8PzvP{?j1DLePgy9Ll@)2Q(%NU2(oyy4$&g=Z z&FF#%-TE@xvIpnkqp_SYzo4|{lkQts&3c%(V?j5nFT!X1&YuwvHsfmYtvYFJKgDl7 zU=11=z!ozK$!t{D<xw{6<$&QeY&W9@;-HVIeFHO6G|IxRhaz3b8I=Ny+r@BNTu7)d z%b!+ttHS}FE;7sG>3XCeEKYM%#u}_bEg*?j=^!=%11!XU*P`g1BdXims?pZt17bBk z+Vz#;8a))cgtOJv=WCvIvj~Z|&1<&=CfQImV6#e2t$7em28slbkp237RH0;19T;L0 zbTr_AheAG=Um+HP4>keshFAUGIm3OQFBKoCi{Hib;BY{&4;s=y=Nv7mt%aqG?Y`}H zt}r7{%Ke^3-r#`JCC0`$6cjYI4M}G{jr6M}`icTJG&G7Fw8-L`mDO|sfkJFQuqhK2 zmE!i}-cbd?2#Z3tCgGX!zEs6)ewl5rCX3C8UYo7Oz(g+qxPBb(IObDLx@&r`Fa6<o zdF5a!lv?X#GXeklzKXP>EP7Z-pDPkQ5)M8!q@5;+*?KJB(0xQ-$BrL|n&p_6=zV3` zi>7Q(>x1Nug9vU3I4M|`EqkiO0X^~EBi`~QpAAN+RI6@XnWfVzbjwtxn$tRBjRILy zxU@*UF1a*^Nw|4@o-YOCOa5A0o379WnEmt8e{fZAJ+qN*f!VNvN6SL;7!=y{tiB$| zL9+C5LO*>{%HwoHwOGiTL?qQ^&L7-{G2VEm{tVR)-mv|gpCtufLF~#P{-hopj<;gX zjckhY&8*Nzlhofb3i1XG+mUPs;d;uu*5ag#6OJm7U+%ZJtM7A-g`;vg<Xn$t3GO3x zzNtCwW6++#S1C|ZcQ<vK6QAg+aWJfFk6qap$kgr~0@{YJ?R%0}+A{GA^esnOZA)_0 z2^U81@~L^=cKuwgl2_u+m_rAeiQUr{PSH;WP{dFewem(ev<P)v+Ak|#IK_6D;Xr=; zrjm)lTVap!LyZ|i04==%<cc=*T<9#LSa{07Dp|{OQugC)c=Ggza33i0ib;f5B|)f* z7rzAYRgWw=QrQ(8aqFAKSF%yCwx(o(6WId=!Y2W4Rxpk6F&abKvJB#y<k;uwpA7AD zBIk+PPZI7~AbSLbM=Hp1KZTI5f39*{E=>D^plOz}EXvU9>j$(eeVCx~@)fzPUoBwK z&{0euMErbi`u5Y=GY)(7_E|>t$gz#y${)yr=qk}nSMh~gwE9o)8TjBXf5Pi^IT~3^ zCWv$qtqMSlF&Gl`1lB$^k`*51jF&*St0>rXSuXn4PbB+_q@>){$XXmw<&SP6WpG~L z5f#pjK9~0E4J7w(2`PWnVlmU%5WZ*{T>&eHGDNSyj*GUD%TWzPq6a1gFzi=LB0Yo6 zChd5ct*HS+SGySyhcw&x6Q}&(uYzndCeF338?E^%z^E$&xxF}>0}aqe+B$uQQS;S8 zoM^1e)Q=5G=wFboCfdq-NxkmwY}i#wfm}H8+f$BQajUIEpn}DV^mukE3rwf;y8Rg^ zz~?Iz%xcS;m{(!q;a*G7HWe=hD_2&(ZFiu8NMrsv3%KSYgD@_}Tp<KuQnR3Q2kOsn zFwSJ*dRQ4sCE<sI5Y{g<467!s?LA`=uot0|-IkU%C%UOL3%N{>1{E}PY9a@k7H2Ev z6lOq7_*9eE*cg-^m+3{F)EHMtwZ#7SrYasl;mIUQi9q~rYiQTZYHxXjX_q;ACHJri ze*3BOS-djQxP$EjdO11C^`-qBAFY@DT8FE%mF?zjP7)HTFA-sR&<%M+P_<Gq6i%yE zLH2N=t5lBY!x=?hwbLB7ZA*)zu|l3&`~59b!TQ;pYK}<!kjjRYkO^8Eg<rDlvZi72 ze!2PX$j;S<9%8-WK_ht_s$M0BaA{+BCYrMrOC=qRTcQzuu(tx&8`B-K4mbJq2Dk;h zZy~tM6G6d&H6m)!$g;{mcJ9#?ido5$L5&NqwJ5T?l$~JmN2TV-5gaC8{q?19R&15w zRH^i9qrl+n*VM=l$s5FTehsJO_*d@$-rZHlDC0jZI0UtRT+192r#VW&a!#C{`#71t zxDV%gEv5m&^Ji;kY@F$y8g^zxqTH3i$?QU;7@jFhvFgnxnMeqmA?ZGs(ddFv{~3?L zEnn1c#4EON2YhDkjHK{{W*}ON{Ai3c+08*+c#W~?eO&5qnKv{fPfjUm?y(Vz!^}S{ znqsU3t?;{MbLi!i)3jQfCd^N^8SOVX7Lfa$Miq`}mdXayeQ4Q0>=R9nOGFmE2-_S& zEa}m-yGFG8{BrSiFUEl8g2FX2syqU3Qs=yC@$6QtTjg%{r(}5^_1ys_bFXxfdxo>L zzZDmuJT)YN_1<S7hn#J{KKGeB9gHQb#Y>+`pEZm@!M}0f^yfv583x0OM^VJ+l<9hp zh_X<n*(!H{^M%Wzs(<cbD>Tk;BRS-}I{jR{Dmf0K;nVIL9aWV<5aenAHwXOQ7n1Zr zeY!CD>6UXiOW!%dLq`e34HWAju7M_&$8Tu}5a4byeo&Hirb>5~%c_UJ%<jiIw}Lh1 zz0Q->ZqLwyh~FY3)m#55NnS&Nd^fz4T7fVE(2g>qNYOyyB4VtI>#jo6IVpW=I3B7e z=NVG5L~S9e3AhOA!B}cAD<P1b=+ZdA1)c;*p;(3HwSQF(%7X)#?ZAM$>>NJy&+`*9 z^7YG*-m7to1HD3?gDXNyTP0oanHs=06<!@^z|pVq6&B*_d=UulacevV5#&|e%Cqw| zPf2WeU1)Q|s~B{qM<~=X@tAQ+fw-(x5PfEFD!z)yU&M#~qhLoCN{jH34Biw`NVGtl z$*DZq^R^iNp<}1MdJc$J@IVKL5dO*(Tt~;bsnsf^^?9p{S&qRv<aAbnJ|q`gn(;@8 zU5@f60&QTic4O|~TtgSvmGU#FHxPX~i*OCaxU@Uz5<j$+u7C`gxJ-8!%M!DsU2W-& zD=GK#)9^;2{jviFDo>fG{`3TjSj<|dSuGeiZEBWQTdr#$Re9<H3VhFMNC<r4d+BpR zSA0}-vNex<-Wx+t?rAuG^$0^4LwmSQzT;erlw|8L=$z}Uy7a_Hb&9%JI7=qdH0AOp z?ult9lD3Hs`@`jTi+H{H!>}h^Cn1NSt}h)J{QXCwmk1koDfurW;|x44Lvn&Yi#W)| z;!ZEZ1H&Xj6YdhJdo)i$Xr-OLaDb_yQwh68GR{)bI7N-eJJB|&E@tt^AvD$fJ#4k+ zgZ(&?Z5PZ{AA`|YgzmW%)ihx!kypRIpE=P;Fxs`*wu0Ouhn7iJ&KVOPUS7NY2u*>0 zzMo+~_F9Z7r$d#>UU!DJ(`)zK(hvtv*s+7G7V(Uqov8NpGriQB&KsuCv2&t~9Wf#` zoJZGWx=(fB?(7Y0Te3SpoyqUpU^+?FkGf+gl6zh)bnYyp(qn<OFO|C4ak9$Bz^TY3 z@SinEMD`2D`Cje#NzO`icPjm4zGrRdxpc3Yk<w5E+#DPuYEhk_*s}B9qyUYMX<#KL zOr!~sagSduP5Pk?%P_cc-j@_fM;Lg8|E5USc2|+Bd&+v%gVPg;5b~I7UN6D5owzZ4 zLIj!aCT@xs@0M%4Au#<>K;|_*csv`rbqhJKbMB@H+%C_0z*k-2?}c&~YLU=|7Fgt2 zCCT>ofR;qpnU^R)ODVi3qM3&E)jU{tJf5(&;z%R5Zj+3D6By@}BtWXL*5K!~@xB>4 z<k|N@ZtO1FOyQ0@+(pWO#p$LZo|!K1AbO(<1=OlA(xic)z=8w|ln#l*{UhR(Ab!!f zBQBL2@`Re3jtAM=SS9nat8zE#unjCt%)sQ(eIvWu(X&2ygfyvZxpzH>eqf=*^;rEg zhWbHK;lV|2h5tAQFN6Mm#y*~`b7>U^U+H+j{>k2R$*P}*;>C7a*p_#D#hPE4^NE{W zX_63eFe_`bsjR%g>}&s;rf4-rQ~Pk=;8$`Dl>VVFVa>PWW_2jz<iywW$zDE}8?3Jx z17dVsOj7Rm7Rztm^X-bHJ|Xi$U6cXaL-tqxE6KQBR`eBwON&UCxkZDXV0T9|9PC$1 zJ_gjNEnk<BeM>LZT{rL~;O_Q2wm72-<%5=^tI3@W@MIw<w5xo7LMn_)*9&1EROVxe z*8GCPN^rL)0=#b-cDh9k(5Kykj#zF6<Gt@9jPHSL`vQIYbkqG**S2(FVF-3|`Nu=A zxN;9EA^4&1nAE22ICL7ez_j6f7FD0WDuIv1IT%j8!Om?!7hKk%#i13&!u5dUH&!ma zXrYz;!%+?r6$|m?$v_fU8<In=-~4Bc|DPc<)|>ShmsZ_CwoI1*>c?rV%u+GEV1`eS z&YE|w(BRmj+!thY?aKBzY}aamGy`|2eMw;`oQ>o=bl1$(oQoPt93)kxovyt6NW4$L zqxYUkW@D;?r8}OU^+pcb7YyD#0Y8+*+6L9ohD)uJ_)oF|ICLPwqlIPj#8K8atI9_5 z0H#Cey7TCL{@72C!NQV^Y#BPt%0F=RjR{))^6g-4?ojm~mtxvAuD>4pfYTeSlHwx= zO@y17bqknGWK{*28*GH3{W_f>b)NNBh_4C977<kmT%(Xe6;Z)AqIjS5+P5)takHDN z`cySP6uin%gSJ38<IzR3G@MUWDf+uk(%Tdl6^62s=PVxN9EiXVJQHh|&5k4!RahIL z)ZaV2^-`)$+tA(-v=U}EG_|GgA={x9Ald+idN9$6Gq0R{XDV&x<US9*E4*M&JIoWO zjT0x&DG{P}6Kk68z!xg@XUDoa3c@7ym7c|soaL}wh!5_?m@<+A)ak+-$MD!F1u;qt zOECB<NvjL)$Z=zb@~%J|=`EAb_luZuk$O6e1&&}P=Jkz6?>AUG6VkmA6C;0j4(^7h zArHW~)TS_);lB}>Zv>tq#omnarI8vF6$GW$m--(jsa@%&u%edJy{4RnYh5Q^p>`rQ z0@1jh(lxac^)!KnRw~7LGTJZR%;uS3{U~GYUkLGBO_*pwtWv@cI_<mOLz?F642@0Y z!T<i}Wq#-CS6?7R%k{(gM=4w_d5k|sP5q+L>K%fjCJkdF)+eRZt^2D@gff@U7_q~% zQWI_vxMwu%6br7<W<f%c!@Foz!~Re!M*Sj1w^WsMM4!>t+DYWu{;p!2U%8vJdYA28 zgKCUrmFZVo4RtRBxarGbtm7R?sN4^eZpqFC!5LuD{O}@cR<n&Ld0xBYr~{MpUNS7Z zqk9$eZ!1Ngb{i`L!+^AyGo;g92yH_UZv=Oun?HyWpTRn-E2_O2>kQ0d+f&EWjqh|J zlx#1M9%(Uu?@$|W&HQGfpdl;#k*PRof16d#M#OlQ6FbWDwC}M)NWnwkn6CpR-i6an zzdtWjjO5i}g}N95AuAY7N2}-K<;fj(S+Q9x)yytvihVykx2iGjuSVhi-zzRaB?DMJ zUu`k&^-gb?J+Glx(yF(l!!U>(m3e$;Pm)G%BOL-@ARWs=2Oa%=G(YpzXG!x5$Vm}G zD38O+>qqrmy9hLYJmBn!(Mw}ZZT`Gqj3>7AaIzZgoD38&d3|w^SXxYOx1HG2`FgR0 z=T2zFf{*nZ|D(p*73x6WshqkMF;xuMlMnKU5T3So!uUN>s?mJsoctSVgvir;<!8re zEdJg)zpK_4i4%$#?A3@LQ-|`rqtL>O91N7mY+;|7x&Ws$I@I;Lp2o}cz~hOePWy>b z59ei?H-Vp!D6T`2$ops!^2hcmkeT4{LiH#*_4Gy{wN25C@GGsZL(V-3bljlCfAgk2 z{QI$6-;n-ZUI;Fntf3weI*kqRp{^1tTlV0p0!d+Ni9tiyb-%6ETXTxxln1gx)<@+L z2QkkZ>W?ac)KEb7mUsO5NBnJIv`!;weCzYuCpRzE@5ys{$CTWt=pB6&<<nqENr*>v z#o%ap8bmjVUo{-9Q_$hp81X*>U0_sbD_d@<md5r=D#nL_?}VCubNTYRU@j{H>^k~h z<n;JSj64FIgMgTxS5t~2mi$P0-QVa~0TA7uG6C=E!&4XE#gg_{jy@XpKXF(<1SlGu zc8MoQ!eXw9Q@fOc>P6ZWI~JP8t0U)(jz{Qd+Az2OSoKDPyX>Pc7&oY17c7IxO6IQ2 z#%&-vuaZAxm^vaPn0nLnR%sEMJ4o?|>AA+UG^OF#E$G{ZA^A0fNJQv|9FQGqOAe^j z`;oO&ob<S1!roy?QuQiT!{zzZx`s)>YJ_w)C$HJQwqCF~_fxy6&(c1E(y>d2?UpV< zmhED9=uS7s&5Mt#Me;^>s0!#8kO-zbrRd0JGF2x7n+zt_yU(MgBK-t@8H99Uavc{q zime4BY=}C&x7j_*)4ZJE!UATBedKvI*xmxD;#Kqkl#WRM**1R^Lo0WNrooEyTDL}2 zB{aP~Z_pi(186R=d$H?U8zR-LxgjM(Dbte3AgXJKb()7Ty1YR9k#gAVbxZ|P2O>hF zJRD_PRSV>?9@SPB%TI*@ex|!kRqeq)B<K%mmC_fozK02_SYW*Cjk&W|llDeuZD7Q- z^eD7nL7xeS&Bea%DKQ)ByBX0%;^$8AJZ`?hhwvv|@do_d5FP9!zH)eYbbBEJ<XDN6 z#A?xaMJJi`e-h46E@!883#U1Yxy9XBv)Mb$IU_}x^I5@EitK*UKsgLM>t<2%xicLC zf%G9AAzfM!vN|`-+9FEW#~^~WSvCM*05}*ENq^$>e|GMXKh%#0xfGLV)tKb#)vT&B zN=@K#ELDh6i6U{gMFxHBlzO*x^uCZqb{*!a*e$c`W%V26;|<uf8rxPrp{@A5P4$8# z=4rpSrDOn79C7&@s|*}5_lAS<R+(#8wbiRlW;$4vYx>fAWU>)a!F*Kx^m|b@#^{VF zKh+>CVrCkVlmsYolSn>u8<0iyHvC0x)o`+-Z!dK#Kl<RW>?_|;)yZ3cmOGmWGs7z{ z_tVvEO0mg+%`R9RId3}-L+eY+JIzFvBMD4dqO6x?|Eq~2ST5iRym~U<vMqdc8P>lH z?o?o}C$Hk6rqi)HVD?aCM5)y6`V_T!%2B5HjNTKco7_l`g&V)-(cQ(-ixQEeRzPBj zd~|^O$@f>EPrW&7t6yVqPYO|Ag1E`Z+~Zz~t&njNctz$44B(I6bZg)Fg0?0u^RE&h zJuXlwybZF}_zve5&ExigA2?u^>MU1pgESL1O6>_n(rn{t%g*#)hk0&B>cVwm^4Cr) z=^db8*XG%QcN(#u!oTlV=N&-+mK7pu4WKUsWMAhrg`?h6QJL=7W*IfIAwtpbi@{&> zuuUnyJW&EN`!Nm7AFER{kG-~^EgW5TQ7f9IfONRt&4(#jRQfWdb?}$c`QL4-+0wR3 zM$ui(iY2u^I;Zf_Efor&HJ2Oba!6;OElrG<8IQs<kP}3-;HO2XOBOFsxeDhJ4An1+ zXs5`NuyB<ySMmp1gvS~+Gi@c~&?*PkSd>0i6$H4LQf3=b`pPhW_90hJVF9lskD1A{ zO91BlBGof%asFoMuHFBfsy?d7)C9_^ZtxGavT?w*4uRj-a!d2z{AjAQP*iGjJ8h1y zH{-df(dDm&rwf$vs2oJ{paZ!4(@T)p^1eI&eEcJbUw|b`3S{Of*tl)mg1Q(4+>3Wa z%GnWm{qSzV;Sfxew)z|@1-L#t<6`|s>SmP>h)H--W|3bdVCfZy`Yse&BiZHC@b5qT zHBxIKE0Y7i!hf21`Dmlg<hcxlY#d>x7;%H$CNqX<8H1+Q0-$7~`@?Rg;j{1~j;ng= zHN;rR@{M%h1wAG7KG*X@cxo3RVp-oZyDn(TGZ3dlgChDEqvn&n)UPJsE0Y`S)=#9Q z)$iat8{+e1y1HZ>AxDD?2u>{TI20BFpU-r)r63!I#b4L$EBVCEc!aJ90UjF9kfRhJ zP4U<@Z`))X3zWX76MdPU7jlDR`VWu=w7Y0tCB7gVih)c&TwI6XpB$Pelp9b-H%C64 zBNqrSgPKY;OGpD2xmG!84o>UiUaMJqSe%n>$6o|)3L5n$V$PO2NCJ{oQL7i(wYTxN z$Gp$9kJ+kl5ek~E9A)iq(lMoc6X+WJcBPA^cRwo8&jbK|6bz|2$V*coaHr`7OBzI2 z4-klGX<Fvui-7n*eoy&DXEI?lS0aS0^M)!BWm5E7nc}zMzWy@b?)u8L!3K*mK8Wdz zx`;(d?pG5X8{_26kQTun{b{EhV$flmJHgam4{3ZL-4viP6?H*q`^awK>Gk>vvc1g{ zJ$(-6@(EU*#l5%yqBRA{B;4)0aU56`cS+TGq|E#rM7^ch&$bN92et9LmTI+i=(9-F zp(LYQvkV_c+NQj0<l*N`DK)j9xVmni8FW(bH4z_E6iXDHG;#aWiXn%PLpN?;?a5dc z`OX{zFJzUrWVJU_(y5!Bq{7@oY^f*i&}+Eb&K+LLU@xF+tV-x9>61-CbW&#J_GOfz zkm!X2tJgUCZ|<q`l@Ad<PrtHGY0O1frV`b7WjRS*v5<BYi<{`_p<^kP41eDbRc(zZ zYCfIw8uS@^6gG0EPR;C7J(9;^x2?v{oul154PIiv!GWLi4}5T^+1yqGM~ZydkWU<b zbR@(`E+=IAC0!k`X4+9~;ot#9Y!40>Z?8)u38XAlz@RTqzxJ<eH*0b`Z&0yy_W_~% zFXZf?Vsr6OT!HWEBXf!=F}yD80&KK3+>eha*JYL$AMH-)2=XD8YB`94eGQxWChU4) z2kN?+bW;a&=pU=bxN@7LIWp6fl5j~g8F63S&^D@ZQ>I^yHSD8I6K}F&5@Z%+9<d^~ ztokIq5@BBBMc6a%TY>HoKjwWm@No{x!zt&cBG1|0cR5<8N$gz@p7;$P@fZPYC^ovo z+Vw>h-_UlPAH3ngt!JhqW~K{fPbfBeOPC5jZDxNV#Em$06ExGTW>vCu0tZ^KzGK2T zgy9qwJCMavfgSufKTe&_kW+VZcW!Fe)*5{y-yA=tW2ticx~<pY0@w*AwR6A?zn2ID zvX1}($?R4_2^~ZRfAV|Y=D*`PqXelhN%DwLE09NRutoqpvZv@)UY=w$D?%tacZQI= zOuN=UP^A20*03EA;wdj{<N=E7K(!2&hNLgr=^V7@X3h+;rJ3%T%2Unhip{Dej%FvT z+=V%BjRnlL6<!DMP+^3BFVhFb#5MyIB9uIF6~|s{>wNI^F%FxcPzJS6b{1%gIn9sw zMUkD>V9ccA;aT`{ld026)+PO>zQQWZ9Y6A<UU#wBa{sz{Qqc4qMWZ!Ut;h}Obt`Ec zF5fK%+O<HHL!CPjbuyzNb<lf(-7}2%;bfx~hXXm-p!W$X9r2Wnw)!Ac((ab2J|#l; z<J8XK>(!u}lBd7rmE>r)+m4p|W3uuSccfgdj-U2qJt2^{snjwx9OKV^%cDspJ;*Ba z6X6dWR@|)$Yz#CJ`Wy1VDs}gmwP*52C&Ipt^NOT{&6`01acBl?Cp_~cw!@0bkDY3! z%F0T(r)oCvpsG1oxNltaMM+tQ`i7lR6Nte`(}~G2l~jHnf#PEyfX%7MT>@|cPrX5W zik03KcDA%!GsDd0lwxxwx>0Ean%M`^?A69e;<yynD%h!iYq~YRtCq)Vtk(N$+94(4 z)$>Ojc6od~apn{OLi@K==HV-d*DLI7FD5UCs_oUfOGr&Kz&wY1Qqb~jDbs?=yfX@K z5IU6vQZXNT7&k!N;_iA#qi2_yhxuGcLEl@t3q)l7npyiqwmRCCg3$i<Cgir`$kfa_ zF646A3>kKI<mW{87LDf{T<oYzrO1|iu7dpAM7_$-?E@$WZ|~xLi!(&$gBDi9>>q|I zvf;mwo*V9$av?=*6p%*SOJNu)a4~_(rMrvBa3|?2FX;0`^bJU5XF~==0h0jR+{x}H z@k%?fX@}gl#DsG(UBnMQWFV=r+D++arf^$aZ*6xCShv#`x`to;2!i(X+l(4_O;s0b z=s=>k*E@zaf8Q<a4h4<ZA1FjQo6A~kno8BJ4qZx74@_<#p3DK!R&&qM?T>Y1^Pn#P zWT)XmcnjTSp2hqkwT=97f}J?Px&=G$ciwAo-gaG!o!K+gfg7knIrjS!BiI=w++t04 zc@GW3zuD6ID=blPn2Fj#clekN1Ezg$9MjuArKa=5kez&fr@W>vApu~-&2y!pk^HD) zQ9!Lttva<5tBp&f{Nt4aq$(<o4hWg2L_(nsE0MTDIv8O!iHi&=WghZa06J#(!+Dca z9geyXJmkP+E_LsF<f%k=B>M$NPDi{d2u1cF8~3{(v)(Fc({k)#`_#lz8<7BGJHD-A z7!Wj*RGNAPV&avxjytUncou<$9=#YoAh8>P(vX$O!WtIthp5AOMmi(1@6y)-e!;O& z?LmMLQ$8~lrd2jv!4Ks<xuA66YQc}5=j<EFh@m=wnrI~z4+@_Iny0<xxF6Y^`+23R zo2A*dA>=&FgCRm63NG`RM@0(1hq9KK1|5w>4Rt&wh`ErIxxJC+*qGxpuob5Yxv%`^ z+KjH;A=B*QbGYgUwZpegsdrFh7h#h!1i1~|oB2hZS5+lS3$5<^nk%s&6)<g>&@eur z2^v^nzlZhrk8VnGDh(EOxN6Yt@tF6m=<)u%LF~>ZHfj?L5oM_b2d?6>v@ghVBkksK zZ=FYwkE6zpPy2#5@H{yN;-!SrSCV9Y;+W3vNbh=|61kjihFCK6u9eeV!-A2dP`BX` zIuPu_J0^^6thpI+$k@=`zThB+Sg)xiyE<@V^Y`HBJP~fA%FY+UD6z^w!3)-C&I}<3 z59qMHHq!P9KN@{W`_n4alXo46i^%<J9m$8fxd(YkC7+E_ctcGvIy|)`&$PRh#GWP9 zy)h=W$89v4zTQ!NMcmZ;oKnoRkj8R3EZ)9Rm+q&2fI}RD6f;KE(l(?!yz0v0wPv5U z^9KjFWF*tG9i0h<>K@jb)P(_!3PncpobV(BfCNqh<@EL$^PDe}I`yJAnIsax5lwn3 zFm;>7FmxhZw2t=FpW3jb1K6cHU{Q?<BIpAK98{=W?;F_el@Vg#c&Evg#xTuGP%E_l z%jR}^SR}?a+vF7AQ{Pt{g2YOhTOsul*YuR4MnY!VV>9kcjB{LQolj{gJXR%CBn}wk zvS#$7mcXCb`8|)OrHg9&mkWgz2w=h+dy&l0C#E`hkrfopth8E>E>dCbTj*uQckDr< zG*0w1ng{Q&9|d;I4>L~d13<GH`AFkeRgg<5<3@pvhDsrXCn~t`FS%euCP^hYdku$m zK$f?`2qB3~q*U``JzwX%C$X}_+G^%&=-bAnaP7?+cxg1WZT7UY7zjOVzUyHO+%(QA z99Soe%QE$ET<U9edKIzotcCK=xD=n8ppiP*xoG>4F8BlPhn*KMSj8{RuE!0^OBJa! zKF5|Hlhyf{bZ9O5My{EV$476*5g>-7dyKpk!Cs|WRKZmVSC`(<wMci5%;D5j5&KGb zP^S&cO|UvH%f7AcQyL&|Fj^l!;m->c4JAGfD0g@5r=wmQiptJ-;FEM_)SU$He-8dx z9^j&CFix1)#{i`~xOATwI!u{^?8;D`T6L)l3s0Dmj@>uutz9WFD|M-GJ+?qKu*rmC z`?U_nkHun$OhR>P^V>eg;CpstP5H)wzj=A9glBQ6C4RMxH$#KrAEcasix<$%qLjCb zhw+Ghm41-Xh0dTo89&>Ut!~=fNW`7#WRN(mpRP_tb6vqAuok~7S^24tTGfIW#j_9V zFr^5Y-S)&7c^O&WImAZda|fqE11LTVXQVyPb1$BvrR%L2lu6q4sdllMn!vq~I8NK? zaJ!v*Q<qquI}KQ_aOM>tK8GBGq7g+9nV4TPL>Y4&sGlvd*~++(HLt|NhvzkQ&JogE z*~Du{;FTS{3+2+|C74#TU^tLIC}`$h>mMbjT0yhMd78&QyTvh}j=xIYVTU!N6$~Ue zTyF0P;i19g_Dvz{z}s^JSzI_9eq`d<NKu6S1?E=!tjgGhm_}*w&H7j`NCz@L@^$)Q z9fxHBpKmN^u%#^p0n%l?&Z@oQ;bpuw71KAiAcV;&p2J6SMs|}b>d#-knRY;;g0TyI zZp_2L?{U26szF9$de-|Em_HpeZXWkgpg?}2`>T}<U0;t1>U82|jvmIRYTh=0VB>bi zjc~P(u8NdN6b27OqHN+ZRj4wBSGr2WauJSHKA(w~Nw_Tuf}|Jh{V>>|nxkZ|La~a) z^5|*ozCFZ5-jl5|qyrQ|$XHnDhk@x-p@^cOrqONpfx?BKi!}!-EEyOuZRT?M;x7$G zVS;Q(qCkgmZe&QRiIbuZS=&cq<@#)P(}F29DtG1}h$O&{#>;nB57ab!=-%djHcUDs z*nFlI%h1JSsK`Xnfu*6l)vo}o^uxjE%2l#JH$|1xLRu!E1Y3F&QI~Z^Dm#H~Rbl^0 zWE}I9qZ4r5Quap}J)t${_UQ;|wRgeTU}Df*7eey9%_GQN>^QLW!uW#DO05O?P0g0r zuz`4H+#!3NP5VMSGP1yN*YdvdOh`}?R_wi;2P-?H6xwt7IKsdR3UJ;WV-jIH@hI3N zThW+>a>5k~f+8OGvbd#Q1#R&FZ$q(@$(U6|9Zd0MnT&LZ?`!o4;=xcg>=*@?#ux1| zN1mUB@?umRmOUsO28{BZSN|RFMjNn&_rV4R^6|+L=2rI|j`(6t?|-8o{s&U`{{zSP zn`-yp;D?O=4nJi5rW*ds;>Gb7t@yvt4<(h<M3sI~$(UN|IoiuxTgq5-d|O8hjUE3t zs_{Rq9sfl_{C6wUzeK@*^%4Ij3jXV8`Y%y1!+*FvWOOaREyw?d4gWh8@jnU2?B5W_ z|KuV56^H$0LJA02yWsz(VPIwdMjW#<d>f?b>A&Tn%>OeG(a4m}$b!zm`rFNGZ*Te? zv9Qp!qq8xz(>JtoptE(f{_76@YwESpwKKH(hidm9vHwW4__l)m|6~-lGPN@N-*l|} zbOPThVIex<Z=J9xo!GZhSb|QHPKr*NPKHjF?iZaLo%}xp!%B3@bSiYJbZT_!|5Bs= zrxy5IJp9kz>eA`a>C+j|8PfgV8;1XJ1Pt`PL6P6;;(x9Dv$^lf^shGA(DEM(15-mg zLwi&Ef2TwL6Q=!Nmj}l`uC;&CBw1MTS-!)6Q6&F+?60Qlzo-3A>nz`=m;KuhO^?s? z{r#`-ZR=%a#%E;tXX@YO-}e5N{l5u+%l@z1XJh=fPqVW9Bm5)&jmrGn|G)9S;UC-m zW?%m+kNrR5f7kz2?r;6S@$a`h|5=aY8!7#-HvXpnZRekT{^!0jf9L=0@xL$smigCS z{Hv#b*Z;=Z{)fH%SKt2T|Eu0V`t=`2<8Ryl(~<o@rTwk*&w77b{Ks$X|5W^M-rsKg zCnogY(d_?)?PUDE9sDP@lbN3V?@jA}aLq6<b9^7hzn}kiZ0Dt$;je<tIMS;t8NkSP zF6JxPNS3Qe<g0&tBHP>NTfWmKZ#|ujt_C(&dAaV)^{Mg*&kV9WZbv<CGs@WVM#Pbo zP68u*gGl%IuteRAKuK|ZIszMW<NX<D)Nw~>B<YOxEC8Py>ic8k!&lPL+0_9og<!Cy zT>#EVhXCY|hyb9Vd{WcXv7)f?ff^j^o4@g$z`sf<$`$74=04_cmr;Fk*Sp<$h;XPU zEC7(R@iL?<e43U>S);Pyzm|O|Nl5`jzh}&q1|~xA3GvG*NN54^kq}ga#?aR?)Uwq8 zk#l0GtDyrL&_qaCU`v$%7V)|JEb^iP5amSH4r&*2(0k}XZ~#C9z&4SJpl0imR*8@{ zdAFVbG?6|op~AvuX9J?b0x-G%z#5*$Wd{O8Wff7D8S+MWZb%3EA~i6Fd;g|IpS}Sr z0CTc)qObm5;RNETrwj}G@-NPB_1)KQ#i8ce1jso(meJ3No!2J$xO@wEx#z@GU10~n zme#=e8Z$HjqHnUPX=Jo{oA`h*GPnN2215o0g;np(nDb*LJq2S0>vt+UyGNgg-q&KL z_Y%aj>>}36ntJO84$QmzvbRl*jRSoxqoI$!(aVJC!E@^RL?39>pK7((ItCD+l+;gM zHmAA|=j{5>k8PN|S97BhUU78vAC?sx07IljHW9ac!_x@>WnWy07@x;NpLj9P-a<QH z2(Dl5d!OYZU#IY2&eM0@0^wY0YNJ@H-mpEqSLi**B>Fl(o;!>I>U_FsG0D!qXa;)L z`o=E5kngM87o|UYmC;QM->Z2jME$3ez*kc|$NC0(?&0zS{aXUdLu>N_^J6)B7JAO= zwY}FDEh3~ZDyc1`cpN|43jy4WNQ=Dxl&1YgS6h200eIupAY~o;lK4_6>mFq)gA6T^ z7@7S<OFrMmLg5YWkz1U6j9>3gBm`srj2_gc@9X1J@d4vz0z>o3N{oEDyYNKZJJPv* zrIY`J8F-&=%<#?c45Z?FtG6OO>Ms9ke&SW(`~o5}(g$Y#G`CR1hOvm?CA;K>_HK>L zxVYp6`Fy+aR{pp??>62V7+4$tw{nCq8NhlbVj-HWMddO!5m0Qe4#w~xA89J!Z=~OD z#$36K$84L_%>7bE8kk`pygM#l-z&X*>tdel6@yDcF?6mQHN^Er!*I0bIRh2uBD?hE z&9{QkTT68-7+&<dKn*|zn{W2dgdj28++!o}D|J$KPbn8Q(`G#O(2k&kYZBWMp?F|O z!6A>tH)#YZHb#aRj)qJ4k>4-qzquUK`S#qf%20FAF$EujjL_w@`s}A}hJri0LO`t~ zcH%}`kW#!wQ#>Vbm!iXUISMM;I4rYB29JNjz|1n&+uILxm<OgGX+&%DZbH_Dn@I66 zH(M>1VD#$zB-C%>L5R~+a_S&bif8-i<rfKhO)w)Om856%i_)-a#JPsXVxFYVBtGS4 z$D&W%HujbZqB_VX)KuFLC`c}`9pkh;Q=i|c7L|^|fZy`bsViq^gDg}A8{8x_f0PHh zXx!D60ztZ<TQapz(K3d^gj!Z~1i@rlPsC~#>vx6Inrbn6*7g{}jog{q03ku%qCt#C zxk(9Bc0pi|_N_O1ugoi%XtTHGWqk^=FJo*Ky?(!t;VQC3z$fB8Z2yYY$I{Jbtn^RB zM09v9>U@5g$xF_Nn9X=aw49C3sil>~)EM{{(Li3^&>spLQp`2ivl^jtU@vlZfA)zp z@tgU*n@VJHTQx1gOMKOtA%v|6tIYh)l{sgu0e%e<q=2O&XKCV4Er;~0VP-AR(2V2k zX(@^ur~?eQn(uxJ2QEvupH~pM6-y(^p>@Z9wEa2R!|A)<Th#aCE!For8YynzY%GC< z6(N5-QOiBY5gC`o&QmZ0ffYq1JY8hnE24FzcFe+$OO<v5O(6;R41{)1y|I+zf@Bc8 zY<v9am@-z<>#8*XY8YQzMJRW;OgB?uyB~}(37J*!8X|-s95Op6)2mFpR&mK)gaIp` zr4%nh33!gM?cp$!Ga81Q$R8F!!7t2$XUH*K8)11FU64@rwhEYp3+ys*(pAd`Yj2sl zu8DkEgI2y9gK9iQM=<K?tnmo5Nt9EP<_T@?B(J1Pjct?rVt^!qfOfD2U)x2kL=v|A zXcb*iqWe*>-&Q`!8n&RP>3DqP*pI_)P@p1->bdX`%f+<Mjqf&X#1yCjv_QE_cLEg< zX9v3)rzNjdOa%w(d&T)Vu4PMnI$y-Pov`0ZTmqZ-hge^U2xJ9wHar{|Y)&lCvq+fQ zpuLO_#-`XW;oiafQd;8nXiGi}`!H}d=nEIDX>mSc!-mfz!`eR5MtlaP&(f)1Oc6ee zfS;Fc@7LsM1zP)MCw53ZO3O8JVvC)}avoGMbI>fNQ<+e4dJ%SiTq3^f4ZXU-PFRnK z{=m<by&<~{6Wq=ff32w_PzG84ttx!LV?`)LZru5ch?18^O{-Fu!|4uw`|I!XtI5!f z?>rNHuD18ekk=^}C~mcIzxBn3L&49|ma12C5$DP9yI73B9c1gv2Ymg^(xl0wW*UNn z*Lq_Iq;b1^&KDaAa4JWXq4|`<7y0_5C9lq=4}&`7r|k{8xk1Lmu_&o%2wF!tn~f_B z%c`Mj79MV<C-`7pmf~TYo4CYzp&&>pc2X0_<E7hGl@Da0j-?sMC89Gb?kG?#Zk~07 z3e+ph2UydK;$mTNUb#tp)rBc)eY(OBcHg|G0<zm)0*E5nWK!;@8fT;t!mt-#c#1(w z(pQvRpG)<$3Q^g*Px@nL(CgkU-heSOlxyUk3%**kXOZ$|rZn%51NUyh=L$9}*#ae? zC5(i3EwQ@7*Q+CuDNhw=fh=d{k?Tu{R>Fp^NH3wW(Wgzd5~DLlOvc(asut1?>nj)p zC<kkuq`16beQkKvF#LDhm!s*dWSi@HG3XrLf+P^~60AZ#JI_o0QG?k<fQe|Wm*2BW z8ZKueoMp7HHY-QEC3xgZI2os7f*>iW=6ls`G!WgA)akCurf+OzB2svQnU*bN`FD)q zzB8{3BKtTI4M~;`+xelXPCA+T#YTDLyqCacezCQ}<~I!Ea<DhO4Gl3L7ctftN)X1- z3TXae;OAbJ5^Yj$XYxJ~8Aj8x^pg5BO3p7d9MRH1#;DCbKvaq9WNU!f%vK5&g3!`U z`^-xd8VraCoAjNGEc-;{&TTz-A}GL25{TCb#RCqh7qE1uPw=cPa$`!pM@~^JB=<Y@ zX}k1uXTDNN(vuX~$)sW(OQXk>VFXq_gcepSC34cd!6Aa}YKy08qdG>{9j6gl`Ggz& zYSreHxH3@l{b}|ajuftuF11}jE<28n2!=cnjcLuLTD`&B_cFWngZzX-P|%3iY{XP0 z_RYE9Fa2a54vR@Cb9_XCHv_CSs+-C~ZF4;iG<>&kmM?%WGns-%=i!I38n4*ot5j+! z!&FikLxn)Q;Z1%dd-ycEIv|qobs6nit+4y(4rit&H>9i=PwJD=p2pA@^<Gx?#S9cH zjj^?7{q{CLT!5)FBCwNHnEGj5-32uo!qAfj@}5TuqU0|}Koem43J@`?=z$eu61Erb z=X4rulQoqhYPZFsJo6?|gEZ+X<PD>8YNr^?Z#Zb)^$Q})Lni!4JW*Bh;laX;#L(-@ z*DX_X-{d@r2}ec-scNkRxXvP}rrJ4fUb~-1qTW-(CeASClC2P>LBkM+MHSBjcZ!^F zE`vsq0uNX*3Or&Bl_A1M@W@0(fEW`Y-idDz&s1+~Rhi<Mc01TplXbk^cS$)JEV-ry z_QbldaW$PmS?UG5p&yJ?#5TCR*V6W8F+=F~v5sm@6UOUml0^sk^_>^>2OR{WI>8-Q ztibAJIAo-o2<~CF2u_>3h?iFJssVGl=PIs!WeIputCq6h+yg6AYtN>qQ2!MYuYvAP zum!aUxmIG#&wAfWol%z7eAfa`%Y`YoPY#1-CB72bWxsNPRF|;{l7PViW>*3<ng)Oa z6ZoED;jL^7+OFX;N>P$?XzAu<b3^TuI}R-=7RA?5Mz_7j-;Jlda@1D8{;;Ii8@BCI zvbL(1L2)b7wykmtzoF~hV0~d_uYxZ{18crM@ngvv_ibUkiO&pG+}<N<`?2K8Kj3}? z4I85z(M8Yv3fU_dcm;cjO~K)PtCe?ME22@<Kk!Gyp??)E8o$P^5;EC=wp(HY#u%n> znrz<~8hHnoKN+b-sMY1^)6-tWm+7y&Hm=@<_Rxy9wF8F>rump_n@o$hW;zKhH0`E9 z@0x<&CcQ1(KlLXq`M-CKT18cJf?II|2=Hn1TEBm8En|C8-)vU7F!1ek$#-V!rguTg z=(DVzh`&9rWwKRJVLYm82Bst~z~~vOb$WRzdrqA7uA9S%Pc{MjrU$y32T{%pRQgqQ zHZC9~wHMlb*hxO5-*TnI)+^@?{i-hIsgTA|vNBkmYC+zr8>que2x=}md7DizgZIo! zcAICXpcWSOflhLPLU$Mav?U$E1G;o#f;K?4PQYCwe@bHk<jjVQLx+jIH&a}1)IR-y z$%rem8NXP5&rj4|W>ClxozFZ05!GqNykjNzI^h)4weT!4WPktp=Sl!u4N6dGGeflB zB9wD5Xf=5SR|B@Ydir2`X!HpqC5Za<lJk;5g;w4}e<+II*?LFHqV~(pSFn`okzd-8 z$mn5czFP6d+>H&Pyka9=trS>>o3)+a#4@JBOgA_PrHFcgYkk<zRJH+uI?Es1*T4+> zUdx+VQx*>ptCCAIS<1B9^71T@`0h`^OLG9$Z(570OA&zUMTom*_gcUKLZ&D|bLF)B zGlS$uvV?jFd-RB)L8-h_Q8chG)VGg;77GginajEzp~|CV(9hz?WSAQ%a*01Csff3l z$Z^VRJxk<7N4f^1tTntO5_iblFK%>@)B@fiB~9B{anM}ijl|kmu^^<=Zu73nm|_dh zA5)EEso|S93v-??>OlKp54gv7Y(^6snSS{l2BxLqAXH*NcXtvQwN;iEOML$KQWE4) zsFqkC=D$jTs=PuY^>gt94cmGg+m@x;S(W%lfX6C4Te2!&JvyySH1JBIg#(gN0D^39 zsHX;*W@*00pkQ!Z%XU#G1JvcAqSeh+1#jkvP%-<K`4t{)PL~OpZ%TIRr?>+oaK+Af zOH=N8_db}^GjQCD_-m4Vhme5%j#DCnKNxxmV3Z8#q(4CnQZ>qTi4iGq6uV-Qxs=`T z>AvlgTHEEq8wsn~M{Sp7fcNyMRn=<M+LE5g?<{p!fqhfYRb@bOn#>Nn$8qHZpY++Y zSf2MXo9{^MwW-JDRMvtrodTrFF#P<-p_Q%ImI_OCy4yY_ef<+$Sq0j@0$oxlj)9oX zm9o43N}r&6EK5Ee_mCO@0AwzeO7JVy1|Cm3%n>-{zz%B9gBgG*NJbPkd2ZSZOlEAK zlE(yi_Nx{_yLvxYV0oQ0QIlboS%1IKvq30P--lfw%+*9exvNR2Mq%uY&heI@MR5nz z79uSn`;deBK&9P<(VWg;y*ZH#>dBe^9<hqz%UHBcHy1gDRBkYGiOWW7ygW_Ld^UK} z1QdOwyrjg#bgKI-kNCm0AV;z`ZM=;%xnh!M(YuZ|V{zztJi?O_I2aymqZG3(7tD;1 zcuwrHEiU{!rhG}0zX--ANu#O&WKKE&s}zDMJ3ZDYJV5%w-r9+ch##bw7NcwjmaA^s zE2A9Bg;D3uswcF*!TZmkw8xJsHuA{bljgT$468pz&+vVQxv=WQc_XY-<v%4dP-&hu z%2tRD$!cwZf7q-Ii3O#%ITg0p8xfu}S0JmkMePvaT|bAk#|0JO`5SWmMsPPZ=%6Rp zG*KLN;GdnuY%a2PGJ-zGECOZHeT^H>PPb`F2Yh&)8`1e-N;5Zh4a90jtg1S|lCKX~ z#IsM+aGSh;!AAn{nlQteAr-yW;>Nn%+hO`D@bLb9X-;q|Z=E1`$PrWVsbg<e#e$L7 zv=hK7?g5fy>g+TU_%44OUWK3jDKEmx3w#%*4TfEgb)2&@+ox}@1OM9MI+%6JBZE7K zG$DVt1KQ%rjiEG`%B+j2I~^Y5XvW)OmtNdCEA(j~#bzP1g+VxgbC^m#6TIk>iqQ!q zOY0ZHg~*D?)l=L*biz)sv~c?5Vkh|sg;!wNWp5wrzh&bF=e_KkVYTN;tea!B=_6G2 z5bWMtY#RS6R=yC4yG{UAP6e=Ddv7M;3r9H<$F@B|tVo(b@=%XpO4lM~g?!yQEN5>& zUZVjs6^*nLdAGHP)_MnA7C$!y>-hP;|2nAcV~->s?*!R$^Bz!3s$9VokUx<&)wmIh zBJ?4%co5K`O0Uqb8AY%(`z#`p*qR47ma(c7w8F}xT<DDAq$3+VTi5C#?^O}mQ3UQ| zLS7?3pD+KS6C|zm3$H|ZCN7NLM<{rGk(i6q{?xU*nDOq?`A9b1bME)!3|`SuI}0_j zZE1piqh8fwT-qHXaf4h?3rlpkA@o(&itQ!3V0MykgIeOLjl;EB7nD0zkE*{=kLYGf zR@(0codWv4mnJQCbCebuu{F&TpG7LuhVufFz)}a6HVGKb_r%lTu-acxwV%Iy0}$nz znSX?W@F~e(ldAkmf=EnPfu!r-IoBD>e^UxrV3=fpGu7axH;b<DPyBh%?{FD))i*gg zhNzs>43DtjkJ3PZHq{c;@rv6O<GQUP2rK?eoFS+x+STyBsH8iNYbwg>chne)w}ez- z;yOUuxz&;wn?TYPSedcRn9Iaxi)|pkAD%&QL{8(CA=1F@ZW$OsmZ9tVBgZioa`zka zvp70Iep>Iafw&S|gfzvQ{i{<WJwXTPcGaQ06^xT*$Wb{ur{u<tY^`mB`YrO0BMESs zKm^~EIq;ZN3AhBKYgo{F`1lsOLZ{Q4n%lm+{U2S)W`1%eM&h%t%eF9(HDHM|h8Zc& zpG`GEar8Q;FWNdl;>$zh5Q5}dYlq`g^g8JhWGCGfp>3wYM7!FPU=_azy1W$ZK7B4* z*)TXR_$HwXx(uf9{WgPth2ZncQC-uXMB@HBKvSgJL3ZrWI;neVqN*wV;>RjqZmZNr zxV@)o1?9uzI<@EtxaG3EUvp(emVKs%`k2xv4&y@Xcd8{}TQW-&*q_FuX>mknY18Wx z!WJB-YE3nHh;-53g|?O7h(QdX9ae%1?X7-&-zS@%BttIPte3RPqgm^vfbk&mzjgW^ zd4>u^R|aUVWqg?)T$@N(tCR78K+S5Sbhy#htl9!v%`0B`vKeU_k@f1=--#fL#_(ep z63g<`wWelP-0SB$BMr@-rzm29u(^SzRp@orC$3CDI?OR9R@(CEwIjQt<%<)}WxMlw z9{ya(mQYt*+iERo_^474{4|bpjwRheI{XmhXqHyVXByGsb(G@s$U(a&TC>0eZZHbL zD|(STZn?)C>Z|`t(v5s!P=r2hqw;t<Sa)ID-r6x#D|yP-q|0m<l-aRU%b2y_wej7i zI4vDTOq_(@M6D!c3$M$7u*olIj5O6wayVv4Q6^c!-j2iTcpCUK<Ia6f&BeLpVG_1J z??*1ykJ2-G<(4#kXVHn>*+q}g!^(o&K^(v8J*ZYAYp!yI(3l-x_G!UA!mT5sWjBB8 z;mEmjg*ZYMa5R+*Ajmlw$i~t=KKTEqwC{lHxqJW4C?qMVv_l%GzI!yZON*8?khF*P zps7J6Bcp^0NlAq$NrTErR5C*fX-K6ZMd7(V?%#d??#}W2pXc>FeqOg<Z|Czl=UnI7 z*SS7;n{IAP8Ee-&<SK6*a$0=kLd=P-ke}i&65pnOvR*sb9>34?y<g?~Z~C{{v)b%Q z6}^S7zHcoa45^(vKNa|S&9L598|%Es$J<IMruOIR8BdskOC7V^RIZIQoL_y5FSEyK z=W)L}Zpm{_Yj!YHRg7=%TA-+KX}iNl&0nd#S>&avO&?ifsdH?DBhO{{HiV_C$nq%O z^A*4T@p8_yC7IGT4vJyg-#9C~d-RUAwXGjLB10Zi_;l=Ju5QDnZG5NqPrgf>?Q~{H zL+kU7Lq~O<Mw|EUHVp3FqG&%cy86qqPMO_&eV<cYBTfp6&l-JY(pA83zR3E7nWI<q zsnHsB=TN=fqrqZncHjDJOD4zS*q)Uf!P&IKKK_QuYr4yinJ*aqM5}x7^gK`3@$D&P zW=2}q0-rCCT1tzcZd({GYvefGtT}kB>3xQKuS=tab!ED%zN_86jWp++k~(*W&$57b ztx=0ldkK{IeL2?s^?;`&^QC!A{DoyESqiE3m!iKEvMt`+O8Zu$B@?Sf`?$pSX{+zU zA3Ya&y<W(@o^}7ku3n?;D_dN2mi@T!oFRK@sEFg!(H}L1=d9Koc`}f|Ey}mX#EqZ( zxWSA7%Z%Zj6}4>(ovJbt5(3NJg^SbXuBv+`^);vZg1*E41W8MIX+N#+wEMT7?pnaH zv8wjewTVfVlfYf^IU#CX8$yQP4G8HO<ytq-Y-_*PCM04v<J;HSwj=FDvvVg`Y&dkr zY?7q$GWzDhRX3KuO&u^gpVaf=ko&xY@m-J0J|0<_o}*8Te6Z%{;Tw*V#zu#ZHBW4; zu^yY!qSIc*xi<*xF6s*lUmv01ORCx4&ZVW(8#wYkCvOe+dzFbj+X{cB*T>(i)u|0u zn|#Ra*BNkL)%^La&t@ZO8t(*GCYCQtbbr!0xYv8Tsh(HbNwSA_-SZVj9rp$=a8W~) zsqDs^(g|C`Ji0WceqOsl-oENk1ZR@|%&<!rZ;~?Cw@-Y!eeRGzQ<aoXoW<1>r$)vz zD$giL6ix~MlB%{&ycpkD?(6<)&0)3l+r^59WY!ial=#JDW`B!ybybV8?Hh?Y-SKSb z#N+Sl&%M~{5Y3-9PpDOTz3kz`GsB;B^IYD$xu@}Dj)U>)R0T0Do_cPTD#yk3d+)W7 z_OIbp8g_erz^(f{HTq4{s(p4|1y?^e8>?=1n^+T)9wuYmCE{$fR7OmJ^6o~8b${J0 z;jnX+RP!ZXce2!se+{yZu(KOq>m0k_dnGpJy5PE&EvxM2j{X{(e_dl0#|dT4CH|)? zLJn;2WX(9(uKRtoR8Gq(&vd5U@Y}j-{%>>VWq&SPHRIIGtvhEe`&_5z^{Z{C_v6b~ zG^&kXhG~U9$+gc*kk$6=Z=qZ=d#UzGW}T@>$;*o)Wl7a%zxUSo9Q6J&8QG#BQ}}a5 zRmyv34ujsAR+6#~rFV^Yi?B1eJb88ug*pd>ioWBu>B$RZomUfYy7iWCp=)CO_!d|5 zmkR1q1vXYo-o`v@c$~6G+{0O5vhG{s$shYxGp}kN^(?u--X3S6_96S;xMED;MBkZ2 z-+RL!ZR!2=gXcdU;C#S)u<)`<=f~408FcNEdjs4JAGh+@&`-YX;kOk}Pu39DlHBc6 zO{Od~kKs?}<chWzc-QpPF~(BVVs)M0aqitRErDKhB08OYS4-H`8cXhayy~Z^9><A6 zUrm<j+y)Q-!E2L=n+o&VA6)zpnUXTczd~YX*rAENPR|zjMIMuU+5M(@VW6A5RNi9R zjs~7~=l%u5x@U#gUYT4un%+=vcr0pwk7MS#tTGBEA^d=Oa_5g*A0t9P2XQT*<+w*i zF(CZNanGrix0h07>o2-8#`n>FdS0G2XZbbtAm?nwnYG@rZlARy#V3c{^C|+p-%>fh zpT3aju+Mf}sj#w}vr59ji2K%2A;(?Ck1m<&m#ne>%v+lzdqy)%Ub1c?tvk%Lvne;^ z#mfV0yN+p1N^Y7ZT4k*#%oTs0`;5W8mdxaK7nRcmTRI<q?Av?nUCObUSL^ObHf(t- zSkNT#@XlJhP~XPR5m%*UR@PeGp;L*v(O(1HSwB7Q?N<=}Safmw+7Fgt2AqPURX!HC z_O|OXE~?}eZJ6y93m<-pb`Ph>ijG)aJ|5Jp|I^mrqn`Wmn+z+xTc<CFj-NlH{ZKUY z8N0&MDd(DcYD@k|n#kAuSCN)R!MQ&7j)|`xi9BOE|B^|N*<jwHH71&A#iyd>MW=)~ zMuyej-@RNW8erEEd#EO2{yUys@z3^DJ8-m>xp7|^%M@vUlrg_gsPVfV!+qgA%l5XT zi|(e*<n$R`6z`&BWA>>1=;X6H=6&;_{Gk_1-yG_CXg;3NWo@}*#pu(nr|wj-t-J5? z&CL`0USydhN@+=J&;Rkle8!XGdX<lAipMWV&*pzC_e@<wdm!oV2|+sli+VM_gxN1T zlig_I36%o}oUG?4%Idk&+}Zsp60J`d+OK^z$_jNA<8^e0^uoP_XJ!oxKHBH~CG?j( zRljw!&2wAQ_eEU_DNgc>`to*^26w*6no^3I@Ttmvs-WwqZ1*7MqjBbL$;mGjr6ctc zwkiHMjqbPhKlS?PtR_uwV;_C}cEzvd7vDH}hOtAMBEsjzQwu+oS53}8U$pS<ikZRD zY}pTM_l3u%r<<rIh8M!uY+L=^V$)g@rGhAS(n-6U){k(BUw;0?<hC<6_bJ(^L>kFk znCnT!ik#sqSGgH;(-v{^)bhQsOc?m!V;uCoDAn#vS9kj1hw7&KWAhF^ON$tt{G7bF z^jy)_N1S!lP0mec@2=t5UDDov_1X7J;{1z(HmwV?(tEJlqW8$7j=hQI9|Uz=Z=U<M z_JoRb7we1|%Rs~N&3?%+`@7-BhYHMQ3-u)?mnZbL@6NlB8DC(W+<oAwxw3?2*{2Ct z33>5r0tyF<G}T_6k=lMyy((ss$Gj=C@s#DO8~2^+6L*EJWE*Go4$A-Jxj8fT6OUh; z(LKx0>UN4u7tYMcjGH?BrY77IXRf_=c((j`yk+Fp)83WQCeBX_k9b7&NO!v3$@!7` zUZ>3ImHFa1%R8KAy>l0$x7IP{8GYyIocO?>wEy_4qY?2D>=lld_wQ7G6sk`AY^RV@ zQ#xc^$59m-=xJJS#($;h3G0_(<~BYa<?jm)yM2oEPf8D8;xO0dbdad-7c;BRZ?))F zwhp;jmux3$kNnsj^hnxc=^CypwzK7i&P{ypd7f{wnxe?~H1Ce@h{sCP;n8C^hBwFM zx2K=}mNLYtV)(Rmm^xm^C0Al(^XS-X>oO<rV&=sar&<@<_}}p~3*^aaiu&?JYp|iI zw$Og;^Ao|mrBaM2ttk0`*$Q_y?ccNZu$_nX@?~a60*&`KUc0eC<WR#&{qnSlrrX`e z9!{m+pPIu~ir*?IY3N-MxOYazrjr|0_0p2o%Ia>4(pdY*HTag*+AQ9)X-oFn@J+ma z@cLnZvBZG)(^vKV<DM^5n>*%FXa^g5BF`-D(e}^k+8QXnE=Be5kFg^u&y?kQ->go) zHzd&JvPS#do99}VoTHNSDo#lLcvb1|Xms41qt-{dwlqY0@zwxpuRyLmkM63p+Zqo0 zYYvgFPh^MuXiqs~8hSV(PT(pzoZ@H`BKltB{pImf?@BeRtvTcrw(;pHM42sNe0&vZ zzco++`gm^7<96ID$sxCuf5xnaC9LKFvz$i`TRj+0eJX70A~c^=%ID<X_24hfGnpEh zT=ufFVUv}~KvGqMV$My!B?S%(7(Tl<-dUSEf1rGe^pd33ug1B9LDp752e;qzy1a7h zY9?b`G3wbvR_ueLv;41FdQGgeZx{`4;yvh3`C4ywx$5$zD}7vYdOyVUB2shO_T4(0 zZ{_czcG)Xr?Y;3Fy?ruG<@vNRuANE?BjYwX4CKGP-EmJpHh=J?d7g<twaHh%Ej$yM zCm&bv-iZ7;^pNw3f9#EoYwZ_}6+M5~l{;@;{>33Pt+?64Q)`|yd1i<*a<(qXTAl2a zwRTqSGnc#Xv!lxTzI%KxY4EM-J8pX|`ddyIk8a+fyc26b=$<ptURHXKYoz>>-BDkz z$JZp^>*qS>3%R6q6gU~rAJ9*{cXL~qQhlv^aU9e8$eHIebT7)SEnkye!*;uTE5hcO z{e61K${B*S{LL#j?4xt>i_Mu5-)5y(y=%xXUdbRwmzz`I>-t&z8<i6u1ix0*HYnH} ze_8N!(#nWEjg4(g(U@|1@4J#hF3cm=@6(cdyX~8U&n$jCI98uKRQav6NVLD0qrk;S zWH&2#nEh@2&iy<cuAenGR}W-*4XgI%6hANzPEB>oX`9nN<)*kcT|{;L1Fxq#Z{Mhd zs2Ul%2ed?8X*eI?RcF;WZrRKTER$|OQDYz}&^K&e^g8!~NQ|krxo4bL+e^!JqxwIq zlmc>JaHKmOP%X1RGNW&`h>&8}yWXf+&h;sJ>DIOTKiQjf442(#VY!x#^b4ylY57u| zt6$#TzOrz{ZSvak$$3Jx21|n*Oin(0T(4WM>96{Aowz~f8=B*fJ4v#<?H*?Llu}0T zY!j1tD3_Y_)*+4_lqDoAGH^#i(7wJkYJ6>y_&e<q*PEf*PYNsNM>)tmr*Nk4tXs5B zLBPAEE5)2wRAgJl+F}i7b&I3jjH<NM$(w2ki`7VW=L4U7ZrZ01H{x`xaX?GftLyQe zlN(+%-1%rVcFm~Zt*1?RvTm)&?&BM^4d0iY72Vac*6Z1U$n)T<9}kd{YN76&lKgR3 zWT%rrz5jUjk<&{VwAl+iBY!kzZ;7Axt<8;HS~-7;yK2qjrpJq|I<;mf>os!wP*i?} z@9=zg#)CBbZsfxHAPJWyTa(Wl>kKj`jMIjLhM0<XZG1{-j%_*?>rzz;c8B)Qs93u; zX`H8RIa?+pq1BzdQa)4e(Z`5M&R2C~UNc*I_ZnqOZTY;)JHI?Ib|R{FX{wn37c(h! zcHparwiSDuc61t19t=L6x&B1k{kV+&s?zsSd{iFFlO`kSrp0oB8$U}Aw&aKPES_my zTr{_NEaH*yWZtVD+PMY?$;ro!i8Y26o*$d49<ak5t86Z@$H(0hvZo?fxI6DJskYSI zn*8=rTkXhEpJ2NDl&r6+BttXZIj^vl<K+^g+pI*<z!0}nIbt*O)DtH6FlW6hUOlP8 zGSsO)nVkCO*RJ`UKP4ro>KX-ObrveG=5#f`tj^kECo8ph&8k!CQuSTuDhEfoV;q+i z+?(k@iPQ`JB;mW}>$@zOiZ?Ei?=|Q8&+HNwt{Of3As~O@X=5whuIkkMO=77-A!ffU z8$R!LieBYE%)Az90VQ%{tDjHElV#85uunAKD@l_`)5*(P9PaX}F;+ueJhwxtWLxFI zvzvCSTlVTyY~q`9&eGqE=i2^##);Yo&awq*rqSVBe!Y5AJe1=H-<0XglaY5QGFASW zK2hgb)IR&y{BP%SS6^UmU%xJV-4Lz7gsEejuUPr&aL>4u?+VG!xgq!E=Xre_y}c?a z?*7Y4=}%tS8vF)a<&C_9&oqOhpSBy@h^9|nTWVsv*-XbHeq@0dT`}|LdnwH?5>JH9 zeTJW1IZr8J*gJHyGc+Cz^z~S;nKQ=iCw1|-&^fgTpCVJo<$7|<vzGL?2UX3u-#4T- zqqNACbHc+_c=Zl{MI*k=mX<7!{hhbuimTFI`<t$&H;?3uXykYI2_>q|-7i?4En|Oj z&&N>#<4q$c_e4)QGbZhOj$UsM6`1m@UTVAPq*3ok%r^GEYpn?vw^;F7x;E)OuiiR- zdA4HQBHB-P-qux@zh#fRX_*xU?$Cc#-LdY0eCInIu{q}Ut&g-GNQFy0kA2^jvQy)k zW`=n{M~{Ex_l0S(J5Cg6gtPbQKA2~J)2H+El^ON>BVsL$?_XW<$*y?b4b>3s2ZOst zHO@aTOdb|k%r_n?Xv{Gb94s*D>`_usrmT{j5D>CW@2Eqq^nQ=~B`?e}jf?ASca(lE zhzLD<#pIsjtYCG~_x0-9QIpym0*b6J$n}w9s(8Y}?YDEJTE1|ewfN!YJWrR!uXVRp zw^UVmhO^icBD=RZu1<23&NH@l_l=BFv>X|I=rFT#NlN&e45q!o**n7WCh9}UWxTss zq8oW^I8ON-RW3TpX<%nA+%TWauA6a$D_}9d6m3CPWY*pr4Ix!^BdK~kD{7Z-Js7+v zT>QIg_|T!34ZPQT)Ge8jbvknd-4mSNlMMH6<=c}|H#1{taBIRbM(nCRd%|tn1izPm zU;Hv{Y{)gOuIr57_UzKP&7N9HG6(r`EW4tNX6Xq8-CWt~Ga?&VEGfYGe!sI(GS|hM zP5pa2lP5ARM0@DY-B$dIt-jhWR)e`|{`Jff;Z~+nkY(Vi#1$E`=A7$nIZUr#R(K<* zE_}VfnSA~Ix5cw3E0b=|JXu>Us9m3GbtmO(LtE|JV}AD@9CxwnKKnl2hx?Uhe9INb z57kxPrCA=Yr?QS~JTSFg9>g(}#7bT_e!0?h`>gM)svpew`Nd(kq9A?lm|msu&j90w z$Ni==_emXk|McgQP!DZ`2YrqLvv)LeZNL7=bG>4`Va;|?Zl#gDFp;d9R|T^0PkfkX zheoeCYG9t!V<CCwbbso>wPCs8k&%1D*d=#qoDUA<?#h+pbxZaWJe-+ksd}vB-ZdkY z#2yN*?n6mZ)vdHo=bTj~BxgzI@>ka7wl9`=a-oG+S;bRGE1$_Js{NJMc&NuvFq^6+ zvc;a^^!QQ^G?kQ`e^dPNq38GJ%A{`L-8lv6KUPQg4TnlwM@!zHD=a1N5MQxIqg{#h z%hO+s<50z~>Lsp}3zr9K3Z#X3DB*$SJ(Sm)eiGjue}wHwJ$rds|B=+Px=PW5%A279 znq|^iC-Zg2qb=d{i-mf!-`gbbSUojn(&TVK<n6B+`vqU_)o)umU>9g~Lm(nvNlb6) zz;YeUEXBC@UissF^KQol6t?TUox1AYS#~wr)9{<1!Dl7u$p_Mh=O_M9;k<KA%TSAa zOXg_f{!UGUYaF_TRqmqug8CYp)%ufm?(OeW%R4=XzHe~h=8jZGEbF;|>c$DBvqEq9 zToSUM3~m|DS`anskU&@ay)V66FT`Fjt;yHkHKEkka?2>sxvRG+;VbjYl6JFiycH4_ z{9l*yT`@3sFOqt(M4Tz9x6OT9$sM0qAAtd9zwBbehg`d@-By2yI5aO`WW319{N+QJ zvKQSeg+p~BjI?KnF1!-^GTh-V^z}sFxEnq7^NsV}Urys0B~K46I=`E5rDUzY^?{!E zoTGUSSvDs<KIUnQS<ag<vsoc@%Kx6BjMCyGl~oh=*>9taBKl{RS5o)%9p>MdyU+Uk zEt7Eik6d*=wQRq$yH4w8U-&M5d%2;klf@B@m5XO@9G!aB<Csxqnr7K}I#Z)Qz)vmM z!?m2dUEX-++4HpA%k?5Nk|IP^NIhiXWvgQ~MoO!>t+fRdHi^xz>j_W$=_>n)ejrnJ zAdw^Env8DDveu;{uN;qrCnX=1?KY2*yQU<hR$A%TBlfz%$F^jH?y}ok*VgR1Gpb@r zX<2nLSbp#3B-!4EZdK+QVM>vKz<wu}o)4$W<{m7MQ(XU)V~NVTh_HqEKU@Q6C8%DO z|Cx})qqp<@!Fln6-&|Tx&78lMS&+qb<Rb5-m`bC0KJH&h;R_^>hrg&j@F3ubQG=dc z<Q6^Cgr#H7gJ)-Mj1rx5llm#Cv24kry>|}}I%wTaawuG{(#ts3DiOV1z4epNL8;p& zbKZ_dE-dO)>0Y_OiW&RR;Y;r$o5Wy`g!~gzn-?apPxLozv*S@%dT>d_71w*-gNmE# z*Im$G;LucaC{p)kP|iw;Btici-lHAE>q6tsuIP8va5=(sdBfRc^Qts1=Q?vmuc6&@ zdskVBWseu$=H3+1HP&TSr}N;$+EqRa_hxM>)?6SIacSFGJ?*&mbj62boE|X?O|H$N zc6qEgZ`khjQCO>>arOAu7t92^{b9#kJWp|cS$yc)*z8@<K^8q{Pi@%w;)RnPnG4*@ zj||t^ZIr&~BfZ;<)*srV#l5m$xBu>g(*rkFQlIA?{n799FyF+5yO6s>-Tlb^7LRpr zzJ{ODj+d|~9}C-35ESDbHP_;Pl*>*N&7Z9^>cVm*>EeP5ZMBM5+#k&B$iAq*{0#R) zv-R}~!cuGbLUu3b^ek#0Pkmv&ZO?<DfhXVY#xe6BuK#dHm#t-Gl-(Y+LP*Y4J80Qx zeWt$aLDRuQAG{m(TdO)Zx$mx?TqM>V4Y$xzUBt4pQlm@SX2?0TobpWJef+Sb)f_(f zu3fGb?&3m?ojWSJT-4}n<-M%T*tD3Rvla8MlKbk<#&mpiW%u6hKfwK>N@zHaK0k-A zTkopR@@1ml;}J@So*4`dZkf`b6f3_!k@D#3&To(T6oS`pT>kO2_jpO$t*qw66Q32- zHW|EQtEsLz&wb1EM1R$y_{5?q&Fn{u(wu%Bc&_MMyoRmjn-sJ9`j(mMUe|BS4hp}% zk|(ZeIh!JCX(v?|vGdEqT?c0ADsAJkHHdZVU1>9K>D+;kb9H*w24P$5<8S3MJJn-z zrm{8s6?<Cik4Ly%vC=n+>nP(+ZR47|G`y9sb>8`55ANac-jlZO+%ieu1QxP&Y~Y{q zwU3w-zG%RIjL+`=lB;{ykwWflch%pJVJC8KQ9z5)ea)B4md}{&8^5X6rBg|J{;IG` z`_e*0s*|;nj$Y5C3#OW@@SQYka#<s5xZia$%>IT{?y45;cFn7iuAh0HS@vA2VkkMy zXe+oI)X_~F9MrkqbJO&bwdtxI!E_4!)%I(zoyLV!=B+ljFs$H?4Vr4F9ML)>n3sEh z<AU<arKfVA`e)7vvk~l0%+<18cd?w4>#fIL{TzRj{gawasY6}IR$aSOO81=NT|wI^ zYB0J}iA#DXJ<l|4nM}gquiWZ68*Z8x9d5eRKfBTCe5>)vhIEA*4fEEn9Bux~nd(Z_ zYT;2i6D@(~dDQNlD9BmZ&dVF8w%gjM?ZWN5?}r<Q1=hA|Ne9z-_~tm~M_AlXEUC2E z@$22~quYK)xhb4cNzgTxl~<oZPwnu!FL&gA!HwaIMs6C3AvI4_1a*x<kLoD>e5Sr9 zXtRUv?HvJ+tSb#Cb!{m_JB9O=BkV}a!fTUjdM^*vZlCNb?J=r${+M#&(L3?zZ_*<b z6=a<m&uxRQ-`t{Q=KM9lC}Uu`0dG6cMbhHNMw+4DPASJXsZsCt`BgZD8e3DpHjG_; z8(%YNv445M;|-fsdiL#F5t$<G`e5a|rw92`K3ERfj>m<R7?2ZAzS9x0elhN>Bb?Dy zP1i8=Ghv;X>d*_xICG=x9^+NWarRa3l@gML2TZl(dqPCb?$NfBeY>v9Yrk1=C0I{p zP-a%p8;!#C-ri|lk%<G3gCa%vT~5*Ncz@0l4lmtrlRIg5w>)Ok)%-Ui=Vb?aXFset z(7(mfxn;AIwbjj^-xZvzW*Hq(uYXy7Y@;>Hu15d-L8JWJ+xP{K_|wjfynnU3%1X@e z^CrFKDyc4G`$(hO(k)b#zVmtU{!3|{Mz-pk-@Sk4(f%r`AnB0I8Nqd`M|bTOQ$E_2 z#xZ-v&3Rjggxm);ElzR2;Mm>TN<O2w*;H23Y)+hH(e0NXvqqkYy9IDGA2?k+R<J#D z+m48|hO&i>vb(nhye@BlBeD1rv*2u6v$<dT*O!;tA6gVC<?9L+J^m^c%D(?5@Mh?% z#V>Bk#5Hb>Gg&Ap&}qK(dFT2()jW&slTEz72Ir1Bzmppbkruljm#=(0ucp%N>e~Z* zt$xg&<M~ZUOf>FWS0B&SZ#6ef!?=%4JWE}3{)xeIXWKPPyBpUF9hX^`o~Kk9{~>Lg zo^Fj4Pw%kaq3i=C<xlLt#4YN0F))8dvGHljMxOA(w8Ji5xl2b1@7`kh@M&M1C_VQ4 zREGGVM%UoOgReB?KJL}aIc4ycx*@8Iq_N;@@r6$_tIKS|dhRN&`aTtNXn(9}sNMZA z|E$GdGFt+Uue2(NU1#c%da`jvpQi8C6Jnfnp}Leou}+hFI)_&3^_Lfa$*(^8I+vc6 z`0Sf($Lm+iqr9b#2bf;jsadXV+`TgC>T!34DDt!Hj+G+`5`7O=9?0YRq-@Wql6I#W z(#KZvC&sr~)Hm9Yb01$1YMEJ^`f%)H@z0Nmi+9ZBRTS4-98BR;l3CHUGgN-vV56|i zR*n9zXWu<4Hdz;?YhcW$TJQd2X<&?vmwW849QrZ&xyt6g8=6%<TT^7DIL|rAgk18v z_2f?fsZt&<fwXn2ybHVgmtTDPc=3SVjkA^7SIu;V1!z7W{hpmu3=`Neb&)2RmAth1 zP@>vh_E&}TOOBhUzLVps+4MRoFtI{^-l-2~?;2HmMki|+-i%2}YkHMFnx+Q-D%)7c zaV2-pA6EJ#ZJnFZ*Bushtje07YooDdOI)(c=78hPA#01c*<m%}-_<(fU+|}S>q#tm zD^d_%X8mDaq+{}7kt*rq{^Wtti+6Y*GNdIUY>)H5eNARcy$lc(zHs=P?2RqFm%gS1 zHI=`q^3Qx~<GpqD28!mE+e$jmD4zzpqq(-Tr0!gOnl3$|UZff4V|q4a-sSHSZu6eB zvG@3d4Q@U1A!VMaS4Hk*0Ovh#L)ScU?`1wmHg=ram{6s<e75$_3{MVEo4NymqrziP zjJrIp-l_e3PK)z_`p4eE&7~HOw#LbuneWz=KNUNa&(>U25iHP?f0;e7d|l#6=^vIo z4XGT4Rr2On-phOC+N?O<%zxsNh^nJr@*>5V@}VI?FHe1bd{A6S`+jGAPt@M1?6uwZ z<94jJoa=L1E;%7vB(O=RGB&|tK~0yAlE&<G#RQk={4S+#d9f7+dV7jGR=#yfZaHmZ zQhNL9#ng&8_lxWWirt=hm0y$=o=~uOtlg~1QzIF`7aAz7kr^gUez;vK(<rr!y}`kb zFWJ&7d}yjL$^Nm;&3QX0n${vwa)(b%)Lh@iA^Sqen=f_8oG(fh6~hOW!`|I{v{WnG z*x<9+xw6#)t-4vgwfkC%b7Q}F_DI`1pS^i*Mb6oyW|pTKYH!(im!FPlZ9M37*7=cG zc8tg7r?-ynD;v__i<who_bF@vtx}xQw0|@EQ_7m9E)rgqekU$`-#;pPQ_sd;{LQKt z`9ANyDyDFLXxaPZ>CRQnOWxfUeQf<G@#5+|H;iR9-h>D~k{c>M6C(KQRn$!XQ&$D9 zpWEKNSF1zfgi1`(iRFGa)}7^k;k?ZsysjT)HY#@g+O{a&>DoS$*f!foWztt?%&>pP z(5NW&)8}5f*2?ti-t0-aT^>pLm+fwSx=?fdI5k5dj$bz3wf%8H!s&<1b5bdE%XHC0 zoz_n0<2dWpHKQHkrCb+ZkCt8XXz=Q;V}<L*#HG7t`A-`9I+>9DPU>u6t)9Dq)oCiQ zJteMleTS6(-b~9E%~A?GW>s8zkz49o%FL+yrWh-Gy}>JZr6~ENuXnS)a8>39^^$#e zj?8+_rp{>PQym*^Kk=+MYV6VWWefS;Z!F=YSMa)eUh+uZ;cabFBDaR60RO=DNY$Cn zIf*^uA6Lxw-hZa__(J#>DSml{<+eW;`Blyp`u;}f&w*9D=I2IlHcIT<viO4N_(Kb~ zoLyouSF5BBp6Zz|{HCCAAZ8*iaeX^^J^yN*U(E$BH=aKa;{6~v*Wqyd{7b$9zO0nH z3QE6zo?5c(?y)`_b*Cx*l669c^HzzBE0@&rA77U-|H}bg_hIjKTy$!1@x}wCDGuzH z?@tE4sJJ;>uX;~>>jRhd2D5EE_N822yg`TCSS#OcZr>J}8dK-qzB$KIw}oB3QGG|H znV(hc8<wgvG~48b$@x~{eawYNf~OwQf;zOsHtq~rPOWe2FXj`yo%M>cZ&iA-_@Lo) ztJRk@rB!WSCsPk6xCv_6M$ffi81Dc1W9e(_>a#)|iVa*kj(in4FN60l<l5u*QiyqF zY@#KHd!*HD{g)MHaulAx^%=gmLa!veJG<3;i_nWFYeiIF-hRAtbN_>|OAA6j6<!cY z&k$Q+GwHp1bC9gp_mdol+Kwb%9KOW2W8z*>QsKI&;^#%`XVq?|pWWD+aiK<i`5|7X z;5;s&AD6D$Nd0WT_kEvl!Wre~A2gCe4kT(VXy%JfKB*9!Mzub*XHd5E-6w&^avQ8N z0}p3vN0>`#E&F&Pd|`T|V#IP!Io%7H%fIAyST(4x@R)s|Q==~V^jnL{A2Fr|m4c^h z-l)btx^d^YlS%ha$);lVC!xkOiPt@)8d;v*53e0)d*)jBYO;5|8)xHYnY^OXW#2B8 zHVybKc<IDuxR;aa&#&2=Ea0BF_p;P7@6yz_ehKt~hEEbz^*SL9UpgXcenjv3CC9O^ z(1fR7BIY^Q*EGLh^Y1q{&&1mHiSA}-cK-ir+owT`yNP39kdC`!fHau`4YB|9?Guf{ z)B5(Uv~;WtOp(5QQx|6stZ$#__qE{uZ(}y`^WQ7|yKkQj{q+Cp+b4efZ{I$N{ntDH z>f8SxCjMjJKA8qD`=@cA0bc|_8~3TSzZ>@%q(3+AyYKXKckv-Q^*wx@mBU;De3gBn zfj%hIS2@T%zy*5TeS-s(T|Givlmk6>C<nTPz-X7>t^EJ$w0H3jcJx-B-ephp*#Eb~ z{;&ReqPzb8)IJ}e9H<<m9IPCo9ICuSd8cyNzgyvne&>HvoXsYV?{_Oa(HBiLsQ=%! zrW5Vf#1p^AGl~Ba|0CMDiT3h;TFHr4b)wB2TE1aCG@}#Gk$#W)r{x^}ju`XT)4v<j z;i<oV`rkBk6E7hK{_aNq&!5C%{>F(8^WQ(i-x2?x=*uU@|NZxW^|2Gn`Fj-cH)t>V zKTYB^V#$B=rPWS9_(X)6qnk@0Fs5&?PmnZpi<=RjWeAdHv;SggWn&NLKxzBmpR|ys z{gx1DPXGOP(quC6It%#o_s1~^X(E2!{4Y5mGYE40zsyL6UH*Rg?{kGo*nj;@A^o)$ z3i<c9GNhTT-+%slQs&=ZMfjJZn6^z2`af@z$^L6cY{u`&{{7Ow2=YJdgiPc953znz z8CLvz?-tU3EoT~8*zA9|>;H8SI*vh(-o9?c(%?k?Ie`D_6!vcl{JjFR0AJ@|Czk+e zc|T`Y7b_PVMY0lw><A*F6X4<)<O_cR;NL%b`1<HN2DwPf>#9&lBsPggf<vRSDRe~= zQ;tNEgK=h7dNxY>!QS569DRI<_gcAo1WLp2|Ga;-w6#k>AiPMLszj!d>1@hhGb&P) zDAMv9UA9qlq?t-|C7Ob?m!D&hd!UP>bjUwX(3Kbp|Kf`s0WPlG@D&j@lN-J!@}FPQ z3_6`kmv)u@4@P5=fzgOx(mwxSOcH#&WjY2wAs8GMn*^Nq?{RD<8{Us#Y#Nh_jbqV4 zo~A!bXHh7~TG&h$jRNd4Z4NqsASBZ<2L3Fa$zTDCO&>>R(LlLO$EY+aK90dg*G#AW z7RKq%lIe8peH1nw-3Oh-CS+*Zvotoa2ZGVz^ARXrXiOFbeU{3kkkEN)Oa^>DX8Igd z29r>h)8?g8Nf=$IaBS$BsT2knwCT@MC`>AP9#jgAfu1>q%x0l`BQdEobZ-<g3)=^Y z!6v>0^zSvZ*enJUT_1_TBt(4rI0lW-Y11(pMtc^UL1Ck`VuR90<{*(t6hck?`+X!j zup~kQ7)M6=fJCB`$OsK!6pe(w5411|IbRsZpn(paHZNdId>jisHxijaLirgmD)GIP z>F;AOsMz}$Z1j9dWG0zV+0&n8(&*T;OeV?)Bsg9Ma^`?hK?5Q0V=?I1epzf9KJK^K zn7$TZ4s?AK65&`(pMwHA8KpgiOl6{HL?JU!okIdXWg@abV5p8DQK&48et;2<(zG>G z=pev2Mp(7!<Cqk}T|zNbcakV9CdM0p5!P(lvs4m^a3D|&<25SCFS=hUusw!RF<B*1 zslQF{^f~Bc!k0iXjQ<FIh3*$HjHXl;g|Ph7-^U`poP}akY|S(V7!_n3oyw-6v;qv{ zA;4IO-T-}o*+v4x)(jXOT_0dfY%Mer;g3z*8=XeRbO~ToRHgw#^&hN-OgPlj-^U_h zw5Nj;h0%Zp#&P<yAeCfveJuEe>P{F(qN00a&={x<Ac4xJ;_D-$w1+9cav^JB(a9)H zVH_FLIZW`T(6unhIBzg$zdgxmv;wV$$sl~14W%D2I0Lm6WN_C}dro4)hEbi!gl(Ym z!6N<kyQi&%MPj3Ni^L+6FntOb##byd1=FX1p>zfh1oKM>uLOS|C<KHzNW>B07!#ub zi^{}wB4C(~Wm7;fr=K|qXirA%0!SsMH`r`Y(de^m5@x4i9O_2^l_{t%MPR5MBqB~W za+ZK$`VZU#3MyNGQPH&khWUB~hWe}ohVnS@8kvRAh2THb=8=J-sNMkQg@M11iTQ-^ zK1_~SERbo0ci}X^_)MogjH98t69|R*G{BK0)Sd%IL3sl(aAc>?L0~A414bv~<3RJG z&oZ$%fJ|XwG6NWR+UT?3f*^cK25v!pE&@Y+BmzVIaX2F?#%pkHs4q{Z!G00i1BS&U z1cvfBU<_101I8kuJOmgTe~@WRCIyjmGL1#Y-^XI2F%FDl;TW5O`Y-UkJj_Q23_KHr z_Q1QCYypPRg+a%81H4WmE%k353$lRu)ZhXGii`uBg7E>6o`TSiLIQh<*d8*F4~>t& zqX7qD`W)bKQHjLQwDp0O#AJa9CJ)^Q=xpp+78TN%$ol}pXb*ZElOw=TTLGF0Bo2Ka z$T`ZBpd--z!n2rvMPMkMfd&-R_7E7lU$FWt7P2>>JqgE1nC+&ssWepQ0LDOlDFQ?1 z1&oFIqI3{dl+J)bMrb;%0Ar%Q4+ts=)!BeiQF#LllW71TkV5AG@j&Q8hcpcu2LQ%G z^$VR1?l^LmfDyUSX*>xS6JIkEiy`Q2(5Hwj00s&geIJBY*gn`0Iill$fcQ8p7Gl6^ zQGWw4(16q52N)BzwG1K&fY1OiDymNb!}3iG5}03v_JC1Q8UO|c4qXf6kr15&kv$k- zbQ~2jQy9iX{U$I_WR#|WL2!URONR|(7#MjBW1+b|u-p((qvIfzfzg@4L~S=DK|tG~ z&qC;jV{}ws!Ly*W(PvqhUSp70G&Iiu7$m09XK_2tfT#?WX}~ZY0T>obGJv9}e+n2K zl`X(nsLp|E2N~mCfY5jq#(^V??1N0f>=pwY7*yWi)W{hBL3D}g9O88Gwa`cyKa*)x zjEBIv!1xq)hQ<aAG93Z|bRUo}LC*;CTo_+L<U&DZhRncXP6n7uOcuy61@<hHj{0E? zGK7ezyn$xI#}R=jx(^m;R1{-_i;7`bE`veF{dT~xJUU=Z)b9k0g~ln6<bu=yGA~qq zFdl*^50iZgq%u%m167CSXkiX4pA8sT0d!tSZ=h#RAv|Mj91ZnL7!;_JpyvjaD~!h> zCynVGB0NI%3xw=wya3e&EKdj+9pg2K@=zNE<5;MT2kdt(_1}ISg95%8whug>hH;p$ z0vL!5N-Gc}jDAp$!stwVvl@LCL?0gq4`bu#sGrTC&_I!6<8WI6<zq}IQs`vVe_>F- z_rcx=(_-tRWAO|;i{(%NV`KUXJR~;uJ{XDZ7kqSl9G!uW11BA&0fUA5v0(IZ-vT0C z{5+Uc{5+TtA)#|XatWK4$-;Co1xhEF{DS+3=>v#L@NqOu7lTPb<9!C?pE0{if$SXi zK0Ho_>I`TxbZ=}bW_!RzLSrU)mVx<P5J}?l0hLjduOK6c$p=_6>^!J=3<22)sMjKE zrh-3-?t=<-2y7fU1K2o7=-}h97z~Um6|F;nAOQ8zwSd5(w5NhF;N!q>Vb5Z<UIrCv z9jM&`4D(;$)G)mZ7-sjWpgB<e2N;@%gQ68!E_8ix9Rpi43#=464r<I8#)hgUIu4SI zC<f_l%yt8YojGJDG1}9>S;5{1i7C|ffTxVsqZl;s?@_q~471%d8Wie~eE>$qFmRty zzJh8V8rOm%feQ@i`<RfBKr!&Mv3;<x8UZ+ASPV;Gn6Cm7joE!V1QzI-L&h9CBf!uc z1w^_~ia^#(2L*#+U<XlJLG1*S8Mr`!@e5%1S{S&0PbXG`t_AA*C{Gf1954)AI8@$% zQkahkfhe{<z%bbYXP$-9fB|U>41-z+x@Hhn%zhApiSjsL7+v7dF?|3SMi<cHnCt_F zoe=~4c5KZ|$fhB5hO!@~PXR-7mXHVs>Z8wsxkNE0=ysGR0Yh^^P|?J4;RJ^H;}Ghi z`9z}fiRou3y<;?B(s218()TD20fyx~Kw>ca0as@**@tU+7@Yyb=nSDaP8Z1eqO@W` zxR25lFf8W*H7d032dn#i`EZ*545=l24lpU$ykJyN{Rfr|t#blvfMP@V05HrCW6{A` zLB~N>5X1hUPg#G^r$pF@%?kw;j8-rOs&|RvEQ&$N3-hUoG8n2$*ia@$=>jP?%vXW5 zJZ3)t!|Wg|50f`y$=Do_Z$kN$O~+$mHiL@!NPuB+0EE9-4914E1*#9=RuFbZfMGnu zhLS77LlEF#cOl?(vAahEhRQT}{7?m-&MyRp$|Z0H#(xBc@*fk@NT@y~Fx0<-1TA() zj=)fv1{Fp@bE*V}<~t#QM@8dg0z+vEmkGgHLHEn1Vsrs6K=lx0pCMg^JPU<()W3pD zZrD9CqP&mBWdw%uIFxbVQX4u44XZCe2?&@H9S4RVdls}dBCAlIVWN5s0z@Y2X9I@G z+iz2W_*}$|ENm^1yFvX^@RTX2Trw#{l@HkmV5m(2kD7t4889@?gF+xC(_oRIa*xgd z$BW1ySZVCO8E_w#UxR8H6#3Bifv}?cfa67VF<d^y?glU+ONi#&hzJ|iyAZ%)d1@wT zAvFGFQbBxC9*5Uq=L@AG)b@Z9g2V-~H>d=n{yh`o3e=u6X%sr@Z$K3r%a21s5DXGJ z2i!YEY!tW=kn}*uflGtxD;k({#703j0`rkT>%xsG<b7~u2es!+sG6ej8x!s+W4ewG z0S$WQKq=I}XTtSKv>w2u!)j1Dg6qI&E(kKdpk$FXL*WJW*MKTm&X);^IPA<JP)2<? z$kIThjLty^&POpKLxf@=4d{75))BSSOb{(hKZBt`{dOoPW4;swh*+J8NeB`ugTR!S zoCBFrpAc?_0z)JFfCZxQ3}{4LuQ6Fr{Y0OIM^ReA-6+&{gM!8K7U1N7r-Qr?GPIbk z178oltHy*;sBa4%Fc?Dgec&r&bAY-+&m77D*qO7z*rI0+m3&Oj;ffOK`#=zn-2sO} zAYA@H)(0vF&7r_$QC!a9b|>nuK~)!o3w<9vjOcc7<>An$kAu_2>Q-RzFgb_YiCCOW zVCZ?Uphkt(90&~cRRDv;GO`xHQ2j!TLuo}|sQ(8TMAX>(Fx^g!L*ohpLv00tp)w5^ zxLw#BApAJ?2fAQ)>4^8Cz5rnG8+#uMy-!GtL-TqBhVmbQp>Z-`Y?Pk~46S1m7-|Oz z49!tM!wLk6=$dI*9-SD6@+pC#`jo&>zY{RH>W0lhMtwbE9BQWt4E3K04Apgj{qC>& zcMMBls9hj1RId>jYG(k$YUKom`YHs5`Vj<%#vcTR`q_X1u`s&8#5ji5--u_?xRJn6 zzXUKk>L(HynrkL7G#(@{RG$Kd={f>K{S5*`eE|Z)^crBOZvo@}Agi!loK{#}l6dwH zbiwkmFb;lWbjEV<#JE4u1@o1Oai~uN80LEu*dOS^{sUduI9(t%#dH`Rn?i90yPrc~ zXgot;IKMz|0Y(=(Xl;~M;CSL|!S2Sx9Aum>a9s-HaXRKB!Lx9Y2b&ka>qof2_?n>_ zgFOqyUK~T?6quKa`WArwL00L1kW~mPFk1%oReT?RkX49@@qG{-hJ;%Cr>79sLUhz( z7;Znn{9^VELL5wvz`@7Q1M`t!Ubwu9%?oK19K-b_9Wt%>I9yNSHD;I>%SR9xt`F!~ zZxAu=4}8zUZ8yZz_&%VZf~^^D3gQ@=e}Q?SAc~FyHwQZpA{fHQ;Wi3#^%!44ni@L~ zNbz9%fI<Ye4{%SheK6o6Jhm1Ju5-XO!}kGM3jA5zKOm~n*f_W_g=4sX069y1A8?5Z ze-`%-p#2g*53Cjg*<!2~Ltwbi3iT*_AJ{!mcovidwmz&kk{E~Ud!lHAJ&WCKglDlB zg22$2j=<1bAYfQeD}kYL3W1?<BZ1-Z!XNrb;VLH{FF>4!p9dB<Li-Fj0|*VE&k&6- zA-Rk7hk}vD<0G&rn9YMbPpGd9y%gA;PgpRPM*<AOY-D{@h?G&D1PrqQL<oUBO9bBN z``}SjKA;?c`Qs1<U@{Ha5=>_kEq17^f_smx8Qgn}51@pL$vIR>Fg*@6dVF4R1+aPH zq87Se;u<_EGmt_?@2e2iM$C3Yz7C6VXpmY$Wfd}2m@bCA9zHLgw}4_YND^{JG&)u% zfpHMFqvPOaDa!ZYDr0tr2J(ij87d4YzYtg6QC<TV7_$qY!7#fIE5_mg$VFmu4z4XG zgG7lL+XtkKQ2k6}WA!{R(s08Lp$oXI*u2ockIf72DK;;-qL>c?T}qgb30YB0=YZRZ z*%U|}V!9JtOw2aIH3fWL;zA9&H{!AjhT*mhv=!#7K$ZscMd|omKe!Nx^<zVl0V*`; zyu?i-48wCRP}#=p7Px;HuhGGzU}p(cAZ!k(+Ta)@+|ji_#RA8$JF^g!VfQTn!~JZ) zFkcUH*O)zr?^|H9N__JIUo%$2fO)araKLbz2POrR55O>A8CHk+Lx5qrm=1+|?0g}@ z#4+4o1NRv}qd({aI;5|#^ME`*D(9eeu^1LS8uZR57<ef7pl1&KlK7gTc@7%~2ZCex z8L^=7jE#fORA3mM4+Am6&j?xpur;&soEF?z#CZtr!(sb?G99)LDEr|USW$G%aBm&Q zK#O7Hpt^%$SpFHVTfikMY#eqM2gYHwe88|?S^~q*i0Dkk=D@yn097!o)<IyHJ%=y~ z;~~JXGlG@|jE5lH!p;aVjEBIIVP^yw#zT;m$IggoxkYIY7<NWb^~2;GFig%N^uu@v zFig&&0*UbuV3?dk*og5EVAvUftAg<mV3?dk$cga~VE7q<pNPr=ac>UCu$nqF1!Dcq zfPsca_zE!mjKK6@=K%r3A26JUpx%wj2V_ui9s>5m_5tbum1$_$z|V;C`-5cDay*bx z#m@+uDX=vIgkw~khbT}4LTLq$;%mn4eL<BSoLlT!u>1%HWjZWh2N+uaCE_y7ZvqU< zTR>2U`CLTMiS8FhVR678`eETF9d=)y_|yh==0wXf>Qh5&B(`SgLB(=&P`bn7OTaLl z2;I8q-iT5qn$rU70T=A1(-|xU=5xUfAh<-2j$>doTu=sBT@o;?1`b!opum8<4{q$B zIWj0FWAzULL+b%x0I=RyqHK!A-Qd%p@&;X5*xe)eHX0e_aj-JjogKii`=Wqh_6REA z)4n?s6yWIL?GnJPrpB#o=@I7g`@?U_7QVj3hX#Q+h|g{s`ndYSPoRN*|D-EzuLj>V z)752=^>xARBpQ@S+GH(ly1qWtepnQJlKvX$|ML*y8-Cn@L5=}IzrQ&L69Cn@SFF%m Iuh0Fz09WF-JOBUy diff --git a/public/pdfjs/web/debugger.js b/public/pdfjs/web/debugger.js deleted file mode 100644 index 046fd34a..00000000 --- a/public/pdfjs/web/debugger.js +++ /dev/null @@ -1,620 +0,0 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ -/* Copyright 2012 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. - */ -/* globals PDFJS */ - -'use strict'; - -var FontInspector = (function FontInspectorClosure() { - var fonts; - var active = false; - var fontAttribute = 'data-font-name'; - function removeSelection() { - var divs = document.querySelectorAll('div[' + fontAttribute + ']'); - for (var i = 0, ii = divs.length; i < ii; ++i) { - var div = divs[i]; - div.className = ''; - } - } - function resetSelection() { - var divs = document.querySelectorAll('div[' + fontAttribute + ']'); - for (var i = 0, ii = divs.length; i < ii; ++i) { - var div = divs[i]; - div.className = 'debuggerHideText'; - } - } - function selectFont(fontName, show) { - var divs = document.querySelectorAll('div[' + fontAttribute + '=' + - fontName + ']'); - for (var i = 0, ii = divs.length; i < ii; ++i) { - var div = divs[i]; - div.className = show ? 'debuggerShowText' : 'debuggerHideText'; - } - } - function textLayerClick(e) { - if (!e.target.dataset.fontName || - e.target.tagName.toUpperCase() !== 'DIV') { - return; - } - var fontName = e.target.dataset.fontName; - var selects = document.getElementsByTagName('input'); - for (var i = 0; i < selects.length; ++i) { - var select = selects[i]; - if (select.dataset.fontName !== fontName) { - continue; - } - select.checked = !select.checked; - selectFont(fontName, select.checked); - select.scrollIntoView(); - } - } - return { - // Properties/functions needed by PDFBug. - id: 'FontInspector', - name: 'Font Inspector', - panel: null, - manager: null, - init: function init() { - var panel = this.panel; - panel.setAttribute('style', 'padding: 5px;'); - var tmp = document.createElement('button'); - tmp.addEventListener('click', resetSelection); - tmp.textContent = 'Refresh'; - panel.appendChild(tmp); - - fonts = document.createElement('div'); - panel.appendChild(fonts); - }, - cleanup: function cleanup() { - fonts.textContent = ''; - }, - enabled: false, - get active() { - return active; - }, - set active(value) { - active = value; - if (active) { - document.body.addEventListener('click', textLayerClick, true); - resetSelection(); - } else { - document.body.removeEventListener('click', textLayerClick, true); - removeSelection(); - } - }, - // FontInspector specific functions. - fontAdded: function fontAdded(fontObj, url) { - function properties(obj, list) { - var moreInfo = document.createElement('table'); - for (var i = 0; i < list.length; i++) { - var tr = document.createElement('tr'); - var td1 = document.createElement('td'); - td1.textContent = list[i]; - tr.appendChild(td1); - var td2 = document.createElement('td'); - td2.textContent = obj[list[i]].toString(); - tr.appendChild(td2); - moreInfo.appendChild(tr); - } - return moreInfo; - } - var moreInfo = properties(fontObj, ['name', 'type']); - var fontName = fontObj.loadedName; - var font = document.createElement('div'); - var name = document.createElement('span'); - name.textContent = fontName; - var download = document.createElement('a'); - if (url) { - url = /url\(['"]?([^\)"']+)/.exec(url); - download.href = url[1]; - } else if (fontObj.data) { - url = URL.createObjectURL(new Blob([fontObj.data], { - type: fontObj.mimeType - })); - download.href = url; - } - download.textContent = 'Download'; - var logIt = document.createElement('a'); - logIt.href = ''; - logIt.textContent = 'Log'; - logIt.addEventListener('click', function(event) { - event.preventDefault(); - console.log(fontObj); - }); - var select = document.createElement('input'); - select.setAttribute('type', 'checkbox'); - select.dataset.fontName = fontName; - select.addEventListener('click', (function(select, fontName) { - return (function() { - selectFont(fontName, select.checked); - }); - })(select, fontName)); - font.appendChild(select); - font.appendChild(name); - font.appendChild(document.createTextNode(' ')); - font.appendChild(download); - font.appendChild(document.createTextNode(' ')); - font.appendChild(logIt); - font.appendChild(moreInfo); - fonts.appendChild(font); - // Somewhat of a hack, should probably add a hook for when the text layer - // is done rendering. - setTimeout(function() { - if (this.active) { - resetSelection(); - } - }.bind(this), 2000); - } - }; -})(); - -// Manages all the page steppers. -var StepperManager = (function StepperManagerClosure() { - var steppers = []; - var stepperDiv = null; - var stepperControls = null; - var stepperChooser = null; - var breakPoints = {}; - return { - // Properties/functions needed by PDFBug. - id: 'Stepper', - name: 'Stepper', - panel: null, - manager: null, - init: function init() { - var self = this; - this.panel.setAttribute('style', 'padding: 5px;'); - stepperControls = document.createElement('div'); - stepperChooser = document.createElement('select'); - stepperChooser.addEventListener('change', function(event) { - self.selectStepper(this.value); - }); - stepperControls.appendChild(stepperChooser); - stepperDiv = document.createElement('div'); - this.panel.appendChild(stepperControls); - this.panel.appendChild(stepperDiv); - if (sessionStorage.getItem('pdfjsBreakPoints')) { - breakPoints = JSON.parse(sessionStorage.getItem('pdfjsBreakPoints')); - } - }, - cleanup: function cleanup() { - stepperChooser.textContent = ''; - stepperDiv.textContent = ''; - steppers = []; - }, - enabled: false, - active: false, - // Stepper specific functions. - create: function create(pageIndex) { - var debug = document.createElement('div'); - debug.id = 'stepper' + pageIndex; - debug.setAttribute('hidden', true); - debug.className = 'stepper'; - stepperDiv.appendChild(debug); - var b = document.createElement('option'); - b.textContent = 'Page ' + (pageIndex + 1); - b.value = pageIndex; - stepperChooser.appendChild(b); - var initBreakPoints = breakPoints[pageIndex] || []; - var stepper = new Stepper(debug, pageIndex, initBreakPoints); - steppers.push(stepper); - if (steppers.length === 1) { - this.selectStepper(pageIndex, false); - } - return stepper; - }, - selectStepper: function selectStepper(pageIndex, selectPanel) { - var i; - pageIndex = pageIndex | 0; - if (selectPanel) { - this.manager.selectPanel(this); - } - for (i = 0; i < steppers.length; ++i) { - var stepper = steppers[i]; - if (stepper.pageIndex === pageIndex) { - stepper.panel.removeAttribute('hidden'); - } else { - stepper.panel.setAttribute('hidden', true); - } - } - var options = stepperChooser.options; - for (i = 0; i < options.length; ++i) { - var option = options[i]; - option.selected = (option.value | 0) === pageIndex; - } - }, - saveBreakPoints: function saveBreakPoints(pageIndex, bps) { - breakPoints[pageIndex] = bps; - sessionStorage.setItem('pdfjsBreakPoints', JSON.stringify(breakPoints)); - } - }; -})(); - -// The stepper for each page's IRQueue. -var Stepper = (function StepperClosure() { - // Shorter way to create element and optionally set textContent. - function c(tag, textContent) { - var d = document.createElement(tag); - if (textContent) { - d.textContent = textContent; - } - return d; - } - - var opMap = null; - - function simplifyArgs(args) { - if (typeof args === 'string') { - var MAX_STRING_LENGTH = 75; - return args.length <= MAX_STRING_LENGTH ? args : - args.substr(0, MAX_STRING_LENGTH) + '...'; - } - if (typeof args !== 'object' || args === null) { - return args; - } - if ('length' in args) { // array - var simpleArgs = [], i, ii; - var MAX_ITEMS = 10; - for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) { - simpleArgs.push(simplifyArgs(args[i])); - } - if (i < args.length) { - simpleArgs.push('...'); - } - return simpleArgs; - } - var simpleObj = {}; - for (var key in args) { - simpleObj[key] = simplifyArgs(args[key]); - } - return simpleObj; - } - - function Stepper(panel, pageIndex, initialBreakPoints) { - this.panel = panel; - this.breakPoint = 0; - this.nextBreakPoint = null; - this.pageIndex = pageIndex; - this.breakPoints = initialBreakPoints; - this.currentIdx = -1; - this.operatorListIdx = 0; - } - Stepper.prototype = { - init: function init() { - var panel = this.panel; - var content = c('div', 'c=continue, s=step'); - var table = c('table'); - content.appendChild(table); - table.cellSpacing = 0; - var headerRow = c('tr'); - table.appendChild(headerRow); - headerRow.appendChild(c('th', 'Break')); - headerRow.appendChild(c('th', 'Idx')); - headerRow.appendChild(c('th', 'fn')); - headerRow.appendChild(c('th', 'args')); - panel.appendChild(content); - this.table = table; - if (!opMap) { - opMap = Object.create(null); - for (var key in PDFJS.OPS) { - opMap[PDFJS.OPS[key]] = key; - } - } - }, - updateOperatorList: function updateOperatorList(operatorList) { - var self = this; - - function cboxOnClick() { - var x = +this.dataset.idx; - if (this.checked) { - self.breakPoints.push(x); - } else { - self.breakPoints.splice(self.breakPoints.indexOf(x), 1); - } - StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints); - } - - var MAX_OPERATORS_COUNT = 15000; - if (this.operatorListIdx > MAX_OPERATORS_COUNT) { - return; - } - - var chunk = document.createDocumentFragment(); - var operatorsToDisplay = Math.min(MAX_OPERATORS_COUNT, - operatorList.fnArray.length); - for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) { - var line = c('tr'); - line.className = 'line'; - line.dataset.idx = i; - chunk.appendChild(line); - var checked = this.breakPoints.indexOf(i) !== -1; - var args = operatorList.argsArray[i] || []; - - var breakCell = c('td'); - var cbox = c('input'); - cbox.type = 'checkbox'; - cbox.className = 'points'; - cbox.checked = checked; - cbox.dataset.idx = i; - cbox.onclick = cboxOnClick; - - breakCell.appendChild(cbox); - line.appendChild(breakCell); - line.appendChild(c('td', i.toString())); - var fn = opMap[operatorList.fnArray[i]]; - var decArgs = args; - if (fn === 'showText') { - var glyphs = args[0]; - var newArgs = []; - var str = []; - for (var j = 0; j < glyphs.length; j++) { - var glyph = glyphs[j]; - if (typeof glyph === 'object' && glyph !== null) { - str.push(glyph.fontChar); - } else { - if (str.length > 0) { - newArgs.push(str.join('')); - str = []; - } - newArgs.push(glyph); // null or number - } - } - if (str.length > 0) { - newArgs.push(str.join('')); - } - decArgs = [newArgs]; - } - line.appendChild(c('td', fn)); - line.appendChild(c('td', JSON.stringify(simplifyArgs(decArgs)))); - } - if (operatorsToDisplay < operatorList.fnArray.length) { - line = c('tr'); - var lastCell = c('td', '...'); - lastCell.colspan = 4; - chunk.appendChild(lastCell); - } - this.operatorListIdx = operatorList.fnArray.length; - this.table.appendChild(chunk); - }, - getNextBreakPoint: function getNextBreakPoint() { - this.breakPoints.sort(function(a, b) { return a - b; }); - for (var i = 0; i < this.breakPoints.length; i++) { - if (this.breakPoints[i] > this.currentIdx) { - return this.breakPoints[i]; - } - } - return null; - }, - breakIt: function breakIt(idx, callback) { - StepperManager.selectStepper(this.pageIndex, true); - var self = this; - var dom = document; - self.currentIdx = idx; - var listener = function(e) { - switch (e.keyCode) { - case 83: // step - dom.removeEventListener('keydown', listener, false); - self.nextBreakPoint = self.currentIdx + 1; - self.goTo(-1); - callback(); - break; - case 67: // continue - dom.removeEventListener('keydown', listener, false); - var breakPoint = self.getNextBreakPoint(); - self.nextBreakPoint = breakPoint; - self.goTo(-1); - callback(); - break; - } - }; - dom.addEventListener('keydown', listener, false); - self.goTo(idx); - }, - goTo: function goTo(idx) { - var allRows = this.panel.getElementsByClassName('line'); - for (var x = 0, xx = allRows.length; x < xx; ++x) { - var row = allRows[x]; - if ((row.dataset.idx | 0) === idx) { - row.style.backgroundColor = 'rgb(251,250,207)'; - row.scrollIntoView(); - } else { - row.style.backgroundColor = null; - } - } - } - }; - return Stepper; -})(); - -var Stats = (function Stats() { - var stats = []; - function clear(node) { - while (node.hasChildNodes()) { - node.removeChild(node.lastChild); - } - } - function getStatIndex(pageNumber) { - for (var i = 0, ii = stats.length; i < ii; ++i) { - if (stats[i].pageNumber === pageNumber) { - return i; - } - } - return false; - } - return { - // Properties/functions needed by PDFBug. - id: 'Stats', - name: 'Stats', - panel: null, - manager: null, - init: function init() { - this.panel.setAttribute('style', 'padding: 5px;'); - PDFJS.enableStats = true; - }, - enabled: false, - active: false, - // Stats specific functions. - add: function(pageNumber, stat) { - if (!stat) { - return; - } - var statsIndex = getStatIndex(pageNumber); - if (statsIndex !== false) { - var b = stats[statsIndex]; - this.panel.removeChild(b.div); - stats.splice(statsIndex, 1); - } - var wrapper = document.createElement('div'); - wrapper.className = 'stats'; - var title = document.createElement('div'); - title.className = 'title'; - title.textContent = 'Page: ' + pageNumber; - var statsDiv = document.createElement('div'); - statsDiv.textContent = stat.toString(); - wrapper.appendChild(title); - wrapper.appendChild(statsDiv); - stats.push({ pageNumber: pageNumber, div: wrapper }); - stats.sort(function(a, b) { return a.pageNumber - b.pageNumber; }); - clear(this.panel); - for (var i = 0, ii = stats.length; i < ii; ++i) { - this.panel.appendChild(stats[i].div); - } - }, - cleanup: function () { - stats = []; - clear(this.panel); - } - }; -})(); - -// Manages all the debugging tools. -var PDFBug = (function PDFBugClosure() { - var panelWidth = 300; - var buttons = []; - var activePanel = null; - - return { - tools: [ - FontInspector, - StepperManager, - Stats - ], - enable: function(ids) { - var all = false, tools = this.tools; - if (ids.length === 1 && ids[0] === 'all') { - all = true; - } - for (var i = 0; i < tools.length; ++i) { - var tool = tools[i]; - if (all || ids.indexOf(tool.id) !== -1) { - tool.enabled = true; - } - } - if (!all) { - // Sort the tools by the order they are enabled. - tools.sort(function(a, b) { - var indexA = ids.indexOf(a.id); - indexA = indexA < 0 ? tools.length : indexA; - var indexB = ids.indexOf(b.id); - indexB = indexB < 0 ? tools.length : indexB; - return indexA - indexB; - }); - } - }, - init: function init() { - /* - * Basic Layout: - * PDFBug - * Controls - * Panels - * Panel - * Panel - * ... - */ - var ui = document.createElement('div'); - ui.id = 'PDFBug'; - - var controls = document.createElement('div'); - controls.setAttribute('class', 'controls'); - ui.appendChild(controls); - - var panels = document.createElement('div'); - panels.setAttribute('class', 'panels'); - ui.appendChild(panels); - - var container = document.getElementById('viewerContainer'); - container.appendChild(ui); - container.style.right = panelWidth + 'px'; - - // Initialize all the debugging tools. - var tools = this.tools; - var self = this; - for (var i = 0; i < tools.length; ++i) { - var tool = tools[i]; - var panel = document.createElement('div'); - var panelButton = document.createElement('button'); - panelButton.textContent = tool.name; - panelButton.addEventListener('click', (function(selected) { - return function(event) { - event.preventDefault(); - self.selectPanel(selected); - }; - })(i)); - controls.appendChild(panelButton); - panels.appendChild(panel); - tool.panel = panel; - tool.manager = this; - if (tool.enabled) { - tool.init(); - } else { - panel.textContent = tool.name + ' is disabled. To enable add ' + - ' "' + tool.id + '" to the pdfBug parameter ' + - 'and refresh (seperate multiple by commas).'; - } - buttons.push(panelButton); - } - this.selectPanel(0); - }, - cleanup: function cleanup() { - for (var i = 0, ii = this.tools.length; i < ii; i++) { - if (this.tools[i].enabled) { - this.tools[i].cleanup(); - } - } - }, - selectPanel: function selectPanel(index) { - if (typeof index !== 'number') { - index = this.tools.indexOf(index); - } - if (index === activePanel) { - return; - } - activePanel = index; - var tools = this.tools; - for (var j = 0; j < tools.length; ++j) { - if (j === index) { - buttons[j].setAttribute('class', 'active'); - tools[j].active = true; - tools[j].panel.removeAttribute('hidden'); - } else { - buttons[j].setAttribute('class', ''); - tools[j].active = false; - tools[j].panel.setAttribute('hidden', 'true'); - } - } - } - }; -})(); diff --git a/public/pdfjs/web/images/annotation-check.svg b/public/pdfjs/web/images/annotation-check.svg deleted file mode 100644 index 71cd16df..00000000 --- a/public/pdfjs/web/images/annotation-check.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - width="40" - height="40" - viewBox="0 0 40 40"> - <path - d="M 1.5006714,23.536225 6.8925879,18.994244 14.585721,26.037937 34.019683,4.5410479 38.499329,9.2235032 14.585721,35.458952 z" - id="path4" - style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.25402856;stroke-opacity:1" /> -</svg> diff --git a/public/pdfjs/web/images/annotation-comment.svg b/public/pdfjs/web/images/annotation-comment.svg deleted file mode 100644 index 86f1f172..00000000 --- a/public/pdfjs/web/images/annotation-comment.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - height="40" - width="40" - viewBox="0 0 40 40"> - <rect - style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - width="33.76017" - height="33.76017" - x="3.119915" - y="3.119915" /> - <path - d="m 20.677967,8.54499 c -7.342801,0 -13.295293,4.954293 -13.295293,11.065751 0,2.088793 0.3647173,3.484376 1.575539,5.150563 L 6.0267418,31.45501 13.560595,29.011117 c 2.221262,1.387962 4.125932,1.665377 7.117372,1.665377 7.3428,0 13.295291,-4.954295 13.295291,-11.065753 0,-6.111458 -5.952491,-11.065751 -13.295291,-11.065751 z" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.93031836;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> -</svg> diff --git a/public/pdfjs/web/images/annotation-help.svg b/public/pdfjs/web/images/annotation-help.svg deleted file mode 100644 index 00938fef..00000000 --- a/public/pdfjs/web/images/annotation-help.svg +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - width="40" - height="40" - viewBox="0 0 40 40"> - <g - transform="translate(0,-60)" - id="layer1"> - <rect - width="36.460953" - height="34.805603" - x="1.7695236" - y="62.597198" - style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.30826771;stroke-opacity:1" /> - <g - transform="matrix(0.88763677,0,0,0.88763677,2.2472646,8.9890584)"> - <path - d="M 20,64.526342 C 11.454135,64.526342 4.5263421,71.454135 4.5263421,80 4.5263421,88.545865 11.454135,95.473658 20,95.473658 28.545865,95.473658 35.473658,88.545865 35.473658,80 35.473658,71.454135 28.545865,64.526342 20,64.526342 z m -0.408738,9.488564 c 3.527079,0 6.393832,2.84061 6.393832,6.335441 0,3.494831 -2.866753,6.335441 -6.393832,6.335441 -3.527079,0 -6.393832,-2.84061 -6.393832,-6.335441 0,-3.494831 2.866753,-6.335441 6.393832,-6.335441 z" - style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.02768445;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <path - d="m 7.2335209,71.819938 4.9702591,4.161823 c -1.679956,2.581606 -1.443939,6.069592 0.159325,8.677725 l -5.1263071,3.424463 c 0.67516,1.231452 3.0166401,3.547686 4.2331971,4.194757 l 3.907728,-4.567277 c 2.541952,1.45975 5.730694,1.392161 8.438683,-0.12614 l 3.469517,6.108336 c 1.129779,-0.44367 4.742234,-3.449633 5.416358,-5.003859 l -5.46204,-4.415541 c 1.44319,-2.424098 1.651175,-5.267515 0.557303,-7.748623 l 5.903195,-3.833951 C 33.14257,71.704996 30.616217,69.018606 29.02952,67.99296 l -4.118813,4.981678 C 22.411934,71.205099 18.900853,70.937534 16.041319,72.32916 l -3.595408,-5.322091 c -1.345962,0.579488 -4.1293881,2.921233 -5.2123901,4.812869 z m 8.1010311,3.426672 c 2.75284,-2.446266 6.769149,-2.144694 9.048998,0.420874 2.279848,2.56557 2.113919,6.596919 -0.638924,9.043185 -2.752841,2.446267 -6.775754,2.13726 -9.055604,-0.428308 -2.279851,-2.565568 -2.107313,-6.589485 0.64553,-9.035751 z" - style="fill:#000000;fill-opacity:1;stroke:none" /> - </g> - </g> -</svg> diff --git a/public/pdfjs/web/images/annotation-insert.svg b/public/pdfjs/web/images/annotation-insert.svg deleted file mode 100644 index 519ef682..00000000 --- a/public/pdfjs/web/images/annotation-insert.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - width="64" - height="64" - viewBox="0 0 64 64"> - <path - d="M 32.003143,1.4044602 57.432701,62.632577 6.5672991,62.627924 z" - style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:1.00493038;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> -</svg> diff --git a/public/pdfjs/web/images/annotation-key.svg b/public/pdfjs/web/images/annotation-key.svg deleted file mode 100644 index 8d09d537..00000000 --- a/public/pdfjs/web/images/annotation-key.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - width="64" - height="64" - viewBox="0 0 64 64"> - <path - d="M 25.470843,9.4933766 C 25.30219,12.141818 30.139101,14.445969 34.704831,13.529144 40.62635,12.541995 41.398833,7.3856498 35.97505,5.777863 31.400921,4.1549155 25.157674,6.5445892 25.470843,9.4933766 z M 4.5246282,17.652051 C 4.068249,11.832873 9.2742983,5.9270407 18.437379,3.0977088 29.751911,-0.87185184 45.495663,1.4008022 53.603953,7.1104009 c 9.275765,6.1889221 7.158128,16.2079421 -3.171076,21.5939521 -1.784316,1.635815 -6.380222,1.21421 -7.068351,3.186186 -1.04003,0.972427 -1.288046,2.050158 -1.232864,3.168203 1.015111,2.000108 -3.831548,1.633216 -3.270553,3.759574 0.589477,5.264544 -0.179276,10.53738 -0.362842,15.806257 -0.492006,2.184998 1.163456,4.574232 -0.734888,6.610642 -2.482919,2.325184 -7.30604,2.189143 -9.193497,-0.274767 -2.733688,-1.740626 -8.254447,-3.615254 -6.104247,-6.339626 3.468112,-1.708686 -2.116197,-3.449897 0.431242,-5.080274 5.058402,-1.39256 -2.393215,-2.304318 -0.146889,-4.334645 3.069198,-0.977415 2.056986,-2.518352 -0.219121,-3.540397 1.876567,-1.807151 1.484149,-4.868919 -2.565455,-5.942205 0.150866,-1.805474 2.905737,-4.136876 -1.679967,-5.20493 C 10.260902,27.882167 4.6872697,22.95045 4.5245945,17.652051 z" - id="path604" - style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.72665179;stroke-opacity:1" /> -</svg> diff --git a/public/pdfjs/web/images/annotation-newparagraph.svg b/public/pdfjs/web/images/annotation-newparagraph.svg deleted file mode 100644 index 38d2497d..00000000 --- a/public/pdfjs/web/images/annotation-newparagraph.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - width="64" - height="64" - viewBox="0 0 64 64"> - <path - d="M 32.003143,10.913072 57.432701,53.086929 6.567299,53.083723 z" - id="path2985" - style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:0.83403099;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> -</svg> diff --git a/public/pdfjs/web/images/annotation-noicon.svg b/public/pdfjs/web/images/annotation-noicon.svg deleted file mode 100644 index c07d1080..00000000 --- a/public/pdfjs/web/images/annotation-noicon.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - width="40" - height="40" - viewBox="0 0 40 40"> -</svg> diff --git a/public/pdfjs/web/images/annotation-note.svg b/public/pdfjs/web/images/annotation-note.svg deleted file mode 100644 index 70173651..00000000 --- a/public/pdfjs/web/images/annotation-note.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - width="40" - height="40" - viewBox="0 0 40 40"> - <rect - width="36.075428" - height="31.096582" - x="1.962286" - y="4.4517088" - id="rect4" - style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.23004246;stroke-opacity:1" /> - <rect - width="27.96859" - height="1.5012145" - x="6.0157046" - y="10.285" - id="rect6" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <rect - width="27.96859" - height="0.85783684" - x="6.0157056" - y="23.21689" - id="rect8" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <rect - width="27.96859" - height="0.85783684" - x="5.8130345" - y="28.964394" - id="rect10" - style="fill:#000000;fill-opacity:1;stroke:none" /> - <rect - width="27.96859" - height="0.85783684" - x="6.0157046" - y="17.426493" - id="rect12" - style="fill:#000000;fill-opacity:1;stroke:none" /> -</svg> diff --git a/public/pdfjs/web/images/annotation-paragraph.svg b/public/pdfjs/web/images/annotation-paragraph.svg deleted file mode 100644 index 6ae5212b..00000000 --- a/public/pdfjs/web/images/annotation-paragraph.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns="http://www.w3.org/2000/svg" - width="40" - height="40" - viewBox="0 0 40 40"> - <rect - width="33.76017" - height="33.76017" - x="3.119915" - y="3.119915" - style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <path - d="m 17.692678,34.50206 0,-16.182224 c -1.930515,-0.103225 -3.455824,-0.730383 -4.57593,-1.881473 -1.12011,-1.151067 -1.680164,-2.619596 -1.680164,-4.405591 0,-1.992435 0.621995,-3.5796849 1.865988,-4.7617553 1.243989,-1.1820288 3.06352,-1.7730536 5.458598,-1.7730764 l 9.802246,0 0,2.6789711 -2.229895,0 0,26.3251486 -2.632515,0 0,-26.3251486 -3.45324,0 0,26.3251486 z" - style="font-size:29.42051125px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.07795751;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" /> -</svg> diff --git a/public/pdfjs/web/images/findbarButton-next-rtl.png b/public/pdfjs/web/images/findbarButton-next-rtl.png deleted file mode 100644 index bef02743fc108697e14e0e5daab8181f7ef91dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6`aE46Ln;`jUU1|(WFXM`uzZ<i z<8)EMt{|mXaV+9Z51a(Fx;mVKK5(4(?3xhb{-Jg@&)@K)^B+&rnEJfwd;GyU=5cQm zmdWd%;*dFSquSq7&2B0!w?AW7!m9JlifsPJ_iD0D2q;cxm@%pB&|CHR$^+^G@rA;P x69iKx8$64;Ssyf6Fud%7>fwf<{~}+$G0pUl&6i=kdI{(<22WQ%mvv4FO#q)8O6mXr diff --git a/public/pdfjs/web/images/findbarButton-next-rtl@2x.png b/public/pdfjs/web/images/findbarButton-next-rtl@2x.png deleted file mode 100644 index 1da6dc949cd6451c2d8ea39e1618d0323d2e1ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0002@Nkl<Zcmd7S zZ7u^*6o>J%mRW)o*bZ%{dl2K@N_?~eFJnrG5D`)>eWA=I9=*xr<Q5%0Cz1F+A8+pO z<B|V9+DLsuU2Q&`fPNqQfs}Vf)0{xcgki`Bq`WbxasVw}dC|;3ixK@OBhX|>Z>GuI z4!;9U26Pv$_Z4XH%%iCpph2GpV-c{*6Zhs6SfR_EJq5;V+<H<#lJk9T>?sh4&K}p+ z6sU+@u52lw#15CH6i}kr=3>#xgHlS7GA<BXbmC-rZcFmx0#QWS?|~#|o8+1eP-27A zDkGpok#Q2T14`r>$J0E366+j!0VQ&&@3-ef{(7H#?13Ev59AjB0000<MNUMnLSTa3 C-hk%- diff --git a/public/pdfjs/web/images/findbarButton-next.png b/public/pdfjs/web/images/findbarButton-next.png deleted file mode 100644 index de1d0fc901c2d2369660026bd466d4c3f0a62eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmV;y06zbTP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0001pNkl<Zcmb8l z(F(y(0LJm}m3RU#E2%{@;a)2jO1V(0iI%7xbspi*CY{r<o$~!IzrX$-8{`wAJL`B* zabpz=u5T4fKUnbaoLd(%7nBqoO44s|>QONN1jjx$vyv5uZYI@G&FX~xujj12+YK~w v*fr|J-NDGo&9wKH*qTY?mdrSMOX2+jbf@g_m202_00000NkvXXu0mjfGEh>( diff --git a/public/pdfjs/web/images/findbarButton-next@2x.png b/public/pdfjs/web/images/findbarButton-next@2x.png deleted file mode 100644 index 0250307c0d10b0c0a38a8381361ec265ef3080c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmV+@0oVSCP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0002*Nkl<Zcmd7K zYc2y}7{&3k7CW#5+i@Fv5ckVUeCrOB=?o!4L`b!?9jdE1)U-}3$~@<j=a;<ir}M}E zKduqK0sk^k!V45ic!A!BHzt0d`>D^w4Rl6cnRtQcFE3nm0&QVWiRnO%{h3-*x?K4w z&|<T)juHwyggkNid*D8(twj0Vg*|d<GH`2Xa#4XBN3mX@0EQ2*<IWB-hw<?$DnEec z054<mea*|jMMS=*`RE2mJg+L-)m%4^g;|(S%62rbc+A9@15C#n+r}K=X{oVg%>kYa uWt-+4V4d~Up94HjH;lQ?oa>Bv?A`$+U7<=?MIved0000<MNUMnLSTYHgMp0z diff --git a/public/pdfjs/web/images/findbarButton-previous-rtl.png b/public/pdfjs/web/images/findbarButton-previous-rtl.png deleted file mode 100644 index de1d0fc901c2d2369660026bd466d4c3f0a62eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmV;y06zbTP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0001pNkl<Zcmb8l z(F(y(0LJm}m3RU#E2%{@;a)2jO1V(0iI%7xbspi*CY{r<o$~!IzrX$-8{`wAJL`B* zabpz=u5T4fKUnbaoLd(%7nBqoO44s|>QONN1jjx$vyv5uZYI@G&FX~xujj12+YK~w v*fr|J-NDGo&9wKH*qTY?mdrSMOX2+jbf@g_m202_00000NkvXXu0mjfGEh>( diff --git a/public/pdfjs/web/images/findbarButton-previous-rtl@2x.png b/public/pdfjs/web/images/findbarButton-previous-rtl@2x.png deleted file mode 100644 index 0250307c0d10b0c0a38a8381361ec265ef3080c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmV+@0oVSCP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0002*Nkl<Zcmd7K zYc2y}7{&3k7CW#5+i@Fv5ckVUeCrOB=?o!4L`b!?9jdE1)U-}3$~@<j=a;<ir}M}E zKduqK0sk^k!V45ic!A!BHzt0d`>D^w4Rl6cnRtQcFE3nm0&QVWiRnO%{h3-*x?K4w z&|<T)juHwyggkNid*D8(twj0Vg*|d<GH`2Xa#4XBN3mX@0EQ2*<IWB-hw<?$DnEec z054<mea*|jMMS=*`RE2mJg+L-)m%4^g;|(S%62rbc+A9@15C#n+r}K=X{oVg%>kYa uWt-+4V4d~Up94HjH;lQ?oa>Bv?A`$+U7<=?MIved0000<MNUMnLSTYHgMp0z diff --git a/public/pdfjs/web/images/findbarButton-previous.png b/public/pdfjs/web/images/findbarButton-previous.png deleted file mode 100644 index bef02743fc108697e14e0e5daab8181f7ef91dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6`aE46Ln;`jUU1|(WFXM`uzZ<i z<8)EMt{|mXaV+9Z51a(Fx;mVKK5(4(?3xhb{-Jg@&)@K)^B+&rnEJfwd;GyU=5cQm zmdWd%;*dFSquSq7&2B0!w?AW7!m9JlifsPJ_iD0D2q;cxm@%pB&|CHR$^+^G@rA;P x69iKx8$64;Ssyf6Fud%7>fwf<{~}+$G0pUl&6i=kdI{(<22WQ%mvv4FO#q)8O6mXr diff --git a/public/pdfjs/web/images/findbarButton-previous@2x.png b/public/pdfjs/web/images/findbarButton-previous@2x.png deleted file mode 100644 index 1da6dc949cd6451c2d8ea39e1618d0323d2e1ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0002@Nkl<Zcmd7S zZ7u^*6o>J%mRW)o*bZ%{dl2K@N_?~eFJnrG5D`)>eWA=I9=*xr<Q5%0Cz1F+A8+pO z<B|V9+DLsuU2Q&`fPNqQfs}Vf)0{xcgki`Bq`WbxasVw}dC|;3ixK@OBhX|>Z>GuI z4!;9U26Pv$_Z4XH%%iCpph2GpV-c{*6Zhs6SfR_EJq5;V+<H<#lJk9T>?sh4&K}p+ z6sU+@u52lw#15CH6i}kr=3>#xgHlS7GA<BXbmC-rZcFmx0#QWS?|~#|o8+1eP-27A zDkGpok#Q2T14`r>$J0E366+j!0VQ&&@3-ef{(7H#?13Ev59AjB0000<MNUMnLSTa3 C-hk%- diff --git a/public/pdfjs/web/images/grab.cur b/public/pdfjs/web/images/grab.cur deleted file mode 100644 index db7ad5aed3ef958aa13903afa769386382a87ad3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmajZAr8Vo5QX7?si;7#!yvj6Nx}i(C<r8XV2@Ub;|e_h36+S3$J>G{p)>hLyxD99 z76ej)=-vic0UL9~!GgO~9_MsOnufoUx`QHG)5E@a!o?nT8@#*2`fMlI9X~2&%Qwtd fAElzRww7{H`T9z)QIL|gUwP@h-(DMO`2YPI1=f8x diff --git a/public/pdfjs/web/images/grabbing.cur b/public/pdfjs/web/images/grabbing.cur deleted file mode 100644 index e0dfd04e4d3fcbaa6588c8cbb9e9065609bcb862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZQzU}9ioP*7lC;0HnjMg|5k1_lNVAO;FCH~=vt5Q0Dhn8YOh|NoCEh)sn30RsaF z^8>N`2L=Xv5dHz=L$Uk|1_tQ_266z<4TQl5{{R0$_yG_fVE_NW0fd=>Y#@FBr9t9P K<`XsxO$7j30D*Y` diff --git a/public/pdfjs/web/images/loading-icon.gif b/public/pdfjs/web/images/loading-icon.gif deleted file mode 100644 index 1c72ebb554be018511ae972c3f2361dff02dce02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2545 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 M?FSZn2B>%I-}ej|s{jB1 diff --git a/public/pdfjs/web/images/loading-small.png b/public/pdfjs/web/images/loading-small.png deleted file mode 100644 index 8831a80588dcaffe9a0e075f3d00066faed3d482..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7402 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 diff --git a/public/pdfjs/web/images/loading-small@2x.png b/public/pdfjs/web/images/loading-small@2x.png deleted file mode 100644 index b25b4452aa1a52181c324020c39175e0f8f425a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16131 zcmZvj1x#FBzx4+g+})*ki#rr|cP}obK!M^egG+HJ?ouf3P~6>$YjJmX_|ALpbCV}u z-boH;7)Zzf`?uFx|Fy$al%!FSh>$=a5UQ+<gc@+C04_=dIN+mD&GH*?LohMZPyp^I zzy(rhW5NV(L>B-1+J9c604~b^Jo%r8Im|u?w4Bpr0Rn-qWF<s3+?VQ;Z58x12?o9z zQym%yVQzB9rqDM9N%XNu-FE$9)*VI~++AX$hh~xo4M-3nj4P_)3i0MMv-z?SnW>LT z<SPz#(+Lx-;jvL#bSZYH*XJ`Mvub(%-XnWc=EMIs5wUJ7FvPNVn{g#D@z$FCX_R){ zgQ*GH7iPlF)<j5!dm%H=8#?HBe<f8%Ql2l}LY$$!rtK8(8&q^Zgoh8pU1UWqLItJz z{+{ZCcH5v{XS=iK8*USdFBT;k=ge4uFbMH}M5P^>Gf=C4K^8ZYl?l}Uj`xx58NoNC z=ML51f*aF#HW0hfj%h9(4+AOKlWk@V+6TuMN|_FE@)Z;EEQF-APubku9G!v}o0_Uy zT~~Mgey+<c<*1h)f-&307oIxb<Z3Wo_f<@!UbXZ7o)^`x&voyKkQFQhLbJz@Am{bk zJ(l(MLxl?OlTmpxW?g{C)b89qKR@SV`^@Ay@xF1<rhYr{P)l2zTq+e?0RDEU>kLX1 zOeporcOTDj%X~SYVj#rF=K;001{v9qxfe8X#oz^VvwfDn`3n#2k4?W6a|W$qivuTM z9ID#cmQf3e0);$LhFo);!=l~|4-d=h>gq;!b#>kP`};>nMxwN^GGI{JY^KMz)zs9? z*)@`jw)9+G`H`_!ghuHr+Wg6sofhQebS4tN$0P!)J|H&HOHl>=ogwnnL*kY%^lWKp zXeheQkur_gJUKYvlVVE%L*z<l4_iHN?&klToAvVqp#-we>>)PDc?7jmg~?MTuk`ix zapB10iTpxX@Xv2)X|Xaf*<jNAOdcH-^-x<|dzZ2x;blomU!8KNeGHd|$M(?`li_nS zaiV`urwPSG5JX@I{=qxIbdY~twg2Jk;M#6vTVO_0mFLs#!|UrSEnB69x|M-}!O2*< z{MZyT#i8gsM0eO$|KY1dnC)Z5?Vz=Ii#(D3&Kd-HZzf+f@<4F@O6Mo<lO1Q+;)u;8 zm?Qd#DdU5qBPS*nmV_{E|7?y^X|uP@%gt0nqe>0~sHmtY%|DhiRPZqplw^&|229zO z><ye--$wlWR|a=JZe*mT9qQ<rv51{?aqf0xoQ8&nhf7tX?ySSsblIt(HbcSsK{*FJ zDT0-S!gMGb0}Rp$1<;fNnZ?)lMEMt<j9}N%78yEF>5DMK2e#Z+LUeI5*f3Kr)Cc*E zXUGu1#Ey=RSkesD<ykN_xe2T{XtB&xkGb@b0RcCLW`6}Xh1?XBm9@+GH@AzQ*LL;M z**Q4OX!I^c(Gv<ziar=V^ksyrpWP1+JL>V0*qt07J0A`d4QzSD8}=e@-DGioHxAA* zR7s&vAfq-fB|j=!T8<eT8>?Rr-sziD_8?v=)NCf-9-d(2{Uz_vJ*&QWe0=QiSRRv9 za!GV4+D^T8J7(7-z7Dw{q+y{9?NJqXA<mQF`=LtO;xta4_i>|Ete1Xiw>G0CvW=XS z)E1+yn!t!Ri1j@=A)$kOo&jDh;un`%GWwsrtu!<=vyZck<mHdJ3bv+feWl5z=O&*Z zYiE`I2#2zz6MIe(Pb+yb5C<F-i_h(b*$Hg0r3N?g=<-AdDt2~un!diixJ)ElW}6`! z0lHxlp9-X-GHnL6Mt>h@fIlF5Y&7Xt<p0@6RpuqRm~^w|zj&78_>85u;@F^g^4duK z#=@HV3O4}pF%rs~!vJ9Te~^R%o>KtV{|8BtX@(jQ2o}x4TvP-2Dzy7j;s1fM^OyO% zupkB0rz)FR8gEl0jayi)v12U}P8CcfCMH%^$pr#9u94nRrjHodSXg0{3yfDM37c>i zpYyQ#B*aQEg(=RMxM8HInUcNEF5VKI#x|x9ud}x2ogOouS~K=Cvi9b1zM4g*b}63Y zx_e5)!bD?r`nKt7&azOv#r?9;&|GACc?MQ~V2U#5wtmviH0$NNCbX<YqLjx~3(z6` zqmhf~{4a$U<QE+Gp~1rze|+!WKzE6h7D*@&8z`O}+Al!23ZkIcM*^XiJ?oSaZh{kn z!v{;R1(0*Ys0@HT$WubLJg$AO+f!inPfvw<QZAv+FHyYVq8+5yR6x#flQ9muXeqr7 z5?V38`!+T<7}(%3$jP%?nws1-P2|Yc7r4rHu?c*Wce%N_g$C}uj&JD4hgs3r<=fAk z?8y*9dpcsHR!{F7CQIm#HLqg=y(oO^nwyuRFT8TdMfJ5E$o3y9D#ks*4o>3n?WZRv zg39b=&*%a?fg&&a`1~I~5)HwPy-T5r#SKKV*Eo9?I{)a7tq=8$Ly|A_mGx(>w3M$W z?AD#Xo2lt0rM4HA4xa@Ug`SW18H{hon|hd~>Msg%jrS31ih}n3UVWg`f$csSID!^1 zv)S5O_g(48$Ox{3gTq`%2%NN;Sw6NIvbOw=Xv)Kagi~gw!Jen5=QtfT_4e4<gHx0E zX~td6aliXo(uv)-Z<RVmMjf4rGPHj|$#ph$_4R@@W!%^+<)5u5X6NRFa`|u(W#e0Z z|Nb53ZHEZT0RDs@NC+Pm#f5pQ2*dL9(KuYeS3?<@pV*;RVLbPE;OrKrr>BtzlZ8Om z@cytm^25V62?+^b90m=EiHJPe*w`?o?pDYyJ=<7ha$}zwFC0SqOg)mm40QWQ+M+`k z?TK_?O%W+{>$+^ozTaaIBZs12;BZl_M(u~!zODRLH&Rzu@4e%iOVU+SQ)_B%J;Xt$ zEW#;BJy%5(fWC=*e={SVJ8WJRNA;%-7xJ*3$(NGyKZ5>!LIC^<lRZeZcaOY$Hu zFHg-I$P@-~P^2KRpU(IL8Xg(B3h2s_KNG+}XgYTFYJZiQHsjv+)4o-|LI0!NzxT8n zO)0*dU~BwVI}|dp$3T~^no)F!dmD&d?3+j%2jk^h(Gi9NTHdBA>3;mk|AFIoJOcrm zv90Zi$<%DN?=V8ev+b-sx&1c=k{t3z!qp%gaCPYqn5o=!)<+f*?Z{$IIjo>=@h!70 zwAw{|nI|qTt{*K{VR5;~Z_7@Kex9C>;Dh)m2mQW0TiK+QZ6|p)Yb&ewp9~CKCMG8M z1<91-Tz#7LD+XRi#&_j1R&<HzcM2rUWh$FYr)Dc$lno6293R`zJU}YxXJhdx{kJG& zy;3J3aq;v#`tOG<EG)8$&OSAmr{cz<))dy-{?_9XKy>V#r+@if^{E_I05k}doDjL2 zc;e-ovfDJKe+tv?`lkvyz3CCy#o61567EC9?SCBm`$M%bTc*do!77cZ${_vbU}wLq zpHg7QEC)|>6u+}mWR{0Jl>PekD^x(v4-Mcg;$C^$O|es0h^mZOd;b2Vqe`9Ox~Ryl z0Jk($P*BjCn3yQ=k#}>X*EYBFnG`|e(9oK(K)l(!M+OAn^<K=+-iCYGscYSKzFVwQ za%<o7`DVoUJDqE><F4R7;WyPc{N9CE*m?=C!mlLcz5o&bkDoBWa|+=4|M*!hd9MeE z%!hyY3I31JG*C$YkI?Mgi1!C0riwPH*&|+<8d|EE;#k)>yT-mJFP*IMHOAQgDL*Ts zfTtQ#`+YcAp7k&zPrkqJI!{*C1%JfZOhI3}?II-RPkX*@Gna|2(O>kp34uxvFB{mk z{)A^orE$KAH;-}YiK{vDy5f>YoO>K^s5G8N*3*5cs?4+G&kxj(9h$f<a3_^l3z`s8 zNxrp(1y*r$5)$|cM>M68J7^V)NuhzL8~PGQ%$tc$gVDn^xPeZ1#xU#Eh2(W&R+#qb zn|c4Mh18Lf5`EZY6nOhPyMFZQyUwTept9kYkJ3d*U<{D(`v_0imf9Tp;g}E@0&?;* zO-&C4Hx%-K0T(ERX;P7wwo_9>$n;2YrRnh}dYq5eypXA>sieL>N#XHF0|ce@noN-w zxTwPEg9IGVxF>D;Se6NtHyU#QgRzN^kDvsRp5Pf>XK6gOhYFAX)1<-jpFe+sZ&h7! z1~4TcyD?Ew9+<sf)~~m>w=r%^c7%<`X=XZdq7@VrP!iy*pzu@R{UAN9S5HHH4Nn-T z0rR5h#eG$L1SqIEFKE2n!otF%qgn9WA;BNDw6uiOa6h#<+FDs1;54V1z$CIB;#Ngm z@XoG_`hb?{L99V1w<bSudcUrRQBd0en>=^Xv`0>5<wSJDkJQ;J3dS<qylN2&)<{x5 zeJw4E5p(uz5i`u>3piJrkOqh+>Pl<=-(SOgr@$Mih)f}bT)k5uffH&VmS(+;w5wOl zQL&oZg$)#iCt>P&g$rXS@x;C%I#uwtvpY4rOvMH*EKg2OlA(oW+VH^XQiOI=5mcJm zXq6x=)YX*Z4YJ9sDE&n<!#CLejt-F%1XkIswa>-l&6@r~w}0)I@sBC{ejj#rcF_Aa z9UjB`Yf_K9XJ%&73&y->@N1UQTm$hTiogOf@3D&AO&EojJDpyHdAuozmrY)^Tbmf4 zwX~v)GH2hRR9val=JeUE9q%QwiJcWmH~&x*8}gTpJm@{s&&*Ho${(3-@rWVR5omv_ zL+HiGJI;I>u@KRP>B|u9h#0s*Q!?Ar_~4kH4a+SfPBQtp*Tw>)9_74j6VAsL7>}+f z%Q4A}j#SRPKg9{0SG<)QsICyLZJ$@6W6pK&FVP_=IR@t(OzE0#vL)LVaFXy4jc3-y z%f@V1@PQXT`3d*>4&BIl>A^uV!-o$g^a!T%4DjY0sLRhCpdoo7r>ScCJawM;mtVJY z`b-y<_kv^MlRAPlu-M<0Q@`HI43wM86UE7F=NRfGO0YbP%1TjDQDy$p7;b59KD>PJ z&Rn`WxNy&!a}5<#VLpYWIXt~F@w#E4)jQF>Lq&7l^y*R+8q{vLvD~q<;wTPMNf+`A zTX?`%@?uL)PDZ!9vTUT5wWULy+N>)NuGt_vCn+vOGw%UZgGue8%*?f$N?G=!rNZl8 zs<51yLTxZWT_&8e9KDXm#l=O#2BHKZH;mC<1#(LL$yM5X*l+dnPC*$Pwl+34(`p=V z>a%LBW1?sm)-PC`k&i_zYp!5XhJ(AO7X!xZ^g7bXvw(4%#y2LvWXA7JC-KRg3X+L} zKYsjpDk&{}|6cco9QzU6K#O2^n%^(SZ9X!-V*d-?3-NW++0CsZQD)_`*EAq>3HG?G z%s}Hk4fl{^Qh@85-o_g~0iz!@;<<mWBVKaezfcML-%%+N6Y&l}<=a1~g!`8#7YS!! z4G1z$I!Op1h(z>FH8JY9)<1RCg-MuYFBaiXw05CJ4d$E4{X-Bn)SlY+s|!gX1CboT zgzeq;k5PJ3a;j!1m&`0w;HjVXP7`gf<Zh>~UN(gXvj8ZSCq}NGC!Dgq#(yzQ=N&!f z=U}(Ok*!&^;!3*(W>B9%o#VMDv)x+6zdm*OBxQX2_AR+bhS;4@AZ{Ph*0sO{weHjP zz_G4Ai5&e&w++4({H)*0tiE=X6N-G_Ib#SOr~2?Nj0BV$2`iERM~dLeVXqRjxLwR2 z3=+Oafqp!HR@0nCCPcObWK(b)zJCm{5bSLVIAeB^6v|x)ju|r11*xz~hJ%Aw)|Cw` z0W6n=lt*U@X0Yes!paItJSYN0d4q;;AEJfcKFQ@{4~T;;z`B$;uelMr8)~}HWuaf~ zuDZ6g!F3oxK;+$r(wh&z^2^K1ea+0aM*I687stoPX|2WIq!ZoKej3a;zZ^wJqp>WC zEE_<M^`X~5ZZ*o~uo<mUB_HW?Ck+;tiA##KyJBOLSz?;*>x%qGtJQn9x6SFmQ!Q^u zH+PeDMyiQO&#&Nsc1ewjyjQAwsO>b^6`0l#r?P_C;t60+qF`V+3S*S7uVI`wZR#z; zb-;8rY&6NhL4gxoU0p5b<KuG_z$+3U6leAhEsmYe?sOSvcEYF$?3xC$lD@$M;qwP? z<y0*_G_@a&X8J}(Yizu2c?U~(-m~+asC5P%?A*894+<C{wB*D@UMVRlVhJc!0~RSi zs4qooBF2A(?0;yX7V(^u80i}R-go>>G?Yva88##{)QvA#y0CA0Po~|Pt5R%epP@B0 zHs)h*ZG9-v?Z<={6_v$*w^1ta5$o<p-3s!DPD~17b4tiA0{7r<!nXJ`^eqJ2bb)7n zJ{_}y=+%&eY3JqTMYO+;)kbMcb97yHGyqY>Y-`+O_lmAkea+84O^Q=7JM;>6W{few z$i{)@l=jPz2pXpjUd};B*BrZ}Nop3+tjoz6oy3c^Q_Je?*V0n5KMzyGYREUbxU4{O z@yTq7yvk!5lxIgd)sbH*zw$@o81JR%bB7FxM79a_r4v=O+ENw+Q|p^t4Q9B+iaAI4 z6{SNr%sRz%Y6^NEAuo$kRTs!6AqHojrA=X0b4#R#kpl0#poCN3RWM~hsUcz1;svW| z4nDt$p`jsEIK|W_z8t=~?`bEiqBrpqL0dYila@p{WavD93?P5!udkhFnZ!MhI(EP} zgjZiIEYPO(YcTs8>>A38Ba*#oNu+@2!lh})9Ul)b?ZwwGv)ac~Aj?O}`5tbT@i+%! zG>u_+6=79TUH;_L-VB%nJivCxXNJVb7Cwmz8I+D4n)LR;W*B!z^YQaPk-Tu{1uy>y zw25WvYDhff6ab?^R%fc}>u<tR@S75Oi_aS9|0>ze3<SB^wg2`10Eo*edS_wIN?&K^ zI{(Uk3n6|4p+ZM@_a;@0le*8J?6bdelWdHhCnY73aYb8PsB=Xd6N%p;<QoJ>MZ#WR zU-MD~XgRWDAdu|s{T>U0@FD%Q!u2;^=QTsB0n9mSdaxtCuy99nRaI3Q)_`{^E4eX) zygXBPp;R6pXR?hBW)(gOZEvr`$IJmO?RkOk-{r|lic;t<nhWC<kL`yS)yJRKBJMjV zdM@#)PQCf@ZTw081x)z=4$N{w-9f;c^ZWx$g#Q5ZtBk%h&H$Zxf{@Br^*FKOV4*rF z;X;*9*Wa5_cWA#-@0$2X-Q{XF7lss?BL5+hn5x5Jn3|k|pVL?d7X;|!;w+zFTjl-m zrB8fR&{~a(sy=S^I?H@jzKt&H5gKF`Jim&(8y)3yI{nR2%c#4Nu?O)q-tq4=gV2a? zDrKBOc|k4v4<F^|HT7psqIFWA!rp=KVw$AvK|21Z0yK+;NbotTph~%hFTC>~bJoDY zzrglHyeMT9Ox<(fPY@E3pFgd>QE=?#c%8rfE`VvO|E+7wi=T)<Ov34J36%lLOzUsK z?0f+DRSW40=;LT;XjfB;rXhn<K>m`GY7MG`c6_DJ$bzjqBok<voS**!!-&V2g{daM z!J%I1P#*V{f}~Tm(_1Jz3K}wYaN~)Hlmlc|cJ{s=9>1r}*>Pd;kpE!7x_#30fW5|s zh~B1;?V4@tfI%&Q){BVP`pWZ-+p~>fOsljWnzgKz)Tdbl-F?}jR&$!f@@!K;1N?$^ zAL}#=O(5#mTV$~sXRXN;INlG2g@J+5+<e&I-*@Pwn1K22PsrN%L`OWORO&Z!;@Wav z%!+}q?NFhrB@}Fnfs*^e*Cbqna0lIDpBL^NSXf9b+2VF4l&6#ED5*Nk_6u63CW>NI zDm^#bv~jsKEj|6~pN5s!J?^m!%o-j@UTe@T>-@uKOG;aQP}r~XlN)UR&JMSX;kvpy z0sQJEZ#=zAN#U8;fMD+cqK8PWGN)IXYh2CwN^dUqOW*|(OXyH1C#RAA0Xpk#5Vz_> z)fq<^LmqkmPM~P!kx{JK_)XmJ-@$i`c=9w4@h}uaP)JoOC6&34FRwX1_V!hByzRuY z%F2G0o}SI=M~^#tM@Qst&d!{Ki>fF_syjmV7$i`5qU=zU1XgHiS5}wrvaMqv)_f<# zM@OiD<QVAXS5~`ZF?{YMMEYfxa>aixXdg)4$;;b2_`CSo*0v6nSU#@OCG!nM@j2kO za?-^4g?JbJ@n}$&Qw4?#QV5-)U|O-3QyD+U$2ob!?>%yOcqr%d^(*({?=Q1vG{nZg zSOo;UX>pMLM11MlFYrT$4HQO0MXev^Pm4?~WDMV%NaFwVg_r+Hy1b;MP7oiI1a1K= z4NJ$G@Z#Fq8d0A|!?R?8Ki09KYRr1eHiixqPbd5Q1LZZ%x%&+A&>Ws{j$@e)uc9Cb z_P&$o?-SB|k3XcNYXm|g5Xs33$z-LXGRwx4=oXO>Cfd4imx`olHO6)CCj66}Lmr7@ ztjt<$2QM<JpZ=?;1=LmvU~tpkxRp&*5hv{8>gtMyv!Su^4#iGeTaw!u9H1P>e$g2{ zUDek1vfbYwLfV)D2bc~uo9reH0frhg8x>RvM|hgzG2RGn_CQW8n<F4L!9VAF4gcn6 z1?+39mPNUgnpW=yIV+6Ox;8gWX^gjZ5?n`vgM;xUg@=LYlRXUvN6v|%TB!$L1akqM zz>Y(C*u{UV4u$nXz;xNde7XQxar*`hCjq@j+m!7z6s@bbS0bvK2+zZnfK{ezVL_)H z$60c!1393}IM6<bqbDml*-e9F>{=lpF6wboP)tCZ4c@rg_#zV696loiXl>g6)-Q^@ z$_Pi1(KQBd=ai1Q$V~@C=aej2p>>*eZ4zCy1G%q!ZB32bFMCQB>^S&^k^wW=NY+Ps z&XE2o5=Ph|s8GaT_T3%GbKVU{^Mc&gFtiw31xMObrj%G2j=L#auRL*n_|)&;ptkx; zpTPuWm;VAS;(rINh_z)R0NQu|fELLe3IMGFi6+iKWv+&zyDlP|#>ICr;tgb?{7C}j zuck$e!Iv2C5k}gV0#Z1;C=hI+`tC*9po}nW0=(nS!!ZzJ`=vD{=D7>vdRa_$_nV2u z<h5LNEp{I}b|T9Xd<t4Fs5>(Fop!UFcK`C<t(a6J?LA|v(B*J{hqacV#yp;1OaA<u zY>5`bwlg4CDExxfo*=~^mSk$tCL(Vkm{tcP)SOu_7go79LBvc2#36&EBmz$rFM?ea z$Uzbg!b8Iwa$i0wpN4%Oodt1+n@18x^_e@mNdqCne>WF!JFSnv@Fzn`1}#o%owf@8 zEH2E?&nK#~uac3H`Lns1CyR-8xBCP(CYxxML_T$G8H2>3-np*%T3HRzdPDZbkSkP^ zJW#LAAfjkQC?N^mzmh=57M<4C)*l4PV){;8QzePRX21Oek3*8o2IM{jqhDsjj|Xs{ z*ZE@7LLVv&Iubg=J>o@2M`ul)Dk~{zLBn}K5g@`CcS|{~39zyK3Dc7XhBIiC)o?3E zkaFZl0f%q)&`<uj3)k7n(;iorVq#+9=7}GuWlJFHhzLVD)F?A}l!Q_J5to;jAFkPe zL<<XS8=9?je;m>dIWmm2U|G6*Ne7u5d3k;LvG#VCnd1pSH5=7)Ssz2mv3~C(KYzCP zB+ulVqP^ipD}3`euP;yKxw-F3!-hC>zi$El>+|$9$IT<SRcEz|oPrWraPR7YOmdAG z+>Y=#>ASqq^yn!nDq0v;s4OCb7Yk8Ex#24F&1NwsB_`&VR63K3Pe>ro$jtO{`SPV` z!lP&LbK~-nr89K|uG%U5Lk^gL%T!k6`p*MBl(Jf6tmYWr=x)E1Iw16A)8=((8e5+7 zhR)Di;j_t26uqID?r~btvrKU^w1ljz6QcTtK;F?JF~;IgB%ijh2+Z3dm7-u|*f|kF z<BOa@_P<($TS)8P3Q(J$ERWI2YePaprd*CKAJ>_W?YrT01W?e>mKuE8S=OEOb4p4k zjW!v6bF#7;&z@O&qEHxy9}0`V#onV-8oiz1E-fQNefReg!B1&#bMUGwD%x`nTPJ*E zp+v+ns}5rBa)ZUvp7q#gSSPk8Y=t31^PpV%yBqphX%?k79mJipm+J?MoKY(5_`?Wl zZPOF46-8&pv;d-d9Q6MEdw6<843~xPu&Jr32S6-MWoZQ40m<$}=cF_WOngh+5)t_c z2I;gmSYmyFVl%SWs7ohkl-9-0_SdXBzIqbE@p*cB(z9=VM7kqc|H4}7c*CD|+Gb53 zt(2agJ~ul%`*Ut?&f4~=PKR;AGGCln0~_Jas4B$7)#NnO@{LVM$dJlAY)XKO%jF#g zf_{?b%@e@oER|W6sq!f*3PpYktFp4P8E9H)hGtUit9H-}K8+)cCpQ<@4b+DGo*t4m zsu5Va-YjwL%um0A*?yfK#w%2<8GYgW+@3gOK2UP6yB_-)Q2`P+K^YMTn}?i<ZcD_$ z!EtlV&Di9MfuiPqG*_P5rmCWygKzrE)|J6!<*&j~1{fu};?WR+B;<6&fD>26RnlNh z>I;734db}Twzjs<GGeWTfKEE0DcMsXhFYa(g`)QJ^?ij==u!M}g&W#)!3=yWW>iWg zAPlAeg{xLqxZWdS59QRNZ_x?9j!ewXHp)y+)|PZ4t2OuEf?n;;eG70ISxOtBT!LVB zy--^Z&^(37XpUq2UVEc@d<#g~CeO^NgdU9iV)8GfBL8=!mOr=n0A~N<AEcrH+Ev>Y z$VG7~OgOqQL_&IlMvc%cp<fq#6+ZjHap@Xr4Tnw+8<Q3?8OWy0#cC1+MUKXF^!Dy2 z5;Ca8`SqHc$Z`aZ(^!fP?#2`1!t~17CW#>$Jo(;dIIf-Sd^*0>Qoh_?$yjz8cbX79 zYiopS%cCC_%}LlWc13>)zlBl0bXCP^F?PeY9Gyr&f7nf1LAVAf<wT@A$;Z!>#;@;| zNJu)f8JRJI$BPkls-T&mm^g2tJ9DulT$)|5!}_)|_46L3DO4(H>3X-Sl~%#t?M~(1 zl<SLa2$LCeQebZ(qtbWqzw|zRI!wYjzUg^sn3SN#aw!R)o1gb0fcl;UdQgiTuxjGS zD_+RS{<7<sFf=39r2(CyOjo;TQz=D>x%cSV6xx40vj2yh?m-PDO`aMn)VQ{$o!#Pb zW@;RrB0_QUb4mp&7`jN~>G+tDhROq$l_O<P#Od&imX1!j%Q?~%gonyjAOH05ZB7#V zd9S|tap0o0wKX9?*Af@(f2(e6_c<~sJW4hQzyRJO=|e0F{xnQR-#w#W1F(!jm$1Ui zuVXx}Z*JNObZxn+k~K;@u7IJ-SG*~PcWiY$aSEQ&($cnxPWVtcxp{ec2Zyu2nX^Q^ zi>~AeYGe^buO!{6sY6bY4UqXFrOY^XHW6b528O@>#A411Y-~(mZb(LWTyQkDwk}~v zm2p4&`+Ex*ciNfFV(L^x#-o$KDM4G{end>PXQSW69FDut+8SwhILiX|ru^WOQo~=j z?gA&(I?t%R0_gYtjRfORxNu1sF7Kyp6rA3=Y#*Dc-{a@7tcwtbXt6=JS}iEqEx*^L z&4F)rq@gIJ{&XYBct~l*NnMvX_e<ljwac!NN6I1ZVyK6A!;)DWx~Hdy6o7?U*aP!9 zTF-K|j?K*3T}OYmrGSD+biAN1A+Q2azO6nUaPlvIbvb>(hQPQBlb{)On^;W5wnn;r z03H5ed}|7D!ElE{0BJ*F{L!IU&K0CWpYCv}vQ*QM-+zIYhFGm5uXA`CWQ+Mhzd)s- z<A$2IL{d{g5&&1p>QjeBmV3+sEe!w=eO>UJtl#LJ5{74dSXG2RT-K5cDP2O|*LgEj zhhOQdd%HlE+e~UIch+$OJ~}`1Kho3FquS<YWnGVy$|vu-rO|{j7aD*Lmw2rhu>?fB zkC|CdeM7_U{@K|#?HJ{vX;}tGD>53iq%woJo$TCiFpB)#5AeELc*bvN4U@e)h{%1N zvo`(d-S{yBmBzXL2M1P0KbKY3o39B}MulsEwEW{Bl&tR$+y~_aEq}?|!v~@*a{u&* zvQe{oY)MH;Wpzg8hN^j6cWB-UAE^r;6Ylgy>mMBu*03_sH>rk;iwj@fBz)Cy*abV# zTJfw2+Yvqd$Pa^sr^#|tJG+YST0I|PX(_OwbagG5>)mtU$hAaY@jUx;wBv^g#0~gP zQM5mQE|hFbGx?4I)d2g!AFFiMlc)f%N^l0*QsyDe4%*DjOp!u#$1Oj-{NO1AF<t_~ z3AMk*Wfv-*J4pjeZQQ{Ig#YG)qDnaU_&h);z+KZn<R>B$?;E$1iL`F4yGh0+rl_d6 zoLf?&)v(tboL1=H$umAWI*RbYiRVYW9eiL{uHZA6dtCMwvu4HdC!_CM;Q1S}^YGfW ztdC|M%io)SArke!BT|HW2r&NOgMSc-_8)t%r=TxMFfb1x!e)*G@`O5SDH+kMby+I~ zxyGMlIwO+wH7m*LxF3F|$Q8oLa}lYLDY)klpjtKdE(HZ87Kr*lnXPvrhwXnSP=k_p zGpGXBw0xQ1+j?6bpXsS;I#|4?=@>m9^G<%*b+uo>?O*U!8CWD=>-NnF?V_qNoWJqh zSH_x29vBL-!A8wO7RbRRN$gi53b`ne5hLO+<}lc4_#I9?NeylP<^3GEOy~N2jwE&1 zA?LEv`stijCeFUh3Yb+IOxMtGI=85lQ+qWg$A{r=S_!rsEy)K1I*Wl6QRd?L*}Jx@ zYVNJ#&VlIs38tJfc4F@;HoCtIF_!7UJr;Go;HV7lWLp2FVEUkp;tM5Iq;%ly%uMU? z-IJbAI~V%R!_c`758YxsIuUZP*y3bn4gn6soa%R?HR<`0Nek1a!K0hzU|(<VjDR>2 zSmx*i98TKZsL05s+>a7Moel>xb!rL^qa~d5<dr{uEQcn<$IIa+tNo%!Dlh6DWB0&P z`b(!OCnxv8l58=y{Fr0uu=&Fp)6kcRtWu=l2CGZvrRC-9`sXF@s^snO9=5i&6X7{p z0ck&7U0gKPM@bPO@fjHzHR0ivhoAGyz4(O#v6a~o9wacZdFY7f;rimSDfl`^j`Fa^ zP2k}J(}w4<l*n~%<I3?+N;*36AGT*z-OExg3FtwEoitUcA|cy>-gs(}DV1sZ6=P9R zNlQyhNbMD_G}+!j^xrU;{`ATqmub*~6DAuC4))f8?h(#!&-sfv6A)#p0_T+@^asqT z_%)<*-V753E}aCZ0I|T@=MQzw+xPs@$wMqI`PAOt{ueI$8$=y?C9l#$AdCG$D#0ND zOw<0R;DJS&8XRmye7|aF?sP&9jWqW*y1BXetE8j^n=RnWu+;l?1j7yk<*F!f7Ia(A zfbp?G-5JC&mTa1W#NzkIX(n{FZp3X!OecJ?7>j$%JIp!*OJpmhm4QK!;fjTom6daS zJAz@(RR8-Y4hj}PeyssRDLr0SpYywS8~_Wl;RV-8+?@xU%B-53x6DlK+EY9BD(rc^ zgW0ZFrp?{fkEi^oC;j=iKP)N3_`z$`^vOE1u&~^PSwoORFb^;h5oAwKPb>betY~O! zYwLad__3t#hL4+j4l?9xADVisT-R}7Txg8tjTmuuFnT0&PW0N2A_O$3_~nGoIa?k9 zQ3>PU`C!cJZDMTPiG9SSQDERnFDUrpz?%jqWKYbvWttiZ$1!G=kSZ(|nzTx>dV70I z^Xx;aFF6#d`bzdcy`o{m$_+Mq9dD@%;t}|{&JRsoyu9vdF)t{-B9t7K`LZ{+w<R(b ziP{@T_b39&W-DLV`qryAk>%P&3gI;#Kd)Hw?9ZPgjf&q1-u9t9s;?AS0uxFz!(dEm zM?$a7yq=2A3ns%y+{7oh#^qJ|EQ@{LJn%hMIGEi&ye;pjAAiyZtu-VUeNoBS)%BJ# z<Jlzd8faTw%Of%I`;K#tSwdTORHxuZMn|`gr8uDCo||Gf@?*uCd3bne!otEjf515! z2qFvj{=UAJ%g(|3lcz9-h=!lPg_41xG^6sjEgwh@!D9;r9X&f-f-)gD_VxytQyvH& z<NQ^Yi4W(k%;1P#eWSR1gXP{KCx!%MwGB!{{R@rg{~e9xIYg%b8vk#qj`6?h5vXtW zLuhHiltirb`{?owBBtyw`BelBX^f3Mmj|&I)uJOglK8Aa2NLXT3{<9hekz+Y!OpY< zsR<HcU6z{&;zbCi-RORZQ%iPM4V}!kXQ31F6J1CC-LAxdc>LSG*Lrrfa@V@o-Y9Dk zT5-fD!X!R^O12w*3VVuu5|KC4^;aRs%OT5qkVo~hO$2)#bc^6LR#K9+P8sxDFrtDt z_3W<%m}Cpgs8gZ}!G!brFgXZI$v>co-1NKo69WcmD-0AoAD@ZKjYYW?6e%ekg9PRJ zhC8(7xFr?vDJgDvVweBJ!^2idbla<2#|bAU%3pi?JQ0e?UhqN`^kA~-ieeY3I!+tW zJYC8IX6fuFrLHE>=(ku+;J+I#P*j>?{ac=wD|=dGpKLo$;4Yv%nW{+Np=~am7TfZE z6H}FQ80&T306LqhcI3pwrRH`MFf=Gy?2{x$dpDjj-5L^XpcZ>;lHT`Ox^#*W17AHB zwE>iQ>wJg<%y!;OVu~Iuw#nx^PU`eAEv2KuQ18AJ=e{1kJ~#Q{U+P7rz|XV1z-wAP z{eq&b2kIq;_0AmG@k~k}dM8aeUQtnjAATha4blUK4F|owJT7_D)@7F*1g<3BneLPb z*hb1T*zgYF(3aaZ*GVc!ev+^wj=e*-SfXd10y6EGx~{L$IyO&o1k!c_MNj@dohF|~ zP1Hm}Fak}5BuSQCx!4RE#d7=8($X9oDlMd;`VfNcxFY)679|fX<bObWt9GyAutoOf zg;DcS^4JF=%!nA|K_|)-7*g+sNnmv3=57QNyXS`|__hLiP!$S?s>#5+V@=h_=o|i; zC1n}n<(lfVg2SK5Nfm8glJ=igY2?-uFn1{{Z(@h&$jHd3#{?1Esd<60O$7%_F8YBY zBGWEdCS0OfQKqgNOITkmM2_{|ab@+Cb|S?=`-ul-zZgbH<y(LSkXlii{Iw7)p_Ejl zVpo|~&!IY%dz*hcZGKjqe$)T-sW~Mx^992fALhwz2`vqV44w=qB8?D`k``XQAx(zZ z^akyJ_#DKOuQ=cw%XE~s+w)@78Snjc`vYi{Ce#`2@0|7A68F9Y6z#8yir`KnJ6D#K zCC0Nfo6Q1w;P-dL%pc=7@tuYNWz$06EF62fI5ad=Ygt5GIT05ZM<szaDz>iNT;YRH z^<5~ms2TJG-#KmGbLNC_+I7a!c>wV4<+=Xv;^IU6#NJl}Jv}EEH#hBX^Qbhra^I(> zr>(v+=VR>Ix4|il)Og3m`GkCYfF``?ekEJ12o?Lb{z`JrJqg39h7v*3o3!cDBQC=B z7OCdkrW6zRhB68g2CPVZjk6!DH`+Vub+elK`ubTZ%^T9B;6@0KKb=){pMVHS<kvg@ z=6k#+q3;yJrd~hey04C{;*C2Lpf$`vltL!V!9dtu`HK-5!!hJmXy_PppqcboDsy-D z`Sa)WHMlAt#7K}K1bL7is0<*5=2NdT2HlicU%O00|NQyWQ$!%jSi65<z)MGX57!S7 z_V+uG^5d^A+qL!3z+%T)>|ju<CbqR@C=ixQ0=-Qd+~^B4%1F}!l;Y+?$<OFW<Xmb> zN=jB*T1lBFzYpS&7Z6N0P*6~sdK~Ye2Zb-)1;!knsa>-tW!@c6?UXsZyf(gjWntxe zg_3#<YHeefi1-&O|I>J<0IvV9fFzn*{t9H5Q2(e%tp8P!B$_1s^8hOmWQeQY1qbOs zBO)UD6eF>mRLF89wiE{Of5!iyx718sL#d_4ldJk&Ry-1&S_(1Z*AC?e%c<*Np%l-; zbyTZ>I$Rx>9#{X*DI8mOYgvCTf_~IsD_@SJ3VwOrdm8td!?K#<v}GyYJznMR44MpF ze^;%qnn;w$gL%z3r;gH>hC2a{>O^A?YNqYiskIX;9#P@!>oVgQBPgDSbvI*^f{{Ym zVOwvq!^oe;sP_LMlJg0p=5HueDYFt7nqd}`*#5Uta=6%fwLM(%xQ-N@KC^aepTtK_ zF0R>5&e0p;D+38!!!vSM1504O6Gu$XPL!i#ZAOP&VW?V%v>kJ`X%3)DF6sbIg&eE2 zxY)h_=w>N78K3wd^(<0qYqLPdI`A-{Yh5UjlnQlf$+|Q+;7v+3B91QaV`E20ha3xl zNh&ru<v{4@D5PQ~zi-CIIY^QoGjQ}+u2GqseS$|hat>ar%{R+k#l^)`YW^CuvRGq9 zy**gJ5sCeNQt#~TB~N+bh*z7YC+0h$UD$-XwipQzp;Uwz;sK*VWg^dX*zQ8cmo~tG z6gjI>9n~BIJpmTFF+W1k!@<EpA2xROe3+=e7lW{Wt$`dxFR7@4_eWKEq5>MCoJ449 zM`iJQCav?w=Hqpza4EM8SJkrC_R|zmJ?}@PCMmh5oKR6TUT7p|O3qk{I#JtGI#dVv z#K81*<>(j{!Y3DV^KHiLc^P#rU@iQb*b`=EwtK;&f$0EMmi+2aM~giw=3%16MkEZD z#KzN{_MOwPMHEib$Z^mRoAu@VDiXKzNmWNWX@_V8*iw*-pAli*I5pb>pSh*BxQ8u( zjA6wBb!K)JcPjjS1Pe3s642rM-ixi+YoYemzNCy}ba-;&0t8qFT{sFow&?B@-47Fm zPbR=vDf*kZs(>nr49quRGIR$)@rJ*2Wn?CkU`*5#RcL}(FmuD$72jobz|HgU@Hn|y z8@sr;pd)@S&6YAZGow<+iGf#NK;;<(hrAMR8+G^M1Ks>@KtyuZeFkIv<~r^FC@2Al zXXwlzy))1Tdv}bqhGya4_;YPm`_;3%7-tuk%$$ej7SFrSi7`Fv^p|sQ7>#Oz?ykPR zf90yL6-CHtrC@3(`FmM*_ZhS+Jy`|j1G=Inq@<<!9Wq0rCjdchiUn`B&h8%ieFuc@ zj%a>f!?AxtsAxua;oWW5D4Ywl(=)~|fhmlX^C(aUtKPAtM=a$8enqFMoY#2w1So;% z&rol$%(ow=7l;QZ0{4E|SXqU8-ji7N<vCHZh&l)iVlO3iuZDzniN=mfB6ZOjg9k1{ z2iJfe!A)xg{<S^KUNOqvtLjfHTTUc;e#B3mLM2<aWR$2C^*&-Oe<fka{YOyRveVP~ zC%nx35m2hg`i&vg+U_!^K-GhTJXk%_<O5FOFqV~?=Jh93)E64gxo`EKVh*%9hM5D9 zy}`~fh(Ib%)0LwDr<4y<9yz3lNeq<#+}@WsBDVSY+1pR{ojD<s`+uh}2mKzvNCF07 z)|N!({hxqC6N)b^yue9=Pw`1fT5`w(_iWX82(54z^Fxq{J$?r785vnwS;>nQH+(f> z3zPzgx0pU}W@aWTlwZ#Bo*v))+?*CRt<vViPc_c!F{Urb#CIJu7k;8a2P|<nfjX7X zT6O<ICiZ_vW*Lt!K7dU8e~^juf5w}n-ztYz$_{#wUdOvypECUCrE!5!UD*<e4n+>m zL5+%Q;~`cKb1rAA=A;JW&xjCw?Cx22s;Gh>c&sQkQ(`gff?w^3GmOXG6|up=wR@X) zMthT63%H)#N|z%f7OuNb7Q4dun~}7dnlT`Tt-)8ONMuqt^oyN%>e<|9645np!TQ{W z>WDoUetU>O#c2lP$Tv&cre*=z9~ot~zKn20oKSPRd4C~f1|F1_GbpC6<3!w5m?)q4 zayMZJ=;wOFjqQ7^7a+^4pZbvf2l5DWKKc+6+PAD~RtI$r0m8DjCZfK*@$Zht##K2# z=ex@JuV3JXZ{UiVZX70W>|jPBO8$zTn)c~h)c%hDIE^9`PlQ?e>zBvu-W6Z#UtE5l z+Dwyqc)I#Rp<=r)U-sySm1>)Y_xjX3$xHI?V=Mh#yw@b`#9aOWG$6Fqz{bX=mO7v@ zHc9yfIjmcY0>(X}e;f{B5}jK5q0o*{1?1p5kt{mDlSn1HZ2LNBlSIeFu;4O^{h&ao z%Yy!DVM;rCoF1<NRJLV1^10p4JeBshOjwes>HHd~M@LuoH8nnC;*y0`Qr^`po+~RW zFT3P3f&QrZ-|{Dq+yu~;&{0Q>12ZP;spn8A6*X<``SrV}%G$+qdOzX|e{GfQ{sopo z%;#u|pR`3bK-7*~&_|q;hzd4703x#Gzkgq4RcF=&$tIG4f5!tjSCx-_{sc&T-^_Tb zc4}FpjxD3e;08qASMAGi7*j+Y<>LrQ6FsBR!wLuThdmp`VRsB|oUbe_EJ!v~NU4hg zA;D*gs>Q)I(j_K2IA4kFH?d+6BdZ-1!Iw=_1?mF)UBzD6i0i<T;zop&rr>Tq)ZR|F zYNA+)KmEvG!}4_Sd4N8U5DA)JOhCF$07BR+v8hf583~C^)U1e)j}KvHN-J<MCZflp z_Qw?+Q4F8d3(U>8O~0Ad)e|Hzw^S9_nN}YZic;Z+x%wZmdSgR;xk=mJg}pAw*oAW` z%L-ND|Aky9LpW?(#t;Q7pQ{*dE#Ro6hVB{l9=hvtG>~XvX~{Dq=wZKzaB+2YY_Bgt zCc{BdHPK<)$bVvQcb6I1Knk~>tYYEOPWT;T0n;EwxAEczawFV`k;b86|AfF`G+hj= zT_GzV@y)rpd^;#Y6OxqHW($~q{W``K2b`=jwU++|?U}NV8Wz95Z8VCwwY7CpOn?d( zn2m~pQn&driX>Z5P>>~o_Z}f8o?(!MtvY|5$rwFYOj&BU2|m1M!`+a7PA@I31gKk{ z08uVbdmDfH8v>1AIH0bkwx2nPC<NEGUh{2r&jK#(LgTBref>J(Uy;v%oUUBcbHZgY z{bARxarpg6FU*xV3z|*@58DIt+8>>*1U<InYvc0QVzh43`{nWy$M3g6wK|NrmmTxZ z?@v77mDo`&PqJmUNuBL+^}8%tCdS8`7cEujj37;V{U{<;;au<2GBWBM;?R5Gu!&t* z+=UrKTab{EOY2GrKcB4IR`I}SB&VnAks*aEje$=Cq<Y|hRvXc~6{;=!!=t0xX`c!X zco@fCkVUTS{ISkc-|ch_Bjpm!7j13)%})1^pV?DC05kJn*rIPK3kcxxX_P_Ms^;cL z+Ph**c6Rn*HFfoog*0NN#hjpZn1KW5x%D#0ecFh1y_U2UUDa8N8g%sp)0gO_Q$P9V zH(0o7BLkG6La}c@N&f{>+<!m{^f&)`{LcwX6^I2608;dSK#J!MRXFb@qc;x&f3B{; zAm-A5yGTDwkm)+w(d^f70OvwTtc@+sIGY`#vt`@7KclF17$oSuUXp%{o_XBJwnA^R z3b!l~OQEn&znV|XAQt>i#;3p{Vj)Q?!TwC}DeGF_%}a)vjqm(|<ZP?;jE|0bR^&Ys z1Wr<w$Rn+QGBuRUUt9!?3OI7{V-qWi0GKM_RV3$5EbzMGMwYY)N_3zCuB6nn#z)+H zVyzACm~4eSX!x!%&rs1vg<;&zdqe3~g<p6%M5vT6K3KT!vK{>&?C)M*;3&c|YSRG` z;WN0OBz1sv1gkjxD*7BD3rmJu=?0{JFtR}@tH5w^XL)&9+w@9g8hR<vunErG$w_<; zSr@R7Pyx<A{yO4KjE!+&iw!5dl%;Ka7!?sb?%Bx~7Z<moWbUppVU7i&J#}JYVn>YN zT2A9Z%kR}UTBWl?m+KGY`AFr#9R1-|8NAvXJohk6FUS|@=Ollb3_j^L7pR`#d79t` z`=Ww3K36$tQ2?i1imu6k66H;kM#$S$uH4xVc!%Sog>PjdXwRc9ciK&8e%(>_yw466 z7C&vhy<5N9*px9)QHetb#7;1n>{#IyL_{DJQOnM{|8#V5xhas-G^v2(Wk`A(H$o%e zb*#OiSv)eHg@5(@mNUx(=&B>sawdO?TnWF5`urP@YGYawBrj(DeZH|_>JVdpq?T1f zas;r@K%lm}q_6*4F3KIc)2_epmuJfB)4PdLPCQ&(J{?_CSRHyWqD|mS;9q{XGkq=2 zlOjMMDc982#()-)gQ#rCg2diUjQvg@v$1qPlW8q$dWWneLbKq!%fxenm@Y~q0HeFP zr;TJ}5@%AI^?*r>OXEqHP!SdLwIsIyIA!&_zJ3QU6ox1VVw~jb-^-H%S)-iu8Bhet zss~mZQ#Jg+ettlCyEoOqEk^$VtumwRUqDqNVc_YXw?D2#MF^boJ3BspCdY3NLWB!e zHolBB!?l5nM@t^j{H)*L(zPu5``51_<_b$nh63#PVPPZh;<mO`VB|9QJ<S(^s|sBP zNpA6#Rap4UwA3u4`>KzH65X7ji`6^G9RY45ybYh(X6(ay83-PmRK`$4(-ZT8)xxIC z_{S8KzM0?!Z){s9i6`TD5xgAo=9VdJ%{nCy0?a+-BSr_0py0`8hIdoJ_ME?x#FdoB zP1b0Pd|DSPRZKVn6n@|$O~Ri6%CddO`Qz6Gci6x#Iahkg!jBjo#@xG}->b2cYTXu7 zA*2dq6(ApXeyJ)T2yBp`jB|6S@n~su%RyYWvUvdd#*Ajc;_!9;C}5<?cqt!A7-+k# zl#!a}vi7pZ`ufa%sl9eL7UzZ{x>q}T#M(L(wA|Q_<_n0Gfo{OYfaa>r8!>musf)(= zHepY6D}sAD7|j0e+xtIu_a8E5VpQW0e27w8p-u)9>tDG-dv-yl0vq<d7PWi}Tqc*K zFx^*-d!KP={ggD^TK;|)|Ngy^_VgD)?u_u(H=K(3pU*8Irt`~+Z+(A`^?~zjKiav7 zThfXUTL!WagT>#<@BS1M%TV?n@1CE-&z2C`N-iz0t{U{*ImH*l69i$e?oG_ElPVJc zVK1o&*1MlPY=*$_|F*SNfPX6fg0(ApyKLvNA3A7bLgtwCmYMu2QT&|->t=8G3-iKC z;yh{xGVhibmU0m;W5y!$7cQR(>SyE@#WFqaV!k~9mDtXbI?n3fES%j;96y8POziEx ZP&l%&@zL$q{%42|l9g1Fs1P#__<sSv_ly7l diff --git a/public/pdfjs/web/images/secondaryToolbarButton-documentProperties.png b/public/pdfjs/web/images/secondaryToolbarButton-documentProperties.png deleted file mode 100644 index 40925e25ace9954a0e3092c1cd19a02eca82fd07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmV;E0c`$>P)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e00046Nkl<Z7#U5$ z!Aima00!WH40Z|h(5;J?N_G%(p1Sr79=dkuK`L<Ii0bZT1wxtyMI;e|fiRdlp|B1? zL1J!ou!0=c_NO*S-v<O3r$&Q4_GnOJ9RE?G>f7wOH{J8@xqHK&Z&Rg&Ka^Nx_w{OH z9m_}{f#t3B*DH2;L<wVFhR=6;G=&JJqS4fy&Sx(JfN?%K<yjd5MtI6Ij0v-{Q|2QV z;b!@;w+aCh{fqtu{s?=kd~mZERKE;FFqMRYsmQ<>RN>ve93sSHo*-nGyj%E|okxgm zwh?+OeAn@Q=~fY<MGGPK`n`<yE}K*kV4ZaYsIYmz19inWhIxvZa0*Tl6BLJe-%wY8 zndUZ4Zc)To5(-8ra+79r8#4f6a!04h11=%JB=>1{^q7nZVNPje{Tf@WFvlD#Z27f@ xHm5*9K*0Q3+R{Et{`F7g<H*w1(pZ3ikza!z$HP=Cb}Ik?002ovPDHLkV1gF|uTTI0 diff --git a/public/pdfjs/web/images/secondaryToolbarButton-documentProperties@2x.png b/public/pdfjs/web/images/secondaryToolbarButton-documentProperties@2x.png deleted file mode 100644 index adb240eaad3c4cd7329cccd7af188e6472302a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 933 zcmV;W16urvP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg000AQNkl<Zcmb7^ zUuaWj7{(tnFA^{XcefjD=!K+>+qx@PFC2mwUI+_V#0!U0aTB~4lirBT6~rN1X&QR5 ziS$l!Yw6r@1zSsJY|}JHn=~zE#x^mTTW2Vij5U8sa-O{(2WEP{rm**SIDC2jyypZ$ zu-UMQe)e*dDJ}~sIR)q!6*{`)VITiso_|U8Pg*R?r@W{^akpIH<d-Te(an*il5jR! z&}=@Gzzd7D_~PwQ&)x33-Jzbv+iP*rES4qJyxD>_^Ea`77qaQWFHU10yx4`egk5sl z*L^xY$SjrrLXvIv1<huXIYnXW;z_ik3APcX_2S9Gl$DZnbNvFR`G8qPcBo}P+-NlJ zmi^fwD=7`<e+z1tManSqd}!xhIIz_?cJ6&Xq_WJ`F4s_lT=bY3rkO5;THCR$KFx!i z6Aluu!M4`+LP+JM<sm?<_i>3!=HiuO_NUk4Dp-rxP!Akej+u+9vmRIn=r&V)#%D{n z^zUANtej%Bh>gI#bW1tXbffYiQ;O^U>#+0frzN8px$(&j*!fOcii#hF0H5;dS{O~x z=S_6reYxw?v=&yqLID5#!X%TKfeij91FHA;2r34j@JZrQ0y-RKPWX|~NnBFBbpz%c z7q~EgZXP;JDo^gvnLnpIa}H*V2_{l!Q_vB|0y?R)$}wZ8OsOAB?m`Ya;#fc@cR@Lo zFkanZjIove73hd#0iBh8<-Ga{=^$r0Tb?LGM;r_2lqZyv4r2UcJ`!g6t{xKI0vhi~ zL!7ZwIN_;I)1Xld7GXzp3)m?Jm0q1b;Q_WM`xzBx>C=Ky3r+X&vC@<M*bboUKsC$= zBh{bj+!)M%uk`#6dDKIvBvn4#b)XB7%QbV2(?YZs<Qv3m(2fs;_fR*I=wnpnXRg5o zYkc0-VTJ{Rfemk=<CKJ<va7>BuMa*c3vhgNxHQU1A<8>!BO1^qZdBz;qo)pU{QGfz zcC>Vl4}~z}{DyDa%c6YEn7EQD-TS-~F4$(r@gu8)3{f$|Igarwo?)kOMowd*%vkQ~ z;PE5a0e#@w-4VHJPVfO0lZ?>dBf*f<q@|h@k*m8q;6j6OprzBl&|AIFUv;YY7kWGW zXpz*G<H8>Ap@H*>o|iYvBj&g{ULJXQGto0}-g^jp^k@GIS5r3yiD|~C00000NkvXX Hu0mjfs1U=| diff --git a/public/pdfjs/web/images/secondaryToolbarButton-firstPage.png b/public/pdfjs/web/images/secondaryToolbarButton-firstPage.png deleted file mode 100644 index e68846aa5f609f48e89b25692abdd85c2de7ecb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6sytmBLn;{eUNGc3<RH-cuzYC+ z6Th^R0!ve`nWhd;&O`^Dpor+#_a2mUwI<%&Ds<ocX?*WLqdprhKaUrdMd!Pdr@Ya6 z%U$Mm{NM@Udk4<)EM1WPILqu;%!Q4c_N*<*ykI0eXXZ6_-bQbw3pGu%I*X6F^d8x6 dAM)#99H-!Av0COEwLn)ec)I$ztaD0e0su3%MKS;Y diff --git a/public/pdfjs/web/images/secondaryToolbarButton-firstPage@2x.png b/public/pdfjs/web/images/secondaryToolbarButton-firstPage@2x.png deleted file mode 100644 index 3ad8af5173850f4b645f9c94f4efe3379564b128..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmV+l0rmcgP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0002dNkl<ZcmeIq zQA)!w9DwovNp=T!g59OrvMt_EUlc_|Tv;h)#WBVZQT7tN!e^j}W3*`!M11J?d;etU zzr+=v39b=Da5(aj;P^9mPxL*oH@wBOw^po(b>u=O3C8jVap{PU;A41oOzOaJ;Key$ zQU*)*)D8A5V+RX%R3~;UVg_@zlxMcgLkF6gqD74k8E7`-9X9B`!HkM$kBXUZFs0<F zN6EBnpeT3@P@vidiZu^`)~NGAM$UbNoa}UvvEnY$s#!FbkxUYd<aZkS0@>+2AR>HC Q6951J07*qoM6N<$f&iRyUH||9 diff --git a/public/pdfjs/web/images/secondaryToolbarButton-handTool.png b/public/pdfjs/web/images/secondaryToolbarButton-handTool.png deleted file mode 100644 index cb85a841b18be0235fc6c6714223609e1097d1f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmV+|0n+}7P)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002=Nkl<ZcmZw7 zze)o^6ov64B3Rl4Qj3*fVJAL-jkPefVCQRyZ;+7MN+IQ_C}I#%TqAK~h<_HuAXwN0 z7B|8s+~Z}UFzaN0%Ll_fD1JQRG2sJ?J`}jBf`R3s_FX}G?1ck&;`lUi@T!Vk<dQ!~ zRH1SsF9OIfJ}bY|e3U1D&{bZ)%IxON9N-pfTp`$2HP<(4M|HOINC(*gJ95u?wp7P; z?18O8V*pf*-12T@*$ic;8GyN~T}JwhLa9xG6s3jFeO^z}ulE7{r#9DyXS@u>J24O| z%<gUT;=gZemJMK>QaP!}IU9e5CrM>v9W%fW1qojxzD%=Q00000NkvXXu0mjf%W{5L diff --git a/public/pdfjs/web/images/secondaryToolbarButton-handTool@2x.png b/public/pdfjs/web/images/secondaryToolbarButton-handTool@2x.png deleted file mode 100644 index 5c13f77ff003460753a39d9e406c0020231cabda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0006GNkl<Zcmb8t zKWGzS7{~FS6k7xZ2dh~m3f8%Tvr7u%;Gj^@-MWg1Ac#<OF{2<>sDncb1tl(lO0{5H zQE6&xnvkURPmGNv7*b6L!Th=V`QF__%SrC--TQe6-{l_O7Xsbk5HrdU;SJO<GTh{* zkul&6h6aC%;5QIO0cDWW%HZw`B1|h0yElYtbJ4nsxoE;ojhm6OJ~2}E6MhJLnOz&Z z-=H8gtzVEAn$|D)CN!;I@KxygFduP@;qD7Q3r)8kTaW3?bkKnsH?9lNvm0}Eed&IK zHKFNt(kdg}^{>pV0KIxYb5^yMTWCRz8#4m*=<-RYnu#WwP~*n506n@GajHIFM;%}f zFY^Y^aW7$86$8At-QN{yj&9v@sxj9<1L$1g8gpFdYaS((q*!NG$}P*BQ`PAzs=(Gm zuGm&PFW5_{a(v>7UM*fj4M<$)vPc?t4M_V?iB(Vmj)#B6xFk|MFXcmJ%3gpyBWK$S zOgPLXDIdy{Wt3sfzR7D`46gK~gc4x?9LbFFLr|r0SztMRsut(_U<wZkC_s$`J-3I= z1-=U+AI&2V<OL4Q+~M0G;+NuxLyf?}aPcV@{Q46M^@k9GnjII<{C&xJe<nsIU{SLJ zz2jFo=SSi``qA|q`WWRKJ#%(;wC_Y89BTeE@cd?Fs{N|lr|p^F&l1t$3pj@D^AD`K Vd>iii;Sc}-002ovPDHLkV1iPk2)h6P diff --git a/public/pdfjs/web/images/secondaryToolbarButton-lastPage.png b/public/pdfjs/web/images/secondaryToolbarButton-lastPage.png deleted file mode 100644 index be763e0c4a02cab5d7842c8999faade8c47059bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6$~;{hLn;{eb{X<9DT=r}_bOuI z*S;pAB4U5DMLQrPIWf`wN4P|1^q&c>d5`zJymvU>ZK0k3(_cShdv}w=iShns``k;6 z|9a2*kZNL>>-ng7x$0%-AZ2dv-evusD-M1!nVC^#Cw7NZpelLZ;<(0t-0Qey{BDRJ YJiB<=q@5ck0$sr1>FVdQ&MBb@0Mz?GUH||9 diff --git a/public/pdfjs/web/images/secondaryToolbarButton-lastPage@2x.png b/public/pdfjs/web/images/secondaryToolbarButton-lastPage@2x.png deleted file mode 100644 index 8570984f2d9952ebb8543a6c8bbca2408be3fe90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmV+v0qg#WP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0002nNkl<ZcmeH{ zOG?Ht6h`k_x&vK-E9(N<(w06K;A0(%gSJTsBB&rDA_{fl7CxmHt=d--L>&Czfjc{g zj6%Epm%+!Y13m~u!|`;DXFGIF9(|doYCM^ve(0R2@MwmrSf3_JJZz&%)@Kv4!2LS1 zV0}4}<8B$5v%a3la66C8Hg!&j6gN{uYNm4{!PR#}Vyttbi*Y&9#dbQsBEkhDB5R!! zZ3qqBhHg41f;Mp0Iq}XP49B>3;N<f^K!bA!nlW(Z$VcGi5U2L^M?LjK!`Y()2li>V a-`N}fhF>K<1*gRT0000<MNUMnLSTX{Jai8L diff --git a/public/pdfjs/web/images/secondaryToolbarButton-rotateCcw.png b/public/pdfjs/web/images/secondaryToolbarButton-rotateCcw.png deleted file mode 100644 index 675d6da2c09cebd7e2375d94cbc43de49a28a6e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj)XP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0003mNkl<Z7#V%R zF-rmg0EXcY#6@U`6rv^CT7n9}p&~b1>IXDM<M{&wN4ExD9SVY`8iJylj6$)9qQgiy zFhu1%9HQD1I=VMBEeY&-BoQN~|Ioyd2$CdEixzp31oaCWn=P+KizYTUO<G=!HT6-a zPLqanlrg4b)3J=<9MQmGRo|#mrFxatj7H^?PotW-N>lYJjH!bP6)MzmI9A`JeaMrW zP{;Eb78VxP+o^u+tz)%w>Y7tjQAHKiynbv>Q2u<>aK#ZG+*=LzzJU35q7H&2Nb8UG z4tHis9hc+YH714zU~vDD-<VaGf7hUhNtOr!0z}ASQrtD<S5Ig=?w)f)i85tM+_>l4 zafLJ>w7618y&iZMZti8jkXl?(NPqY>rLdN@q_C#sSI-x0yte^Yo}f<v0000<MNUMn GLSTa5F_{_w diff --git a/public/pdfjs/web/images/secondaryToolbarButton-rotateCcw@2x.png b/public/pdfjs/web/images/secondaryToolbarButton-rotateCcw@2x.png deleted file mode 100644 index b9e74312270af04fa2b9b033675d8674faab64e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmV<10wn#3P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0007_Nkl<ZcmcJ~ zUr2Lx90u^mmDq%63`rAqV>h8e7=r0Vcp)Y9Pr|5OlrS&sF1(Z=>P7`I$&2V#B8FQ@ z#xx11n2B@MtaN4N=HFayP|U&0*qP^fzdz3rbvx5{@V?*A7yO;ybIvoweHnhs|HM2| zKI2b<|A+)(s$d&G<Se(D5ZesM({plLvf#)BVWXR2CiyRqrPOdNPf59TOKMqgXnI<H z=R2OrCx^x4_C(SKtAYd5i8wOO)+CLyqqtzdkRFTsrv~5XsqK8~#lE+u2IGD`W@ZQa zAv+2S_O9Fe>YW}mq85+9hKEosr^Z)ai~BEfeTNO#3*wjb*wP4^U`OFpp(!|`#~2s8 z`FYx|7Q`+s4a0>};|dO&@9px<s|9~wvCm`EH$)-0_I$>Bxm8wN7W`#thbT7CssC=I zTAKz9&;++jKrz^NzcAADM`@&iv`7W`N3qmw3RZ&e8hPgH3^G7Qpcx$&o`vOn_6(y+ zZas$_WXt7wl$(nFs}3E|%QjcV-;}eBGn_%TTz6djMaiyYk%erz{(qejCHZ9%NywHf z{V9J|qQg-{A#0$GFYt5L61R9<|A{{;zE^$lK~~|*404N++(Ztym|$2*&p8|pI3TP1 z`L<k!M1&sV1|E4Mq|CfG14UM;c_QiOnxfxS;gNJrN&0K*YoN#)`n$A6uAbZACv+A6 z@BCPjRYhCu@9Kv^)&TpsC%?=e&V?D_7++#N9~Sj;8k3L1Mw(w9_rMN|agO$B3tTa+ zOUWj;#HO6qFYdL4(LOj)Vw~>ol$YO^mh!s0;lvGNuWs=UoKADO*y*%)pt=Qi+&XoY ztsnG;h7yz6Kt7lcW&?@I(9rw6m9415J&yxVq8aUYUbLfGo*u)4nY;A)5mO4m-#Y*R N002ovPDHLkV1o45W##|? diff --git a/public/pdfjs/web/images/secondaryToolbarButton-rotateCw.png b/public/pdfjs/web/images/secondaryToolbarButton-rotateCw.png deleted file mode 100644 index e1c7598886bd49e194764015577b766aadd82288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmV-t0hs=YP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0003lNkl<Z7#VfJ zF-rmg0EXcY!bNBh?jTyC%_XP^T#Vdo@eedb<MjgyN1GaSZ72wuY6uLZMJW`EAUceM z14A_K4k4&UA?e<@vXa2(k;WoTT7NLeQl&?aDp?E(4_`mX1RZ*KxVU)qf)2a5xcWv0 zpC`Xqu;S@>x?uT5p77|>RR|+!(Z0%SPBBerLNU!<<!RHVt<YebNB2}S8sZF}E-hNL z6zZ38j@I<+t%QSvgY$f@(8mMKjcNT^P)aGKl+vO?A2#>(Nsaeb!tN(Ep1s3u|3Lqc zXA482_4)TIcUT&Mg&ka9PU%bJ(4vmb9tomENw9}a{m@cGL+1YGpu!Cenlx!}GpOuu z%G3xmxmwG;o&*<z^2>28mt2*pe<GUIl2){=CCw_Lp-;j?w+ux$rQ`qr002ovPDHLk FV1jvRo<jft diff --git a/public/pdfjs/web/images/secondaryToolbarButton-rotateCw@2x.png b/public/pdfjs/web/images/secondaryToolbarButton-rotateCw@2x.png deleted file mode 100644 index cb257b41c537552a19f711ced5ec19cad5fc1c9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmV;*0yX`KP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0007!Nkl<Zcmc)J zK}geK7zXgymDHq2MA8H=)*&<qL(n{g2SK4EA)|Itm<KxrJ4z6qR1lLqgjb;$HnM_Q z5>7D_=c-w$rRM%>rppb3*+sVXe|le>e}?;(Er{M9e0<;c?0eV_qyI8^j_+&`1R|)U z;XGO}fI0Zt9GrYA<6DaHV~zRM1twVFK>**dj<uL|J_Y#J!YQ$@F^Yl$yub!OSyfoW z2B&2>W85SZR6yh2FUfJb!D6Sq1r_=#U#<w<r#bqXuh!*Mo~~-V-q)--bRSj{#227I zU&Qi`<wx~(R7g2=m`rqlGI&>5b6Imp7B9ZQ6dlA8G-$eSq@9Y$Onc`L6}j4VAGA1e z1=skwPmHutJ|&xcR~vkBjDocAI6jNzhpOjziuITk{*=Ke2$x|I3s}%U+A3|7NKzG} zAk>06vGjn<q!`YWjDjDJ@kzLDxJV`F<TOEWAV@(XS;CW;6+LHrNQH{2Lg5_kj{Y9g z!g|z7sUlf^PT_-?Ju*wFB3ZV_@J@tIg(y`dOTYoI*u1hysUlfs+VEC{?)~LA=&QkN zp}#>6XdlOMA5}2zo(U{7GxQ7|5$+DtKDyz>3|zQm6o@A`;T9ZPLCJCIg`0Wi>*q<x z!m>{U9GDRL?<%aEPKbabJ1?6A$s(GnBf}UMn8ID;D}MVOPR2!KxT(5{c95|#cUhyO zcqQP07oE6>JRD?syzAu0o}Dy0+GSP$>9RT+BSRRAndFjb%&=+RP43=DhB_K4i;_&1 zr8a2C%jAM~ORYRlKIV)PyKSo<qlvcq?Y4{(GSj}3n_ham!QJZb-F8M@QP;N9-|KF@ w)sS9Fx%9`ANhhh8%IN|tr(!-Gqkl8M0N&iw@8RFz)Bpeg07*qoM6N<$f{`^)u>b%7 diff --git a/public/pdfjs/web/images/shadow.png b/public/pdfjs/web/images/shadow.png deleted file mode 100644 index 31d3bdb14f1d67953d18dc04e73db834aaa200f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0$IP)<h;3K|Lk000e1NJLTq000vJ000vR1ONa4*jfHZ0002#Nkl<ZcwSwP zi)zF$3<TGw=GFfHuU;?j4l5%<Gb{mnguG39@KO-L1?S_Ul+dh2-x)J0{%eC~u;lz$ zoHdkI(qaLH%w3x-S__RZrCKtI85OAwfCgPj+2ZJ11x&@<=f4<l?t5qF;Akw#cuj*V z71){UgrN+Bhs0&T3z{OEHV{EXT2ja}qttE?IazY(?L}9f8D_5zS12oTAnoXuvqlKD zmNd^FNE@vAhdpo`3LxF!X0ReSsns*#_S<%|J-Df$qp$eDZ}EW@HtO`Idnxb2s^2GT oB_ffMtXYz~74DmZmrhdOA7pig*b&_Op#T5?07*qoM6N<$g8tEdk^lez diff --git a/public/pdfjs/web/images/texture.png b/public/pdfjs/web/images/texture.png deleted file mode 100644 index eb5ccb5ec3cdf7f20c344483958a2684e11e6df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2418 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 buTQ~y@sPxsykY#=6am;+;LIB^-iiMKh=Eg; diff --git a/public/pdfjs/web/images/toolbarButton-bookmark.png b/public/pdfjs/web/images/toolbarButton-bookmark.png deleted file mode 100644 index a187be6c9ba78003d9d2013e4cdc1c7f73bb8949..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6N<Cd1Ln;`PlN1;paQ)lw+{`0z zf+g9Y#<^8O&ESu7Yl_B?ZZ1R7KaQ;>28}V=>tyzpi1dq!_s#Y(o?Z6PqD=UotbK;z z+=pt1eY;;C=TG8Xk<7mK*`GaMCo^*7N1nAT`yj#0VsudA+GmM(2Yq*^+n%4r$i(=* XtGDvpiMgkM4q)(f^>bP0l+XkKeAzzU diff --git a/public/pdfjs/web/images/toolbarButton-bookmark@2x.png b/public/pdfjs/web/images/toolbarButton-bookmark@2x.png deleted file mode 100644 index 4efbaa6758dce6ea82f9e03e81c0196cd806b266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmV+f0sH=mP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0002XNkl<ZcmeH{ z&B}s66owD8@qR=YYP?CMM1;JUgaO?&vuMB(L<C#562eUrfyC!fj6Xqq;CVLk;(0i) z3lS`w?+et`01QET05=213d+DL7$LYD`27WIh5z^s)(W+#&kHJ4V&iSSO3bWKFxS7Z zhP!@onsGtS>|Mj3PYt*CIh*)L;+Ye)qJLer!U=dbLBLZSzSesM4tY9KKocB+w3G#Z zP#|$ck0S&$A%{+O@CHd@not;m^nk=r!lx-oOkfDo1ASdr=)nV-#q?0Gf`(oI0000< KMNUMnLSTYMTxkmc diff --git a/public/pdfjs/web/images/toolbarButton-download.png b/public/pdfjs/web/images/toolbarButton-download.png deleted file mode 100644 index eaab35f09e12fed1a285ca765b38846f84ebbb91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmV+e0sQ`nP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002WNkl<Zcma)$ zJ<7sB5QeAv@D%B^vrw?#!d|q`6|@k%klw*Y{3RqsK(P=k1Q9iC;|V@?oXNNhSuC6f zl6l{K5*B_Moa3tk;0QsG*Awp*04*yj+yb~MaHzsHpaX`8^bVJR2NsO};Vg7}{AGXO zvkE5x{(z_EvkFIn_b^Mb7kCe|6glSO7!3F^lbAadGR*$h7||v~ZpEDn36Z+xM`_S; z%AE?klEf{rj!oRqku+YgQz{9n4s^AxBs;TU0m?@U%oo}~^9E?zG!7ESS7rbJ002ov JPDHLkV1f;GXr2H7 diff --git a/public/pdfjs/web/images/toolbarButton-download@2x.png b/public/pdfjs/web/images/toolbarButton-download@2x.png deleted file mode 100644 index 896face455a605a86196bce9ad3b7d640468dd17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0004SNkl<Zcmd7L zyGkoj7{&2#2zDvNMnqA346TOXTWFCdh+-`&f(V{29L_6PiWjWCCm9n%f&@jBsJR>) zyTrz@9NlC#^DUV~uyB6O#`Wc|{GJapsNf}n_~s#6@aR;~Ks|!^o;hKkb<`q>uf_@c ze2Ny_{735Rz+(^grfCv7@DMF@(?E&?)gFc+;s(Y=f4GnKw)K%<_IcMs6%8~k4%~hd z1#ZH&m*NR=jd<c<P467I4jUU4N4lRgIiYtBRKm>9Z9?xHxKc#XI|a&$D7>pcNfCv2 z6(}mA@U8*{MHJpuAa5+piu*}@=C6x$-8&9=MtcJe#2}8pdIkrw28vjvgyHy0F}R~Z zCUA)rP9TO&f3a5-II~coM6B}%`OpmoPD3uR3@7y8J#|5W6U7S>1Ne&^?G!jBIjmz4 zBlw35uM~LQ#}Ub*j1tayY3;VeknSU$Z13T)Kdqf~GA)J#k0F^Bw@*|4^-q28r{Use T)~jCX00000NkvXXu0mjf;mWr^ diff --git a/public/pdfjs/web/images/toolbarButton-menuArrows.png b/public/pdfjs/web/images/toolbarButton-menuArrows.png deleted file mode 100644 index 306eb43b86861ffd83ab17541d64a4e8d240c86a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^>_9BQ!3HF6HKu+5QpTPxjv*44lM^HyKK%b*U#Aeq zu;`*{L_>wHfPM2NofDJ17YG^bX|d`%n5z@V{_rc;Tt)`NYtfrMyS6_7YG?3t^>bP0 Hl+XkKJQO0C diff --git a/public/pdfjs/web/images/toolbarButton-menuArrows@2x.png b/public/pdfjs/web/images/toolbarButton-menuArrows@2x.png deleted file mode 100644 index f7570bc0d30db3dafe54aa7c1fe92367690f5046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^d_b(g!2%>Zo;S(>sd!Hp$B+ufWQooP^)>=V3JT0Z z$G`noR@ib>ZRMZ;zy7B?RLGuin*8K{y@Up1n}eABCY96wr#d)VuzZRTnDjQlktL_y z<57djB$XEmhvE+MurwWXw|F2ZV0`Mr1B0n74EE`D>#U8d6@XSTc)I$ztaD0e0s!v6 BGz<U$ diff --git a/public/pdfjs/web/images/toolbarButton-openFile.png b/public/pdfjs/web/images/toolbarButton-openFile.png deleted file mode 100644 index b5cf1bd06139d17c90cb6ab492221803f5047543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 zcmV+?0oeYDP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002)Nkl<ZcmZP| z0{q|c{~Z)={m=QI0TqIXXaAo-Adoc$n}SD3@ag~8Nbm+&K}R|+*q7V~RB#?>G;VmC z;q~VKH(~JG$%=&H*l#BhBA@m%+@JRU8U%hjmgvvG%fOT9|Lqt|?CCOwE9L($f#A18 zKxs~}zd3<Q4naikbTgca`F|b+Ya<}i5G8ey5Ycma3<ur*p8-Ljmu|!S4rJYch#n1Q z*l+Ux1PsCyAVdz@G3-$Je-s8`3J@Zjv>BF({67qbqF`wWgvfL;hE+U&_WnNzfk1a( t2EvOl{_oukEDQ`x40a3-IG`;90|2DgL5N;Bd29dx002ovPDHLkV1nayd!_&Y diff --git a/public/pdfjs/web/images/toolbarButton-openFile@2x.png b/public/pdfjs/web/images/toolbarButton-openFile@2x.png deleted file mode 100644 index 91ab76593eadd6280b2a554d8d3eb1430d7ef6ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmV+>0@?kEP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0005)Nkl<Zcmd7M zKWGzS7=ZETVn}ciS_N09V5|rZh2kIv|4^4MRUF&|?d0I#5cd*62s+dv{-YfNl^{jj zB&60xtBLfIQ*&|}jcJm>V8EdrV)CkilFRiwZGwaE58mndUOxVhkz-=YH-{A&5&o{d zns22dWrs@ZlkDB%fnWKmLb;Wa?OQuga#3zxZ}MmDC0|@s<g2T>&JT+HXqXKe@Ow>O zxH{3h$him+5RYuj9yN~lP7jG!JjhF_%4%QAQk5*<6Jqsm?Kz+C$$K}&xzJc>>|@Nm zsKzm_h^c1H4jjOTZ(zSQ>)J$FIwS8?teL?fGyt^0A!|lm<t`CFC~r3VaDU_Z#tHMT zs!N^X<c_8;xo+m2uIB)nFKFD9oYSLW(AJWYwKJxCK{T9$KVVErwp(~7VQO(%=`g1K z0Y5GR#<aa%U&I3xZ^`S9=x7voH%9Gk?O_dSSd)^mF~w@b!D=(@ZRvIiN|=}Bl>!cm zrf{tQ1#;(QSpf${lMm-1Pv*3|P{2Xa=o32VET52+0uG8MJ)VX%$q`vnz(LU@4ksYN zlb}3P@CY_uRWrYD9_C5zkwt}Z+X>H)v#KVxI|eagyX2`tMhu(u=AyNL7l4cY^~bW% oyZVDVb*O{JA&&H6n13-p0bKq8;5tc*kN^Mx07*qoM6N<$g1cw`kpKVy diff --git a/public/pdfjs/web/images/toolbarButton-pageDown-rtl.png b/public/pdfjs/web/images/toolbarButton-pageDown-rtl.png deleted file mode 100644 index 1957f79ab95a970cc93eaeadec532661c5a1ae55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmV<O01f|%P)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002FNkl<Zcmb8o zK?;IU5C-6Zpc53d>kgj4Lv#w4(S5>&h#<m)I)MZ&f}llE5ky&tPujPrzj~ug_S!Tb zyaE4ThW;A3m>|Q|$T30}L=f&H#|39(FQ@U4`qXaxf1Bc1+XmFJ4%~M*)ck=@jF*AE z@OmCGUIsRTT4WE_AE@?zRCReJsxQhE$k7T*n^xpdHBOme(Nrc9n@SO5E{eDjb45p( sF&)`4S3;ynbtti233MRw&&qfF1f{Oim%bd<nE(I)07*qoM6N<$f<Ve*x&QzG diff --git a/public/pdfjs/web/images/toolbarButton-pageDown-rtl@2x.png b/public/pdfjs/web/images/toolbarButton-pageDown-rtl@2x.png deleted file mode 100644 index 16ebcb8ef1e923710574bb914e19526f2545abdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmV;90df9`P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg00041Nkl<Zcmd7N zJ4ypl7{&1;s3@c{OGq0V8yDaXVy9wf73@>k=KUzNjE&+Z(ng)kL^NUuQIUigABdoZ zjSq~+fdO@9zMHugg5R&b=MNYE`8du+Zn4FCK6*TGn{x~k1gJ8@hCRLGEpOaj+8e8g zB8)MpkFy_r`|-8kb8}@LQy6}n7&Pq1SAK);+5#pKbni>{<G#dNM+m|9w8Klu+i7e% z1~<e6uMPGj?M;kA=h$IaQdzFR3l#x7vU0QxFO&tmki|oBcp)y}xeO!FJDw@P50tcJ z`hk{A9Z0a}(v*2#CB6cP)Jr`1oq7oo{J4l!<gq@h=*-=T0*~}q1!wM0<arp($~$v0 zVdi)+oS9S4okW(Fnwb^mLc){@b2(AV(D18e<hh(kbKk9&R?p>+q`3FZOa;uPgpuN| s!;t41i6pD68cF@RkkFqi61Km+Pl0_ej2E!U-~a#s07*qoM6N<$f+7928vp<R diff --git a/public/pdfjs/web/images/toolbarButton-pageDown.png b/public/pdfjs/web/images/toolbarButton-pageDown.png deleted file mode 100644 index 8219ecf83c6bcf74acc8d0cf5935347a7937edb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmV<K01^L*P)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002BNkl<Zcma*d zK?;IE6vpufK_{q1tM1?lIz$JFI#9F_5kwfM6G+e^2wDV1fs}<f(%yxA#nkhS*`oO^ z=E3);KOVZ6AjRECFvkES2t;k_Psg|*dAZ{DNbQ8b&cVf*6^nvcb<Bo{S$QmpRmZ4@ zlZBWZE$oFIh@Geh3bC=Z#D+2fIa*=Uq!l^zc}^Z;U6+S4n<NXc5?R2rm1rN!H|^WA oop^{4X;0>6;%ZmspUL<91jYXM#X%ehtN;K207*qoM6N<$g5$DeH~;_u diff --git a/public/pdfjs/web/images/toolbarButton-pageDown@2x.png b/public/pdfjs/web/images/toolbarButton-pageDown@2x.png deleted file mode 100644 index 758c01d8364c5597d7e9ead825cf4e7754c8d929..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0003~Nkl<Zcmd7K zyGjE=6vpu*s3@c{kB~MtHa>uFpq+}Hm0+F1Hup;*cG@Vugl*K#ZX`wwAsWOGa}fz> zkwzm~KZOBxbLOmLAviyn;=uQ(|M3vS0uJzqrx86=v5yr@f+Xsjpdf{JHeYJ!j=0AI zdMIPgH=xkW`qFa+9gXf=3-i7Kg{HTb-3Hnk9k+}r-+)2^XB#c8_HcDb96Kz|zFy%@ zr+?TdjvvNrduZwmN(16Fr=vAAblkd2oaVF}#;t%j0<#gojle8GW2g(H0CO!c4%7t3 zfvP|ZM9}o82$~*|&j5vrIb8luF-IZ#_Cih;7v`L-ntKx&oSShnYR(gBlz!%<)m)pf zQ#kWyr_@|dB;m;HB%5m!ww^R+i9!MvS4hZno`~brs}PswLc)&W<cl4X=VHQ&;aIWQ q+%yqI9(gM&%*_(!b0P8JZ{IsjqP}qdC0j-S0000<MNUMnLSTZQ0jpd9 diff --git a/public/pdfjs/web/images/toolbarButton-pageUp-rtl.png b/public/pdfjs/web/images/toolbarButton-pageUp-rtl.png deleted file mode 100644 index 98e7ce481c163c0d4221be87d262096c631f800e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6_ISEDhEy<4J-?BwDL{nn!R9Sn zezMp$J0}Z%5nJo{{*m$yvn_2Bw=O7&im*63D@e3?++e=)=tH^QooM&X3qQwRIQ(C~ z{hy4Eq$i8!k>1w*T#Q92I_?)jA__{b8r{ocmDkjB;))luQR&DQs#s?5{OcWsXDuPe zmo+wBW`Ex!Y-z#88@{DbU>|qCUYXlY&65@XZDezLlfot}w3kTg-zv6Kc{)$s27`wd tL8q?PzUn!-=+u@K&b74>{cp1VFo`V}NvvaB+5+?kgQu&X%Q~loCIFI;U?~6q diff --git a/public/pdfjs/web/images/toolbarButton-pageUp-rtl@2x.png b/public/pdfjs/web/images/toolbarButton-pageUp-rtl@2x.png deleted file mode 100644 index a01b02380b90e5ab32727ac5460eca3108a8f1e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!q<P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg00048Nkl<Zcmd7Q z!7c+)6vpvGSeDpGkg%1A2WTyH;~jVd?aZ{X@Blo3wZsG1N;eiV!n8$1BSeI>rkxqu zT8M?#!bm@}5SjL#xxE$==eN2ibN;KL|31hDNQNMj#dAQK=y(1Y5EDv)44Ux1HIb1A zxbp_wkVaG@>bwr8M;#f}fPp8}M8Vcj2^jETNAO_u3+Qn1AmKun1#~zl_u)W~3TUX} zUO^Qa7tmniPLU0*H;_gJx9U(qIvhx$jGJF7BlQ!YX-bCSn%DhRa1}MU;;H}2mpt`A ziKiME#syC?(4NFOPciVagfos`@JYn1UN>;cY3;X2BrFj7v{2+Y+YX6@#fO0+3LJCQ zBvH>3vz-&<Iqh6xCPAXE2c|j)usFWCxlDs3AH-oIk7Lo>-ueoS%1%d+z!pldaMb1S zJy+Y=T^nDZ7)fV{#%PX`f<=ncJWbF5{oQ;4iDXE!#q;ab00000NkvXXu0mjfx2&{B diff --git a/public/pdfjs/web/images/toolbarButton-pageUp.png b/public/pdfjs/web/images/toolbarButton-pageUp.png deleted file mode 100644 index fb9daa337656a75091ea00d4c5600ba4f557d834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmV<S015wzP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002JNkl<Zcmb8q zG0MU~5XJFnEG%;Z&tPHchu|$NExd|&1X~MR36aFYMpRG`1PdV$`6L9<10+p~=Y#CB zOI!={n`YQQgpnUVtVnDETZ9Ki-+~YsQpymzf+e5sO3JMk1o+3z;1<|{j|6c|0$&FU zu2+YcFCv__^n`FRxD#LO4`;)D=E>4@1mz9~E$`$~;b_k}_F6G1q{7jr18lHWj_7~< wLcH<tH7nQ5h{*_^2~@(vy6VI~X-Pxm4aA%w=kn*`ng9R*07*qoM6N<$f(Be=$^ZZW diff --git a/public/pdfjs/web/images/toolbarButton-pageUp@2x.png b/public/pdfjs/web/images/toolbarButton-pageUp@2x.png deleted file mode 100644 index a5cfd755b0b400bc6b7790c0fd41e7aa70d8aa1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmV;E0c`$>P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg00046Nkl<Zcmd7Q zy-Gr19LMorQKLmmP=l>ObOG9sOZQNBke(N5=mxxi_UHnda|*&J&5TH*h$u8)^QA!? z;xt&CUk(xa@IS{#Xz2Hu|6d*s2mgJH_rVY7C(gG%-^8f%*FGts5wO{2{YRVjxB;6j z)&{h^5?<#`RuxU!x&ey~Rs;=NIsuDymORvHjS85o@x@1treDBhm4y+iG`#`_%Y4>Q zrXd9kmiVNpL_-b4SmY!16&V{0L|Nd&m<o*k1`tGK5btG(3<<((yp!qw%C|E8KwhRF zxbZNp8@QG^iw;z91a6L3lFmj4Ds%+SF>{h`q6-zeg7QAIlCLxaTHheG%?nYsXZ0`) zJwbTMNirjGFS)Go0!$`0KT}Lg+!F?+fC96-Tkl6a7i8QNLsCG2!2H_bPUYYu$y1&U xNi)wqhB>1K6qvvQRuRHFB2cYh4paDxeFMq5jmkNGJDLCh002ovPDHLkV1nI`spbFx diff --git a/public/pdfjs/web/images/toolbarButton-presentationMode.png b/public/pdfjs/web/images/toolbarButton-presentationMode.png deleted file mode 100644 index 3ac21244dff26830f46ec462f2dab36e1a18938c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxl;P)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e00039Nkl<ZC{tr# zAPoM$gTgwvNF7WJ!hHgQm*z4k!SyIzoDC6$D0l>d-;VqjhMU0mZ4X2g!hLXQ*2lyD zAO1T4QSzVf-}e8HzMQ-~=l=t+g42^3RNS0C9Q=RpM>>fAJ?a1b&&NYN8B~EX5F3G* z)y-)~6N3zxFSVx?D9sL)fdf{kGziForAY+;dH)B&*<t^MkfqW=(*M@{zxqECDt-0e z7Lbzv=@11M|L6W&_5aMLtqpo0evZcb4gXL7+x)-a|3!#`qyNwSKly31zdO`vtoDxY z*Zn^U6g>)2a2N#7G$Xm3^>hP76r$iD7@qu}40l!X|5FfA2;Tt;<=`gB!NnK=_L!_3 TdOB@M00000NkvXXu0mjfBu|wT diff --git a/public/pdfjs/web/images/toolbarButton-presentationMode@2x.png b/public/pdfjs/web/images/toolbarButton-presentationMode@2x.png deleted file mode 100644 index cada9e7918da28bdf84af38c354dbf1e1c6fe31a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmV-Q0=4~#P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0006JNkl<Zcmd^- zJ!=$E6oyY10%{dlND(E4g^IO81kob?hE&SJrZZNXAQBZT%Y0x$tc>6nm<X%An$7NH z?(8NRRxoa6H(3=s|AFWA&YkR>`NYOT@I1}o-1mKoVd&o&{7f+mN-&#|()Zx;dz{8H zjZ$((8_UU@2);#emg03$I7{)Q2)+sjYw5ZuyjRhz2zmk^;u<K2OTRkNtOyQc^e~=T zA44~u6v2T{Z=E~Ark}<$>iyU5k4mtKpo5NDq;oH3c;DYmG_Dw9@94#Qd!Np$MYD$j zPc4{FS9m_nZFoN1#o4faN{c<ie&rqw`=3)SzzYRxKK$~9mu22V8|~KPq2ogoK!eRW z|AsH`?wUFo#k?X#q%>jOD4v!1b8BVb^Z<qEggwW56{#Bq<xJuBb*YQu&JC&mX-?!{ z|ChlqC{6Y?D|ituCR5i5{)DS}f@u5#w&9?aP)z8H!){D5DFPRzew~|8ur)5ugwd1O zF*locapmY%f-3?GyC|7@16#0s)@JA!^=EMP7T3*v3)@Cf(hW-lb<GYQumj8NwKvm= zzpn6f3Y(}Kns}(wdK1B>!9gw9*2_{C#gi$nn)e!<ASZ&Vz}44@x+qp}@<uc(f(@aw zlCF!Q{V19h!N&-76hS!@VMVhd_z*+oD2h<=qzK+8urm}z*vVWdpvx&nC^;h;slPG5 Y0k(Qrk4L1bp8x;=07*qoM6N<$g1hz(@c;k- diff --git a/public/pdfjs/web/images/toolbarButton-print.png b/public/pdfjs/web/images/toolbarButton-print.png deleted file mode 100644 index 51275e54bee695c76a455579262ad642efe7220c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmV+c0sj7pP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002UNkl<Zcma*d zJxawu90c$=f$u8Mj{|IHm*5dn=skjXf>f!}1hmw`k2Xb!g|HAo2t*7E*&>DgR^vZU zVV4ks^D731!9T-ielNTbGw_$axq|YpFKNTWBMo*4b40@@e=r<~g@MK&J_SO41MfMq z6K6!=^stS5fYisq7foRJTRX628(*Bq(yKr%dZE{WZ`;7vZJ2IZv$kcQLwS8}%Xy#f zfMcjMVUtA}0uh@ufx-#qxPlcm-vgSJD;yl)1oluX_K^Glse?0qV_8Mk00000NkvXX Hu0mjf@9=3h diff --git a/public/pdfjs/web/images/toolbarButton-print@2x.png b/public/pdfjs/web/images/toolbarButton-print@2x.png deleted file mode 100644 index 53d18daf7825ae12d99406068073d16ab682737e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmV;>0WbcEP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0004(Nkl<Zcmd7P zKX21O7{~G7WOeSq&{xp~sUVPC6?LpSc6DDwM?}|76%5^~BK0i<7{P56L_>|6%E6&Q z<c~eFMUf>gKhE5R6HaVnnStjcWqH1ObaL>24WBUJ_Y#4uV1O`0z?e~qSOfwF1Pr+z z$Bpe>*voD2#tn`c<-UL;j`nO=$Qx_VPMhTiws^}Shp<pIR@%sNYvF+C$i+ZHiL@Dt z&cZj~Hw`5+omqU<P$JWrMPEaSOlKBfG?d76;3lsbNuhR+D6sasi==CALbMt3v+?7+ z;KZ8Ts!j<-8|*UpLzw<eIR*?fbr-y?2fR_9?Zbxs)ZtAvps)CkefaqFh<-Jor}fyE zdi1IRKh^`b>j6L11HP{ZY}JG58#d<-o%HwW2=;PUN2XFHukd_-`kI$Y@{*S`_h91y zIW}gls+39Ng#)bOp}H?Gw|H@Pf)(V=%H0Vs*gACdn;u{lW|A|ybdPtAQD7%+lCuPJ zNHpGOlkX&todVvkrYUPEpq8BS?cYmI7hZsM*cGhfU(HW?%hSMo{ZqpL0000<MNUMn GLSTX%=h>YA diff --git a/public/pdfjs/web/images/toolbarButton-search.png b/public/pdfjs/web/images/toolbarButton-search.png deleted file mode 100644 index f9b75579b1e058baada95941a4a7ff0c80edb5cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmV-50m}Y~P)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002|Nkl<Z7#W?x zze)lD0LSs)5Hu>}CT$H)>Cl*KShVy4rnvP0Z8?}Z*4h&|1f^pNMc6--g9AMzMF;T^ zdxEU<?%SexQ4RI^NPk0u5(5U5+17U)F~(-d5SuZ_`id=Vw^zw;?CkDU@@@~Cg#0EY z`qiAmTGFz@*E#x=viw|&PAa0ARD_Oe$<Hxqcfy*fuh4c(`MqA!e9LI&BTaLBCBMf* zOs_?f00EL-3-cnQ1)|di1_l;gx>y+IsY03~>NTiO@2lBS(WyDLQStmhYno%7XP%~a zg|t=`Q(SSy6w-os!-I2sl2TAVdpUcr6!sO=uOix1Q2+A@lD3RUk?l9y00000NkvXX Hu0mjfGKYz; diff --git a/public/pdfjs/web/images/toolbarButton-search@2x.png b/public/pdfjs/web/images/toolbarButton-search@2x.png deleted file mode 100644 index 456b133248fd5310857db3e2b174730f6488371b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg00071Nkl<Zcmd_m zPe{{$7zgmTrXlIVQ>{bbX%$pI4<4dGmxrK3y9C*x5W092iXDWyS$NGul86ip{iUm* zph&8bY4&exY`K>GnEG>Dd62o*(mD5i_k8$VY~O9Br=aKc@csAZc|K$K(~H}AmbW;? zMG@u@&$EhH4=lw&FBkZQF-Ap9o)(M%&-~tka$b|+DChG;`IX(=w(){a#`%8{F<#$j z!3oAVrx=lttE;Wi(dg)E3%QJl{>ms%ms(Jfo#2eJ;_GOI4YjBgwXk)xuK0A4^|Gqy zg0)keVT6&~w6g^ktS^hRB{!`y&ScJIkb$(>x10P=3G|{G`Bfe0)oE%dg%qUCmd7}) z3^)d0=5pwC)whaONSkH-{G>RoP849(sVpfg@*ia0@S_s8gi(M+r$*3#0co@3D5sRA zh9wlxpwskt8fi$I&Gs><q^_n=K&MXQgK@+mZT9d21BwykJ|d6JkVNscd*FezS)Dcc zn0{q#g0{Tz37!1#*z4@DL)vU{XYxLMRQ$#VUSU0Vh<aX@H@{BY?I=g#qJ?h0=R0a% z1{vmO5tb*f{u;W0-Nna8=;PZ`LOnGHYM@E4M~g8cC%o2@557N=`!CX?gBP(MWkpUm zhUJ7wEpe~8dDpSQOSApUqw0P6$(+mW+}l{<$LDU#885ZO-KOKHl#{GDh@-Gq*yVZ% zdr)3{{9nG}xR$u1#<7{ob#sz0w1nGk-{d%uea0~@F|vhmV6KPHmBjFt#(|SZ=KGAN nvHmTN12T3PP54Lde_Q<o?a=%7G*Dw<00000NkvXXu0mjfaivhY diff --git a/public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl.png b/public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl.png deleted file mode 100644 index 8437095273c46e84b404dcdc1157240cfdd1b454..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmV<S015wzP)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002JNkl<ZcmcJ_ zF)KxJ7{~GNA9tV(HoM_=8I-|b@+!Ox@4=2mu}XKi14$`XNs*$iK?mJ#Ih~Zr8}Ox0 zPd&T*zRRbchyPy*SU6w<=(9<-ZId3`SdUNWX4B4&XTCcg4Oq&K^R(xVe0%M)m>uWY z?@M2Nt`6yC6T6=Kx^U>Q*>AFmU}|CQ^VA2Q+|HIZgo*jpkAZhSx|3}@2xVraKJvzU wce9NLp>&q3J+HiVD_f9=9_zn#f#kpM2NJQXccvwU^Z)<=07*qoM6N<$g7779MF0Q* diff --git a/public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png b/public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png deleted file mode 100644 index 9d9bfa4f63d6a8ae5cbaafa2efadd2c16b48a3d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0004xNkl<ZcmeIt zO{h$97{~EvyiL<+O4RjImn<e_;g*tQ!AL2h6tYobV<WOt7V0j^%EE$`Y$Pi+MR8x4 zbMJNBK|^z!rZHwnNi-s({$HL>&Eo0wtSl_%_c@)#x6@Nc{?`phhD&@IIESE8yJl-K zSNKF1)hUn5sOZvq+E~U7KGIR4efOfQ^}884Zquc$Li5&n8S%Rr1@7~nmioPL?ToDQ zyBRA(nRhf*zjpbgtnj-TYr+Ig8tT{lh2v82yBQlog$4`i$IR)&lJ~nAn?g*Tx2iXJ zWWVJ6ZpK)6$s20w>%%>JCF}K+&F|>X@+#3QM<bCW(z~Tk;q1|$Q&dr}!(&z>D!p6D zD}Un9_eZ=yRl_vval1L7BzJJ%w+GCj;t)~vyE&jFTPl6N#|&!ruPuHz2b3(`y7R*w zDyWF(Z1=l4pkzsLTk9rI70-y-?RRDWXwkZ{`gNuh)5IL`x)Kb@EZ<zc%7kK)m}B@I yLqE+HE8{##Fvlsc3#nwI>>3!A!A$=*8}1L$Je~+C1~_8?0000<MNUMnLSTZZg51Oa diff --git a/public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.png b/public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.png deleted file mode 100644 index 1f90f83da745ff2470745ecf1c0c276b7179b088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmV<P01W?$P)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0002GNkl<ZcmZRe z3-~|j|2rU@@t^TO3L64JNd3W@|4;ru`@i--Gcp^Z077WpS@HkD|HuC~{%1vILluB2 z&D)Fr-}!&<|JMJU$ZU`TxRRUm|6l)q>)($5yeRDdaQJ-M|4aWbecXOn@Guga;V=~b z@A-fE|GC#2l&u(8kl8S=_WnQr|Ky7m5@rlc$ZVK&-~ZG9k3Lz%WyHXU%!Wxf{y*{m t;LXXb20&>fHX<n1861F66NODh005WCw%{Z<zMTL7002ovPDHLkV1l<$b{qfz diff --git a/public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle@2x.png b/public/pdfjs/web/images/toolbarButton-secondaryToolbarToggle@2x.png deleted file mode 100644 index b066fe5cb0ef03ceee653393df468690f382abdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmV;*0X6=KP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0004zNkl<ZcmeIt zPl$|h9LMqR_%}_fN$p|%sU?R=IoMKC9N6|CiKK9nxH!pP9i+Ifn}gye<sc{7BH0~0 zyR-A`3>ungn#PzRCDDkC`n~n-$qc_|=6h2P`+3##e4qF2k^f~&;~by5E|5SX@g5gF zM(<yuNlWp8DV8(1dw##x-#+geG!^f;#wxq_^p271ldeWX(c&g4vv>V@4qrL*vqBy9 zmb;|w9+AI3)?7T<DN#ecanlUjUHN~Mo;?1eKowPUGpw_^5<D_=>hQODDyXUp*o57Q zk<^j>?O9%<$}VJ!)rCGJIWh710VUKc_nfi8UFd6Wq&>}xNGDg=Rgg%$YmQ;9d&EnM z>U;L=QAvw#VE4vGm!-&}`ugz1AsMo}H!?0DWI=tocW|Gi?Cy<iE=P`e_3_U5xFqfF zjh!yf9D#awYx{0lX?Jhzbs^7qs_Hi~J7k5~{c*sBJRz&fS2v8wGPC>R7<p!yQN^j% zTP0z3f1Gv;JdOmHlNm|aJ-$)d)3w>|OZx}=1^9!Vb3w=BGynhq07*qoM6N<$f>h_@ AZvX%Q diff --git a/public/pdfjs/web/images/toolbarButton-sidebarToggle-rtl.png b/public/pdfjs/web/images/toolbarButton-sidebarToggle-rtl.png deleted file mode 100644 index 6f85ec061ea167b1718d2865cfc1e53370f11b7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6R(QHNhEy=Fy|9t%kby|+!~K<= z=lYs7_Vv%s4-^nwVp00$&6?)LeSG^I3$L4YTv-}i{FpUUBct%;PlbZ%#R_fqh7bDx z-F*1OP);pG_E<uLROI?ak<6Z-RPM_QWEnIlbjv<>xTK`(Chn5R(EeH9pPAiYO~EVU zg;AX0YiF?m$$s9yK0f=U*jm^Eqt`WV2>kpZ@LOBJCk~ccO~LBz65exMPv3u}^Njbh X)s)<0)dyODZf5Xw^>bP0l+XkKTSZs> diff --git a/public/pdfjs/web/images/toolbarButton-sidebarToggle-rtl@2x.png b/public/pdfjs/web/images/toolbarButton-sidebarToggle-rtl@2x.png deleted file mode 100644 index 291e006797fc7f0e84d297e952630c719fe6eeab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmV-e0jK_nP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0003WNkl<ZcmeH{ zu}T9$6h%+QPKzXn-{D6n_z$9=;5K4oWg!}{GL40#v9Xa9DJ(1`SeV8}#NZ#8#zazV zWYKx<_=*&d0f$&g?t$A}-sR2~>zGl0Qy}Zomti9P@(RHP^G#|@5~=y7$K!siiboRh zuIeZWmVB=G=|>dh^>JgTvTX_3{+V)mF&H3<DcC)^xu$Cg+0m1-^>EjY7F_lyu+m(` z^5@!%E%1sIf<-iET7g&00wOY5YylCO%que#{I4g>zrp+oX2Hs@7Sy8){GqKd3+i8+ z(La(~<(6kl$Y?0+E!3g~6pVPYgsgOBL}3a(#z;E(drpoEc78P(r=PdlEn2u>S!eOM qa*)PSBkN>jxL^#qr<+KRA;34`pdw#DmQPIp0000<MNUMnLSTZHc$r)P diff --git a/public/pdfjs/web/images/toolbarButton-sidebarToggle.png b/public/pdfjs/web/images/toolbarButton-sidebarToggle.png deleted file mode 100644 index 025dc9040e5073bfd18da3464566163456f72534..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6R(QHNhEy=Fy|9q$P=HAL$NcZA z*K(Cs@TYt-3~OskjEXVmVw>%D&|RWz?R3S%8@5!h6F=s6G4bYqaW?MzjoCkpng6|s zXV#N@oaktrz{i#`@v)}nB&N==y>HnTvNCfR?M_V%Q~Gzyo8O~>Q6}#e!-ESy&GlaR zu`s+4fAKGyamxbf<p$3>PlhLUim60w=5E=2>$USub|+s^j;X5ze{YfSp5y*9zfkTo Z<J9IUxd-1q<^;N#!PC{xWt~$(696JQR_6c! diff --git a/public/pdfjs/web/images/toolbarButton-sidebarToggle@2x.png b/public/pdfjs/web/images/toolbarButton-sidebarToggle@2x.png deleted file mode 100644 index 7f834df94000475b8edda3b062279b17277db9d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmV-R0kr;!P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0003JNkl<ZcmeIu zJ<3x-7zN;GaxX!P;02qAxB&~7V57JJ+hCQ#DvgD;jSEO05Rrf&3YKCaX<UJzwjV;$ zC=n8WGh-tOWEk*9;RDIjpTl`yr!GLcZmh4JxsjLD331$Me9=x5$1W2#=zNg07hEJH zIB}Ru)F1)##p4%?6>$GH;g-ye=E3m76~FBj%$^S3p8p9*q*pSbd*{>iVWHsKF0S;I z^gX<uru~8l?Ba-&D#Uz2E-A|w$VFxGFAM&&6OKQ~PdJ`%&hify^ot8NgX+<?B9-Es zdsQkFRE@hjfRA`17ps*YwnBoL!(63?ub<EKw6<PCy~gCp@aEZG+xX-e)Dw)JkKXHQ d=bLx_g<m(2eGF<5p*;Wq002ovPDHLkV1irSl*Ir5 diff --git a/public/pdfjs/web/images/toolbarButton-viewAttachments.png b/public/pdfjs/web/images/toolbarButton-viewAttachments.png deleted file mode 100644 index fcd0b268a475662d421e9144764a09d20faf4155..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmV-`0e}99P)<h;3K|Lk000e1NJLTq000mG000mO1ONa4wfZ;e0003;Nkl<ZC{tr# zAP4+c{J-V@rT_c?8=^}H|91eAn*Yvh$YQXZ8u#zqe;yR+e+NFa{@46_c2+8b2vC6k z$(rvD$kO|7&79);=k(-c20^e0<LBL5O%T$1Z%v=z{^#VRBnE;1hX0HHGySi6vY3Gj zCcXRS)IPU=$0jF&r2iaW;rYMf(;9t<BmWEj+j)C(x68jHlM;Z^27it=MSZOKyk5<W zfeEbO_k>4t*wuc`Tb2cq{&%P`@>A8<^(NL(>Ho}s&vtk+Fua<7E9$@Hp92jMpDMqu z1xm9(o%fjY|H;!pyNX@EE&si$I{ZV$w@o%SaA_c5db|2dDUjx3Fk~?LRQ7GXy(6+T z5KNBxck+Mrf8+l~|GU4fb8ui_Wk3UhZHZr2{6GKy)RPIe_L$OOB@D*mE*uUFn%Jcw efQf+-n=k;HAC|A!G+~AS0000<MNUMnLSTX%g~0Cs diff --git a/public/pdfjs/web/images/toolbarButton-viewAttachments@2x.png b/public/pdfjs/web/images/toolbarButton-viewAttachments@2x.png deleted file mode 100644 index b979e523e742027645e980d8a27c54d0060ebf21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 871 zcmV-t1DO1YP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0009nNkl<ZNXO;X zYe-XJ7zgmjsfm##T}4UiLl7)ME2|F$d8w=@G%~9%Mi3EQAT2M1(T8pjLRo1AR#01N zp^|B~teLBsZcdxc>*n00Qixp6B9(Lgy*p~IIal_z=X^QudHJ1}^E~hK9-{v*5Qt#- z{wq$zD|}{GH?lE%s@NMj=*7nYb>AD_j2@`4U~2pZK7P|=?WfhWa$EeT3Rw9Hh&-bW zD8u?uo`(+us$E+sK$!9qNA}mjiannACYWKd9vtP?fqKUMeoc$2Ps8-R%me35Fq%um zp^WFkGEkSa*@?4|$HO?Jot$^0%Um2BA@|{OVft3P(}fdRlhI{Yy5}3w1-<2wgX227 z?aGN9-apEq*X6k926S2;hJ-VIjji%#jKd#?5Fy-oaTj42)FiKP!+Aa0Eky#q3WHrS z&iNu3zh*f&F2FF{d|@BC?nrFlJJD(?6nG9g?KO#UW1K5QhplRFIOFG`=iX%>pji{^ z-VU9qz`?m3bl9t%cmdjM&o@Skr{NqrIBnh`3UuYMd>h`IrNZi0&}Nq>jPnO*wLKH~ zS+sLaH;<5OCm;$f(3&M7;b%mwQCjRToVXM^TV?bJZ{;;N57Qi1KA+d1$#g#?oV*YX z-EUliW?Mx}6!~(QXyG-tk4@l2gQw8={YAt|@*=XGhvvcIU;I9_wsHr@N$8-ymqPR0 z)PAT6YQ-7ycHEmULEV%fa9{2on!Y?4<;}cGa-7_?FlM3wDoO0fsC+L}!%wjSVcZ=w z_B|H(320F-O(pjyfPNwBQ1@ub$S7d0{uVndbS$Y2pNj>aig$QhoIye4KGFhsC2Bjx zW8)cOX{s^be77=d(Hem_qP8@hf@#ta^+=)YOLlq^M9V0Q7Lo`l&_G$5;fb@TI)>MS z6_`FDJ1HzXuVtqxggl2h)K&r|mk+1y2_Ixa4TUU=Lg|m;m9}F@hFV^Mbk@$1Y+oMb zWvE9@)n9QTb16yvrKn-`XkbaxFs$HTmZbeH7wWfoU3q4&gqNcl)q|C~%exc)`0cLM xV0mA@ASQ16s;xe2X({<njgP;^kEZbN`w1rY0*o@`?gan<002ovPDHLkV1kKWoksuw diff --git a/public/pdfjs/web/images/toolbarButton-viewOutline-rtl.png b/public/pdfjs/web/images/toolbarButton-viewOutline-rtl.png deleted file mode 100644 index aaa9430211e168a593f7e3bb486b3cac2be6556b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6Dm+~rLn;{8UeM)Zaui^FxJzhG z!|qKIVyq93J2V|v60i`ubLP&1jLj#z)YdH6_dNZQ&xuJ2GPazLv>Ue+?>6bs6%sUl z=5wmNX+x=cM?cG@Z*M=Wx3_WU$gY-DxaT(E)^*=hf#2W0ec7YVF<0AhkJ^MyI<bwP b9`ng3|Geny8qbgkbOVE@tDnm{r-UW|^{hk$ diff --git a/public/pdfjs/web/images/toolbarButton-viewOutline-rtl@2x.png b/public/pdfjs/web/images/toolbarButton-viewOutline-rtl@2x.png deleted file mode 100644 index 3410f70dfa653e77cd7e6b9e2c69cb2e2869c7ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmV;50d@X~P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0003|Nkl<ZcmeIy z%}N4M7{>AE8oCqP6^J2Th#(YoIRh@jaAR$9RboY0TBz8UW*<_dt4i~Ob~DGonWs6N zDHmgSc1896;1BQmyd3<D;Vxe_>=B*_8?FdJfKrFg8ajkxH`r#|ZrHE^89r%(@^&LP zaU~!CnZY3+ryJx4P}Ww4*H%5boJ10kK>!OHX7MpIn8%#kUo_liM?;42gn8)-kME$x z2MsMkajI;x=~Nv!fDG?7K@n$i6P3?9=x2F1U4N$!WpzoMSmnfG0tr9{|91dxvNb`P z@Pt@#g$O@Ts`FxkI-!h8tg$vKjo=3vo__&~$jeRS1pFY=P4m>Rm+nD{$E*W$KOT$2 zPbKiz-rYZ3=dFef!V_e{6&&9|na3K+gyQ5_WYNiu|AQk<P=;B#nHdu%AoG%9VY+Ur o3&n_98FR~s8ZZEvZ~YJ60rV~$E@j|y*#H0l07*qoM6N<$f=C;tDF6Tf diff --git a/public/pdfjs/web/images/toolbarButton-viewOutline.png b/public/pdfjs/web/images/toolbarButton-viewOutline.png deleted file mode 100644 index 976365a50612903b56e307401195ad1159e91b3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6Dm`5sLn;{OUeH~~<S4@W@Ybbd z);CiR8fb9XvkBRVH6EDwVAp%TuCU31<_kZ+x_#i}LS_GXOEozs>^Ne|QKRngBbo7l z(Z#9O-!Ih&DHL`j3;gi;Q|>%Z+C4MQ_`#CC(&&{H^BL7&PFp7v<NevAVM?eZ7i)g! ceft{5d!ZM5IVQfV1v-Mk)78&qol`;+0R4_a@&Et; diff --git a/public/pdfjs/web/images/toolbarButton-viewOutline@2x.png b/public/pdfjs/web/images/toolbarButton-viewOutline@2x.png deleted file mode 100644 index b6a197fdf33da57ada4fec17e042708b1586fb29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmV-R0kr;!P)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0003JNkl<ZcmeIy z&q@MO7>4op8oHYTF~kcIgrY7-m_-=gLr9yLNJGQQw7)|`w#sbRZsr&`=k35ZXB7v& zrAY4&X89~W4uka=>r9+FQTkQ_0Xjv(1s6q9K=4z^2Y#M8=iEFR2+oy!;P`O)ls|M1 zIuQI&@&RmN2ixxJx2v>4V~zJtjVOI7`6Jp1XPnuIh2Wc#513n~OwGtZFjew_qkVIo zU$ytz5PVhoe+S{Q%8^qgO78)3#J^TUPB~o-R}j1l2nEaq#~hp3KyVxo3PjEPJUfe; z5d?1nLIL%=*r2h(o>L)8FG~K1Hs*i>8(RooD*3?jlzsNIZU(`=k`J^Rc{e+0HChnt dDXqo-;1^oHB*H?C%i{n5002ovPDHLkV1gg@i>m+t diff --git a/public/pdfjs/web/images/toolbarButton-viewThumbnail.png b/public/pdfjs/web/images/toolbarButton-viewThumbnail.png deleted file mode 100644 index 584ba55881f9a192ddea645d6d8525bab205e289..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf68a!PbLn;`1FBoz$1@g2!+&O99 zf!$e4*(<gwHMMTodbFuS=SV~N4Aq>j56dDxhu@!aQ2zL__%gK{mTjH$a~4^&m3zt@ zUaiuXsMG0KBR${yp3FT-zMKuGw=rB<eO&qY8<!2mJk0Vp9SV8APqJu>1}fgF!j@Pa jH|<TrhI1RH+Mijv)lz5Ad+#+sw=j6R`njxgN@xNAEOkl? diff --git a/public/pdfjs/web/images/toolbarButton-viewThumbnail@2x.png b/public/pdfjs/web/images/toolbarButton-viewThumbnail@2x.png deleted file mode 100644 index fb7db9383669cf734685ca7422bbab1032f486fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4Ui#=T&Ln;{WUfJl$U?_6@q5h<M zZk9T0Sk@jrBpP!-HTHn4P9D?73r>FP1#Umq<NNTSROrO@e-He-RCZ}!n0L23&W2%9 zoK%gKi@Kh|d(k%?WkAxTb4kBR!3o*F{vYl$zkYplYC<jZgfE|ZKSwWL6mP8Xl3C-z zygQv~{S8a5vzgbqTvvFnb;BiR!dE`?!iMKI9}ax7i{;v9#}IYtbkoY`^&i;#6M}Bo T&uF~~bS{IZtDnm{r-UW|#Cu$) diff --git a/public/pdfjs/web/images/toolbarButton-zoomIn.png b/public/pdfjs/web/images/toolbarButton-zoomIn.png deleted file mode 100644 index 513d081bc2d2f3eb64801a5e8cde86ef4455829c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6{5@S9Ln;`P7g+!J&&MG-LGg5b zi0J(bTQ@BD_<zEh2EnYO$r}H;1wK36+;l>154)g5P7Bj9n-%)M8r~??+_T|q$+)-V kia5^-HX{oL#i@)8E52we&r^_U0~*cX>FVdQ&MBb@0BWi($p8QV diff --git a/public/pdfjs/web/images/toolbarButton-zoomIn@2x.png b/public/pdfjs/web/images/toolbarButton-zoomIn@2x.png deleted file mode 100644 index d5d49d5ff107f01daa307bd0f89f98efc31eeec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4U>7Fi*Ar*|t5-bTK29GBH`OkMs z;LzH(r}lQj`-ICFx#MpBpCa|4zl7P1x1vYwH*5P29X)2dhZ~*=Z`AwIt>?Q+{9j-O zLo#EO)0^fl@rko%`Z-H3Q%PTTaY>Is!UArQV{B|y4S@^{cTUS(`F>5r0%#?Jr>mdK II;Vst0FRG1RsaA1 diff --git a/public/pdfjs/web/images/toolbarButton-zoomOut.png b/public/pdfjs/web/images/toolbarButton-zoomOut.png deleted file mode 100644 index 156c26b941c12a13130e7a7c181d13300a85de89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6<UL&+Ln;`PB?2G(x7L}!$kNEc kqo3#`!pg%J@xXwIAzIG(VVQKJ3{WY9r>mdKI;Vst01!SC>;M1& diff --git a/public/pdfjs/web/images/toolbarButton-zoomOut@2x.png b/public/pdfjs/web/images/toolbarButton-zoomOut@2x.png deleted file mode 100644 index 959e1919d5a7a83a9c319de4d65ddaf6dc6c2763..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UCY~;iAr*|t5<LkbJxzfh{>x6B zz{uFh!Ff-a?~&O9p+bS}jK@2hEqD_O6oi80fl3Ux7>c+~q<V+<rvUXcc)I$ztaD0e F0sx?19k&1g diff --git a/public/pdfjs/web/images/treeitem-collapsed-rtl.png b/public/pdfjs/web/images/treeitem-collapsed-rtl.png deleted file mode 100644 index 1c8b9f7010cae8edd6ca3a1146c6f07f68f5931e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>0wld=oSO}#SkfJR9T^xl_H+M9WCik>lDyqr z82-2SpV<%Ov6p!Iy0YKrWaF2XJ+}I0Cs4@O)5S4_<9c#}1C#!gI3K5HU3*qk7JfP^ zDKY)8>!ogI{c{Zp9jCt>`hHZ5LtHJS<$+UcLsOsrwZ)u_tda3Y_T1=KVi6Oo2<%Hy cUbUNH=6`p$$8L6yfCe*oy85}Sb4q9e0CZwJr2qf` diff --git a/public/pdfjs/web/images/treeitem-collapsed-rtl@2x.png b/public/pdfjs/web/images/treeitem-collapsed-rtl@2x.png deleted file mode 100644 index 84279368d985d74ba324ea3433b08ea5974bcc62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mSkfJR9T^xl_H+M9WCik>lDyqr z82-2SpV<%Ov6p!Iy0YKrWaF2XJ+}I0Cr~Ka)5S4F<9u?$0p>W5{V$RatZw-0daHY} z{<#OiNxzd0cN;5o92e?flIcpA_8_oj153M7i1!AKLt9v!1<kw-L~riB;SnGhc+FAt z)SegWD>$YfeZs0{*8S1d;7*d)WUfO=0=x|MW<S1$ebZG3TF2n&>gTe~DWM4fAaX}J diff --git a/public/pdfjs/web/images/treeitem-collapsed.png b/public/pdfjs/web/images/treeitem-collapsed.png deleted file mode 100644 index 06d4d3769672390920ddd9d423f52d7908fcfb36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>0wld=oSO}#+&x_!LpZJ{CnQuDzHAj@)~YCc zcJ!pUslH1<tHXy2-AlyZtZ-7;@wD|lw_1pzfR2-B)c-?*k&pk08|p_)%+;w^Y{*fb awVT0yk-J;*^C}~tkqn-$elF{r5}E)McPU5! diff --git a/public/pdfjs/web/images/treeitem-collapsed@2x.png b/public/pdfjs/web/images/treeitem-collapsed@2x.png deleted file mode 100644 index eec1e58c125c80af090ae0845e81191d86740141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mVmw_OLn;`P85+fF^_NI;G>WIk z$<$8#)-<<4$>7e1Lt^WdBv>MS0tC+_?dkdu(KF##vY``K|4|Ok95LarEgxHDk6!z_ xe}ZGN#WGb9Hnl@SJ`EdME-hi&#=_6Qka7RV*Qd`VTY>g4c)I$ztaD0e0sz~DGV1^U diff --git a/public/pdfjs/web/images/treeitem-expanded.png b/public/pdfjs/web/images/treeitem-expanded.png deleted file mode 100644 index c8d557351cd2fc80c3abd4b19e52924cd74780d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>0wld=oSO}#Ts&PILn;`P75MhNs4Zk;-DbE) zpt_L5GvPZo<AhxXDvIVEVavonFJ!9a_#6^Hhk@%&y<%66r&+)W`Kxi;#6|Tb6muAM XHQ9^&G`nvKG>^g4)z4*}Q$iB}$ABb+ diff --git a/public/pdfjs/web/images/treeitem-expanded@2x.png b/public/pdfjs/web/images/treeitem-expanded@2x.png deleted file mode 100644 index 3b3b6103b356200d05caf7fa692cadf2c1e89043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mialK%Ln;`P7Z_I<K0GSPRKRqY zd!_jC51NdpyqeE=9bc`%o1}QV+jqwlhSVDg?=~G?d1Bgz&*}?)1&Uq%=^&{2Wx<I9 z&r(WU-*7xvp3}4P45RBr-iH_7AC`43Qh1(hCAs@^@JDy^<K1WV&5|r6FaMn3$Hu^M W{3oxYXvGDf^$eb_elF{r5}E*hVME3M diff --git a/public/pdfjs/web/l10n.js b/public/pdfjs/web/l10n.js deleted file mode 100644 index 3d5ecffa..00000000 --- a/public/pdfjs/web/l10n.js +++ /dev/null @@ -1,1033 +0,0 @@ -/** - * Copyright (c) 2011-2013 Fabien Cazenave, Mozilla. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* - Additional modifications for PDF.js project: - - Disables language initialization on page loading; - - Removes consoleWarn and consoleLog and use console.log/warn directly. - - Removes window._ assignment. - - Remove compatibility code for OldIE. -*/ - -/*jshint browser: true, devel: true, es5: true, globalstrict: true */ -'use strict'; - -document.webL10n = (function(window, document, undefined) { - var gL10nData = {}; - var gTextData = ''; - var gTextProp = 'textContent'; - var gLanguage = ''; - var gMacros = {}; - var gReadyState = 'loading'; - - - /** - * Synchronously loading l10n resources significantly minimizes flickering - * from displaying the app with non-localized strings and then updating the - * strings. Although this will block all script execution on this page, we - * expect that the l10n resources are available locally on flash-storage. - * - * As synchronous XHR is generally considered as a bad idea, we're still - * loading l10n resources asynchronously -- but we keep this in a setting, - * just in case... and applications using this library should hide their - * content until the `localized' event happens. - */ - - var gAsyncResourceLoading = true; // read-only - - - /** - * DOM helpers for the so-called "HTML API". - * - * These functions are written for modern browsers. For old versions of IE, - * they're overridden in the 'startup' section at the end of this file. - */ - - function getL10nResourceLinks() { - return document.querySelectorAll('link[type="application/l10n"]'); - } - - function getL10nDictionary() { - var script = document.querySelector('script[type="application/l10n"]'); - // TODO: support multiple and external JSON dictionaries - return script ? JSON.parse(script.innerHTML) : null; - } - - function getTranslatableChildren(element) { - return element ? element.querySelectorAll('*[data-l10n-id]') : []; - } - - function getL10nAttributes(element) { - if (!element) - return {}; - - var l10nId = element.getAttribute('data-l10n-id'); - var l10nArgs = element.getAttribute('data-l10n-args'); - var args = {}; - if (l10nArgs) { - try { - args = JSON.parse(l10nArgs); - } catch (e) { - console.warn('could not parse arguments for #' + l10nId); - } - } - return { id: l10nId, args: args }; - } - - function fireL10nReadyEvent(lang) { - var evtObject = document.createEvent('Event'); - evtObject.initEvent('localized', true, false); - evtObject.language = lang; - document.dispatchEvent(evtObject); - } - - function xhrLoadText(url, onSuccess, onFailure) { - onSuccess = onSuccess || function _onSuccess(data) {}; - onFailure = onFailure || function _onFailure() { - console.warn(url + ' not found.'); - }; - - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, gAsyncResourceLoading); - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=utf-8'); - } - xhr.onreadystatechange = function() { - if (xhr.readyState == 4) { - if (xhr.status == 200 || xhr.status === 0) { - onSuccess(xhr.responseText); - } else { - onFailure(); - } - } - }; - xhr.onerror = onFailure; - xhr.ontimeout = onFailure; - - // in Firefox OS with the app:// protocol, trying to XHR a non-existing - // URL will raise an exception here -- hence this ugly try...catch. - try { - xhr.send(null); - } catch (e) { - onFailure(); - } - } - - - /** - * l10n resource parser: - * - reads (async XHR) the l10n resource matching `lang'; - * - imports linked resources (synchronously) when specified; - * - parses the text data (fills `gL10nData' and `gTextData'); - * - triggers success/failure callbacks when done. - * - * @param {string} href - * URL of the l10n resource to parse. - * - * @param {string} lang - * locale (language) to parse. Must be a lowercase string. - * - * @param {Function} successCallback - * triggered when the l10n resource has been successully parsed. - * - * @param {Function} failureCallback - * triggered when the an error has occured. - * - * @return {void} - * uses the following global variables: gL10nData, gTextData, gTextProp. - */ - - function parseResource(href, lang, successCallback, failureCallback) { - var baseURL = href.replace(/[^\/]*$/, '') || './'; - - // handle escaped characters (backslashes) in a string - function evalString(text) { - if (text.lastIndexOf('\\') < 0) - return text; - return text.replace(/\\\\/g, '\\') - .replace(/\\n/g, '\n') - .replace(/\\r/g, '\r') - .replace(/\\t/g, '\t') - .replace(/\\b/g, '\b') - .replace(/\\f/g, '\f') - .replace(/\\{/g, '{') - .replace(/\\}/g, '}') - .replace(/\\"/g, '"') - .replace(/\\'/g, "'"); - } - - // parse *.properties text data into an l10n dictionary - // If gAsyncResourceLoading is false, then the callback will be called - // synchronously. Otherwise it is called asynchronously. - function parseProperties(text, parsedPropertiesCallback) { - var dictionary = {}; - - // token expressions - var reBlank = /^\s*|\s*$/; - var reComment = /^\s*#|^\s*$/; - var reSection = /^\s*\[(.*)\]\s*$/; - var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; - var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; // TODO: escape EOLs with '\' - - // parse the *.properties file into an associative array - function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { - var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); - var currentLang = '*'; - var genericLang = lang.split('-', 1)[0]; - var skipLang = false; - var match = ''; - - function nextEntry() { - // Use infinite loop instead of recursion to avoid reaching the - // maximum recursion limit for content with many lines. - while (true) { - if (!entries.length) { - parsedRawLinesCallback(); - return; - } - var line = entries.shift(); - - // comment or blank line? - if (reComment.test(line)) - continue; - - // the extended syntax supports [lang] sections and @import rules - if (extendedSyntax) { - match = reSection.exec(line); - if (match) { // section start? - // RFC 4646, section 4.4, "All comparisons MUST be performed - // in a case-insensitive manner." - - currentLang = match[1].toLowerCase(); - skipLang = (currentLang !== '*') && - (currentLang !== lang) && (currentLang !== genericLang); - continue; - } else if (skipLang) { - continue; - } - match = reImport.exec(line); - if (match) { // @import rule? - loadImport(baseURL + match[1], nextEntry); - return; - } - } - - // key-value pair - var tmp = line.match(reSplit); - if (tmp && tmp.length == 3) { - dictionary[tmp[1]] = evalString(tmp[2]); - } - } - } - nextEntry(); - } - - // import another *.properties file - function loadImport(url, callback) { - xhrLoadText(url, function(content) { - parseRawLines(content, false, callback); // don't allow recursive imports - }, null); - } - - // fill the dictionary - parseRawLines(text, true, function() { - parsedPropertiesCallback(dictionary); - }); - } - - // load and parse l10n data (warning: global variables are used here) - xhrLoadText(href, function(response) { - gTextData += response; // mostly for debug - - // parse *.properties text data into an l10n dictionary - parseProperties(response, function(data) { - - // find attribute descriptions, if any - for (var key in data) { - var id, prop, index = key.lastIndexOf('.'); - if (index > 0) { // an attribute has been specified - id = key.substring(0, index); - prop = key.substr(index + 1); - } else { // no attribute: assuming text content by default - id = key; - prop = gTextProp; - } - if (!gL10nData[id]) { - gL10nData[id] = {}; - } - gL10nData[id][prop] = data[key]; - } - - // trigger callback - if (successCallback) { - successCallback(); - } - }); - }, failureCallback); - } - - // load and parse all resources for the specified locale - function loadLocale(lang, callback) { - // RFC 4646, section 2.1 states that language tags have to be treated as - // case-insensitive. Convert to lowercase for case-insensitive comparisons. - if (lang) { - lang = lang.toLowerCase(); - } - - callback = callback || function _callback() {}; - - clear(); - gLanguage = lang; - - // check all <link type="application/l10n" href="..." /> nodes - // and load the resource files - var langLinks = getL10nResourceLinks(); - var langCount = langLinks.length; - if (langCount === 0) { - // we might have a pre-compiled dictionary instead - var dict = getL10nDictionary(); - if (dict && dict.locales && dict.default_locale) { - console.log('using the embedded JSON directory, early way out'); - gL10nData = dict.locales[lang]; - if (!gL10nData) { - var defaultLocale = dict.default_locale.toLowerCase(); - for (var anyCaseLang in dict.locales) { - anyCaseLang = anyCaseLang.toLowerCase(); - if (anyCaseLang === lang) { - gL10nData = dict.locales[lang]; - break; - } else if (anyCaseLang === defaultLocale) { - gL10nData = dict.locales[defaultLocale]; - } - } - } - callback(); - } else { - console.log('no resource to load, early way out'); - } - // early way out - fireL10nReadyEvent(lang); - gReadyState = 'complete'; - return; - } - - // start the callback when all resources are loaded - var onResourceLoaded = null; - var gResourceCount = 0; - onResourceLoaded = function() { - gResourceCount++; - if (gResourceCount >= langCount) { - callback(); - fireL10nReadyEvent(lang); - gReadyState = 'complete'; - } - }; - - // load all resource files - function L10nResourceLink(link) { - var href = link.href; - // Note: If |gAsyncResourceLoading| is false, then the following callbacks - // are synchronously called. - this.load = function(lang, callback) { - parseResource(href, lang, callback, function() { - console.warn(href + ' not found.'); - // lang not found, used default resource instead - console.warn('"' + lang + '" resource not found'); - gLanguage = ''; - // Resource not loaded, but we still need to call the callback. - callback(); - }); - }; - } - - for (var i = 0; i < langCount; i++) { - var resource = new L10nResourceLink(langLinks[i]); - resource.load(lang, onResourceLoaded); - } - } - - // clear all l10n data - function clear() { - gL10nData = {}; - gTextData = ''; - gLanguage = ''; - // TODO: clear all non predefined macros. - // There's no such macro /yet/ but we're planning to have some... - } - - - /** - * Get rules for plural forms (shared with JetPack), see: - * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html - * https://github.com/mozilla/addon-sdk/blob/master/python-lib/plural-rules-generator.p - * - * @param {string} lang - * locale (language) used. - * - * @return {Function} - * returns a function that gives the plural form name for a given integer: - * var fun = getPluralRules('en'); - * fun(1) -> 'one' - * fun(0) -> 'other' - * fun(1000) -> 'other'. - */ - - function getPluralRules(lang) { - var locales2rules = { - 'af': 3, - 'ak': 4, - 'am': 4, - 'ar': 1, - 'asa': 3, - 'az': 0, - 'be': 11, - 'bem': 3, - 'bez': 3, - 'bg': 3, - 'bh': 4, - 'bm': 0, - 'bn': 3, - 'bo': 0, - 'br': 20, - 'brx': 3, - 'bs': 11, - 'ca': 3, - 'cgg': 3, - 'chr': 3, - 'cs': 12, - 'cy': 17, - 'da': 3, - 'de': 3, - 'dv': 3, - 'dz': 0, - 'ee': 3, - 'el': 3, - 'en': 3, - 'eo': 3, - 'es': 3, - 'et': 3, - 'eu': 3, - 'fa': 0, - 'ff': 5, - 'fi': 3, - 'fil': 4, - 'fo': 3, - 'fr': 5, - 'fur': 3, - 'fy': 3, - 'ga': 8, - 'gd': 24, - 'gl': 3, - 'gsw': 3, - 'gu': 3, - 'guw': 4, - 'gv': 23, - 'ha': 3, - 'haw': 3, - 'he': 2, - 'hi': 4, - 'hr': 11, - 'hu': 0, - 'id': 0, - 'ig': 0, - 'ii': 0, - 'is': 3, - 'it': 3, - 'iu': 7, - 'ja': 0, - 'jmc': 3, - 'jv': 0, - 'ka': 0, - 'kab': 5, - 'kaj': 3, - 'kcg': 3, - 'kde': 0, - 'kea': 0, - 'kk': 3, - 'kl': 3, - 'km': 0, - 'kn': 0, - 'ko': 0, - 'ksb': 3, - 'ksh': 21, - 'ku': 3, - 'kw': 7, - 'lag': 18, - 'lb': 3, - 'lg': 3, - 'ln': 4, - 'lo': 0, - 'lt': 10, - 'lv': 6, - 'mas': 3, - 'mg': 4, - 'mk': 16, - 'ml': 3, - 'mn': 3, - 'mo': 9, - 'mr': 3, - 'ms': 0, - 'mt': 15, - 'my': 0, - 'nah': 3, - 'naq': 7, - 'nb': 3, - 'nd': 3, - 'ne': 3, - 'nl': 3, - 'nn': 3, - 'no': 3, - 'nr': 3, - 'nso': 4, - 'ny': 3, - 'nyn': 3, - 'om': 3, - 'or': 3, - 'pa': 3, - 'pap': 3, - 'pl': 13, - 'ps': 3, - 'pt': 3, - 'rm': 3, - 'ro': 9, - 'rof': 3, - 'ru': 11, - 'rwk': 3, - 'sah': 0, - 'saq': 3, - 'se': 7, - 'seh': 3, - 'ses': 0, - 'sg': 0, - 'sh': 11, - 'shi': 19, - 'sk': 12, - 'sl': 14, - 'sma': 7, - 'smi': 7, - 'smj': 7, - 'smn': 7, - 'sms': 7, - 'sn': 3, - 'so': 3, - 'sq': 3, - 'sr': 11, - 'ss': 3, - 'ssy': 3, - 'st': 3, - 'sv': 3, - 'sw': 3, - 'syr': 3, - 'ta': 3, - 'te': 3, - 'teo': 3, - 'th': 0, - 'ti': 4, - 'tig': 3, - 'tk': 3, - 'tl': 4, - 'tn': 3, - 'to': 0, - 'tr': 0, - 'ts': 3, - 'tzm': 22, - 'uk': 11, - 'ur': 3, - 've': 3, - 'vi': 0, - 'vun': 3, - 'wa': 4, - 'wae': 3, - 'wo': 0, - 'xh': 3, - 'xog': 3, - 'yo': 0, - 'zh': 0, - 'zu': 3 - }; - - // utility functions for plural rules methods - function isIn(n, list) { - return list.indexOf(n) !== -1; - } - function isBetween(n, start, end) { - return start <= n && n <= end; - } - - // list of all plural rules methods: - // map an integer to the plural form name to use - var pluralRules = { - '0': function(n) { - return 'other'; - }, - '1': function(n) { - if ((isBetween((n % 100), 3, 10))) - return 'few'; - if (n === 0) - return 'zero'; - if ((isBetween((n % 100), 11, 99))) - return 'many'; - if (n == 2) - return 'two'; - if (n == 1) - return 'one'; - return 'other'; - }, - '2': function(n) { - if (n !== 0 && (n % 10) === 0) - return 'many'; - if (n == 2) - return 'two'; - if (n == 1) - return 'one'; - return 'other'; - }, - '3': function(n) { - if (n == 1) - return 'one'; - return 'other'; - }, - '4': function(n) { - if ((isBetween(n, 0, 1))) - return 'one'; - return 'other'; - }, - '5': function(n) { - if ((isBetween(n, 0, 2)) && n != 2) - return 'one'; - return 'other'; - }, - '6': function(n) { - if (n === 0) - return 'zero'; - if ((n % 10) == 1 && (n % 100) != 11) - return 'one'; - return 'other'; - }, - '7': function(n) { - if (n == 2) - return 'two'; - if (n == 1) - return 'one'; - return 'other'; - }, - '8': function(n) { - if ((isBetween(n, 3, 6))) - return 'few'; - if ((isBetween(n, 7, 10))) - return 'many'; - if (n == 2) - return 'two'; - if (n == 1) - return 'one'; - return 'other'; - }, - '9': function(n) { - if (n === 0 || n != 1 && (isBetween((n % 100), 1, 19))) - return 'few'; - if (n == 1) - return 'one'; - return 'other'; - }, - '10': function(n) { - if ((isBetween((n % 10), 2, 9)) && !(isBetween((n % 100), 11, 19))) - return 'few'; - if ((n % 10) == 1 && !(isBetween((n % 100), 11, 19))) - return 'one'; - return 'other'; - }, - '11': function(n) { - if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14))) - return 'few'; - if ((n % 10) === 0 || - (isBetween((n % 10), 5, 9)) || - (isBetween((n % 100), 11, 14))) - return 'many'; - if ((n % 10) == 1 && (n % 100) != 11) - return 'one'; - return 'other'; - }, - '12': function(n) { - if ((isBetween(n, 2, 4))) - return 'few'; - if (n == 1) - return 'one'; - return 'other'; - }, - '13': function(n) { - if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14))) - return 'few'; - if (n != 1 && (isBetween((n % 10), 0, 1)) || - (isBetween((n % 10), 5, 9)) || - (isBetween((n % 100), 12, 14))) - return 'many'; - if (n == 1) - return 'one'; - return 'other'; - }, - '14': function(n) { - if ((isBetween((n % 100), 3, 4))) - return 'few'; - if ((n % 100) == 2) - return 'two'; - if ((n % 100) == 1) - return 'one'; - return 'other'; - }, - '15': function(n) { - if (n === 0 || (isBetween((n % 100), 2, 10))) - return 'few'; - if ((isBetween((n % 100), 11, 19))) - return 'many'; - if (n == 1) - return 'one'; - return 'other'; - }, - '16': function(n) { - if ((n % 10) == 1 && n != 11) - return 'one'; - return 'other'; - }, - '17': function(n) { - if (n == 3) - return 'few'; - if (n === 0) - return 'zero'; - if (n == 6) - return 'many'; - if (n == 2) - return 'two'; - if (n == 1) - return 'one'; - return 'other'; - }, - '18': function(n) { - if (n === 0) - return 'zero'; - if ((isBetween(n, 0, 2)) && n !== 0 && n != 2) - return 'one'; - return 'other'; - }, - '19': function(n) { - if ((isBetween(n, 2, 10))) - return 'few'; - if ((isBetween(n, 0, 1))) - return 'one'; - return 'other'; - }, - '20': function(n) { - if ((isBetween((n % 10), 3, 4) || ((n % 10) == 9)) && !( - isBetween((n % 100), 10, 19) || - isBetween((n % 100), 70, 79) || - isBetween((n % 100), 90, 99) - )) - return 'few'; - if ((n % 1000000) === 0 && n !== 0) - return 'many'; - if ((n % 10) == 2 && !isIn((n % 100), [12, 72, 92])) - return 'two'; - if ((n % 10) == 1 && !isIn((n % 100), [11, 71, 91])) - return 'one'; - return 'other'; - }, - '21': function(n) { - if (n === 0) - return 'zero'; - if (n == 1) - return 'one'; - return 'other'; - }, - '22': function(n) { - if ((isBetween(n, 0, 1)) || (isBetween(n, 11, 99))) - return 'one'; - return 'other'; - }, - '23': function(n) { - if ((isBetween((n % 10), 1, 2)) || (n % 20) === 0) - return 'one'; - return 'other'; - }, - '24': function(n) { - if ((isBetween(n, 3, 10) || isBetween(n, 13, 19))) - return 'few'; - if (isIn(n, [2, 12])) - return 'two'; - if (isIn(n, [1, 11])) - return 'one'; - return 'other'; - } - }; - - // return a function that gives the plural form name for a given integer - var index = locales2rules[lang.replace(/-.*$/, '')]; - if (!(index in pluralRules)) { - console.warn('plural form unknown for [' + lang + ']'); - return function() { return 'other'; }; - } - return pluralRules[index]; - } - - // pre-defined 'plural' macro - gMacros.plural = function(str, param, key, prop) { - var n = parseFloat(param); - if (isNaN(n)) - return str; - - // TODO: support other properties (l20n still doesn't...) - if (prop != gTextProp) - return str; - - // initialize _pluralRules - if (!gMacros._pluralRules) { - gMacros._pluralRules = getPluralRules(gLanguage); - } - var index = '[' + gMacros._pluralRules(n) + ']'; - - // try to find a [zero|one|two] key if it's defined - if (n === 0 && (key + '[zero]') in gL10nData) { - str = gL10nData[key + '[zero]'][prop]; - } else if (n == 1 && (key + '[one]') in gL10nData) { - str = gL10nData[key + '[one]'][prop]; - } else if (n == 2 && (key + '[two]') in gL10nData) { - str = gL10nData[key + '[two]'][prop]; - } else if ((key + index) in gL10nData) { - str = gL10nData[key + index][prop]; - } else if ((key + '[other]') in gL10nData) { - str = gL10nData[key + '[other]'][prop]; - } - - return str; - }; - - - /** - * l10n dictionary functions - */ - - // fetch an l10n object, warn if not found, apply `args' if possible - function getL10nData(key, args, fallback) { - var data = gL10nData[key]; - if (!data) { - console.warn('#' + key + ' is undefined.'); - if (!fallback) { - return null; - } - data = fallback; - } - - /** This is where l10n expressions should be processed. - * The plan is to support C-style expressions from the l20n project; - * until then, only two kinds of simple expressions are supported: - * {[ index ]} and {{ arguments }}. - */ - var rv = {}; - for (var prop in data) { - var str = data[prop]; - str = substIndexes(str, args, key, prop); - str = substArguments(str, args, key); - rv[prop] = str; - } - return rv; - } - - // replace {[macros]} with their values - function substIndexes(str, args, key, prop) { - var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; - var reMatch = reIndex.exec(str); - if (!reMatch || !reMatch.length) - return str; - - // an index/macro has been found - // Note: at the moment, only one parameter is supported - var macroName = reMatch[1]; - var paramName = reMatch[2]; - var param; - if (args && paramName in args) { - param = args[paramName]; - } else if (paramName in gL10nData) { - param = gL10nData[paramName]; - } - - // there's no macro parser yet: it has to be defined in gMacros - if (macroName in gMacros) { - var macro = gMacros[macroName]; - str = macro(str, param, key, prop); - } - return str; - } - - // replace {{arguments}} with their values - function substArguments(str, args, key) { - var reArgs = /\{\{\s*(.+?)\s*\}\}/g; - return str.replace(reArgs, function(matched_text, arg) { - if (args && arg in args) { - return args[arg]; - } - if (arg in gL10nData) { - return gL10nData[arg]; - } - console.log('argument {{' + arg + '}} for #' + key + ' is undefined.'); - return matched_text; - }); - } - - // translate an HTML element - function translateElement(element) { - var l10n = getL10nAttributes(element); - if (!l10n.id) - return; - - // get the related l10n object - var data = getL10nData(l10n.id, l10n.args); - if (!data) { - console.warn('#' + l10n.id + ' is undefined.'); - return; - } - - // translate element (TODO: security checks?) - if (data[gTextProp]) { // XXX - if (getChildElementCount(element) === 0) { - element[gTextProp] = data[gTextProp]; - } else { - // this element has element children: replace the content of the first - // (non-empty) child textNode and clear other child textNodes - var children = element.childNodes; - var found = false; - for (var i = 0, l = children.length; i < l; i++) { - if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { - if (found) { - children[i].nodeValue = ''; - } else { - children[i].nodeValue = data[gTextProp]; - found = true; - } - } - } - // if no (non-empty) textNode is found, insert a textNode before the - // first element child. - if (!found) { - var textNode = document.createTextNode(data[gTextProp]); - element.insertBefore(textNode, element.firstChild); - } - } - delete data[gTextProp]; - } - - for (var k in data) { - element[k] = data[k]; - } - } - - // webkit browsers don't currently support 'children' on SVG elements... - function getChildElementCount(element) { - if (element.children) { - return element.children.length; - } - if (typeof element.childElementCount !== 'undefined') { - return element.childElementCount; - } - var count = 0; - for (var i = 0; i < element.childNodes.length; i++) { - count += element.nodeType === 1 ? 1 : 0; - } - return count; - } - - // translate an HTML subtree - function translateFragment(element) { - element = element || document.documentElement; - - // check all translatable children (= w/ a `data-l10n-id' attribute) - var children = getTranslatableChildren(element); - var elementCount = children.length; - for (var i = 0; i < elementCount; i++) { - translateElement(children[i]); - } - - // translate element itself if necessary - translateElement(element); - } - - return { - // get a localized string - get: function(key, args, fallbackString) { - var index = key.lastIndexOf('.'); - var prop = gTextProp; - if (index > 0) { // An attribute has been specified - prop = key.substr(index + 1); - key = key.substring(0, index); - } - var fallback; - if (fallbackString) { - fallback = {}; - fallback[prop] = fallbackString; - } - var data = getL10nData(key, args, fallback); - if (data && prop in data) { - return data[prop]; - } - return '{{' + key + '}}'; - }, - - // debug - getData: function() { return gL10nData; }, - getText: function() { return gTextData; }, - - // get|set the document language - getLanguage: function() { return gLanguage; }, - setLanguage: function(lang, callback) { - loadLocale(lang, function() { - if (callback) - callback(); - translateFragment(); - }); - }, - - // get the direction (ltr|rtl) of the current language - getDirection: function() { - // http://www.w3.org/International/questions/qa-scripts - // Arabic, Hebrew, Farsi, Pashto, Urdu - var rtlList = ['ar', 'he', 'fa', 'ps', 'ur']; - var shortCode = gLanguage.split('-', 1)[0]; - return (rtlList.indexOf(shortCode) >= 0) ? 'rtl' : 'ltr'; - }, - - // translate an element or document fragment - translate: translateFragment, - - // this can be used to prevent race conditions - getReadyState: function() { return gReadyState; }, - ready: function(callback) { - if (!callback) { - return; - } else if (gReadyState == 'complete' || gReadyState == 'interactive') { - window.setTimeout(function() { - callback(); - }); - } else if (document.addEventListener) { - document.addEventListener('localized', function once() { - document.removeEventListener('localized', once); - callback(); - }); - } - } - }; -}) (window, document); diff --git a/public/pdfjs/web/locale/ach/viewer.properties b/public/pdfjs/web/locale/ach/viewer.properties deleted file mode 100644 index 51d0a380..00000000 --- a/public/pdfjs/web/locale/ach/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pot buk mukato -previous_label=Mukato -next.title=Pot buk malubo -next_label=Malubo - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Pot buk: -page_of=pi {{pageCount}} - -zoom_out.title=Jwik Matidi -zoom_out_label=Jwik Matidi -zoom_in.title=Kwot Madit -zoom_in_label=Kwot Madit -zoom.title=Kwoti -presentation_mode.title=Lokke i kit me tyer -presentation_mode_label=Kit me tyer -open_file.title=Yab Pwail -open_file_label=Yab -print.title=Go -print_label=Go -download.title=Gam -download_label=Gam -bookmark.title=Neno ma kombedi (lok onyo yab i dirica manyen) -bookmark_label=Neno ma kombedi - -# Secondary toolbar and context menu -tools.title=Gintic -tools_label=Gintic -first_page.title=Cit i pot buk mukwongo -first_page.label=Cit i pot buk mukwongo -first_page_label=Cit i pot buk mukwongo -last_page.title=Cit i pot buk magiko -last_page.label=Cit i pot buk magiko -last_page_label=Cit i pot buk magiko -page_rotate_cw.title=Wire i tung lacuc -page_rotate_cw.label=Wire i tung lacuc -page_rotate_cw_label=Wire i tung lacuc -page_rotate_ccw.title=Wire i tung lacam -page_rotate_ccw.label=Wire i tung lacam -page_rotate_ccw_label=Wire i tung lacam - -hand_tool_enable.title=Ye gintic me cing -hand_tool_enable_label=Ye gintic me cing -hand_tool_disable.title=Juk gintic me cing -hand_tool_disable_label=Juk gintic me cing - -# Document properties dialog box -document_properties.title=Jami me gin acoya… -document_properties_label=Jami me gin acoya… -document_properties_file_name=Nying pwail: -document_properties_file_size=Dit pa pwail: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Wiye: -document_properties_author=Ngat mucoyo: -document_properties_subject=Lok: -document_properties_keywords=Lok mapire tek: -document_properties_creation_date=Nino dwe me cwec: -document_properties_modification_date=Nino dwe me yub: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Lacwec: -document_properties_producer=Layub PDF: -document_properties_version=Kit PDF: -document_properties_page_count=Kwan me pot buk: -document_properties_close=Lor - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Lok gintic ma inget -toggle_sidebar_label=Lok gintic ma inget -outline.title=Nyut rek pa gin acoya -outline_label=Pek pa gin acoya -attachments.title=Nyut twec -attachments_label=Twec -thumbs.title=Nyut cal -thumbs_label=Cal -findbar.title=Nong iye gin acoya -findbar_label=Nong - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pot buk {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Cal me pot buk {{page}} - -# Find panel button title and messages -find_label=Nong: -find_previous.title=Nong timme pa lok mukato -find_previous_label=Mukato -find_next.title=Nong timme pa lok malubo -find_next_label=Malubo -find_highlight=Wer weng -find_match_case_label=Lok marwate -find_reached_top=Oo iwi gin acoya, omede ki i tere -find_reached_bottom=Oo i agiki me gin acoya, omede ki iwiye -find_not_found=Lok pe ononge - -# Error panel labels -error_more_info=Ngec Mukene -error_less_info=Ngec Manok -error_close=Lor -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Kwena: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Can kikore {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Pwail: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rek: {{line}} -rendering_error=Bal otime i kare me nyuto pot buk. - -# Predefined zoom values -page_scale_width=Lac me iye pot buk -page_scale_fit=Porre me pot buk -page_scale_auto=Kwot pire kene -page_scale_actual=Dite kikome -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Bal -loading_error=Bal otime kun cano PDF. -invalid_file_error=Pwail me PDF ma pe atir onyo obale woko. -missing_file_error=Pwail me PDF tye ka rem. -unexpected_response_error=Lagam mape kigeno pa lapok tic. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Lok angea manok] -password_label=Ket mung me donyo me yabo pwail me PDF man. -password_invalid=Mung me donyo pe atir. Tim ber i tem doki. -password_ok=OK -password_cancel=Juk - -printing_not_supported=Ciko: Layeny ma pe teno goyo liweng. -printing_not_ready=Ciko: PDF pe ocane weng me agoya. -web_fonts_disabled=Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine. -document_colors_disabled=Pe ki ye ki gin acoya me PDF me tic ki rangi gi kengi: 'Ye pot buk me yero rangi mamegi kengi' kijuko woko i layeny. diff --git a/public/pdfjs/web/locale/af/viewer.properties b/public/pdfjs/web/locale/af/viewer.properties deleted file mode 100644 index 98e1d6b1..00000000 --- a/public/pdfjs/web/locale/af/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Vorige bladsy -previous_label=Vorige -next.title=Volgende bladsy -next_label=Volgende - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Bladsy: -page_of=van {{pageCount}} - -zoom_out.title=Zoem uit -zoom_out_label=Zoem uit -zoom_in.title=Zoem in -zoom_in_label=Zoem in -zoom.title=Zoem -presentation_mode.title=Wissel na voorleggingsmodus -presentation_mode_label=Voorleggingsmodus -open_file.title=Open lêer -open_file_label=Open -print.title=Druk -print_label=Druk -download.title=Laai af -download_label=Laai af -bookmark.title=Huidige aansig (kopieer of open in nuwe venster) -bookmark_label=Huidige aansig - -# Secondary toolbar and context menu -tools.title=Nutsgoed -tools_label=Nutsgoed -first_page.title=Gaan na eerste bladsy -first_page.label=Gaan na eerste bladsy -first_page_label=Gaan na eerste bladsy -last_page.title=Gaan na laaste bladsy -last_page.label=Gaan na laaste bladsy -last_page_label=Gaan na laaste bladsy -page_rotate_cw.title=Roteer kloksgewys -page_rotate_cw.label=Roteer kloksgewys -page_rotate_cw_label=Roteer kloksgewys -page_rotate_ccw.title=Roteer anti-kloksgewys -page_rotate_ccw.label=Roteer anti-kloksgewys -page_rotate_ccw_label=Roteer anti-kloksgewys - -hand_tool_enable.title=Aktiveer handjie -hand_tool_enable_label=Aktiveer handjie -hand_tool_disable.title=Deaktiveer handjie -hand_tool_disable_label=Deaktiveer handjie - -# Document properties dialog box -document_properties.title=Dokumenteienskappe… -document_properties_label=Dokumenteienskappe… -document_properties_file_name=Lêernaam: -document_properties_file_size=Lêergrootte: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kG ({{size_b}} grepe) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MG ({{size_b}} grepe) -document_properties_title=Titel: -document_properties_author=Outeur: -document_properties_subject=Onderwerp: -document_properties_keywords=Sleutelwoorde: -document_properties_creation_date=Skeppingsdatum: -document_properties_modification_date=Wysigingsdatum: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Skepper: -document_properties_producer=PDF-vervaardiger: -document_properties_version=PDF-weergawe: -document_properties_page_count=Aantal bladsye: -document_properties_close=Sluit - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Sypaneel aan/af -toggle_sidebar_label=Sypaneel aan/af -outline.title=Wys dokumentoorsig -outline_label=Dokumentoorsig -attachments.title=Wys aanhegsels -attachments_label=Aanhegsels -thumbs.title=Wys duimnaels -thumbs_label=Duimnaels -findbar.title=Soek in dokument -findbar_label=Vind - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Bladsy {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Duimnael van bladsy {{page}} - -# Find panel button title and messages -find_label=Vind: -find_previous.title=Vind die vorige voorkoms van die frase -find_previous_label=Vorige -find_next.title=Vind die volgende voorkoms van die frase -find_next_label=Volgende -find_highlight=Verlig alle -find_match_case_label=Kassensitief -find_reached_top=Bokant van dokument is bereik; gaan voort van onder af -find_reached_bottom=Einde van dokument is bereik; gaan voort van bo af -find_not_found=Frase nie gevind nie - -# Error panel labels -error_more_info=Meer inligting -error_less_info=Minder inligting -error_close=Sluit -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (ID: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Boodskap: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stapel: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Lêer: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Lyn: {{line}} -rendering_error='n Fout het voorgekom toe die bladsy weergegee is. - -# Predefined zoom values -page_scale_width=Bladsywydte -page_scale_fit=Pas bladsy -page_scale_auto=Outomatiese zoem -page_scale_actual=Werklike grootte -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Fout -loading_error='n Fout het voorgekom met die laai van die PDF. -invalid_file_error=Ongeldige of korrupte PDF-lêer. -missing_file_error=PDF-lêer is weg. -unexpected_response_error=Onverwagse antwoord van bediener. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-annotasie -password_label=Gee die wagwoord om dié PDF-lêer mee te open. -password_invalid=Ongeldige wagwoord. Probeer gerus weer. -password_ok=OK -password_cancel=Kanselleer - -printing_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie. -printing_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie. -web_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie. -document_colors_disabled=PDF-dokumente word nie toegelaat om hul eie kleure te gebruik nie: 'Laat bladsye toe om hul eie kleure te kies' is gedeaktiveer in die blaaier. diff --git a/public/pdfjs/web/locale/ak/viewer.properties b/public/pdfjs/web/locale/ak/viewer.properties deleted file mode 100644 index 90b8bf44..00000000 --- a/public/pdfjs/web/locale/ak/viewer.properties +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Krataafa baako a etwa mu -previous_label=Ekyiri-baako -next.title=Krataafa a edi so baako -next_label=Dea-É›-di-so-baako - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Krataafa: -page_of=wÉ” {{pageCount}} - -zoom_out.title=Zuum pue -zoom_out_label=Zuum ba abÉ”nten -zoom_in.title=Zuum kÉ” mu -zoom_in_label=Zuum kÉ” mu -zoom.title=Zuum -presentation_mode.title=Sesa kÉ” YÉ›kyerÉ› Tebea mu -presentation_mode_label=YÉ›kyerÉ› Tebea -open_file.title=Bue Fael -open_file_label=Bue -print.title=Prente -print_label=Prente -download.title=Twe -download_label=Twe -bookmark.title=Seisei nhwÉ› (fa anaaso bue wÉ” tokuro foforo mu) -bookmark_label=Seisei nhwÉ› - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Ti asÉ›m: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=SÉ” anaaso dum saedbaa -toggle_sidebar_label=SÉ” anaaso dum saedbaa -outline.title=KyerÉ› dÉ”komÉ›nt bÉ”bea -outline_label=DÉ”komÉ›nt bÉ”bea -thumbs.title=KyerÉ› mfoniwaa -thumbs_label=Mfoniwaa -findbar.title=Hu wÉ” dÉ”komÉ›nt no mu -findbar_label=Hu - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Krataafa {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Krataafa ne mfoniwaa {{page}} - -# Find panel button title and messages -find_label=Hunu: -find_previous.title=San hu fres wÉ” ekyiri baako -find_previous_label=Ekyiri baako -find_next.title=San hu fres no wÉ” enim baako -find_next_label=Ndiso -find_highlight=HyÉ› bibiara nso -find_match_case_label=Fa susu kaase -find_reached_top=Edu krataafa ne soro, atoa so efiri ase -find_reached_bottom=Edu krataafa n'ewiei, atoa so efiri soro -find_not_found=Ennhu fres - -# Error panel labels -error_more_info=InfÉ”mehyÉ›n bio a wÉ”ka ho -error_less_info=Te infÉ”mehyÉ›n bio a wÉ”ka ho so -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{vɛɛhyen}} (nsi: {{si}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Nkrato: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Staake: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fael: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Laen: {{line}} -rendering_error=Mfomso bae wÉ” bere a wÉ” rekyerÉ› krataafa no. - -# Predefined zoom values -page_scale_width=Krataafa tÉ›trÉ›tÉ› -page_scale_fit=Krataafa ehimtwa -page_scale_auto=Zuum otomatik -page_scale_actual=KÉ›seyÉ› ankasa -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Mfomso -loading_error=Mfomso bae wÉ” bere a wÉ”reloode PDF no. -invalid_file_error=PDF fael no nndi mu anaaso ho atÉ” kyima. -missing_file_error=PDF fael no ayera. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} TÉ›kst-nyiano] -password_ok=OK -password_cancel=Twa-mu - -printing_not_supported=KÉ”kÉ”bÉ”: Brawsa yi nnhyÉ› daa mma prent ho kwan. -printing_not_ready=KÉ”kÉ”bÉ”: WÉ”nntwee PDF fael no nyinara mmbaee ama wo É› tumi aprente. -web_fonts_disabled=Ɔedum wÉ›b-mfÉ”nt: nntumi mmfa PDF mfÉ”nt a wÉ”hyÉ› mu nndi dwuma. -document_colors_disabled=WÉ”mma ho kwan sÉ› PDF adÉ”komÉ›nt de wÉ”n ara wÉ”n ahosu bÉ›di dwuma: wÉ” adum 'Ma ho kwan ma nkrataafa mpaw wÉ”n ara wÉ”n ahosu' wÉ” brawsa yi mu. diff --git a/public/pdfjs/web/locale/an/viewer.properties b/public/pdfjs/web/locale/an/viewer.properties deleted file mode 100644 index a2ccb9d4..00000000 --- a/public/pdfjs/web/locale/an/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pachina anterior -previous_label=Anterior -next.title=Pachina siguient -next_label=Siguient - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Pachina: -page_of=de {{pageCount}} - -zoom_out.title=Achiquir -zoom_out_label=Achiquir -zoom_in.title=Agrandir -zoom_in_label=Agrandir -zoom.title=Grandaria -presentation_mode.title=Cambear t'o modo de presentación -presentation_mode_label=Modo de presentación -open_file.title=Ubrir o fichero -open_file_label=Ubrir -print.title=Imprentar -print_label=Imprentar -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar u ubrir en una nueva finestra) -bookmark_label=Anvista actual - -# Secondary toolbar and context menu -tools.title=Ferramientas -tools_label=Ferramientas -first_page.title=Ir ta la primer pachina -first_page.label=Ir ta la primer pachina -first_page_label=Ir ta la primer pachina -last_page.title=Ir ta la zaguer pachina -last_page.label=Ir ta la zaguera pachina -last_page_label=Ir ta la zaguer pachina -page_rotate_cw.title=Chirar enta la dreita -page_rotate_cw.label=Chirar enta la dreita -page_rotate_cw_label=Chira enta la dreita -page_rotate_ccw.title=Chirar enta la zurda -page_rotate_ccw.label=Chirar en sentiu antihorario -page_rotate_ccw_label=Chirar enta la zurda - -hand_tool_enable.title=Activar a ferramienta man -hand_tool_enable_label=Activar a ferramenta man -hand_tool_disable.title=Desactivar a ferramienta man -hand_tool_disable_label=Desactivar a ferramienta man - -# Document properties dialog box -document_properties.title=Propiedatz d'o documento... -document_properties_label=Propiedatz d'o documento... -document_properties_file_name=Nombre de fichero: -document_properties_file_size=Grandaria d'o fichero: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titol: -document_properties_author=Autor: -document_properties_subject=Afer: -document_properties_keywords=Parolas clau: -document_properties_creation_date=Calendata de creyación: -document_properties_modification_date=Calendata de modificación: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creyador: -document_properties_producer=Creyador de PDF: -document_properties_version=Versión de PDF: -document_properties_page_count=Numero de pachinas: -document_properties_close=Zarrar - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Amostrar u amagar a barra lateral -toggle_sidebar_label=Amostrar a barra lateral -outline.title=Amostrar o esquema d'o documento -outline_label=Esquema d'o documento -attachments.title=Amostrar os adchuntos -attachments_label=Adchuntos -thumbs.title=Amostrar as miniaturas -thumbs_label=Miniaturas -findbar.title=Trobar en o documento -findbar_label=Trobar - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pachina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura d'a pachina {{page}} - -# Find panel button title and messages -find_label=Trobar: -find_previous.title=Trobar l'anterior coincidencia d'a frase -find_previous_label=Anterior -find_next.title=Trobar a siguient coincidencia d'a frase -find_next_label=Siguient -find_highlight=Resaltar-lo tot -find_match_case_label=Coincidencia de mayusclas/minusclas -find_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo -find_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto -find_not_found=No s'ha trobau a frase - -# Error panel labels -error_more_info=Mas información -error_less_info=Menos información -error_close=Zarrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensache: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fichero: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linia: {{line}} -rendering_error=Ha ocurriu una error en renderizar a pachina. - -# Predefined zoom values -page_scale_width=Amplaria d'a pachina -page_scale_fit=Achuste d'a pachina -page_scale_auto=Grandaria automatica -page_scale_actual=Grandaria actual -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Error -loading_error=S'ha produciu una error en cargar o PDF. -invalid_file_error=O PDF no ye valido u ye estorbau. -missing_file_error=No i ha fichero PDF. -unexpected_response_error=Respuesta a lo servicio inasperada. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotación {{type}}] -password_label=Introduzca a clau ta ubrir iste fichero PDF. -password_invalid=Clau invalida. Torna a intentar-lo. -password_ok=Acceptar -password_cancel=Cancelar - -printing_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions. -printing_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo. -web_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF. -document_colors_disabled=Os documentos PDF no pueden fer servir as suyas propias colors: 'Permitir que as pachinas triguen as suyas propias colors' ye desactivau en o navegador. diff --git a/public/pdfjs/web/locale/ar/viewer.properties b/public/pdfjs/web/locale/ar/viewer.properties deleted file mode 100644 index 154e48bb..00000000 --- a/public/pdfjs/web/locale/ar/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=الصÙØØ© السابقة -previous_label=السابقة -next.title=الصÙØØ© التالية -next_label=التالية - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=صÙØØ©: -page_of=من {{pageCount}} - -zoom_out.title=بعّد -zoom_out_label=بعّد -zoom_in.title=قرّب -zoom_in_label=قرّب -zoom.title=التقريب -presentation_mode.title=انتقل لوضع العرض التقديمي -presentation_mode_label=وضع العرض التقديمي -open_file.title=اÙØªØ Ù…Ù„Ùًا -open_file_label=اÙØªØ -print.title=اطبع -print_label=اطبع -download.title=نزّل -download_label=نزّل -bookmark.title=المنظور الØالي (انسخ أو اÙØªØ ÙÙŠ ناÙذة جديدة) -bookmark_label=المنظور الØالي - -# Secondary toolbar and context menu -tools.title=الأدوات -tools_label=الأدوات -first_page.title=اذهب إلى الصÙØØ© الأولى -first_page.label=اذهب إلى الصÙØØ© الأولى -first_page_label=اذهب إلى الصÙØØ© الأولى -last_page.title=اذهب إلى الصÙØØ© الأخيرة -last_page.label=اذهب إلى الصÙØØ© الأخيرة -last_page_label=اذهب إلى الصÙØØ© الأخيرة -page_rotate_cw.title=أدر باتجاه عقارب الساعة -page_rotate_cw.label=أدر باتجاه عقارب الساعة -page_rotate_cw_label=أدر باتجاه عقارب الساعة -page_rotate_ccw.title=أدر بعكس اتجاه عقارب الساعة -page_rotate_ccw.label=أدر بعكس اتجاه عقارب الساعة -page_rotate_ccw_label=أدر بعكس اتجاه عقارب الساعة - -hand_tool_enable.title=Ùعّل أداة اليد -hand_tool_enable_label=Ùعّل أداة اليد -hand_tool_disable.title=عطّل أداة اليد -hand_tool_disable_label=عطّل أداة اليد - -# Document properties dialog box -document_properties.title=خصائص المستند… -document_properties_label=خصائص المستند… -document_properties_file_name=اسم الملÙ: -document_properties_file_size=Øجم الملÙ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} Ùƒ.بايت ({{size_b}} بايت) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} Ù….بايت ({{size_b}} بايت) -document_properties_title=العنوان: -document_properties_author=المؤلÙ: -document_properties_subject=الموضوع: -document_properties_keywords=الكلمات الأساسية: -document_properties_creation_date=تاريخ الإنشاء: -document_properties_modification_date=تاريخ التعديل: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}ØŒ {{time}} -document_properties_creator=المنشئ: -document_properties_producer=منتج PDF: -document_properties_version=إصدارة PDF: -document_properties_page_count=عدد الصÙØات: -document_properties_close=أغلق - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=بدّل الشريط الجانبي -toggle_sidebar_label=بدّل الشريط الجانبي -outline.title=اعرض مخطط المستند -outline_label=مخطط المستند -attachments.title=اعرض المرÙقات -attachments_label=المÙرÙقات -thumbs.title=اعرض Ù…Ùصغرات -thumbs_label=Ù…Ùصغّرات -findbar.title=ابØØ« ÙÙŠ المستند -findbar_label=ابØØ« - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=صÙØØ© {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=مصغّرة صÙØØ© {{page}} - -# Find panel button title and messages -find_label=ابØØ«: -find_previous.title=ابØØ« عن التّواجد السّابق للعبارة -find_previous_label=السابق -find_next.title=ابØØ« عن التّواجد التّالي للعبارة -find_next_label=التالي -find_highlight=أبرÙز الكل -find_match_case_label=طابق Øالة الأØر٠-find_reached_top=تابعت من الأسÙÙ„ بعدما وصلت إلى بداية المستند -find_reached_bottom=تابعت من الأعلى بعدما وصلت إلى نهاية المستند -find_not_found=لا وجود للعبارة - -# Error panel labels -error_more_info=معلومات أكثر -error_less_info=معلومات أقل -error_close=أغلق -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=â€PDF.js Ù†{{version}} â€(بناء: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=الرسالة: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=الرصّة: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=الملÙ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=السطر: {{line}} -rendering_error=Øدث خطأ أثناء عرض الصÙØØ©. - -# Predefined zoom values -page_scale_width=عرض الصÙØØ© -page_scale_fit=ملائمة الصÙØØ© -page_scale_auto=تقريب تلقائي -page_scale_actual=الØجم الØقيقي -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}Ùª - -# Loading indicator messages -loading_error_indicator=عطل -loading_error=Øدث عطل أثناء تØميل مل٠PDF. -invalid_file_error=مل٠PDF تال٠أو غير صØÙŠØ. -missing_file_error=مل٠PDF غير موجود. -unexpected_response_error=استجابة خادوم غير متوقعة. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[تعليق {{type}}] -password_label=أدخل لكلمة السر Ù„ÙØªØ Ù‡Ø°Ø§ الملÙ. -password_invalid=كلمة سر خطأ. من Ùضلك أعد المØاولة. -password_ok=Øسنا -password_cancel=ألغ٠- -printing_not_supported=تØذير: لا يدعم هذا المتصÙØ Ø§Ù„Ø·Ø¨Ø§Ø¹Ø© بشكل كامل. -printing_not_ready=تØذير: مل٠PDF لم ÙŠÙØمّل كاملًا للطباعة. -web_fonts_disabled=خطوط الوب Ù…Ùعطّلة: تعذّر استخدام خطوط PDF المÙضمّنة. -document_colors_disabled=ليس مسموØًا لملÙات PDF باستخدام ألوانها الخاصة: خيار 'Ø§Ø³Ù…Ø Ù„Ù„ØµÙØات باختيار ألوانها الخاصة' ليس Ù…ÙÙعّلًا ÙÙŠ المتصÙØ. diff --git a/public/pdfjs/web/locale/as/viewer.properties b/public/pdfjs/web/locale/as/viewer.properties deleted file mode 100644 index 2e0c18c3..00000000 --- a/public/pdfjs/web/locale/as/viewer.properties +++ /dev/null @@ -1,172 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=পূৰà§à¦¬à§±à§°à§à¦¤à§€ পৃষà§à¦ া -previous_label=পূৰà§à¦¬à§±à§°à§à¦¤à§€ -next.title=পৰৱৰà§à¦¤à§€ পৃষà§à¦ া -next_label=পৰৱৰà§à¦¤à§€ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=পৃষà§à¦ া: -page_of=ৰ {{pageCount}} - -zoom_out.title=জà§à¦® আউট -zoom_out_label=জà§à¦® আউট -zoom_in.title=জà§à¦® ইন -zoom_in_label=জà§à¦® ইন -zoom.title=জà§à¦® কৰক -presentation_mode.title=উপসà§à¦¥à¦¾à¦ªà¦¨ অৱসà§à¦¥à¦¾à¦²à§‡ যাওক -presentation_mode_label=উপসà§à¦¥à¦¾à¦ªà¦¨ অৱসà§à¦¥à¦¾ -open_file.title=ফাইল খোলক -open_file_label=খোলক -print.title=পà§à§°à¦¿à¦¨à§à¦Ÿ কৰক -print_label=পà§à§°à¦¿à¦¨à§à¦Ÿ কৰক -download.title=ডাউনল'ড কৰক -download_label=ডাউনল'ড কৰক -bookmark.title=বৰà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯ (কপি কৰক অথবা নতà§à¦¨ উইনà§à¦¡à§‹à¦¤ খোলক) -bookmark_label=বৰà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯ - -# Secondary toolbar and context menu -tools.title=সà¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚হ -tools_label=সà¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚হ -first_page.title=পà§à§°à¦¥à¦® পৃষà§à¦ াত যাওক -first_page.label=পà§à§°à¦¥à¦® পৃষà§à¦ াত যাওক -first_page_label=পà§à§°à¦¥à¦® পৃষà§à¦ াত যাওক -last_page.title=সৰà§à¦¬à¦¶à§‡à¦· পৃষà§à¦ াত যাওক -last_page.label=সৰà§à¦¬à¦¶à§‡à¦· পৃষà§à¦ াত যাওক -last_page_label=সৰà§à¦¬à¦¶à§‡à¦· পৃষà§à¦ াত যাওক -page_rotate_cw.title=ঘড়ীৰ দিশত ঘà§à§°à¦¾à¦“ক -page_rotate_cw.label=ঘড়ীৰ দিশত ঘà§à§°à¦¾à¦“ক -page_rotate_cw_label=ঘড়ীৰ দিশত ঘà§à§°à¦¾à¦“ক -page_rotate_ccw.title=ঘড়ীৰ ওলোটা দিশত ঘà§à§°à¦¾à¦“ক -page_rotate_ccw.label=ঘড়ীৰ ওলোটা দিশত ঘà§à§°à¦¾à¦“ক -page_rotate_ccw_label=ঘড়ীৰ ওলোটা দিশত ঘà§à§°à¦¾à¦“ক - -hand_tool_enable.title=হাà¦à¦¤ সà¦à¦œà§à¦²à¦¿ সামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক -hand_tool_enable_label=হাà¦à¦¤ সà¦à¦œà§à¦²à¦¿ সামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক -hand_tool_disable.title=হাà¦à¦¤ সà¦à¦œà§à¦²à¦¿ অসামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক -hand_tool_disable_label=হাà¦à¦¤ সà¦à¦œà§à¦²à¦¿ অসামৰà§à¦¥à¦¬à¦¾à¦¨ কৰক - -# Document properties dialog box -document_properties.title=দসà§à¦¤à¦¾à¦¬à§‡à¦œà§° বৈশিষà§à¦Ÿà§à¦¯à¦¸à¦®à§‚হ… -document_properties_label=দসà§à¦¤à¦¾à¦¬à§‡à¦œà§° বৈশিষà§à¦Ÿà§à¦¯à¦¸à¦®à§‚হ… -document_properties_file_name=ফাইল নাম: -document_properties_file_size=ফাইলৰ আকাৰ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=শীৰà§à¦·à¦•: -document_properties_author=লেখক: -document_properties_subject=বিষয়: -document_properties_keywords=কিৱাৰà§à¦¡à¦¸à¦®à§‚হ: -document_properties_creation_date=সৃষà§à¦Ÿà¦¿à§° তাৰিখ: -document_properties_modification_date=পৰিবৰà§à¦¤à¦¨à§° তাৰিখ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=সৃষà§à¦Ÿà¦¿à¦•à§°à§à¦¤à¦¾: -document_properties_producer=PDF উৎপাদক: -document_properties_version=PDF সংসà§à¦•à§°à¦£: -document_properties_page_count=পৃষà§à¦ াৰ গণনা: -document_properties_close=বনà§à¦§ কৰক - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=কাষবাৰ টগল কৰক -toggle_sidebar_label=কাষবাৰ টগল কৰক -outline.title=দসà§à¦¤à¦¾à¦¬à§‡à¦œ আউটলাইন দেখà§à§±à¦¾à¦“ক -outline_label=দসà§à¦¤à¦¾à¦¬à§‡à¦œ আউটলাইন -attachments.title=à¦à¦Ÿà¦¾à¦šà¦®à§‡à¦¨à§à¦Ÿà¦¸à¦®à§‚হ দেখà§à§±à¦¾à¦“ক -attachments_label=à¦à¦Ÿà¦¾à¦šà¦®à§‡à¦¨à§à¦Ÿà¦¸à¦®à§‚হ -thumbs.title=থামà§à¦¬à¦¨à§‡à¦‡à¦²à¦¸à¦®à§‚হ দেখà§à§±à¦¾à¦“ক -thumbs_label=থামà§à¦¬à¦¨à§‡à¦‡à¦²à¦¸à¦®à§‚হ -findbar.title=দসà§à¦¤à¦¾à¦¬à§‡à¦œà¦¤ সনà§à¦§à¦¾à¦¨ কৰক -findbar_label=সনà§à¦§à¦¾à¦¨ কৰক - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=পৃষà§à¦ া {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=পৃষà§à¦ াৰ থামà§à¦¬à¦¨à§‡à¦‡à¦² {{page}} - -# Find panel button title and messages -find_label=সনà§à¦§à¦¾à¦¨ কৰক: -find_previous.title=বাকà§à¦¯à¦¾à¦‚শৰ পূৰà§à¦¬à§±à§°à§à¦¤à§€ উপসà§à¦¥à¦¿à¦¤à¦¿ সনà§à¦§à¦¾à¦¨ কৰক -find_previous_label=পূৰà§à¦¬à§±à§°à§à¦¤à§€ -find_next.title=বাকà§à¦¯à¦¾à¦‚শৰ পৰৱৰà§à¦¤à§€ উপসà§à¦¥à¦¿à¦¤à¦¿ সনà§à¦§à¦¾à¦¨ কৰক -find_next_label=পৰৱৰà§à¦¤à§€ -find_highlight=সকলো উজà§à¦œà§à¦¬à¦² কৰক -find_match_case_label=ফলা মিলাওক -find_reached_top=তলৰ পৰা আৰমà§à¦ কৰি, দসà§à¦¤à¦¾à¦¬à§‡à¦œà§° ওপৰলৈ অহা হৈছে -find_reached_bottom=ওপৰৰ পৰা আৰমà§à¦ কৰি, দসà§à¦¤à¦¾à¦¬à§‡à¦œà§° তললৈ অহা হৈছে -find_not_found=বাকà§à¦¯à¦¾à¦‚শ পোৱা নগল - -# Error panel labels -error_more_info=অধিক তথà§à¦¯ -error_less_info=কম তথà§à¦¯ -error_close=বনà§à¦§ কৰক -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=বাৰà§à¦¤à¦¾: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=সà§à¦Ÿà§‡à¦•: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ফাইল: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=শাৰী: {{line}} -rendering_error=à¦à¦‡ পৃষà§à¦ া ৰেণà§à¦¡à¦¾à§° কৰোতে à¦à¦Ÿà¦¾ তà§à§°à§à¦Ÿà¦¿ দেখা দিলে। - -# Predefined zoom values -page_scale_width=পৃষà§à¦ াৰ পà§à§°à¦¸à§à¦¥ -page_scale_fit=পৃষà§à¦ া খাপ -page_scale_auto=সà§à¦¬à¦šà¦¾à¦²à¦¿à¦¤ জà§à¦® -page_scale_actual=পà§à§°à¦•à§ƒà¦¤ আকাৰ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=তà§à§°à§à¦Ÿà¦¿ -loading_error=PDF ল'ড কৰোতে à¦à¦Ÿà¦¾ তà§à§°à§à¦Ÿà¦¿ দেখা দিলে। -invalid_file_error=অবৈধ অথবা কà§à¦·à¦¤à¦¿à¦—à§à§°à¦¸à§à¦¥ PDF file। -missing_file_error=সনà§à¦§à¦¾à¦¨à¦¹à¦¿à¦¨ PDF ফাইল। -unexpected_response_error=অপà§à§°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ চাৰà§à¦à¦¾à§° পà§à§°à¦¤à¦¿à¦•à§à§°à¦¿à§Ÿà¦¾à¥¤ - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} টোকা] -password_label=à¦à¦‡ PDF ফাইল খোলিবলৈ পাছৱৰà§à¦¡ সà§à¦®à§à§±à¦¾à¦“ক। -password_invalid=অবৈধ পাছৱৰà§à¦¡à¥¤ অনà§à¦—à§à§°à¦¹ কৰি পà§à¦¨à§° চেষà§à¦Ÿà¦¾ কৰক। -password_ok=ঠিক আছে -password_cancel=বাতিল কৰক - -printing_not_supported=সতৰà§à¦•à¦¬à¦¾à§°à§à¦¤à¦¾: পà§à§°à¦¿à¦¨à§à¦Ÿà¦¿à¦‚ à¦à¦‡ বà§à§°à¦¾à¦‰à¦›à¦¾à§° দà§à¦¬à¦¾à§°à¦¾ সমà§à¦ªà§‚ৰà§à¦£à¦à¦¾à§±à§‡ সমৰà§à¦¥à¦¿à¦¤ নহয়। -printing_not_ready=সতৰà§à¦•à¦¬à¦¾à§°à§à¦¤à¦¾: PDF পà§à§°à¦¿à¦¨à§à¦Ÿà¦¿à¦‚ৰ বাবে সমà§à¦ªà§‚ৰà§à¦£à¦à¦¾à§±à§‡ ল'ডেড নহয়। -web_fonts_disabled=ৱেব ফনà§à¦Ÿà¦¸à¦®à§‚হ অসামৰà§à¦¥à¦¬à¦¾à¦¨ কৰা আছে: অনà§à¦¤à§°à§à¦à§à¦•à§à¦¤ PDF ফনà§à¦Ÿà¦¸à¦®à§‚হ বà§à¦¯à§±à¦¹à¦¾à§° কৰিবলে অকà§à¦·à¦®à¥¤ -document_colors_disabled=PDF দসà§à¦¤à¦¾à¦¬à§‡à¦œà¦¸à¦®à§‚হৰ সিহতৰ নিজসà§à¦¬ ৰঙ বà§à¦¯à§±à¦¹à¦¾à§° কৰাৰ অনà§à¦®à¦¤à¦¿ নাই: বà§à§°à¦¾à¦‰à¦›à¦¾à§°à¦¤ 'পৃষà§à¦ াসমূহক সিহতৰ নিজসà§à¦¬ ৰঙ নিৰà§à¦¬à¦¾à¦šà¦¨ কৰাৰ অনà§à¦®à¦¤à¦¿ দিয়ক' অসামৰà§à¦¥à¦¬à¦¾à¦¨ কৰা আছে। diff --git a/public/pdfjs/web/locale/ast/viewer.properties b/public/pdfjs/web/locale/ast/viewer.properties deleted file mode 100644 index 2346c54b..00000000 --- a/public/pdfjs/web/locale/ast/viewer.properties +++ /dev/null @@ -1,111 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -previous.title = Páxina anterior -previous_label = Anterior -next.title = Páxina siguiente -next_label = Siguiente -page_label = Páxina: -page_of = de {{pageCount}} -zoom_out.title = Reducir -zoom_out_label = Reducir -zoom_in.title = Aumentar -zoom_in_label = Aumentar -zoom.title = Tamañu -print.title = Imprentar -print_label = Imprentar -open_file.title = Abrir ficheru -open_file_label = Abrir -download.title = Descargar -download_label = Descargar -bookmark.title = Vista actual (copiar o abrir nuna nueva ventana) -bookmark_label = Vista actual -outline.title = Amosar l'esquema del documentu -outline_label = Esquema del documentu -thumbs.title = Amosar miniatures -thumbs_label = Miniatures -thumb_page_title = Páxina {{page}} -thumb_page_canvas = Miniatura de la páxina {{page}} -error_more_info = Más información -error_less_info = Menos información -error_close = Zarrar -error_message = Mensaxe: {{message}} -error_stack = Pila: {{stack}} -error_file = Ficheru: {{file}} -error_line = Llinia: {{line}} -rendering_error = Hebo un fallu al renderizar la páxina. -page_scale_width = Anchor de la páxina -page_scale_fit = Axuste de la páxina -page_scale_auto = Tamañu automáticu -page_scale_actual = Tamañu actual -loading_error_indicator = Fallu -loading_error = Hebo un fallu al cargar el PDF. -printing_not_supported = Avisu: Imprentar nun tien sofitu téunicu completu nesti navegador. -presentation_mode_label = -presentation_mode.title = -page_rotate_cw.label = -page_rotate_ccw.label = -last_page.label = Dir a la cabera páxina -invalid_file_error = Ficheru PDF inválidu o corruptu. -first_page.label = Dir a la primer páxina -findbar_label = Guetar -findbar.title = Guetar nel documentu -find_previous_label = Anterior -find_previous.title = Alcontrar l'anterior apaición de la fras -find_not_found = Frase non atopada -find_next_label = Siguiente -find_next.title = Alcontrar la siguiente apaición d'esta fras -find_match_case_label = Coincidencia de mayús./minús. -find_label = Guetar: -find_highlight = Remarcar toos -find_reached_top=Algamóse'l principiu del documentu, siguir dende'l final -find_reached_bottom=Algamóse'l final del documentu, siguir dende'l principiu -web_fonts_disabled = Les fontes web tán desactivaes: ye imposible usar les fontes PDF embebÃes. -toggle_sidebar_label = Camudar barra llateral -toggle_sidebar.title = Camudar barra llateral -missing_file_error = Nun hai ficheru PDF. -error_version_info = PDF.js v{{version}} (build: {{build}}) -printing_not_ready = Avisu: Esti PDF nun se cargó completamente pa poder imprentase. -text_annotation_type.alt = [Anotación {{type}}] -document_colors_disabled = Los documentos PDF nun tienen permitÃo usar los sos propios colores: 'Permitir a les páxines elexir los sos propios colores' ta desactivao nel navegador. -tools_label = Ferramientes -tools.title = Ferramientes -password_ok = Aceutar -password_label = Introduz la contraseña p'abrir esti ficheru PDF -password_invalid = Contraseña non válida. Vuelvi a intentalo. -password_cancel = Encaboxar -page_rotate_cw_label = Xirar en sen horariu -page_rotate_cw.title = Xirar en sen horariu -page_rotate_ccw_label = Xirar en sen antihorariu -page_rotate_ccw.title = Xirar en sen antihorariu -last_page_label = Dir a la postrer páxina -last_page.title = Dir a la postrer páxina -hand_tool_enable_label = Activar ferramienta mano -hand_tool_enable.title = Activar ferramienta mano -hand_tool_disable_label = Desactivar ferramienta mano -hand_tool_disable.title = Desactivar ferramienta mano -first_page_label = Dir a la primer páxina -first_page.title = Dir a la primer páxina -document_properties_version = Versión PDF: -document_properties_title = TÃtulu: -document_properties_subject = Asuntu: -document_properties_producer = Productor PDF: -document_properties_page_count = Númberu de páxines: -document_properties_modification_date = Data de modificación: -document_properties_mb = {{size_mb}} MB ({{size_b}} bytes) -document_properties_label = Propiedaes del documentu… -document_properties_keywords = Pallabres clave: -document_properties_kb = {{size_kb}} KB ({{size_b}} bytes) -document_properties_file_size = Tamañu de ficheru: -document_properties_file_name = Nome de ficheru: -document_properties_date_string = {{date}}, {{time}} -document_properties_creator = Creador: -document_properties_creation_date = Data de creación: -document_properties_close = Zarrar -document_properties_author = Autor: -document_properties.title = Propiedaes del documentu… -attachments_label = Axuntos -attachments.title = Amosar axuntos -unexpected_response_error = Rempuesta inesperada del sirvidor. -page_scale_percent = {{scale}}% diff --git a/public/pdfjs/web/locale/az/viewer.properties b/public/pdfjs/web/locale/az/viewer.properties deleted file mode 100644 index fcd3377b..00000000 --- a/public/pdfjs/web/locale/az/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ÆvvÉ™lki sÉ™hifÉ™ -previous_label=ÆvvÉ™lkini tap -next.title=NövbÉ™ti sÉ™hifÉ™ -next_label=Ä°rÉ™li - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=SÉ™hifÉ™: -page_of=/ {{pageCount}} - -zoom_out.title=UzaqlaÅŸ -zoom_out_label=UzaqlaÅŸ -zoom_in.title=YaxınlaÅŸ -zoom_in_label=YaxınlaÅŸ -zoom.title=YaxınlaÅŸdırma -presentation_mode.title=TÉ™qdimat RejiminÉ™ Keç -presentation_mode_label=TÉ™qdimat Rejimi -open_file.title=Fayl Aç -open_file_label=Aç -print.title=Yazdır -print_label=Yazdır -download.title=YüklÉ™ -download_label=YüklÉ™ -bookmark.title=Hazırkı görünüş (köçür vÉ™ ya yeni pÉ™ncÉ™rÉ™dÉ™ aç) -bookmark_label=Hazırki görünüş - -# Secondary toolbar and context menu -tools.title=AlÉ™tlÉ™r -tools_label=AlÉ™tlÉ™r -first_page.title=Ä°lk SÉ™hifÉ™yÉ™ get -first_page.label=Ä°lk SÉ™hifÉ™yÉ™ get -first_page_label=Ä°lk SÉ™hifÉ™yÉ™ get -last_page.title=Son SÉ™hifÉ™yÉ™ get -last_page.label=Son SÉ™hifÉ™yÉ™ get -last_page_label=Son SÉ™hifÉ™yÉ™ get -page_rotate_cw.title=Saat Ä°stiqamÉ™tindÉ™ Fırlat -page_rotate_cw.label=Saat Ä°stiqamÉ™tindÉ™ Fırlat -page_rotate_cw_label=Saat Ä°stiqamÉ™tindÉ™ Fırlat -page_rotate_ccw.title=Saat Ä°stiqamÉ™tinin ÆksinÉ™ Fırlat -page_rotate_ccw.label=Saat Ä°stiqamÉ™tinin ÆksinÉ™ Fırlat -page_rotate_ccw_label=Saat Ä°stiqamÉ™tinin ÆksinÉ™ Fırlat - -hand_tool_enable.title=Æl alÉ™tini aktiv et -hand_tool_enable_label=Æl alÉ™tini aktiv et -hand_tool_disable.title=Æl alÉ™tini deaktiv et -hand_tool_disable_label=Æl alÉ™tini deaktiv et - -# Document properties dialog box -document_properties.title=SÉ™nÉ™d xüsusiyyÉ™tlÉ™ri… -document_properties_label=SÉ™nÉ™d xüsusiyyÉ™tlÉ™ri… -document_properties_file_name=Fayl adı: -document_properties_file_size=Fayl ölçüsü: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bayt) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bayt) -document_properties_title=BaÅŸlık: -document_properties_author=Müəllif: -document_properties_subject=Mövzu: -document_properties_keywords=Açar sözlÉ™r: -document_properties_creation_date=Yaradılış Tarixi : -document_properties_modification_date=DÉ™yiÅŸdirilmÉ™ Tarixi : -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Yaradan: -document_properties_producer=PDF yaradıcısı: -document_properties_version=PDF versiyası: -document_properties_page_count=SÉ™hifÉ™ sayı: -document_properties_close=Qapat - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Yan Paneli Aç/BaÄŸla -toggle_sidebar_label=Yan Paneli Aç/BaÄŸla -outline.title=SÉ™nÉ™d struktunu göstÉ™r -outline_label=SÉ™nÉ™d strukturu -attachments.title=BaÄŸlamaları göstÉ™r -attachments_label=BaÄŸlamalar -thumbs.title=Kiçik ÅŸÉ™killÉ™ri göstÉ™r -thumbs_label=Kiçik ÅŸÉ™killÉ™r -findbar.title=SÉ™nÉ™ddÉ™ Tap -findbar_label=Axtar - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=SÉ™hifÉ™{{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} sÉ™hifÉ™sinin kiçik vÉ™ziyyÉ™ti - -# Find panel button title and messages -find_label=Tap: -find_previous.title=Bir öncÉ™ki uyÄŸun gÉ™lÉ™n sözü tapır -find_previous_label=Geri -find_next.title=Bir sonrakı uyÄŸun gÉ™lÉ™n sözü tapır -find_next_label=Ä°rÉ™li -find_highlight=Ä°ÅŸarÉ™lÉ™ -find_match_case_label=Böyük/kiçik hÉ™rfÉ™ hÉ™ssaslıq -find_reached_top=SÉ™nÉ™din yuxarısına çatdı, aÅŸağıdan davam edir -find_reached_bottom=SÉ™nÉ™din sonuna çatdı, yuxarıdan davam edir -find_not_found=UyÄŸunlaÅŸma tapılmadı - -# Error panel labels -error_more_info=Daha çox mÉ™lumati -error_less_info=Daha az mÉ™lumat -error_close=Qapat -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (yığma: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ä°smarıc: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stek: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fayl: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=SÉ™tir: {{line}} -rendering_error=SÉ™hifÉ™ göstÉ™rilÉ™rkÉ™n sÉ™hv yarandı. - -# Predefined zoom values -page_scale_width=SÉ™hifÉ™ geniÅŸliyi -page_scale_fit=SÉ™hifÉ™ni sığdır -page_scale_auto=Avtomatik yaxınlaÅŸdır -page_scale_actual=Hazırki HÉ™cm -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=SÉ™hv -loading_error=PDF yüklenÉ™rkÉ™n bir sÉ™hv yarandı. -invalid_file_error=SÉ™hv vÉ™ ya zÉ™dÉ™lÉ™nmiÅŸ olmuÅŸ PDF fayl. -missing_file_error=PDF fayl yoxdur. -unexpected_response_error=GözlÉ™nilmÉ™z server cavabı. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotasiyası] -password_label=Bu PDF faylı açmaq üçün ÅŸifrÉ™ni daxil edin. -password_invalid=ÅžifrÉ™ yanlışdır. Bir daha sınayın. -password_ok=OK -password_cancel=Ləğv et - -printing_not_supported=XÉ™bÉ™rdarlıq: Çap bu sÉ™yyah tÉ™rÉ™findÉ™n tam olaraq dÉ™stÉ™klÉ™nmir. -printing_not_ready=XÉ™bÉ™rdarlıq: PDF çap üçün tam yüklÉ™nmÉ™yib. -web_fonts_disabled=Web ÅžriftlÉ™r söndürülüb: yerləşdirilmiÅŸ PDF ÅŸriftlÉ™rini istifadÉ™ etmÉ™k mümkün deyil. -document_colors_disabled=PDF sÉ™nÉ™dlÉ™rÉ™ öz rÉ™nglÉ™rini iÅŸlÉ™tmÉ™yÉ™ icazÉ™ verilmir: 'SÉ™hifÉ™lÉ™rÉ™ öz rÉ™nglÉ™rini istifadÉ™ etmÉ™yÉ™ icazÉ™ vermÉ™' sÉ™yyahda söndürülüb. diff --git a/public/pdfjs/web/locale/be/viewer.properties b/public/pdfjs/web/locale/be/viewer.properties deleted file mode 100644 index 031b1df5..00000000 --- a/public/pdfjs/web/locale/be/viewer.properties +++ /dev/null @@ -1,105 +0,0 @@ -previous.title = ПапÑÑ€ÑднÑÑ Ñтаронка -previous_label = ПапÑÑ€ÑднÑÑ -next.title = ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñтаронка -next_label = ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ -page_label = Старонка: -page_of = з {{pageCount}} -zoom_out.title = Паменшыць -zoom_out_label = Паменшыць -zoom_in.title = ПавÑлічыць -zoom_in_label = ПавÑлічыць -zoom.title = ПавÑлічÑнне Ñ‚ÑкÑту -presentation_mode.title = Пераключыцца Ñž Ñ€Ñжым паказу -presentation_mode_label = Ð Ñжым паказу -open_file.title = Ðдчыніць файл -open_file_label = Ðдчыніць -print.title = Друкаваць -print_label = Друкаваць -download.title = Загрузка -download_label = Загрузка -bookmark.title = ЦÑперашнÑÑ Ð¿Ñ€Ð°Ñва (ÑкапіÑваць або адчыніць у новым акне) -bookmark_label = ЦÑперашнÑÑ Ð¿Ñ€Ð°Ñва -tools.title = Прылады -tools_label = Прылады -first_page.title = ПерайÑці на першую Ñтаронку -first_page.label = ПерайÑці на першую Ñтаронку -first_page_label = ПерайÑці на першую Ñтаронку -last_page.title = ПерайÑці на апошнюю Ñтаронку -last_page.label = ПерайÑці на апошнюю Ñтаронку -last_page_label = ПерайÑці на апошнюю Ñтаронку -page_rotate_cw.title = ПавÑрнуць па гадзіннікавай ÑÑ‚Ñ€Ñлцы -page_rotate_cw.label = ПавÑрнуць па гадзіннікавай ÑÑ‚Ñ€Ñлцы -page_rotate_cw_label = ПавÑрнуць па гадзіннікавай ÑÑ‚Ñ€Ñлцы -page_rotate_ccw.title = ПавÑрнуць Ñупраць гадзіннікавай ÑÑ‚Ñ€Ñлкі -page_rotate_ccw.label = ПавÑрнуць Ñупраць гадзіннікавай ÑÑ‚Ñ€Ñлкі -page_rotate_ccw_label = ПавÑрнуць Ñупраць гадзіннікавай ÑÑ‚Ñ€Ñлкі -hand_tool_enable.title = Дазволіць ручную прыладу -hand_tool_enable_label = Дазволіць ручную прыладу -hand_tool_disable.title = Забараніць ручную прыладу -hand_tool_disable_label = Забараніць ручную прыладу -document_properties.title = УлаÑціваÑці дакумента… -document_properties_label = УлаÑціваÑці дакумента… -document_properties_file_name = Ðазва файла: -document_properties_file_size = Памер файла: -document_properties_kb = {{size_kb}} КБ ({{size_b}} байт) -document_properties_mb = {{size_mb}} МБ ({{size_b}} байт) -document_properties_title = Загаловак: -document_properties_author = Ðўтар: -document_properties_subject = ТÑма: -document_properties_keywords = ÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы: -document_properties_creation_date = Дата ÑтварÑннÑ: -document_properties_modification_date = Дата змÑненнÑ: -document_properties_date_string = {{date}}, {{time}} -document_properties_creator = Стваральнік: -document_properties_producer = Вырабнік PDF: -document_properties_version = ВерÑÑ–Ñ PDF: -document_properties_page_count = КолькаÑць Ñтаронак: -document_properties_close = Зачыніць -toggle_sidebar.title = ПераключÑнне палічкі -toggle_sidebar_label = Пераключыць палічку -outline.title = Паказ будовы дакумента -outline_label = Будова дакумента -attachments.title = Паказаць далучÑнні -attachments_label = ДалучÑнні -thumbs.title = Паказ накідаў -thumbs_label = Ðакіды -findbar.title = Пошук у дакуменце -findbar_label = ЗнайÑці -thumb_page_title = Старонка {{page}} -thumb_page_canvas = Ðакід Ñтаронкі {{page}} -find_label = Пошук: -find_previous.title = ЗнайÑці папÑÑ€Ñдні выпадак выразу -find_previous_label = ПапÑÑ€Ñдні -find_next.title = ЗнайÑці наÑтупны выпадак выразу -find_next_label = ÐаÑтупны -find_highlight = Падфарбаваць уÑе -find_match_case_label = Ðдрозніваць вÑлікіÑ/Ð¼Ð°Ð»Ñ‹Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹ -find_reached_top = ДаÑÑгнуты пачатак дакумента, працÑг з канца -find_reached_bottom = ДаÑÑгнуты канец дакумента, працÑг з пачатку -find_not_found = Выраз не знойдзены -error_more_info = ПадрабÑзней -error_less_info = СціÑла -error_close = Закрыць -error_version_info = PDF.js в{{version}} (пабудова: {{build}}) -error_message = Паведамленне: {{message}} -error_stack = СтоÑ: {{stack}} -error_file = Файл: {{file}} -error_line = Радок: {{line}} -rendering_error = ЗдарылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð°Ð´Ð»ÑŽÑÑ‚Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ñтаронкі. -page_scale_width = Ð¨Ñ‹Ñ€Ñ‹Ð½Ñ Ñтаронкі -page_scale_fit = УціÑненне Ñтаронкі -page_scale_auto = СамаÑтойнае павÑлічÑнне -page_scale_actual = Сапраўдны памер -loading_error_indicator = Памылка -loading_error = ЗдарылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– PDF. -invalid_file_error = ÐÑÑпраўны або пашкоджаны файл PDF. -missing_file_error = ÐдÑутны файл PDF. -text_annotation_type.alt = [{{type}} Annotation] -password_label = УвÑдзіце пароль, каб адчыніць гÑÑ‚Ñ‹ файл PDF. -password_invalid = Крывы пароль. ПаÑпрабуйце зноў. -password_ok = Добра -password_cancel = СкаÑаваць -printing_not_supported = ПапÑÑ€Ñджанне: друк не падтрымлівацца цалкам гÑтым азіральнікам. -printing_not_ready = Увага: PDF не ÑцÑгнуты цалкам Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÐ°Ð²Ð°Ð½Ð½Ñ. -web_fonts_disabled = Шрыфты Сеціва забаронены: немгчыма ўжываць ÑƒÐºÐ»Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ ÑˆÑ€Ñ‹Ñ„Ñ‚Ñ‹ PDF. -document_colors_disabled = Дакументам PDF не дазволена карыÑтацца Ñваімі ўлаÑнымі колерамі: 'Дазволіць Ñтаронкам выбіраць Ñвае ўлаÑÐ½Ñ‹Ñ ÐºÐ¾Ð»ÐµÑ€Ñ‹' абÑздзейнена Ñž азіральніку. diff --git a/public/pdfjs/web/locale/bg/viewer.properties b/public/pdfjs/web/locale/bg/viewer.properties deleted file mode 100644 index f91fc377..00000000 --- a/public/pdfjs/web/locale/bg/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Предишна Ñтраница -previous_label=Предишна -next.title=Следваща Ñтраница -next_label=Следваща - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Страница: -page_of=от {{pageCount}} - -zoom_out.title=Отдалечаване -zoom_out_label=Отдалечаване -zoom_in.title=Приближаване -zoom_in_label=Приближаване -zoom.title=Мащабиране -presentation_mode.title=Превключване към режим на предÑтавÑне -presentation_mode_label=Режим на предÑтавÑне -open_file.title=ОтварÑне на файл -open_file_label=ОтварÑне -print.title=Отпечатване -print_label=Отпечатване -download.title=ИзтеглÑне -download_label=ИзтеглÑне -bookmark.title=Текущ изглед (копиране или отварÑне в нов прозорец) -bookmark_label=Текущ изглед - -# Secondary toolbar and context menu -tools.title=ИнÑтрументи -tools_label=ИнÑтрументи -first_page.title=Към първата Ñтраница -first_page.label=Към първата Ñтраница -first_page_label=Към първата Ñтраница -last_page.title=Към поÑледната Ñтраница -last_page.label=Към поÑледната Ñтраница -last_page_label=Към поÑледната Ñтраница -page_rotate_cw.title=Превъртане по чаÑовниковата Ñтрелка -page_rotate_cw.label=Превъртане по чаÑовниковата Ñтрелка -page_rotate_cw_label=Превъртане по чаÑовниковата Ñтрелка -page_rotate_ccw.title=Превъртане обратно на чаÑовниковата Ñтрелка -page_rotate_ccw.label=Превъртане обратно на чаÑовниковата Ñтрелка -page_rotate_ccw_label=Превъртане обратно на чаÑовниковата Ñтрелка - -hand_tool_enable.title=Включване на инÑтрумента ръка -hand_tool_enable_label=Включване на инÑтрумента ръка -hand_tool_disable.title=Изключване на инÑтрумента ръка -hand_tool_disable_label=Изключване на инÑтрумента ръка - -# Document properties dialog box -document_properties.title=СвойÑтва на документа… -document_properties_label=СвойÑтва на документа… -document_properties_file_name=Име на файл: -document_properties_file_size=Големина на файл: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} байта) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} байта) -document_properties_title=Заглавие: -document_properties_author=Ðвтор: -document_properties_subject=Тема: -document_properties_keywords=Ключови думи: -document_properties_creation_date=Дата на Ñъздаване: -document_properties_modification_date=Дата на промÑна: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Създател: -document_properties_producer=PDF произведен от: -document_properties_version=PDF верÑиÑ: -document_properties_page_count=Брой Ñтраници: -document_properties_close=ЗатварÑне - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Превключване на Ñтраничната лента -toggle_sidebar_label=Превключване на Ñтраничната лента -outline.title=Показване на очертаниÑта на документа -outline_label=Очертание на документа -attachments.title=Показване на притурките -attachments_label=Притурки -thumbs.title=Показване на миниатюрите -thumbs_label=Миниатюри -findbar.title=Ðамиране в документа -findbar_label=ТърÑене - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Страница {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Миниатюра на Ñтраница {{page}} - -# Find panel button title and messages -find_label=ТърÑене: -find_previous.title=Ðамиране на предното Ñпоменаване на тази фраза -find_previous_label=Предишна -find_next.title=Ðамиране на Ñледващото Ñпоменаване на тази фраза -find_next_label=Следваща -find_highlight=Маркирай вÑички -find_match_case_label=Точно ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ -find_reached_top=ДоÑтигнато е началото на документа, продължаване от ÐºÑ€Ð°Ñ -find_reached_bottom=ДоÑтигнат е краÑÑ‚ на документа, продължаване от началото -find_not_found=Фразата не е намерена - -# Error panel labels -error_more_info=Повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ -error_less_info=По-малко Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ -error_close=ЗатварÑне -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js верÑÐ¸Ñ {{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Съобщение: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стек: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Файл: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Ред: {{line}} -rendering_error=Грешка при изчертаване на Ñтраницата. - -# Predefined zoom values -page_scale_width=Ширина на Ñтраницата -page_scale_fit=ВмеÑтване в Ñтраницата -page_scale_auto=Ðвтоматично мащабиране -page_scale_actual=ДейÑтвителен размер -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Грешка -loading_error=Получи Ñе грешка при зареждане на PDF-а. -invalid_file_error=Ðевалиден или повреден PDF файл. -missing_file_error=ЛипÑващ PDF файл. -unexpected_response_error=Ðеочакван отговор от Ñървъра. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ {{type}}] -password_label=Въведете парола за отварÑне на този PDF файл. -password_invalid=Ðевалидна парола. МолÑ, опитайте отново. -password_ok=Добре -password_cancel=Отказ - -printing_not_supported=Внимание: Този браузър нÑма пълна поддръжка на отпечатване. -printing_not_ready=Внимание: Този PDF файл не е напълно зареден за печат. -web_fonts_disabled=Уеб-шрифтовете Ñа забранени: разрешаване на използването на вградените PDF шрифтове. -document_colors_disabled=Ðа PDF-документите не е разрешено да използват ÑобÑтвени цветове: „Разрешаване на Ñтраниците да избират ÑобÑтвени цветове“ е изключено в браузъра. diff --git a/public/pdfjs/web/locale/bn-BD/viewer.properties b/public/pdfjs/web/locale/bn-BD/viewer.properties deleted file mode 100644 index af37920f..00000000 --- a/public/pdfjs/web/locale/bn-BD/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ পৃষà§à¦ া -previous_label=পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ -next.title=পরবরà§à¦¤à§€ পৃষà§à¦ া -next_label=পরবরà§à¦¤à§€ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=পৃষà§à¦ া: -page_of={{pageCount}} à¦à¦° - -zoom_out.title=ছোট আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -zoom_out_label=ছোট আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -zoom_in.title=বড় আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -zoom_in_label=বড় আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -zoom.title=বড় আকারে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -presentation_mode.title=উপসà§à¦¥à¦¾à¦ªà¦¨à¦¾ মোডে সà§à¦¯à§à¦‡à¦š করà§à¦¨ -presentation_mode_label=উপসà§à¦¥à¦¾à¦ªà¦¨à¦¾ মোড -open_file.title=ফাইল খà§à¦²à§à¦¨ -open_file_label=খà§à¦²à§à¦¨ -print.title=মà§à¦¦à§à¦°à¦£ -print_label=মà§à¦¦à§à¦°à¦£ -download.title=ডাউনলোড -download_label=ডাউনলোড -bookmark.title=বরà§à¦¤à¦®à¦¾à¦¨ অবসà§à¦¥à¦¾ (অনà§à¦²à¦¿à¦ªà¦¿ অথবা নতà§à¦¨ উইনà§à¦¡à§‹ তে খà§à¦²à§à¦¨) -bookmark_label=বরà§à¦¤à¦®à¦¾à¦¨ অবসà§à¦¥à¦¾ - -# Secondary toolbar and context menu -tools.title=টà§à¦² -tools_label=টà§à¦² -first_page.title=পà§à¦°à¦¥à¦® পাতায় যাও -first_page.label=পà§à¦°à¦¥à¦® পাতায় যাও -first_page_label=পà§à¦°à¦¥à¦® পাতায় যাও -last_page.title=শেষ পাতায় যাও -last_page.label=শেষ পাতায় যাও -last_page_label=শেষ পাতায় যাও -page_rotate_cw.title=ঘড়ির কাà¦à¦Ÿà¦¾à¦° দিকে ঘোরাও -page_rotate_cw.label=ঘড়ির কাà¦à¦Ÿà¦¾à¦° দিকে ঘোরাও -page_rotate_cw_label=ঘড়ির কাà¦à¦Ÿà¦¾à¦° দিকে ঘোরাও -page_rotate_ccw.title=ঘড়ির কাà¦à¦Ÿà¦¾à¦° বিপরীতে ঘোরাও -page_rotate_ccw.label=ঘড়ির কাà¦à¦Ÿà¦¾à¦° বিপরীতে ঘোরাও -page_rotate_ccw_label=ঘড়ির কাà¦à¦Ÿà¦¾à¦° বিপরীতে ঘোরাও - -hand_tool_enable.title=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨ -hand_tool_enable_label=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨ -hand_tool_disable.title=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² নিসà§à¦•à§à¦°à¦¿à§Ÿ করà§à¦¨ -hand_tool_disable_label=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² নিসà§à¦•à§à¦°à¦¿à§Ÿ করà§à¦¨ - -# Document properties dialog box -document_properties.title=নথি বৈশিষà§à¦Ÿà§à¦¯â€¦ -document_properties_label=নথি বৈশিষà§à¦Ÿà§à¦¯â€¦ -document_properties_file_name=ফাইলের নাম: -document_properties_file_size=ফাইলের আকার: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} কেবি ({{size_b}} বাইট) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} à¦à¦®à¦¬à¦¿ ({{size_b}} বাইট) -document_properties_title=শিরোনাম: -document_properties_author=লেখক: -document_properties_subject=বিষয়: -document_properties_keywords=কীওয়ারà§à¦¡: -document_properties_creation_date=তৈরির তারিখ: -document_properties_modification_date=পরিবরà§à¦¤à¦¨à§‡à¦° তারিখ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=পà§à¦°à¦¸à§à¦¤à§à¦¤à¦•à¦¾à¦°à¦•: -document_properties_producer=পিডিà¦à¦« পà§à¦°à¦¸à§à¦¤à§à¦¤à¦•à¦¾à¦°à¦•: -document_properties_version=পিডিà¦à¦« সংষà§à¦•à¦°à¦£: -document_properties_page_count=মোট পাতা: -document_properties_close=বনà§à¦§ - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=সাইডবার টগল করà§à¦¨ -toggle_sidebar_label=সাইডবার টগল করà§à¦¨ -outline.title=নথির রূপরেখা পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করà§à¦¨ -outline_label=নথির রূপরেখা -attachments.title=সংযà§à¦•à§à¦¤à¦¿ দেখাও -attachments_label=সংযà§à¦•à§à¦¤à¦¿ -thumbs.title=থামà§à¦¬à¦¨à§‡à¦‡à¦² সমূহ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করà§à¦¨ -thumbs_label=থামà§à¦¬à¦¨à§‡à¦‡à¦² সমূহ -findbar.title=নথির মধà§à¦¯à§‡ খà§à¦à¦œà§à¦¨ -findbar_label=অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=পৃষà§à¦ া {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} পৃষà§à¦ ার থামà§à¦¬à¦¨à§‡à¦‡à¦² - -# Find panel button title and messages -find_label=অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨: -find_previous.title=বাকà§à¦¯à¦¾à¦‚শের পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ উপসà§à¦¥à¦¿à¦¤à¦¿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ -find_previous_label=পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ -find_next.title=বাকà§à¦¯à¦¾à¦‚শের পরবরà§à¦¤à§€ উপসà§à¦¥à¦¿à¦¤à¦¿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ -find_next_label=পরবরà§à¦¤à§€ -find_highlight=সব হাইলাইট করা হবে -find_match_case_label=অকà§à¦·à¦°à§‡à¦° ছাà¦à¦¦ মেলানো -find_reached_top=পৃষà§à¦ ার শà§à¦°à§à¦¤à§‡ পৌছে গেছে, নীচ থেকে আরমà§à¦ করা হয়েছে -find_reached_bottom=পৃষà§à¦ ার শেষে পৌছে গেছে, উপর থেকে আরমà§à¦ করা হয়েছে -find_not_found=বাকà§à¦¯à¦¾à¦‚শ পাওয়া যায়নি - -# Error panel labels -error_more_info=আরও তথà§à¦¯ -error_less_info=কম তথà§à¦¯ -error_close=বনà§à¦§ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=বারà§à¦¤à¦¾: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=নথি: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=লাইন: {{line}} -rendering_error=পৃষà§à¦ া উপসà§à¦¥à¦¾à¦ªà¦¨à¦¾à¦° সময় তà§à¦°à§à¦Ÿà¦¿ দেখা দিয়েছে। - -# Predefined zoom values -page_scale_width=পৃষà§à¦ ার পà§à¦°à¦¸à§à¦¥ -page_scale_fit=পৃষà§à¦ া ফিট করà§à¦¨ -page_scale_auto=সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ জà§à¦® -page_scale_actual=পà§à¦°à¦•à§ƒà¦¤ আকার -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=তà§à¦°à§à¦Ÿà¦¿ -loading_error=পিডিà¦à¦« লোড করার সময় তà§à¦°à§à¦Ÿà¦¿ দেখা দিয়েছে। -invalid_file_error=অকারà§à¦¯à¦•à¦° অথবা কà§à¦·à¦¤à¦¿à¦—à§à¦°à¦¸à§à¦¤ পিডিà¦à¦« ফাইল। -missing_file_error=পিডিà¦à¦« ফাইল পাওয়া যাচà§à¦›à§‡ না। -unexpected_response_error=অপà§à¦°à¦¤à§à¦¯à¦¾à¦¶à§€à¦¤ সারà§à¦à¦¾à¦° পà§à¦°à¦¤à¦¿à¦•à§à¦°à¦¿à§Ÿà¦¾à¥¤ - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} টীকা] -password_label=পিডিà¦à¦« ফাইলটি ওপেন করতে পাসওয়ারà§à¦¡ দিন। -password_invalid=à¦à§à¦² পাসওয়ারà§à¦¡à¥¤ অনà§à¦—à§à¦°à¦¹ করে আবার চেষà§à¦Ÿà¦¾ করà§à¦¨à¥¤ -password_ok=ঠিক আছে -password_cancel=বাতিল - -printing_not_supported=সতরà§à¦•à¦¤à¦¾: à¦à¦‡ বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡ মà§à¦¦à§à¦°à¦£ সমà§à¦ªà§‚রà§à¦£à¦à¦¾à¦¬à§‡ সমরà§à¦¥à¦¿à¦¤ নয়। -printing_not_ready=সতরà§à¦•à§€à¦•à¦°à¦£: পিডিà¦à¦«à¦Ÿà¦¿ মà§à¦¦à§à¦°à¦£à§‡à¦° জনà§à¦¯ সমà§à¦ªà§‚রà§à¦£ লোড হয়নি। -web_fonts_disabled=ওয়েব ফনà§à¦Ÿ নিষà§à¦•à§à¦°à¦¿à§Ÿ: সংযà§à¦•à§à¦¤ পিডিà¦à¦« ফনà§à¦Ÿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা যাচà§à¦›à§‡ না। -document_colors_disabled=পিডিà¦à¦« ডকà§à¦®à§‡à¦¨à§à¦Ÿà¦•à§‡ তাদের নিজসà§à¦¬ রঙ বà§à¦¯à¦¬à¦¹à¦¾à¦°à§‡ অনà§à¦®à¦¤à¦¿ নেই: 'পাতা তাদের নিজেসà§à¦¬ রঙ নিরà§à¦¬à¦¾à¦šà¦¨ করতে অনà§à¦®à¦¤à¦¿ দিন' à¦à¦‡ বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡ নিষà§à¦•à§à¦°à¦¿à§Ÿ রয়েছে। diff --git a/public/pdfjs/web/locale/bn-IN/viewer.properties b/public/pdfjs/web/locale/bn-IN/viewer.properties deleted file mode 100644 index 743610a1..00000000 --- a/public/pdfjs/web/locale/bn-IN/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ পৃষà§à¦ া -previous_label=পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ -next.title=পরবরà§à¦¤à§€ পৃষà§à¦ া -next_label=পরবরà§à¦¤à§€ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=পৃষà§à¦ া: -page_of=সরà§à¦¬à¦®à§‹à¦Ÿ {{pageCount}} - -zoom_out.title=ছোট মাপে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -zoom_out_label=ছোট মাপে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -zoom_in.title=বড় মাপে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -zoom_in_label=বড় মাপে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -zoom.title=পà§à¦°à¦¦à¦°à§à¦¶à¦¨à§‡à¦° মাপ -presentation_mode.title=উপসà§à¦¥à¦¾à¦ªà¦¨à¦¾ মোড সà§à¦¯à§à¦‡à¦š করà§à¦¨ -presentation_mode_label=উপসà§à¦¥à¦¾à¦ªà¦¨à¦¾ মোড -open_file.title=ফাইল খà§à¦²à§à¦¨ -open_file_label=খà§à¦²à§à¦¨ -print.title=পà§à¦°à¦¿à¦¨à§à¦Ÿ করà§à¦¨ -print_label=পà§à¦°à¦¿à¦¨à§à¦Ÿ করà§à¦¨ -download.title=ডাউনলোড করà§à¦¨ -download_label=ডাউনলোড করà§à¦¨ -bookmark.title=বরà§à¦¤à¦®à¦¾à¦¨ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ (কপি করà§à¦¨ অথবা নতà§à¦¨ উইনà§à¦¡à§‹à¦¤à§‡ খà§à¦²à§à¦¨) -bookmark_label=বরà§à¦¤à¦®à¦¾à¦¨ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ - -# Secondary toolbar and context menu -tools.title=সরঞà§à¦œà¦¾à¦® -tools_label=সরঞà§à¦œà¦¾à¦® -first_page.title=পà§à¦°à¦¥à¦® পৃষà§à¦ ায় চলà§à¦¨ -first_page.label=পà§à¦°à¦¥à¦® পৃষà§à¦ ায় চলà§à¦¨ -first_page_label=পà§à¦°à¦¥à¦® পৃষà§à¦ ায় চলà§à¦¨ -last_page.title=সরà§à¦¬à¦¶à§‡à¦· পৃষà§à¦ ায় চলà§à¦¨ -last_page.label=সরà§à¦¬à¦¶à§‡à¦· পৃষà§à¦ ায় চলà§à¦¨ -last_page_label=সরà§à¦¬à¦¶à§‡à¦· পৃষà§à¦ ায় চলà§à¦¨ -page_rotate_cw.title=ডানদিকে ঘোরানো হবে -page_rotate_cw.label=ডানদিকে ঘোরানো হবে -page_rotate_cw_label=ডানদিকে ঘোরানো হবে -page_rotate_ccw.title=বাà¦à¦¦à¦¿à¦•à§‡ ঘোরানো হবে -page_rotate_ccw.label=বাà¦à¦¦à¦¿à¦•à§‡ ঘোরানো হবে -page_rotate_ccw_label=বাà¦à¦¦à¦¿à¦•à§‡ ঘোরানো হবে - -hand_tool_enable.title=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² সকà§à¦°à¦¿à§Ÿ করà§à¦¨ -hand_tool_enable_label=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² সকà§à¦°à¦¿à§Ÿ করà§à¦¨ -hand_tool_disable.title=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² নিসà§à¦•à§à¦°à¦¿à§Ÿ করà§à¦¨ -hand_tool_disable_label=হà§à¦¯à¦¾à¦¨à§à¦¡ টà§à¦² নিসà§à¦•à§à¦°à¦¿à§Ÿ করà§à¦¨ - -# Document properties dialog box -document_properties.title=নথির বৈশিষà§à¦Ÿà§à¦¯â€¦ -document_properties_label=নথির বৈশিষà§à¦Ÿà§à¦¯â€¦ -document_properties_file_name=ফাইলের নাম: -document_properties_file_size=ফাইলের মাপ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} মেগাবাইট ({{size_b}} bytes) -document_properties_title=শিরোনাম: -document_properties_author=লেখক: -document_properties_subject=বিষয়: -document_properties_keywords=নিরà§à¦¦à§‡à¦¶à¦• শবà§à¦¦: -document_properties_creation_date=নিরà§à¦®à¦¾à¦£à§‡à¦° তারিখ: -document_properties_modification_date=পরিবরà§à¦¤à¦¨à§‡à¦° তারিখ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=নিরà§à¦®à¦¾à¦¤à¦¾: -document_properties_producer=PDF নিরà§à¦®à¦¾à¦¤à¦¾: -document_properties_version=PDF সংসà§à¦•à¦°à¦£: -document_properties_page_count=মোট পৃষà§à¦ া: -document_properties_close=বনà§à¦§ করà§à¦¨ - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=সাইডবার টগল করà§à¦¨ -toggle_sidebar_label=সাইডবার টগল করà§à¦¨ -outline.title=নথির রূপরেখা পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -outline_label=নথির রূপরেখা পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -attachments.title=সংযà§à¦•à§à¦¤à¦¿à¦¸à¦®à§‚হ দেখান -attachments_label=সংযà§à¦•à§à¦¤ বসà§à¦¤à§ -thumbs.title=থামà§à¦¬-নেইল পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -thumbs_label=থামà§à¦¬-নেইল পà§à¦°à¦¦à¦°à§à¦¶à¦¨ -findbar.title=নথিতে খà§à¦à¦œà§à¦¨ -findbar_label=অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=পৃষà§à¦ া {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=পৃষà§à¦ া {{page}}-র থামà§à¦¬-নেইল - -# Find panel button title and messages -find_label=অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨: -find_previous.title=চিহà§à¦¨à¦¿à¦¤ পংকà§à¦¤à¦¿à¦° পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ উপসà§à¦¥à¦¿à¦¤à¦¿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨ -find_previous_label=পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ -find_next.title=চিহà§à¦¨à¦¿à¦¤ পংকà§à¦¤à¦¿à¦° পরবরà§à¦¤à§€ উপসà§à¦¥à¦¿à¦¤à¦¿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨ -find_next_label=পরবরà§à¦¤à§€ -find_highlight=সমগà§à¦° উজà§à¦œà§à¦¬à¦² করà§à¦¨ -find_match_case_label=হরফের ছাà¦à¦¦ মেলানো হবে -find_reached_top=পৃষà§à¦ ার পà§à¦°à¦¾à¦°à¦®à§à¦à§‡ পৌছে গেছে, নীচের অংশ থেকে আরমà§à¦ করা হবে -find_reached_bottom=পৃষà§à¦ ার অনà§à¦¤à¦¿à¦® পà§à¦°à¦¾à¦¨à§à¦¤à§‡ পৌছে গেছে, পà§à¦°à¦¥à¦® অংশ থেকে আরমà§à¦ করা হবে -find_not_found=পংকà§à¦¤à¦¿ পাওয়া যায়নি - -# Error panel labels -error_more_info=অতিরিকà§à¦¤ তথà§à¦¯ -error_less_info=কম তথà§à¦¯ -error_close=বনà§à¦§ করà§à¦¨ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=পৃষà§à¦ া পà§à¦°à¦¦à¦°à§à¦¶à¦¨à¦•à¦¾à¦²à§‡ à¦à¦•à¦Ÿà¦¿ সমসà§à¦¯à¦¾ দেখা দিয়েছে। - -# Predefined zoom values -page_scale_width=পৃষà§à¦ ার পà§à¦°à¦¸à§à¦¥ অনà§à¦¯à¦¾à§Ÿà§€ -page_scale_fit=পৃষà§à¦ ার মাপ অনà§à¦¯à¦¾à§Ÿà§€ -page_scale_auto=সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ মাপ নিরà§à¦§à¦¾à¦°à¦£ -page_scale_actual=পà§à¦°à¦•à§ƒà¦¤ মাপ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=তà§à¦°à§à¦Ÿà¦¿ -loading_error=PDF লোড করার সময় সমসà§à¦¯à¦¾ দেখা দিয়েছে। -invalid_file_error=অবৈধ বা কà§à¦·à¦¤à¦¿à¦—à§à¦°à¦¸à§à¦¤ পিডিà¦à¦« ফাইল। -missing_file_error=অনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤ PDF ফাইল -unexpected_response_error=সারà§à¦à¦¾à¦° থেকে অপà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ সাড়া পাওয়া গেছে। - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=à¦à¦‡ PDF ফাইল খোলার জনà§à¦¯ পাসওয়ারà§à¦¡ দিন। -password_invalid=পাসওয়ারà§à¦¡ সঠিক নয়। অনà§à¦—à§à¦°à¦¹ করে পà§à¦¨à¦°à¦¾à§Ÿ পà§à¦°à¦šà§‡à¦·à§à¦Ÿà¦¾ করà§à¦¨à¥¤ -password_ok=OK -password_cancel=বাতিল করà§à¦¨ - -printing_not_supported=সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾: à¦à¦‡ বà§à¦°à¦¾à¦‰à¦œà¦¾à¦° দà§à¦¬à¦¾à¦°à¦¾ পà§à¦°à¦¿à¦¨à§à¦Ÿ বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾ সমà§à¦ªà§‚রà§à¦£à¦°à§‚পে সমরà§à¦¥à¦¿à¦¤ নয়। -printing_not_ready=সতরà§à¦•à¦¬à¦¾à¦£à§€: পিডিà¦à¦« সমà§à¦ªà§‚রà§à¦£à¦°à§‚পে মà§à¦¦à§à¦°à¦£à§‡à¦° জনà§à¦¯ লোড করা হয় না. -web_fonts_disabled=ওয়েব ফনà§à¦Ÿ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ করা হয়েছে: à¦à¦®à¦¬à§‡à¦¡à§‡à¦¡ পিডিà¦à¦« ফনà§à¦Ÿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করতে অকà§à¦·à¦®. -document_colors_disabled=পিডিà¦à¦« নথি তাদের নিজসà§à¦¬ রং বà§à¦¯à¦¬à¦¹à¦¾à¦° করার জনà§à¦¯ অনà§à¦®à¦¤à¦¿à¦ªà§à¦°à¦¾à¦ªà§à¦¤ নয়: বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ করা হয়েছে য়েন 'পেজ তাদের নিজসà§à¦¬ রং নিরà§à¦¬à¦¾à¦šà¦¨ করার অনà§à¦®à¦¤à¦¿ পà§à¦°à¦¦à¦¾à¦¨ করা য়ায়।' diff --git a/public/pdfjs/web/locale/br/viewer.properties b/public/pdfjs/web/locale/br/viewer.properties deleted file mode 100644 index 89c6f85b..00000000 --- a/public/pdfjs/web/locale/br/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pajenn a-raok -previous_label=A-raok -next.title=Pajenn war-lerc'h -next_label=War-lerc'h - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Pajenn : -page_of=eus {{pageCount}} - -zoom_out.title=Zoum bihanaat -zoom_out_label=Zoum bihanaat -zoom_in.title=Zoum brasaat -zoom_in_label=Zoum brasaat -zoom.title=Zoum -presentation_mode.title=Trec'haoliñ etrezek ar mod kinnigadenn -presentation_mode_label=Mod kinnigadenn -open_file.title=Digeriñ ur restr -open_file_label=Digeriñ ur restr -print.title=Moullañ -print_label=Moullañ -download.title=Pellgargañ -download_label=Pellgargañ -bookmark.title=Gwel bremanel (eilañ pe zigeriñ e-barzh ur prenestr nevez) -bookmark_label=Gwel bremanel - -# Secondary toolbar and context menu -tools.title=Ostilhoù -tools_label=Ostilhoù -first_page.title=Mont d'ar bajenn gentañ -first_page.label=Mont d'ar bajenn gentañ -first_page_label=Mont d'ar bajenn gentañ -last_page.title=Mont d'ar bajenn diwezhañ -last_page.label=Mont d'ar bajenn diwezhañ -last_page_label=Mont d'ar bajenn diwezhañ -page_rotate_cw.title=C'hwelañ gant roud ar bizied -page_rotate_cw.label=C'hwelañ gant roud ar bizied -page_rotate_cw_label=C'hwelañ gant roud ar bizied -page_rotate_ccw.title=C'hwelañ gant roud gin ar bizied -page_rotate_ccw.label=C'hwelañ gant roud gin ar bizied -page_rotate_ccw_label=C'hwelañ gant roud gin ar bizied - -hand_tool_enable.title=Gweredekaat an ostilh "dorn" -hand_tool_enable_label=Gweredekaat an ostilh "dorn" -hand_tool_disable.title=Diweredekaat an ostilh "dorn" -hand_tool_disable_label=Diweredekaat an ostilh "dorn" - -# Document properties dialog box -document_properties.title=Perzhioù an teul… -document_properties_label=Perzhioù an teul… -document_properties_file_name=Anv restr : -document_properties_file_size=Ment ar restr : -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit) -document_properties_title=Titl : -document_properties_author=Aozer : -document_properties_subject=Danvez : -document_properties_keywords=Gerioù-alc'hwez : -document_properties_creation_date=Deiziad krouiñ : -document_properties_modification_date=Deiziad kemmañ : -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Krouer : -document_properties_producer=Kenderc'her PDF : -document_properties_version=Handelv PDF : -document_properties_page_count=Niver a bajennoù : -document_properties_close=Serriñ - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez -toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez -outline.title=Diskouez ar sinedoù -outline_label=Sinedoù an teuliad -attachments.title=Diskouez ar c'henstagadurioù -attachments_label=Kenstagadurioù -thumbs.title=Diskouez ar melvennoù -thumbs_label=Melvennoù -findbar.title=Klask e-barzh an teuliad -findbar_label=Klask - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pajenn {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Melvenn ar bajenn {{page}} - -# Find panel button title and messages -find_label=Kavout : -find_previous.title=Kavout an tamm frazenn kent o klotañ ganti -find_previous_label=Kent -find_next.title=Kavout an tamm frazenn war-lerc'h o klotañ ganti -find_next_label=War-lerc'h -find_highlight=Usskediñ pep tra -find_match_case_label=Teurel evezh ouzh ar pennlizherennoù -find_reached_top=Tizhet eo bet derou ar bajenn, kenderc'hel diouzh an diaz -find_reached_bottom=Tizhet eo bet dibenn ar bajenn, kenderc'hel diouzh ar c'hrec'h -find_not_found=N'haller ket kavout ar frazenn - -# Error panel labels -error_more_info=Muioc'h a ditouroù -error_less_info=Nebeutoc'h a ditouroù -error_close=Serriñ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js handelv {{version}} (kempunadur : {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Kemennadenn : {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Torn : {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Restr : {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linenn : {{line}} -rendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad. - -# Predefined zoom values -page_scale_width=Led ar bajenn -page_scale_fit=Pajenn a-bezh -page_scale_auto=Zoum emgefreek -page_scale_actual=Ment wir -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Fazi -loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF. -invalid_file_error=Restr PDF didalvoudek pe kontronet. -missing_file_error=Restr PDF o vankout. -unexpected_response_error=Respont dic'hortoz a-berzh an dafariad - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Notennañ] -password_label=Enankit ar ger-tremen evit digeriñ ar restr PDF-mañ. -password_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij. -password_ok=Mat eo -password_cancel=Nullañ - -printing_not_supported=Kemenn : N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ. -printing_not_ready=Kemenn : N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn. -web_fonts_disabled=Diweredekaet eo an nodrezhoù web : n'haller ket arverañ an nodrezhoù PDF enframmet. -document_colors_disabled=N'eo ket aotreet an teuliadoù PDF da arverañ o livioù dezho : diweredekaet eo 'Aotren ar pajennoù da zibab o livioù dezho' e-barzh ar merdeer. diff --git a/public/pdfjs/web/locale/bs/viewer.properties b/public/pdfjs/web/locale/bs/viewer.properties deleted file mode 100644 index 575ffbfe..00000000 --- a/public/pdfjs/web/locale/bs/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Prethodna strana -previous_label=Prethodna -next.title=Sljedeća strna -next_label=Sljedeća - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Strana: -page_of=od {{pageCount}} - -zoom_out.title=Umanji -zoom_out_label=Umanji -zoom_in.title=Uvećaj -zoom_in_label=Uvećaj -zoom.title=Uvećanje -presentation_mode.title=Prebaci se u prezentacijski režim -presentation_mode_label=Prezentacijski režim -open_file.title=Otvori fajl -open_file_label=Otvori -print.title=Å tampaj -print_label=Å tampaj -download.title=Preuzmi -download_label=Preuzmi -bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru) -bookmark_label=Trenutni prikaz - -# Secondary toolbar and context menu -tools.title=Alati -tools_label=Alati -first_page.title=Idi na prvu stranu -first_page.label=Idi na prvu stranu -first_page_label=Idi na prvu stranu -last_page.title=Idi na zadnju stranu -last_page.label=Idi na zadnju stranu -last_page_label=Idi na zadnju stranu -page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu -page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu -page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu -page_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu -page_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu -page_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu - -hand_tool_enable.title=Omogući ruÄni alat -hand_tool_enable_label=Omogući ruÄni alat -hand_tool_disable.title=Onemogući ruÄni alat -hand_tool_disable_label=Onemogući ruÄni alat - -# Document properties dialog box -document_properties.title=Svojstva dokumenta... -document_properties_label=Svojstva dokumenta... -document_properties_file_name=Naziv fajla: -document_properties_file_size=VeliÄina fajla: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajta) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajta) -document_properties_title=Naslov: -document_properties_author=Autor: -document_properties_subject=Predmet: -document_properties_keywords=KljuÄne rijeÄi: -document_properties_creation_date=Datum kreiranja: -document_properties_modification_date=Datum promjene: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Kreator: -document_properties_producer=PDF stvaratelj: -document_properties_version=PDF verzija: -document_properties_page_count=Broj stranica: -document_properties_close=Zatvori - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=UkljuÄi/iskljuÄi boÄnu traku -toggle_sidebar_label=UkljuÄi/iskljuÄi boÄnu traku -outline.title=Prikaži konture dokumenta -outline_label=Konture dokumenta -attachments.title=Prikaži priloge -attachments_label=Prilozi -thumbs.title=Prikaži thumbnailove -thumbs_label=Thumbnailovi -findbar.title=PronaÄ‘i u dokumentu -findbar_label=PronaÄ‘i - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strana {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail strane {{page}} - -# Find panel button title and messages -find_label=PronaÄ‘i: -find_previous.title=PronaÄ‘i prethodno pojavljivanje fraze -find_previous_label=Prethodno -find_next.title=PronaÄ‘i sljedeće pojavljivanje fraze -find_next_label=Sljedeće -find_highlight=OznaÄi sve -find_match_case_label=Osjetljivost na karaktere -find_reached_top=Dostigao sam vrh dokumenta, nastavljam sa dna -find_reached_bottom=Dostigao sam kraj dokumenta, nastavljam sa vrha -find_not_found=Fraza nije pronaÄ‘ena - -# Error panel labels -error_more_info=ViÅ¡e informacija -error_less_info=Manje informacija -error_close=Zatvori -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Poruka: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fajl: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linija: {{line}} -rendering_error=DoÅ¡lo je do greÅ¡ke prilikom renderiranja strane. - -# Predefined zoom values -page_scale_width=Å irina strane -page_scale_fit=Uklopi stranu -page_scale_auto=Automatsko uvećanje -page_scale_actual=Stvarna veliÄina -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=GreÅ¡ka -loading_error=DoÅ¡lo je do greÅ¡ke prilikom uÄitavanja PDF-a. -invalid_file_error=Neispravan ili oÅ¡tećen PDF fajl. -missing_file_error=Nedostaje PDF fajl. -unexpected_response_error=NeoÄekivani odgovor servera. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} pribiljeÅ¡ka] -password_label=UpiÅ¡ite lozinku da biste otvorili ovaj PDF fajl. -password_invalid=PogreÅ¡na lozinka. PokuÅ¡ajte ponovo. -password_ok=OK -password_cancel=Otkaži - -printing_not_supported=Upozorenje: Å tampanje nije u potpunosti podržano u ovom browseru. -printing_not_ready=Upozorenje: PDF nije u potpunosti uÄitan za Å¡tampanje. -web_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubaÄene PDF fontove. -document_colors_disabled=PDF dokumentima nije dozvoljeno da koriste vlastite boje: 'Dozvoli stranicama da izaberu vlastite boje' je deaktivirano u browseru. diff --git a/public/pdfjs/web/locale/ca/viewer.properties b/public/pdfjs/web/locale/ca/viewer.properties deleted file mode 100644 index 8d63096e..00000000 --- a/public/pdfjs/web/locale/ca/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pà gina anterior -previous_label=Anterior -next.title=Pà gina següent -next_label=Següent - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Pà gina: -page_of=de {{pageCount}} - -zoom_out.title=Allunya -zoom_out_label=Allunya -zoom_in.title=Apropa -zoom_in_label=Apropa -zoom.title=Escala -presentation_mode.title=Canvia al mode de presentació -presentation_mode_label=Mode de presentació -open_file.title=Obre el fitxer -open_file_label=Obre -print.title=Imprimeix -print_label=Imprimeix -download.title=Baixa -download_label=Baixa -bookmark.title=Vista actual (copia o obre en una finestra nova) -bookmark_label=Vista actual - -# Secondary toolbar and context menu -tools.title=Eines -tools_label=Eines -first_page.title=Vés a la primera pà gina -first_page.label=Vés a la primera pà gina -first_page_label=Vés a la primera pà gina -last_page.title=Vés a l'última pà gina -last_page.label=Vés a l'última pà gina -last_page_label=Vés a l'última pà gina -page_rotate_cw.title=Gira cap a la dreta -page_rotate_cw.label=Gira cap a la dreta -page_rotate_cw_label=Gira cap a la dreta -page_rotate_ccw.title=Gira cap a l'esquerra -page_rotate_ccw.label=Gira cap a l'esquerra -page_rotate_ccw_label=Gira cap a l'esquerra - -hand_tool_enable.title=Habilita l'eina de mà -hand_tool_enable_label=Habilita l'eina de mà -hand_tool_disable.title=Inhabilita l'eina de mà -hand_tool_disable_label=Inhabilita l'eina de mà - -# Document properties dialog box -document_properties.title=Propietats del document… -document_properties_label=Propietats del document… -document_properties_file_name=Nom del fitxer: -document_properties_file_size=Mida del fitxer: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=TÃtol: -document_properties_author=Autor: -document_properties_subject=Assumpte: -document_properties_keywords=Paraules clau: -document_properties_creation_date=Data de creació: -document_properties_modification_date=Data de modificació: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=Generador de PDF: -document_properties_version=Versió de PDF: -document_properties_page_count=Nombre de pà gines: -document_properties_close=Tanca - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Mostra/amaga la barra lateral -toggle_sidebar_label=Mostra/amaga la barra lateral -outline.title=Mostra el contorn del document -outline_label=Contorn del document -attachments.title=Mostra les adjuncions -attachments_label=Adjuncions -thumbs.title=Mostra les miniatures -thumbs_label=Miniatures -findbar.title=Cerca al document -findbar_label=Cerca - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pà gina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura de la pà gina {{page}} - -# Find panel button title and messages -find_label=Cerca: -find_previous.title=Cerca l'anterior coincidència de l'expressió -find_previous_label=Anterior -find_next.title=Cerca la següent coincidència de l'expressió -find_next_label=Següent -find_highlight=Ressalta-ho tot -find_match_case_label=Distingeix entre majúscules i minúscules -find_reached_top=S'ha arribat al principi del document, es continua pel final -find_reached_bottom=S'ha arribat al final del document, es continua pel principi -find_not_found=No s'ha trobat l'expressió - -# Error panel labels -error_more_info=Més informació -error_less_info=Menys informació -error_close=Tanca -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (muntatge: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Missatge: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fitxer: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=LÃnia: {{line}} -rendering_error=S'ha produït un error mentre es renderitzava la pà gina. - -# Predefined zoom values -page_scale_width=Amplà ria de la pà gina -page_scale_fit=Ajusta la pà gina -page_scale_auto=Zoom automà tic -page_scale_actual=Mida real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Error -loading_error=S'ha produït un error en carregar el PDF. -invalid_file_error=El fitxer PDF no és và lid o està malmès. -missing_file_error=Falta el fitxer PDF. -unexpected_response_error=Resposta inesperada del servidor. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotació {{type}}] -password_label=Introduïu la contrasenya per obrir aquest fitxer PDF. -password_invalid=La contrasenya no és và lida. Torneu-ho a provar. -password_ok=D'acord -password_cancel=Cancel·la - -printing_not_supported=AvÃs: la impressió no és plenament funcional en aquest navegador. -printing_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo. -web_fonts_disabled=Les fonts web estan inhabilitades: no es poden incrustar fitxers PDF. -document_colors_disabled=Els documents PDF no poden usar els seus colors propis: «Permet a les pà gines triar els colors propis» es troba desactivat al navegador. diff --git a/public/pdfjs/web/locale/cs/viewer.properties b/public/pdfjs/web/locale/cs/viewer.properties deleted file mode 100644 index 2033c5a2..00000000 --- a/public/pdfjs/web/locale/cs/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=PÅ™edchozà stránka -previous_label=PÅ™edchozà -next.title=DalÅ¡Ã stránka -next_label=DalÅ¡Ã - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Stránka: -page_of=z {{pageCount}} - -zoom_out.title=ZmenÅ¡Ã velikost -zoom_out_label=ZmenÅ¡it -zoom_in.title=ZvÄ›tÅ¡Ã velikost -zoom_in_label=ZvÄ›tÅ¡it -zoom.title=Nastavà velikost -presentation_mode.title=PÅ™epne režimu prezentace -presentation_mode_label=Režim prezentace -open_file.title=OtevÅ™e soubor -open_file_label=OtevÅ™Ãt -print.title=Vytiskne dokument -print_label=Tisk -download.title=Stáhne dokument -download_label=Stáhnout -bookmark.title=Aktuálnà pohled (kopÃrovat nebo otevÅ™Ãt v novém oknÄ›) -bookmark_label=Aktuálnà pohled - -# Secondary toolbar and context menu -tools.title=Nástroje -tools_label=Nástroje -first_page.title=PÅ™ejde na prvnà stránku -first_page.label=PÅ™ejÃt na prvnà stránku -first_page_label=PÅ™ejÃt na prvnà stránku -last_page.title=PÅ™ejde na poslednà stránku -last_page.label=PÅ™ejÃt na poslednà stránku -last_page_label=PÅ™ejÃt na poslednà stránku -page_rotate_cw.title=OtoÄà po smÄ›ru hodin -page_rotate_cw.label=OtoÄit po smÄ›ru hodin -page_rotate_cw_label=OtoÄit po smÄ›ru hodin -page_rotate_ccw.title=OtoÄà proti smÄ›ru hodin -page_rotate_ccw.label=OtoÄit proti smÄ›ru hodin -page_rotate_ccw_label=OtoÄit proti smÄ›ru hodin - -hand_tool_enable.title=Povolit nástroj ruÄiÄka -hand_tool_enable_label=Povolit nástroj ruÄiÄka -hand_tool_disable.title=Zakázat nástroj ruÄiÄka -hand_tool_disable_label=Zakázat nástroj ruÄiÄka - -# Document properties dialog box -document_properties.title=Vlastnosti dokumentu… -document_properties_label=Vlastnosti dokumentu… -document_properties_file_name=Název souboru: -document_properties_file_size=Velikost souboru: -document_properties_kb={{size_kb}} kB ({{size_b}} bajtů) -document_properties_mb={{size_mb}} MB ({{size_b}} bajtů) -document_properties_title=Nadpis: -document_properties_author=Autor: -document_properties_subject=Subjekt: -document_properties_keywords=KlÃÄová slova: -document_properties_creation_date=Datum vytvoÅ™enÃ: -document_properties_modification_date=Datum úpravy: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=VytvoÅ™il: -document_properties_producer=Tvůrce PDF: -document_properties_version=Verze PDF: -document_properties_page_count=PoÄet stránek: -document_properties_close=ZavÅ™Ãt - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Postrannà liÅ¡ta -toggle_sidebar_label=Postrannà liÅ¡ta -outline.title=Zobrazà osnovu dokumentu -outline_label=Osnova dokumentu -attachments.title=Zobrazà pÅ™Ãlohy -attachments_label=PÅ™Ãlohy -thumbs.title=Zobrazà náhledy -thumbs_label=Náhledy -findbar.title=Najde v dokumentu -findbar_label=NajÃt - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strana {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Náhled strany {{page}} - -# Find panel button title and messages -find_label=NajÃt: -find_previous.title=Najde pÅ™edchozà výskyt hledaného spojenà -find_previous_label=PÅ™edchozà -find_next.title=Najde dalÅ¡Ã výskyt hledaného spojenà -find_next_label=DalÅ¡Ã -find_highlight=Zvýraznit -find_match_case_label=RozliÅ¡ovat velikost -find_reached_top=Dosažen zaÄátek dokumentu, pokraÄuje se od konce -find_reached_bottom=Dosažen konec dokumentu, pokraÄuje se o zaÄátku -find_not_found=Hledané spojenà nenalezeno - -# Error panel labels -error_more_info=VÃce informacà -error_less_info=MénÄ› informacà -error_close=ZavÅ™Ãt -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (sestavenÃ: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Zpráva: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ZásobnÃk: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Soubor: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Řádka: {{line}} -rendering_error=PÅ™i vykreslovánà stránky nastala chyba. - -# Predefined zoom values -page_scale_width=Podle Å¡ÃÅ™ky -page_scale_fit=Podle výšky -page_scale_auto=Automatická velikost -page_scale_actual=Aktuálnà velikost -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Chyba -loading_error=PÅ™i nahrávánà PDF nastala chyba. -invalid_file_error=Neplatný nebo chybný soubor PDF. -missing_file_error=Chybà soubor PDF. -unexpected_response_error=NeoÄekávaná odpovÄ›Ä serveru. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotace typu {{type}}] -password_label=Pro otevÅ™enà PDF souboru vložte heslo. -password_invalid=Neplatné heslo. Zkuste to znovu. -password_ok=OK -password_cancel=ZruÅ¡it - -printing_not_supported=UpozornÄ›nÃ: Tisk nenà v tomto prohlÞeÄi plnÄ› podporován. -printing_not_ready=UpozornÄ›nÃ: Dokument PDF nenà kompletnÄ› naÄten. -web_fonts_disabled=Webová pÃsma jsou zakázána, proto nenà možné použÃt vložená pÃsma PDF. -document_colors_disabled=PDF dokumenty nemajà povoleny použÃvánà vlastnÃch barev: volba "Povolit stránkám použÃvat vlastnà barvy namÃsto výše zvolených" je v prohlÞeÄi deaktivována. diff --git a/public/pdfjs/web/locale/csb/viewer.properties b/public/pdfjs/web/locale/csb/viewer.properties deleted file mode 100644 index 293a353c..00000000 --- a/public/pdfjs/web/locale/csb/viewer.properties +++ /dev/null @@ -1,134 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pòprzédnô strona -previous_label=Pòprzédnô -next.title=Nôslédnô strona -next_label=Nôslédnô - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Strona: -page_of=z {{pageCount}} - -zoom_out.title=Zmniészë -zoom_out_label=Zmniészë -zoom_in.title=Zwikszë -zoom_in_label=Wiôlgòsc -zoom.title=Wiôlgòsc -print.title=Drëkùjë -print_label=Drëkùjë -presentation_mode.title=Przéńdzë w trib prezentacje -presentation_mode_label=Trib prezentacje -open_file.title=Ã’temkni lopk -open_file_label=Ã’temkni -download.title=Zladënk -download_label=Zladënk -bookmark.title=Spamiãtôj wëzdrzatk (kòpérëje, abò òtemkni w nowim òknnie) -bookmark_label=Aktualny wëzdrzatk - -find_label=Szëkôj: -find_previous.title=Biéj do pòprzédnégò wënikù szëkbë -find_previous_label=Pòprzédny -find_next.title=Biéj do nôslédnégò wënikù szëkbë -find_next_label=Nôslédny -find_highlight=Pòdszkrzëni wszëtczé -find_match_case_label=Rozeznôwôj miarã lëterów -find_not_found=Nie nalôzÅ‚ tekstu -find_reached_bottom=DoszedÅ‚ do kùńca dokùmentu, zaczinajÄ…cë òd górë -find_reached_top=DoszedÅ‚ do pòczÄ…tkù dokùmentu, zaczinajÄ…cë òd dołù - -toggle_sidebar.title=Pòsuwk wëbiérkù -toggle_sidebar_label=Pòsuwk wëbiérkù - -outline.title=Wëskrzëni òbcéch dokùmentu -outline_label=Ã’bcéch dokùmentu -thumbs.title=Wëskrzëni miniaturë -thumbs_label=Miniaturë -findbar.title=Przeszëkôj dokùment -findbar_label=Nalezë -tools_label=NôrzãdÅ‚a -first_page.title=Biéj do pierszi stronë -first_page.label=Biéj do pierszi stronë -last_page.label=Biéj do òstatny stronë -invalid_file_error=Lëchi ôrt, abò pòpsëti lopk PDF. - - - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strona {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura stronë {{page}} - -# Error panel labels -error_more_info=Wicy infòrmacje -error_less_info=Mni infòrmacje -error_close=Close -error_version_info=PDF.js v{{version}} (build: {{build}}) - - -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{wiadÅ‚o}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stóg}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{lopk}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=Pòkôza sã fela przë renderowanim stronë. - -# Predefined zoom values -page_scale_width=Szérzawa stronë -page_scale_fit=Dopasëje stronã -page_scale_auto=Aùtomatnô wiôlgòsc -page_scale_actual=Naturalnô wiôlgòsc - -# Loading indicator messages -# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage -loading_error_indicator=Fela -loading_error=Pòkôza sã fela przë wczëtiwanim PDFù. - -# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip. -# "{{[type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" - -request_password=PDF je zabezpieczony parolÄ…: -printing_not_supported = Ã’strzéga: przezérnik nie je do kùńca wspieróny przez drëkôrze - -# Context menu -page_rotate_cw.label=Ã’bkrãcë w prawò -page_rotate_ccw.label=Ã’bkrãcë w lewò - - -last_page.title=Biéj do pòprzédny stronë -last_page_label=Biéj do pòprzédny stronë -page_rotate_cw.title=Ã’bkrãcë w prawò -page_rotate_cw_label=Ã’bkrãcë w prawò -page_rotate_ccw.title=Ã’bkrãcë w lewò -page_rotate_ccw_label=Ã’bkrãcë w lewò - - -web_fonts_disabled=Sécowé czconczi sÄ… wëłączoné: wÅ‚Ä…czë je, bë móc ùżiwac òsadzonëch czconków w lopkach PDF. - - -missing_file_error=Felëje lopka PDF. -printing_not_ready = Ã’strzéga: lopk mùszi sã do kùńca wczëtac zanim gò mòże drëkòwac - -document_colors_disabled=Dokùmentë PDF nie mògÄ… ù swòjich farwów: \'Pòzwòlë stronóm wëbierac swòje farwë\' je wëłączoné w przezérnikù. -invalid_password=Lëchô parola. -text_annotation_type.alt=[Adnotacjô {{type}}] - -tools.title=Tools -first_page_label=Go to First Page - - diff --git a/public/pdfjs/web/locale/cy/viewer.properties b/public/pdfjs/web/locale/cy/viewer.properties deleted file mode 100644 index 26b44958..00000000 --- a/public/pdfjs/web/locale/cy/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Tudalen Flaenorol -previous_label=Blaenorol -next.title=Tudalen Nesaf -next_label=Nesaf - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Tudalen: -page_of=o {{pageCount}} - -zoom_out.title=Chwyddo Allan -zoom_out_label=Chwyddo Allan -zoom_in.title=Chwyddo Mewn -zoom_in_label=Chwyddo Mewn -zoom.title=Chwyddo -presentation_mode.title=Newid i'r Modd Cyflwyno -presentation_mode_label=Modd Cyflwyno -open_file.title=Agor Ffeil -open_file_label=Agor -print.title=Argraffu -print_label=Argraffu -download.title=Llwyth -download_label=Llwytho i Lawr -bookmark.title=Golwg cyfredol (copïo neu agor ffenestr newydd) -bookmark_label=Golwg Gyfredol - -# Secondary toolbar and context menu -tools.title=Offer -tools_label=Offer -first_page.title=Mynd i'r Dudalen Gyntaf -first_page.label=Mynd i'r Dudalen Gyntaf -first_page_label=Mynd i'r Dudalen Gyntaf -last_page.title=Mynd i'r Dudalen Olaf -last_page.label=Mynd i'r Dudalen Olaf -last_page_label=Mynd i'r Dudalen Olaf -page_rotate_cw.title=Cylchdroi Clocwedd -page_rotate_cw.label=Cylchdroi Clocwedd -page_rotate_cw_label=Cylchdroi Clocwedd -page_rotate_ccw.title=Cylchdroi Gwrthglocwedd -page_rotate_ccw.label=Cylchdroi Gwrthglocwedd -page_rotate_ccw_label=Cylchdroi Gwrthglocwedd - -hand_tool_enable.title=Galluogi offeryn llaw -hand_tool_enable_label=Galluogi offeryn llaw -hand_tool_disable.title=Analluogi offeryn llaw -hand_tool_disable_label=Analluogi offeryn llaw - -# Document properties dialog box -document_properties.title=Priodweddau Dogfen… -document_properties_label=Priodweddau Dogfen… -document_properties_file_name=Enw ffeil: -document_properties_file_size=Maint ffeil: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} beit) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} beit) -document_properties_title=Teitl: -document_properties_author=Awdur: -document_properties_subject=Pwnc: -document_properties_keywords=Allweddair: -document_properties_creation_date=Dyddiad Creu: -document_properties_modification_date=Dyddiad Addasu: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Crewr: -document_properties_producer=Cynhyrchydd PDF: -document_properties_version=Fersiwn PDF: -document_properties_page_count=Cyfrif Tudalen: -document_properties_close=Cau - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toglo'r Bar Ochr -toggle_sidebar_label=Toglo'r Bar Ochr -outline.title=Dangos Amlinell Dogfen -outline_label=Amlinelliad Dogfen -attachments.title=Dangos Atodiadau -attachments_label=Atodiadau -thumbs.title=Dangos Lluniau Bach -thumbs_label=Lluniau Bach -findbar.title=Canfod yn y Ddogfen -findbar_label=Canfod - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Tudalen {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Llun Bach Tudalen {{page}} - -# Find panel button title and messages -find_label=Canfod: -find_previous.title=Canfod enghraifft flaenorol o'r ymadrodd -find_previous_label=Blaenorol -find_next.title=Canfod enghraifft nesaf yr ymadrodd -find_next_label=Nesaf -find_highlight=Amlygu popeth -find_match_case_label=Cydweddu maint -find_reached_top=Wedi cyrraedd brig y dudalen, parhau o'r gwaelod -find_reached_bottom=Wedi cyrraedd diwedd y dudalen, parhau o'r brig -find_not_found=Heb ganfod ymadrodd - -# Error panel labels -error_more_info=Rhagor o Wybodaeth -error_less_info=Llai o wybodaeth -error_close=Cau -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Neges: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stac: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ffeil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Llinell: {{line}} -rendering_error=Digwyddodd gwall wrth adeiladu'r dudalen. - -# Predefined zoom values -page_scale_width=Lled Tudalen -page_scale_fit=Ffit Tudalen -page_scale_auto=Chwyddo Awtomatig -page_scale_actual=Maint Gwirioneddol -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Gwall -loading_error=Digwyddodd gwall wrth lwytho'r PDF. -invalid_file_error=Ffeil PDF annilys neu llwgr. -missing_file_error=Ffeil PDF coll. -unexpected_response_error=Ymateb annisgwyl gan y gweinydd. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anodiad {{type}} ] -password_label=Rhowch gyfrinair i agor y PDF. -password_invalid=Cyfrinair annilys. Ceisiwch eto. -password_ok=Iawn -password_cancel=Diddymu - -printing_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr. -printing_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu. -web_fonts_disabled=Ffontiau gwe wedi eu hanablu: methu defnyddio ffontiau PDF mewnblanedig. -document_colors_disabled=Nid oes caniatâd i ddogfennau PDF i ddefnyddio eu lliwiau eu hunain: Mae 'Caniatáu i dudalennau ddefnyddio eu lliwiau eu hunain' wedi ei atal yn y porwr. diff --git a/public/pdfjs/web/locale/da/viewer.properties b/public/pdfjs/web/locale/da/viewer.properties deleted file mode 100644 index ddd428bf..00000000 --- a/public/pdfjs/web/locale/da/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Forrige side -previous_label=Forrige -next.title=Næste side -next_label=Næste - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Side: -page_of=af {{pageCount}} - -zoom_out.title=Zoom ud -zoom_out_label=Zoom ud -zoom_in.title=Zoom ind -zoom_in_label=Zoom ind -zoom.title=Zoom -print.title=Udskriv -print_label=Udskriv -presentation_mode.title=Skift til fuldskærmsvisning -presentation_mode_label=Fuldskærmsvisning -open_file.title=Ã…bn fil -open_file_label=Ã…bn -download.title=Hent -download_label=Hent -bookmark.title=Aktuel visning (kopier eller Ã¥bn i et nyt vindue) -bookmark_label=Aktuel visning - -# Secondary toolbar and context menu -tools.title=Funktioner -tools_label=Funktioner -first_page.title=GÃ¥ til første side -first_page.label=GÃ¥ til første side -first_page_label=GÃ¥ til første side -last_page.title=GÃ¥ til sidste side -last_page.label=GÃ¥ til sidste side -last_page_label=GÃ¥ til sidste side -page_rotate_cw.title=Roter med uret -page_rotate_cw.label=Roter med uret -page_rotate_cw_label=Roter med uret -page_rotate_ccw.title=Roter mod uret -page_rotate_ccw.label=Roter mod uret -page_rotate_ccw_label=Roter mod uret - -hand_tool_enable.title=Aktiver hÃ¥ndværktøj -hand_tool_enable_label=Aktiver hÃ¥ndværktøj -hand_tool_disable.title=Deaktiver hÃ¥ndværktøj -hand_tool_disable_label=Deaktiver hÃ¥ndværktøj - -# Document properties dialog box -document_properties.title=Dokumentegenskaber… -document_properties_label=Dokumentegenskaber… -document_properties_file_name=Filnavn: -document_properties_file_size=Filstørrelse: -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titel: -document_properties_author=Forfatter: -document_properties_subject=Emne: -document_properties_keywords=Nøgleord: -document_properties_creation_date=Oprettet: -document_properties_modification_date=Redigeret: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Program: -document_properties_producer=PDF-producent: -document_properties_version=PDF-version: -document_properties_page_count=Antal sider: -document_properties_close=Luk - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=SlÃ¥ sidepanel til eller fra -toggle_sidebar_label=SlÃ¥ sidepanel til eller fra -outline.title=Vis dokumentets disposition -outline_label=Dokument-disposition -attachments.title=Vis vedhæftede filer -attachments_label=Vedhæftede filer -thumbs.title=Vis miniaturer -thumbs_label=Miniaturer -findbar.title=Find i dokument -findbar_label=Find - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Side {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniature af side {{page}} - -# Find panel button title and messages -find_label=Find: -find_previous.title=Find den forrige forekomst -find_previous_label=Forrige -find_next.title=Find den næste forekomst -find_next_label=Næste -find_highlight=Fremhæv alle -find_match_case_label=Forskel pÃ¥ store og smÃ¥ bogstaver -find_reached_top=Toppen af siden blev nÃ¥et, fortsatte fra bunden -find_reached_bottom=Bunden af siden blev nÃ¥et, fortsatte fra toppen -find_not_found=Der blev ikke fundet noget - -# Error panel labels -error_more_info=Mere information -error_less_info=Mindre information -error_close=Luk -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Fejlmeddelelse: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linje: {{line}} -rendering_error=Der opstod en fejl ved generering af siden. - -# Predefined zoom values -page_scale_width=Sidebredde -page_scale_fit=Tilpas til side -page_scale_auto=Automatisk zoom -page_scale_actual=Faktisk størrelse -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Fejl -loading_error=Der opstod en fejl ved indlæsning af PDF-filen. -invalid_file_error=PDF-filen er ugyldig eller ødelagt. -missing_file_error=Manglende PDF-fil. -unexpected_response_error=Uventet svar fra serveren. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}kommentar] -password_label=Angiv adgangskode til at Ã¥bne denne PDF-fil. -password_invalid=Ugyldig adgangskode. Prøv igen. -password_ok=OK -password_cancel=Fortryd - -printing_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren. -printing_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning. -web_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes. -document_colors_disabled=PDF-dokumenter mÃ¥ ikke bruge deres egne farver: \u0022'Tillad sider at vælge deres egne farver\u0022' er deaktiveret i browseren. diff --git a/public/pdfjs/web/locale/de/viewer.properties b/public/pdfjs/web/locale/de/viewer.properties deleted file mode 100644 index 685154c9..00000000 --- a/public/pdfjs/web/locale/de/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Eine Seite zurück -previous_label=Zurück -next.title=Eine Seite vor -next_label=Vor - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Seite: -page_of=von {{pageCount}} - -zoom_out.title=Verkleinern -zoom_out_label=Verkleinern -zoom_in.title=Vergrößern -zoom_in_label=Vergrößern -zoom.title=Zoom -print.title=Drucken -print_label=Drucken -presentation_mode.title=In Präsentationsmodus wechseln -presentation_mode_label=Präsentationsmodus -open_file.title=Datei öffnen -open_file_label=Öffnen -download.title=Dokument speichern -download_label=Speichern -bookmark.title=Aktuelle Ansicht (zum Kopieren oder Öffnen in einem neuen Fenster) -bookmark_label=Aktuelle Ansicht - -# Secondary toolbar and context menu -tools.title=Werkzeuge -tools_label=Werkzeuge -first_page.title=Erste Seite anzeigen -first_page.label=Erste Seite anzeigen -first_page_label=Erste Seite anzeigen -last_page.title=Letzte Seite anzeigen -last_page.label=Letzte Seite anzeigen -last_page_label=Letzte Seite anzeigen -page_rotate_cw.title=Im Uhrzeigersinn drehen -page_rotate_cw.label=Im Uhrzeigersinn drehen -page_rotate_cw_label=Im Uhrzeigersinn drehen -page_rotate_ccw.title=Gegen Uhrzeigersinn drehen -page_rotate_ccw.label=Gegen Uhrzeigersinn drehen -page_rotate_ccw_label=Gegen Uhrzeigersinn drehen - -hand_tool_enable.title=Hand-Werkzeug aktivieren -hand_tool_enable_label=Hand-Werkzeug aktivieren -hand_tool_disable.title=Hand-Werkzeug deaktivieren -hand_tool_disable_label=Hand-Werkzeug deaktivieren - -# Document properties dialog box -document_properties.title=Dokumenteigenschaften -document_properties_label=Dokumenteigenschaften… -document_properties_file_name=Dateiname: -document_properties_file_size=Dateigröße: -document_properties_kb={{size_kb}} KB ({{size_b}} Bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} Bytes) -document_properties_title=Titel: -document_properties_author=Autor: -document_properties_subject=Thema: -document_properties_keywords=Stichwörter: -document_properties_creation_date=Erstelldatum: -document_properties_modification_date=Bearbeitungsdatum: -document_properties_date_string={{date}} {{time}} -document_properties_creator=Anwendung: -document_properties_producer=PDF erstellt mit: -document_properties_version=PDF-Version: -document_properties_page_count=Seitenzahl: -document_properties_close=Schließen - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Sidebar umschalten -toggle_sidebar_label=Sidebar umschalten -outline.title=Dokumentstruktur anzeigen -outline_label=Dokumentstruktur -attachments.title=Anhänge anzeigen -attachments_label=Anhänge -thumbs.title=Miniaturansichten anzeigen -thumbs_label=Miniaturansichten -findbar.title=Dokument durchsuchen -findbar_label=Suchen - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Seite {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniaturansicht von Seite {{page}} - -# Find panel button title and messages -find_label=Suchen: -find_previous.title=Vorheriges Auftreten des Suchbegriffs finden -find_previous_label=Zurück -find_next.title=Nächstes Auftreten des Suchbegriffs finden -find_next_label=Weiter -find_highlight=Alle hervorheben -find_match_case_label=Groß-/Kleinschreibung beachten -find_reached_top=Anfang des Dokuments erreicht, fahre am Ende fort -find_reached_bottom=Ende des Dokuments erreicht, fahre am Anfang fort -find_not_found=Suchbegriff nicht gefunden - -# Error panel labels -error_more_info=Mehr Informationen -error_less_info=Weniger Informationen -error_close=Schließen -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js Version {{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Nachricht: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Aufrufliste: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Datei: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Zeile: {{line}} -rendering_error=Beim Darstellen der Seite trat ein Fehler auf. - -# Predefined zoom values -page_scale_width=Seitenbreite -page_scale_fit=Seitengröße -page_scale_auto=Automatischer Zoom -page_scale_actual=Originalgröße -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Fehler -loading_error=Beim Laden der PDF-Datei trat ein Fehler auf. -invalid_file_error=Ungültige oder beschädigte PDF-Datei -missing_file_error=Fehlende PDF-Datei -unexpected_response_error=Unerwartete Antwort des Servers - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anlage: {{type}}] -password_label=Geben Sie zum Öffnen der PDF-Datei deren Passwort ein. -password_invalid=Falsches Passwort. Bitte versuchen Sie es erneut. -password_ok=OK -password_cancel=Abbrechen - -printing_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt. -printing_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber empfohlen. -web_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen werden. -document_colors_disabled=PDF-Dokumenten ist es nicht erlaubt, ihre eigenen Farben zu verwenden: \'Seiten das Verwenden von eigenen Farben erlauben\' ist im Browser deaktiviert. diff --git a/public/pdfjs/web/locale/el/viewer.properties b/public/pdfjs/web/locale/el/viewer.properties deleted file mode 100644 index df455c75..00000000 --- a/public/pdfjs/web/locale/el/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Î ÏοηγοÏμενη σελίδα -previous_label=Î ÏοηγοÏμενη -next.title=Επόμενη σελίδα -next_label=Επόμενη - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Σελίδα: -page_of=από {{pageCount}} - -zoom_out.title=ΣμίκÏυνση -zoom_out_label=ΣμίκÏυνση -zoom_in.title=ΜεγÎθυνση -zoom_in_label=ΜεγÎθυνση -zoom.title=ΜεγÎθυνση -presentation_mode.title=Μετάβαση σε λειτουÏγία παÏουσίασης -presentation_mode_label=ΛειτουÏγία παÏουσίασης -open_file.title=Άνοιγμα αÏχείου -open_file_label=Άνοιγμα -print.title=ΕκτÏπωση -print_label=ΕκτÏπωση -download.title=Λήψη -download_label=Λήψη -bookmark.title=ΤÏÎχουσα Ï€Ïοβολή (αντίγÏαφο ή άνοιγμα σε νÎο παÏάθυÏο) -bookmark_label=ΤÏÎχουσα Ï€Ïοβολή - -# Secondary toolbar and context menu -tools.title=ΕÏγαλεία -tools_label=ΕÏγαλεία -first_page.title=Μετάβαση στην Ï€Ïώτη σελίδα -first_page.label=Μετάβαση στην Ï€Ïώτη σελίδα -first_page_label=Μετάβαση στην Ï€Ïώτη σελίδα -last_page.title=Μετάβαση στη τελευταία σελίδα -last_page.label=Μετάβαση στη τελευταία σελίδα -last_page_label=Μετάβαση στη τελευταία σελίδα -page_rotate_cw.title=ΔεξιόστÏοφη πεÏιστÏοφή -page_rotate_cw.label=ΔεξιόστÏοφη πεÏιστÏοφή -page_rotate_cw_label=ΔεξιόστÏοφη πεÏιστÏοφή -page_rotate_ccw.title=ΑÏιστεÏόστÏοφη πεÏιστÏοφή -page_rotate_ccw.label=ΑÏιστεÏόστÏοφη πεÏιστÏοφή -page_rotate_ccw_label=ΑÏιστεÏόστÏοφη πεÏιστÏοφή - -hand_tool_enable.title=ΕνεÏγοποίηση εÏγαλείου χεÏÎ¹Î¿Ï -hand_tool_enable_label=ΕνεÏγοποίηση εÏγαλείου χεÏÎ¹Î¿Ï -hand_tool_disable.title=ΑπενεÏγοποίηση εÏγαλείου χεÏÎ¹Î¿Ï -hand_tool_disable_label=ΑπενεÏγοποίηση εÏγαλείου χεÏÎ¹Î¿Ï - -# Document properties dialog box -document_properties.title=Ιδιότητες εγγÏάφου… -document_properties_label=Ιδιότητες εγγÏάφου… -document_properties_file_name=Όνομα αÏχείου: -document_properties_file_size=ÎœÎγεθος αÏχείου: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Τίτλος: -document_properties_author=ΣυγγÏαφÎας: -document_properties_subject=ΘÎμα: -document_properties_keywords=ΛÎξεις κλειδιά: -document_properties_creation_date=ΗμεÏομηνία δημιουÏγίας: -document_properties_modification_date=ΗμεÏομηνία Ï„Ïοποποίησης: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ΔημιουÏγός: -document_properties_producer=ΠαÏαγωγός PDF: -document_properties_version=Έκδοση PDF: -document_properties_page_count=ΑÏιθμός σελίδων: -document_properties_close=Κλείσιμο - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Εναλλαγή Ï€Ïοβολής πλευÏικής στήλης -toggle_sidebar_label=Εναλλαγή Ï€Ïοβολής πλευÏικής στήλης -outline.title=Î Ïοβολή διάÏθÏωσης κειμÎνου -outline_label=ΔιάÏθÏωση κειμÎνου -attachments.title=Î Ïοβολή συνημμÎνου -attachments_label=ΣυνημμÎνα -thumbs.title=Î Ïοβολή μικÏογÏαφιών -thumbs_label=ΜικÏογÏαφίες -findbar.title=ΕÏÏεση στο ÎγγÏαφο -findbar_label=ΕÏÏεση - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Σελίδα {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=ΜικÏογÏαφία της σελίδας {{page}} - -# Find panel button title and messages -find_label=ΕÏÏεση: -find_previous.title=ΕÏÏεση της Ï€ÏοηγοÏμενης εμφάνισης της φÏάσης -find_previous_label=Î ÏοηγοÏμενο -find_next.title=ΕÏÏεση της επόμενης εμφάνισης της φÏάσης -find_next_label=Επόμενο -find_highlight=Επισήμανση όλων -find_match_case_label=ΤαίÏιασμα χαÏακτήÏα -find_reached_top=Έλευση στην αÏχή του εγγÏάφου, συνÎχεια από το Ï„Îλος -find_reached_bottom=Έλευση στο Ï„Îλος του εγγÏάφου, συνÎχεια από την αÏχή -find_not_found=Η φÏάση δεν βÏÎθηκε - -# Error panel labels -error_more_info=ΠεÏισσότεÏες πληÏοφοÏίες -error_less_info=ΛιγότεÏες πληÏοφοÏίες -error_close=Κλείσιμο -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Μήνυμα: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ΑÏχείο: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=Î ÏοÎκυψε σφάλμα κατά την ανάλυση της σελίδας. - -# Predefined zoom values -page_scale_width=Πλάτος σελίδας -page_scale_fit=ÎœÎγεθος σελίδας -page_scale_auto=Αυτόματη μεγÎθυνση -page_scale_actual=Î Ïαγματικό μÎγεθος -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Σφάλμα -loading_error=Î ÏοÎκυψε Îνα σφάλμα κατά τη φόÏτωση του PDF. -invalid_file_error=Μη ÎγκυÏο ή κατεστÏαμμÎνο αÏχείο PDF. -missing_file_error=Λείπει αÏχείο PDF. -unexpected_response_error=Unexpected server response. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Σχόλιο] -password_label=Εισαγωγή ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î³Î¹Î± το άνοιγμα του PDF αÏχείου. -password_invalid=Μη ÎγκυÏος κωδικός. Î Ïοσπαθείστε ξανά. -password_ok=ΟΚ -password_cancel=ΑκÏÏωση - -printing_not_supported=Î Ïοειδοποίηση: Η εκτÏπωση δεν υποστηÏίζεται πλήÏως από αυτόν τον πεÏιηγητή. -printing_not_ready=Î Ïοειδοποίηση: Το PDF δεν φοÏτώθηκε πλήÏως για εκτÏπωση. -web_fonts_disabled=Οι γÏαμματοσειÏÎÏ‚ Web απενεÏγοποιημÎνες: αδυναμία χÏήσης των ενσωματωμÎνων γÏαμματοσειÏών PDF. -document_colors_disabled=Δεν επιτÏÎπεται στα ÎγγÏαφα PDF να χÏησιμοποιοÏν τα δικά τους χÏώματα: Η επιλογή \'Îα επιτÏÎπεται η χÏήση χÏωμάτων της σελίδας\' δεν είναι ενεÏγή στην εφαÏμογή. diff --git a/public/pdfjs/web/locale/en-GB/viewer.properties b/public/pdfjs/web/locale/en-GB/viewer.properties deleted file mode 100644 index f9e1dfb6..00000000 --- a/public/pdfjs/web/locale/en-GB/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Previous Page -previous_label=Previous -next.title=Next Page -next_label=Next - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Page: -page_of=of {{pageCount}} - -zoom_out.title=Zoom Out -zoom_out_label=Zoom Out -zoom_in.title=Zoom In -zoom_in_label=Zoom In -zoom.title=Zoom -presentation_mode.title=Switch to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Open File -open_file_label=Open -print.title=Print -print_label=Print -download.title=Download -download_label=Download -bookmark.title=Current view (copy or open in new window) -bookmark_label=Current View - -# Secondary toolbar and context menu -tools.title=Tools -tools_label=Tools -first_page.title=Go to First Page -first_page.label=Go to First Page -first_page_label=Go to First Page -last_page.title=Go to Last Page -last_page.label=Go to Last Page -last_page_label=Go to Last Page -page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise -page_rotate_cw_label=Rotate Clockwise -page_rotate_ccw.title=Rotate Anti-Clockwise -page_rotate_ccw.label=Rotate Anti-Clockwise -page_rotate_ccw_label=Rotate Anti-Clockwise - -hand_tool_enable.title=Enable hand tool -hand_tool_enable_label=Enable hand tool -hand_tool_disable.title=Disable hand tool -hand_tool_disable_label=Disable hand tool - -# Document properties dialog box -document_properties.title=Document Properties… -document_properties_label=Document Properties… -document_properties_file_name=File name: -document_properties_file_size=File size: -document_properties_kb={{size_kb}} kB ({{size_b}} bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Title: -document_properties_author=Author: -document_properties_subject=Subject: -document_properties_keywords=Keywords: -document_properties_creation_date=Creation Date: -document_properties_modification_date=Modification Date: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: -document_properties_producer=PDF Producer: -document_properties_version=PDF Version: -document_properties_page_count=Page Count: -document_properties_close=Close - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_label=Toggle Sidebar -outline.title=Show Document Outline -outline_label=Document Outline -attachments.title=Show Attachments -attachments_label=Attachments -thumbs.title=Show Thumbnails -thumbs_label=Thumbnails -findbar.title=Find in Document -findbar_label=Find - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Page {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail of Page {{page}} - -# Find panel button title and messages -find_label=Find: -find_previous.title=Find the previous occurrence of the phrase -find_previous_label=Previous -find_next.title=Find the next occurrence of the phrase -find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_reached_top=Reached top of document, continued from bottom -find_reached_bottom=Reached end of document, continued from top -find_not_found=Phrase not found - -# Error panel labels -error_more_info=More Information -error_less_info=Less Information -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. - -# Predefined zoom values -page_scale_width=Page Width -page_scale_fit=Page Fit -page_scale_auto=Automatic Zoom -page_scale_actual=Actual Size -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Error -loading_error=An error occurred while loading the PDF. -invalid_file_error=Invalid or corrupted PDF file. -missing_file_error=Missing PDF file. -unexpected_response_error=Unexpected server response. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Enter the password to open this PDF file. -password_invalid=Invalid password. Please try again. -password_ok=OK -password_cancel=Cancel - -printing_not_supported=Warning: Printing is not fully supported by this browser. -printing_not_ready=Warning: The PDF is not fully loaded for printing. -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_disabled=PDF documents are not allowed to use their own colours: 'Allow pages to choose their own colours' is deactivated in the browser. diff --git a/public/pdfjs/web/locale/en-US/viewer.properties b/public/pdfjs/web/locale/en-US/viewer.properties deleted file mode 100644 index 5c43b505..00000000 --- a/public/pdfjs/web/locale/en-US/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Previous Page -previous_label=Previous -next.title=Next Page -next_label=Next - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Page: -page_of=of {{pageCount}} - -zoom_out.title=Zoom Out -zoom_out_label=Zoom Out -zoom_in.title=Zoom In -zoom_in_label=Zoom In -zoom.title=Zoom -presentation_mode.title=Switch to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Open File -open_file_label=Open -print.title=Print -print_label=Print -download.title=Download -download_label=Download -bookmark.title=Current view (copy or open in new window) -bookmark_label=Current View - -# Secondary toolbar and context menu -tools.title=Tools -tools_label=Tools -first_page.title=Go to First Page -first_page.label=Go to First Page -first_page_label=Go to First Page -last_page.title=Go to Last Page -last_page.label=Go to Last Page -last_page_label=Go to Last Page -page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise -page_rotate_cw_label=Rotate Clockwise -page_rotate_ccw.title=Rotate Counterclockwise -page_rotate_ccw.label=Rotate Counterclockwise -page_rotate_ccw_label=Rotate Counterclockwise - -hand_tool_enable.title=Enable hand tool -hand_tool_enable_label=Enable hand tool -hand_tool_disable.title=Disable hand tool -hand_tool_disable_label=Disable hand tool - -# Document properties dialog box -document_properties.title=Document Properties… -document_properties_label=Document Properties… -document_properties_file_name=File name: -document_properties_file_size=File size: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Title: -document_properties_author=Author: -document_properties_subject=Subject: -document_properties_keywords=Keywords: -document_properties_creation_date=Creation Date: -document_properties_modification_date=Modification Date: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: -document_properties_producer=PDF Producer: -document_properties_version=PDF Version: -document_properties_page_count=Page Count: -document_properties_close=Close - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_label=Toggle Sidebar -outline.title=Show Document Outline -outline_label=Document Outline -attachments.title=Show Attachments -attachments_label=Attachments -thumbs.title=Show Thumbnails -thumbs_label=Thumbnails -findbar.title=Find in Document -findbar_label=Find - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Page {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail of Page {{page}} - -# Find panel button title and messages -find_label=Find: -find_previous.title=Find the previous occurrence of the phrase -find_previous_label=Previous -find_next.title=Find the next occurrence of the phrase -find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_reached_top=Reached top of document, continued from bottom -find_reached_bottom=Reached end of document, continued from top -find_not_found=Phrase not found - -# Error panel labels -error_more_info=More Information -error_less_info=Less Information -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. - -# Predefined zoom values -page_scale_width=Page Width -page_scale_fit=Page Fit -page_scale_auto=Automatic Zoom -page_scale_actual=Actual Size -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Error -loading_error=An error occurred while loading the PDF. -invalid_file_error=Invalid or corrupted PDF file. -missing_file_error=Missing PDF file. -unexpected_response_error=Unexpected server response. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Enter the password to open this PDF file. -password_invalid=Invalid password. Please try again. -password_ok=OK -password_cancel=Cancel - -printing_not_supported=Warning: Printing is not fully supported by this browser. -printing_not_ready=Warning: The PDF is not fully loaded for printing. -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_disabled=PDF documents are not allowed to use their own colors: \'Allow pages to choose their own colors\' is deactivated in the browser. diff --git a/public/pdfjs/web/locale/en-ZA/viewer.properties b/public/pdfjs/web/locale/en-ZA/viewer.properties deleted file mode 100644 index 19304846..00000000 --- a/public/pdfjs/web/locale/en-ZA/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Previous Page -previous_label=Previous -next.title=Next Page -next_label=Next - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Page: -page_of=of {{pageCount}} - -zoom_out.title=Zoom Out -zoom_out_label=Zoom Out -zoom_in.title=Zoom In -zoom_in_label=Zoom In -zoom.title=Zoom -presentation_mode.title=Switch to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Open File -open_file_label=Open -print.title=Print -print_label=Print -download.title=Download -download_label=Download -bookmark.title=Current view (copy or open in new window) -bookmark_label=Current View - -# Secondary toolbar and context menu -tools.title=Tools -tools_label=Tools -first_page.title=Go to First Page -first_page.label=Go to First Page -first_page_label=Go to First Page -last_page.title=Go to Last Page -last_page.label=Go to Last Page -last_page_label=Go to Last Page -page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise -page_rotate_cw_label=Rotate Clockwise -page_rotate_ccw.title=Rotate Counterclockwise -page_rotate_ccw.label=Rotate Counterclockwise -page_rotate_ccw_label=Rotate Counterclockwise - -hand_tool_enable.title=Enable hand tool -hand_tool_enable_label=Enable hand tool -hand_tool_disable.title=Disable hand tool -hand_tool_disable_label=Disable hand tool - -# Document properties dialog box -document_properties.title=Document Properties… -document_properties_label=Document Properties… -document_properties_file_name=File name: -document_properties_file_size=File size: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Title: -document_properties_author=Author: -document_properties_subject=Subject: -document_properties_keywords=Keywords: -document_properties_creation_date=Creation Date: -document_properties_modification_date=Modification Date: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: -document_properties_producer=PDF Producer: -document_properties_version=PDF Version: -document_properties_page_count=Page Count: -document_properties_close=Close - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_label=Toggle Sidebar -outline.title=Show Document Outline -outline_label=Document Outline -attachments.title=Show Attachments -attachments_label=Attachments -thumbs.title=Show Thumbnails -thumbs_label=Thumbnails -findbar.title=Find in Document -findbar_label=Find - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Page {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail of Page {{page}} - -# Find panel button title and messages -find_label=Find: -find_previous.title=Find the previous occurrence of the phrase -find_previous_label=Previous -find_next.title=Find the next occurrence of the phrase -find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_reached_top=Reached top of document, continued from bottom -find_reached_bottom=Reached end of document, continued from top -find_not_found=Phrase not found - -# Error panel labels -error_more_info=More Information -error_less_info=Less Information -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. - -# Predefined zoom values -page_scale_width=Page Width -page_scale_fit=Page Fit -page_scale_auto=Automatic Zoom -page_scale_actual=Actual Size -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Error -loading_error=An error occurred while loading the PDF. -invalid_file_error=Invalid or corrupted PDF file. -missing_file_error=Missing PDF file. -unexpected_response_error=Unexpected server response. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Enter the password to open this PDF file. -password_invalid=Invalid password. Please try again. -password_ok=OK -password_cancel=Cancel - -printing_not_supported=Warning: Printing is not fully supported by this browser. -printing_not_ready=Warning: The PDF is not fully loaded for printing. -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_disabled=PDF documents are not allowed to use their own colours: 'Allow pages to choose their own colours' is deactivated in the browser. diff --git a/public/pdfjs/web/locale/eo/viewer.properties b/public/pdfjs/web/locale/eo/viewer.properties deleted file mode 100644 index 7cc95c64..00000000 --- a/public/pdfjs/web/locale/eo/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=AntaÅa paÄo -previous_label=MalantaÅen -next.title=Venonta paÄo -next_label=AntaÅen - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=PaÄo: -page_of=el {{pageCount}} - -zoom_out.title=Malpligrandigi -zoom_out_label=Malpligrandigi -zoom_in.title=Pligrandigi -zoom_in_label=Pligrandigi -zoom.title=Pligrandigilo -presentation_mode.title=Iri al prezenta reÄimo -presentation_mode_label=Prezenta reÄimo -open_file.title=Malfermi dosieron -open_file_label=Malfermi -print.title=Presi -print_label=Presi -download.title=ElÅuti -download_label=ElÅuti -bookmark.title=Nuna vido (kopii aÅ malfermi en nova fenestro) -bookmark_label=Nuna vido - -# Secondary toolbar and context menu -tools.title=Iloj -tools_label=Iloj -first_page.title=Iri al la unua paÄo -first_page.label=Iri al la unua paÄo -first_page_label=Iri al la unua paÄo -last_page.title=Iri al la lasta paÄo -last_page.label=Iri al la lasta paÄo -last_page_label=Iri al la lasta paÄo -page_rotate_cw.title=Rotaciigi dekstrume -page_rotate_cw.label=Rotaciigi dekstrume -page_rotate_cw_label=Rotaciigi dekstrume -page_rotate_ccw.title=Rotaciigi maldekstrume -page_rotate_ccw.label=Rotaciigi maldekstrume -page_rotate_ccw_label=Rotaciigi maldekstrume - -hand_tool_enable.title=Aktivigi manan ilon -hand_tool_enable_label=Aktivigi manan ilon -hand_tool_disable.title=Malaktivigi manan ilon -hand_tool_disable_label=Malaktivigi manan ilon - -# Document properties dialog box -document_properties.title=Atributoj de dokumento… -document_properties_label=Atributoj de dokumento… -document_properties_file_name=Nomo de dosiero: -document_properties_file_size=Grado de dosiero: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KO ({{size_b}} oktetoj) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MO ({{size_b}} oktetoj) -document_properties_title=Titolo: -document_properties_author=AÅtoro: -document_properties_subject=Temo: -document_properties_keywords=Åœlosilvorto: -document_properties_creation_date=Dato de kreado: -document_properties_modification_date=Dato de modifo: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Kreinto: -document_properties_producer=Produktinto de PDF: -document_properties_version=Versio de PDF: -document_properties_page_count=Nombro de paÄoj: -document_properties_close=Fermi - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Montri/kaÅi flankan strion -toggle_sidebar_label=Montri/kaÅi flankan strion -outline.title=Montri skemon de dokumento -outline_label=Skemo de dokumento -attachments.title=Montri kunsendaĵojn -attachments_label=Kunsendaĵojn -thumbs.title=Montri miniaturojn -thumbs_label=Miniaturoj -findbar.title=Serĉi en dokumento -findbar_label=Serĉi - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=PaÄo {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniaturo de paÄo {{page}} - -# Find panel button title and messages -find_label=Serĉi: -find_previous.title=Serĉi la antaÅan aperon de la frazo -find_previous_label=MalantaÅen -find_next.title=Serĉi la venontan aperon de la frazo -find_next_label=AntaÅen -find_highlight=Elstarigi ĉiujn -find_match_case_label=Distingi inter majuskloj kaj minuskloj -find_reached_top=Komenco de la dokumento atingita, daÅrigado ekde la fino -find_reached_bottom=Fino de la dokumento atingita, daÅrigado ekde la komenco -find_not_found=Frazo ne trovita - -# Error panel labels -error_more_info=Pli da informo -error_less_info=Mapli da informo -error_close=Fermi -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=MesaÄo: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stako: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Dosiero: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linio: {{line}} -rendering_error=Okazis eraro dum la montrado de la paÄo. - -# Predefined zoom values -page_scale_width=LarÄo de paÄo -page_scale_fit=Adapti paÄon -page_scale_auto=AÅtomata skalo -page_scale_actual=Reala gandeco -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Eraro -loading_error=Okazis eraro dum la Åargado de la PDF dosiero. -invalid_file_error=Nevalida aÅ difektita PDF dosiero. -missing_file_error=Mankas dosiero PDF. -unexpected_response_error=Neatendita respondo de servilo. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Prinoto: {{type}}] -password_label=Tajpu pasvorton por malfermi tiun ĉi dosieron PDF. -password_invalid=Nevalida pasvorto. Bonvolu provi denove. -password_ok=Akcepti -password_cancel=Nuligi - -printing_not_supported=Averto: tiu ĉi retumilo ne plene subtenas presadon. -printing_not_ready=Averto: La PDF dosiero ne estas plene Åargita por presado. -web_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF. -document_colors_disabled=Dokumentoj PDF ne rajtas havi siajn proprajn kolorojn: \'Permesi al paÄoj elekti siajn proprajn kolorojn\' estas malaktiva en la retumilo. diff --git a/public/pdfjs/web/locale/es-AR/viewer.properties b/public/pdfjs/web/locale/es-AR/viewer.properties deleted file mode 100644 index 733be7ba..00000000 --- a/public/pdfjs/web/locale/es-AR/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Página siguiente -next_label=Siguiente - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Página: -page_of=de {{pageCount}} - -zoom_out.title=Alejar -zoom_out_label=Alejar -zoom_in.title=Acercar -zoom_in_label=Acercar -zoom.title=Zoom -print.title=Imprimir -print_label=Imprimir -presentation_mode.title=Cambiar a modo presentación -presentation_mode_label=Modo presentación -open_file.title=Abrir archivo -open_file_label=Abrir -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar o abrir en nueva ventana) -bookmark_label=Vista actual - -# Secondary toolbar and context menu -tools.title=Herramientas -tools_label=Herramientas -first_page.title=Ir a primera página -first_page.label=Ir a primera página -first_page_label=Ir a primera página -last_page.title=Ir a última página -last_page.label=Ir a última página -last_page_label=Ir a última página -page_rotate_cw.title=Rotar horario -page_rotate_cw.label=Rotar horario -page_rotate_cw_label=Rotar horario -page_rotate_ccw.title=Rotar antihorario -page_rotate_ccw.label=Rotar antihorario -page_rotate_ccw_label=Rotar antihorario - -hand_tool_enable.title=Habilitar herramienta mano -hand_tool_enable_label=Habilitar herramienta mano -hand_tool_disable.title=Deshabilitar herramienta mano -hand_tool_disable_label=Deshabilitar herramienta mano - -# Document properties dialog box -document_properties.title=Propiedades del documento… -document_properties_label=Propiedades del documento… -document_properties_file_name=Nombre de archivo: -document_properties_file_size=Tamaño de archovo: -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=TÃtulo: -document_properties_author=Autor: -document_properties_subject=Asunto: -document_properties_keywords=Palabras clave: -document_properties_creation_date=Fecha de creación: -document_properties_modification_date=Fecha de modificación: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=PDF Productor: -document_properties_version=Versión de PDF: -document_properties_page_count=Cantidad de páginas: -document_properties_close=Cerrar - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Alternar barra lateral -toggle_sidebar_label=Alternar barra lateral -outline.title=Mostrar esquema del documento -outline_label=Esquema del documento -attachments.title=Mostrar adjuntos -attachments_label=Adjuntos -thumbs.title=Mostrar miniaturas -thumbs_label=Miniaturas -findbar.title=Buscar en documento -findbar_label=Buscar - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura de página {{page}} - -# Find panel button title and messages -find_label=Buscar: -find_previous.title=Buscar la aparición anterior de la frase -find_previous_label=Anterior -find_next.title=Buscar la siguiente aparición de la frase -find_next_label=Siguiente -find_highlight=Resaltar todo -find_match_case_label=Coincidir mayúsculas -find_reached_top=Inicio de documento alcanzado, continuando desde abajo -find_reached_bottom=Fin de documento alcanzando, continuando desde arriba -find_not_found=Frase no encontrada - -# Error panel labels -error_more_info=Más información -error_less_info=Menos información -error_close=Cerrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensaje: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Archivo: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=LÃnea: {{line}} -rendering_error=Ocurrió un error al dibujar la página. - -# Predefined zoom values -page_scale_width=Ancho de página -page_scale_fit=Ajustar página -page_scale_auto=Zoom automático -page_scale_actual=Tamaño real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Error -loading_error=Ocurrió un error al cargar el PDF. -invalid_file_error=Archivo PDF no válido o cocrrupto. -missing_file_error=Archivo PDF faltante. -unexpected_response_error=Respuesta del servidor inesperada. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Anotación] -password_label=Ingrese la contraseña para abrir este archivo PDF -password_invalid=Contraseña inválida. Intente nuevamente. -password_ok=Aceptar -password_cancel=Cancelar - -printing_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador. -printing_not_ready=Advertencia: El PDF no está completamente cargado para impresión. -web_fonts_disabled=TipografÃa web deshabilitada: no se pueden usar tipos incrustados en PDF. -document_colors_disabled=Los documentos PDF no tienen permitido usar sus propios colores: \'Permitir a las páginas elegir sus propios colores\' está desactivado en el navegador. diff --git a/public/pdfjs/web/locale/es-CL/viewer.properties b/public/pdfjs/web/locale/es-CL/viewer.properties deleted file mode 100644 index f5660c35..00000000 --- a/public/pdfjs/web/locale/es-CL/viewer.properties +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright 2012 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. - -previous.title = Página anterior -previous_label = Anterior -next.title = Página siguiente -next_label = Siguiente -page_label = Página: -page_of = de {{pageCount}} -zoom_out.title = Alejar -zoom_out_label = Alejar -zoom_in.title = Acercar -zoom_in_label = Acercar -zoom.title = Ampliación -print.title = Imprimir -print_label = Imprimir -presentation_mode.title = Cambiar al modo de presentación -presentation_mode_label = Modo de presentación -open_file.title = Abrir archivo -open_file_label = Abrir -download.title = Descargar -download_label = Descargar -bookmark.title = Vista actual (copiar o abrir en nueva ventana) -bookmark_label = Vista actual -tools.title=Herramientas -tools_label=Herramientas -first_page.title=Ir a la primera página -first_page.label=Ir a la primera página -first_page_label=Ir a la primera página -last_page.title=Ir a la última página -last_page.label=Ir a la última página -last_page_label=Ir a la última página -page_rotate_cw.title=Girar a la derecha -page_rotate_cw.label=Girar a la derecha -page_rotate_cw_label=Girar a la derecha -page_rotate_ccw.title=Girar a la izquierda -page_rotate_ccw.label=Girar a la izquierda -page_rotate_ccw_label=Girar a la izquierda - -hand_tool_enable.title=Activar herramienta de mano -hand_tool_enable_label=Activar herramienta de mano -hand_tool_disable.title=Desactivar herramienta de mano -hand_tool_disable_label=Desactivar herramienta de mano - -document_properties.title=Propiedades del documento… -document_properties_label=Propiedades del documento… -document_properties_file_name=Nombre del archivo: -document_properties_file_size=Tamaño del archivo: -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=TÃtulo: -document_properties_author=Autor: -document_properties_subject=Asunto: -document_properties_keywords=Palabras clave: -document_properties_creation_date=Fecha de creación: -document_properties_modification_date=Fecha de modificación: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=Productor del PDF: -document_properties_version=Versión de PDF: -document_properties_page_count=Cantidad de páginas: -document_properties_close=Cerrar - -toggle_sidebar.title=Barra lateral -toggle_sidebar_label=Mostrar u ocultar la barra lateral -outline.title = Mostrar esquema del documento -outline_label = Esquema del documento -attachments.title=Mostrar adjuntos -attachments_label=Adjuntos -thumbs.title = Mostrar miniaturas -thumbs_label = Miniaturas -findbar.title = Buscar en el documento -findbar_label = Buscar -thumb_page_title = Página {{page}} -thumb_page_canvas = Miniatura de la página {{page}} -first_page.label = Ir a la primera página -last_page.label = Ir a la última página -page_rotate_cw.label = Rotar en sentido de los punteros del reloj -page_rotate_ccw.label = Rotar en sentido contrario a los punteros del reloj -find_label = Buscar: -find_previous.title = Encontrar la aparición anterior de la frase -find_previous_label = Previo -find_next.title = Encontrar la siguiente aparición de la frase -find_next_label = Siguiente -find_highlight = Destacar todos -find_match_case_label = Coincidir mayús./minús. -find_reached_top=Se alcanzó el inicio del documento, continuando desde el final -find_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio -find_not_found = Frase no encontrada -error_more_info = Más información -error_less_info = Menos información -error_close = Cerrar -error_version_info=PDF.js v{{version}} (compilación: {{build}}) -error_message = Mensaje: {{message}} -error_stack = Pila: {{stack}} -error_file = Archivo: {{file}} -error_line = LÃnea: {{line}} -rendering_error = Ha ocurrido un error al renderizar la página. -page_scale_width = Ancho de página -page_scale_fit = Ajuste de página -page_scale_auto = Aumento automático -page_scale_actual = Tamaño actual -page_scale_percent={{scale}}% -loading_error_indicator = Error -loading_error = Ha ocurrido un error al cargar el PDF. -invalid_file_error = Archivo PDF inválido o corrupto. -missing_file_error=Falta el archivo PDF. -unexpected_response_error=Respuesta del servidor inesperada. - -text_annotation_type.alt=[{{type}} Anotación] -password_label=Ingrese la contraseña para abrir este archivo PDF. -password_invalid=Contraseña inválida. Por favor, vuelva a intentarlo. -password_ok=Aceptar -password_cancel=Cancelar - -printing_not_supported = Advertencia: Imprimir no está soportado completamente por este navegador. -printing_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso. -web_fonts_disabled=Las fuentes web están desactivadas: imposible usar las fuentes PDF embebidas. -document_colors_disabled=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador. diff --git a/public/pdfjs/web/locale/es-ES/viewer.properties b/public/pdfjs/web/locale/es-ES/viewer.properties deleted file mode 100644 index b9c2fccd..00000000 --- a/public/pdfjs/web/locale/es-ES/viewer.properties +++ /dev/null @@ -1,111 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -previous.title = Página anterior -previous_label = Anterior -next.title = Página siguiente -next_label = Siguiente -page_label = Página: -page_of = de {{pageCount}} -zoom_out.title = Reducir -zoom_out_label = Reducir -zoom_in.title = Aumentar -zoom_in_label = Aumentar -zoom.title = Tamaño -presentation_mode.title = Cambiar al modo presentación -presentation_mode_label = Modo presentación -open_file.title = Abrir archivo -open_file_label = Abrir -print.title = Imprimir -print_label = Imprimir -download.title = Descargar -download_label = Descargar -bookmark.title = Vista actual (copiar o abrir en una nueva ventana) -bookmark_label = Vista actual -tools.title = Herramientas -tools_label = Herramientas -first_page.title = Ir a la primera página -first_page.label = Ir a la primera página -first_page_label = Ir a la primera página -last_page.title = Ir a la última página -last_page.label = Ir a la última página -last_page_label = Ir a la última página -page_rotate_cw.title = Rotar en sentido horario -page_rotate_cw.label = Rotar en sentido horario -page_rotate_cw_label = Rotar en sentido horario -page_rotate_ccw.title = Rotar en sentido antihorario -page_rotate_ccw.label = Rotar en sentido antihorario -page_rotate_ccw_label = Rotar en sentido antihorario -hand_tool_enable.title = Activar herramienta mano -hand_tool_enable_label = Activar herramienta mano -hand_tool_disable.title = Desactivar herramienta mano -hand_tool_disable_label = Desactivar herramienta mano -document_properties.title = Propiedades del documento… -document_properties_label = Propiedades del documento… -document_properties_file_name = Nombre de archivo: -document_properties_file_size = Tamaño de archivo: -document_properties_kb = {{size_kb}} KB ({{size_b}} bytes) -document_properties_mb = {{size_mb}} MB ({{size_b}} bytes) -document_properties_title = TÃtulo: -document_properties_author = Autor: -document_properties_subject = Asunto: -document_properties_keywords = Palabras clave: -document_properties_creation_date = Fecha de creación: -document_properties_modification_date = Fecha de modificación: -document_properties_date_string = {{date}}, {{time}} -document_properties_creator = Creador: -document_properties_producer = Productor PDF: -document_properties_version = Versión PDF: -document_properties_page_count = Número de páginas: -document_properties_close = Cerrar -toggle_sidebar.title = Cambiar barra lateral -toggle_sidebar_label = Cambiar barra lateral -outline.title = Mostrar el esquema del documento -outline_label = Esquema del documento -attachments.title = Mostrar adjuntos -attachments_label = Adjuntos -thumbs.title = Mostrar miniaturas -thumbs_label = Miniaturas -findbar.title = Buscar en el documento -findbar_label = Buscar -thumb_page_title = Página {{page}} -thumb_page_canvas = Miniatura de la página {{page}} -find_label = Buscar: -find_previous.title = Encontrar la anterior aparición de la frase -find_previous_label = Anterior -find_next.title = Encontrar la siguiente aparición de esta frase -find_next_label = Siguiente -find_highlight = Resaltar todos -find_match_case_label = Coincidencia de mayús./minús. -find_reached_top = Se alcanzó el inicio del documento, se continúa desde el final -find_reached_bottom = Se alcanzó el final del documento, se continúa desde el inicio -find_not_found = Frase no encontrada -error_more_info = Más información -error_less_info = Menos información -error_close = Cerrar -error_version_info = PDF.js v{{version}} (build: {{build}}) -error_message = Mensaje: {{message}} -error_stack = Pila: {{stack}} -error_file = Archivo: {{file}} -error_line = LÃnea: {{line}} -rendering_error = Ocurrió un error al renderizar la página. -page_scale_width = Anchura de la página -page_scale_fit = Ajuste de la página -page_scale_auto = Tamaño automático -page_scale_actual = Tamaño real -page_scale_percent = {{scale}}% -loading_error_indicator = Error -loading_error = Ocurrió un error al cargar el PDF. -invalid_file_error = Fichero PDF no válido o corrupto. -missing_file_error = No hay fichero PDF. -unexpected_response_error = Respuesta inesperada del servidor. -text_annotation_type.alt = [Anotación {{type}}] -password_label = Introduzca la contraseña para abrir este archivo PDF. -password_invalid = Contraseña no válida. Vuelva a intentarlo. -password_ok = Aceptar -password_cancel = Cancelar -printing_not_supported = Advertencia: Imprimir no está totalmente soportado por este navegador. -printing_not_ready = Advertencia: Este PDF no se ha cargado completamente para poder imprimirse. -web_fonts_disabled = Las tipografÃas web están desactivadas: es imposible usar las tipografÃas PDF embebidas. -document_colors_disabled = Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador. diff --git a/public/pdfjs/web/locale/es-MX/viewer.properties b/public/pdfjs/web/locale/es-MX/viewer.properties deleted file mode 100644 index 1cfd03a3..00000000 --- a/public/pdfjs/web/locale/es-MX/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Página siguiente -next_label=Siguiente - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Página: -page_of=de {{pageCount}} - -zoom_out.title=Reducir -zoom_out_label=Reducir -zoom_in.title=Aumentar -zoom_in_label=Aumentar -zoom.title=Zoom -presentation_mode.title=Cambiar al modo presentación -presentation_mode_label=Modo presentación -open_file.title=Abrir archivo -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar o abrir en una nueva ventana) -bookmark_label=Vista actual - -# Secondary toolbar and context menu -tools.title=Herramientas -tools_label=Herramientas -first_page.title=Ir a la primera página -first_page.label=Ir a la primera página -first_page_label=Ir a la primera página -last_page.title=Ir a la última página -last_page.label=Ir a la última página -last_page_label=Ir a la última página -page_rotate_cw.title=Girar a la derecha -page_rotate_cw.label=Girar a la derecha -page_rotate_cw_label=Girar a la derecha -page_rotate_ccw.title=Girar a la izquierda -page_rotate_ccw.label=Girar a la izquierda -page_rotate_ccw_label=Girar a la izquierda - -hand_tool_enable.title=Activar herramienta mano -hand_tool_enable_label=Activar herramienta mano -hand_tool_disable.title=Desactivar herramienta mano -hand_tool_disable_label=Desactivar herramienta mano - -# Document properties dialog box -document_properties.title=Propiedades del documento… -document_properties_label=Propiedades del documento… -document_properties_file_name=Nombre del archivo: -document_properties_file_size=Tamaño del archivo: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=TÃtulo: -document_properties_author=Autor: -document_properties_subject=Asunto: -document_properties_keywords=Palabras claves: -document_properties_creation_date=Fecha de creación: -document_properties_modification_date=Fecha de modificación: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creador: -document_properties_producer=Productor PDF: -document_properties_version=Versión PDF: -document_properties_page_count=Número de páginas: -document_properties_close=Cerrar - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Cambiar barra lateral -toggle_sidebar_label=Cambiar barra lateral -outline.title=Mostrar esquema del documento -outline_label=Esquema del documento -attachments.title=Mostrar adjuntos -attachments_label=Adjuntos -thumbs.title=Mostrar miniaturas -thumbs_label=Miniaturas -findbar.title=Buscar en el documento -findbar_label=Buscar - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura de la página {{page}} - -# Find panel button title and messages -find_label=Encontrar: -find_previous.title=Ir a la anterior frase encontrada -find_previous_label=Anterior -find_next.title=Ir a la siguiente frase encontrada -find_next_label=Siguiente -find_highlight=Resaltar todo -find_match_case_label=Coincidir con mayúsculas y minúsculas -find_reached_top=Se alcanzó el inicio del documento, se buscará al final -find_reached_bottom=Se alcanzó el final del documento, se buscará al inicio -find_not_found=No se encontró la frase - -# Error panel labels -error_more_info=Más información -error_less_info=Menos información -error_close=Cerrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensaje: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Archivo: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=LÃnea: {{line}} -rendering_error=Un error ocurrió al renderizar la página. - -# Predefined zoom values -page_scale_width=Ancho de página -page_scale_fit=Ajustar página -page_scale_auto=Zoom automático -page_scale_actual=Tamaño real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Error -loading_error=Un error ocurrió al cargar el PDF. -invalid_file_error=Archivo PDF invalido o dañado. -missing_file_error=Archivo PDF no encontrado. -unexpected_response_error=Respuesta inesperada del servidor. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} anotación] -password_label=Ingresa la contraseña para abrir este archivo PDF. -password_invalid=Contraseña inválida. Por favor intenta de nuevo. -password_ok=Aceptar -password_cancel=Cancelar - -printing_not_supported=Advertencia: La impresión no esta completamente soportada por este navegador. -printing_not_ready=Advertencia: El PDF no cargo completamente para impresión. -web_fonts_disabled=Las fuentes web están desactivadas: es imposible usar las fuentes PDF embebidas. -document_colors_disabled=Los documentos PDF no tienen permiso de usar sus propios colores: 'Permitir que las páginas elijan sus propios colores' esta desactivada en el navegador. diff --git a/public/pdfjs/web/locale/et/viewer.properties b/public/pdfjs/web/locale/et/viewer.properties deleted file mode 100644 index 83da357b..00000000 --- a/public/pdfjs/web/locale/et/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Eelmine lehekülg -previous_label=Eelmine -next.title=Järgmine lehekülg -next_label=Järgmine - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Lehekülg: -page_of=(kokku {{pageCount}}) - -zoom_out.title=Vähenda -zoom_out_label=Vähenda -zoom_in.title=Suurenda -zoom_in_label=Suurenda -zoom.title=Suurendamine -presentation_mode.title=Lülitu esitlusrežiimi -presentation_mode_label=Esitlusrežiim -open_file.title=Ava fail -open_file_label=Ava -print.title=Prindi -print_label=Prindi -download.title=Laadi alla -download_label=Laadi alla -bookmark.title=Praegune vaade (kopeeri või ava uues aknas) -bookmark_label=Praegune vaade - -# Secondary toolbar and context menu -tools.title=Tööriistad -tools_label=Tööriistad -first_page.title=Mine esimesele leheküljele -first_page.label=Mine esimesele leheküljele -first_page_label=Mine esimesele leheküljele -last_page.title=Mine viimasele leheküljele -last_page.label=Mine viimasele leheküljele -last_page_label=Mine viimasele leheküljele -page_rotate_cw.title=Pööra päripäeva -page_rotate_cw.label=Pööra päripäeva -page_rotate_cw_label=Pööra päripäeva -page_rotate_ccw.title=Pööra vastupäeva -page_rotate_ccw.label=Pööra vastupäeva -page_rotate_ccw_label=Pööra vastupäeva - -hand_tool_enable.title=Luba sirvimine -hand_tool_enable_label=Luba sirvimine -hand_tool_disable.title=Keela sirvimine -hand_tool_disable_label=Keela sirvimine - -# Document properties dialog box -document_properties.title=Dokumendi omadused… -document_properties_label=Dokumendi omadused… -document_properties_file_name=Faili nimi: -document_properties_file_size=Faili suurus: -document_properties_kb={{size_kb}} KiB ({{size_b}} baiti) -document_properties_mb={{size_mb}} MiB ({{size_b}} baiti) -document_properties_title=Pealkiri: -document_properties_author=Autor: -document_properties_subject=Teema: -document_properties_keywords=Märksõnad: -document_properties_creation_date=Loodud: -document_properties_modification_date=Muudetud: -document_properties_date_string={{date}} {{time}} -document_properties_creator=Looja: -document_properties_producer=Generaator: -document_properties_version=Generaatori versioon: -document_properties_page_count=Lehekülgi: -document_properties_close=Sulge - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Näita külgriba -toggle_sidebar_label=Näita külgriba -outline.title=Näita sisukorda -outline_label=Näita sisukorda -attachments.title=Näita manuseid -attachments_label=Manused -thumbs.title=Näita pisipilte -thumbs_label=Pisipildid -findbar.title=Otsi dokumendist -findbar_label=Otsi - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}}. lehekülg -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}. lehekülje pisipilt - -# Find panel button title and messages -find_label=Otsi: -find_previous.title=Otsi fraasi eelmine esinemiskoht -find_previous_label=Eelmine -find_next.title=Otsi fraasi järgmine esinemiskoht -find_next_label=Järgmine -find_highlight=Too kõik esile -find_match_case_label=Tõstutundlik -find_reached_top=Jõuti dokumendi algusesse, jätkati lõpust -find_reached_bottom=Jõuti dokumendi lõppu, jätkati algusest -find_not_found=Fraasi ei leitud - -# Error panel labels -error_more_info=Rohkem teavet -error_less_info=Vähem teavet -error_close=Sulge -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Teade: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fail: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rida: {{line}} -rendering_error=Lehe renderdamisel esines viga. - -# Predefined zoom values -page_scale_width=Mahuta laiusele -page_scale_fit=Mahuta leheküljele -page_scale_auto=Automaatne suurendamine -page_scale_actual=Tegelik suurus -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Viga -loading_error=PDFi laadimisel esines viga. -invalid_file_error=Vigane või rikutud PDF-fail. -missing_file_error=PDF-fail puudub. -unexpected_response_error=Ootamatu vastus serverilt. - -# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=PDF-faili avamiseks sisesta parool. -password_invalid=Vigane parool. Palun proovi uuesti. -password_ok=Sobib -password_cancel=Loobu - -printing_not_supported=Hoiatus: printimine pole selle brauseri poolt täielikult toetatud. -printing_not_ready=Hoiatus: PDF pole printimiseks täielikult laaditud. -web_fonts_disabled=Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada. -document_colors_disabled=PDF-dokumentidel pole oma värvide kasutamine lubatud: \'Veebilehtedel on lubatud kasutada oma värve\' on brauseris deaktiveeritud. diff --git a/public/pdfjs/web/locale/eu/viewer.properties b/public/pdfjs/web/locale/eu/viewer.properties deleted file mode 100644 index 15a3b093..00000000 --- a/public/pdfjs/web/locale/eu/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Aurreko orria -previous_label=Aurrekoa -next.title=Hurrengo orria -next_label=Hurrengoa - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Orria: -page_of=/ {{pageCount}} - -zoom_out.title=Urrundu zooma -zoom_out_label=Urrundu zooma -zoom_in.title=Gerturatu zooma -zoom_in_label=Gerturatu zooma -zoom.title=Zooma -presentation_mode.title=Aldatu aurkezpen modura -presentation_mode_label=Arkezpen modua -open_file.title=Ireki fitxategia -open_file_label=Ireki -print.title=Inprimatu -print_label=Inprimatu -download.title=Deskargatu -download_label=Deskargatu -bookmark.title=Uneko ikuspegia (kopiatu edo ireki leiho berrian) -bookmark_label=Uneko ikuspegia - -# Secondary toolbar and context menu -tools.title=Tresnak -tools_label=Tresnak -first_page.title=Joan lehen orrira -first_page.label=Joan lehen orrira -first_page_label=Joan lehen orrira -last_page.title=Joan azken orrira -last_page.label=Joan azken orrira -last_page_label=Joan azken orrira -page_rotate_cw.title=Biratu erlojuaren norantzan -page_rotate_cw.label=Biratu erlojuaren norantzan -page_rotate_cw_label=Biratu erlojuaren norantzan -page_rotate_ccw.title=Biratu erlojuaren aurkako norantzan -page_rotate_ccw.label=Biratu erlojuaren aurkako norantzan -page_rotate_ccw_label=Biratu erlojuaren aurkako norantzan - -hand_tool_enable.title=Gaitu eskuaren tresna -hand_tool_enable_label=Gaitu eskuaren tresna -hand_tool_disable.title=Desgaitu eskuaren tresna -hand_tool_disable_label=Desgaitu eskuaren tresna - -# Document properties dialog box -document_properties.title=Dokumentuaren propietateak… -document_properties_label=Dokumentuaren propietateak… -document_properties_file_name=Fitxategi-izena: -document_properties_file_size=Fitxategiaren tamaina: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} byte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Izenburua: -document_properties_author=Egilea: -document_properties_subject=Gaia: -document_properties_keywords=Gako-hitzak: -document_properties_creation_date=Sortze-data: -document_properties_modification_date=Aldatze-data: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Sortzailea: -document_properties_producer=PDFaren ekoizlea: -document_properties_version=PDF bertsioa: -document_properties_page_count=Orrialde kopurua: -document_properties_close=Itxi - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Txandakatu alboko barra -toggle_sidebar_label=Txandakatu alboko barra -outline.title=Erakutsi dokumentuaren eskema -outline_label=Dokumentuaren eskema -attachments.title=Erakutsi eranskinak -attachments_label=Eranskinak -thumbs.title=Erakutsi koadro txikiak -thumbs_label=Koadro txikiak -findbar.title=Bilatu dokumentuan -findbar_label=Bilatu - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}}. orria -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}. orriaren koadro txikia - -# Find panel button title and messages -find_label=Bilatu: -find_previous.title=Bilatu esaldiaren aurreko parekatzea -find_previous_label=Aurrekoa -find_next.title=Bilatu esaldiaren hurrengo parekatzea -find_next_label=Hurrengoa -find_highlight=Nabarmendu guztia -find_match_case_label=Bat etorri maiuskulekin/minuskulekin -find_reached_top=Dokumentuaren hasierara heldu da, bukaeratik jarraitzen -find_reached_bottom=Dokumentuaren bukaerara heldu da, hasieratik jarraitzen -find_not_found=Esaldia ez da aurkitu - -# Error panel labels -error_more_info=Informazio gehiago -error_less_info=Informazio gutxiago -error_close=Itxi -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (eraikuntza: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mezua: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fitxategia: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Lerroa: {{line}} -rendering_error=Errorea gertatu da orria errendatzean. - -# Predefined zoom values -page_scale_width=Orriaren zabalera -page_scale_fit=Doitu orrira -page_scale_auto=Zoom automatikoa -page_scale_actual=Benetako tamaina -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent=%{{scale}} - -# Loading indicator messages -loading_error_indicator=Errorea -loading_error=Errorea gertatu da PDFa kargatzean. -invalid_file_error=PDF fitxategi baliogabe edo hondatua. -missing_file_error=PDF fitxategia falta da. -unexpected_response_error=Espero gabeko zerbitzariaren erantzuna. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} ohartarazpena] -password_label=Idatzi PDF fitxategi hau irekitzeko pasahitza. -password_invalid=Pasahitz baliogabea. Saiatu berriro mesedez. -password_ok=Ados -password_cancel=Utzi - -printing_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan. -printing_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko. -web_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili. -document_colors_disabled=PDF dokumentuek ez dute beraien koloreak erabiltzeko baimenik: 'Baimendu orriak beraien letra-tipoak aukeratzea' desaktibatuta dago nabigatzailean. diff --git a/public/pdfjs/web/locale/fa/viewer.properties b/public/pdfjs/web/locale/fa/viewer.properties deleted file mode 100644 index b9029e81..00000000 --- a/public/pdfjs/web/locale/fa/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=صÙØÙ‡Ù” قبلی -previous_label=قبلی -next.title=صÙØÙ‡Ù” بعدی -next_label=بعدی - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=صÙØÙ‡: -page_of=از {{pageCount}} - -zoom_out.title=کوچک‌نمایی -zoom_out_label=کوچک‌نمایی -zoom_in.title=بزرگ‌نمایی -zoom_in_label=بزرگ‌نمایی -zoom.title=زوم -presentation_mode.title=تغییر به Øالت ارائه -presentation_mode_label=Øالت ارائه -open_file.title=باز کردن پرونده -open_file_label=باز کردن -print.title=چاپ -print_label=چاپ -download.title=بارگیری -download_label=بارگیری -bookmark.title=نمای Ùعلی (Ú©Ù¾ÛŒ کن، یا در پنجرۀ دیگری نشان بده) -bookmark_label=نمای Ùعلی - -# Secondary toolbar and context menu -tools.title=ابزارها -tools_label=ابزارها -first_page.title=برو به اولین صÙØÙ‡ -first_page.label=برو یه اولین صÙØÙ‡ -first_page_label=برو به اولین صÙØÙ‡ -last_page.title=برو به آخرین صÙØÙ‡ -last_page.label=برو به آخرین صÙØÙ‡ -last_page_label=برو به آخرین صÙØÙ‡ -page_rotate_cw.title=چرخش ساعتگرد -page_rotate_cw.label=چرخش ساعتگرد -page_rotate_cw_label=چرخش ساعتگرد -page_rotate_ccw.title=چرخش پاد ساعتگرد -page_rotate_ccw.label=چرخش پاد ساعتگرد -page_rotate_ccw_label=چرخش پاد ساعتگرد - -hand_tool_enable.title=Ùعال سازی ابزار دست -hand_tool_enable_label=Ùعال سازی ابزار دست -hand_tool_disable.title=غیر‌Ùعال سازی ابزار دست -hand_tool_disable_label=غیر‌Ùعال سازی ابزار دست - -# Document properties dialog box -document_properties.title=خصوصیات سند... -document_properties_label=خصوصیات سند... -document_properties_file_name=نام Ùایل: -document_properties_file_size=Øجم پرونده: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} کیلوبایت ({{size_b}} بایت) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} مگابایت ({{size_b}} بایت) -document_properties_title=عنوان: -document_properties_author=نویسنده: -document_properties_subject=موضوع: -document_properties_keywords=کلیدواژه‌ها: -document_properties_creation_date=تاریخ ایجاد: -document_properties_modification_date=تاریخ ویرایش: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}ØŒ {{time}} -document_properties_creator=ایجاد کننده: -document_properties_producer=ایجاد کننده PDF: -document_properties_version=نسخه PDF: -document_properties_page_count=تعداد صÙØات: -document_properties_close=بستن - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=باز Ùˆ بسته کردن نوار کناری -toggle_sidebar_label=تغییرØالت نوارکناری -outline.title=نمایش Ø·Ø±Ø Ù†ÙˆØ´ØªØ§Ø± -outline_label=Ø·Ø±Ø Ù†ÙˆØ´ØªØ§Ø± -attachments.title=نمایش پیوست‌ها -attachments_label=پیوست‌ها -thumbs.title=نمایش تصاویر بندانگشتی -thumbs_label=تصاویر بندانگشتی -findbar.title=جستجو در سند -findbar_label=پیدا کردن - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=صÙØÙ‡ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=تصویر بند‌ انگشتی صÙØÙ‡ {{page}} - -# Find panel button title and messages -find_label=جستجو: -find_previous.title=پیدا کردن رخداد قبلی عبارت -find_previous_label=قبلی -find_next.title=پیدا کردن رخداد بعدی عبارت -find_next_label=بعدی -find_highlight=برجسته Ùˆ هایلایت کردن همه موارد -find_match_case_label=تطبیق Ú©ÙˆÚ†Ú©ÛŒ Ùˆ بزرگی Øرو٠-find_reached_top=به بالای صÙØÙ‡ رسیدیم، از پایین ادامه می‌دهیم -find_reached_bottom=به آخر صÙØÙ‡ رسیدیم، از بالا ادامه می‌دهیم -find_not_found=عبارت پیدا نشد - -# Error panel labels -error_more_info=اطلاعات بیشتر -error_less_info=اطلاعات کمتر -error_close=بستن -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=â€PDF.js ورژن{{version}} â€(ساخت: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=پیام: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=توده: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=پرونده: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=سطر: {{line}} -rendering_error=هنگام بارگیری صÙØÙ‡ خطایی رخ داد. - -# Predefined zoom values -page_scale_width=عرض صÙØÙ‡ -page_scale_fit=اندازه کردن صÙØÙ‡ -page_scale_auto=بزرگنمایی خودکار -page_scale_actual=اندازه واقعی‌ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=خطا -loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد. -invalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد. -missing_file_error=پرونده PDF یاÙت نشد. -unexpected_response_error=پاسخ پیش بینی نشده سرور - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=جهت باز کردن پرونده PDF گذرواژه را وارد نمائید. -password_invalid=گذرواژه نامعتبر. لطÙا مجددا تلاش کنید. -password_ok=تأیید -password_cancel=انصرا٠- -printing_not_supported=هشدار: قابلیت چاپ به‌طور کامل در این مرورگر پشتیبانی نمی‌شود. -printing_not_ready=اخطار: پرونده PDF بطور کامل بارگیری نشده Ùˆ امکان چاپ وجود ندارد. -web_fonts_disabled=Ùونت های تØت وب غیر Ùعال شده اند: امکان استÙاده از نمایش دهنده داخلی PDF وجود ندارد. -document_colors_disabled=Ùایلهای PDF نمیتوانند Ú©Ù‡ رنگ های خود را داشته باشند. لذا گزینه 'اجازه تغییر رنگ" در مرورگر غیر Ùعال شده است. diff --git a/public/pdfjs/web/locale/ff/viewer.properties b/public/pdfjs/web/locale/ff/viewer.properties deleted file mode 100644 index 5e9781a9..00000000 --- a/public/pdfjs/web/locale/ff/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Hello Æennungo -previous_label=ÆennuÉ—o -next.title=Hello faango -next_label=Yeeso - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Hello: -page_of=e nder {{pageCount}} - -zoom_out.title=Lonngo WoÉ—É—a -zoom_out_label=Lonngo WoÉ—É—a -zoom_in.title=Lonngo Ara -zoom_in_label=Lonngo Ara -zoom.title=Lonngo -presentation_mode.title=Faytu to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=Uddit Fiilde -open_file_label=Uddit -print.title=Winndito -print_label=Winndito -download.title=Aawto -download_label=Aawto -bookmark.title=Jiytol gonangol (natto walla uddit e henorde) -bookmark_label=Jiytol Gonangol - -# Secondary toolbar and context menu -tools.title=KuutorÉ—e -tools_label=KuutorÉ—e -first_page.title=Yah to hello adanngo -first_page.label=Yah to hello adanngo -first_page_label=Yah to hello adanngo -last_page.title=Yah to hello wattindiingo -last_page.label=Yah to hello wattindiingo -last_page_label=Yah to hello wattindiingo -page_rotate_cw.title=Yiiltu Faya Ñaamo -page_rotate_cw.label=Yiiltu Faya Ñaamo -page_rotate_cw_label=Yiiltu Faya Ñaamo -page_rotate_ccw.title=Yiiltu Faya Nano -page_rotate_ccw.label=Yiiltu Faya Nano -page_rotate_ccw_label=Yiiltu Faya Nano - -hand_tool_enable.title=Hurmin kuutorgal junngo -hand_tool_enable_label=Hurmin kuutorgal junngo -hand_tool_disable.title=DaaÆ´ kuutorgal junngo -hand_tool_disable_label=DaaÆ´ kuutorgal junngo - -# Document properties dialog box -document_properties.title=KeeroraaÉ—i Winndannde… -document_properties_label=KeeroraaÉ—i Winndannde… -document_properties_file_name=Innde fiilde: -document_properties_file_size=Æetol fiilde: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bite) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bite) -document_properties_title=Tiitoonde: -document_properties_author=BinnduÉ—o: -document_properties_subject=ToÉ“É“ere: -document_properties_keywords=Kelmekele jiytirÉ—e: -document_properties_creation_date=Ñalnde Sosaa: -document_properties_modification_date=Ñalnde Waylaa: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=CosÉ—o: -document_properties_producer=PaggiiÉ—o PDF: -document_properties_version=Yamre PDF: -document_properties_page_count=Limoore Kelle: -document_properties_close=Uddu - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toggilo Palal Sawndo -toggle_sidebar_label=Toggilo Palal Sawndo -outline.title=Hollu ToÉ“É“e Fiilannde -outline_label=ToÉ“É“e Fiilannde -attachments.title=Hollu ÆŠisanÉ—e -attachments_label=ÆŠisanÉ—e -thumbs.title=Hollu DooÉ“e -thumbs_label=DooÉ“e -findbar.title=Yiylo e fiilannde -findbar_label=Yiytu - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Hello {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=DooÉ“re Hello {{page}} - -# Find panel button title and messages -find_label=Yiytu: -find_previous.title=Yiylo cilol É“ennugol konngol ngol -find_previous_label=ÆennuÉ—o -find_next.title=Yiylo cilol garowol konngol ngol -find_next_label=Yeeso -find_highlight=Jalbin fof -find_match_case_label=JaaÉ“nu darnde -find_reached_top=HeÉ“ii fuÉ—É—orde fiilannde, jokku faya les -find_reached_bottom=HeÉ“ii hoore fiilannde, jokku faya les -find_not_found=Konngi njiyataa - -# Error panel labels -error_more_info=Æeydu Humpito -error_less_info=Ustu Humpito -error_close=Uddu -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Æatakuure: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fiilde: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Gorol: {{line}} -rendering_error=Juumre waÉ—ii tuma nde yoÅ‹kittoo hello. - -# Predefined zoom values -page_scale_width=Njaajeendi Hello -page_scale_fit=KeÆ´eendi Hello -page_scale_auto=Loongorde Jaajol -page_scale_actual=Æetol Jaati -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Juumre -loading_error=Juumre waÉ—ii tuma nde loowata PDF oo. -invalid_file_error=Fiilde PDF moÆ´Æ´aani walla jiibii. -missing_file_error=Fiilde PDF ena Å‹akki. -unexpected_response_error=Jaabtol sarworde tijjinooka. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Siiftannde] -password_label=Naatu finnde ngam uddite ndee fiilde PDF. -password_invalid=Finnde moÆ´Æ´aani. TiiÉ—no eto kadi. -password_ok=OK -password_cancel=Haaytu - -printing_not_supported=Reentino: Winnditagol tammbitaaka no feewi e ndee wanngorde. -printing_not_ready=Reentino: PDF oo loowaaki haa timmi ngam winnditagol. -web_fonts_disabled=Ponte geese ko daaÆ´aaÉ—e: horiima huutoraade ponte PDF coomtoraaÉ—e. -document_colors_disabled=PiilanÉ—e PDF njamiraaka yoo kuutoro goobuuji mum'en keeriiÉ—i: 'Yamir kello yoo kuutoro goobuuki keeriiÉ—i' koko daaÆ´aa e wanngorde ndee. diff --git a/public/pdfjs/web/locale/fi/viewer.properties b/public/pdfjs/web/locale/fi/viewer.properties deleted file mode 100644 index d64a0a88..00000000 --- a/public/pdfjs/web/locale/fi/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Edellinen sivu -previous_label=Edellinen -next.title=Seuraava sivu -next_label=Seuraava - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Sivu: -page_of=/ {{pageCount}} - -zoom_out.title=Loitonna -zoom_out_label=Loitonna -zoom_in.title=Lähennä -zoom_in_label=Lähennä -zoom.title=Suurennus -presentation_mode.title=Siirry esitystilaan -presentation_mode_label=Esitystila -open_file.title=Avaa tiedosto -open_file_label=Avaa -print.title=Tulosta -print_label=Tulosta -download.title=Lataa -download_label=Lataa -bookmark.title=Avoin ikkuna (kopioi tai avaa uuteen ikkunaan) -bookmark_label=Avoin ikkuna - -# Secondary toolbar and context menu -tools.title=Tools -tools_label=Tools -first_page.title=Siirry ensimmäiselle sivulle -first_page.label=Siirry ensimmäiselle sivulle -first_page_label=Siirry ensimmäiselle sivulle -last_page.title=Siirry viimeiselle sivulle -last_page.label=Siirry viimeiselle sivulle -last_page_label=Siirry viimeiselle sivulle -page_rotate_cw.title=Kierrä oikealle -page_rotate_cw.label=Kierrä oikealle -page_rotate_cw_label=Kierrä oikealle -page_rotate_ccw.title=Kierrä vasemmalle -page_rotate_ccw.label=Kierrä vasemmalle -page_rotate_ccw_label=Kierrä vasemmalle - -hand_tool_enable.title=Käytä käsityökalua -hand_tool_enable_label=Käytä käsityökalua -hand_tool_disable.title=Poista käsityökalu käytöstä -hand_tool_disable_label=Poista käsityökalu käytöstä - -# Document properties dialog box -document_properties.title=Dokumentin ominaisuudet… -document_properties_label=Dokumentin ominaisuudet… -document_properties_file_name=Tiedostonimi: -document_properties_file_size=Tiedoston koko: -document_properties_kb={{size_kb}} kt ({{size_b}} tavua) -document_properties_mb={{size_mb}} Mt ({{size_b}} tavua) -document_properties_title=Otsikko: -document_properties_author=Tekijä: -document_properties_subject=Aihe: -document_properties_keywords=Avainsanat: -document_properties_creation_date=Luomispäivämäärä: -document_properties_modification_date=Muokkauspäivämäärä: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Luoja: -document_properties_producer=PDF-tuottaja: -document_properties_version=PDF-versio: -document_properties_page_count=Sivujen määrä: -document_properties_close=Sulje - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Näytä/piilota sivupaneeli -toggle_sidebar_label=Näytä/piilota sivupaneeli -outline.title=Näytä dokumentin rakenne -outline_label=Dokumentin rakenne -attachments.title=Näytä liitteet -attachments_label=Liitteet -thumbs.title=Näytä pienoiskuvat -thumbs_label=Pienoiskuvat -findbar.title=Etsi dokumentista -findbar_label=Etsi - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Sivu {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Pienoiskuva sivusta {{page}} - -# Find panel button title and messages -find_label=Etsi: -find_previous.title=Etsi hakusanan edellinen osuma -find_previous_label=Edellinen -find_next.title=Etsi hakusanan seuraava osuma -find_next_label=Seuraava -find_highlight=Korosta kaikki -find_match_case_label=Huomioi kirjainkoko -find_reached_top=Päästiin dokumentin alkuun, jatketaan lopusta -find_reached_bottom=Päästiin dokumentin loppuun, continued from top -find_not_found=Hakusanaa ei löytynyt - -# Error panel labels -error_more_info=Lisätietoja -error_less_info=Lisätietoja -error_close=Sulje -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (kooste: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Virheilmoitus: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pino: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Tiedosto: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rivi: {{line}} -rendering_error=Tapahtui virhe piirrettäessä sivua. - -# Predefined zoom values -page_scale_width=Sivun leveys -page_scale_fit=Koko sivu -page_scale_auto=Automaattinen suurennus -page_scale_actual=Todellinen koko -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % - -# Loading indicator messages -loading_error_indicator=Virhe -loading_error=Tapahtui virhe ladattaessa PDF-tiedostoa. -invalid_file_error=Virheellinen tai vioittunut PDF-tiedosto. -missing_file_error=Puuttuva PDF-tiedosto. -unexpected_response_error=Odottamaton vastaus palvelimelta. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=Kirjoita PDF-tiedoston salasana. -password_invalid=Virheellinen salasana. Yritä uudestaan. -password_ok=OK -password_cancel=Peruuta - -printing_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja. -printing_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa. -web_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja PDF-kirjasinlajeja. -document_colors_disabled=PDF-dokumenttien ei ole sallittua käyttää omia värejään: Asetusta "Sivut saavat käyttää omia värejään oletusten sijaan" ei ole valittu selaimen asetuksissa. diff --git a/public/pdfjs/web/locale/fr/viewer.properties b/public/pdfjs/web/locale/fr/viewer.properties deleted file mode 100644 index a65e06d7..00000000 --- a/public/pdfjs/web/locale/fr/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Page précédente -previous_label=Précédent -next.title=Page suivante -next_label=Suivant - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Page : -page_of=sur {{pageCount}} - -zoom_out.title=Zoom arrière -zoom_out_label=Zoom arrière -zoom_in.title=Zoom avant -zoom_in_label=Zoom avant -zoom.title=Zoom -presentation_mode.title=Basculer en mode présentation -presentation_mode_label=Mode présentation -open_file.title=Ouvrir le fichier -open_file_label=Ouvrir le fichier -print.title=Imprimer -print_label=Imprimer -download.title=Télécharger -download_label=Télécharger -bookmark.title=Affichage courant (copier ou ouvrir dans une nouvelle fenêtre) -bookmark_label=Affichage actuel - -# Secondary toolbar and context menu -tools.title=Outils -tools_label=Outils -first_page.title=Aller à la première page -first_page.label=Aller à la première page -first_page_label=Aller à la première page -last_page.title=Aller à la dernière page -last_page.label=Aller à la dernière page -last_page_label=Aller à la dernière page -page_rotate_cw.title=Rotation horaire -page_rotate_cw.label=Rotation horaire -page_rotate_cw_label=Rotation horaire -page_rotate_ccw.title=Rotation anti-horaire -page_rotate_ccw.label=Rotation anti-horaire -page_rotate_ccw_label=Rotation anti-horaire - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Afficher/Masquer le panneau latéral -toggle_sidebar_label=Afficher/Masquer le panneau latéral -outline.title=Afficher les signets -outline_label=Signets du document -attachments.title=Afficher les pièces jointes -attachments_label=Pièces jointes -thumbs.title=Afficher les vignettes -thumbs_label=Vignettes -findbar.title=Rechercher dans le document -findbar_label=Rechercher - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Page {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Vignette de la page {{page}} - -hand_tool_enable.title=Activer l'outil main -hand_tool_enable_label=Activer l'outil main -hand_tool_disable.title=Désactiver l'outil main -hand_tool_disable_label=Désactiver l'outil main - -# Document properties dialog box -document_properties.title=Propriétés du document… -document_properties_label=Propriétés du document… -document_properties_file_name=Nom du fichier : -document_properties_file_size=Taille du fichier : -document_properties_kb={{size_kb}} Ko ({{size_b}} octets) -document_properties_mb={{size_mb}} Mo ({{size_b}} octets) -document_properties_title=Titre : -document_properties_author=Auteur : -document_properties_subject=Sujet : -document_properties_keywords=Mots-clés : -document_properties_creation_date=Date de création : -document_properties_modification_date=Modifié le : -document_properties_date_string={{date}} à {{time}} -document_properties_creator=Créé par : -document_properties_producer=Outil de conversion PDF : -document_properties_version=Version PDF : -document_properties_page_count=Nombre de pages : -document_properties_close=Fermer - -# Find panel button title and messages -find_label=Rechercher : -find_previous.title=Trouver l'occurrence précédente de la phrase -find_previous_label=Précédent -find_next.title=Trouver la prochaine occurrence de la phrase -find_next_label=Suivant -find_highlight=Tout surligner -find_match_case_label=Respecter la casse -find_reached_top=Haut de la page atteint, poursuite depuis la fin -find_reached_bottom=Bas de la page atteint, poursuite au début -find_not_found=Phrase introuvable - -# Error panel labels -error_more_info=Plus d'informations -error_less_info=Moins d'informations -error_close=Fermer -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (identifiant de compilation : {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message : {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pile : {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fichier : {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Ligne : {{line}} -rendering_error=Une erreur s'est produite lors de l'affichage de la page. - -# Predefined zoom values -page_scale_width=Pleine largeur -page_scale_fit=Page entière -page_scale_auto=Zoom automatique -page_scale_actual=Taille réelle -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % - -# Loading indicator messages -loading_error_indicator=Erreur -loading_error=Une erreur s'est produite lors du chargement du fichier PDF. -invalid_file_error=Fichier PDF invalide ou corrompu. -missing_file_error=Fichier PDF manquant. -unexpected_response_error=Réponse inattendue du serveur. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Annotation {{type}}] -password_label=Veuillez saisir le mot de passe pour ouvrir ce fichier PDF. -password_invalid=Mot de passe incorrect. Veuillez réessayer. -password_ok=OK -password_cancel=Annuler - -printing_not_supported=Attention : l'impression n'est pas totalement prise en charge par ce navigateur. -printing_not_ready=Attention : le PDF n'est pas entièrement chargé pour pouvoir l'imprimer. -web_fonts_disabled=Les polices web sont désactivées : impossible d'utiliser les polices intégrées au PDF. -document_colors_disabled=Les documents PDF ne peuvent pas utiliser leurs propres couleurs : « Autoriser les pages web à utiliser leurs propres couleurs » est désactivé dans le navigateur. diff --git a/public/pdfjs/web/locale/fy-NL/viewer.properties b/public/pdfjs/web/locale/fy-NL/viewer.properties deleted file mode 100644 index 4a0f747c..00000000 --- a/public/pdfjs/web/locale/fy-NL/viewer.properties +++ /dev/null @@ -1,179 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Foarige side -previous_label=Foarige -next.title=Folgjende side -next_label=Folgjende - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=side: -page_of=fan {{pageCount}} - -zoom_out.title=Utzoome -zoom_out_label=Utzoome -zoom_in.title=Ynzoome -zoom_in_label=Ynzoome -zoom.title=Zoome -print.title=Ofdrukke -print_label=Ofdrukke -presentation_mode.title=Wikselje nei presintaasjemoadus -presentation_mode_label=Presintaasjemoadus -open_file.title=Bestân iepenje -open_file_label=Iepenje -download.title=Ynlade -download_label=Ynlade -bookmark.title=Aktuele finster (kopiearje of iepenje yn nij finster) -bookmark_label=Aktuele finster - -# Secondary toolbar and context menu -tools.title=Ark -tools_label=Ark -first_page.title=Gean nei earste side -first_page.label=Gean nei earste side -first_page_label=Gean nei earste side -last_page.title=Gean nei lêste side -last_page.label=Gean nei lêste side -last_page_label=Gean nei lêste side -page_rotate_cw.title=Rjochtsom draaie -page_rotate_cw.label=Rjochtsom draaie -page_rotate_cw_label=Rjochtsom draaie -page_rotate_ccw.title=Linksom draaie -page_rotate_ccw.label=Linksom draaie -page_rotate_ccw_label=Linksom draaie - -hand_tool_enable.title=Hânark ynskeakelje -hand_tool_enable_label=Hânark ynskeakelje -hand_tool_disable.title=Hânark úyskeakelje -hand_tool_disable_label=Hânark úyskeakelje - -# Document properties dialog box -document_properties.title=Dokuminteigenskippen… -document_properties_label=Dokuminteigenskippen… -document_properties_file_name=Bestânsnamme: -document_properties_file_size=Bestânsgrutte: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titel: -document_properties_author=Auteur: -document_properties_subject=Underwerp: -document_properties_keywords=Kaaiwurden: -document_properties_creation_date=Oanmaakdatum: -document_properties_modification_date=Bewurkingsdatum: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Makker: -document_properties_producer=PDF-makker: -document_properties_version=PDF-ferzje: -document_properties_page_count=Siden: -document_properties_close=Slute - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Sidebalke yn-/útskeakelje -toggle_sidebar_label=Sidebalke yn-/útskeakelje -outline.title=Dokumint ynhâldsopjefte toane -outline_label=Dokumint ynhâldsopjefte -attachments.title=Bylagen toane -attachments_label=Bylagen -thumbs.title=Foarbylden toane -thumbs_label=Foarbylden -findbar.title=Sykje yn dokumint -findbar_label=Sykje - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Side {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Foarbyld fan side {{page}} - -# Context menu -first_page.label=Nei earste side gean -last_page.label=Nei lêste side gean -page_rotate_cw.label=Rjochtsom draaie -page_rotate_ccw.label=Linksom draaie - -# Find panel button title and messages -find_label=Sykje: -find_previous.title=It foarige foarkommen fan de tekst sykje -find_previous_label=Foarige -find_next.title=It folgjende foarkommen fan de tekst sykje -find_next_label=Folgjende -find_highlight=Alles markearje -find_match_case_label=Haadlettergefoelich -find_reached_top=Boppekant fan dokumint berikt, trochgien fanôf ûnder -find_reached_bottom=Ein fan dokumint berikt, trochgien fanôf boppe -find_not_found=Tekst net fûn - -# Error panel labels -error_more_info=Mear ynformaasje -error_less_info=Minder ynformaasje -error_close=Slute -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js f{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Berjocht: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Bestân: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rigel: {{line}} -rendering_error=Der is in flater bard by it renderjen fan de side. - -# Predefined zoom values -page_scale_width=Sidebreedte -page_scale_fit=Hiele side -page_scale_auto=Automatysk zoome -page_scale_actual=Wurklike grutte -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Flater -loading_error=Der is in flater bard by it laden fan de PDF. -invalid_file_error=Ynfalide of korruptearre PDF-bestân. -missing_file_error=PDF-bestân ûntbrekt. -unexpected_response_error=Unferwacht tsjinnerantwurd. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-annotaasje] -password_label=Jou it wachtwurd om dit PDF-bestân te iepenjen. -password_invalid=Ferkeard wachtwurd. Probearje opnij. -password_ok=OK -password_cancel=Annulearje - -printing_not_supported=Warning: Printen is net folslein stipe troch dizze browser. -printing_not_ready=Warning: PDF is net folslein laden om ôf te drukken. -web_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik. -document_colors_disabled=PDF-dokuminten binne net tastien om har eigen kleuren te brûken: ‘Siden tastean har eigen kleuren te kiezen’ is útskeakele yn de browser. diff --git a/public/pdfjs/web/locale/ga-IE/viewer.properties b/public/pdfjs/web/locale/ga-IE/viewer.properties deleted file mode 100644 index 0a638bdc..00000000 --- a/public/pdfjs/web/locale/ga-IE/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=An Leathanach Roimhe Seo -previous_label=Roimhe Seo -next.title=An Chéad Leathanach Eile -next_label=Ar Aghaidh - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Leathanach: -page_of=as {{pageCount}} - -zoom_out.title=Súmáil Amach -zoom_out_label=Súmáil Amach -zoom_in.title=Súmáil Isteach -zoom_in_label=Súmáil Isteach -zoom.title=Súmáil -presentation_mode.title=Úsáid an Mód Láithreoireachta -presentation_mode_label=Mód Láithreoireachta -open_file.title=Oscail Comhad -open_file_label=Oscail -print.title=Priontáil -print_label=Priontáil -download.title=Ãosluchtaigh -download_label=Ãosluchtaigh -bookmark.title=An t-amharc reatha (cóipeáil nó oscail i bhfuinneog nua) -bookmark_label=An tAmharc Reatha - -# Secondary toolbar and context menu -tools.title=Uirlisà -tools_label=Uirlisà -first_page.title=Go dtà an chéad leathanach -first_page.label=Go dtà an chéad leathanach -first_page_label=Go dtà an chéad leathanach -last_page.title=Go dtà an leathanach deiridh -last_page.label=Go dtà an leathanach deiridh -last_page_label=Go dtà an leathanach deiridh -page_rotate_cw.title=Rothlaigh ar deiseal -page_rotate_cw.label=Rothlaigh ar deiseal -page_rotate_cw_label=Rothlaigh ar deiseal -page_rotate_ccw.title=Rothlaigh ar tuathal -page_rotate_ccw.label=Rothlaigh ar tuathal -page_rotate_ccw_label=Rothlaigh ar tuathal - -hand_tool_enable.title=Cumasaigh uirlis láimhe -hand_tool_enable_label=Cumasaigh uirlis láimhe -hand_tool_disable.title=DÃchumasaigh uirlis láimhe -hand_tool_disable_label=DÃchumasaigh uirlis láimhe - -# Document properties dialog box -document_properties.title=AirÃonna na Cáipéise… -document_properties_label=AirÃonna na Cáipéise… -document_properties_file_name=Ainm an chomhaid: -document_properties_file_size=Méid an chomhaid: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kB ({{size_b}} beart) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} beart) -document_properties_title=Teideal: -document_properties_author=Údar: -document_properties_subject=Ãbhar: -document_properties_keywords=Eochairfhocail: -document_properties_creation_date=Dáta Cruthaithe: -document_properties_modification_date=Dáta Athraithe: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Cruthaitheoir: -document_properties_producer=Cruthaitheoir an PDF: -document_properties_version=Leagan PDF: -document_properties_page_count=LÃon Leathanach: -document_properties_close=Dún - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Scoránaigh an Barra Taoibh -toggle_sidebar_label=Scoránaigh an Barra Taoibh -outline.title=Taispeáin Creatlach na Cáipéise -outline_label=Creatlach na Cáipéise -attachments.title=Taispeáin Iatáin -attachments_label=Iatáin -thumbs.title=Taispeáin Mionsamhlacha -thumbs_label=Mionsamhlacha -findbar.title=Aimsigh sa Cháipéis -findbar_label=Aimsigh - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Leathanach {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Mionsamhail Leathanaigh {{page}} - -# Find panel button title and messages -find_label=Aimsigh: -find_previous.title=Aimsigh an sampla roimhe seo den nath seo -find_previous_label=Roimhe seo -find_next.title=Aimsigh an chéad sampla eile den nath sin -find_next_label=Ar aghaidh -find_highlight=Aibhsigh uile -find_match_case_label=CásÃogair -find_reached_top=Ag barr na cáipéise, ag leanúint ón mbun -find_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr -find_not_found=AbairtÃn gan aimsiú - -# Error panel labels -error_more_info=Tuilleadh Eolais -error_less_info=NÃos Lú Eolais -error_close=Dún -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Teachtaireacht: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Cruach: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Comhad: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=LÃne: {{line}} -rendering_error=Tharla earráid agus an leathanach á leagan amach. - -# Predefined zoom values -page_scale_width=Leithead Leathanaigh -page_scale_fit=Laghdaigh go dtà an Leathanach -page_scale_auto=Súmáil UathoibrÃoch -page_scale_actual=FÃormhéid -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Earráid -loading_error=Tharla earráid agus an cháipéis PDF á luchtú. -invalid_file_error=Comhad neamhbhailà nó truaillithe PDF. -missing_file_error=Comhad PDF ar iarraidh. -unexpected_response_error=Freagra ón bhfreastalaà gan súil leis. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anótáil {{type}}] -password_label=Cuir an focal faire isteach chun an comhad PDF seo a oscailt. -password_invalid=Focal faire mÃcheart. Déan iarracht eile. -password_ok=OK -password_cancel=Cealaigh - -printing_not_supported=Rabhadh: Nà thacaÃonn an brabhsálaà le priontáil go hiomlán. -printing_not_ready=Rabhadh: Nà féidir an PDF a phriontáil go dtà go mbeidh an cháipéis iomlán luchtaithe. -web_fonts_disabled=Tá clófhoirne Gréasáin dÃchumasaithe: nà féidir clófhoirne leabaithe PDF a úsáid. -document_colors_disabled=NÃl cead ag cáipéisà PDF a ndathanna féin a roghnú; tá 'Tabhair cead do leathanaigh a ndathanna féin a roghnú' dÃchumasaithe sa mbrabhsálaÃ. diff --git a/public/pdfjs/web/locale/gd/viewer.properties b/public/pdfjs/web/locale/gd/viewer.properties deleted file mode 100644 index 5826d2e7..00000000 --- a/public/pdfjs/web/locale/gd/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=An duilleag roimhe -previous_label=Air ais -next.title=An ath-dhuilleag -next_label=Air adhart - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Duilleag: -page_of=à {{pageCount}} - -zoom_out.title=Sùm a-mach -zoom_out_label=Sùm a-mach -zoom_in.title=Sùm a-steach -zoom_in_label=Sùm a-steach -zoom.title=Sùm -presentation_mode.title=Gearr leum dhan mhodh taisbeanaidh -presentation_mode_label=Am modh taisbeanaidh -open_file.title=Fosgail faidhle -open_file_label=Fosgail -print.title=Clò-bhuail -print_label=Clò-bhuail -download.title=Luchdaich a-nuas -download_label=Luchdaich a-nuas -bookmark.title=An sealladh là ithreach (dèan lethbhreac no fosgail e ann an uinneag ùr) -bookmark_label=An sealladh là ithreach - -# Secondary toolbar and context menu -tools.title=Innealan -tools_label=Innealan -first_page.title=Rach gun chiad duilleag -first_page.label=Rach gun chiad duilleag -first_page_label=Rach gun chiad duilleag -last_page.title=Rach gun duilleag mu dheireadh -last_page.label=Rach gun duilleag mu dheireadh -last_page_label=Rach gun duilleag mu dheireadh -page_rotate_cw.title=Cuairtich gu deiseil -page_rotate_cw.label=Cuairtich gu deiseil -page_rotate_cw_label=Cuairtich gu deiseil -page_rotate_ccw.title=Cuairtich gu tuathail -page_rotate_ccw.label=Cuairtich gu tuathail -page_rotate_ccw_label=Cuairtich gu tuathail - -hand_tool_enable.title=Cuir inneal na là imhe an comas -hand_tool_enable_label=Cuir inneal na là imhe an comas -hand_tool_disable.title=Cuir inneal na là imhe à comas -hand_tool_disable_label=Cuir à comas inneal na là imhe - -# Document properties dialog box -document_properties.title=Roghainnean na sgrìobhainne… -document_properties_label=Roghainnean na sgrìobhainne… -document_properties_file_name=Ainm an fhaidhle: -document_properties_file_size=Meud an fhaidhle: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Tiotal: -document_properties_author=Ùghdar: -document_properties_subject=Cuspair: -document_properties_keywords=Faclan-luirg: -document_properties_creation_date=Latha a chruthachaidh: -document_properties_modification_date=Latha atharrachaidh: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Cruthadair: -document_properties_producer=Saothraiche a' PDF: -document_properties_version=Tionndadh a' PDF: -document_properties_page_count=Àireamh de dhuilleagan: -document_properties_close=Dùin - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Toglaich am bà r-taoibh -toggle_sidebar_label=Toglaich am bà r-taoibh -outline.title=Seall an sgrìobhainn far loidhne -outline_label=Oir-loidhne na sgrìobhainne -attachments.title=Seall na ceanglachain -attachments_label=Ceanglachain -thumbs.title=Seall na dealbhagan -thumbs_label=Dealbhagan -findbar.title=Lorg san sgrìobhainn -findbar_label=Lorg - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Duilleag a {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Dealbhag duilleag a {{page}} - -# Find panel button title and messages -find_label=Lorg: -find_previous.title=Lorg là thair roimhe na h-abairt seo -find_previous_label=Air ais -find_next.title=Lorg ath-là thair na h-abairt seo -find_next_label=Air adhart -find_highlight=Soillsich a h-uile -find_match_case_label=Aire do litrichean mòra is beaga -find_reached_top=Rà inig sinn barr na duilleige, a' leantainn air adhart o bhonn na duilleige -find_reached_bottom=Rà inig sinn bonn na duilleige, a' leantainn air adhart o bharr na duilleige -find_not_found=Cha deach an abairt a lorg - -# Error panel labels -error_more_info=Barrachd fiosrachaidh -error_less_info=Nas lugha de dh'fhiosrachadh -error_close=Dùin -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Teachdaireachd: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stac: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Faidhle: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Loidhne: {{line}} -rendering_error=Thachair mearachd rè reandaradh na duilleige. - -# Predefined zoom values -page_scale_width=Leud na duilleige -page_scale_fit=Freagair ri meud na duilleige -page_scale_auto=Sùm fèin-obrachail -page_scale_actual=Am fìor-mheud -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Mearachd -loading_error=Thachair mearachd rè luchdadh a' PDF. -invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte. -missing_file_error=Faidhle PDF a tha a dhìth. -unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Nòtachadh {{type}}] -password_label=Cuir a-steach am facal-faire gus am faidhle PDF seo fhosgladh. -password_invalid=Tha am facal-faire cearr. Nach fheuch thu ris a-rithist? -password_ok=Ceart ma-tha -password_cancel=Sguir dheth - -printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur là n-taic ri clò-bhualadh. -printing_not_ready=Rabhadh: Cha deach am PDF a luchdadh gu tur airson clò-bhualadh. -web_fonts_disabled=Tha cruthan-clò lìn à comas: Chan urrainn dhuinn cruthan-clò PDF leabaichte a chleachdadh. -document_colors_disabled=Chan fhaod sgrìobhainnean PDF na dathan aca fhèin a chleachdadh: Tha "Leig le duilleagan na dathan aca fhèin a chleachdadh" à comas sa bhrabhsair. diff --git a/public/pdfjs/web/locale/gl/viewer.properties b/public/pdfjs/web/locale/gl/viewer.properties deleted file mode 100644 index 0acc4f78..00000000 --- a/public/pdfjs/web/locale/gl/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Páxina anterior -previous_label=Anterior -next.title=Seguinte páxina -next_label=Seguinte - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Páxina: -page_of=de {{pageCount}} - -zoom_out.title=Reducir -zoom_out_label=Reducir -zoom_in.title=Ampliar -zoom_in_label=Ampliar -zoom.title=Zoom -presentation_mode.title=Cambiar ao modo presentación -presentation_mode_label=Modo presentación -open_file.title=Abrir ficheiro -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Descargar -download_label=Descargar -bookmark.title=Vista actual (copiar ou abrir nunha nova xanela) -bookmark_label=Vista actual - -# Secondary toolbar and context menu -tools.title=Ferramentas -tools_label=Ferramentas -first_page.title=Ir á primeira páxina -first_page.label=Ir á primeira páxina -first_page_label=Ir á primeira páxina -last_page.title=Ir á última páxina -last_page.label=Ir á última páxina -last_page_label=Ir á última páxina -page_rotate_cw.title=Rotar no sentido das agullas do reloxo -page_rotate_cw.label=Rotar no sentido das agullas do reloxo -page_rotate_cw_label=Rotar no sentido das agullas do reloxo -page_rotate_ccw.title=Rotar no sentido contrario ás agullas do reloxo -page_rotate_ccw.label=Rotar no sentido contrario ás agullas do reloxo -page_rotate_ccw_label=Rotar no sentido contrario ás agullas do reloxo - -hand_tool_enable.title=Activar ferramenta man -hand_tool_enable_label=Activar ferramenta man -hand_tool_disable.title=Desactivar ferramenta man -hand_tool_disable_label=Desactivar ferramenta man - -# Document properties dialog box -document_properties.title=Propiedades do documento… -document_properties_label=Propiedades do documento… -document_properties_file_name=Nome do ficheiro: -document_properties_file_size=Tamaño do ficheiro: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=TÃtulo: -document_properties_author=Autor: -document_properties_subject=Asunto: -document_properties_keywords=Palabras clave: -document_properties_creation_date=Data de creación: -document_properties_modification_date=Data de modificación: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creado por: -document_properties_producer=Xenerador do PDF: -document_properties_version=Versión de PDF: -document_properties_page_count=Número de páxinas: -document_properties_close=Pechar - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Amosar/agochar a barra lateral -toggle_sidebar_label=Amosar/agochar a barra lateral -outline.title=Amosar esquema do documento -outline_label=Esquema do documento -attachments.title=Amosar anexos -attachments_label=Anexos -thumbs.title=Amosar miniaturas -thumbs_label=Miniaturas -findbar.title=Atopar no documento -findbar_label=Atopar - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Páxina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura da páxina {{page}} - -# Find panel button title and messages -find_label=Atopar: -find_previous.title=Atopar a anterior aparición da frase -find_previous_label=Anterior -find_next.title=Atopar a seguinte aparición da frase -find_next_label=Seguinte -find_highlight=Realzar todo -find_match_case_label=Diferenciar maiúsculas de minúsculas -find_reached_top=Chegouse ao inicio do documento, continuar desde o final -find_reached_bottom=Chegouse ao final do documento, continuar desde o inicio -find_not_found=Non se atopou a frase - -# Error panel labels -error_more_info=Máis información -error_less_info=Menos información -error_close=Pechar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (Identificador da compilación: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensaxe: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ficheiro: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Liña: {{line}} -rendering_error=Produciuse un erro ao representar a páxina. - -# Predefined zoom values -page_scale_width=Largura da páxina -page_scale_fit=Axuste de páxina -page_scale_auto=Zoom automático -page_scale_actual=Tamaño actual -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Erro -loading_error=Produciuse un erro ao cargar o PDF. -invalid_file_error=Ficheiro PDF danado ou incorrecto. -missing_file_error=Falta o ficheiro PDF. -unexpected_response_error=Resposta inesperada do servidor. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotación {{type}}] -password_label=Escriba o contrasinal para abrir este ficheiro PDF. -password_invalid=Contrasinal incorrecto. Tente de novo. -password_ok=Aceptar -password_cancel=Cancelar - -printing_not_supported=Aviso: A impresión non é compatÃbel de todo con este navegador. -printing_not_ready=Aviso: O PDF non se cargou completamente para imprimirse. -web_fonts_disabled=Desactiváronse as fontes web: foi imposÃbel usar as fontes incrustadas no PDF. -document_colors_disabled=Non se permite que os documentos PDF usen as súas propias cores: «Permitir que as páxinas escollan as súas propias cores» está desactivado no navegador. diff --git a/public/pdfjs/web/locale/gu-IN/viewer.properties b/public/pdfjs/web/locale/gu-IN/viewer.properties deleted file mode 100644 index e0d371ef..00000000 --- a/public/pdfjs/web/locale/gu-IN/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=પહેલાનૠપાનà«àª‚ -previous_label=પહેલાનૠ-next.title=આગળનૠપાનà«àª‚ -next_label=આગળનà«àª‚ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=પાનà«àª‚: -page_of={{pageCount}} નà«àª‚ - -zoom_out.title=મોટૠકરો -zoom_out_label=મોટૠકરો -zoom_in.title=નાનà«àª‚ કરો -zoom_in_label=નાનà«àª‚ કરો -zoom.title=નાનà«àª‚ મોટૠકરો -presentation_mode.title=રજૂઆત સà«àª¥àª¿àª¤àª¿àª®àª¾àª‚ જાવ -presentation_mode_label=રજૂઆત સà«àª¥àª¿àª¤àª¿ -open_file.title=ફાઇલ ખોલો -open_file_label=ખોલો -print.title=છાપો -print_label=છારો -download.title=ડાઉનલોડ -download_label=ડાઉનલોડ -bookmark.title=વરà«àª¤àª®àª¾àª¨ દૃશà«àª¯ (નવી વિનà«àª¡à«‹àª®àª¾àª‚ નકલ કરો અથવા ખોલો) -bookmark_label=વરà«àª¤àª®àª¾àª¨ દૃશà«àª¯ - -# Secondary toolbar and context menu -tools.title=સાધનો -tools_label=સાધનો -first_page.label=પહેલાં પાનામાં જાવ -first_page_label=પà«àª°àª¥àª® પાનાં પર જાવ -last_page.label=છેલà«àª²àª¾ પાનામાં જાવ -last_page_label=છેલà«àª²àª¾ પાનાં પર જાવ -page_rotate_cw.label=ઘડિયાળનાં કાંટાની જેમ ફેરવો -page_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો -page_rotate_ccw.label=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો -page_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરà«àª¦à«àª¦ ફેરવો - -hand_tool_enable.title=હાથનાં સાધનને સકà«àª°àª¿àª¯ કરો -hand_tool_enable_label=હાથનાં સાધનને સકà«àª°àª¿àª¯ કરો -hand_tool_disable.title=હાથનાં સાધનને નિષà«àª•à«àª°àª¿àª¯ કરો -hand_tool_disable_label=હાથનાં સાધનને નિષà«àª•à«àª°àª¿àª¯ કરો - -# Document properties dialog box -document_properties.title=દસà«àª¤àª¾àªµà«‡àªœ ગà«àª£àª§àª°à«àª®à«‹â€¦ -document_properties_label=દસà«àª¤àª¾àªµà«‡àªœ ગà«àª£àª§àª°à«àª®à«‹â€¦ -document_properties_file_name=ફાઇલ નામ: -document_properties_file_size=ફાઇલ માપ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} બાઇટ) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} બાઇટ) -document_properties_title=શીરà«àª·àª•: -document_properties_author=લેખક: -document_properties_subject=વિષય: -document_properties_keywords=કિવરà«àª¡: -document_properties_creation_date=નિરà«àª®àª¾àª£ તારીખ: -document_properties_modification_date=ફેરફાર તારીખ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=નિરà«àª®àª¾àª¤àª¾: -document_properties_producer=PDF નિરà«àª®àª¾àª¤àª¾: -document_properties_version=PDF આવૃતà«àª¤àª¿: -document_properties_page_count=પાનાં ગણતરી: -document_properties_close=બંધ કરો - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ટૉગલ બાજà«àªªàªŸà«àªŸà«€ -toggle_sidebar_label=ટૉગલ બાજà«àªªàªŸà«àªŸà«€ -outline.title=દસà«àª¤àª¾àªµà«‡àªœ રૂપરેખા બતાવો -outline_label=દસà«àª¤àª¾àªµà«‡àªœ રૂપરેખા -attachments.title=જોડાણોને બતાવો -attachments_label=જોડાણો -thumbs.title=થંબનેલà«àª¸ બતાવો -thumbs_label=થંબનેલà«àª¸ -findbar.title=દસà«àª¤àª¾àªµà«‡àªœàª®àª¾àª‚ શોધો -findbar_label=શોધો - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=પાનà«àª‚ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=પાનાં {{page}} નà«àª‚ થંબનેલà«àª¸ - -# Find panel button title and messages -find_label=શોધો: -find_previous.title=શબà«àª¦àª¸àª®à«‚હની પાછલી ઘટનાને શોધો -find_previous_label=પહેલાંનૠ-find_next.title=શબà«àª¦àª¸àª®à«‚હની આગળની ઘટનાને શોધો -find_next_label=આગળનà«àª‚ -find_highlight=બધૠપà«àª°àª•àª¾àª¶àª¿àª¤ કરો -find_match_case_label=કેસ બંધબેસાડો -find_reached_top=દસà«àª¤àª¾àªµà«‡àªœàª¨àª¾àª‚ ટોચે પહોંચી ગયા, તળિયેથી ચાલૠકરેલ હતૠ-find_reached_bottom=દસà«àª¤àª¾àªµà«‡àªœàª¨àª¾àª‚ અંતે પહોંચી ગયા, ઉપરથી ચાલૠકરેલ હતૠ-find_not_found=શબà«àª¦àª¸àª®à«‚હ મળà«àª¯à« નથી - -# Error panel labels -error_more_info=વધારે જાણકારી -error_less_info=ઓછી જાણકારી -error_close=બંધ કરો -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=સંદેશો: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=સà«àªŸà«‡àª•: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ફાઇલ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=વાકà«àª¯: {{line}} -rendering_error=àªà«‚લ ઉદà«àªàªµà«€ જà«àª¯àª¾àª°à«‡ પાનાંનૠરેનà«àª¡ કરી રહà«àª¯àª¾ હોય. - -# Predefined zoom values -page_scale_width=પાનાની પહોળાઇ -page_scale_fit=પાનà«àª‚ બંધબેસતૠ-page_scale_auto=આપમેળે નાનà«àª‚મોટૠકરો -page_scale_actual=ચોકà«àª•àª¸ માપ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=àªà«‚લ -loading_error=àªà«‚લ ઉદà«àªàªµà«€ જà«àª¯àª¾àª°à«‡ PDF ને લાવી રહà«àª¯àª¾ હોય. -invalid_file_error=અયોગà«àª¯ અથવા àªàª¾àª‚ગેલ PDF ફાઇલ. -missing_file_error=ગà«àª® થયેલ PDF ફાઇલ. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=આ PDF ફાઇલને ખોલવા પાસવરà«àª¡àª¨à«‡ દાખલ કરો. -password_invalid=અયોગà«àª¯ પાસવરà«àª¡. મહેરબાની કરીને ફરી પà«àª°àª¯àª¤à«àª¨ કરો. -password_ok=બરાબર -password_cancel=રદ કરો - -printing_not_supported=ચેતવણી: છાપવાનà«àª‚ આ બà«àª°àª¾àª‰àªàª° દà«àª¦àª¾àª°àª¾ સંપૂરà«àª£àªªàª£à«‡ આધારàªà«‚ત નથી. -printing_not_ready=Warning: PDF ઠછાપવા માટે સંપૂરà«àª£àªªàª£à«‡ લાવેલ છે. -web_fonts_disabled=વેબ ફોનà«àªŸ નિષà«àª•à«àª°àª¿àª¯ થયેલ છે: àªàª®à«àª¬à«‡àª¡ થયેલ PDF ફોનà«àªŸàª¨à«‡ વાપરવાનà«àª‚ અસમરà«àª¥. -document_colors_disabled=PDF દસà«àª¤àª¾àªµà«‡àªœà«‹ તેનાં પોતાના રંગોને વાપરવા પરવાનગી આપતા નથી: 'તેનાં પોતાનાં રંગોને પસંદ કરવા માટે પાનાંને પરવાનગી આપો' બà«àª°àª¾àª‰àªàª°àª®àª¾àª‚ નિષà«àª•à«àª°àª¿àª¯ થયેલ છે. diff --git a/public/pdfjs/web/locale/he/viewer.properties b/public/pdfjs/web/locale/he/viewer.properties deleted file mode 100644 index 10f1177e..00000000 --- a/public/pdfjs/web/locale/he/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=דף ×§×•×“× -previous_label=×§×•×“× -next.title=דף ×”×‘× -next_label=×”×‘× - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=עמוד: -page_of=מתוך {{pageCount}} - -zoom_out.title=התרחקות -zoom_out_label=התרחקות -zoom_in.title=התקרבות -zoom_in_label=התקרבות -zoom.title=מרחק מתצוגה -presentation_mode.title=מעבר למצב מצגת -presentation_mode_label=מצב מצגת -open_file.title=פתיחת קובץ -open_file_label=פתיחה -print.title=הדפסה -print_label=הדפסה -download.title=הורדה -download_label=הורדה -bookmark.title=תצוגה × ×•×›×—×™×ª (העתקה ×ו פתיחה בחלון חדש) -bookmark_label=תצוגה × ×•×›×—×™×ª - -# Secondary toolbar and context menu -tools.title=×›×œ×™× -tools_label=×›×œ×™× -first_page.title=מעבר לעמוד הר×שון -first_page.label=מעבר לעמוד הר×שון -first_page_label=מעבר לעמוד הר×שון -last_page.title=מעבר לעמוד ×”×חרון -last_page.label=מעבר לעמוד ×”×חרון -last_page_label=מעבר לעמוד ×”×חרון -page_rotate_cw.title=הטיה ×¢× ×›×™×•×•×Ÿ השעון -page_rotate_cw.label=הטיה ×¢× ×›×™×•×•×Ÿ השעון -page_rotate_cw_label=הטיה ×¢× ×›×™×•×•×Ÿ השעון -page_rotate_ccw.title=הטיה ×›× ×’×“ כיוון השעון -page_rotate_ccw.label=הטיה ×›× ×’×“ כיוון השעון -page_rotate_ccw_label=הטיה ×›× ×’×“ כיוון השעון - -hand_tool_enable.title=הפעלת כלי היד -hand_tool_enable_label=הפעלת כלי היד -hand_tool_disable.title=× ×˜×¨×•×œ כלי היד -hand_tool_disable_label=× ×˜×¨×•×œ כלי היד - -# Document properties dialog box -document_properties.title=מ××¤×™×™× ×™ מסמך… -document_properties_label=מ××¤×™×™× ×™ מסמך… -document_properties_file_name=×©× ×§×•×‘×¥: -document_properties_file_size=גודל הקובץ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} ק״ב ({{size_b}} בתי×) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} מ״ב ({{size_b}} בתי×) -document_properties_title=כותרת: -document_properties_author=מחבר: -document_properties_subject=× ×•×©×: -document_properties_keywords=מילות מפתח: -document_properties_creation_date=ת×ריך יצירה: -document_properties_modification_date=ת×ריך ×©×™× ×•×™: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=יוצר: -document_properties_producer=יצרן PDF: -document_properties_version=גרסת PDF: -document_properties_page_count=מספר דפי×: -document_properties_close=סגירה - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=הצגה/הסתרה של סרגל הצד -toggle_sidebar_label=הצגה/הסתרה של סרגל הצד -outline.title=הצגת מת×ר מסמך -outline_label=מת×ר מסמך -attachments.title=הצגת צרופות -attachments_label=צרופות -thumbs.title=הצגת תצוגה מקדימה -thumbs_label=תצוגה מקדימה -findbar.title=חיפוש במסמך -findbar_label=חיפוש - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=עמוד {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=תצוגה מקדימה של עמוד {{page}} - -# Find panel button title and messages -find_label=חיפוש: -find_previous.title=חיפוש מופע ×§×•×“× ×©×œ הביטוי -find_previous_label=×§×•×“× -find_next.title=חיפוש המופע ×”×‘× ×©×œ הביטוי -find_next_label=×”×‘× -find_highlight=הדגשת הכול -find_match_case_label=הת×מת ×ותיות -find_reached_top=×”×’×™×¢ לר×ש הדף, ממשיך מלמטה -find_reached_bottom=×”×’×™×¢ לסוף הדף, ממשיך מלמעלה -find_not_found=ביטוי ×œ× × ×ž×¦× - -# Error panel labels -error_more_info=מידע × ×•×¡×£ -error_less_info=פחות מידע -error_close=סגירה -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js גרסה {{version}} (×‘× ×™×™×”: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=הודעה: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=תוכן ×ž×—×¡× ×™×ª: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=קובץ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=שורה: {{line}} -rendering_error=×ירעה שגי××” בעת עיבוד הדף. - -# Predefined zoom values -page_scale_width=רוחב העמוד -page_scale_fit=הת×מה לעמוד -page_scale_auto=מרחק מתצוגה ×וטומטי -page_scale_actual=גודל ×מתי -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=שגי××” -loading_error=×ירעה שגי××” בעת ×˜×¢×™× ×ª ×”Ö¾PDF. -invalid_file_error=קובץ PDF ×¤×’×•× ×ו ×œ× ×ª×§×™×Ÿ. -missing_file_error=קובץ PDF חסר. -unexpected_response_error=תגובת שרת ×œ× ×¦×¤×•×™×”. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[הערת {{type}}] -password_label=× × ×œ×”×›× ×™×¡ ×ת הססמה לפתיחת קובץ PDF ×–×”. -password_invalid=ססמה שגויה. × × ×œ× ×¡×•×ª ×©× ×™×ª. -password_ok=×ישור -password_cancel=ביטול - -printing_not_supported=×זהרה: הדפסה ××™× ×” × ×ª×ž×›×ª במלו××” בדפדפן ×–×”. -printing_not_ready=×זהרה: ×”Ö¾PDF ×œ× × ×™×ª×Ÿ לחלוטין עד מצב שמ×פשר הדפסה. -web_fonts_disabled=×’×•×¤× ×™ רשת ×ž× ×•×˜×¨×œ×™×: ×œ× × ×™×ª×Ÿ להשתמש ×‘×’×•×¤× ×™ PDF מוטבעי×. -document_colors_disabled=מסמכי PDF ×œ× ×™×›×•×œ×™× ×œ×”×©×ª×ž×© ×‘×¦×‘×¢×™× ×ž×©×œ×”×: ×”×פשרות \\'ל×פשר ×œ×¢×ž×•×“×™× ×œ×‘×—×•×¨ ×¦×‘×¢×™× ×ž×©×œ×”×\\' ××™× ×” פעילה בדפדפן. diff --git a/public/pdfjs/web/locale/hi-IN/viewer.properties b/public/pdfjs/web/locale/hi-IN/viewer.properties deleted file mode 100644 index 72a24633..00000000 --- a/public/pdfjs/web/locale/hi-IN/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=पिछला पृषà¥à¤ -previous_label=पिछला -next.title=अगला पृषà¥à¤ -next_label=आगे - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=पृषà¥à¤ : -page_of={{pageCount}} का - -zoom_out.title=छोटा करें -zoom_out_label=छोटा करें -zoom_in.title=बड़ा करें -zoom_in_label=बड़ा करें -zoom.title=बड़ा-छोटा करें -presentation_mode.title=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿ अवसà¥à¤¥à¤¾ में जाà¤à¤ -presentation_mode_label=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿ अवसà¥à¤¥à¤¾ -open_file.title=फ़ाइल खोलें -open_file_label=खोलें -print.title=छापें -print_label=छापें -download.title=डाउनलोड -download_label=डाउनलोड -bookmark.title=मौजूदा दृशà¥à¤¯ (नठविंडो में नक़ल लें या खोलें) -bookmark_label=मौजूदा दृशà¥à¤¯ - -# Secondary toolbar and context menu -tools.title=औज़ार -tools_label=औज़ार -first_page.title=पà¥à¤°à¤¥à¤® पृषà¥à¤ पर जाà¤à¤ -first_page.label=पà¥à¤°à¤¥à¤® पृषà¥à¤ पर जाà¤à¤ -first_page_label=पà¥à¤°à¤¥à¤® पृषà¥à¤ पर जाà¤à¤ -last_page.title=अंतिम पृषà¥à¤ पर जाà¤à¤ -last_page.label=अंतिम पृषà¥à¤ पर जाà¤à¤ -last_page_label=अंतिम पृषà¥à¤ पर जाà¤à¤ -page_rotate_cw.title=घड़ी की दिशा में घà¥à¤®à¤¾à¤à¤ -page_rotate_cw.label=घड़ी की दिशा में घà¥à¤®à¤¾à¤à¤ -page_rotate_cw_label=घड़ी की दिशा में घà¥à¤®à¤¾à¤à¤ -page_rotate_ccw.title=घड़ी की दिशा से उलà¥à¤Ÿà¤¾ घà¥à¤®à¤¾à¤à¤ -page_rotate_ccw.label=घड़ी की दिशा से उलà¥à¤Ÿà¤¾ घà¥à¤®à¤¾à¤à¤ -page_rotate_ccw_label=घड़ी की दिशा से उलà¥à¤Ÿà¤¾ घà¥à¤®à¤¾à¤à¤ - -hand_tool_enable.title=हाथ औजार सकà¥à¤°à¤¿à¤¯ करें -hand_tool_enable_label=हाथ औजार सकà¥à¤°à¤¿à¤¯ करें -hand_tool_disable.title=हाथ औजार निषà¥à¤•à¥à¤°à¤¿à¤¯ करना -hand_tool_disable_label=हाथ औजार निषà¥à¤•à¥à¤°à¤¿à¤¯ करना - -# Document properties dialog box -document_properties.title=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ विशेषता... -document_properties_label=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ विशेषता... -document_properties_file_name=फ़ाइल नाम: -document_properties_file_size=फाइल आकारः -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} बाइट) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} बाइट) -document_properties_title=शीरà¥à¤·à¤•: -document_properties_author=लेखकः -document_properties_subject=विषय: -document_properties_keywords=कà¥à¤‚जी-शबà¥à¤¦: -document_properties_creation_date=निरà¥à¤®à¤¾à¤£ दिनांक: -document_properties_modification_date=संशोधन दिनांक: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=निरà¥à¤®à¤¾à¤¤à¤¾: -document_properties_producer=PDF उतà¥à¤ªà¤¾à¤¦à¤•: -document_properties_version=PDF संसà¥à¤•à¤°à¤£: -document_properties_page_count=पृषà¥à¤ गिनती: -document_properties_close=बंद करें - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=सà¥à¤²à¤¾à¤‡à¤¡à¤° टॉगल करें -toggle_sidebar_label=सà¥à¤²à¤¾à¤‡à¤¡à¤° टॉगल करें -outline.title=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ आउटलाइन दिखाà¤à¤ -outline_label=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ आउटलाइन -attachments.title=संलगà¥à¤¨à¤• दिखायें -attachments_label=संलगà¥à¤¨à¤• -thumbs.title=लघà¥à¤›à¤µà¤¿à¤¯à¤¾à¤ दिखाà¤à¤ -thumbs_label=लघॠछवि -findbar.title=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ में ढूà¤à¤¢à¤¼à¥‡à¤‚ -findbar_label=ढूà¤à¤¢à¤¼à¥‡à¤‚ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=पृषà¥à¤ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=पृषà¥à¤ {{page}} की लघà¥-छवि - -# Find panel button title and messages -find_label=ढूंढें: -find_previous.title=वाकà¥à¤¯à¤¾à¤‚श की पिछली उपसà¥à¤¥à¤¿à¤¤à¤¿ ढूà¤à¤¢à¤¼à¥‡à¤‚ -find_previous_label=पिछला -find_next.title=वाकà¥à¤¯à¤¾à¤‚श की अगली उपसà¥à¤¥à¤¿à¤¤à¤¿ ढूà¤à¤¢à¤¼à¥‡à¤‚ -find_next_label=आगे -find_highlight=सà¤à¥€ आलोकित करें -find_match_case_label=मिलान सà¥à¤¥à¤¿à¤¤à¤¿ -find_reached_top=पृषà¥à¤ के ऊपर पहà¥à¤‚च गया, नीचे से जारी रखें -find_reached_bottom=पृषà¥à¤ के नीचे में जा पहà¥à¤à¤šà¤¾, ऊपर से जारी -find_not_found=वाकà¥à¤¯à¤¾à¤‚श नहीं मिला - -# Error panel labels -error_more_info=अधिक सूचना -error_less_info=कम सूचना -error_close=बंद करें -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=संदेश: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=सà¥à¤Ÿà¥ˆà¤•: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=फ़ाइल: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=पंकà¥à¤¤à¤¿: {{line}} -rendering_error=पृषà¥à¤ रेंडरिंग के दौरान तà¥à¤°à¥à¤Ÿà¤¿ आई. - -# Predefined zoom values -page_scale_width=पृषà¥à¤ चौड़ाई -page_scale_fit=पृषà¥à¤ फिट -page_scale_auto=सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ जूम -page_scale_actual=वासà¥à¤¤à¤µà¤¿à¤• आकार -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=तà¥à¤°à¥à¤Ÿà¤¿ -loading_error=पीडीà¤à¤« लोड करते समय à¤à¤• तà¥à¤°à¥à¤Ÿà¤¿ हà¥à¤ˆ. -invalid_file_error=अमानà¥à¤¯ या à¤à¥à¤°à¤·à¥à¤Ÿ PDF फ़ाइल. -missing_file_error=अनà¥à¤ªà¤¸à¥à¤¥à¤¿à¤¤ PDF फ़ाइल. -unexpected_response_error=अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ सरà¥à¤µà¤° पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=इस पीडीà¤à¤« फ़ाइल को खोलने के लिठकृपया कूटशबà¥à¤¦ à¤à¤°à¥‡à¤‚. -password_invalid=अवैध कूटशबà¥à¤¦, कृपया फिर कोशिश करें. -password_ok=ठीक -password_cancel=रदà¥à¤¦ करें - -printing_not_supported=चेतावनी: इस बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° पर छपाई पूरी तरह से समरà¥à¤¥à¤¿à¤¤ नहीं है. -printing_not_ready=चेतावनी: पीडीà¤à¤« छपाई के लिठपूरी तरह से लोड नहीं है. -web_fonts_disabled=वेब फॉनà¥à¤Ÿà¥à¤¸ निषà¥à¤•à¥à¤°à¤¿à¤¯ हैं: अंतःसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ PDF फॉनà¥à¤Ÿà¤¸ के उपयोग में असमरà¥à¤¥. -document_colors_disabled=PDF दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ उनके अपने रंग को उपयोग करने के लिठअनà¥à¤®à¤¤à¤¿ पà¥à¤°à¤¾à¤ªà¥à¤¤ नहीं है: 'पृषà¥à¤ ों को उनके अपने रंग को चà¥à¤¨à¤¨à¥‡ के लिठसà¥à¤µà¥€à¤•à¥ƒà¤¤à¤¿ दें कि वह उस बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° में निषà¥à¤•à¥à¤°à¤¿à¤¯ है. diff --git a/public/pdfjs/web/locale/hr/viewer.properties b/public/pdfjs/web/locale/hr/viewer.properties deleted file mode 100644 index c60ea853..00000000 --- a/public/pdfjs/web/locale/hr/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Prethodna stranica -previous_label=Prethodna -next.title=Iduća stranica -next_label=Iduća - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Stranica: -page_of=od {{pageCount}} - -zoom_out.title=Uvećaj -zoom_out_label=Smanji -zoom_in.title=Uvaćaj -zoom_in_label=Smanji -zoom.title=Uvećanje -presentation_mode.title=Prebaci u prezentacijski naÄin rada -presentation_mode_label=Prezentacijski naÄin rada -open_file.title=Otvori datoteku -open_file_label=Otvori -print.title=Ispis -print_label=Ispis -download.title=Preuzmi -download_label=Preuzmi -bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru) -bookmark_label=Trenutni prikaz - -# Secondary toolbar and context menu -tools.title=Alati -tools_label=Alati -first_page.title=Idi na prvu stranicu -first_page.label=Idi na prvu stranicu -first_page_label=Idi na prvu stranicu -last_page.title=Idi na posljednju stranicu -last_page.label=Idi na posljednju stranicu -last_page_label=Idi na posljednju stranicu -page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu -page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu -page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu -page_rotate_ccw.title=Rotiraj obrnutno od smjera kazaljke na satu -page_rotate_ccw.label=Rotiraj obrnutno od smjera kazaljke na satu -page_rotate_ccw_label=Rotiraj obrnutno od smjera kazaljke na satu - -hand_tool_enable.title=Omogući ruÄni alat -hand_tool_enable_label=Omogući ruÄni alat -hand_tool_disable.title=Onemogući ruÄni alat -hand_tool_disable_label=Onemogući ruÄni alat - -# Document properties dialog box -document_properties.title=Svojstva dokumenta... -document_properties_label=Svojstva dokumenta... -document_properties_file_name=Naziv datoteke: -document_properties_file_size=VeliÄina datoteke: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajtova) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajtova) -document_properties_title=Naslov: -document_properties_author=Autor: -document_properties_subject=Predmet: -document_properties_keywords=KljuÄne rijeÄi: -document_properties_creation_date=Datum stvaranja: -document_properties_modification_date=Datum promjene: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Stvaralac: -document_properties_producer=PDF stvaratelj: -document_properties_version=PDF inaÄica: -document_properties_page_count=Broj stranica: -document_properties_close=Zatvori - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Prikaži/sakrij boÄnu traku -toggle_sidebar_label=Prikaži/sakrij boÄnu traku -outline.title=Prikaži obris dokumenta -outline_label=Obris dokumenta -attachments.title=Prikaži privitke -attachments_label=Privitci -thumbs.title=Prikaži sliÄice -thumbs_label=SliÄice -findbar.title=Traži u dokumentu -findbar_label=Traži - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Stranica {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=SliÄica stranice {{page}} - -# Find panel button title and messages -find_label=Traži: -find_previous.title=PronaÄ‘i prethodno javljanje ovog izraza -find_previous_label=Prethodno -find_next.title=PronaÄ‘i iduće javljanje ovog izraza -find_next_label=Iduće -find_highlight=Istankni sve -find_match_case_label=SluÄaj podudaranja -find_reached_top=Dosegnut vrh dokumenta, nastavak od dna -find_reached_bottom=Dosegnut vrh dokumenta, nastavak od vrha -find_not_found=Izraz nije pronaÄ‘en - -# Error panel labels -error_more_info=ViÅ¡e informacija -error_less_info=Manje informacija -error_close=Zatvori -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Poruka: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stog: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Datoteka: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Redak: {{line}} -rendering_error=DoÅ¡lo je do greÅ¡ke prilikom iscrtavanja stranice. - -# Predefined zoom values -page_scale_width=Å irina stranice -page_scale_fit=Pristajanje stranici -page_scale_auto=Automatsko uvećanje -page_scale_actual=Prava veliÄina -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=GreÅ¡ka -loading_error=DoÅ¡lo je do greÅ¡ke pri uÄitavanju PDF-a. -invalid_file_error=Kriva ili oÅ¡tećena PDF datoteka. -missing_file_error=Nedostaje PDF datoteka. -unexpected_response_error=NeoÄekivani odgovor poslužitelja. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} BiljeÅ¡ka] -password_label=UpiÅ¡ite lozinku da biste otvorili ovu PDF datoteku. -password_invalid=Neispravna lozinka. PokuÅ¡ajte ponovo. -password_ok=U redu -password_cancel=Odustani - -printing_not_supported=Upozorenje: Ispisivanje nije potpuno podržano u ovom pregledniku. -printing_not_ready=Upozorenje: PDF nije u potpunosti uÄitan za ispis. -web_fonts_disabled=Web fontovi su onemogućeni: nije moguće koristiti umetnute PDF fontove. -document_colors_disabled=PDF dokumenti nemaju dopuÅ¡tene koristiti vlastite boje: opcija 'Dopusti stranicama da koriste vlastite boje' je deaktivirana. diff --git a/public/pdfjs/web/locale/hu/viewer.properties b/public/pdfjs/web/locale/hu/viewer.properties deleted file mode 100644 index 384da310..00000000 --- a/public/pdfjs/web/locale/hu/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ElÅ‘zÅ‘ oldal -previous_label=ElÅ‘zÅ‘ -next.title=KövetkezÅ‘ oldal -next_label=Tovább - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Oldal: -page_of=összesen: {{pageCount}} - -zoom_out.title=KicsinyÃtés -zoom_out_label=KicsinyÃtés -zoom_in.title=NagyÃtás -zoom_in_label=NagyÃtás -zoom.title=NagyÃtás -presentation_mode.title=Váltás bemutató módba -presentation_mode_label=Bemutató mód -open_file.title=Fájl megnyitása -open_file_label=Megnyitás -print.title=Nyomtatás -print_label=Nyomtatás -download.title=Letöltés -download_label=Letöltés -bookmark.title=Jelenlegi nézet (másolás vagy megnyitás új ablakban) -bookmark_label=Aktuális nézet - -# Secondary toolbar and context menu -tools.title=Eszközök -tools_label=Eszközök -first_page.title=Ugrás az elsÅ‘ oldalra -first_page.label=Ugrás az elsÅ‘ oldalra -first_page_label=Ugrás az elsÅ‘ oldalra -last_page.title=Ugrás az utolsó oldalra -last_page.label=Ugrás az utolsó oldalra -last_page_label=Ugrás az utolsó oldalra -page_rotate_cw.title=Forgatás az óramutató járásával egyezÅ‘en -page_rotate_cw.label=Forgatás az óramutató járásával egyezÅ‘en -page_rotate_cw_label=Forgatás az óramutató járásával egyezÅ‘en -page_rotate_ccw.title=Forgatás az óramutató járásával ellentétesen -page_rotate_ccw.label=Forgatás az óramutató járásával ellentétesen -page_rotate_ccw_label=Forgatás az óramutató járásával ellentétesen - -hand_tool_enable.title=Kéz eszköz bekapcsolása -hand_tool_enable_label=Kéz eszköz bekapcsolása -hand_tool_disable.title=Kéz eszköz kikapcsolása -hand_tool_disable_label=Kéz eszköz kikapcsolása - -# Document properties dialog box -document_properties.title=Dokumentum tulajdonságai… -document_properties_label=Dokumentum tulajdonságai… -document_properties_file_name=Fájlnév: -document_properties_file_size=Fájlméret: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bájt) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bájt) -document_properties_title=CÃm: -document_properties_author=SzerzÅ‘: -document_properties_subject=Tárgy: -document_properties_keywords=Kulcsszavak: -document_properties_creation_date=Létrehozás dátuma: -document_properties_modification_date=MódosÃtás dátuma: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Létrehozta: -document_properties_producer=PDF előállÃtó: -document_properties_version=PDF verzió: -document_properties_page_count=Oldalszám: -document_properties_close=Bezárás - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Oldalsáv be/ki -toggle_sidebar_label=Oldalsáv be/ki -outline.title=Dokumentumvázlat megjelenÃtése -outline_label=Dokumentumvázlat -attachments.title=Mellékletek megjelenÃtése -attachments_label=Van melléklet -thumbs.title=Bélyegképek megjelenÃtése -thumbs_label=Bélyegképek -findbar.title=Keresés a dokumentumban -findbar_label=Keresés - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}}. oldal -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}. oldal bélyegképe - -# Find panel button title and messages -find_label=Keresés: -find_previous.title=A kifejezés elÅ‘zÅ‘ elÅ‘fordulásának keresése -find_previous_label=ElÅ‘zÅ‘ -find_next.title=A kifejezés következÅ‘ elÅ‘fordulásának keresése -find_next_label=Tovább -find_highlight=Összes kiemelése -find_match_case_label=Kis- és nagybetűk megkülönböztetése -find_reached_top=A dokumentum eleje elérve, folytatás a végétÅ‘l -find_reached_bottom=A dokumentum vége elérve, folytatás az elejétÅ‘l -find_not_found=A kifejezés nem található - -# Error panel labels -error_more_info=További tudnivalók -error_less_info=Kevesebb információ -error_close=Bezárás -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ãœzenet: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Nyomkövetés: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fájl: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Sor: {{line}} -rendering_error=Hiba történt az oldal feldolgozása közben. - -# Predefined zoom values -page_scale_width=Oldalszélesség -page_scale_fit=Teljes oldal -page_scale_auto=Automatikus nagyÃtás -page_scale_actual=Valódi méret -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Hiba -loading_error=Hiba történt a PDF betöltésekor. -invalid_file_error=Érvénytelen vagy sérült PDF fájl. -missing_file_error=Hiányzó PDF fájl. -unexpected_response_error=Váratlan kiszolgálóválasz. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} megjegyzés] -password_label=Adja meg a jelszót a PDF fájl megnyitásához. -password_invalid=Helytelen jelszó. Próbálja újra. -password_ok=OK -password_cancel=Mégse - -printing_not_supported=Figyelmeztetés: Ez a böngészÅ‘ nem teljesen támogatja a nyomtatást. -printing_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz. -web_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek. -document_colors_disabled=A PDF dokumentumok nem használhatják saját szÃneiket: „Az oldalak a saját maguk által kiválasztott szÃneket használhatják†beállÃtás ki van kapcsolva a böngészÅ‘ben. diff --git a/public/pdfjs/web/locale/hy-AM/viewer.properties b/public/pdfjs/web/locale/hy-AM/viewer.properties deleted file mode 100644 index c28a9e71..00000000 --- a/public/pdfjs/web/locale/hy-AM/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Õ†Õ¡ÕÕ¸Ö€Õ¤ Õ§Õ»Õ¨ -previous_label=Õ†Õ¡ÕÕ¸Ö€Õ¤Õ¨ -next.title=Õ€Õ¡Õ»Õ¸Ö€Õ¤ Õ§Õ»Õ¨ -next_label=Õ€Õ¡Õ»Õ¸Ö€Õ¤Õ¨ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Ô·Õ». -page_of={{pageCount}}-Õ«Ö - -zoom_out.title=Õ“Õ¸Ö„Ö€Õ¡ÖÕ¶Õ¥Õ¬ -zoom_out_label=Õ“Õ¸Ö„Ö€Õ¡ÖÕ¶Õ¥Õ¬ -zoom_in.title=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¶Õ¥Õ¬ -zoom_in_label=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¶Õ¥Õ¬ -zoom.title=Õ„Õ¡Õ½Õ·Õ¿Õ¡Õ¢Õ¨\u0020 -presentation_mode.title=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ†Õ¥Ö€Õ¯Õ¡ÕµÕ¡ÖÕ´Õ¡Õ¶ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯Õ«Õ¶ -presentation_mode_label=Õ†Õ¥Ö€Õ¯Õ¡ÕµÕ¡ÖÕ´Õ¡Õ¶ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯ -open_file.title=Ô²Õ¡ÖÕ¥Õ¬ Õ–Õ¡ÕµÕ¬ -open_file_label=Ô²Õ¡ÖÕ¥Õ¬ -print.title=ÕÕºÕ¥Õ¬ -print_label=ÕÕºÕ¥Õ¬ -download.title=Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ -download_label=Ô²Õ¥Õ¼Õ¶Õ¥Õ¬ -bookmark.title=Ô¸Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ¿Õ¥Õ½Ö„Õ¸Õ¾ (ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ¯Õ¡Õ´ Õ¢Õ¡ÖÕ¥Õ¬ Õ¶Õ¸Ö€ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶Õ¸Ö‚Õ´) -bookmark_label=Ô¸Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ¿Õ¥Õ½Ö„Õ¨ - -# Secondary toolbar and context menu -tools.title=Ô³Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€ -tools_label=Ô³Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€ -first_page.title=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ -first_page.label=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ -first_page_label=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ -last_page.title=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ -last_page.label=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ -last_page_label=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ§Õ»Õ«Õ¶ -page_rotate_cw.title=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ¨Õ½Õ¿ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« -page_rotate_cw.label=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ¨Õ½Õ¿ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« -page_rotate_cw_label=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ¨Õ½Õ¿ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« -page_rotate_ccw.title=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ°Õ¡Õ¯Õ¡Õ¼Õ¡Õ¯ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« -page_rotate_ccw.label=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ°Õ¡Õ¯Õ¡Õ¼Õ¡Õ¯ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« -page_rotate_ccw_label=ÕŠÕ¿Õ¿Õ¥Õ¬ Õ°Õ¡Õ¯Õ¡Õ¼Õ¡Õ¯ ÕªÕ¡Õ´Õ¡ÖÕ¸Ö‚ÕµÖÕ« Õ½Õ¬Õ¡Ö„Õ« - -hand_tool_enable.title=Õ„Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ±Õ¥Õ¼Ö„Õ« Õ£Õ¸Ö€Õ®Õ«Ö„Õ¨ -hand_tool_enable_label=Õ„Õ«Õ¡ÖÕ¶Õ¥Õ¬ Õ±Õ¥Õ¼Ö„Õ« Õ£Õ¸Ö€Õ®Õ«Ö„Õ¨ -hand_tool_disable.title=Ô±Õ¶Õ»Õ¡Õ¿Õ¥Õ¬ Õ±Õ¥Õ¼Ö„Õ« Õ£Õ¸Ö€Õ®Õ«Ö„Õ¨ -hand_tool_disable_label=Ô±Õ†Õ»Õ¡Õ¿Õ¥Õ¬ Õ±Õ¥Õ¼Ö„Õ« Õ£Õ¸Ö€Õ®Õ«Ö„Õ¨ - -# Document properties dialog box -document_properties.title=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨... -document_properties_label=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ°Õ¡Õ¿Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨... -document_properties_file_name=Õ–Õ¡ÕµÕ¬Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨. -document_properties_file_size=Õ–Õ¡ÕµÕ¬Õ« Õ¹Õ¡ÖƒÕ¨. -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} Ô¿Ô² ({{size_b}} Õ¢Õ¡ÕµÕ©) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} Õ„Ô² ({{size_b}} Õ¢Õ¡ÕµÕ©) -document_properties_title=ÕŽÕ¥Ö€Õ¶Õ¡Õ£Õ«Ö€. -document_properties_author=Հեղինակ․ -document_properties_subject=ÕŽÕ¥Ö€Õ¶Õ¡Õ£Õ«Ö€. -document_properties_keywords=Õ€Õ«Õ´Õ¶Õ¡Õ¢Õ¡Õ¼. -document_properties_creation_date=ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬Õ¸Ö‚ Õ¡Õ´Õ½Õ¡Õ©Õ«Õ¾Õ¨. -document_properties_modification_date=Õ“Õ¸ÖƒÕ¸ÕÕ¥Õ¬Õ¸Ö‚ Õ¡Õ´Õ½Õ¡Õ©Õ«Õ¾Õ¨. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ÕÕ¿Õ¥Õ²Õ®Õ¸Õ². -document_properties_producer=PDF-Õ« Õ°Õ¥Õ²Õ«Õ¶Õ¡Õ¯Õ¨. -document_properties_version=PDF-Õ« Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ¨. -document_properties_page_count=Ô·Õ»Õ¥Ö€Õ« Ö„Õ¡Õ¶Õ¡Õ¯Õ¨. -document_properties_close=Õ“Õ¡Õ¯Õ¥Õ¬ - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Ô²Õ¡ÖÕ¥Õ¬/Õ“Õ¡Õ¯Õ¥Õ¬ Ô¿Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨ -toggle_sidebar_label=Ô²Õ¡ÖÕ¥Õ¬/Õ“Õ¡Õ¯Õ¥Õ¬ Ô¿Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨ -outline.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ -outline_label=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ -attachments.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€Õ¨ -attachments_label=Ô¿ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€ -thumbs.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ„Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ -thumbs_label=Õ„Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ -findbar.title=Ô³Õ¿Õ¶Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ¸Ö‚Õ´ -findbar_label=ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Ô·Õ»Õ¨ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Ô·Õ»Õ« Õ´Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ {{page}} - -# Find panel button title and messages -find_label=Ô³Õ¿Õ¶Õ¥Õ¬` -find_previous.title=Ô³Õ¿Õ¶Õ¥Õ¬ Õ¡Õ¶Ö€Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¶Õ¡ÕÕ¸Ö€Õ¤ Õ°Õ¡Õ¶Õ¤Õ«ÕºÕ¸Ö‚Õ´Õ¨ -find_previous_label=Õ†Õ¡ÕÕ¸Ö€Õ¤Õ¨ -find_next.title=Ô³Õ¿Õ«Ö€ Õ¡Ö€Õ¿Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ¡Õ»Õ¸Ö€Õ¤ Õ°Õ¡Õ¶Õ¤Õ«ÕºÕ¸Ö‚Õ´Õ¨ -find_next_label=Õ€Õ¡Õ»Õ¸Ö€Õ¤Õ¨ -find_highlight=Ô³Õ¸Ö‚Õ¶Õ¡Õ¶Õ·Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨ -find_match_case_label=Õ„Õ¥Õ®(ÖƒÕ¸Ö„Ö€)Õ¡Õ¿Õ¡Õ¼ Õ°Õ¡Õ·Õ¾Õ« Õ¡Õ¼Õ¶Õ¥Õ¬ -find_reached_top=Õ€Õ¡Õ½Õ¥Õ¬ Õ¥Ö„ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¾Õ¥Ö€Ö‡Õ«Õ¶, Õ¯Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¾Õ« Õ¶Õ¥Ö€Ö„Ö‡Õ«Ö -find_reached_bottom=Õ€Õ¡Õ½Õ¥Õ¬ Õ¥Ö„ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¾Õ¥Ö€Õ»Õ«Õ¶, Õ¯Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¾Õ« Õ¾Õ¥Ö€Ö‡Õ«Ö -find_not_found=Ô±Ö€Õ¿Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¹Õ£Õ¿Õ¶Õ¾Õ¥Ö - -# Error panel labels -error_more_info=Ô±Õ¾Õ¥Õ¬Õ« Õ·Õ¡Õ¿ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ -error_less_info=Õ”Õ«Õ¹ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ -error_close=Õ“Õ¡Õ¯Õ¥Õ¬ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (Õ¯Õ¡Õ¼Õ¸Ö‚ÖÕ¸Ö‚Õ´Õ¨. {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ô³Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨. {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Õ‡Õ¥Õ²Õ». {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Õ–Õ¡ÕµÕ¬. {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ÕÕ¸Õ²Õ¨. {{line}} -rendering_error=ÕÕÕ¡Õ¬Õ Õ§Õ»Õ¨ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬Õ«Õ½: - -# Predefined zoom values -page_scale_width=Ô·Õ»Õ« Õ¬Õ¡ÕµÕ¶Ö„Õ¨ -page_scale_fit=ÕÕ£Õ¥Õ¬ Õ§Õ»Õ¨ -page_scale_auto=Ô»Õ¶Ö„Õ¶Õ¡Õ·ÕÕ¡Õ¿ -page_scale_actual=Ô»Ö€Õ¡Õ¯Õ¡Õ¶ Õ¹Õ¡ÖƒÕ¨ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=ÕÕÕ¡Õ¬ -loading_error=ÕÕÕ¡Õ¬Õ PDF Ö†Õ¡ÕµÕ¬Õ¨ Õ¢Õ¡ÖÕ¥Õ¬Õ«Õ½Ö‰ -invalid_file_error=ÕÕÕ¡Õ¬ Õ¯Õ¡Õ´ Õ¢Õ¶Õ¡Õ½Õ¾Õ¡Õ® PDF Ö†Õ¡ÕµÕ¬: -missing_file_error=PDF Ö†Õ¡ÕµÕ¬Õ¨ Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ§: -unexpected_response_error=ÕÕºÕ¡Õ½Õ¡Ö€Õ¯Õ«Õ¹Õ« Õ¡Õ¶Õ½ÕºÕ¡Õ½Õ¥Õ¬Õ« ÕºÕ¡Õ¿Õ¡Õ½ÕÕ¡Õ¶: - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Ô¾Õ¡Õ¶Õ¸Õ©Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶] -password_label=Õ„Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Ö„ PDF-Õ« Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨: -password_invalid=Ô³Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ Õ½ÕÕ¡Õ¬ Õ§: Ô¿Ö€Õ¯Õ«Õ¶ ÖƒÕ¸Ö€Õ±Õ¥Ö„: -password_ok=Ô¼Ô±ÕŽ -password_cancel=Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬ - -printing_not_supported=Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´. ÕÕºÕ¥Õ¬Õ¨ Õ¡Õ´Õ¢Õ¸Õ²Õ»Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¹Õ« Õ¡Õ»Õ¡Õ¯ÖÕ¾Õ¸Ö‚Õ´ Õ¤Õ«Õ¿Õ¡Ö€Õ¯Õ«Õ¹Õ« Õ¯Õ¸Õ²Õ´Õ«ÖÖ‰ -printing_not_ready=Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´. PDF-Õ¨ Õ¡Õ´Õ¢Õ¸Õ²Õ»Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¹Õ« Õ¢Õ¥Õ¼Õ¶Õ¡Õ¾Õ¸Ö€Õ¾Õ¥Õ¬ Õ¿ÕºÕ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€: -web_fonts_disabled=ÕŽÕ¥Õ¢-Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¶Õ¥Ö€Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ¥Õ¶. Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ¶Õ¥Ö€Õ¯Õ¡Õ¼Õ¸Ö‚ÖÕ¾Õ¡Õ® PDF Õ¿Õ¡Õ¼Õ¡Õ¿Õ¥Õ½Õ¡Õ¯Õ¶Õ¥Ö€Õ¨: -document_colors_disabled=PDF ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ¥Ö€Õ«Õ¶ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¾Õ¡Õ® Õ¹Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ«Ö€Õ¥Õ¶Ö Õ½Õ¥ÖƒÕ¡Õ¯Õ¡Õ¶ Õ£Õ¸Ö‚ÕµÕ¶Õ¥Ö€Õ¨: 'Ô¹Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬ Õ§Õ»Õ¥Ö€Õ«Õ¶ Õ¨Õ¶Õ¿Ö€Õ¥Õ¬ Õ«Ö€Õ¥Õ¶Ö Õ½Õ¥ÖƒÕ¡Õ¯Õ¡Õ¶ Õ£Õ¸Ö‚ÕµÕ¶Õ¥Ö€Õ¨' Õ¨Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ§ Õ¤Õ«Õ¿Õ¡Ö€Õ¯Õ«Õ¹Õ¸Ö‚Õ´: diff --git a/public/pdfjs/web/locale/id/viewer.properties b/public/pdfjs/web/locale/id/viewer.properties deleted file mode 100644 index 26475f44..00000000 --- a/public/pdfjs/web/locale/id/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Laman Sebelumnya -previous_label=Sebelumnya -next.title=Laman Selanjutnya -next_label=Selanjutnya - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Laman: -page_of=dari {{pageCount}} - -zoom_out.title=Perkecil -zoom_out_label=Perkecil -zoom_in.title=Perbesar -zoom_in_label=Perbesar -zoom.title=Perbesaran -presentation_mode.title=Ganti ke Mode Presentasi -presentation_mode_label=Mode Presentasi -open_file.title=Buka Berkas -open_file_label=Buka -print.title=Cetak -print_label=Cetak -download.title=Unduh -download_label=Unduh -bookmark.title=Tampilan Sekarang (salin atau buka di jendela baru) -bookmark_label=Tampilan Sekarang - -# Secondary toolbar and context menu -tools.title=Alat -tools_label=Alat -first_page.title=Buka Halaman Pertama -first_page.label=Ke Halaman Pertama -first_page_label=Buka Halaman Pertama -last_page.title=Buka Halaman Terakhir -last_page.label=Ke Halaman Terakhir -last_page_label=Buka Halaman Terakhir -page_rotate_cw.title=Putar Searah Jarum Jam -page_rotate_cw.label=Putar Searah Jarum Jam -page_rotate_cw_label=Putar Searah Jarum Jam -page_rotate_ccw.title=Putar Berlawanan Arah Jarum Jam -page_rotate_ccw.label=Putar Berlawanan Arah Jarum Jam -page_rotate_ccw_label=Putar Berlawanan Arah Jarum Jam - -hand_tool_enable.title=Aktifkan alat tangan -hand_tool_enable_label=Aktifkan alat tangan -hand_tool_disable.title=Nonaktifkan alat tangan -hand_tool_disable_label=Nonaktifkan alat tangan - -# Document properties dialog box -document_properties.title=Properti Dokumen… -document_properties_label=Properti Dokumen… -document_properties_file_name=Nama berkas: -document_properties_file_size=Ukuran berkas: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} byte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Judul: -document_properties_author=Penyusun: -document_properties_subject=Subjek: -document_properties_keywords=Kata Kunci: -document_properties_creation_date=Tanggal Dibuat: -document_properties_modification_date=Tanggal Dimodifikasi: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Pembuat: -document_properties_producer=Pemroduksi PDF: -document_properties_version=Versi PDF: -document_properties_page_count=Jumlah Halaman: -document_properties_close=Tutup - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping -toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping -outline.title=Buka Kerangka Dokumen -outline_label=Kerangka Dokumen -attachments.title=Tampilkan Lampiran -attachments_label=Lampiran -thumbs.title=Tampilkan Miniatur -thumbs_label=Miniatur -findbar.title=Temukan di Dokumen -findbar_label=Temukan - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Laman {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatur Laman {{page}} - -# Find panel button title and messages -find_label=Temukan: -find_previous.title=Temukan kata sebelumnya -find_previous_label=Sebelumnya -find_next.title=Temukan lebih lanjut -find_next_label=Selanjutnya -find_highlight=Sorot semuanya -find_match_case_label=Cocokkan BESAR/kecil -find_reached_top=Sampai di awal dokumen, dilanjutkan dari bawah -find_reached_bottom=Sampai di akhir dokumen, dilanjutkan dari atas -find_not_found=Frasa tidak ditemukan - -# Error panel labels -error_more_info=Lebih Banyak Informasi -error_less_info=Lebih Sedikit Informasi -error_close=Tutup -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Pesan: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Berkas: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Baris: {{line}} -rendering_error=Galat terjadi saat merender laman. - -# Predefined zoom values -page_scale_width=Lebar Laman -page_scale_fit=Muat Laman -page_scale_auto=Perbesaran Otomatis -page_scale_actual=Ukuran Asli -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Galat -loading_error=Galat terjadi saat memuat PDF. -invalid_file_error=Berkas PDF tidak valid atau rusak. -missing_file_error=Berkas PDF tidak ada. -unexpected_response_error=Balasan server yang tidak diharapkan. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotasi {{type}}] -password_label=Masukkan sandi untuk membuka berkas PDF ini. -password_invalid=Sandi tidak valid. Silakan coba lagi. -password_ok=Oke -password_cancel=Batal - -printing_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini. -printing_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak. -web_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat. -document_colors_disabled=Dokumen PDF tidak diizinkan untuk menggunakan warnanya sendiri karena setelan 'Izinkan laman memilih warna sendiri' dinonaktifkan pada pengaturan. diff --git a/public/pdfjs/web/locale/is/viewer.properties b/public/pdfjs/web/locale/is/viewer.properties deleted file mode 100644 index faa8829b..00000000 --- a/public/pdfjs/web/locale/is/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Fyrri sÃða -previous_label=Fyrri -next.title=Næsta sÃða -next_label=Næsti - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=SÃða: -page_of=af {{pageCount}} - -zoom_out.title=Minnka -zoom_out_label=Minnka -zoom_in.title=Stækka -zoom_in_label=Stækka -zoom.title=Aðdráttur -presentation_mode.title=Skipta yfir á kynningarham -presentation_mode_label=Kynningarhamur -open_file.title=Opna skrá -open_file_label=Opna -print.title=Prenta -print_label=Prenta -download.title=Hala niður -download_label=Hala niður -bookmark.title=Núverandi sýn (afritaðu eða opnaðu à nýjum glugga) -bookmark_label=Núverandi sýn - -# Secondary toolbar and context menu -tools.title=Verkfæri -tools_label=Verkfæri -first_page.title=Fara á fyrstu sÃðu -first_page.label=Fara á fyrstu sÃðu -first_page_label=Fara á fyrstu sÃðu -last_page.title=Fara á sÃðustu sÃðu -last_page.label=Fara á sÃðustu sÃðu -last_page_label=Fara á sÃðustu sÃðu -page_rotate_cw.title=Snúa réttsælis -page_rotate_cw.label=Snúa réttsælis -page_rotate_cw_label=Snúa réttsælis -page_rotate_ccw.title=Snúa rangsælis -page_rotate_ccw.label=Snúa rangsælis -page_rotate_ccw_label=Snúa rangsælis - -hand_tool_enable.title=Virkja handarverkfæri -hand_tool_enable_label=Virkja handarverkfæri -hand_tool_disable.title=Gera handarverkfæri óvirkt -hand_tool_disable_label=Gera handarverkfæri óvirkt - -# Document properties dialog box -document_properties.title=Eiginleikar skjals… -document_properties_label=Eiginleikar skjals… -document_properties_file_name=Skráarnafn: -document_properties_file_size=Skrárstærð: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titill: -document_properties_author=Hönnuður: -document_properties_subject=Efni: -document_properties_keywords=Stikkorð: -document_properties_creation_date=Búið til: -document_properties_modification_date=Dags breytingar: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Höfundur: -document_properties_producer=PDF framleiðandi: -document_properties_version=PDF útgáfa: -document_properties_page_count=BlaðsÃðufjöldi: -document_properties_close=Loka - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=VÃxla hliðslá -toggle_sidebar_label=VÃxla hliðslá -outline.title=Sýna efniskipan skjals -outline_label=Efnisskipan skjals -attachments.title=Sýna viðhengi -attachments_label=Viðhengi -thumbs.title=Sýna smámyndir -thumbs_label=Smámyndir -findbar.title=Leita à skjali -findbar_label=Leita - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=SÃða {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Smámynd af sÃðu {{page}} - -# Find panel button title and messages -find_label=Leita: -find_previous.title=Leita að fyrra tilfelli þessara orða -find_previous_label=Fyrri -find_next.title=Leita að næsta tilfelli þessara orða -find_next_label=Næsti -find_highlight=Lita allt -find_match_case_label=Passa við stafstöðu -find_reached_top=Náði efst à skjal, held áfram neðst -find_reached_bottom=Náði enda skjals, held áfram efst -find_not_found=Fann ekki orðið - -# Error panel labels -error_more_info=Meiri upplýsingar -error_less_info=Minni upplýsingar -error_close=Loka -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Skilaboð: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stafli: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Skrá: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=LÃna: {{line}} -rendering_error=Upp kom villa við að birta sÃðuna. - -# Predefined zoom values -page_scale_width=SÃðubreidd -page_scale_fit=Passa á sÃðu -page_scale_auto=Sjálfvirkur aðdráttur -page_scale_actual=Raunstærð -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Villa -loading_error=Villa kom upp við að hlaða inn PDF. -invalid_file_error=Ógild eða skemmd PDF skrá. -missing_file_error=Vantar PDF skrá. -unexpected_response_error=Óvænt svar frá netþjóni. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Skýring] -password_label=Sláðu inn lykilorð til að opna þessa PDF skrá. -password_invalid=Ógilt lykilorð. Reyndu aftur. -password_ok=à lagi -password_cancel=Hætta við - -printing_not_supported=Aðvörun: Prentun er ekki með fyllilegan stuðning á þessum vafra. -printing_not_ready=Aðvörun: Ekki er búið að hlaða inn allri PDF skránni fyrir prentun. -web_fonts_disabled=Vef leturgerðir eru óvirkar: get ekki notað innbyggðar PDF leturgerðir. -document_colors_disabled=PDF skjöl hafa ekki leyfi til að nota sÃna eigin liti: 'Leyfa sÃðum að velja eigin liti' er óvirkt à vafranum. diff --git a/public/pdfjs/web/locale/it/viewer.properties b/public/pdfjs/web/locale/it/viewer.properties deleted file mode 100644 index 91918e65..00000000 --- a/public/pdfjs/web/locale/it/viewer.properties +++ /dev/null @@ -1,111 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -previous.title = Pagina precedente -previous_label = Precedente -next.title = Pagina successiva -next_label = Successiva -page_label = Pagina: -page_of = di {{pageCount}} -zoom_out.title = Riduci zoom -zoom_out_label = Riduci zoom -zoom_in.title = Aumenta zoom -zoom_in_label = Aumenta zoom -zoom.title = Zoom -presentation_mode.title = Passa alla modalità presentazione -presentation_mode_label = Modalità presentazione -open_file.title = Apri file -open_file_label = Apri file -print.title = Stampa -print_label = Stampa -download.title = Scarica questo documento -download_label = Download -bookmark.title = Visualizzazione corrente (copia o apri in una nuova finestra) -bookmark_label = Visualizzazione corrente -tools.title = Strumenti -tools_label = Strumenti -first_page.title = Vai alla prima pagina -first_page.label = Vai alla prima pagina -first_page_label = Vai alla prima pagina -last_page.title = Vai all’ultima pagina -last_page.label = Vai all’ultima pagina -last_page_label = Vai all’ultima pagina -page_rotate_cw.title = Ruota in senso orario -page_rotate_cw.label = Ruota in senso orario -page_rotate_cw_label = Ruota in senso orario -page_rotate_ccw.title = Ruota in senso antiorario -page_rotate_ccw.label = Ruota in senso antiorario -page_rotate_ccw_label = Ruota in senso antiorario -hand_tool_enable.title = Attiva strumento mano -hand_tool_enable_label = Attiva strumento mano -hand_tool_disable.title = Disattiva strumento mano -hand_tool_disable_label = Disattiva strumento mano -document_properties.title = Proprietà del documento… -document_properties_label = Proprietà del documento… -document_properties_file_name = Nome file: -document_properties_file_size = Dimensione file: -document_properties_kb = {{size_kb}} kB ({{size_b}} byte) -document_properties_mb = {{size_mb}} MB ({{size_b}} byte) -document_properties_title = Titolo: -document_properties_author = Autore: -document_properties_subject = Oggetto: -document_properties_keywords = Parole chiave: -document_properties_creation_date = Data creazione: -document_properties_modification_date = Data modifica: -document_properties_date_string = {{date}}, {{time}} -document_properties_creator = Autore originale: -document_properties_producer = Produttore PDF: -document_properties_version = Versione PDF: -document_properties_page_count = Conteggio pagine: -document_properties_close = Chiudi -toggle_sidebar.title = Attiva/disattiva barra laterale -toggle_sidebar_label = Attiva/disattiva barra laterale -outline.title = Visualizza la struttura del documento -outline_label = Struttura documento -attachments.title = Visualizza allegati -attachments_label = Allegati -thumbs.title = Mostra le miniature -thumbs_label = Miniature -findbar.title = Trova nel documento -findbar_label = Trova -thumb_page_title = Pagina {{page}} -thumb_page_canvas = Miniatura della pagina {{page}} -find_label = Trova: -find_previous.title = Trova l’occorrenza precedente del testo da cercare -find_previous_label = Precedente -find_next.title = Trova l’occorrenza successiva del testo da cercare -find_next_label = Successivo -find_highlight = Evidenzia -find_match_case_label = Maiuscole/minuscole -find_reached_top = Raggiunto l’inizio della pagina, continua dalla fine -find_reached_bottom = Raggiunta la fine della pagina, continua dall’inizio -find_not_found = Testo non trovato -error_more_info = Più informazioni -error_less_info = Meno informazioni -error_close = Chiudi -error_version_info = PDF.js v{{version}} (build: {{build}}) -error_message = Messaggio: {{message}} -error_stack = Stack: {{stack}} -error_file = File: {{file}} -error_line = Riga: {{line}} -rendering_error = Si è verificato un errore durante il rendering della pagina. -page_scale_width = Larghezza pagina -page_scale_fit = Adatta a una pagina -page_scale_auto = Zoom automatico -page_scale_actual = Dimensioni effettive -page_scale_percent = {{scale}}% -loading_error_indicator = Errore -loading_error = Si è verificato un errore durante il caricamento del PDF. -invalid_file_error = File PDF non valido o danneggiato. -missing_file_error = File PDF non disponibile. -unexpected_response_error = Risposta imprevista del server -text_annotation_type.alt = [Annotazione: {{type}}] -password_label = Inserire la password per aprire questo file PDF. -password_invalid = Password non corretta. Riprovare. -password_ok = OK -password_cancel = Annulla -printing_not_supported = Attenzione: la stampa non è completamente supportata da questo browser. -printing_not_ready = Attenzione: il PDF non è ancora stato caricato completamente per la stampa. -web_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri inclusi nel PDF. -document_colors_disabled = Non è possibile per i documenti PDF utilizzare i propri colori: l’opzione del browser “Permetti alle pagine di scegliere i propri colori invece di quelli impostati†è disattivata. diff --git a/public/pdfjs/web/locale/ja/viewer.properties b/public/pdfjs/web/locale/ja/viewer.properties deleted file mode 100644 index 10a21d94..00000000 --- a/public/pdfjs/web/locale/ja/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=å‰ã®ãƒšãƒ¼ã‚¸ã¸æˆ»ã‚Šã¾ã™ -previous_label=å‰ã¸ -next.title=次ã®ãƒšãƒ¼ã‚¸ã¸é€²ã¿ã¾ã™ -next_label=次㸠- -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=ページ: -page_of=/ {{pageCount}} - -zoom_out.title=表示を縮å°ã—ã¾ã™ -zoom_out_label=ç¸®å° -zoom_in.title=表示を拡大ã—ã¾ã™ -zoom_in_label=拡大 -zoom.title=拡大/ç¸®å° -presentation_mode.title=プレゼンテーションモードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ -presentation_mode_label=プレゼンテーションモード -open_file.title=ファイルを指定ã—ã¦é–‹ãã¾ã™ -open_file_label=é–‹ã -print.title=å°åˆ·ã—ã¾ã™ -print_label=å°åˆ· -download.title=ダウンãƒãƒ¼ãƒ‰ã—ã¾ã™ -download_label=ダウンãƒãƒ¼ãƒ‰ -bookmark.title=ç¾åœ¨ã®ãƒ“ュー㮠URL ã§ã™ (コピーã¾ãŸã¯æ–°ã—ã„ウィンドウã«é–‹ã) -bookmark_label=ç¾åœ¨ã®ãƒ“ュー - -# Secondary toolbar and context menu -tools.title=ツール -tools_label=ツール -first_page.title=最åˆã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹•ã—ã¾ã™ -first_page.label=最åˆã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹• -first_page_label=最åˆã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹• -last_page.title=最後ã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹•ã—ã¾ã™ -last_page.label=最後ã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹• -last_page_label=最後ã®ãƒšãƒ¼ã‚¸ã¸ç§»å‹• -page_rotate_cw.title=ページをå³ã¸å›žè»¢ã—ã¾ã™ -page_rotate_cw.label=å³å›žè»¢ -page_rotate_cw_label=å³å›žè»¢ -page_rotate_ccw.title=ページを左ã¸å›žè»¢ã—ã¾ã™ -page_rotate_ccw.label=左回転 -page_rotate_ccw_label=左回転 - -hand_tool_enable.title=手ã®ã²ã‚‰ãƒ„ールを有効ã«ã—ã¾ã™ -hand_tool_enable_label=手ã®ã²ã‚‰ãƒ„ールを有効ã«ã™ã‚‹ -hand_tool_disable.title=手ã®ã²ã‚‰ãƒ„ールを無効ã«ã—ã¾ã™ -hand_tool_disable_label=手ã®ã²ã‚‰ãƒ„ールを無効ã«ã™ã‚‹ - -# Document properties dialog box -document_properties.title=文書ã®ãƒ—ãƒãƒ‘ティ... -document_properties_label=文書ã®ãƒ—ãƒãƒ‘ティ... -document_properties_file_name=ファイルå: -document_properties_file_size=ファイルサイズ: -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=タイトル: -document_properties_author=作æˆè€…: -document_properties_subject=件å: -document_properties_keywords=ã‚ーワード: -document_properties_creation_date=作æˆæ—¥: -document_properties_modification_date=æ›´æ–°æ—¥: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=アプリケーション: -document_properties_producer=PDF 作æˆ: -document_properties_version=PDF ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³: -document_properties_page_count=ページ数: -document_properties_close=é–‰ã˜ã‚‹ - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=サイドãƒãƒ¼è¡¨ç¤ºã‚’切り替ãˆã¾ã™ -toggle_sidebar_label=サイドãƒãƒ¼ã®åˆ‡ã‚Šæ›¿ãˆ -outline.title=文書ã®ç›®æ¬¡ã‚’表示ã—ã¾ã™ -outline_label=文書ã®ç›®æ¬¡ -attachments.title=添付ファイルを表示ã—ã¾ã™ -attachments_label=添付ファイル -thumbs.title=縮å°ç‰ˆã‚’表示ã—ã¾ã™ -thumbs_label=縮å°ç‰ˆ -findbar.title=文書内を検索ã—ã¾ã™ -findbar_label=検索 - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} ページ -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=ページã®ç¸®å°ç‰ˆ {{page}} - -# Find panel button title and messages -find_label=検索: -find_previous.title=指定文å—列ã«ä¸€è‡´ã™ã‚‹ 1 ã¤å‰ã®éƒ¨åˆ†ã‚’検索ã—ã¾ã™ -find_previous_label=å‰ã¸ -find_next.title=指定文å—列ã«ä¸€è‡´ã™ã‚‹æ¬¡ã®éƒ¨åˆ†ã‚’検索ã—ã¾ã™ -find_next_label=次㸠-find_highlight=ã™ã¹ã¦å¼·èª¿è¡¨ç¤º -find_match_case_label=大文å—/å°æ–‡å—を区別 -find_reached_top=文書先é ã«åˆ°é”ã—ãŸã®ã§æœ«å°¾ã«æˆ»ã£ã¦æ¤œç´¢ã—ã¾ã—ãŸã€‚ -find_reached_bottom=文書末尾ã«åˆ°é”ã—ãŸã®ã§å…ˆé ã«æˆ»ã£ã¦æ¤œç´¢ã—ã¾ã—ãŸã€‚ -find_not_found=見ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ - -# Error panel labels -error_more_info=è©³ç´°æƒ…å ± -error_less_info=è©³ç´°æƒ…å ±ã®éžè¡¨ç¤º -error_close=é–‰ã˜ã‚‹ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (ビルド: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=メッセージ: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=スタック: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ファイル: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=è¡Œ: {{line}} -rendering_error=ページã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠- -# Predefined zoom values -page_scale_width=å¹…ã«åˆã‚ã›ã‚‹ -page_scale_fit=ページã®ã‚µã‚¤ã‚ºã«åˆã‚ã›ã‚‹ -page_scale_auto=自動ズーム-page_scale_actual=実際ã®ã‚µã‚¤ã‚º -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=エラー -loading_error=PDF ã®èªã¿è¾¼ã¿ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠-invalid_file_error=無効ã¾ãŸã¯ç ´æã—㟠PDF ファイル -missing_file_error=PDF ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。 -unexpected_response_error=サーãƒã‹ã‚‰äºˆæœŸã›ã¬å¿œç”ãŒã‚ã‚Šã¾ã—ãŸã€‚ - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} 注釈] -password_label=ã“ã® PDF ファイルを開ããŸã‚ã®ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。 -password_invalid=無効ãªãƒ‘スワードã§ã™ã€‚ã‚‚ã†ä¸€åº¦ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„。 -password_ok=OK -password_cancel=ã‚ャンセル - -printing_not_supported=è¦å‘Š: ã“ã®ãƒ–ラウザã§ã¯å°åˆ·ãŒå®Œå…¨ã«ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“ -printing_not_ready=è¦å‘Š: PDF ã‚’å°åˆ·ã™ã‚‹ãŸã‚ã®èªã¿è¾¼ã¿ãŒçµ‚了ã—ã¦ã„ã¾ã›ã‚“ -web_fonts_disabled=Web フォントãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™: 埋ã‚è¾¼ã¾ã‚ŒãŸ PDF ã®ãƒ•ã‚©ãƒ³ãƒˆã‚’使用ã§ãã¾ã›ã‚“ -document_colors_disabled=PDF 文書ã¯ã€Web ページãŒæŒ‡å®šã—ãŸé…色を使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“: \u0027Web ページãŒæŒ‡å®šã—ãŸé…色\u0027 ã¯ãƒ–ラウザã§ç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚ diff --git a/public/pdfjs/web/locale/ka/viewer.properties b/public/pdfjs/web/locale/ka/viewer.properties deleted file mode 100644 index 6644ad2e..00000000 --- a/public/pdfjs/web/locale/ka/viewer.properties +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. - -zoom.title=მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ი -open_file.title=ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ -open_file_label=გáƒáƒ®áƒ¡áƒœáƒ - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=სáƒáƒ—áƒáƒ£áƒ ი: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -findbar_label=პáƒáƒ•áƒœáƒ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages -find_previous.title=ფრáƒáƒ–ის წინრკáƒáƒœáƒ¢áƒ”ქსტის პáƒáƒ•áƒœáƒ -find_next.title=ფრáƒáƒ–ის შემდეგი კáƒáƒœáƒ¢áƒ”ქსტის პáƒáƒ•áƒœáƒ -find_not_found=კáƒáƒœáƒ¢áƒ”ქსტი ვერმáƒáƒ˜áƒ«áƒ”ბნრ- -# Error panel labels -error_more_info=დáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ მáƒáƒªáƒ˜áƒ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=შეცდáƒáƒ›áƒ - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=დიáƒáƒ® -password_cancel=გáƒáƒ£áƒ¥áƒ›áƒ”ბრ- diff --git a/public/pdfjs/web/locale/kk/viewer.properties b/public/pdfjs/web/locale/kk/viewer.properties deleted file mode 100644 index 5a15a9a1..00000000 --- a/public/pdfjs/web/locale/kk/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Ðлдыңғы парақ -previous_label=ÐлдыңғыÑÑ‹ -next.title=КелеÑÑ– парақ -next_label=КелеÑÑ– - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Парақ: -page_of={{pageCount}} ішінен - -zoom_out.title=Кішірейту -zoom_out_label=Кішірейту -zoom_in.title=Үлкейту -zoom_in_label=Үлкейту -zoom.title=МаÑштаб -presentation_mode.title=ÐŸÑ€ÐµÐ·ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–Ð½Ðµ ауыÑу -presentation_mode_label=ÐŸÑ€ÐµÐ·ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– -open_file.title=Файлды ашу -open_file_label=Ðшу -print.title=БаÑпаға шығару -print_label=БаÑпаға шығару -download.title=Жүктеп алу -download_label=Жүктеп алу -bookmark.title=Ðғымдағы ÐºÓ©Ñ€Ñ–Ð½Ñ–Ñ (көшіру не жаңа терезеде ашу) -bookmark_label=Ðғымдағы ÐºÓ©Ñ€Ñ–Ð½Ñ–Ñ - -# Secondary toolbar and context menu -tools.title=Саймандар -tools_label=Саймандар -first_page.title=Ðлғашқы параққа өту -first_page.label=Ðлғашқы параққа өту -first_page_label=Ðлғашқы параққа өту -last_page.title=Соңғы параққа өту -last_page.label=Соңғы параққа өту -last_page_label=Соңғы параққа өту -page_rotate_cw.title=Сағат тілі бағытымен айналдыру -page_rotate_cw.label=Сағат тілі бағытымен бұру -page_rotate_cw_label=Сағат тілі бағытымен бұру -page_rotate_ccw.title=Сағат тілі бағытына қарÑÑ‹ бұру -page_rotate_ccw.label=Сағат тілі бағытына қарÑÑ‹ бұру -page_rotate_ccw_label=Сағат тілі бағытына қарÑÑ‹ бұру - -hand_tool_enable.title=Қол Ñайманын Ñ–Ñке қоÑу -hand_tool_enable_label=Қол Ñайманын Ñ–Ñке қоÑу -hand_tool_disable.title=Қол Ñайманын Ñөндіру -hand_tool_disable_label=Қол Ñайманын Ñөндіру - -# Document properties dialog box -document_properties.title=Құжат қаÑиеттері… -document_properties_label=Құжат қаÑиеттері… -document_properties_file_name=Файл аты: -document_properties_file_size=Файл өлшемі: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} байт) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} байт) -document_properties_title=Тақырыбы... -document_properties_author=Ðвторы: -document_properties_subject=Тақырыбы: -document_properties_keywords=Кілт Ñөздер: -document_properties_creation_date=ЖаÑалған күні: -document_properties_modification_date=Түзету күні: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ЖаÑаған: -document_properties_producer=PDF өндірген: -document_properties_version=PDF нұÑқаÑÑ‹: -document_properties_page_count=Беттер Ñаны: -document_properties_close=Жабу - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Бүйір панелін көрÑету/жаÑыру -toggle_sidebar_label=Бүйір панелін көрÑету/жаÑыру -outline.title=Құжат құрамаÑын көрÑету -outline_label=Құжат құрамаÑÑ‹ -attachments.title=Салынымдарды көрÑету -attachments_label=Салынымдар -thumbs.title=Кіші көрініÑтерді көрÑету -thumbs_label=Кіші көрініÑтер -findbar.title=Құжаттан табу -findbar_label=Табу - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} парағы -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} парағы үшін кіші көрініÑÑ– - -# Find panel button title and messages -find_label=Табу: -find_previous.title=ОÑÑ‹ Ñөздердің мәтіннен алдыңғы кездеÑуін табу -find_previous_label=ÐлдыңғыÑÑ‹ -find_next.title=ОÑÑ‹ Ñөздердің мәтіннен келеÑÑ– кездеÑуін табу -find_next_label=КелеÑÑ– -find_highlight=Барлығын Ñ‚Ò¯Ñпен ерекшелеу -find_match_case_label=РегиÑтрді еÑкеру -find_reached_top=Құжаттың баÑына жеттік, Ñоңынан баÑтап жалғаÑтырамыз -find_reached_bottom=Құжаттың Ñоңына жеттік, баÑынан баÑтап жалғаÑтырамыз -find_not_found=Сөз(дер) табылмады - -# Error panel labels -error_more_info=Көбірек ақпарат -error_less_info=Ðзырақ ақпарат -error_close=Жабу -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (жинақ: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Хабарлама: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стек: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Файл: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Жол: {{line}} -rendering_error=Парақты өңдеу кезінде қате кетті. - -# Predefined zoom values -page_scale_width=Парақ ені -page_scale_fit=Парақты Ñыйдыру -page_scale_auto=ÐвтомаÑштабтау -page_scale_actual=Ðақты өлшемі -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Қате -loading_error=PDF жүктеу кезінде қате кетті. -invalid_file_error=Зақымдалған немеÑе қате PDF файл. -missing_file_error=PDF файлы жоқ. -unexpected_response_error=Сервердің күтпеген жауабы. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} аңдатпаÑÑ‹] -password_label=Бұл PDF файлын ашу үшін парольді енгізіңіз. -password_invalid=Пароль Ð´Ò±Ñ€Ñ‹Ñ ÐµÐ¼ÐµÑ. Қайталап көріңіз. -password_ok=ОК -password_cancel=Ð‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒ - -printing_not_supported=ЕÑкерту: БаÑпаға шығаруды бұл браузер толығымен қолдамайды. -printing_not_ready=ЕÑкерту: БаÑпаға шығару үшін, бұл PDF толығымен жүктеліп алынбады. -web_fonts_disabled=Веб қаріптері Ñөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емеÑ. -document_colors_disabled=PDF құжаттарына өздік Ñ‚Ò¯Ñтерді қолдану Ñ€Ò±Ò›Ñат етілмеген: бұл браузерде 'Веб-Ñайттарға өздерінің Ñ‚Ò¯Ñтерін қолдануға Ñ€Ò±Ò›Ñат беру' мүмкіндігі Ñөндірулі тұр. diff --git a/public/pdfjs/web/locale/km/viewer.properties b/public/pdfjs/web/locale/km/viewer.properties deleted file mode 100644 index 69a0670c..00000000 --- a/public/pdfjs/web/locale/km/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ទំពáŸážšâ€‹áž˜áž»áž“ -previous_label=មុន -next.title=ទំពáŸážšâ€‹áž”ន្ទាប់ -next_label=បន្ទាប់ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=ទំពáŸážšÂ ៖ -page_of=នៃ {{pageCount}} - -zoom_out.title=​បង្រួម -zoom_out_label=​បង្រួម -zoom_in.title=​ពង្រីក -zoom_in_label=​ពង្រីក -zoom.title=ពង្រីក -presentation_mode.title=ប្ដូរ​ទៅ​របៀប​បទ​បង្ហាញ -presentation_mode_label=របៀប​បទ​បង្ហាញ -open_file.title=បើក​ឯកសារ -open_file_label=បើក -print.title=បោះពុម្ព -print_label=បោះពុម្ព -download.title=ទាញ​យក -download_label=ទាញ​យក -bookmark.title=ទិដ្ឋភាព​បច្ចុប្បន្ន (ចម្លង ឬ​បើក​នៅ​ក្នុង​បង្អួច​ážáŸ’មី) -bookmark_label=ទិដ្ឋភាព​បច្ចុប្បន្ន - -# Secondary toolbar and context menu -tools.title=ឧបករណ០-tools_label=ឧបករណ០-first_page.title=ទៅកាន់​ទំពáŸážšâ€‹ážŠáŸ†áž”ូង​ -first_page.label=ទៅកាន់​ទំពáŸážšâ€‹ážŠáŸ†áž”ូង​ -first_page_label=ទៅកាន់​ទំពáŸážšâ€‹ážŠáŸ†áž”ូង​ -last_page.title=ទៅកាន់​ទំពáŸážšâ€‹áž…ុងក្រោយ​ -last_page.label=ទៅកាន់​ទំពáŸážšâ€‹áž…ុងក្រោយ​ -last_page_label=ទៅកាន់​ទំពáŸážšâ€‹áž…ុងក្រោយ -page_rotate_cw.title=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា -page_rotate_cw.label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា -page_rotate_cw_label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា -page_rotate_ccw.title=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ -page_rotate_ccw.label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ -page_rotate_ccw_label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ - -hand_tool_enable.title=បើក​ឧបករណáŸâ€‹ážŠáŸ„យ​ដៃ -hand_tool_enable_label=បើក​ឧបករណáŸâ€‹ážŠáŸ„យ​ដៃ -hand_tool_disable.title=បិទ​ឧបករណáŸâ€‹áž”្រើ​ដៃ -hand_tool_disable_label=បិទ​ឧបករណáŸâ€‹áž”្រើ​ដៃ - -# Document properties dialog box -document_properties.title=លក្ážážŽâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹áž¯áž€ážŸáž¶ážšâ€¦ -document_properties_label=លក្ážážŽâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹áž¯áž€ážŸáž¶ážšâ€¦ -document_properties_file_name=ឈ្មោះ​ឯកសារ៖ -document_properties_file_size=ទំហំ​ឯកសារ៖ -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=ចំណងជើង ៖ -document_properties_author=អ្នក​និពន្ធ៖ -document_properties_subject=ប្រធានបទ៖ -document_properties_keywords=ពាក្យ​គន្លឹះ៖ -document_properties_creation_date=កាលបរិច្ឆáŸáž‘​បង្កើážáŸ– -document_properties_modification_date=កាលបរិច្ឆáŸáž‘​កែប្រែ៖ -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=អ្នក​បង្កើážáŸ– -document_properties_producer=កម្មវិធី​បង្កើហPDF ៖ -document_properties_version=កំណែ PDF ៖ -document_properties_page_count=ចំនួន​ទំពáŸážšáŸ– -document_properties_close=បិទ - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=បិទ/បើក​គ្រាប់​រំកិល -toggle_sidebar_label=បិទ/បើក​គ្រាប់​រំកិល -outline.title=បង្ហាញ​គ្រោង​ឯកសារ -outline_label=គ្រោង​ឯកសារ -attachments.title=បង្ហាញ​ឯកសារ​ភ្ជាប់ -attachments_label=ឯកសារ​ភ្ជាប់ -thumbs.title=បង្ហាញ​រូបភាព​ážáž¼áž…ៗ -thumbs_label=រួបភាព​ážáž¼áž…ៗ -findbar.title=រក​នៅ​ក្នុង​ឯកសារ -findbar_label=រក - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=ទំពáŸážš {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=រូបភាព​ážáž¼áž…​របស់​ទំពáŸážš {{page}} - -# Find panel button title and messages -find_label=រក ៖ -find_previous.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​មុន -find_previous_label=មុន -find_next.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​បន្ទាប់ -find_next_label=បន្ទាប់ -find_highlight=បន្លិច​ទាំងអស់ -find_match_case_label=ករណី​ដំណូច -find_reached_top=បាន​បន្ážâ€‹áž–ី​ážáž¶áž„​ក្រោម ទៅ​ដល់​ážáž¶áž„​​លើ​នៃ​ឯកសារ -find_reached_bottom=បាន​បន្ážâ€‹áž–ី​ážáž¶áž„លើ ទៅដល់​ចុង​​នៃ​ឯកសារ -find_not_found=រក​មិន​ឃើញ​ពាក្យ ឬ​ឃ្លា - -# Error panel labels -error_more_info=áž–áŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម -error_less_info=áž–áŸážáŸŒáž˜áž¶áž“​ážáž·áž…ážáž½áž… -error_close=បិទ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=សារ ៖ {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ជង់ ៖ {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ឯកសារ ៖ {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ជួរ ៖ {{line}} -rendering_error=មាន​កំហុស​បាន​កើážáž¡áž¾áž„​ពáŸáž›â€‹áž”ង្ហាញ​ទំពáŸážšÂ ។ - -# Predefined zoom values -page_scale_width=ទទឹង​ទំពáŸážš -page_scale_fit=សម​ទំពáŸážš -page_scale_auto=ពង្រីក​ស្វáŸáž™áž”្រវážáŸ’ážáž· -page_scale_actual=ទំហំ​ជាក់ស្ដែង -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=កំហុស -loading_error=មាន​កំហុស​បាន​កើážáž¡áž¾áž„​ពáŸáž›â€‹áž€áŸ†áž–ុង​ផ្ទុក PDF ។ -invalid_file_error=ឯកសារ PDF ážáž¼áž… ឬ​មិន​ážáŸ’រឹមážáŸ’រូវ ។ -missing_file_error=បាážáŸ‹â€‹áž¯áž€ážŸáž¶ážš PDF -unexpected_response_error=ការ​ឆ្លើយ​ážáž˜â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​មáŸâ€‹ážŠáŸ‚ល​មិន​បាន​រំពឹង។ - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} ចំណារ​ពន្យល់] -password_label=បញ្ចូល​ពាក្យសម្ងាážáŸ‹â€‹ážŠáž¾áž˜áŸ’បី​បើក​ឯកសារ PDF áž“áŸáŸ‡áŸ” -password_invalid=ពាក្យសម្ងាážáŸ‹â€‹áž˜áž·áž“​ážáŸ’រឹមážáŸ’រូវ។ សូម​ព្យាយាម​ម្ដងទៀážáŸ” -password_ok=យល់​ព្រម -password_cancel=បោះបង់ - -printing_not_supported=ការ​ព្រមាន ៖ កា​រ​បោះពុម្ព​មិន​ážáŸ’រូវ​បាន​គាំទ្រ​ពáŸáž‰áž›áŸáž‰â€‹ážŠáŸ„យ​កម្មវិធី​រុករក​នáŸáŸ‡â€‹áž‘áŸÂ ។ -printing_not_ready=ព្រមាន៖ PDF មិន​ážáŸ’រូវ​បាន​ផ្ទុក​ទាំងស្រុង​ដើម្បី​បោះពុម្ព​ទáŸáŸ” -web_fonts_disabled=បាន​បិទ​ពុម្ពអក្សរ​បណ្ដាញ ៖ មិន​អាច​ប្រើ​ពុម្ពអក្សរ PDF ដែល​បាន​បង្កប់​បាន​ទáŸÂ ។ -document_colors_disabled=ឯកសារ PDF មិន​ážáŸ’រូវ​បាន​អនុញ្ញាážâ€‹áž²áŸ’យ​ប្រើ​ពណ៌​ផ្ទាល់​របស់​វា​ទáŸáŸ– 'អនុញ្ញាážâ€‹â€‹áž²áŸ’យ​ទំពáŸážšâ€‹áž‡áŸ’រើស​ពណ៌​ផ្ទាល់​ážáŸ’លួន' ážáŸ’រូវ​បាន​ធ្វើ​ឲ្យ​អសកម្ម​ក្នុង​​កម្មវិធី​រុករក។ diff --git a/public/pdfjs/web/locale/kn/viewer.properties b/public/pdfjs/web/locale/kn/viewer.properties deleted file mode 100644 index ba130234..00000000 --- a/public/pdfjs/web/locale/kn/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ಹಿಂದಿನ ಪà³à²Ÿ -previous_label=ಹಿಂದಿನ -next.title=ಮà³à²‚ದಿನ ಪà³à²Ÿ -next_label=ಮà³à²‚ದಿನ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=ಪà³à²Ÿ: -page_of={{pageCount}} ರಲà³à²²à²¿ - -zoom_out.title=ಕಿರಿದಾಗಿಸೠ-zoom_out_label=ಕಿರಿದಾಗಿಸಿ -zoom_in.title=ಹಿರಿದಾಗಿಸೠ-zoom_in_label=ಹಿರಿದಾಗಿಸಿ -zoom.title=ಗಾತà³à²°à²¬à²¦à²²à²¿à²¸à³ -presentation_mode.title=ಪà³à²°à²¸à³à²¤à³à²¤à²¿ (ಪà³à²°à²¸à³†à²‚ಟೇಶನà³) ಕà³à²°à²®à²•à³à²•à³† ಬದಲಾಯಿಸೠ-presentation_mode_label=ಪà³à²°à²¸à³à²¤à³à²¤à²¿ (ಪà³à²°à²¸à³†à²‚ಟೇಶನà³) ಕà³à²°à²® -open_file.title=ಕಡತವನà³à²¨à³ ತೆರೆ -open_file_label=ತೆರೆಯಿರಿ -print.title=ಮà³à²¦à³à²°à²¿à²¸à³ -print_label=ಮà³à²¦à³à²°à²¿à²¸à²¿ -download.title=ಇಳಿಸೠ-download_label=ಇಳಿಸಿಕೊಳà³à²³à²¿ -bookmark.title=ಪà³à²°à²¸à²•à³à²¤ ನೋಟ (ಪà³à²°à²¤à²¿ ಮಾಡೠಅಥವ ಹೊಸ ಕಿಟಕಿಯಲà³à²²à²¿ ತೆರೆ) -bookmark_label=ಪà³à²°à²¸à²•à³à²¤ ನೋಟ - -# Secondary toolbar and context menu -tools.title=ಉಪಕರಣಗಳೠ-tools_label=ಉಪಕರಣಗಳೠ-first_page.title=ಮೊದಲ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ-first_page.label=ಮೊದಲ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ-first_page_label=ಮೊದಲ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ-last_page.title=ಕೊನೆಯ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ-last_page.label=ಕೊನೆಯ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ-last_page_label=ಕೊನೆಯ ಪà³à²Ÿà²•à³à²•à³† ತೆರಳೠ-page_rotate_cw.title=ಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ-page_rotate_cw.label=ಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ-page_rotate_cw_label=ಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ-page_rotate_ccw.title=ಅಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ-page_rotate_ccw.label=ಅಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ-page_rotate_ccw_label=ಅಪà³à²°à²¦à²•à³à²·à²¿à²£à³†à²¯à²²à³à²²à²¿ ತಿರà³à²—ಿಸೠ- -hand_tool_enable.title=ಕೈ ಉಪಕರಣವನà³à²¨à³ ಸಕà³à²°à²¿à²¯à²—ೊಳಿಸೠ-hand_tool_enable_label=ಕೈ ಉಪಕರಣವನà³à²¨à³ ಸಕà³à²°à²¿à²¯à²—ೊಳಿಸೠ-hand_tool_disable.title=ಕೈ ಉಪಕರಣವನà³à²¨à³ ನಿಷà³à²•à³à²°à²¿à²¯à²—ೊಳಿಸೠ-hand_tool_disable_label=ಕೈ ಉಪಕರಣವನà³à²¨à³ ನಿಷà³à²•à³à²°à²¿à²¯à²—ೊಳಿಸೠ- -# Document properties dialog box -document_properties.title=ಡಾಕà³à²¯à³à²®à³†à²‚ಟà³â€Œ ಗà³à²£à²—ಳà³... -document_properties_label=ಡಾಕà³à²¯à³à²®à³†à²‚ಟà³â€Œ ಗà³à²£à²—ಳà³... -document_properties_file_name=ಕಡತದ ಹೆಸರà³: -document_properties_file_size=ಕಡತದ ಗಾತà³à²°: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} ಬೈಟà³â€à²—ಳà³) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} ಬೈಟà³â€à²—ಳà³) -document_properties_title=ಶೀರà³à²·à²¿à²•à³†: -document_properties_author=ಕರà³à²¤à³ƒ: -document_properties_subject=ವಿಷಯ: -document_properties_keywords=ಮà³à²–à³à²¯à²ªà²¦à²—ಳà³: -document_properties_creation_date=ರಚಿಸಿದ ದಿನಾಂಕ: -document_properties_modification_date=ಮಾರà³à²ªà²¡à²¿à²¸à²²à²¾à²¦ ದಿನಾಂಕ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ರಚಿಸಿದವರà³: -document_properties_producer=PDF ಉತà³à²ªà²¾à²¦à²•: -document_properties_version=PDF ಆವೃತà³à²¤à²¿: -document_properties_page_count=ಪà³à²Ÿà²¦ ಎಣಿಕೆ: -document_properties_close=ಮà³à²šà³à²šà³ - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ಬದಿಪಟà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ಹೊರಳಿಸೠ-toggle_sidebar_label=ಬದಿಪಟà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ಹೊರಳಿಸೠ-outline.title=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨ ಹೊರರೇಖೆಯನà³à²¨à³ ತೋರಿಸೠ-outline_label=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨ ಹೊರರೇಖೆ -attachments.title=ಲಗತà³à²¤à³à²—ಳನà³à²¨à³ ತೋರಿಸೠ-attachments_label=ಲಗತà³à²¤à³à²—ಳೠ-thumbs.title=ಚಿಕà³à²•à²šà²¿à²¤à³à²°à²¦à²‚ತೆ ತೋರಿಸೠ-thumbs_label=ಚಿಕà³à²•à²šà²¿à²¤à³à²°à²—ಳೠ-findbar.title=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨à²²à³à²²à²¿ ಹà³à²¡à³à²•à³ -findbar_label=ಹà³à²¡à³à²•à³ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=ಪà³à²Ÿ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=ಪà³à²Ÿà²µà²¨à³à²¨à³ ಚಿಕà³à²•à²šà²¿à²¤à³à²°à²¦à²‚ತೆ ತೋರಿಸೠ{{page}} - -# Find panel button title and messages -find_label=ಹà³à²¡à³à²•à³: -find_previous.title=ವಾಕà³à²¯à²¦ ಹಿಂದಿನ ಇರà³à²µà²¿à²•à³†à²¯à²¨à³à²¨à³ ಹà³à²¡à³à²•à³ -find_previous_label=ಹಿಂದಿನ -find_next.title=ವಾಕà³à²¯à²¦ ಮà³à²‚ದಿನ ಇರà³à²µà²¿à²•à³†à²¯à²¨à³à²¨à³ ಹà³à²¡à³à²•à³ -find_next_label=ಮà³à²‚ದಿನ -find_highlight=ಎಲà³à²²à²µà²¨à³à²¨à³ ಹೈಲೈಟೠಮಾಡೠ-find_match_case_label=ಕೇಸನà³à²¨à³ ಹೊಂದಿಸೠ-find_reached_top=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨ ಮೇಲà³à²à²¾à²—ವನà³à²¨à³ ತಲà³à²ªà²¿à²¦à³†, ಕೆಳಗಿನಿಂದ ಆರಂà²à²¿à²¸à³ -find_reached_bottom=ದಸà³à²¤à²¾à²µà³‡à²œà²¿à²¨ ಕೊನೆಯನà³à²¨à³ ತಲà³à²ªà²¿à²¦à³†, ಮೇಲಿನಿಂದ ಆರಂà²à²¿à²¸à³ -find_not_found=ವಾಕà³à²¯à²µà³ ಕಂಡೠಬಂದಿಲà³à²² - -# Error panel labels -error_more_info=ಹೆಚà³à²šà²¿à²¨ ಮಾಹಿತಿ -error_less_info=ಕಡಿಮೆ ಮಾಹಿತಿ -error_close=ಮà³à²šà³à²šà³ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ಸಂದೇಶ: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ರಾಶಿ: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ಕಡತ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ಸಾಲà³: {{line}} -rendering_error=ಪà³à²Ÿà²µà²¨à³à²¨à³ ನಿರೂಪಿಸà³à²µà²¾à²— ಒಂದೠದೋಷ ಎದà³à²°à²¾à²—ಿದೆ. - -# Predefined zoom values -page_scale_width=ಪà³à²Ÿà²¦ ಅಗಲ -page_scale_fit=ಪà³à²Ÿà²¦ ಸರಿಹೊಂದಿಕೆ -page_scale_auto=ಸà³à²µà²¯à²‚ಚಾಲಿತ ಗಾತà³à²°à²¬à²¦à²²à²¾à²µà²£à³† -page_scale_actual=ನಿಜವಾದ ಗಾತà³à²° -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=ದೋಷ -loading_error=PDF ಅನà³à²¨à³ ಲೋಡೠಮಾಡà³à²µà²¾à²— ಒಂದೠದೋಷ ಎದà³à²°à²¾à²—ಿದೆ. -invalid_file_error=ಅಮಾನà³à²¯à²µà²¾à²¦ ಅಥವ ಹಾಳಾದ PDF ಕಡತ. -missing_file_error=PDF ಕಡತ ಇಲà³à²². -unexpected_response_error=ಅನಿರೀಕà³à²·à²¿à²¤à²µà²¾à²¦ ಪೂರೈಕೆಗಣಕದ ಪà³à²°à²¤à²¿à²•à³à²°à²¿à²¯à³†. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} ಟಿಪà³à²ªà²£à²¿] -password_label=PDF ಅನà³à²¨à³ ತೆರೆಯಲೠಗà³à²ªà³à²¤à²ªà²¦à²µà²¨à³à²¨à³ ನಮೂದಿಸಿ. -password_invalid=ಅಮಾನà³à²¯à²µà²¾à²¦ ಗà³à²ªà³à²¤à²ªà²¦, ದಯವಿಟà³à²Ÿà³ ಇನà³à²¨à³Šà²®à³à²®à³† ಪà³à²°à²¯à²¤à³à²¨à²¿à²¸à²¿. -password_ok=OK -password_cancel=ರದà³à²¦à³ ಮಾಡೠ- -printing_not_supported=ಎಚà³à²šà²°à²¿à²•à³†: ಈ ಜಾಲವೀಕà³à²·à²•à²¦à²²à³à²²à²¿ ಮà³à²¦à³à²°à²£à²•à³à²•à³† ಸಂಪೂರà³à²£ ಬೆಂಬಲವಿಲà³à²². -printing_not_ready=ಎಚà³à²šà²°à²¿à²•à³†: PDF ಕಡತವೠಮà³à²¦à³à²°à²¿à²¸à²²à³ ಸಂಪೂರà³à²£à²µà²¾à²—ಿ ಲೋಡೠಆಗಿಲà³à²². -web_fonts_disabled=ಜಾಲ ಅಕà³à²·à²°à²¶à³ˆà²²à²¿à²¯à²¨à³à²¨à³ ನಿಷà³à²•à³à²°à²¿à²¯à²—ೊಳಿಸಲಾಗಿದೆ: ಅಡಕಗೊಳಿಸಿದ PDF ಅಕà³à²·à²°à²¶à³ˆà²²à²¿à²—ಳನà³à²¨à³ ಬಳಸಲೠಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²². -document_colors_disabled=PDF ದಸà³à²¤à²¾à²µà³‡à²œà³à²—ಳೠತಮà³à²®à²¦à³† ಆದ ಬಣà³à²£à²—ಳನà³à²¨à³ ಬಳಸಲೠಅನà³à²®à²¤à²¿ ಇರà³à²µà³à²¦à²¿à²²à³à²²: 'ಪà³à²Ÿà²—ಳೠತಮà³à²®à²¦à³† ಆದ ಬಣà³à²£à²µà²¨à³à²¨à³ ಆಯà³à²•à³† ಮಾಡಲೠಅನà³à²®à²¤à²¿à²¸à³' ಅನà³à²¨à³ ಜಾಲವೀಕà³à²·à²•à²¦à²²à³à²²à²¿ ನಿಷà³à²•à³à²°à²¿à²¯à²—ೊಳಿಸಲಾಗಿರà³à²¤à³à²¤à²¦à³†. diff --git a/public/pdfjs/web/locale/ko/viewer.properties b/public/pdfjs/web/locale/ko/viewer.properties deleted file mode 100644 index 3f1e9ba4..00000000 --- a/public/pdfjs/web/locale/ko/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ì´ì „ 페ì´ì§€ -previous_label=ì´ì „ -next.title=ë‹¤ìŒ íŽ˜ì´ì§€ -next_label=ë‹¤ìŒ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=페ì´ì§€: -page_of=/{{pageCount}} - -zoom_out.title=축소 -zoom_out_label=축소 -zoom_in.title=확대 -zoom_in_label=확대 -zoom.title=í¬ê¸° -presentation_mode.title=발표 모드로 ì „í™˜ -presentation_mode_label=발표 모드 -open_file.title=íŒŒì¼ ì—´ê¸° -open_file_label=열기 -print.title=ì¸ì‡„ -print_label=ì¸ì‡„ -download.title=다운로드 -download_label=다운로드 -bookmark.title=지금 ë³´ì´ëŠ” 그대로 (복사하거나 새 ì°½ì— ì—´ê¸°) -bookmark_label=지금 ë³´ì´ëŠ” 그대로 - -# Secondary toolbar and context menu -tools.title=ë„구 -tools_label=ë„구 -first_page.title=첫 페ì´ì§€ë¡œ ì´ë™ -first_page.label=첫 페ì´ì§€ë¡œ ì´ë™ -first_page_label=첫 페ì´ì§€ë¡œ ì´ë™ -last_page.title=마지막 페ì´ì§€ë¡œ ì´ë™ -last_page.label=마지막 페ì´ì§€ë¡œ ì´ë™ -last_page_label=마지막 페ì´ì§€ë¡œ ì´ë™ -page_rotate_cw.title=시계방향으로 íšŒì „ -page_rotate_cw.label=시계방향으로 íšŒì „ -page_rotate_cw_label=시계방향으로 íšŒì „ -page_rotate_ccw.title=시계 반대방향으로 íšŒì „ -page_rotate_ccw.label=시계 반대방향으로 íšŒì „ -page_rotate_ccw_label=시계 반대방향으로 íšŒì „ - -hand_tool_enable.title=ì† ë„구 켜기 -hand_tool_enable_label=ì† ë„구 켜기 -hand_tool_disable.title=ì† ë„구 ë„기 -hand_tool_disable_label=ì† ë„구 ë„기 - -# Document properties dialog box -document_properties.title=문서 ì†ì„±â€¦ -document_properties_label=문서 ì†ì„±â€¦ -document_properties_file_name=íŒŒì¼ ì´ë¦„: -document_properties_file_size=íŒŒì¼ ì‚¬ì´ì¦ˆ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}}ë°”ì´íŠ¸) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}}ë°”ì´íŠ¸) -document_properties_title=ì œëª©: -document_properties_author=ì €ìž: -document_properties_subject=ì£¼ì œ: -document_properties_keywords=키워드: -document_properties_creation_date=ìƒì„±ì¼: -document_properties_modification_date=ìˆ˜ì •ì¼: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ìƒì„±ìž: -document_properties_producer=PDF ìƒì„±ê¸°: -document_properties_version=PDF ë²„ì „: -document_properties_page_count=ì´ íŽ˜ì´ì§€: -document_properties_close=닫기 - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=íƒìƒ‰ì°½ ì—´ê³ ë‹«ê¸° -toggle_sidebar_label=íƒìƒ‰ì°½ ì—´ê³ ë‹«ê¸° -outline.title=문서 개요 보기 -outline_label=문서 개요 -attachments.title=ì²¨ë¶€íŒŒì¼ ë³´ê¸° -attachments_label=ì²¨ë¶€íŒŒì¼ -thumbs.title=미리보기 -thumbs_label=미리보기 -findbar.title=검색 -findbar_label=검색 - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}}쪽 -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}쪽 미리보기 - -# Find panel button title and messages -find_label=검색: -find_previous.title=ì§€ì • 문ìžì—´ì— ì¼ì¹˜í•˜ëŠ” 1ê°œ ë¶€ë¶„ì„ ê²€ìƒ‰ -find_previous_label=ì´ì „ -find_next.title=ì§€ì • 문ìžì—´ì— ì¼ì¹˜í•˜ëŠ” ë‹¤ìŒ ë¶€ë¶„ì„ ê²€ìƒ‰ -find_next_label=ë‹¤ìŒ -find_highlight=ëª¨ë‘ ê°•ì¡° 표시 -find_match_case_label=대문ìž/ì†Œë¬¸ìž êµ¬ë³„ -find_reached_top=문서 처ìŒê¹Œì§€ ê²€ìƒ‰í•˜ê³ ë으로 ëŒì•„와 검색했습니다. -find_reached_bottom=문서 ë까지 ê²€ìƒ‰í•˜ê³ ì•žìœ¼ë¡œ ëŒì•„와 검색했습니다. -find_not_found=검색 ê²°ê³¼ ì—†ìŒ - -# Error panel labels -error_more_info=ì •ë³´ ë” ë³´ê¸° -error_less_info=ì •ë³´ 간단히 보기 -error_close=닫기 -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (빌드: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=메시지: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=스íƒ: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=파ì¼: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=줄 번호: {{line}} -rendering_error=페ì´ì§€ë¥¼ ë Œë”ë§í•˜ë‹¤ 오류가 났습니다. - -# Predefined zoom values -page_scale_width=페ì´ì§€ ë„ˆë¹„ì— ë§žì¶¤ -page_scale_fit=페ì´ì§€ì— 맞춤 -page_scale_auto=알아서 맞춤 -page_scale_actual=ì‹¤ì œ í¬ê¸°ì— 맞춤 -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=오류 -loading_error=PDF를 ì½ëŠ” 중 오류가 ìƒê²¼ìŠµë‹ˆë‹¤. -invalid_file_error=ìœ íš¨í•˜ì§€ 않거나 파ì†ëœ PDF íŒŒì¼ -missing_file_error=PDF 파ì¼ì´ 없습니다. -unexpected_response_error=ì•Œ 수 없는 서버 ì‘답입니다. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} 주ì„] -password_label=ì´ PDF 파ì¼ì„ ì—´ 수 있는 암호를 ìž…ë ¥í•˜ì‹ì‹œì˜¤. -password_invalid=ìž˜ëª»ëœ ì•”í˜¸ìž…ë‹ˆë‹¤. 다시 ì‹œë„í•´ 주ì‹ì‹œì˜¤. -password_ok=í™•ì¸ -password_cancel=취소 - -printing_not_supported=ê²½ê³ : ì´ ë¸Œë¼ìš°ì €ëŠ” ì¸ì‡„를 ì™„ì „ížˆ 지ì›í•˜ì§€ 않습니다. -printing_not_ready=ê²½ê³ : ì´ PDF를 ì¸ì‡„를 í• ìˆ˜ ìžˆì„ ì •ë„ë¡œ ì½ì–´ë“¤ì´ì§€ 못했습니다. -web_fonts_disabled=웹 í°íŠ¸ê°€ êº¼ì ¸ìžˆìŒ: ë‚´ìž¥ëœ PDF ê¸€ê¼´ì„ ì“¸ 수 없습니다. -document_colors_disabled=PDF ë¬¸ì„œì˜ ìƒ‰ìƒì„ 쓰지 못하게 ë˜ì–´ 있ìŒ: \'웹 페ì´ì§€ ìžì²´ ìƒ‰ìƒ ì‚¬ìš© 허용\'ì´ ë¸Œë¼ìš°ì €ì—ì„œ êº¼ì ¸ 있습니다. diff --git a/public/pdfjs/web/locale/ku/viewer.properties b/public/pdfjs/web/locale/ku/viewer.properties deleted file mode 100644 index 1f8e177d..00000000 --- a/public/pdfjs/web/locale/ku/viewer.properties +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Rûpela berê -previous_label=PaÅŸve -next.title=Rûpela pêş -next_label=Pêş - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Rûpel: -page_of=/ {{pageCount}} - -zoom_out.title=Dûr bike -zoom_out_label=Dûr bike -zoom_in.title=Nêzîk bike -zoom_in_label=Nêzîk bike -zoom.title=Nêzîk Bike -presentation_mode.title=Derbasî mûda pêşkêşkariyê bibe -presentation_mode_label=Moda Pêşkêşkariyê -open_file.title=Pelî veke -open_file_label=Veke -print.title=Çap bike -print_label=Çap bike -download.title=Jêbar bike -download_label=Jêbar bike -bookmark.title=Xuyakirina niha (kopî yan jî di pencereyeke nû de veke) -bookmark_label=Xuyakirina niha - -# Secondary toolbar and context menu -tools.title=Amûr -tools_label=Amûr -first_page.title=Here rûpela yekemîn -first_page.label=Here rûpela yekemîn -first_page_label=Here rûpela yekemîn -last_page.title=Here rûpela dawîn -last_page.label=Here rûpela dawîn -last_page_label=Here rûpela dawîn -page_rotate_cw.title=Bi aliyê saetê ve bizivirîne -page_rotate_cw.label=Bi aliyê saetê ve bizivirîne -page_rotate_cw_label=Bi aliyê saetê ve bizivirîne -page_rotate_ccw.title=Berevajî aliyê saetê ve bizivirîne -page_rotate_ccw.label=Berevajî aliyê saetê ve bizivirîne -page_rotate_ccw_label=Berevajî aliyê saetê ve bizivirîne - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Sernav: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Darikê kêlekê veke/bigire -toggle_sidebar_label=Darikê kêlekê veke/bigire -outline.title=Åžemaya belgeyê nîşan bide -outline_label=Åžemaya belgeyê -thumbs.title=Wênekokan nîşan bide -thumbs_label=Wênekok -findbar.title=Di belgeyê de bibîne -findbar_label=Bibîne - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Rûpel {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Wênekoka rûpelê {{page}} - -# Find panel button title and messages -find_label=Bibîne: -find_previous.title=Peyva berê bibîne -find_previous_label=PaÅŸve -find_next.title=Peyya pêş bibîne -find_next_label=Pêşve -find_highlight=Tevî beloq bike -find_match_case_label=Ji bo tîpên hûrdek-girdek bihîstyar -find_reached_top=Gihîşt serê rûpelê, ji dawiya rûpelê bidomîne -find_reached_bottom=Gihîşt dawiya rûpelê, ji serê rûpelê bidomîne -find_not_found=Peyv nehat dîtin - -# Error panel labels -error_more_info=Zêdetir agahî -error_less_info=Zêdetir agahî -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js versiyon {{version}} (avanî: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Peyam: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Komik: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Pel: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rêzik: {{line}} -rendering_error=Di vehûrandina rûpelê de çewtî çêbû. - -# Predefined zoom values -page_scale_width=Firehiya rûpelê -page_scale_fit=Di rûpelê de bicî bike -page_scale_auto=Xweber nêzîk bike -page_scale_actual=Mezinahiya rastîn -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Xeletî -loading_error=Dema ku PDF dihat barkirin çewtiyek çêbû. -invalid_file_error=Pelê PDFê nederbasdar yan jî xirabe ye. -missing_file_error=Pelê PDFê kêm e. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Nîşaneya {{type}}ê] -password_label=Ji bo PDFê vekî şîfreyê binivîse. -password_invalid=Şîfre çewt e. Tika ye dîsa biceribîne. -password_ok=Temam -password_cancel=Betal - -printing_not_supported=HiÅŸyarî: Çapkirin ji hêla vê gerokê ve bi temamî nayê destekirin. -printing_not_ready=HiÅŸyarî: PDF bi temamî nehat barkirin û ji bo çapê ne amade ye. -web_fonts_disabled=Fontên Webê neçalak in: Fontên PDFê yên veÅŸartî nayên bikaranîn. -document_colors_disabled=Destûr tune ye ku belgeyên PDFê rengên xwe bi kar bînin: Di gerokê de 'destûrê bide rûpelan ku rengên xwe bi kar bînin' nehatiye çalakirin. diff --git a/public/pdfjs/web/locale/lg/viewer.properties b/public/pdfjs/web/locale/lg/viewer.properties deleted file mode 100644 index 3cac56e0..00000000 --- a/public/pdfjs/web/locale/lg/viewer.properties +++ /dev/null @@ -1,111 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Omuko Ogubadewo -next.title=Omuko Oguddako - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Omuko: -page_of=ku {{pageCount}} - -zoom_out.title=Zimbulukusa -zoom_out_label=Zimbulukusa -zoom_in.title=Funza Munda -zoom_in_label=Funza Munda -zoom.title=Gezzamu -open_file.title=Bikula Fayiro -open_file_label=Ggulawo -print.title=Fulumya -print_label=Fulumya -download.title=Tikula -download_label=Tikula -bookmark.title=Endabika eriwo (koppa oba gulawo mu diriisa epya) -bookmark_label=Endabika Eriwo - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -outline.title=Laga Ensalo ze Kiwandiko -outline_label=Ensalo ze Ekiwandiko -thumbs.title=Laga Ekifanyi Mubufunze -thumbs_label=Ekifanyi Mubufunze -findbar_label=Zuula - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Omuko {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Ekifananyi kyo Omuko Mubufunze {{page}} - -# Find panel button title and messages -find_previous.title=Zuula awayise mukweddamu mumiteddera -find_next.title=Zuula ekidako mukweddamu mumiteddera -find_highlight=Londa byonna -find_not_found=Emiteddera tezuuliddwa - -# Error panel labels -error_more_info=Ebisingawo -error_less_info=Mubumpimpi -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Obubaaka: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Ebipangiddwa: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fayiro {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Layini: {{line}} -rendering_error=Wabadewo ensobi muku tekawo omuko. - -# Predefined zoom values -page_scale_width=Obugazi bwo Omuko -page_scale_fit=Okutuka kwo Omuko -page_scale_auto=Okwefunza no Kwegeza -page_scale_actual=Obunene Obutufu -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Ensobi -loading_error=Wabadewo ensobi mukutika PDF. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Enyonyola] -password_ok=OK -password_cancel=Sazaamu - -printing_not_supported=Okulaabula: Okulumya empapula tekuwagirwa enonyeso enno. diff --git a/public/pdfjs/web/locale/lij/viewer.properties b/public/pdfjs/web/locale/lij/viewer.properties deleted file mode 100644 index f311b79e..00000000 --- a/public/pdfjs/web/locale/lij/viewer.properties +++ /dev/null @@ -1,116 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -previous.title = Pagina precedente -previous_label = Precedente -next.title = Pagina dòppo -next_label = Pròscima -page_label = Pagina: -page_of = de {{pageCount}} -zoom_out.title = Diminoisci zoom -zoom_out_label = Diminoisci zoom -zoom_in.title = Aomenta zoom -zoom_in_label = Aomenta zoom -zoom.title = Zoom -print.title = Stanpa -print_label = Stanpa -open_file.title = Arvi file -open_file_label = Arvi -download.title = Descaregamento -download_label = Descaregamento -bookmark.title = Vixon corente (còpia ò arvi inte 'n neuvo barcon) -bookmark_label = Vixon corente -outline.title = Veddi strutua documento -outline_label = Strutua documento -thumbs.title = Mostra miniatue -thumbs_label = Miniatue -thumb_page_title = Pagina {{page}} -thumb_page_canvas = Miniatua da pagina {{page}} -error_more_info = Ciù informaçioin -error_less_info = Meno informaçioin -error_version_info = PDF.js v{{version}} (build: {{build}}) -error_close = Særa -missing_file_error = O file PDF o no gh'e. -toggle_sidebar.title = Ativa/dizativa bara de scianco -toggle_sidebar_label = Ativa/dizativa bara de scianco -error_message = Mesaggio: {{message}} -error_stack = Stack: {{stack}} -error_file = File: {{file}} -error_line = Linia: {{line}} -rendering_error = Gh'é stæto 'n'erô itno rendering da pagina. -page_scale_width = Larghessa pagina -page_scale_fit = Adatta a una pagina -page_scale_auto = Zoom aotomatico -page_scale_actual = Dimenscioin efetive -loading_error_indicator = Erô -loading_error = S'é verificou 'n'erô itno caregamento do PDF. -printing_not_supported = Atençion: a stanpa a no l'é conpletamente soportâ da sto navegato. - -# Context menu -page_rotate_cw.label=Gia in senso do releuio -page_rotate_ccw.label=Gia in senso do releuio a-a reversa - -presentation_mode.title=Vanni into mòddo de prezentaçion -presentation_mode_label=Mòddo de prezentaçion - -find_label = Treuva: -find_previous.title = Treuva a ripetiçion precedente do testo da çercâ -find_previous_label = Precedente -find_next.title = Treuva a ripetiçion dòppo do testo da çercâ -find_next_label = Segoente -find_highlight = Evidençia -find_match_case_label = Maioscole/minoscole -find_reached_bottom = Razonto l'iniçio da pagina, continoa da-a fin -find_reached_top = Razonto a fin da pagina, continoa da l'iniçio -find_not_found = Testo no trovou -findbar.title = Treuva into documento -findbar_label = Treuva -first_page.label = Vanni a-a primma pagina -last_page.label = Vanni a l'urtima pagina -invalid_file_error = O file PDF o l'é no valido ò aroinou. - -web_fonts_disabled = I font do web en dizativæ: inposcibile adeuviâ i carateri do PDF. -printing_not_ready = Atençion: o PDF o no l'é ancon caregou conpletamente pe-a stanpa. - -document_colors_disabled = No l'é poscibile adeuviâ i pròpi coî pe-i documenti PDF: l'opçion do navegatô 'Permetti a-e pagine de çerne i pròpi coî in cangio de quelli inpostæ' a l'é dizativa. -text_annotation_type.alt = [Anotaçion: {{type}}] - -first_page.title = Vanni a-a primma pagina -first_page_label = Vanni a-a primma pagina -last_page.title = Vanni a l'urtima pagina -last_page_label = Vanni a l'urtima pagina -page_rotate_ccw.title = Gia into verso antioraio -page_rotate_ccw_label = Gia into verso antioraio -page_rotate_cw.title = Gia into verso oraio -page_rotate_cw_label = Gia into verso oraio -tools.title = Strumenti -tools_label = Strumenti -password_label = Dimme a paròlla segreta pe arvî sto file PDF. -password_invalid = Paròlla segreta sbalia. Preuva torna. -password_ok = Va ben -password_cancel = Anulla - -document_properties.title = Propietæ do documento… -document_properties_label = Propietæ do documento… -document_properties_file_name = Nomme file: -document_properties_file_size = Dimenscion file: -document_properties_kb = {{size_kb}} kB ({{size_b}} byte) -document_properties_mb = {{size_kb}} MB ({{size_b}} byte) -document_properties_title = Titolo: -document_properties_author = Aoto: -document_properties_subject = Ogetto: -document_properties_keywords = Paròlle ciave: -document_properties_creation_date = Dæta creaçion: -document_properties_modification_date = Dæta cangiamento: -document_properties_date_string = {{date}}, {{time}} -document_properties_creator = Aotô originale: -document_properties_producer = Produtô PDF: -document_properties_version = Verscion PDF: -document_properties_page_count = Contezzo pagine: -document_properties_close = Særa - -hand_tool_enable.title = Ativa strumento man -hand_tool_enable_label = Ativa strumento man -hand_tool_disable.title = Dizativa strumento man -hand_tool_disable_label = Dizativa strumento man diff --git a/public/pdfjs/web/locale/locale.properties b/public/pdfjs/web/locale/locale.properties deleted file mode 100644 index 9aded1b5..00000000 --- a/public/pdfjs/web/locale/locale.properties +++ /dev/null @@ -1,312 +0,0 @@ -[ach] -@import url(ach/viewer.properties) - -[af] -@import url(af/viewer.properties) - -[ak] -@import url(ak/viewer.properties) - -[an] -@import url(an/viewer.properties) - -[ar] -@import url(ar/viewer.properties) - -[as] -@import url(as/viewer.properties) - -[ast] -@import url(ast/viewer.properties) - -[az] -@import url(az/viewer.properties) - -[be] -@import url(be/viewer.properties) - -[bg] -@import url(bg/viewer.properties) - -[bn-BD] -@import url(bn-BD/viewer.properties) - -[bn-IN] -@import url(bn-IN/viewer.properties) - -[br] -@import url(br/viewer.properties) - -[bs] -@import url(bs/viewer.properties) - -[ca] -@import url(ca/viewer.properties) - -[cs] -@import url(cs/viewer.properties) - -[csb] -@import url(csb/viewer.properties) - -[cy] -@import url(cy/viewer.properties) - -[da] -@import url(da/viewer.properties) - -[de] -@import url(de/viewer.properties) - -[el] -@import url(el/viewer.properties) - -[en-GB] -@import url(en-GB/viewer.properties) - -[en-US] -@import url(en-US/viewer.properties) - -[en-ZA] -@import url(en-ZA/viewer.properties) - -[eo] -@import url(eo/viewer.properties) - -[es-AR] -@import url(es-AR/viewer.properties) - -[es-CL] -@import url(es-CL/viewer.properties) - -[es-ES] -@import url(es-ES/viewer.properties) - -[es-MX] -@import url(es-MX/viewer.properties) - -[et] -@import url(et/viewer.properties) - -[eu] -@import url(eu/viewer.properties) - -[fa] -@import url(fa/viewer.properties) - -[ff] -@import url(ff/viewer.properties) - -[fi] -@import url(fi/viewer.properties) - -[fr] -@import url(fr/viewer.properties) - -[fy-NL] -@import url(fy-NL/viewer.properties) - -[ga-IE] -@import url(ga-IE/viewer.properties) - -[gd] -@import url(gd/viewer.properties) - -[gl] -@import url(gl/viewer.properties) - -[gu-IN] -@import url(gu-IN/viewer.properties) - -[he] -@import url(he/viewer.properties) - -[hi-IN] -@import url(hi-IN/viewer.properties) - -[hr] -@import url(hr/viewer.properties) - -[hu] -@import url(hu/viewer.properties) - -[hy-AM] -@import url(hy-AM/viewer.properties) - -[id] -@import url(id/viewer.properties) - -[is] -@import url(is/viewer.properties) - -[it] -@import url(it/viewer.properties) - -[ja] -@import url(ja/viewer.properties) - -[ka] -@import url(ka/viewer.properties) - -[kk] -@import url(kk/viewer.properties) - -[km] -@import url(km/viewer.properties) - -[kn] -@import url(kn/viewer.properties) - -[ko] -@import url(ko/viewer.properties) - -[ku] -@import url(ku/viewer.properties) - -[lg] -@import url(lg/viewer.properties) - -[lij] -@import url(lij/viewer.properties) - -[lt] -@import url(lt/viewer.properties) - -[lv] -@import url(lv/viewer.properties) - -[mai] -@import url(mai/viewer.properties) - -[mk] -@import url(mk/viewer.properties) - -[ml] -@import url(ml/viewer.properties) - -[mn] -@import url(mn/viewer.properties) - -[mr] -@import url(mr/viewer.properties) - -[ms] -@import url(ms/viewer.properties) - -[my] -@import url(my/viewer.properties) - -[nb-NO] -@import url(nb-NO/viewer.properties) - -[nl] -@import url(nl/viewer.properties) - -[nn-NO] -@import url(nn-NO/viewer.properties) - -[nso] -@import url(nso/viewer.properties) - -[oc] -@import url(oc/viewer.properties) - -[or] -@import url(or/viewer.properties) - -[pa-IN] -@import url(pa-IN/viewer.properties) - -[pl] -@import url(pl/viewer.properties) - -[pt-BR] -@import url(pt-BR/viewer.properties) - -[pt-PT] -@import url(pt-PT/viewer.properties) - -[rm] -@import url(rm/viewer.properties) - -[ro] -@import url(ro/viewer.properties) - -[ru] -@import url(ru/viewer.properties) - -[rw] -@import url(rw/viewer.properties) - -[sah] -@import url(sah/viewer.properties) - -[si] -@import url(si/viewer.properties) - -[sk] -@import url(sk/viewer.properties) - -[sl] -@import url(sl/viewer.properties) - -[son] -@import url(son/viewer.properties) - -[sq] -@import url(sq/viewer.properties) - -[sr] -@import url(sr/viewer.properties) - -[sv-SE] -@import url(sv-SE/viewer.properties) - -[sw] -@import url(sw/viewer.properties) - -[ta] -@import url(ta/viewer.properties) - -[ta-LK] -@import url(ta-LK/viewer.properties) - -[te] -@import url(te/viewer.properties) - -[th] -@import url(th/viewer.properties) - -[tl] -@import url(tl/viewer.properties) - -[tn] -@import url(tn/viewer.properties) - -[tr] -@import url(tr/viewer.properties) - -[uk] -@import url(uk/viewer.properties) - -[ur] -@import url(ur/viewer.properties) - -[vi] -@import url(vi/viewer.properties) - -[wo] -@import url(wo/viewer.properties) - -[xh] -@import url(xh/viewer.properties) - -[zh-CN] -@import url(zh-CN/viewer.properties) - -[zh-TW] -@import url(zh-TW/viewer.properties) - -[zu] -@import url(zu/viewer.properties) - diff --git a/public/pdfjs/web/locale/lt/viewer.properties b/public/pdfjs/web/locale/lt/viewer.properties deleted file mode 100644 index 81310c2c..00000000 --- a/public/pdfjs/web/locale/lt/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Ankstesnis puslapis -previous_label=Ankstesnis -next.title=Kitas puslapis -next_label=Kitas - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Puslapis: -page_of=iÅ¡ {{pageCount}} - -zoom_out.title=Sumažinti -zoom_out_label=Sumažinti -zoom_in.title=Padidinti -zoom_in_label=Padidinti -zoom.title=Mastelis -presentation_mode.title=Pereiti į pateikties veiksenÄ… -presentation_mode_label=Pateikties veiksena -open_file.title=Atverti failÄ… -open_file_label=Atverti -print.title=Spausdinti -print_label=Spausdinti -download.title=Parsiųsti -download_label=Parsiųsti -bookmark.title=Esamojo rodinio saitas (kopijavimui ar atvÄ—rimui kitame lange) -bookmark_label=Esamasis rodinys - -# Secondary toolbar and context menu -tools.title=PriemonÄ—s -tools_label=PriemonÄ—s -first_page.title=Eiti į pirmÄ… puslapį -first_page.label=Eiti į pirmÄ… puslapį -first_page_label=Eiti į pirmÄ… puslapį -last_page.title=Eiti į paskutinį puslapį -last_page.label=Eiti į paskutinį puslapį -last_page_label=Eiti į paskutinį puslapį -page_rotate_cw.title=Pasukti pagal laikrodžio rodyklÄ™ -page_rotate_cw.label=Pasukti pagal laikrodžio rodyklÄ™ -page_rotate_cw_label=Pasukti pagal laikrodžio rodyklÄ™ -page_rotate_ccw.title=Pasukti prieÅ¡ laikrodžio rodyklÄ™ -page_rotate_ccw.label=Pasukti prieÅ¡ laikrodžio rodyklÄ™ -page_rotate_ccw_label=Pasukti prieÅ¡ laikrodžio rodyklÄ™ - -hand_tool_enable.title=Ä®galinti vilkimo veiksenÄ… -hand_tool_enable_label=Ä®galinti vilkimo veiksenÄ… -hand_tool_disable.title=IÅ¡jungti vilkimo veiksenÄ… -hand_tool_disable_label=IÅ¡jungti vilkimo veiksenÄ… - -# Document properties dialog box -document_properties.title=Dokumento savybÄ—s… -document_properties_label=Dokumento savybÄ—s… -document_properties_file_name=Failo vardas: -document_properties_file_size=Failo dydis: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} B) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} B) -document_properties_title=AntraÅ¡tÄ—: -document_properties_author=Autorius: -document_properties_subject=Tema: -document_properties_keywords=ReikÅ¡miniai žodžiai: -document_properties_creation_date=SukÅ«rimo data: -document_properties_modification_date=Modifikavimo data: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=KÅ«rÄ—jas: -document_properties_producer=PDF generatorius: -document_properties_version=PDF versija: -document_properties_page_count=Puslapių skaiÄius: -document_properties_close=Užverti - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Rodyti / slÄ—pti Å¡oninį polangį -toggle_sidebar_label=Å oninis polangis -outline.title=Rodyti dokumento metmenis -outline_label=Dokumento metmenys -attachments.title=Rodyti priedus -attachments_label=Priedai -thumbs.title=Rodyti puslapių miniatiÅ«ras -thumbs_label=MiniatiÅ«ros -findbar.title=IeÅ¡koti dokumente -findbar_label=IeÅ¡koti - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} puslapis -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} puslapio miniatiÅ«ra - -# Find panel button title and messages -find_label=IeÅ¡koti: -find_previous.title=IeÅ¡koti ankstesnio frazÄ—s egzemplioriaus -find_previous_label=Ankstesnis -find_next.title=IeÅ¡koti tolesnio frazÄ—s egzemplioriaus -find_next_label=Tolesnis -find_highlight=ViskÄ… paryÅ¡kinti -find_match_case_label=Skirti didžiÄ…sias ir mažąsias raides -find_reached_top=Pasiekus dokumento pradžiÄ…, paieÅ¡ka pratÄ™sta nuo pabaigos -find_reached_bottom=Pasiekus dokumento pabaigÄ…, paieÅ¡ka pratÄ™sta nuo pradžios -find_not_found=IeÅ¡koma frazÄ— nerasta - -# Error panel labels -error_more_info=IÅ¡samiau -error_less_info=GlausÄiau -error_close=Užverti -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v. {{version}} (darinys: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=PraneÅ¡imas: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=DÄ—klas: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Failas: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=EilutÄ—: {{line}} -rendering_error=Atvaizduojant puslapį, įvyko klaida. - -# Predefined zoom values -page_scale_width=Priderinti prie lapo ploÄio -page_scale_fit=Pritaikyti prie lapo dydžio -page_scale_auto=Automatinis mastelis -page_scale_actual=Tikras dydis -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Klaida -loading_error=Ä®keliant PDF failÄ…, įvyko klaida. -invalid_file_error=Tai nÄ—ra PDF failas arba jis yra sugadintas. -missing_file_error=PDF failas nerastas. -unexpected_response_error=NetikÄ—tas serverio atsakas. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[„{{type}}“ tipo anotacija] -password_label=Ä®veskite slaptažodį Å¡iam PDF failui atverti. -password_invalid=Slaptažodis neteisingas. Bandykite dar kartÄ…. -password_ok=Gerai -password_cancel=Atsisakyti - -printing_not_supported=DÄ—mesio! Spausdinimas Å¡ioje narÅ¡yklÄ—je nÄ—ra pilnai realizuotas. -printing_not_ready=DÄ—mesio! PDF failas dar nÄ—ra pilnai įkeltas spausdinimui. -web_fonts_disabled=Neįgalinti saityno Å¡riftai – Å¡iame PDF faile esanÄių Å¡riftų naudoti negalima. -document_colors_disabled=PDF dokumentams neleidžiama nurodyti savo spalvų, nes iÅ¡jungta narÅ¡yklÄ—s nuostata „Leisti tinklalapiams nurodyti spalvas“. diff --git a/public/pdfjs/web/locale/lv/viewer.properties b/public/pdfjs/web/locale/lv/viewer.properties deleted file mode 100644 index 1418687c..00000000 --- a/public/pdfjs/web/locale/lv/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=IepriekÅ¡Ä“jÄ lapa -previous_label=IepriekÅ¡Ä“jÄ -next.title=NÄkamÄ lapa -next_label=NÄkamÄ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Lapa: -page_of=no {{pageCount}} - -zoom_out.title=AttÄlinÄt\u0020 -zoom_out_label=AttÄlinÄt -zoom_in.title=PietuvinÄt -zoom_in_label=PietuvinÄt -zoom.title=PalielinÄjums -presentation_mode.title=PÄrslÄ“gties uz PrezentÄcijas režīmu -presentation_mode_label=PrezentÄcijas režīms -open_file.title=AtvÄ“rt failu -open_file_label=AtvÄ“rt -print.title=DrukÄÅ¡ana -print_label=DrukÄt -download.title=LejupielÄde -download_label=LejupielÄdÄ“t -bookmark.title=PaÅ¡reizÄ“jais skats (kopÄ“t vai atvÄ“rt jaunÄ logÄ) -bookmark_label=PaÅ¡reizÄ“jais skats - -# Secondary toolbar and context menu -tools.title=RÄ«ki -tools_label=RÄ«ki -first_page.title=Iet uz pirmo lapu -first_page.label=Iet uz pirmo lapu -first_page_label=Iet uz pirmo lapu -last_page.title=Iet uz pÄ“dÄ“jo lapu -last_page.label=Iet uz pÄ“dÄ“jo lapu -last_page_label=Iet uz pÄ“dÄ“jo lapu -page_rotate_cw.title=Pagriezt pa pulksteni -page_rotate_cw.label=Pagriezt pa pulksteni -page_rotate_cw_label=Pagriezt pa pulksteni -page_rotate_ccw.title=Pagriezt pret pulksteni -page_rotate_ccw.label=Pagriezt pret pulksteni -page_rotate_ccw_label=Pagriezt pret pulksteni - -hand_tool_enable.title=AktivÄ“t rokas rÄ«ku -hand_tool_enable_label=AktivÄ“t rokas rÄ«ku -hand_tool_disable.title=DeaktivÄ“t rokas rÄ«ku -hand_tool_disable_label=DeaktivÄ“t rokas rÄ«ku - -# Document properties dialog box -document_properties.title=Dokumenta iestatÄ«jumi… -document_properties_label=Dokumenta iestatÄ«jumi… -document_properties_file_name=Faila nosaukums: -document_properties_file_size=Faila izmÄ“rs: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} biti) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} biti) -document_properties_title=Nosaukums: -document_properties_author=Autors: -document_properties_subject=TÄ“ma: -document_properties_keywords=AtslÄ“gas vÄrdi: -document_properties_creation_date=Izveides datums: -document_properties_modification_date=LAboÅ¡anas datums: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=RadÄ«tÄjs: -document_properties_producer=PDF producents: -document_properties_version=PDF versija: -document_properties_page_count=Lapu skaits: -document_properties_close=AizvÄ“rt - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=PÄrslÄ“gt sÄnu joslu -toggle_sidebar_label=PÄrslÄ“gt sÄnu joslu -outline.title=ParÄdÄ«t dokumenta saturu -outline_label=Dokumenta saturs -attachments.title=RÄdÄ«t pielikumus -attachments_label=Pielikumi -thumbs.title=ParÄdÄ«t sÄ«ktÄ“lus -thumbs_label=SÄ«ktÄ“li -findbar.title=MeklÄ“t dokumentÄ -findbar_label=MeklÄ“t - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Lapa {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Lapas {{page}} sÄ«ktÄ“ls - -# Find panel button title and messages -find_label=MeklÄ“t: -find_previous.title=Atrast iepriekÅ¡Ä“jo -find_previous_label=IepriekÅ¡Ä“jÄ -find_next.title=Atrast nÄkamo -find_next_label=NÄkamÄ -find_highlight=IekrÄsot visas -find_match_case_label=Lielo, mazo burtu jutÄ«gs -find_reached_top=Sasniegts dokumenta sÄkums, turpinÄm no beigÄm -find_reached_bottom=Sasniegtas dokumenta beigas, turpinÄm no sÄkuma -find_not_found=FrÄze nav atrasta - -# Error panel labels -error_more_info=VairÄk informÄcijas -error_less_info=MAzÄk informÄcijas -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ziņojums: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Steks: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rindiņa: {{line}} -rendering_error=AttÄ“lojot lapu radÄs kļūda - -# Predefined zoom values -page_scale_width=Lapas platumÄ -page_scale_fit=Ietilpinot lapu -page_scale_auto=AutomÄtiskais izmÄ“rs -page_scale_actual=Patiesais izmÄ“rs -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Kļūda -loading_error=IelÄdÄ“jot PDF notika kļūda. -invalid_file_error=NederÄ«gs vai bojÄts PDF fails. -missing_file_error=PDF fails nav atrasts. -unexpected_response_error=NegaidÄ«a servera atbilde. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} anotÄcija] -password_label=Ievadiet paroli, lai atvÄ“rtu PDF failu. -password_invalid=Nepareiza parole, mÄ“Ä£iniet vÄ“lreiz. -password_ok=Labi -password_cancel=Atcelt - -printing_not_supported=UzmanÄ«bu: DrukÄÅ¡ana no Å¡Ä« pÄrlÅ«ka darbojas tikai daļēji. -printing_not_ready=UzmanÄ«bu: PDF nav pilnÄ«bÄ ielÄdÄ“ts drukÄÅ¡anai. -web_fonts_disabled=TÄ«mekļa fonti nav aktivizÄ“ti: Nevar iegult PDF fontus. -document_colors_disabled=PDF dokumentiem nav atļauts izmantot paÅ¡iem savas krÄsas: „Atļaut lapÄm izvÄ“lÄ“ties paÅ¡Äm savas krÄsas“ ir deaktivÄ“ts pÄrlÅ«kÄ. diff --git a/public/pdfjs/web/locale/mai/viewer.properties b/public/pdfjs/web/locale/mai/viewer.properties deleted file mode 100644 index 42aad19f..00000000 --- a/public/pdfjs/web/locale/mai/viewer.properties +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=पछिला पृषà¥à¤ -previous_label=पछिला -next.title=अगिला पृषà¥à¤ -next_label=आगाठ- -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=पृषà¥à¤ : -page_of={{pageCount}} क - -zoom_out.title=छोट करू -zoom_out_label=छोट करू -zoom_in.title=पैघ करू -zoom_in_label=जूम इन -zoom.title=छोट-पैघ करू\u0020 -presentation_mode.title=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿ अवसà¥à¤¥à¤¾à¤®à¥‡ जाउ -presentation_mode_label=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿ अवसà¥à¤¥à¤¾ -open_file.title=फाइल खोलू -open_file_label=खोलू -print.title=छापू -print_label=छापू -download.title=डाउनलोड -download_label=डाउनलोड -bookmark.title=मोजà¥à¤¦à¤¾ दृशà¥à¤¯ (नव विंडोमे नकल लिअ अथवा खोलू) -bookmark_label=वरà¥à¤¤à¤®à¤¾à¤¨ दृशà¥à¤¯ - -# Secondary toolbar and context menu -tools.title=अओजार -tools_label=अओजार -first_page.title=पà¥à¤°à¤¥à¤® पृषà¥à¤ पर जाउ -first_page.label=पà¥à¤°à¤¥à¤® पृषà¥à¤ पर जाउ -first_page_label=पà¥à¤°à¤¥à¤® पृषà¥à¤ पर जाउ -last_page.title=अंतिम पृषà¥à¤ पर जाउ -last_page.label=अंतिम पृषà¥à¤ पर जाउ -last_page_label=अंतिम पृषà¥à¤ पर जाउ -page_rotate_cw.title=घड़ीक दिशा मे घà¥à¤®à¤¾à¤‰ -page_rotate_cw.label=घड़ीक दिशा मे घà¥à¤®à¤¾à¤‰ -page_rotate_cw_label=घड़ीक दिशा मे घà¥à¤®à¤¾à¤‰ -page_rotate_ccw.title=घड़ीक दिशा सठउनटा घà¥à¤®à¤¾à¤‰ -page_rotate_ccw.label=घड़ीक दिशा सठउनटा घà¥à¤®à¤¾à¤‰ -page_rotate_ccw_label=घड़ीक दिशा सठउनटा घà¥à¤®à¤¾à¤‰ - -hand_tool_enable.title=हाथ अओजार सकà¥à¤°à¤¿à¤¯ करू -hand_tool_enable_label=हाथ अओजार सकà¥à¤°à¤¿à¤¯ करू -hand_tool_disable.title=हाथ अओजार निषà¥à¤•à¥à¤°à¤¿à¤¯ कà¤à¤¨à¤¾à¤‡ -hand_tool_disable_label=हाथ अओजार निषà¥à¤•à¥à¤°à¤¿à¤¯ कà¤à¤¨à¤¾à¤‡ - -# Document properties dialog box -document_properties.title=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ विशेषता... -document_properties_label=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ विशेषता... -document_properties_file_name=फाइल नाम: -document_properties_file_size=फ़ाइल आकार: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} बाइट) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} बाइट) -document_properties_title=शीरà¥à¤·à¤•: -document_properties_author=लेखकः -document_properties_subject=विषय -document_properties_keywords=बीजशबà¥à¤¦ -document_properties_creation_date=निरà¥à¤®à¤¾à¤£ तिथि: -document_properties_modification_date=संशोधन दिनांक: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string=तिथि/समय -document_properties_creator=सृजक: -document_properties_producer=PDF उतà¥à¤ªà¤¾à¤¦à¤•: -document_properties_version=PDF संसà¥à¤•à¤°à¤£: -document_properties_page_count=पृषà¥à¤ गिनती: -document_properties_close=बनà¥à¤¨ करू - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=सà¥à¤²à¤¾à¤‡à¤¡à¤° टागल -toggle_sidebar_label=सà¥à¤²à¤¾à¤‡à¤¡à¤° टागल -outline.title=दसà¥à¤¤à¤¾à¤µà¥‡à¤œ आउटलाइन देखाउ -outline_label=दसà¥à¤¤à¤¾à¤µà¥‡à¤œ खाका -attachments.title=संलगà¥à¤¨à¤• देखाबू -attachments_label=संलगà¥à¤¨à¤• -thumbs.title=लघà¥-छवि देखाउ -thumbs_label=लघॠछवि -findbar.title=दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤®à¥‡ ढूà¤à¤¢à¥‚ -findbar_label=ताकू - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=पृषà¥à¤ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=पृषà¥à¤ {{page}} का लघà¥-चितà¥à¤° - -# Find panel button title and messages -find_label=ताकू: -find_previous.title=खोजक पछिला उपसà¥à¤¥à¤¿à¤¤à¤¿ ताकू -find_previous_label=पछिला -find_next.title=खोजक अगिला उपसà¥à¤¥à¤¿à¤¤à¤¿ ताकू -find_next_label=आगाठ-find_highlight=सà¤à¤Ÿà¤¾ आलोकित करू -find_match_case_label=मिलान सà¥à¤¥à¤¿à¤¤à¤¿ -find_reached_top=पृषà¥à¤ क शीरà¥à¤· जाठपहà¥à¤à¤šà¤², तल सठजारी -find_reached_bottom=पृषà¥à¤ क तल मे जाठपहà¥à¤à¤šà¤², शीरà¥à¤· सठजारी -find_not_found=वाकींश नहि à¤à¥‡à¤Ÿà¤² - -# Error panel labels -error_more_info=बेसी सूचना -error_less_info=कम सूचना -error_close=बनà¥à¤¨ करू -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=संदेश: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=सà¥à¤Ÿà¥ˆà¤•: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=फ़ाइल: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=पंकà¥à¤¤à¤¿: {{line}} -rendering_error=पृषà¥à¤ रेंडरिंगक समय तà¥à¤°à¥à¤Ÿà¤¿ आà¤à¤². - -# Predefined zoom values -page_scale_width=पृषà¥à¤ चओड़ाइ -page_scale_fit=पृषà¥à¤ फिट -page_scale_auto=सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ जूम -page_scale_actual=सही आकार -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=तà¥à¤°à¥à¤Ÿà¤¿ -loading_error=पीडीà¤à¤« लोड करैत समय à¤à¤•à¤Ÿà¤¾ तà¥à¤°à¥à¤Ÿà¤¿ à¤à¥‡à¤². -invalid_file_error=अमानà¥à¤¯ अथवा à¤à¥à¤°à¤·à¥à¤Ÿ PDF फाइल. -missing_file_error=अनà¥à¤ªà¤¸à¥à¤¥à¤¿à¤¤ PDF फाइल. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=à¤à¤¹à¤¿ पीडीà¤à¤« फ़ाइल केठखोलबाक लेल कृपया कूटशबà¥à¤¦ à¤à¤°à¥‚. -password_invalid=अवैध कूटशबà¥à¤¦, कृपया फिनॠकोशिश करू. -password_ok=बेस -password_cancel=रदà¥à¤¦ करू\u0020 - -printing_not_supported=चेतावनी: ई बà¥à¤°à¤¾à¤‰à¤œà¤° पर छपाइ पूरà¥à¤£ तरह सठसमरà¥à¤¥à¤¿à¤¤ नहि अछि. -printing_not_ready=चेतावनी: पीडीà¤à¤« छपाइक लेल पूरà¥à¤£ तरह सठलोड नहि अछि. -web_fonts_disabled=वेब फॉनà¥à¤Ÿà¥à¤¸ निषà¥à¤•à¥à¤°à¤¿à¤¯ अछि: अंतःसà¥à¤¥à¤¾à¤ªà¤¿à¤¤ PDF फानà¥à¤Ÿà¤¸à¤• उपयोगमे असमरà¥à¤¥. -document_colors_disabled=PDF दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ हà¥à¤•à¤° अपन रंग केठउपयोग करबाक लेल अनà¥à¤®à¤¤à¤¿ पà¥à¤°à¤¾à¤ªà¥à¤¤ नहि अछि: 'पृषà¥à¤ केठहà¥à¤•à¤° अपन रंग केठचà¥à¤¨à¤¬à¤¾à¤• लेल सà¥à¤µà¥€à¤•à¥ƒà¤¤à¤¿ दिअ जे ओ ओहि बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° मे निषà¥à¤•à¥à¤°à¤¿à¤¯ अछि. diff --git a/public/pdfjs/web/locale/mk/viewer.properties b/public/pdfjs/web/locale/mk/viewer.properties deleted file mode 100644 index 18ded891..00000000 --- a/public/pdfjs/web/locale/mk/viewer.properties +++ /dev/null @@ -1,126 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Претходна Ñтраница -previous_label=Претходна -next.title=Следна Ñтраница -next_label=Следна - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Страница: -page_of=од {{pageCount}} - -zoom_out.title=Ðамалување -zoom_out_label=Ðамали -zoom_in.title=Зголемување -zoom_in_label=Зголеми -zoom.title=Променување на големина -print.title=Печатење -print_label=Печати -open_file.title=Отварање датотека -open_file_label=Отвори -download.title=Преземање -download_label=Преземи -bookmark.title=Овој преглед (копирај или отвори во нов прозорец) -bookmark_label=Овој преглед - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_slider.title=Вклучување на лизгач -toggle_slider_label=Вклучи лизгач -outline.title=Прикажување на Ñодржина на документот -outline_label=Содржина на документот -thumbs.title=Прикажување на икони -thumbs_label=Икони - -# Document outline messages -no_outline=Ðема Ñодржина - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Страница {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Икона од Ñтраница {{page}} - -# Error panel labels -error_more_info=Повеќе информации -error_less_info=Помалку информации -error_close=Затвори -# LOCALIZATION NOTE (error_build): "{{build}}" will be replaced by the PDF.JS -# build ID. -error_build=PDF.JS Build: {{build}} -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Порака: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Датотека: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Линија: {{line}} -rendering_error=ÐаÑтана грешка при прикажувањето на Ñтраницата. - -# Predefined zoom values -page_scale_width=Ширина на Ñтраница -page_scale_fit=Цела Ñтраница -page_scale_auto=ÐвтоматÑка големина -page_scale_actual=ВиÑтинÑка големина - -loading_error_indicator=Грешка -loading_error=ÐаÑтана грешка при вчитувањето на PDF-от. - -# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip. -# "{{[type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type=[{{type}} Забелешка] -request_password=PDF-от е заштитен Ñо лозинка: - - -printing_not_supported=Предупредување: Печатењето не е целоÑно поддржано во овој прелиÑтувач. - -find_highlight=Означи ÑÑ - -# Find panel button title and messages -find_label=Ðајди: -find_match_case_label=Токму така -find_next.title=Ðајди ја Ñледната појава на фразата -find_next_label=Следно -find_not_found=Фразата не е пронајдена -find_previous.title=Ðајди ја предходната појава на фразата -find_previous_label=Претходно -find_reached_bottom=Барањето Ñтигна до крајот на документот и почнува од почеток -find_reached_top=Барањето Ñтигна до почетокот на документот и почнува од крајот -findbar.title=Ðајди во документот -findbar_label=Ðајди - -# Context menu -first_page.label=Оди до првата Ñтраница -invalid_file_error=Ðевалидна или корумпирана PDF датотека. -last_page.label=Оди до поÑледната Ñтраница -page_rotate_ccw.label=Ротирај Ñпротивно од Ñтрелките на чаÑовникот -page_rotate_cw.label=Ротирај по Ñтрелките на чаÑовникот -presentation_mode.title=Премини во презентациÑки режим -presentation_mode_label=ПрезентациÑки режим - -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -missing_file_error=ÐедоÑтаÑува PDF документ. -printing_not_ready=Предупредување: PDF документот не е целоÑно вчитан за печатење. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Вклучи Ñтранична лента -toggle_sidebar_label=Вклучи Ñтранична лента -web_fonts_disabled=Интернет фонтовите Ñе оневозможени: не може да Ñе кориÑтат вградените PDF фонтови. diff --git a/public/pdfjs/web/locale/ml/viewer.properties b/public/pdfjs/web/locale/ml/viewer.properties deleted file mode 100644 index 27fa99b5..00000000 --- a/public/pdfjs/web/locale/ml/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=à´®àµà´®àµà´ªàµà´³àµà´³ താളàµâ€ -previous_label=à´®àµà´®àµà´ªàµàµ -next.title=à´…à´Ÿàµà´¤àµà´¤ താളàµâ€ -next_label=à´…à´Ÿàµà´¤àµà´¤à´¤àµàµ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=താളàµâ€: -page_of={{pageCount}} - -zoom_out.title=ചെറàµà´¤à´¾à´•àµà´•àµà´• -zoom_out_label=ചെറàµà´¤à´¾à´•àµà´•àµà´• -zoom_in.title=വലàµà´¤à´¾à´•àµà´•àµà´• -zoom_in_label=വലàµà´¤à´¾à´•àµà´•àµà´• -zoom.title=à´µàµà´¯à´¾à´ªàµà´¤à´¿ മാറàµà´±àµà´• -presentation_mode.title=à´ªàµà´°à´¸à´¨àµà´±àµ‡à´·à´¨àµâ€ രീതിയിലേകàµà´•àµàµ മാറàµà´±àµà´• -presentation_mode_label=à´ªàµà´°à´¸à´¨àµà´±àµ‡à´·à´¨àµâ€ രീതി -open_file.title=ഫയലàµâ€ à´¤àµà´±à´•àµà´•àµà´• -open_file_label=à´¤àµà´±à´•àµà´•àµà´• -print.title=à´ªàµà´°à´¿à´¨àµà´±àµ ചെയàµà´¯àµà´• -print_label=à´ªàµà´°à´¿à´¨àµà´±àµ ചെയàµà´¯àµà´• -download.title=ഡൌണàµâ€à´²àµ‡à´¾à´¡àµ ചെയàµà´¯àµà´• -download_label=ഡൌണàµâ€à´²àµ‡à´¾à´¡àµ ചെയàµà´¯àµà´• -bookmark.title=നിലവിലàµà´³àµà´³ കാഴàµà´š (à´ªàµà´¤à´¿à´¯ ജാലകതàµà´¤à´¿à´²àµâ€ പകരàµâ€à´¤àµà´¤àµà´• à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ à´¤àµà´±à´•àµà´•àµà´•) -bookmark_label=നിലവിലàµà´³àµà´³ കാഴàµà´š - -# Secondary toolbar and context menu -tools.title=ഉപകരണങàµà´™à´³àµâ€ -tools_label=ഉപകരണങàµà´™à´³àµâ€ -first_page.title=ആദàµà´¯à´¤àµà´¤àµ† താളിലേയàµà´•àµà´•àµàµ പോകàµà´• -first_page.label=ആദàµà´¯à´¤àµà´¤àµ† താളിലേയàµà´•àµà´•àµàµ പോകàµà´• -first_page_label=ആദàµà´¯à´¤àµà´¤àµ† താളിലേയàµà´•àµà´•àµàµ പോകàµà´• -last_page.title=അവസാന താളിലേയàµà´•àµà´•àµàµ പോകàµà´• -last_page.label=അവസാന താളിലേയàµà´•àµà´•àµàµ പോകàµà´• -last_page_label=അവസാന താളിലേയàµà´•àµà´•àµàµ പോകàµà´• -page_rotate_cw.title=ഘടികാരദിശയിലàµâ€ കറകàµà´•àµà´• -page_rotate_cw.label=ഘടികാരദിശയിലàµâ€ കറകàµà´•àµà´• -page_rotate_cw_label=ഘടികാരദിശയിലàµâ€ കറകàµà´•àµà´• -page_rotate_ccw.title=ഘടികാര ദിശയàµà´•àµà´•àµàµ വിപരീതമായി കറകàµà´•àµà´• -page_rotate_ccw.label=ഘടികാര ദിശയàµà´•àµà´•àµàµ വിപരീതമായി കറകàµà´•àµà´• -page_rotate_ccw_label=ഘടികാര ദിശയàµà´•àµà´•àµàµ വിപരീതമായി കറകàµà´•àµà´• - -hand_tool_enable.title=ഹാനàµâ€à´¡àµ ടൂളàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ സജàµà´œà´®à´¾à´•àµà´•àµà´• -hand_tool_enable_label=ഹാനàµâ€à´¡àµ ടൂളàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ സജàµà´œà´®à´¾à´•àµà´•àµà´• -hand_tool_disable.title=ഹാനàµâ€à´¡àµ ടൂളàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ രഹിതമാകàµà´•àµà´• -hand_tool_disable_label=ഹാനàµâ€à´¡àµ ടൂളàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ രഹിതമാകàµà´•àµà´• - -# Document properties dialog box -document_properties.title=രേഖയàµà´Ÿàµ† വിശേഷതകളàµâ€... -document_properties_label=രേഖയàµà´Ÿàµ† വിശേഷതകളàµâ€... -document_properties_file_name=ഫയലിനàµà´±àµ† പേരàµâ€Œ: -document_properties_file_size=ഫയലിനàµà´±àµ† വലിപàµà´ªà´‚:‌‌ -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} കെബി ({{size_b}} ബൈറàµà´±àµà´•à´³àµâ€) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} എംബി ({{size_b}} ബൈറàµà´±àµà´•à´³àµâ€) -document_properties_title=തലകàµà´•àµ†à´Ÿàµà´Ÿàµâ€Œ\u0020 -document_properties_author=രചയിതാവàµ: -document_properties_subject=വിഷയം: -document_properties_keywords=കീവേരàµâ€à´¡àµà´•à´³àµâ€: -document_properties_creation_date=പൂരàµâ€à´¤àµà´¤à´¿à´¯à´¾à´•àµà´¨àµà´¨ തീയതി: -document_properties_modification_date=മാറàµà´±à´‚ വരàµà´¤àµà´¤à´¿à´¯ തീയതി: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=സൃഷàµà´Ÿà´¿à´•à´°àµâ€à´¤àµà´¤à´¾à´µàµ: -document_properties_producer=പിഡിഎഫൠപàµà´°àµŠà´¡àµà´¯àµ‚സരàµâ€: -document_properties_version=പിഡിഎഫൠപതിപàµà´ªàµ: -document_properties_page_count=താളിനàµà´±àµ† à´Žà´£àµà´£à´‚: -document_properties_close=à´…à´Ÿà´¯àµà´•àµà´•àµà´• - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=സൈഡൠബാറിലേകàµà´•àµàµ മാറàµà´±àµà´• -toggle_sidebar_label=സൈഡൠബാറിലേകàµà´•àµàµ മാറàµà´±àµà´• -outline.title=രേഖയàµà´Ÿàµ† ഔടàµà´Ÿàµà´²àµˆà´¨àµâ€ കാണിയàµà´•àµà´•àµà´• -outline_label=രേഖയàµà´Ÿàµ† ഔടàµà´Ÿàµà´²àµˆà´¨àµâ€ -attachments.title=à´…à´±àµà´±à´¾à´šàµà´®àµ†à´¨àµà´±àµà´•à´³àµâ€ കാണിയàµà´•àµà´•àµà´• -attachments_label=à´…à´±àµà´±à´¾à´šàµà´®àµ†à´¨àµà´±àµà´•à´³àµâ€ -thumbs.title=തംബàµà´¨àµ†à´¯à´¿à´²àµà´•à´³àµâ€ കാണിയàµà´•àµà´•àµà´• -thumbs_label=തംബàµà´¨àµ†à´¯à´¿à´²àµà´•à´³àµâ€ -findbar.title=രേഖയിലàµâ€ à´•à´£àµà´Ÿàµà´ªà´¿à´Ÿà´¿à´¯àµà´•àµà´•àµà´• -findbar_label=à´•à´£àµà´Ÿàµ†à´¤àµà´¤àµà´•\u0020 - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=താളàµâ€ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} താളിനàµà´³àµà´³ തംബàµà´¨àµ†à´¯à´¿à´²àµâ€ - -# Find panel button title and messages -find_label=à´•à´£àµà´Ÿàµ†à´¤àµà´¤àµà´• -find_previous.title=വാചകം ഇതിനൠമàµà´¨àµâ€à´ªàµâ€Œ ആവരàµâ€à´¤àµà´¤à´¿à´šàµà´šà´¤àµâ€Œ à´•à´£àµà´Ÿàµ†à´¤àµà´¤àµà´•\u0020 -find_previous_label=à´®àµà´®àµà´ªàµàµ -find_next.title=വാചകം വീണàµà´Ÿàµà´‚ ആവരàµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨à´¤àµâ€Œ à´•à´£àµà´Ÿàµ†à´¤àµà´¤àµà´•\u0020 -find_next_label=à´…à´Ÿàµà´¤àµà´¤à´¤àµàµ -find_highlight=à´Žà´²àµà´²à´¾à´‚ à´Žà´Ÿàµà´¤àµà´¤àµà´•à´¾à´£à´¿à´¯àµà´•àµà´•àµà´• -find_match_case_label=à´…à´•àµà´·à´°à´™àµà´™à´³àµâ€ à´’à´¤àµà´¤àµà´¨àµ‹à´•àµà´•àµà´• -find_reached_top=രേഖയàµà´Ÿàµ† à´®àµà´•à´³à´¿à´²àµâ€ à´Žà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ, താഴെ നിനàµà´¨àµà´‚ à´¤àµà´Ÿà´°àµà´¨àµà´¨àµ -find_reached_bottom=രേഖയàµà´Ÿàµ† അവസാനം വരെ à´Žà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ, à´®àµà´•à´³à´¿à´²àµâ€ നിനàµà´¨àµà´‚ à´¤àµà´Ÿà´°àµà´¨àµà´¨àµ\u0020 -find_not_found=വാചകം à´•à´£àµà´Ÿàµ†à´¤àµà´¤à´¾à´¨à´¾à´¯à´¿à´²àµà´²\u0020 - -# Error panel labels -error_more_info=കൂടàµà´¤à´²àµâ€ വിവരം -error_less_info=à´•àµà´±à´šàµà´šàµ വിവരം -error_close=à´…à´Ÿà´¯àµà´•àµà´•àµà´• -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=സനàµà´¦àµ‡à´¶à´‚: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=à´¸àµà´±àµà´±à´¾à´•àµà´•àµ: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ഫയലàµâ€: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=വരി: {{line}} -rendering_error=താളàµâ€ റെണàµà´Ÿà´°àµâ€ ചെയàµà´¯àµà´®àµà´ªàµ‹à´³àµâ€â€Œ പിശകàµà´£àµà´Ÿà´¾à´¯à´¿à´°à´¿à´¯àµà´•àµà´•àµà´¨àµà´¨àµ. - -# Predefined zoom values -page_scale_width=താളിനàµà´±àµ† വീതി -page_scale_fit=താളàµâ€ പാകതàµà´¤à´¿à´¨à´¾à´•àµà´•àµà´• -page_scale_auto=à´¸àµà´µà´¯à´®à´¾à´¯à´¿ വലàµà´¤à´¾à´•àµà´•àµà´• -page_scale_actual=യഥാരàµâ€à´¤àµà´¥ à´µàµà´¯à´¾à´ªàµà´¤à´¿ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=പിശകൠ-loading_error=പിഡിഎഫൠലà´àµà´¯à´®à´¾à´•àµà´•àµà´®àµà´ªàµ‹à´³àµâ€ പിശകൠഉണàµà´Ÿà´¾à´¯à´¿à´°à´¿à´¯àµà´•àµà´•àµà´¨àµà´¨àµ. -invalid_file_error=തെറàµà´±à´¾à´¯ à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ തകരാറàµà´³àµà´³ പിഡിഎഫൠഫയലàµâ€. -missing_file_error=പിഡിഎഫൠഫയലàµâ€ à´²à´àµà´¯à´®à´²àµà´². -unexpected_response_error=à´ªàµà´°à´¤àµ€à´•àµà´·à´¿à´•àµà´•à´¾à´¤àµà´¤ സെരàµâ€à´µà´°àµâ€ മറàµà´ªà´Ÿà´¿. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=à´ˆ പിഡിഎഫൠഫയലàµâ€ à´¤àµà´±à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµàµ രഹസàµà´¯à´µà´¾à´•àµà´•àµ നലàµâ€à´•àµà´•. -password_invalid=തെറàµà´±à´¾à´¯ രഹസàµà´¯à´µà´¾à´•àµà´•àµ, ദയവായി വീണàµà´Ÿàµà´‚ à´¶àµà´°à´®à´¿à´¯àµà´•àµà´•àµà´•. -password_ok=ശരി -password_cancel=റദàµà´¦à´¾à´•àµà´•àµà´• - -printing_not_supported=à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ: à´ˆ à´¬àµà´°àµŒà´¸à´°àµâ€ പൂരàµâ€à´£àµà´£à´®à´¾à´¯à´¿ à´ªàµà´°à´¿à´¨àµà´±à´¿à´™àµ പിനàµà´¤àµà´£à´¯àµà´•àµà´•àµà´¨àµà´¨à´¿à´²àµà´². -printing_not_ready=à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ: à´ªàµà´°à´¿à´¨àµà´±àµ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµàµ പിഡിഎഫൠപൂരàµâ€à´£àµà´£à´®à´¾à´¯à´¿ à´²à´àµà´¯à´®à´²àµà´². -web_fonts_disabled=വെബിനàµà´³àµà´³ à´…à´•àµà´·à´°à´¸à´žàµà´šà´¯à´™àµà´™à´³àµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ രഹിതം: എംബഡàµà´¡àµ ചെയàµà´¤ പിഡിഎഫൠഅകàµà´·à´°à´¸à´žàµà´šà´¯à´™àµà´™à´³àµâ€ ഉപയോഗിയàµà´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´². -document_colors_disabled=à´¸àµà´µà´¨àµà´¤à´‚ നിറങàµà´™à´³àµâ€ ഉപയോഗിയàµà´•àµà´•àµà´µà´¾à´¨àµâ€ പിഡിഎഫൠരേഖകളàµâ€à´•àµà´•àµàµ à´…à´¨àµà´µà´¾à´¦à´®à´¿à´²àµà´²: 'à´¸àµà´µà´¨àµà´¤à´‚ നിറങàµà´™à´³àµâ€ ഉപയോഗിയàµà´•àµà´•àµà´µà´¾à´¨àµâ€ താളàµà´•à´³àµ† à´…à´¨àµà´µà´¦à´¿à´¯àµà´•àµà´•àµà´•' à´Žà´¨àµà´¨à´¤àµàµ à´¬àµà´°àµŒà´¸à´±à´¿à´²àµâ€ നിരàµâ€à´œàµ€à´µà´®à´¾à´£àµàµ. diff --git a/public/pdfjs/web/locale/mn/viewer.properties b/public/pdfjs/web/locale/mn/viewer.properties deleted file mode 100644 index dfa1d6dd..00000000 --- a/public/pdfjs/web/locale/mn/viewer.properties +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. - -zoom.title=ТÑлÑлт -open_file.title=Файл нÑÑ -open_file_label=ÐÑÑ - -# Secondary toolbar and context menu - - -# Document properties dialog box -document_properties_file_name=Файлын нÑÑ€: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Гарчиг: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -findbar_label=Ол - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages -find_previous.title=Хайлтын өмнөх олдцыг харуулна -find_next.title=Хайлтын дараагийн олдцыг харуулна -find_not_found=ОлдÑонгүй - -# Error panel labels -error_more_info=ÐÑмÑлт мÑдÑÑлÑл -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Ðлдаа - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=OK -password_cancel=Цуцал - diff --git a/public/pdfjs/web/locale/mr/viewer.properties b/public/pdfjs/web/locale/mr/viewer.properties deleted file mode 100644 index 417c6d4c..00000000 --- a/public/pdfjs/web/locale/mr/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=मागील पृषà¥à¤ -previous_label=मागील -next.title=पà¥à¤¢à¥€à¤² पृषà¥à¤ -next_label=पà¥à¤¢à¥€à¤² - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=पृषà¥à¤ : -page_of=पैकी {{pageCount}} - -zoom_out.title=छोटे करा -zoom_out_label=छोटे करा -zoom_in.title=मोठे करा -zoom_in_label=मोठे करा -zoom.title=लहान किंवा मोठे करा -presentation_mode.title=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿à¤•à¤°à¤£ मोडचा वापर करा -presentation_mode_label=पà¥à¤°à¤¸à¥à¤¤à¥à¤¤à¤¿à¤•à¤°à¤£ मोड -open_file.title=फाइल उघडा -open_file_label=उघडा -print.title=छपाई करा -print_label=छपाई करा -download.title=डाउनलोड करा -download_label=डाउनलोड करा -bookmark.title=सधà¥à¤¯à¤¾à¤šà¥‡ अवलोकन (नविन पटलात पà¥à¤°à¤¤ बनवा किंवा उघडा) -bookmark_label=सधà¥à¤¯à¤¾à¤šà¥‡ अवलोकन - -# Secondary toolbar and context menu -tools.title=साधने -tools_label=साधने -first_page.title=पहिलà¥à¤¯à¤¾ पानावर जा -first_page.label=पहिलà¥à¤¯à¤¾ पानावर जा -first_page_label=पहिलà¥à¤¯à¤¾ पानावर जा -last_page.title=शेवटचà¥à¤¯à¤¾ पानावर जा -last_page.label=शेवटचà¥à¤¯à¤¾ पानावर जा -last_page_label=शेवटचà¥à¤¯à¤¾ पानावर जा -page_rotate_cw.title=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ दिशेने फिरवा -page_rotate_cw.label=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ दिशेने फिरवा -page_rotate_cw_label=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ दिशेने फिरवा -page_rotate_ccw.title=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ उलट दिशेने फिरवा -page_rotate_ccw.label=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ उलट दिशेने फिरवा -page_rotate_ccw_label=घडà¥à¤¯à¤¾à¤³à¤¾à¤šà¥à¤¯à¤¾ काटà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ उलट दिशेने फिरवा - -hand_tool_enable.title=हात साधन सà¥à¤°à¥‚ करा -hand_tool_enable_label=हात साधन सà¥à¤°à¥‚ करा -hand_tool_disable.title=हात साधन बंद करा -hand_tool_disable_label=हात साधन बंद करा - -# Document properties dialog box -document_properties.title=दसà¥à¤¤à¤à¤µà¤œ गà¥à¤£à¤§à¤°à¥à¤®â€¦ -document_properties_label=दसà¥à¤¤à¤à¤µà¤œ गà¥à¤£à¤§à¤°à¥à¤®â€¦ -document_properties_file_name=फाइलचे नाव: -document_properties_file_size=फाइल आकार: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} बाइटà¥à¤¸) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} बाइटà¥à¤¸) -document_properties_title=शिरà¥à¤·à¤•: -document_properties_author=लेखक: -document_properties_subject=विषय: -document_properties_keywords=मà¥à¤–à¥à¤¯à¤¶à¤¬à¥à¤¦: -document_properties_creation_date=निरà¥à¤®à¤¾à¤£ दिनांक: -document_properties_modification_date=दà¥à¤°à¥‚सà¥à¤¤à¥€ दिनांक: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=निरà¥à¤®à¤¾à¤¤à¤¾: -document_properties_producer=PDF निरà¥à¤®à¤¾à¤¤à¤¾: -document_properties_version=PDF आवृतà¥à¤¤à¥€: -document_properties_page_count=पृषà¥à¤ संखà¥à¤¯à¤¾: -document_properties_close=बंद करा - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=बाजूचीपटà¥à¤Ÿà¥€ टॉगल करा -toggle_sidebar_label=बाजूचीपटà¥à¤Ÿà¥€ टॉगल करा -outline.title=दसà¥à¤¤à¤à¤µà¤œ रूपरेषा दाखवा -outline_label=दसà¥à¤¤à¤à¤µà¤œ रूपरेषा -attachments.title=जोडपतà¥à¤° दाखवा -attachments_label=जोडपतà¥à¤° -thumbs.title=थंबनेलà¥à¤¸à¥ दाखवा -thumbs_label=थंबनेलà¥à¤¸à¥ -findbar.title=दसà¥à¤¤à¤à¤µà¤œà¤¾à¤¤ शोधा -findbar_label=शोधा - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=पृषà¥à¤ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=पृषà¥à¤ ाचे थंबनेल {{page}} - -# Find panel button title and messages -find_label=शोधा: -find_previous.title=वाकपà¥à¤°à¤¯à¥‹à¤—ची मागील घटना शोधा -find_previous_label=मागील -find_next.title=वाकपà¥à¤°à¤¯à¥‹à¤—ची पà¥à¤¢à¥€à¤² घटना शोधा -find_next_label=पà¥à¤¢à¥€à¤² -find_highlight=सरà¥à¤µ ठळक करा -find_match_case_label=आकार जà¥à¤³à¤µà¤¾ -find_reached_top=दसà¥à¤¤à¤à¤µà¤œà¤¾à¤šà¥à¤¯à¤¾ शीरà¥à¤·à¤•à¤¾à¤¸ पोहचले, तळपासून पà¥à¤¢à¥‡ -find_reached_bottom=दसà¥à¤¤à¤à¤µà¤œà¤¾à¤šà¥à¤¯à¤¾ तळाला पोहचले, शीरà¥à¤·à¤•à¤¾à¤ªà¤¾à¤¸à¥‚न पà¥à¤¢à¥‡ -find_not_found=वाकपà¥à¤°à¤¯à¥‹à¤— आढळले नाही - -# Error panel labels -error_more_info=आणखी माहिती -error_less_info=कमी माहिती -error_close=बंद करा -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=संदेश: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=सà¥à¤Ÿà¥…क: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=फाइल: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=रेष: {{line}} -rendering_error=पृषà¥à¤ दाखवतेवेळी तà¥à¤°à¥à¤Ÿà¥€ आढळली. - -# Predefined zoom values -page_scale_width=पृषà¥à¤ ाची रूंदी -page_scale_fit=पृषà¥à¤ बसवा -page_scale_auto=सà¥à¤µà¤¯à¤‚ लाहन किंवा मोठे करणे -page_scale_actual=पà¥à¤°à¤¤à¥à¤¯à¤•à¥à¤· आकार -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=तà¥à¤°à¥à¤Ÿà¥€ -loading_error=PDF लोड करतेवेळी तà¥à¤°à¥à¤Ÿà¥€ आढळली. -invalid_file_error=अवैध किंवा दोषीत PDF फाइल. -missing_file_error=न आढळणारी PDF फाइल. -unexpected_response_error=अनपेकà¥à¤·à¤¿à¤¤ सरà¥à¤µà¥à¤¹à¤° पà¥à¤°à¤¤à¤¿à¤¸à¤¾à¤¦. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} टिपणà¥à¤£à¥€] -password_label=ही PDF फाइल उघडणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ पासवरà¥à¤¡ दà¥à¤¯à¤¾. -password_invalid=अवैध पासवरà¥à¤¡. कृपया पà¥à¤¨à¥à¤¹à¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ करा. -password_ok=ठीक आहे -password_cancel=रदà¥à¤¦ करा - -printing_not_supported=सावधानता: या बà¥à¤°à¤¾à¤‰à¤œà¤°à¤¤à¤°à¥à¤«à¥‡ छपाइ पूरà¥à¤£à¤ªà¤£à¥‡ समरà¥à¤¥à¥€à¤¤ नाही. -printing_not_ready=सावधानता: छपाईकरिता PDF पूरà¥à¤£à¤¤à¤¯à¤¾ लोड à¤à¤¾à¤²à¥‡ नाही. -web_fonts_disabled=वेब फाà¤à¤Ÿà¥à¤¸ असमरà¥à¤¥à¥€à¤¤ आहेत: à¤à¤®à¥à¤¬à¥‡à¤¡à¥‡à¤¡ PDF फाà¤à¤Ÿà¥à¤¸à¥à¤šà¤¾ वापर अशकà¥à¤¯. -document_colors_disabled=PDF दसà¥à¤¤à¤¾à¤à¤µà¤œà¤¾à¤‚ना तà¥à¤¯à¤¾à¤‚चे रंग वापरणà¥à¤¯à¤¾à¤¸ अनà¥à¤®à¤¤à¥€ नाही: बà¥à¤°à¤¾à¤‰à¤œà¤°à¤®à¤§à¥à¤¯à¥‡ ' पानांना तà¥à¤¯à¤¾à¤‚चे रंग निवडणà¥à¤¯à¤¾à¤¸ अनà¥à¤®à¤¤à¥€ दà¥à¤¯à¤¾' बंद केले आहे. diff --git a/public/pdfjs/web/locale/ms/viewer.properties b/public/pdfjs/web/locale/ms/viewer.properties deleted file mode 100644 index d5e8dec3..00000000 --- a/public/pdfjs/web/locale/ms/viewer.properties +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Laman Sebelumnya -previous_label=Terdahulu -next.title=Laman seterusnya -next_label=Berikut - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Laman: -page_of=daripada {{pageCount}} - -zoom_out.title=Zum Keluar -zoom_out_label=Zum Keluar -zoom_in.title=Zum Masuk -zoom_in_label=Zum Masuk -zoom.title=Zum -presentation_mode.title=Bertukar ke Mod Persembahan -presentation_mode_label=Mod Persembahan -open_file.title=Buka Fail -open_file_label=Buka -print.title=Cetak -print_label=Cetak -download.title=Muat turun -download_label=Muat turun -bookmark.title=Pandangan semasa (salinan atau dibuka dalam tetingkap baru) -bookmark_label=Lihat semasa - -# Secondary toolbar and context menu -tools.title=Alatan -tools_label=Alatan -first_page.title=Pergi ke Halaman Pertama -first_page.label=Pergi ke Halaman Pertama -first_page_label=Pergi ke Halaman Pertama -last_page.title=Pergi ke Halaman Terakhir -last_page.label=Pergi ke Halaman Terakhir -last_page_label=Pergi ke Halaman Terakhir -page_rotate_cw.title=Berputar ikut arah Jam -page_rotate_cw.label=Berputar ikut arah Jam -page_rotate_cw_label=Berputar ikut arah Jam -page_rotate_ccw.title=Pusing berlawan arah jam -page_rotate_ccw.label=Pusing berlawan arah jam -page_rotate_ccw_label=Pusing berlawan arah jam - -hand_tool_enable.title=Bolehkan alatan tangan -hand_tool_enable_label=Bolehkan alatan tangan -hand_tool_disable.title=Lumpuhkan alatan tangan -hand_tool_disable_label=Lumpuhkan alatan tangan - -# Document properties dialog box -document_properties.title=Ciri Dokumen… -document_properties_label=Ciri Dokumen… -document_properties_file_name=Nama fail: -document_properties_file_size=Saiz fail: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bait) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bait) -document_properties_title=Tajuk: -document_properties_author=Pengarang: -document_properties_subject=Subjek: -document_properties_keywords=Kata kunci: -document_properties_creation_date=Masa Dicipta: -document_properties_modification_date=Tarikh Ubahsuai: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Pencipta: -document_properties_producer=Pengeluar PDF: -document_properties_version=Versi PDF: -document_properties_page_count=Kiraan Laman: -document_properties_close=Tutup - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Togol Bar Sisi -toggle_sidebar_label=Togol Bar Sisi -outline.title=Tunjuk Rangka Dokumen -outline_label=Rangka Dokument -attachments.title=Tunjuk Lampiran -attachments_label=Lampiran -thumbs.title=Tunjuk Imej kecil -thumbs_label=Imej kecil -findbar.title=Cari didalam Dokumen -findbar_label=Cari - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Halaman {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Halaman Imej kecil {{page}} - -# Find panel button title and messages -find_label=Cari: -find_previous.title=Cari teks frasa berkenaan yang terdahulu -find_previous_label=Sebelumnya -find_next.title=Cari teks frasa berkenaan yang berikut -find_next_label=Berikut -find_highlight=Serlahkan semua -find_match_case_label=Kes Sepadan -find_reached_top=Mencapai teratas daripada dokumen, sambungan daripada bawah -find_reached_bottom=Mencapai terakhir daripada dokumen, sambungan daripada atas -find_not_found=Frasa tidak ditemui - -# Error panel labels -error_more_info=Maklumat lanjut -error_less_info=Kurang Informasi -error_close=Tutup -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mesej: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Timbun: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fail: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Garis: {{line}} -rendering_error=Ralat berlaku ketika memberikan halaman. - -# Predefined zoom values -page_scale_width=Lebar Halaman -page_scale_fit=Muat Halaman -page_scale_auto=Zoom Automatik -page_scale_actual=Saiz Sebenar -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Ralat -loading_error=Masalah berlaku semasa menuatkan sebuah PDF. -invalid_file_error=Tidak sah atau fail PDF rosak. -missing_file_error=Fail PDF Hilang. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Anotasi] -password_label=Masukan kata kunci untuk membuka fail PDF ini. -password_invalid=Kata laluan salah. Cuba lagi. -password_ok=OK -password_cancel=Batal - -printing_not_supported=Amaran: Cetakan ini tidak sepenuhnya disokong oleh pelayar ini. -printing_not_ready=Amaran: PDF tidak sepenuhnya dimuatkan untuk dicetak. -web_fonts_disabled=Fon web dilumpuhkan: tidak dapat fon PDF terbenam. -document_colors_disabled=Dokumen PDF tidak dibenarkan untuk menggunakan warna sendiri: 'Benarkan muka surat untuk memilih warna sendiri' telah dinyahaktif dalam pelayar. diff --git a/public/pdfjs/web/locale/my/viewer.properties b/public/pdfjs/web/locale/my/viewer.properties deleted file mode 100644 index 2723a944..00000000 --- a/public/pdfjs/web/locale/my/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=အရင် စာမျက်နှာ -previous_label=အရင်နေရာ -next.title=ရှေ့ စာမျက်နှာ -next_label=နောက်á€á€á€¯ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=စာမျက်နှာ - -page_of=á {{pageCount}} - -zoom_out.title=á€á€»á€¯á€¶á€·á€•á€« -zoom_out_label=á€á€»á€¯á€¶á€·á€•á€« -zoom_in.title=á€á€»á€²á€·á€•á€« -zoom_in_label=á€á€»á€²á€·á€•á€« -zoom.title=á€á€»á€¯á€¶á€·/á€á€»á€²á€·á€•á€« -presentation_mode.title=Switch to Presentation Mode -presentation_mode_label=Presentation Mode -open_file.title=ဖá€á€¯á€„်အားဖွင့်ပါዠ-open_file_label=ဖွင့်ပါ -print.title=ပုံနှá€á€¯á€•á€ºá€•á€« -print_label=ပုံနှá€á€¯á€•á€ºá€•á€« -download.title=ကူးဆွဲ -download_label=ကူးဆွဲ -bookmark.title=လက်ရှဠမြင်ကွင်း (á€á€„်းဒá€á€¯á€¸á€¡á€žá€…်မှာ ကူးပါ သá€á€¯á€·á€™á€Ÿá€¯á€á€º ဖွင့်ပါ) -bookmark_label=လက်ရှဠမြင်ကွင်း - -# Secondary toolbar and context menu -tools.title=ကá€á€›á€á€šá€¬á€™á€»á€¬á€¸ -tools_label=ကá€á€›á€á€šá€¬á€™á€»á€¬á€¸ -first_page.title=ပထမ စာမျက်နှာသá€á€¯á€· -first_page.label=ပထမ စာမျက်နှာသá€á€¯á€· -first_page_label=ပထမ စာမျက်နှာသá€á€¯á€· -last_page.title=နောက်ဆုံး စာမျက်နှာသá€á€¯á€· -last_page.label=နောက်ဆုံး စာမျက်နှာသá€á€¯á€· -last_page_label=နောက်ဆုံး စာမျက်နှာသá€á€¯á€· -page_rotate_cw.title=နာရီလက်á€á€¶ အá€á€á€¯á€„်း -page_rotate_cw.label=နာရီလက်á€á€¶ အá€á€á€¯á€„်း -page_rotate_cw_label=နာရီလက်á€á€¶ အá€á€á€¯á€„်း -page_rotate_ccw.title=နာရီလက်á€á€¶ ပြောင်းပြန် -page_rotate_ccw.label=နာရီလက်á€á€¶ ပြောင်းပြန် -page_rotate_ccw_label=နာရီလက်á€á€¶ ပြောင်းပြန် - -hand_tool_enable.title=လက်ကá€á€¯á€„် ကá€á€›á€á€šá€¬á€¡á€¬á€¸á€žá€¯á€¶á€¸ -hand_tool_enable_label=လက်ကá€á€¯á€„် ကá€á€›á€á€šá€¬á€–ွင့် -hand_tool_disable.title=လက်ကá€á€¯á€„် ကá€á€›á€á€šá€¬á€¡á€¬á€¸á€•á€á€á€º -hand_tool_disable_label=လက်ကá€á€¯á€„်ကá€á€›á€á€šá€¬ အားပá€á€á€º - -# Document properties dialog box -document_properties.title=မှá€á€ºá€á€™á€ºá€¸á€™á€¾á€á€ºá€›á€¬ ဂုá€á€ºá€žá€á€¹á€á€á€™á€»á€¬á€¸ -document_properties_label=မှá€á€ºá€á€™á€ºá€¸á€™á€¾á€á€ºá€›á€¬ ဂုá€á€ºá€žá€á€¹á€á€á€™á€»á€¬á€¸ -document_properties_file_name=ဖá€á€¯á€„် : -document_properties_file_size=ဖá€á€¯á€„်ဆá€á€¯á€’် : -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} ကီလá€á€¯á€˜á€á€¯á€á€º ({size_kb}}ဘá€á€¯á€á€º) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=á€á€±á€«á€„်းစဉ်‌ - -document_properties_author=ရေးသားသူ: -document_properties_subject=အကြောင်းအရာ:\u0020 -document_properties_keywords=သော့á€á€»á€€á€º စာလုံး: -document_properties_creation_date=ထုá€á€ºá€œá€¯á€•á€ºá€›á€€á€ºá€…ွဲ: -document_properties_modification_date=ပြင်ဆင်ရက်စွဲ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ဖန်á€á€®á€¸á€žá€°: -document_properties_producer=PDF ထုá€á€ºá€œá€¯á€•á€ºá€žá€°: -document_properties_version=PDF ဗားရှင်း: -document_properties_page_count=စာမျက်နှာအရေအá€á€½á€€á€º: -document_properties_close=ပá€á€á€º - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ဘေးá€á€”်းဖွင့်ပá€á€á€º -toggle_sidebar_label=ဖွင့်ပá€á€á€º ဆလá€á€¯á€€á€ºá€’ါ -outline.title=စာá€á€™á€ºá€¸ မူကြမ်း ကá€á€¯á€•á€¼á€•á€« -outline_label=စာá€á€™á€ºá€¸ မူကြမ်း -attachments.title=á€á€½á€²á€á€»á€€á€ºá€™á€»á€¬á€¸ ပြပါ -attachments_label=á€á€½á€²á€‘ားá€á€»á€€á€ºá€™á€»á€¬á€¸ -thumbs.title=ပုံရá€á€•á€ºá€„ယ်များကá€á€¯ ပြပါ -thumbs_label=ပုံရá€á€•á€ºá€„ယ်များ -findbar.title=Find in Document -findbar_label=ရှာဖွေပါ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=စာမျက်နှာ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=စာမျက်နှာရဲ့ ပုံရá€á€•á€ºá€„ယ် {{page}} - -# Find panel button title and messages -find_label=ရှာဖွေပါ - -find_previous.title=စကားစုရဲ့ အရင် ​ဖြစ်ပွားမှုကá€á€¯ ရှာဖွေပါ -find_previous_label=နောက်သá€á€¯á€· -find_next.title=စကားစုရဲ့ နောက်ထပ် ​ဖြစ်ပွားမှုကá€á€¯ ရှာဖွေပါ -find_next_label=ရှေ့သá€á€¯á€· -find_highlight=အားလုံးကá€á€¯ မျဉ်းသားပါ -find_match_case_label=စာလုံး á€á€á€¯á€€á€ºá€†á€á€¯á€„်ပါ -find_reached_top=စာမျက်နှာထá€á€•á€º ရောက်နေပြီአအဆုံးကနေ ပြန်စပါ -find_reached_bottom=စာမျက်နှာအဆုံး ရောက်နေပြီአထá€á€•á€ºá€€á€”ေ ပြန်စပါ -find_not_found=စကားစု မá€á€½á€±á€·á€›á€˜á€°á€¸ - -# Error panel labels -error_more_info=နောက်ထပ်အá€á€»á€€á€ºá€¡á€œá€€á€ºá€™á€»á€¬á€¸ -error_less_info=အနည်းငယ်မျှသော သá€á€„်းအá€á€»á€€á€ºá€¡á€œá€€á€º -error_close=ပá€á€á€º -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=မက်ဆေ့ - {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=အထပ် - {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ဖá€á€¯á€„် {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=လá€á€¯á€„်း - {{line}} -rendering_error=စာမျက်နှာကá€á€¯ ပုံဖော်နေá€á€»á€á€”်မှာ အမှားá€á€…်á€á€¯á€á€½á€±á€·á€›á€•á€«á€á€šá€ºá‹ - -# Predefined zoom values -page_scale_width=စာမျက်နှာ အကျယ် -page_scale_fit=စာမျက်နှာ ကွက်á€á€ -page_scale_auto=အလá€á€¯á€¡á€œá€»á€±á€¬á€€á€º á€á€»á€¯á€¶á€·á€á€»á€²á€· -page_scale_actual=အမှန်á€á€€á€šá€ºá€›á€¾á€á€á€²á€· အရွယ် -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=အမှား -loading_error=PDF ဖá€á€¯á€„် ကá€á€¯á€†á€½á€²á€á€„်နေá€á€»á€á€”်မှာ အမှားá€á€…်á€á€¯á€á€½á€±á€·á€›á€•á€«á€á€šá€ºá‹ -invalid_file_error=မရသော သá€á€¯á€· ပျက်နေသော PDF ဖá€á€¯á€„် -missing_file_error=PDF ပျောက်ဆုံး -unexpected_response_error=မမျှော်လင့်ထားသော ဆာဗာမှ ပြန်ကြားá€á€»á€€á€º - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} အဓá€á€•á€¹á€•á€¬á€šá€ºá€–ွင့်ဆá€á€¯á€á€»á€€á€º] -password_label=PDF အားဖွင့်ရန် ပá€á€ºá€…်á€á€á€ºá€¡á€¬á€¸á€‘ည့်ပါ -password_invalid=စာá€á€¾á€€á€º မှားသည်ዠထပ်ကြá€á€¯á€¸á€…ားကြည့်ပါዠ-password_ok=OK -password_cancel=ပယ်​ဖျက်ပါ - -printing_not_supported=သá€á€á€•á€±á€¸á€á€»á€€á€ºáŠá€•á€›á€„့်ထုá€á€ºá€á€¼á€„်းကá€á€¯á€¤á€˜á€šá€±á€¬á€€á€ºá€†á€¬á€žá€Šá€º ပြည့်á€á€…ွာထောက်ပံ့မထားပါ á‹ -printing_not_ready=သá€á€á€•á€±á€¸á€á€»á€€á€º: ယá€á€¯ PDF ဖá€á€¯á€„်သည် ပုံနှá€á€•á€ºá€›á€”် မပြည့်စုံပါ -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. -document_colors_disabled=PDF ဖá€á€¯á€„်အား áŽá€„်းဤ ကá€á€¯á€šá€ºá€•á€á€¯á€„်အရောင်များကá€á€¯ အသုံးပြုá€á€½á€„့်မပေးထားပါ á‹ 'စာမျက်နှာအားလုံးအားအရောင်ရွေးá€á€»á€šá€ºá€á€½á€„့်' အား ယá€á€¯ ဘယောက်ဆာá€á€½á€„် ပá€á€á€ºá€‘ားá€á€¼á€„်းကြောင့်ဖြစ် သှ် diff --git a/public/pdfjs/web/locale/nb-NO/viewer.properties b/public/pdfjs/web/locale/nb-NO/viewer.properties deleted file mode 100644 index 9b3839fa..00000000 --- a/public/pdfjs/web/locale/nb-NO/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Forrige side -previous_label=Forrige -next.title=Neste side -next_label=Neste - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Side: -page_of=av {{pageCount}} - -zoom_out.title=Zoom ut -zoom_out_label=Zoom ut -zoom_in.title=Zoom inn -zoom_in_label=Zoom inn -zoom.title=Zoom -presentation_mode.title=Bytt til presentasjonsmodus -presentation_mode_label=Presentasjonsmodus -open_file.title=Ã…pne fil -open_file_label=Ã…pne -print.title=Skriv ut -print_label=Skriv ut -download.title=Last ned -download_label=Last ned -bookmark.title=NÃ¥værende visning (kopier eller Ã¥pne i et nytt vindu) -bookmark_label=NÃ¥værende visning - -# Secondary toolbar and context menu -tools.title=Verktøy -tools_label=Verktøy -first_page.title=GÃ¥ til første side -first_page.label=GÃ¥ til første side -first_page_label=GÃ¥ til første side -last_page.title=GÃ¥ til siste side -last_page.label=GÃ¥ til siste side -last_page_label=GÃ¥ til siste side -page_rotate_cw.title=Roter med klokken -page_rotate_cw.label=Roter med klokken -page_rotate_cw_label=Roter med klokken -page_rotate_ccw.title=Roter mot klokken -page_rotate_ccw.label=Roter mot klokken -page_rotate_ccw_label=Roter mot klokken - -hand_tool_enable.title=SlÃ¥ pÃ¥ hÃ¥nd-verktøy -hand_tool_enable_label=SlÃ¥ pÃ¥ hÃ¥nd-verktøy -hand_tool_disable.title=SlÃ¥ av hÃ¥nd-verktøy -hand_tool_disable_label=SlÃ¥ av hÃ¥nd-verktøy - -# Document properties dialog box -document_properties.title=Dokumentegenskaper … -document_properties_label=Dokumentegenskaper … -document_properties_file_name=Filnavn: -document_properties_file_size=Filstørrelse: -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Tittel: -document_properties_author=Forfatter: -document_properties_subject=Emne: -document_properties_keywords=Nøkkelord: -document_properties_creation_date=Opprettet dato: -document_properties_modification_date=Endret dato: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Opprettet av: -document_properties_producer=PDF-verktøy: -document_properties_version=PDF-versjon: -document_properties_page_count=Sideantall: -document_properties_close=Lukk - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=SlÃ¥ av/pÃ¥ sidestolpe -toggle_sidebar_label=SlÃ¥ av/pÃ¥ sidestolpe -outline.title=Vis dokumentdisposisjon -outline_label=Dokumentdisposisjon -attachments.title=Vis vedlegg -attachments_label=Vedlegg -thumbs.title=Vis miniatyrbilde -thumbs_label=Miniatyrbilde -findbar.title=Finn i dokumentet -findbar_label=Finn - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Side {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatyrbilde av side {{page}} - -# Find panel button title and messages -find_label=Finn: -find_previous.title=Finn forrige forekomst av frasen -find_previous_label=Forrige -find_next.title=Finn neste forekomst av frasen -find_next_label=Neste -find_highlight=Uthev alle -find_match_case_label=Skill store/smÃ¥ bokstaver -find_reached_top=NÃ¥dde toppen av dokumentet, fortsetter fra bunnen -find_reached_bottom=NÃ¥dde bunnen av dokumentet, fortsetter fra toppen -find_not_found=Fant ikke teksten - -# Error panel labels -error_more_info=Mer info -error_less_info=Mindre info -error_close=Lukk -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (bygg: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Melding: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stakk: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linje: {{line}} -rendering_error=En feil oppstod ved opptegning av siden. - -# Predefined zoom values -page_scale_width=Sidebredde -page_scale_fit=Tilpass til siden -page_scale_auto=Automatisk zoom -page_scale_actual=Virkelig størrelse -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % - -# Loading indicator messages -loading_error_indicator=Feil -loading_error=En feil oppstod ved lasting av PDF. -invalid_file_error=Ugyldig eller skadet PDF-fil. -missing_file_error=Manglende PDF-fil. -unexpected_response_error=Uventet serverrespons. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} annotasjon] -password_label=Skriv inn passordet for Ã¥ Ã¥pne denne PDF-filen. -password_invalid=Ugyldig passord. Prøv igjen. -password_ok=OK -password_cancel=Avbryt - -printing_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren. -printing_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift. -web_fonts_disabled=Web-fonter er avslÃ¥tt: Kan ikke bruke innbundne PDF-fonter. -document_colors_disabled=PDF-dokumenter tillates ikke Ã¥ bruke deres egne farger: 'Tillat sider Ã¥ velge egne farger' er deaktivert i nettleseren. diff --git a/public/pdfjs/web/locale/nl/viewer.properties b/public/pdfjs/web/locale/nl/viewer.properties deleted file mode 100644 index 79895d26..00000000 --- a/public/pdfjs/web/locale/nl/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Vorige pagina -previous_label=Vorige -next.title=Volgende pagina -next_label=Volgende - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Pagina: -page_of=van {{pageCount}} - -zoom_out.title=Uitzoomen -zoom_out_label=Uitzoomen -zoom_in.title=Inzoomen -zoom_in_label=Inzoomen -zoom.title=Zoomen -presentation_mode.title=Wisselen naar presentatiemodus -presentation_mode_label=Presentatiemodus -open_file.title=Bestand openen -open_file_label=Openen -print.title=Afdrukken -print_label=Afdrukken -download.title=Downloaden -download_label=Downloaden -bookmark.title=Huidige weergave (kopiëren of openen in nieuw venster) -bookmark_label=Huidige weergave - -# Secondary toolbar and context menu -tools.title=Hulpmiddelen -tools_label=Hulpmiddelen -first_page.title=Naar eerste pagina gaan -first_page.label=Naar eerste pagina gaan -first_page_label=Naar eerste pagina gaan -last_page.title=Naar laatste pagina gaan -last_page.label=Naar laatste pagina gaan -last_page_label=Naar laatste pagina gaan -page_rotate_cw.title=Rechtsom draaien -page_rotate_cw.label=Rechtsom draaien -page_rotate_cw_label=Rechtsom draaien -page_rotate_ccw.title=Linksom draaien -page_rotate_ccw.label=Linksom draaien -page_rotate_ccw_label=Linksom draaien - -hand_tool_enable.title=Handhulpmiddel inschakelen -hand_tool_enable_label=Handhulpmiddel inschakelen -hand_tool_disable.title=Handhulpmiddel uitschakelen -hand_tool_disable_label=Handhulpmiddel uitschakelen - -# Document properties dialog box -document_properties.title=Documenteigenschappen… -document_properties_label=Documenteigenschappen… -document_properties_file_name=Bestandsnaam: -document_properties_file_size=Bestandsgrootte: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titel: -document_properties_author=Auteur: -document_properties_subject=Onderwerp: -document_properties_keywords=Trefwoorden: -document_properties_creation_date=Aanmaakdatum: -document_properties_modification_date=Wijzigingsdatum: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Auteur: -document_properties_producer=PDF-producent: -document_properties_version=PDF-versie: -document_properties_page_count=Aantal pagina’s: -document_properties_close=Sluiten - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Zijbalk in-/uitschakelen -toggle_sidebar_label=Zijbalk in-/uitschakelen -outline.title=Documentoverzicht tonen -outline_label=Documentoverzicht -attachments.title=Bijlagen tonen -attachments_label=Bijlagen -thumbs.title=Miniaturen tonen -thumbs_label=Miniaturen -findbar.title=Zoeken in document -findbar_label=Zoeken - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatuur van pagina {{page}} - -# Find panel button title and messages -find_label=Zoeken: -find_previous.title=Het vorige voorkomen van de tekst zoeken -find_previous_label=Vorige -find_next.title=Het volgende voorkomen van de tekst zoeken -find_next_label=Volgende -find_highlight=Alles markeren -find_match_case_label=Hoofdlettergevoelig -find_reached_top=Bovenkant van het document bereikt, doorgegaan vanaf de onderkant -find_reached_bottom=Onderkant van het document bereikt, doorgegaan vanaf de bovenkant -find_not_found=Tekst niet gevonden - -# Error panel labels -error_more_info=Meer informatie -error_less_info=Minder informatie -error_close=Sluiten -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Bericht: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Bestand: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Regel: {{line}} -rendering_error=Er is een fout opgetreden bij het weergeven van de pagina. - -# Predefined zoom values -page_scale_width=Paginabreedte -page_scale_fit=Hele pagina -page_scale_auto=Automatisch zoomen -page_scale_actual=Werkelijke grootte -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Fout -loading_error=Er is een fout opgetreden bij het laden van de PDF. -invalid_file_error=Ongeldig of beschadigd PDF-bestand. -missing_file_error=PDF-bestand ontbreekt. -unexpected_response_error=Onverwacht serverantwoord. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-aantekening] -password_label=Voer het wachtwoord in om dit PDF-bestand te openen. -password_invalid=Ongeldig wachtwoord. Probeer het opnieuw. -password_ok=OK -password_cancel=Annuleren - -printing_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser. -printing_not_ready=Waarschuwing: de PDF is niet volledig geladen voor afdrukken. -web_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk. -document_colors_disabled=PDF-documenten mogen hun eigen kleuren niet gebruiken: ‘Pagina’s toestaan om hun eigen kleuren te kiezen’ is uitgeschakeld in de browser. diff --git a/public/pdfjs/web/locale/nn-NO/viewer.properties b/public/pdfjs/web/locale/nn-NO/viewer.properties deleted file mode 100644 index b3c80895..00000000 --- a/public/pdfjs/web/locale/nn-NO/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Førre side -previous_label=Førre -next.title=Neste side -next_label=Neste - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Side: -page_of=av {{pageCount}} - -zoom_out.title=Mindre -zoom_out_label=Mindre -zoom_in.title=Større -zoom_in_label=Større -zoom.title=Skalering -presentation_mode.title=Byt til presentasjonsmodus -presentation_mode_label=Presentasjonsmodus -open_file.title=Opna fil -open_file_label=Opna -print.title=Skriv ut -print_label=Skriv ut -download.title=Last ned -download_label=Last ned -bookmark.title=Gjeldande vising (kopier eller opna i nytt vindauge) -bookmark_label=Gjeldande vising - -# Secondary toolbar and context menu -tools.title=Verktøy -tools_label=Verktøy -first_page.title=GÃ¥ til fyrstesida -first_page.label=GÃ¥ til fyrstesida -first_page_label=GÃ¥ til fyrstesida -last_page.title=GÃ¥ til siste side -last_page.label=GÃ¥ til siste side -last_page_label=GÃ¥ til siste side -page_rotate_cw.title=Roter med klokka -page_rotate_cw.label=Roter med klokka -page_rotate_cw_label=Roter med klokka -page_rotate_ccw.title=Roter mot klokka -page_rotate_ccw.label=Roter mot klokka -page_rotate_ccw_label=Roter mot klokka - -hand_tool_enable.title=SlÃ¥ pÃ¥ handverktøy -hand_tool_enable_label=SlÃ¥ pÃ¥ handverktøy -hand_tool_disable.title=SÃ¥ av handverktøy -hand_tool_disable_label=SlÃ¥ av handverktøy - -# Document properties dialog box -document_properties.title=Dokumenteigenskapar … -document_properties_label=Dokumenteigenskapar … -document_properties_file_name=Filnamn: -document_properties_file_size=Filstorleik: -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Dokumenteigenskapar … -document_properties_author=Forfattar: -document_properties_subject=Emne: -document_properties_keywords=Stikkord: -document_properties_creation_date=Dato oppretta: -document_properties_modification_date=Dato endra: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Oppretta av: -document_properties_producer=PDF-verktøy: -document_properties_version=PDF-versjon: -document_properties_page_count=Sidetal: -document_properties_close=Lukk - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=SlÃ¥ av/pÃ¥ sidestolpe -toggle_sidebar_label=SlÃ¥ av/pÃ¥ sidestolpe -outline.title=Vis dokumentdisposisjon -outline_label=Dokumentdisposisjon -attachments.title=Vis vedlegg -attachments_label=Vedlegg -thumbs.title=Vis miniatyrbilde -thumbs_label=Miniatyrbilde -findbar.title=Finn i dokumentet -findbar_label=Finn - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Side {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatyrbilde av side {{page}} - -# Find panel button title and messages -find_label=Finn: -find_previous.title=Finn tidlegare førekomst av frasen -find_previous_label=Førre -find_next.title=Finn neste førekomst av frasen -find_next_label=Neste -find_highlight=Uthev alle -find_match_case_label=Skil store/smÃ¥ bokstavar -find_reached_top=NÃ¥dde toppen av dokumentet, held fram frÃ¥ botnen -find_reached_bottom=NÃ¥dde botnen av dokumentet, held fram frÃ¥ toppen -find_not_found=Fann ikkje teksten - -# Error panel labels -error_more_info=Meir info -error_less_info=Mindre info -error_close=Lukk -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (bygg: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Melding: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stakk: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linje: {{line}} -rendering_error=Ein feil oppstod ved oppteikning av sida. - -# Predefined zoom values -page_scale_width=Sidebreidde -page_scale_fit=Tilpass til sida -page_scale_auto=Automatisk skalering -page_scale_actual=Verkeleg storleik -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Feil -loading_error=Ein feil oppstod ved lasting av PDF. -invalid_file_error=Ugyldig eller korrupt PDF-fil. -missing_file_error=Manglande PDF-fil. -unexpected_response_error=Uventa tenarrespons. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} annotasjon] -password_label=Skriv inn passordet for Ã¥ opna denne PDF-fila. -password_invalid=Ugyldig passord. Prøv igjen. -password_ok=OK -password_cancel=Avbryt - -printing_not_supported=Ã…tvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren. -printing_not_ready=Ã…tvaring: PDF ikkje fullstendig innlasta for utskrift. -web_fonts_disabled=Vev-skrifter er slÃ¥tt av: Kan ikkje bruka innbundne PDF-skrifter. -document_colors_disabled=PDF-dokument har ikkje løyve til Ã¥ bruka eigne fargar: 'Tillat sider Ã¥ velja eigne fargar' er slÃ¥tt av i nettlesaren. diff --git a/public/pdfjs/web/locale/nso/viewer.properties b/public/pdfjs/web/locale/nso/viewer.properties deleted file mode 100644 index 02cc7d85..00000000 --- a/public/pdfjs/web/locale/nso/viewer.properties +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Letlakala le fetilego -previous_label=Fetilego -next.title=Letlakala le latelago -next_label=Latelago - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Letlakala: -page_of=la {{pageCount}} - -zoom_out.title=BuÅ¡etÅ¡a ka gare -zoom_out_label=BuÅ¡etÅ¡a ka gare -zoom_in.title=GodiÅ¡etÅ¡a ka ntle -zoom_in_label=GodiÅ¡etÅ¡a ka ntle -zoom.title=GodiÅ¡a -presentation_mode.title=Fetogela go mokgwa wa tlhagiÅ¡o -presentation_mode_label=Mokgwa wa tlhagiÅ¡o -open_file.title=Bula faele -open_file_label=Bula -print.title=GatiÅ¡a -print_label=GatiÅ¡a -download.title=Laolla -download_label=Laolla -bookmark.title=Pono ya bjale (kopiÅ¡a le go bula lefasetereng le leswa) -bookmark_label=Tebelelo ya gona bjale - -# Secondary toolbar and context menu - - -# Document properties dialog box -document_properties_file_name=Leina la faele: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Thaetlele: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Å ielanya para ya ka thoko -toggle_sidebar_label=Å ielanya para ya ka thoko -outline.title=LaetÅ¡a kakaretÅ¡o ya tokumente -outline_label=KakaretÅ¡o ya tokumente -thumbs.title=LaetÅ¡a dikhutÅ¡ofatÅ¡o -thumbs_label=DikhutÅ¡ofatÅ¡o -findbar.title=HwetÅ¡a go tokumente -findbar_label=HwetÅ¡a - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Letlakala {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=KhutÅ¡ofatÅ¡o ya letlakala {{page}} - -# Find panel button title and messages -find_label=HwetÅ¡a: -find_previous.title=HwetÅ¡a tiragalo e fetilego ya sekafoko -find_previous_label=Fetilego -find_next.title=HwetÅ¡a tiragalo e latelago ya sekafoko -find_next_label=Latelago -find_highlight=BonagatÅ¡a tÅ¡ohle -find_match_case_label=SwantÅ¡ha kheisi -find_reached_top=Fihlile godimo ga tokumente, go tÅ¡wetÅ¡we pele go tloga tlase -find_reached_bottom=Fihlile mafelelong a tokumente, go tÅ¡wetÅ¡we pele go tloga godimo -find_not_found=Sekafoko ga sa hwetÅ¡wa - -# Error panel labels -error_more_info=TshedimoÅ¡o e oketÅ¡egilego -error_less_info=TshedimoÅ¡o ya tlasana -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=MolaetÅ¡a: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Mokgobo: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Faele: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Mothaladi: {{line}} -rendering_error=Go diregile phoÅ¡o ge go be go gafelwa letlakala. - -# Predefined zoom values -page_scale_width=Bophara bja letlakala -page_scale_fit=Go lekana ga letlakala -page_scale_auto=KgodiÅ¡o ya maitiriÅ¡o -page_scale_actual=Bogolo bja kgonthe -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=PhoÅ¡o -loading_error=Go diregile phoÅ¡o ge go hlahlelwa PDF. -invalid_file_error=Faele ye e sa Å¡omego goba e senyegilego ya PDF. -missing_file_error=Faele yeo e sego gona ya PDF. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Tlhaloso] -password_ok=LOKILE -password_cancel=Khansela - -printing_not_supported=TemoÅ¡o: Go gatiÅ¡a ga go thekgwe ke praosara ye ka botlalo. -printing_not_ready=TemoÅ¡o: PDF ga ya hlahlelwa ka botlalo bakeng sa go gatiÅ¡wa. -web_fonts_disabled=Difonte tÅ¡a wepe di Å¡itiÅ¡itÅ¡we: ga e kgone go diriÅ¡a difonte tÅ¡a PDF tÅ¡e khutiÅ¡itÅ¡wego. diff --git a/public/pdfjs/web/locale/oc/viewer.properties b/public/pdfjs/web/locale/oc/viewer.properties deleted file mode 100644 index aa445711..00000000 --- a/public/pdfjs/web/locale/oc/viewer.properties +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pagina precedenta -previous_label=Precedent -next.title=Pagina seguenta -next_label=Seguent - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Pagina : -page_of=sus {{pageCount}} - -zoom_out.title=Zoom arrièr -zoom_out_label=Zoom arrièr -zoom_in.title=Zoom avant -zoom_in_label=Zoom avant -zoom.title=Zoom -presentation_mode.title=Bascuolar en mòde presentacion -presentation_mode_label=Mòde Presentacion -open_file.title=Dobrir lo fichièr -open_file_label=Dobrir -print.title=Imprimir -print_label=Imprimir -download.title=Telecargar -download_label=Telecargar -bookmark.title=Afichatge corrent (copiar o dobrir dins una fenèstra novèla) -bookmark_label=Afichatge actual - -# Secondary toolbar and context menu -tools.title=Aisinas -tools_label=Aisinas -first_page.title=Anar a la primièra pagina -first_page.label=Anar a la primièra pagina -first_page_label=Anar a la primièra pagina -last_page.title=Anar a la darrièra pagina -last_page.label=Anar a la darrièra pagina -last_page_label=Anar a la darrièra pagina -page_rotate_cw.title=Rotacion orà ria -page_rotate_cw.label=Rotacion orà ria -page_rotate_cw_label=Rotacion orà ria -page_rotate_ccw.title=Rotacion antiorà ria -page_rotate_ccw.label=Rotacion antiorà ria -page_rotate_ccw_label=Rotacion antiorà ria - -hand_tool_enable.title=Activar l'aisina man -hand_tool_enable_label=Activar l'aisina man -hand_tool_disable.title=Desactivar l'aisina man -hand_tool_disable_label=Desactivar l'aisina man - -# Document properties dialog box -document_properties.title=Proprietats del document... -document_properties_label=Proprietats del document... -document_properties_file_name=Nom del fichièr : -document_properties_file_size=Talha del fichièr : -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} Ko ({{size_b}} octets) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} Mo ({{size_b}} octets) -document_properties_title=TÃtol : -document_properties_author=Autor : -document_properties_subject=Subjècte : -document_properties_keywords=Mots claus : -document_properties_creation_date=Data de creacion : -document_properties_modification_date=Data de modificacion : -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator : -document_properties_producer=Aisina de conversion PDF : -document_properties_version=Version PDF : -document_properties_page_count=Nombre de paginas : -document_properties_close=Tampar - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Afichar/amagar lo panèl lateral -toggle_sidebar_label=Afichar/amagar lo panèl lateral -outline.title=Afichar los marcapaginas -outline_label=Marcapaginas del document -attachments.title=Visualizar las pèças juntas -attachments_label=Pèças juntas -thumbs.title=Afichar las vinhetas -thumbs_label=Vinhetas -findbar.title=Trobar dins lo document -findbar_label=Recercar - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Vinheta de la pagina {{page}} - -# Find panel button title and messages -find_label=Recercar -find_previous.title=Tròba l'ocurréncia precedenta de la frasa -find_previous_label=Precedent -find_next.title=Tròba l'ocurréncia venenta de la frasa -find_next_label=Seguent -find_highlight=Suslinhar tot -find_match_case_label=Respectar la cassa -find_reached_top=Naut de la pagina atench, perseguida dempuèi lo bas -find_reached_bottom=Bas de la pagina atench, perseguida al començament -find_not_found=Frasa pas trobada - -# Error panel labels -error_more_info=Mai de detalhs -error_less_info=Mens d'informacions -error_close=Tampar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (identificant de compilacion : {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Messatge : {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pila : {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fichièr : {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linha : {{line}} -rendering_error=Una error s'es producha pendent l'afichatge de la pagina. - -# Predefined zoom values -page_scale_width=Largor plena -page_scale_fit=Pagina entièra -page_scale_auto=Zoom automatic -page_scale_actual=Talha vertadièra -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Error -loading_error=Una error s'es producha pendent lo cargament del fichièr PDF. -invalid_file_error=Fichièr PDF invalid o corromput. -missing_file_error=Fichièr PDF mancant. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotacion {{type}}] -password_label=Picatz lo senhal per dobrir aqueste fichièr PDF. -password_invalid=Senhal incorrècte. Tornatz ensajar. -password_ok=D'acòrdi -password_cancel=Anullar - -printing_not_supported=Atencion : l'estampatge es pas completament gerit per aqueste navigador. -printing_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir. -web_fonts_disabled=Las poliças web son desactivadas : impossible d'utilizar las poliças integradas al PDF. -document_colors_disabled=Los documents PDF pòdon pas utilizar lors pròprias colors : « Autorizar las paginas web d'utilizar lors pròprias colors » es desactivat dins lo navigador. diff --git a/public/pdfjs/web/locale/or/viewer.properties b/public/pdfjs/web/locale/or/viewer.properties deleted file mode 100644 index 8258c563..00000000 --- a/public/pdfjs/web/locale/or/viewer.properties +++ /dev/null @@ -1,172 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ପà‚ରàବ ପàƒà¬·àଠା -previous_label=ପà‚ରàବ -next.title=ପର ପàƒà¬·àଠା -next_label=ପର - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=ପàƒà¬·àଠା: -page_of={{pageCount}} ର - -zoom_out.title=ଛà‹à¬Ÿ କରନàତà -zoom_out_label=ଛà‹à¬Ÿ କରନàତà -zoom_in.title=ବଡ଼ କରନàତà -zoom_in_label=ବଡ଼ କରନàତà -zoom.title=ଛà‹à¬Ÿ ବଡ଼ କରନàତà -presentation_mode.title=ଉପସàଥାପନ ଧାରାକà ବଦଳାନàତà -presentation_mode_label=ଉପସàଥାପନ ଧାରା -open_file.title=ଫାଇଲ ଖà‹à¬²à¬¨àତà -open_file_label=ଖà‹à¬²à¬¨àତà -print.title=ମàଦàରଣ -print_label=ମàଦàରଣ -download.title=ଆହରଣ -download_label=ଆହରଣ -bookmark.title=ପàରଚଳିତ ଦàƒà¬¶ààŸ (ନକଲ କରନàତà କିମàବା à¬à¬• ନà‚ତନ à±à¬¿à¬£àଡà‹à¬°à‡ ଖà‹à¬²à¬¨àତà) -bookmark_label=ପàରଚଳିତ ଦàƒà¬¶ààŸ - -# Secondary toolbar and context menu -tools.title=ସାଧନଗàଡ଼ିକ -tools_label=ସାଧନଗàଡ଼ିକ -first_page.title=ପàରଥମ ପàƒà¬·àଠାକà ଯାଆନàତà -first_page.label=ପàରଥମ ପàƒà¬·àଠାକà ଯାଆନàତà -first_page_label=ପàରଥମ ପàƒà¬·àଠାକà ଯାଆନàତà -last_page.title=ଶà‡à¬· ପàƒà¬·àଠାକà ଯାଆନàତà -last_page.label=ଶà‡à¬· ପàƒà¬·àଠାକà ଯାଆନàତà -last_page_label=ଶà‡à¬· ପàƒà¬·àଠାକà ଯାଆନàତà -page_rotate_cw.title=ଦକàଷିଣାବରàତàà¬¤à€ à¬˜àରାନàତà -page_rotate_cw.label=ଦକàଷିଣାବରàତàà¬¤à€ à¬˜àରାନàତà -page_rotate_cw_label=ଦକàଷିଣାବରàତàà¬¤à€ à¬˜àରାନàତà -page_rotate_ccw.title=ବାମାବରàତàà¬¤à€ à¬˜àରାନàତà -page_rotate_ccw.label=ବାମାବରàତàà¬¤à€ à¬˜àରାନàତà -page_rotate_ccw_label=ବାମାବରàତàà¬¤à€ à¬˜àରାନàତà - -hand_tool_enable.title=ହସàତକàƒà¬¤ ସାଧନକà ସକàà¬°à¬¿àŸ à¬•à¬°à¬¨àତà -hand_tool_enable_label=ହସàତକàƒà¬¤ ସାଧନକà ସକàà¬°à¬¿àŸ à¬•à¬°à¬¨àତà -hand_tool_disable.title=ହସàତକàƒà¬¤ ସାଧନକà ନିଷàକàà¬°à¬¿àŸ à¬•à¬°à¬¨àତà -hand_tool_disable_label=ହସàତକàƒà¬¤ ସାଧନକà ନିଷàକàà¬°à¬¿àŸ à¬•à¬°à¬¨àତà - -# Document properties dialog box -document_properties.title=ଦଲିଲ ଗàଣଧରàମ… -document_properties_label=ଦଲିଲ ଗàଣଧରàମ… -document_properties_file_name=ଫାଇଲ ନାମ: -document_properties_file_size=ଫାଇଲ ଆକାର: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=ଶà€à¬°àଷକ: -document_properties_author=ଲà‡à¬–କ: -document_properties_subject=ବିଷàŸ: -document_properties_keywords=ସà‚ଚକ ଶବàଦ: -document_properties_creation_date=ନିରàମାଣ ତାରିଖ: -document_properties_modification_date=ପରିବରàତàତନ ତାରିଖ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ନିରàମାତା: -document_properties_producer=PDF ପàରଯà‹à¬œà¬•: -document_properties_version=PDF ସଂସàକରଣ: -document_properties_page_count=ପàƒà¬·àଠା ଗଣନା: -document_properties_close=ବନàଦ କରନàତà - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ପାରàଶàà±à¬ªà¬Ÿà¬¿à¬•à ଆଗପଛ କରନàତà -toggle_sidebar_label=ପାରàଶàà±à¬ªà¬Ÿà¬¿à¬•à ଆଗପଛ କରନàତà -outline.title=ଦଲିଲ ସାରାଂଶ ଦରàଶାନàତà -outline_label=ଦଲିଲ ସାରାଂଶ -attachments.title=ସଂଲଗàନକଗàଡ଼ିକà ଦରàଶାନàତà -attachments_label=ସଲଗàନକଗàଡିକ -thumbs.title=ସଂକàଷିପàତ à¬¬à¬¿à¬¬à¬°à¬£à€ à¬¦à¬°àଶାନàତà -thumbs_label=ସଂକàଷିପàତ à¬¬à¬¿à¬¬à¬°à¬£à€ -findbar.title=à¬¦à¬²à¬¿à¬²à¬°à‡ à¬–à‹à¬œà¬¨àତà -findbar_label=ଖà‹à¬œà¬¨àତà - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=ପàƒà¬·àଠା {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=ପàƒà¬·àଠାର ସଂକàଷିପàତ à¬¬à¬¿à¬¬à¬°à¬£à€ {{page}} - -# Find panel button title and messages -find_label=ଖà‹à¬œà¬¨àତà: -find_previous.title=à¬à¬¹à¬¿ ବାକààŸà¬¾à¬‚ଶର ପà‚ରàବ ଉପସàଥିତିକà ଖà‹à¬œà¬¨àତà -find_previous_label=ପà‚ରàବବରàତàà¬¤à€ -find_next.title=à¬à¬¹à¬¿ ବାକààŸà¬¾à¬‚ଶର ପରବରàତàà¬¤à€ à¬‰à¬ªà¬¸àଥିତିକà ଖà‹à¬œà¬¨àତà -find_next_label=ପରବରàତàତà€\u0020 -find_highlight=ସମସàତଙàକà ଆଲà‹à¬•à¬¿à¬¤ କରନàତà -find_match_case_label=ଅକàଷର ମà‡à¬³à¬¾à¬¨àତà -find_reached_top=ତଳà ଉପରକà ଗତି କରି ଦଲିଲର ଉପର à¬à¬¾à¬—à¬°à‡ à¬ªà¬¹à¬žàଚି ଯାଇଛି -find_reached_bottom=ଉପରà ତଳକà ଗତି କରି ଦଲିଲର ଶà‡à¬· à¬à¬¾à¬—à¬°à‡ à¬ªà¬¹à¬žàଚି ଯାଇଛି -find_not_found=ବାକààŸà¬¾à¬‚ଶ ମିଳିଲା ନାହିଠ- -# Error panel labels -error_more_info=ଅଧିକ ସà‚ଚନା -error_less_info=ସàà±à¬³àପ ସà‚ଚନା -error_close=ବନàଦ କରନàତà -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ସନàଦà‡à¬¶: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ଷàଟାକ: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ଫାଇଲ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ଧାଡ଼ି: {{line}} -rendering_error=ପàƒà¬·àଠା ଚିତàରଣ କରିବା ସମàŸà¬°à‡ ତàରàଟି ଘଟିଲା। - -# Predefined zoom values -page_scale_width=ପàƒà¬·àଠା ଓସାର -page_scale_fit=ପàƒà¬·àଠା ମà‡à¬³à¬¨ -page_scale_auto=ସàà±àŸà¬‚ଚାଳିତ à¬à¬¾à¬¬à¬°à‡ ଛà‹à¬Ÿà¬¬à¬¡à¬¼ କରିବା -page_scale_actual=ପàରକàƒà¬¤ ଆକାର -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=ତàରàଟି -loading_error=PDF ଧାରଣ କରିବା ସମàŸà¬°à‡ à¬à¬• ତàରàଟି ଘଟିଲା। -invalid_file_error=ଅବàˆà¬§ କିମàବା ତàରàଟିଯàକàତ PDF ଫାଇଲ। -missing_file_error=ହଜିଯାଇଥିବା PDF ଫାଇଲ। -unexpected_response_error=ଅପàରତààŸà¬¾à¬¶à¬¿à¬¤ ସରàà¬à¬° ଉତàତର। - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] -password_label=à¬à¬¹à¬¿ PDF ଫାଇଲକà ଖà‹à¬²à¬¿à¬¬à¬¾ ପାଇଠପàରବà‡à¬¶ ସଂକà‡à¬¤ à¬à¬°à¬£ କରନàତà। -password_invalid=à¬àଲ ପàରବà‡à¬¶ ସଂକà‡à¬¤à¥¤ ଦàŸà¬¾à¬•à¬°à¬¿ ପàଣି ଚà‡à¬·àଟା କରନàତà। -password_ok=ଠିକ ଅଛି -password_cancel=ବାତିଲ କରନàତà - -printing_not_supported=ଚà‡à¬¤à¬¾à¬¬à¬¨à€: à¬à¬¹à¬¿ ବàରାଉଜର ଦàà±à¬¾à¬°à¬¾ ମàଦàରଣ କàରିàŸà¬¾ ସମàପà‚ରàଣàଣ à¬à¬¾à¬¬à¬°à‡ ସହାàŸà¬¤à¬¾ ପàରାପàତ ନàହà¬à¥¤ -printing_not_ready=ଚà‡à¬¤à¬¾à¬¬à¬¨à€: PDF ଟି ମàଦàରଣ ପାଇଠସମàପà‚ରàଣàଣ à¬à¬¾à¬¬à¬°à‡ ଧାରଣ ହà‹à¬‡ ନାହିà¬à¥¤ -web_fonts_disabled=à±à‡à¬¬ ଅକàଷରରà‚ପଗàଡ଼ିକà ନିଷàକàà¬°à¬¿àŸ à¬•à¬°à¬¾à¬¯à¬¾à¬‡à¬›à¬¿: ସନàନିହିତ PDF ଅକàଷରରà‚ପଗàଡ଼ିକà ବààŸà¬¬à¬¹à¬¾à¬° à¬•à¬°à¬¿à¬¬à¬¾à¬°à‡ à¬…à¬¸à¬®à¬°àଥ। -document_colors_disabled=PDF ଦଲିଲଗàଡ଼ିକ ସà‡à¬®à¬¾à¬¨à¬™àକର ନିଜର ରଙàଗ ବààŸà¬¬à¬¹à¬¾à¬° କରିବା ପାଇଠଅନàମତି ପàରାପàତ ନàହà¬: 'ସà‡à¬®à¬¾à¬¨à¬™àକର ନିଜ ରଙàଗ ବାଛିବା ପାଇଠପàƒà¬·àଠାଗàଡ଼ିକà ଅନàମତି ଦିଅନàତà' କà ବàà¬°à¬¾à¬‰à¬œà¬°à¬°à‡ à¬¨à¬¿à¬·àକàà¬°à¬¿àŸ à¬•à¬°à¬¾à¬¯à¬¾à¬‡à¬›à¬¿à¥¤ diff --git a/public/pdfjs/web/locale/pa-IN/viewer.properties b/public/pdfjs/web/locale/pa-IN/viewer.properties deleted file mode 100644 index fb26fc31..00000000 --- a/public/pdfjs/web/locale/pa-IN/viewer.properties +++ /dev/null @@ -1,181 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ਸਫ਼ਾ ਪਿੱਛੇ -previous_label=ਪਿੱਛੇ -next.title=ਸਫ਼ਾ ਅੱਗੇ -next_label=ਅੱਗੇ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=ਸਫ਼ਾ: -page_of={{pageCount}} ਵਿੱਚੋਂ - -zoom_out.title=ਜ਼ੂਮ ਆਉਟ -zoom_out_label=ਜ਼ੂਮ ਆਉਟ -zoom_in.title=ਜ਼ੂਮ ਇਨ -zoom_in_label=ਜ਼ੂਮ ਇਨ -zoom.title=ਜ਼ੂਨ -print.title=ਪਰਿੰਟ -print_label=ਪਰਿੰਟ -presentation_mode.title=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ ਵਿੱਚ ਜਾਓ -presentation_mode_label=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ - -open_file.title=ਫਾਈਲ ਖੋਲà©à¨¹à©‹ -open_file_label=ਖੋਲà©à¨¹à©‹ -download.title=ਡਾਊਨਲੋਡ -download_label=ਡਾਊਨਲੋਡ -bookmark.title=ਮੌਜੂਦਾ à¨à¨²à¨• (ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਕਾਪੀ ਕਰੋ ਜਾਂ ਖੋਲà©à¨¹à©‹) -bookmark_label=ਮੌਜੂਦਾ à¨à¨²à¨• - -# Secondary toolbar and context menu -tools.title=ਟੂਲ -tools_label=ਟੂਲ -first_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -first_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ - -last_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -last_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -page_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨“ -page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨“ -page_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨“ -page_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨“ -page_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨“ - -hand_tool_enable.title=ਹੱਥ ਟੂਲ ਚਾਲੂ -hand_tool_enable_label=ਹੱਥ ਟੂਲ ਚਾਲੂ -hand_tool_disable.title=ਹੱਥ ਟੂਲ ਬੰਦ -hand_tool_disable_label=ਹੱਥ ਟੂਲ ਬੰਦ - -# Document properties dialog box -document_properties.title=…ਦਸਤਾਵੇਜ਼ ਵਿਸ਼ੇਸ਼ਤਾ -document_properties_label=…ਦਸਤਾਵੇਜ਼ ਵਿਸ਼ੇਸ਼ਤਾ -document_properties_file_name=ਫਾਈਲ ਨਾਂ: -document_properties_file_size=ਫਾਈਲ ਆਕਾਰ: -document_properties_kb={{size_kb}} KB ({{size_b}} ਬਾਈਟ) -document_properties_mb={{size_mb}} MB ({{size_b}} ਬਾਈਟ) -document_properties_title=ਟਾਈਟਲ: -document_properties_author=ਲੇਖਕ: -document_properties_subject=ਵਿਸ਼ਾ: -document_properties_keywords=ਸ਼ਬਦ: -document_properties_creation_date=ਬਣਾਉਣ ਮਿਤੀ: -document_properties_modification_date=ਸੋਧ ਮਿਤੀ: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=ਨਿਰਮਾਤਾ: -document_properties_producer=PDF ਪà©à¨°à©‹à¨¡à¨¿à¨Šà¨¸à¨°: -document_properties_version=PDF ਵਰਜਨ: -document_properties_page_count=ਸਫ਼ਾ ਗਿਣਤੀ: -document_properties_close=ਬੰਦ ਕਰੋ - - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ -toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ - -outline.title=ਦਸਤਾਵੇਜ਼ ਆਉਟਲਾਈਨ ਵੇਖਾਓ -outline_label=ਦਸਤਾਵੇਜ਼ ਆਉਟਲਾਈਨ -attachments.title=ਅਟੈਚਮੈਂਟ ਵੇਖਾਓ -attachments_label=ਅਟੈਚਮੈਂਟ -thumbs.title=ਥੰਮਨੇਲ ਵੇਖਾਓ -thumbs_label=ਥੰਮਨੇਲ -findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱà¨à©‹ -findbar_label=ਲੱà¨à©‹ - - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=ਸਫ਼ਾ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}} ਸਫ਼ੇ ਦਾ ਥੰਮਨੇਲ - - -# Context menu -first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -last_page.label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨‰ -page_rotate_ccw.label=ਖੱਬੇ ਦਾਅ ਘà©à©°à¨®à¨¾à¨‰ - -# Find panel button title and messages -find_label=ਲੱà¨à©‹: -find_previous.title=ਵਾਕ ਦੀ ਪਿਛਲੀ ਮੌਜੂਦਗੀ ਲੱà¨à©‹ -find_previous_label=ਪਿੱਛੇ -find_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱà¨à©‹ -find_next_label=ਅੱਗੇ -find_highlight=ਸਠਉà¨à¨¾à¨°à©‹ -find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਮਿਲਾਉ -find_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਠਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ -find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਠਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ -find_not_found=ਵਾਕ ਨਹੀਂ ਲੱà¨à¨¿à¨† - - -# Error panel labels -error_more_info=ਹੋਰ ਜਾਣਕਾਰੀ -error_less_info=ਘੱਟ ਜਾਣਕਾਰੀ -error_close=ਬੰਦ ਕਰੋ - -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (ਬਿਲਡ: {{build}} - -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ਸà©à¨¨à©‡à¨¹à¨¾: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ਸਟੈਕ: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ਫਾਈਲ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=ਲਾਈਨ: {{line}} -rendering_error=ਸਫ਼ਾ ਰੈਡਰ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। - -# Predefined zoom values -page_scale_width=ਸਫ਼ਾ ਚੌੜਾਈ -page_scale_fit=ਸਫ਼ਾ ਫਿੱਟ -page_scale_auto=ਆਟੋਮੈਟਿਕ ਜ਼ੂਮ -page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage -loading_error_indicator=ਗਲਤੀ -loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। -invalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਈਲ ਹੈ। -missing_file_error=ਨਾ-ਮੌਜੂਦ PDF ਫਾਈਲ। -unexpected_response_error=ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ। - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} ਵਿਆਖਿਆ] -password_label=ਇਹ PDF ਫਾਈਲ ਖੋਲà©à¨¹à¨£ ਲਈ ਪਾਸਵਰਡ ਦਿਉ। -password_invalid=ਗਲਤ ਪਾਸਵਰਡ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ। -password_ok=ਠੀਕ ਹੈ -password_cancel=ਰੱਦ ਕਰੋ - -printing_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰà©à¨¹à¨¾à¨‚ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। -printing_not_ready=ਸਾਵਧਾਨ: PDF ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰà©à¨¹à¨¾à¨‚ ਲੋਡ ਨਹੀਂ ਹੈ। -web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਵਰਤਨ ਲਈ ਅਸਮਰੱਥ ਹੈ। -document_colors_disabled=PDF ਡੌਕੂਮੈਂਟ ਨੂੰ ਆਪਣੇ ਰੰਗ ਵਰਤਣ ਦੀ ਇਜ਼ਾਜ਼ਤ ਨਹੀਂ ਹੈ।: ਬਰਾਊਜ਼ਰ ਵਿੱਚ \u0022ਸਫ਼ਿਆਂ ਨੂੰ ਆਪਣੇ ਰੰਗ ਵਰਤਣ ਦਿਉ\u0022 ਨੂੰ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ। \ No newline at end of file diff --git a/public/pdfjs/web/locale/pl/viewer.properties b/public/pdfjs/web/locale/pl/viewer.properties deleted file mode 100644 index 143c52ae..00000000 --- a/public/pdfjs/web/locale/pl/viewer.properties +++ /dev/null @@ -1,152 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Poprzednia strona -previous_label=Poprzednia -next.title=NastÄ™pna strona -next_label=NastÄ™pna - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Strona: -page_of=z {{pageCount}} - -zoom_out.title=Pomniejszenie -zoom_out_label=Pomniejsz -zoom_in.title=PowiÄ™kszenie -zoom_in_label=PowiÄ™ksz -zoom.title=Skala -presentation_mode.title=PrzeÅ‚Ä…cz na tryb prezentacji -presentation_mode_label=Tryb prezentacji -open_file.title=Otwieranie pliku -open_file_label=Otwórz -print.title=Drukowanie -print_label=Drukuj -download.title=Pobieranie -download_label=Pobierz -bookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnoÅ›nik w nowym oknie) -bookmark_label=Bieżąca pozycja - -tools.title=Tools -tools_label=Tools -first_page.title=Przechodzenie do pierwszej strony -first_page.label=Przejdź do pierwszej strony -first_page_label=Przejdź do pierwszej strony -last_page.title=Przechodzenie do ostatniej strony -last_page.label=Przejdź do ostatniej strony -last_page_label=Przejdź do ostatniej strony -page_rotate_cw.title=Obracanie zgodnie z ruchem wskazówek zegara -page_rotate_cw.label=Obróć zgodnie z ruchem wskazówek zegara -page_rotate_cw_label=Obróć zgodnie z ruchem wskazówek zegara -page_rotate_ccw.title=Obracanie przeciwnie do ruchu wskazówek zegara -page_rotate_ccw.label=Obróć przeciwnie do ruchu wskazówek zegara -page_rotate_ccw_label=Obróć przeciwnie do ruchu wskazówek zegara - -hand_tool_enable.title=WÅ‚Ä…czanie narzÄ™dzia rÄ…czka -hand_tool_enable_label=WÅ‚Ä…cz narzÄ™dzie rÄ…czka -hand_tool_disable.title=WyÅ‚Ä…czanie narzÄ™dzia rÄ…czka -hand_tool_disable_label=WyÅ‚Ä…cz narzÄ™dzie rÄ…czka - -document_properties.title=WÅ‚aÅ›ciwoÅ›ci dokumentu… -document_properties_label=WÅ‚aÅ›ciwoÅ›ci dokumentu… -document_properties_file_name=Nazwa pliku: -document_properties_file_size=Rozmiar pliku: -document_properties_kb={{size_kb}} KB ({{size_b}} b) -document_properties_mb={{size_mb}} MB ({{size_b}} b) -document_properties_title=TytuÅ‚: -document_properties_author=Autor: -document_properties_subject=Temat: -document_properties_keywords=SÅ‚owa kluczowe: -document_properties_creation_date=Data utworzenia: -document_properties_modification_date=Data modyfikacji: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Utworzony przez: -document_properties_producer=PDF wyprodukowany przez: -document_properties_version=Wersja PDF: -document_properties_page_count=Liczba stron: -document_properties_close=Zamknij - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=PrzeÅ‚Ä…czanie panelu bocznego -toggle_sidebar_label=PrzeÅ‚Ä…cz panel boczny -outline.title=WyÅ›wietlanie zarysu dokumentu -outline_label=Zarys dokumentu -attachments.title=WyÅ›wietlanie zaÅ‚Ä…czników -attachments_label=ZaÅ‚Ä…czniki -thumbs.title=WyÅ›wietlanie miniaturek -thumbs_label=Miniaturki -findbar.title=Znajdź w dokumencie -findbar_label=Znajdź - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strona {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniaturka strony {{page}} - -# Find panel button title and messages -find_label=Znajdź: -find_previous.title=Znajdź poprzednie wystÄ…pienie tekstu -find_previous_label=Poprzednie -find_next.title=Znajdź nastÄ™pne wystÄ…pienie tekstu -find_next_label=NastÄ™pne -find_highlight=PodÅ›wietl wszystkie -find_match_case_label=Rozróżniaj wielkość znaków -find_reached_top=OsiÄ…gniÄ™to poczÄ…tek dokumentu, kontynuacja od koÅ„ca -find_reached_bottom=OsiÄ…gniÄ™to koniec dokumentu, kontynuacja od poczÄ…tku -find_not_found=Tekst nieznaleziony - -# Error panel labels -error_more_info=WiÄ™cej informacji -error_less_info=Mniej informacji -error_close=Zamknij -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (kompilacja: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Wiadomość: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stos: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Plik: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Wiersz: {{line}} -rendering_error=Podczas renderowania strony wystÄ…piÅ‚ bÅ‚Ä…d. - -# Predefined zoom values -page_scale_width=Szerokość strony -page_scale_fit=Dopasowanie strony -page_scale_auto=Skala automatyczna -page_scale_actual=Rozmiar rzeczywisty -page_scale_percent={{scale}}% - -loading_error_indicator=BÅ‚Ä…d -loading_error=Podczas wczytywania dokumentu PDF wystÄ…piÅ‚ bÅ‚Ä…d. -invalid_file_error=NieprawidÅ‚owy lub uszkodzony plik PDF. -missing_file_error=Brak pliku PDF. -unexpected_response_error=Nieoczekiwana odpowiedź serwera. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Adnotacja: {{type}}] -password_label=Wprowadź hasÅ‚o, aby otworzyć ten dokument PDF. -password_invalid=NieprawidÅ‚owe hasÅ‚o. ProszÄ™ spróbować ponownie. -password_ok=OK -password_cancel=Anuluj - -printing_not_supported=Ostrzeżenie: Drukowanie nie jest w peÅ‚ni wspierane przez przeglÄ…darkÄ™. -printing_not_ready=Ostrzeżenie: Dokument PDF nie jest caÅ‚kowicie wczytany, wiÄ™c nie można go wydrukować. -web_fonts_disabled=Czcionki sieciowe sÄ… wyÅ‚Ä…czone: nie można użyć osadzonych czcionek PDF. -document_colors_disabled=Dokumenty PDF nie mogÄ… używać wÅ‚asnych kolorów: Opcja „Pozwalaj stronom stosować inne kolory†w przeglÄ…darce jest nieaktywna. diff --git a/public/pdfjs/web/locale/pt-BR/viewer.properties b/public/pdfjs/web/locale/pt-BR/viewer.properties deleted file mode 100644 index 6f0dbfa7..00000000 --- a/public/pdfjs/web/locale/pt-BR/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Próxima página -next_label=Próxima - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Página: -page_of=de {{pageCount}} - -zoom_out.title=Diminuir zoom -zoom_out_label=Diminuir zoom -zoom_in.title=Aumentar zoom -zoom_in_label=Aumentar zoom -zoom.title=Zoom -presentation_mode.title=Alternar para modo de apresentação -presentation_mode_label=Modo de apresentação -open_file.title=Abrir arquivo -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Download -download_label=Download -bookmark.title=Visualização atual (copie ou abra em uma nova janela) -bookmark_label=Visualização atual - -# Secondary toolbar and context menu -tools.title=Ferramentas -tools_label=Ferramentas -first_page.title=Ir para a primeira página -first_page.label=Ir para a primeira página -first_page_label=Ir para a primeira página -last_page.title=Ir para a última página -last_page.label=Ir para a última página -last_page_label=Ir para a última página -page_rotate_cw.title=Girar no sentido horário -page_rotate_cw.label=Girar no sentido horário -page_rotate_cw_label=Girar no sentido horário -page_rotate_ccw.title=Girar no sentido anti-horário -page_rotate_ccw.label=Girar no sentido anti-horário -page_rotate_ccw_label=Girar no sentido anti-horário - -hand_tool_enable.title=Ativar ferramenta da mão -hand_tool_enable_label=Ativar ferramenta da mão -hand_tool_disable.title=Desativar ferramenta da mão -hand_tool_disable_label=Desativar ferramenta da mão - -# Document properties dialog box -document_properties.title=Propriedades do documento… -document_properties_label=Propriedades do documento… -document_properties_file_name=Nome do arquivo: -document_properties_file_size=Tamanho do arquivo: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=TÃtulo: -document_properties_author=Autor: -document_properties_subject=Assunto: -document_properties_keywords=Palavras-chave: -document_properties_creation_date=Data da criação: -document_properties_modification_date=Data da modificação: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Criação: -document_properties_producer=Criador do PDF: -document_properties_version=Versão do PDF: -document_properties_page_count=Número de páginas: -document_properties_close=Fechar - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Exibir/ocultar painel -toggle_sidebar_label=Exibir/ocultar painel -outline.title=Exibir estrutura de tópicos -outline_label=Estrutura de tópicos do documento -attachments.title=Exibir anexos -attachments_label=Anexos -thumbs.title=Exibir miniaturas das páginas -thumbs_label=Miniaturas -findbar.title=Localizar no documento -findbar_label=Localizar - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura da página {{page}} - -# Find panel button title and messages -find_label=Localizar: -find_previous.title=Localizar a ocorrência anterior do texto -find_previous_label=Anterior -find_next.title=Localizar a próxima ocorrência do texto -find_next_label=Próxima -find_highlight=Realçar tudo -find_match_case_label=Diferenciar maiúsculas/minúsculas -find_reached_top=Atingido o inÃcio do documento, continuando do fim -find_reached_bottom=Atingido o fim do documento, continuando do inÃcio -find_not_found=Texto não encontrado - -# Error panel labels -error_more_info=Mais informações -error_less_info=Menos informações -error_close=Fechar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensagem: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Arquivo: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linha: {{line}} -rendering_error=Ocorreu um erro ao renderizar a página. - -# Predefined zoom values -page_scale_width=Largura da página -page_scale_fit=Ajustar à janela -page_scale_auto=Zoom automático -page_scale_actual=Tamanho real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Erro -loading_error=Ocorreu um erro ao carregar o PDF. -invalid_file_error=Arquivo PDF corrompido ou inválido. -missing_file_error=Arquivo PDF ausente. -unexpected_response_error=Resposta inesperada do servidor. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotação {{type}}] -password_label=Forneça a senha para abrir este arquivo PDF. -password_invalid=Senha inválida. Por favor, tente de novo. -password_ok=OK -password_cancel=Cancelar - -printing_not_supported=Alerta: a impressão não é totalmente suportada neste navegador. -printing_not_ready=Alerta: o PDF não está totalmente carregado para impressão. -web_fonts_disabled=Fontes da web estão desativadas: não é possÃvel usar fontes incorporadas do PDF. -document_colors_disabled=Documentos PDF não estão permitidos a usar suas próprias cores: “Páginas podem usar outras cores†está desativado no navegador. diff --git a/public/pdfjs/web/locale/pt-PT/viewer.properties b/public/pdfjs/web/locale/pt-PT/viewer.properties deleted file mode 100644 index 74460206..00000000 --- a/public/pdfjs/web/locale/pt-PT/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Página anterior -previous_label=Anterior -next.title=Página seguinte -next_label=Seguinte - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Página: -page_of=de {{pageCount}} - -zoom_out.title=Reduzir -zoom_out_label=Reduzir -zoom_in.title=Ampliar -zoom_in_label=Ampliar -zoom.title=Ampliação -presentation_mode.title=Mudar para modo de apresentação -presentation_mode_label=Modo de apresentação -open_file.title=Abrir ficheiro -open_file_label=Abrir -print.title=Imprimir -print_label=Imprimir -download.title=Descarregar -download_label=Descarregar -bookmark.title=Visão atual (copiar ou abrir numa nova janela) -bookmark_label=Visão atual - -# Secondary toolbar and context menu -tools.title=Ferramentas -tools_label=Ferramentas -first_page.title=Ir para a primeira página -first_page.label=Ir para a primeira página -first_page_label=Ir para a primeira página -last_page.title=Ir para a última página -last_page.label=Ir para a última página -last_page_label=Ir para a última página -page_rotate_cw.title=Rodar à direita -page_rotate_cw.label=Rodar à direita -page_rotate_cw_label=Rodar à direita -page_rotate_ccw.title=Rodar à esquerda -page_rotate_ccw.label=Rodar à esquerda -page_rotate_ccw_label=Rodar à esquerda - -hand_tool_enable.title=Ativar ferramenta de mão -hand_tool_enable_label=Ativar ferramenta de mão -hand_tool_disable.title=Desativar ferramenta de mão -hand_tool_disable_label=Desativar ferramenta de mão - -# Document properties dialog box -document_properties.title=Propriedades do documento… -document_properties_label=Propriedades do documento… -document_properties_file_name=Nome do ficheiro: -document_properties_file_size=Tamanho do ficheiro: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=TÃtulo: -document_properties_author=Autor: -document_properties_subject=Assunto: -document_properties_keywords=Palavras-chave: -document_properties_creation_date=Data de criação: -document_properties_modification_date=Data de modificação: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Criador: -document_properties_producer=Produtor de PDF: -document_properties_version=Versão do PDF: -document_properties_page_count=N.º de páginas: -document_properties_close=Fechar - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Comutar barra lateral -toggle_sidebar_label=Comutar barra lateral -outline.title=Mostrar estrutura do documento -outline_label=Estrutura do documento -attachments.title=Mostrar anexos -attachments_label=Anexos -thumbs.title=Mostrar miniaturas -thumbs_label=Miniaturas -findbar.title=Localizar no documento -findbar_label=Localizar - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Página {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura da página {{page}} - -# Find panel button title and messages -find_label=Localizar: -find_previous.title=Localizar ocorrência anterior da frase -find_previous_label=Anterior -find_next.title=Localizar ocorrência seguinte da frase -find_next_label=Seguinte -find_highlight=Destacar tudo -find_match_case_label=Correspondência -find_reached_top=InÃcio de documento atingido, a continuar do fim -find_reached_bottom=Fim da página atingido, a continuar do inÃcio -find_not_found=Frase não encontrada - -# Error panel labels -error_more_info=Mais informação -error_less_info=Menos informação -error_close=Fechar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (compilação: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensagem: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Pilha: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ficheiro: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linha: {{line}} -rendering_error=Ocorreu um erro ao processar a página. - -# Predefined zoom values -page_scale_width=Ajustar à largura -page_scale_fit=Ajustar à página -page_scale_auto=Tamanho automático -page_scale_actual=Tamanho real -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Erro -loading_error=Ocorreu um erro ao carregar o PDF. -invalid_file_error=Ficheiro PDF inválido ou danificado. -missing_file_error=Ficheiro PDF inexistente. -unexpected_response_error=Resposta inesperada do servidor. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotação {{type}}] -password_label=Digite a palavra-passe para abrir este PDF. -password_invalid=Palavra-passe inválida. Por favor, tente novamente. -password_ok=OK -password_cancel=Cancelar - -printing_not_supported=Aviso: a impressão não é totalmente suportada por este navegador. -printing_not_ready=Aviso: o PDF ainda não está totalmente carregado. -web_fonts_disabled=Os tipos de letra web estão desativados: não é possÃvel utilizar os tipos de letra PDF incorporados. -document_colors_disabled=Os documentos PDF não permitem a utilização das suas próprias cores: 'Autorizar as páginas a escolher as suas próprias cores' está desativada no navegador. diff --git a/public/pdfjs/web/locale/rm/viewer.properties b/public/pdfjs/web/locale/rm/viewer.properties deleted file mode 100644 index 5564738e..00000000 --- a/public/pdfjs/web/locale/rm/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pagina precedenta -previous_label=Enavos -next.title=Proxima pagina -next_label=Enavant - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Pagina: -page_of=da {{pageCount}} - -zoom_out.title=Empitschnir -zoom_out_label=Empitschnir -zoom_in.title=Engrondir -zoom_in_label=Engrondir -zoom.title=Zoom -presentation_mode.title=Midar en il modus da preschentaziun -presentation_mode_label=Modus da preschentaziun -open_file.title=Avrir datoteca -open_file_label=Avrir -print.title=Stampar -print_label=Stampar -download.title=Telechargiar -download_label=Telechargiar -bookmark.title=Vista actuala (copiar u avrir en ina nova fanestra) -bookmark_label=Vista actuala - -# Secondary toolbar and context menu -tools.title=Utensils -tools_label=Utensils -first_page.title=Siglir a l'emprima pagina -first_page.label=Siglir a l'emprima pagina -first_page_label=Siglir a l'emprima pagina -last_page.title=Siglir a la davosa pagina -last_page.label=Siglir a la davosa pagina -last_page_label=Siglir a la davosa pagina -page_rotate_cw.title=Rotar en direcziun da l'ura -page_rotate_cw.label=Rotar en direcziun da l'ura -page_rotate_cw_label=Rotar en direcziun da l'ura -page_rotate_ccw.title=Rotar en direcziun cuntraria a l'ura -page_rotate_ccw.label=Rotar en direcziun cuntraria a l'ura -page_rotate_ccw_label=Rotar en direcziun cuntraria a l'ura - -hand_tool_enable.title=Activar l'utensil da maun -hand_tool_enable_label=Activar l'utensil da maun -hand_tool_disable.title=Deactivar l'utensil da maun -hand_tool_disable_label=Deactivar l'utensil da maun - -# Document properties dialog box -document_properties.title=Caracteristicas dal document… -document_properties_label=Caracteristicas dal document… -document_properties_file_name=Num da la datoteca: -document_properties_file_size=Grondezza da la datoteca: -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=Titel: -document_properties_author=Autur: -document_properties_subject=Tema: -document_properties_keywords=Chavazzins: -document_properties_creation_date=Data da creaziun: -document_properties_modification_date=Data da modificaziun: -document_properties_date_string={{date}} {{time}} -document_properties_creator=Creà da: -document_properties_producer=Creà il PDF cun: -document_properties_version=Versiun da PDF: -document_properties_page_count=Dumber da paginas: -document_properties_close=Serrar - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Activar/deactivar la trav laterala -toggle_sidebar_label=Activar/deactivar la trav laterala -outline.title=Mussar la structura da la pagina -outline_label=Structura da la pagina -attachments.title=Mussar agiuntas -attachments_label=Agiuntas -thumbs.title=Mussar las miniaturas -thumbs_label=Miniaturas -findbar.title=Tschertgar en il document -findbar_label=Tschertgar - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura da la pagina {{page}} - -# Find panel button title and messages -find_label=Tschertgar: -find_previous.title=Tschertgar la posiziun precedenta da l'expressiun -find_previous_label=Enavos -find_next.title=Tschertgar la proxima posiziun da l'expressiun -find_next_label=Enavant -find_highlight=Relevar tuts -find_match_case_label=Resguardar maiusclas/minusclas -find_reached_top=Il cumenzament dal document è cuntanschì, la tschertga cuntinuescha a la fin dal document -find_reached_bottom=La fin dal document è cuntanschì, la tschertga cuntinuescha al cumenzament dal document -find_not_found=Impussibel da chattar l'expressiun - -# Error panel labels -error_more_info=Dapli infurmaziuns -error_less_info=Damain infurmaziuns -error_close=Serrar -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Messadi: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Datoteca: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Lingia: {{line}} -rendering_error=Ina errur è cumparida cun visualisar questa pagina. - -# Predefined zoom values -page_scale_width=Ladezza da la pagina -page_scale_fit=Entira pagina -page_scale_auto=Zoom automatic -page_scale_actual=Grondezza actuala -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Errur -loading_error=Ina errur è cumparida cun chargiar il PDF. -invalid_file_error=Datoteca PDF nunvalida u donnegiada. -missing_file_error=Datoteca PDF manconta. -unexpected_response_error=Resposta nunspetgada dal server. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Annotaziun da {{type}}] -password_label=Endatescha il pled-clav per avrir questa datoteca da PDF. -password_invalid=Pled-clav nunvalid. Emprova anc ina giada. -password_ok=OK -password_cancel=Interrumper - -printing_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur. -printing_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar. -web_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en il PDF. -document_colors_disabled=Documents da PDF na pon betg utilisar lur atgnas colurs: \'Permetter a las paginas d'utilisar lur atgnas colurs empè da las colurs tschernidas survart\' è deactivà en il navigatur. diff --git a/public/pdfjs/web/locale/ro/viewer.properties b/public/pdfjs/web/locale/ro/viewer.properties deleted file mode 100644 index 69804a19..00000000 --- a/public/pdfjs/web/locale/ro/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Pagina precedentă -previous_label=ÃŽnapoi -next.title=Pagina următoare -next_label=ÃŽnainte - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Pagină: -page_of=din {{pageCount}} - -zoom_out.title=MicÈ™orează -zoom_out_label=MicÈ™orează -zoom_in.title=MăreÈ™te -zoom_in_label=MăreÈ™te -zoom.title=Scalare -presentation_mode.title=Schimbă la modul de prezentare -presentation_mode_label=Mod de prezentare -open_file.title=Deschide un fiÈ™ier -open_file_label=Deschide -print.title=TipăreÈ™te -print_label=TipăreÈ™te -download.title=Descarcă -download_label=Descarcă -bookmark.title=Vizualizare actuală (copiaÈ›i sau deschideÈ›i într-o fereastră nouă) -bookmark_label=Vizualizare actuală - -# Secondary toolbar and context menu -tools.title=Unelte -tools_label=Unelte -first_page.title=Mergi la prima pagină -first_page.label=MergeÈ›i la prima pagină -first_page_label=Mergi la prima pagină -last_page.title=Mergi la ultima pagină -last_page.label=Mergi la ultima pagină -last_page_label=Mergi la ultima pagină -page_rotate_cw.title=RoteÈ™te în sensul acelor de ceasornic -page_rotate_cw.label=RoteÈ™te în sensul acelor de ceasornic -page_rotate_cw_label=RoteÈ™te în sensul acelor de ceasornic -page_rotate_ccw.title=RoteÈ™te în sens invers al acelor de ceasornic -page_rotate_ccw.label=Rotate Counter-Clockwise -page_rotate_ccw_label=RoteÈ™te în sens invers acelor de ceasornic - -hand_tool_enable.title=Activează instrumentul mână -hand_tool_enable_label=Activează instrumentul mână -hand_tool_disable.title=Dezactivează instrumentul mână -hand_tool_disable_label=Dezactivează instrumentul mână - -# Document properties dialog box -document_properties.title=Proprietățile documentului… -document_properties_label=Proprietățile documentului… -document_properties_file_name=Nume fiÈ™ier: -document_properties_file_size=Dimensiune fiÈ™ier: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} byÈ›i) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byÈ›i) -document_properties_title=Titlu: -document_properties_author=Autor: -document_properties_subject=Subiect: -document_properties_keywords=Cuvinte cheie: -document_properties_creation_date=Data creării: -document_properties_modification_date=Data modificării: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Autor: -document_properties_producer=Producător PDF: -document_properties_version=Versiune PDF: -document_properties_page_count=Număr de pagini: -document_properties_close=ÃŽnchide - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Comută bara laterală -toggle_sidebar_label=Comută bara laterală -outline.title=Arată schiÈ›a documentului -outline_label=Schiță document -attachments.title=AfiÈ™ează ataÈ™amentele -attachments_label=AtaÈ™amente -thumbs.title=Arată miniaturi -thumbs_label=Miniaturi -findbar.title=Caută în document -findbar_label=CăutaÈ›i - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pagina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatura paginii {{page}} - -# Find panel button title and messages -find_label=Caută: -find_previous.title=GăseÈ™te instanÈ›a anterioară în frază -find_previous_label=Anterior -find_next.title=GăsteÈ™te următoarea instanță în frază -find_next_label=Următor -find_highlight=EvidenÈ›iază apariÈ›iile -find_match_case_label=PotriveÈ™te literele mari È™i mici -find_reached_top=Am ajuns la începutul documentului, continuă de la sfârÈ™it -find_reached_bottom=Am ajuns la sfârÈ™itul documentului, continuă de la început -find_not_found=Nu s-a găsit textul - -# Error panel labels -error_more_info=Mai multe informaÈ›ii -error_less_info=Mai puÈ›ină informaÈ›ie -error_close=ÃŽnchide -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (varianta: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mesaj: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stivă: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=FiÈ™ier: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linie: {{line}} -rendering_error=A intervenit o eroare la afiÈ™area paginii. - -# Predefined zoom values -page_scale_width=Lățime pagină -page_scale_fit=Potrivire la pagină -page_scale_auto=Dimensiune automată -page_scale_actual=Dimensiune reală -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Eroare -loading_error=A intervenit o eroare la încărcarea fiÈ™ierului PDF. -invalid_file_error=FiÈ™ier PDF invalid sau deteriorat. -missing_file_error=FiÈ™ier PDF lipsă. -unexpected_response_error=Răspuns neaÈ™teptat de la server. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Adnotare] -password_label=IntroduceÈ›i parola pentru a deschide acest fiÈ™ier PDF. -password_invalid=Parolă greÈ™ită. Vă rugăm să încercaÈ›i din nou. -password_ok=Ok -password_cancel=Renunță - -printing_not_supported=AtenÈ›ie: Tipărirea nu este suportată în totalitate de acest browser. -printing_not_ready=AtenÈ›ie: FiÈ™ierul PDF nu este încărcat complet pentru tipărire. -web_fonts_disabled=Fonturile web sunt dezactivate: nu pot utiliza fonturile PDF încorporate. -document_colors_disabled=Documentele PDF nu sunt autorizate să folosească propriile culori: 'Permite paginilor să aleagă propriile culori' este dezactivată în browser. diff --git a/public/pdfjs/web/locale/ru/viewer.properties b/public/pdfjs/web/locale/ru/viewer.properties deleted file mode 100644 index 349f2cbe..00000000 --- a/public/pdfjs/web/locale/ru/viewer.properties +++ /dev/null @@ -1,111 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -previous.title = ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñтраница -previous_label = ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ -next.title = Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница -next_label = Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ -page_label = Страница: -page_of = из {{pageCount}} -zoom_out.title = Уменьшить -zoom_out_label = Уменьшить -zoom_in.title = Увеличить -zoom_in_label = Увеличить -zoom.title = МаÑштаб -presentation_mode.title = Перейти в режим презентации -presentation_mode_label = Режим презентации -open_file.title = Открыть файл -open_file_label = Открыть -print.title = Печать -print_label = Печать -download.title = Загрузить -download_label = Загрузить -bookmark.title = СÑылка на текущий вид (Ñкопировать или открыть в новом окне) -bookmark_label = Текущий вид -tools.title = ИнÑтрументы -tools_label = ИнÑтрументы -first_page.title = Перейти на первую Ñтраницу -first_page.label = Перейти на первую Ñтраницу -first_page_label = Перейти на первую Ñтраницу -last_page.title = Перейти на поÑледнюю Ñтраницу -last_page.label = Перейти на поÑледнюю Ñтраницу -last_page_label = Перейти на поÑледнюю Ñтраницу -page_rotate_cw.title = Повернуть по чаÑовой Ñтрелке -page_rotate_cw.label = Повернуть по чаÑовой Ñтрелке -page_rotate_cw_label = Повернуть по чаÑовой Ñтрелке -page_rotate_ccw.title = Повернуть против чаÑовой Ñтрелки -page_rotate_ccw.label = Повернуть против чаÑовой Ñтрелки -page_rotate_ccw_label = Повернуть против чаÑовой Ñтрелки -hand_tool_enable.title = Включить ИнÑтрумент «Рука» -hand_tool_enable_label = Включить ИнÑтрумент «Рука» -hand_tool_disable.title = Отключить ИнÑтрумент «Рука» -hand_tool_disable_label = Отключить ИнÑтрумент «Рука» -document_properties.title = СвойÑтва документа… -document_properties_label = СвойÑтва документа… -document_properties_file_name = Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: -document_properties_file_size = Размер файла: -document_properties_kb = {{size_kb}} КБ ({{size_b}} байт) -document_properties_mb = {{size_mb}} МБ ({{size_b}} байт) -document_properties_title = Заголовок: -document_properties_author = Ðвтор: -document_properties_subject = Тема: -document_properties_keywords = Ключевые Ñлова: -document_properties_creation_date = Дата ÑозданиÑ: -document_properties_modification_date = Дата изменениÑ: -document_properties_date_string = {{date}}, {{time}} -document_properties_creator = Приложение: -document_properties_producer = Производитель PDF: -document_properties_version = ВерÑÐ¸Ñ PDF: -document_properties_page_count = ЧиÑло Ñтраниц: -document_properties_close = Закрыть -toggle_sidebar.title = Открыть/закрыть боковую панель -toggle_sidebar_label = Открыть/закрыть боковую панель -outline.title = Показать Ñодержание документа -outline_label = Содержание документа -attachments.title = Показать Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ -attachments_label = Ð’Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ -thumbs.title = Показать миниатюры -thumbs_label = Миниатюры -findbar.title = Ðайти в документе -findbar_label = Ðайти -thumb_page_title = Страница {{page}} -thumb_page_canvas = Миниатюра Ñтраницы {{page}} -find_label = Ðайти: -find_previous.title = Ðайти предыдущее вхождение фразы в текÑÑ‚ -find_previous_label = Ðазад -find_next.title = Ðайти Ñледующее вхождение фразы в текÑÑ‚ -find_next_label = Далее -find_highlight = ПодÑветить вÑе -find_match_case_label = С учётом региÑтра -find_reached_top = ДоÑтигнут верх документа, продолжено Ñнизу -find_reached_bottom = ДоÑтигнут конец документа, продолжено Ñверху -find_not_found = Фраза не найдена -error_more_info = Детали -error_less_info = Скрыть детали -error_close = Закрыть -error_version_info = PDF.js v{{version}} (Ñборка: {{build}}) -error_message = Сообщение: {{message}} -error_stack = Стeк: {{stack}} -error_file = Файл: {{file}} -error_line = Строка: {{line}} -rendering_error = При Ñоздании Ñтраницы произошла ошибка. -page_scale_width = По ширине Ñтраницы -page_scale_fit = По размеру Ñтраницы -page_scale_auto = ÐвтоматичеÑки -page_scale_actual = Реальный размер -page_scale_percent = {{scale}}% -loading_error_indicator = Ошибка -loading_error = При загрузке PDF произошла ошибка. -invalid_file_error = Ðекорректный или повреждённый PDF-файл. -missing_file_error = PDF-файл отÑутÑтвует. -unexpected_response_error = Ðеожиданный ответ Ñервера. -text_annotation_type.alt = [ÐÐ½Ð½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ {{type}}] -password_label = Введите пароль, чтобы открыть Ñтот PDF-файл. -password_invalid = Ðеверный пароль. ПожалуйÑта, попробуйте Ñнова. -password_ok = OK -password_cancel = Отмена -printing_not_supported = Предупреждение: Ð’ Ñтом браузере не полноÑтью поддерживаетÑÑ Ð¿ÐµÑ‡Ð°Ñ‚ÑŒ. -printing_not_ready = Предупреждение: PDF не полноÑтью загружен Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸. -web_fonts_disabled = Веб-шрифты отключены: невозможно иÑпользовать вÑтроенные PDF-шрифты. -document_colors_disabled = PDF-документам не разрешено иÑпользовать Ñвои цвета: в браузере отключён параметр «Разрешить веб-Ñайтам иÑпользовать Ñвои цвета». diff --git a/public/pdfjs/web/locale/rw/viewer.properties b/public/pdfjs/web/locale/rw/viewer.properties deleted file mode 100644 index 7858fe64..00000000 --- a/public/pdfjs/web/locale/rw/viewer.properties +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. - -zoom.title=Ihindurangano -open_file.title=Gufungura Dosiye -open_file_label=Gufungura - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Umutwe: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -findbar_label=Gushakisha - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages -find_label="Gushaka:" -find_previous.title=Gushaka aho uyu murongo ugaruka mbere y'aha -find_next.title=Gushaka aho uyu murongo wongera kugaruka -find_not_found=Umurongo ntubonetse - -# Error panel labels -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Ikosa - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_invalid=Ijambo ry'ibanga ridahari. Wakongera ukagerageza -password_ok=YEGO -password_cancel=Kureka - diff --git a/public/pdfjs/web/locale/sah/viewer.properties b/public/pdfjs/web/locale/sah/viewer.properties deleted file mode 100644 index b35dcfff..00000000 --- a/public/pdfjs/web/locale/sah/viewer.properties +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Инники ÑирÑй -previous_label=ИннинÑÑҕи -next.title=ÐныгыÑкы ÑирÑй -next_label=ÐныгыÑкы - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=СирÑй: -page_of=мантан {{pageCount}} - -zoom_out.title=Куччат -zoom_out_label=Куччат -zoom_in.title=Улаатыннар -zoom_in_label=Улаатыннар -zoom.title=Улаатыннар -presentation_mode.title=Көрдөрөр ÑÑ€ÑÑÐ¸Ð¸Ð¼Ò¥Ñ -presentation_mode_label=Көрдөрөр ÑÑ€ÑÑиим -open_file.title=БилÑни арый -open_file_label=ÐÑ -print.title=БÑчÑÑÑ‚ -print_label=БÑчÑÑÑ‚ -download.title=Хачайдааһын -download_label=Хачайдааһын -bookmark.title=Билиҥҥи көÑÑ‚Ò¯Ò¯Ñ‚Ñ (хатылаа ÑбÑÑ‚ÑÑ€ Ñаҥа Ñ‚Ò¯Ð½Ð½Ò¯ÐºÐºÑ Ð°Ñ€Ñ‹Ð¹) -bookmark_label=Билиҥҥи көÑÑ‚Ò¯Ò¯Ñ‚Ñ - -# Secondary toolbar and context menu -tools.title=ТÑриллÑÑ€ -tools_label=ТÑриллÑÑ€ -first_page.title=БаÑтакы ÑирÑÐ¹Ð³Ñ ÐºÓ©Ñ -first_page.label=БаÑтакы ÑирÑÐ¹Ð³Ñ ÐºÓ©Ñ -first_page_label=БаÑтакы ÑирÑÐ¹Ð³Ñ ÐºÓ©Ñ -last_page.title=ТиһÑÑ… ÑирÑÐ¹Ð³Ñ ÐºÓ©Ñ -last_page.label=ТиһÑÑ… ÑирÑÐ¹Ð³Ñ ÐºÓ©Ñ -last_page_label=ТиһÑÑ… ÑирÑÐ¹Ð³Ñ ÐºÓ©Ñ -page_rotate_cw.title=Чаһы хоту Ñргит -page_rotate_cw.label=Чаһы хоту Ñргит -page_rotate_cw_label=Чаһы хоту Ñргит -page_rotate_ccw.title=Чаһы утары Ñргит -page_rotate_ccw.label=Чаһы утары Ñргит -page_rotate_ccw_label=Чаһы утары Ñргит - -hand_tool_enable.title=«Илии» диÑн Ñ‚Ñрили холбоо -hand_tool_enable_label=«Илии» диÑн Ñ‚Ñрили холбоо -hand_tool_disable.title=«Илии» диÑн Ñ‚Ñрили араар -hand_tool_disable_label=«Илии» диÑн Ñ‚Ñрили араар - -# Document properties dialog box -document_properties.title=Докумуон туруоруулара... -document_properties_label=Докумуон туруоруулара...\u0020 -document_properties_file_name=Ð‘Ð¸Ð»Ñ Ð°Ð°Ñ‚Ð°: -document_properties_file_size=Ð‘Ð¸Ð»Ñ ÐºÑÑмÑйÑ: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} баайт) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} баайт) -document_properties_title=Баһа: -document_properties_author=Ðаптар: -document_properties_subject=ТиÑмÑ: -document_properties_keywords=ÐšÒ¯Ð»Ò¯Ò¯Ñ Ñ‚Ñ‹Ð»: -document_properties_creation_date=Оҥоһуллубут кÑмÑ: -document_properties_modification_date=Уларытыллыбыт кÑмÑ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_producer=PDF оҥорооччу: -document_properties_version=PDF барыла: -document_properties_page_count=СирÑй ахÑаана: -document_properties_close=Сап - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=ÐžÐ¹Ð¾Ò•Ð¾Ñ Ñ…Ð°Ð¿Ñ‚Ð°Ð»Ñ‹ арый/Ñап -toggle_sidebar_label=ÐžÐ¹Ð¾Ò•Ð¾Ñ Ñ…Ð°Ð¿Ñ‚Ð°Ð»Ñ‹ арый/Ñап -outline.title=Дөкүмүөн иһинÑÑҕитин көрдөр -outline_label=Дөкүмүөн иһинÑÑÒ•Ð¸Ñ‚Ñ -attachments.title=Кыбытыктары көрдөр -attachments_label=Кыбытык -thumbs.title=Ойуучааннары көрдөр -thumbs_label=Ойуучааннар -findbar.title=ДөкүмүөнтÑн бул -findbar_label=Бул - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=СирÑй {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=СирÑй ойуучаана {{page}} - -# Find panel button title and messages -find_label=Бул: -find_previous.title=Ðтии тиÑкиÑÐºÑ Ð±Ñƒ иннинÑÑҕи киириитин бул -find_previous_label=ИннинÑÑҕи -find_next.title=Ðтии тиÑкиÑÐºÑ Ð±Ñƒ кÑннинÑÑҕи киириитин бул -find_next_label=ÐныгыÑкы -find_highlight=Барытын Ñырдатан көрдөр -find_match_case_label=Буукуба улаханын-кыратын араар -find_reached_top=СирÑй үрдүгÑÑ€ тиийдиҥ, Ñалгыыта аллара -find_reached_bottom=СирÑй бүттÑ, Ò¯Ó©Ò»Ñ Ñалҕанна -find_not_found=Ðтии көÑтүбÑÑ‚Ñ - -# Error panel labels -error_more_info=Сиһилии -error_less_info=Сиһилиитин киÑÑ‚ÑÑ -error_close=Сап -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (хомуйуута: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ðтии: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стeк: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=БилÑ: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=УÑтуруока: {{line}} -rendering_error=СирÑйи айарга Ð°Ð»Ò•Ð°Ñ Ñ‚Ð°Ò•Ñ‹Ñта. - -# Predefined zoom values -page_scale_width=СирÑй кÑтитинÑн -page_scale_fit=СирÑй кÑÑмÑйинÑн -page_scale_auto=Ðптамаатынан -page_scale_actual=ДьиҥнÑÑÑ… кÑÑмÑÐ¹Ñ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=ÐÐ»Ò•Ð°Ñ -loading_error=PDF-билÑни хачайдыырга Ð°Ð»Ò•Ð°Ñ Ñ‚Ð°Ò•Ñ‹Ñта. -invalid_file_error=Туох ÑÑ€Ñ Ð°Ð»Ò•Ð°Ñтаах ÑбÑÑ‚ÑÑ€ алдьаммыт PDF-билÑ. -missing_file_error=PDF-Ð±Ð¸Ð»Ñ Ñуох. -unexpected_response_error=СиÑрбÑÑ€ хоруйдаабат. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} туһунан] -password_label=Бу PDF-билÑни арыйарга көмүÑкÑл тылы киллÑриÑÑ…Ñ‚ÑÑхин. -password_invalid=Киирии тыл алҕаÑтаах. Бука диÑн, хатылаан көр. -password_ok=СӨП -password_cancel=Салҕаама - -printing_not_supported=СÑÑ€Ñтии: Бу браузер бÑчÑÑттиири толору өйөөбөт. -printing_not_ready=СÑÑ€Ñтии: PDF бÑчÑÑÑ‚Ñ‚Ð¸Ð¸Ñ€Ð³Ñ Ñ‚Ð¾Ð»Ð¾Ñ€Ñƒ хачайдана илик. -web_fonts_disabled=Ситим-бичиктÑÑ€ араарыллыахтара: PDF бичиктÑÑ€Ñ ÐºÑ‹Ð°Ð¹Ð°Ð½ көÑтүбÑÑ‚Ñ‚ÑÑ€. -document_colors_disabled=PDF-дөкүмүөүннÑÑ€Ð³Ñ Ð±ÑйÑлÑрин өҥнөрүн туттар көҥүллÑммÑÑ‚Ñ: "Ситим-ÑирдÑÑ€ бÑйÑлÑрин өҥнөрүн тутталларын көҥүллүүргÑ" диÑн браузерга арахÑа Ñылдьар Ñбит. diff --git a/public/pdfjs/web/locale/si/viewer.properties b/public/pdfjs/web/locale/si/viewer.properties deleted file mode 100644 index 80cae85f..00000000 --- a/public/pdfjs/web/locale/si/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=මීට පෙර පිටුව -previous_label=පෙර -next.title=මීළඟ පිටුව -next_label=මීළඟ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=පිටුව: -page_of={{pageCount}} කින් - -zoom_out.title=කුඩ෠කරන්න -zoom_out_label=කුඩ෠කරන්න -zoom_in.title=විà·à·à¶½ කරන්න -zoom_in_label=විà·à·à¶½ කරන්න -zoom.title=විà·à·à¶½à¶«à¶º -presentation_mode.title=ඉදිරිපà¶à·Šà¶šà·’රීම් ප්â€à¶»à¶šà·à¶»à¶º වෙචමà·à¶»à·”වන්න -presentation_mode_label=ඉදිරිපà¶à·Šà¶šà·’රීම් ප්â€à¶»à¶šà·à¶»à¶º -open_file.title=ගොනුව විවෘචකරන්න -open_file_label=විවෘචකරන්න -print.title=මුද්â€à¶»à¶«à¶º -print_label=මුද්â€à¶»à¶«à¶º -download.title=බà·à¶œà¶±à·Šà¶± -download_label=බà·à¶œà¶±à·Šà¶± -bookmark.title=දà·à¶±à¶§ ඇà¶à·’ දසුන (පිටපà¶à·Š කරන්න හ෠නව කවුළුවක විවෘචකරන්න) -bookmark_label=දà·à¶±à¶§ ඇà¶à·’ දසුන - -# Secondary toolbar and context menu -tools.title=මෙවලම් -tools_label=මෙවලම් -first_page.title=මුල් පිටුවට යන්න -first_page.label=මුල් පිටුවට යන්න -first_page_label=මුල් පිටුවට යන්න -last_page.title=අවසන් පිටුවට යන්න -last_page.label=අවසන් පිටුවට යන්න -last_page_label=අවසන් පිටුවට යන්න -page_rotate_cw.title=දක්à·à·’ණà·à·€à¶»à·Šà¶à·€ භ්â€à¶»à¶¸à¶«à¶º -page_rotate_cw.label=දක්à·à·’ණà·à·€à¶»à·Šà¶à·€ භ්â€à¶»à¶¸à¶«à¶º -page_rotate_cw_label=දක්à·à·’ණà·à·€à¶»à·Šà¶à·€ භ්â€à¶»à¶¸à¶«à¶º -page_rotate_ccw.title=à·€à·à¶¸à·à·€à¶»à·Šà¶à·€ භ්â€à¶»à¶¸à¶«à¶º -page_rotate_ccw.label=à·€à·à¶¸à·à·€à¶»à·Šà¶à·€ භ්â€à¶»à¶¸à¶«à¶º -page_rotate_ccw_label=à·€à·à¶¸à·à·€à¶»à·Šà¶à·€ භ්â€à¶»à¶¸à¶«à¶º - -hand_tool_enable.title=හස්චමෙවලම සක්â€à¶»à·“ය -hand_tool_enable_label=හස්චමෙවලම සක්â€à¶»à·“ය -hand_tool_disable.title=හස්චමෙවලම අක්â€à¶»à·“ය -hand_tool_disable_label=හස්චමෙවලම අක්â€à¶»à·“ය - -# Document properties dialog box -document_properties.title=ලේඛන à·€à¶à·Šà¶šà¶¸à·Š... -document_properties_label=ලේඛන à·€à¶à·Šà¶šà¶¸à·Š... -document_properties_file_name=ගොනු නම: -document_properties_file_size=ගොනු ප්â€à¶»à¶¸à·à¶«à¶º: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} බයිට) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} බයිට) -document_properties_title=සිරස්à¶à¶½à¶º: -document_properties_author=කà¶à·² -document_properties_subject=මà·à¶à·˜à¶šà·à·€: -document_properties_keywords=යà¶à·”රු වදන්: -document_properties_creation_date=නිර්මිචදිනය: -document_properties_modification_date=වෙනස්කල දිනය: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=නිර්මà·à¶´à¶š: -document_properties_producer=PDF නිà·à·Šà¶´à·à¶¯à¶š: -document_properties_version=PDF නිකුà¶à·”à·€: -document_properties_page_count=පිටු ගණන: -document_properties_close=වසන්න - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=පà·à¶à·’ à¶à·“රුවට මà·à¶»à·”වන්න -toggle_sidebar_label=පà·à¶à·’ à¶à·“රුවට මà·à¶»à·”වන්න -outline.title=ලේඛනයේ පිට මà·à¶ºà·’ම පෙන්වන්න -outline_label=ලේඛනයේ පිට මà·à¶ºà·’ම -attachments.title=ඇමිණුම් පෙන්වන්න -attachments_label=ඇමිණුම් -thumbs.title=සිඟිà¶à·’ රූ පෙන්වන්න -thumbs_label=සිඟිà¶à·’ රූ -findbar.title=ලේඛනය à¶à·”à·… සොයන්න -findbar_label=සොයන්න - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=පිටුව {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=පිටුවෙ සිඟිචරූව {{page}} - -# Find panel button title and messages -find_label=සොයන්න: -find_previous.title=මේ à·€à·à¶šà·Šâ€à¶º ඛණ්ඩය මීට පෙර යෙදුණු ස්ථà·à¶±à¶º සොයන්න -find_previous_label=පෙර: -find_next.title=මේ à·€à·à¶šà·Šâ€à¶º ඛණ්ඩය මීළඟට යෙදෙන ස්ථà·à¶±à¶º සොයන්න -find_next_label=මීළඟ -find_highlight=සියල්ල උද්දීපනය -find_match_case_label=අකුරු ගළපන්න -find_reached_top=පිටුවේ ඉහළ කෙළවරට ලගà·à·€à·’ය, පහළ සිට ඉදිරියට යමින් -find_reached_bottom=පිටුවේ පහළ කෙළවරට ලගà·à·€à·’ය, ඉහළ සිට ඉදිරියට යමින් -find_not_found=ඔබ සෙව් වචන හමු නොවීය - -# Error panel labels -error_more_info=බොහ෠à¶à·œà¶»à¶à·”රු -error_less_info=අවම à¶à·œà¶»à¶à·”රු -error_close=වසන්න -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (නිකුà¶à·”à·€: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=පණිවිඩය: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ගොනුව: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=පේළිය: {{line}} -rendering_error=පිටුව රෙන්ඩර් විමේදි ගà·à¶§à¶½à·”වක් හට ගà·à¶±à·”ණි. - -# Predefined zoom values -page_scale_width=පිටුවේ පළල -page_scale_fit=පිටුවට සුදුසු ලෙස -page_scale_auto=ස්වයංක්â€à¶»à·“ය විà·à·à¶½à¶«à¶º -page_scale_actual=නියමිචප්â€à¶»à¶¸à·à¶«à¶º -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=දà·à·‚ය -loading_error=PDF පූරණය විමේදි දà·à·‚යක් හට ගà·à¶±à·”ණි. -invalid_file_error=දූà·à·’චහ෠සà·à·€à¶¯à·Šâ€à¶º PDF ගොනුව. -missing_file_error=නà·à¶à·’වූ PDF ගොනුව. -unexpected_response_error=බලà·à¶´à·œà¶»à·œà¶à·Šà¶à·” නොවූ සේවà·à¶¯à·à¶ºà¶š ප්â€à¶»à¶à·’චà·à¶»à¶º. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} විස්à¶à¶»à¶º] -password_label=මෙම PDF ගොනුව විවෘචකිරීමට මුරපදය ඇà¶à·”à·…à¶à·Š කරන්න. -password_invalid=à·€à·à¶»à¶¯à·’ මුරපදයක්. කරුණà·à¶šà¶» නà·à·€à¶ උà¶à·Šà·ƒà·„ කරන්න. -password_ok=හරි -password_cancel=එප෠- -printing_not_supported=අවවà·à¶¯à¶ºà¶ºà·’: මෙම ගවේà·à¶šà¶º මුද්â€à¶»à¶«à¶º සඳහ෠සම්පූර්ණයෙන් සහය නොදක්වයි. -printing_not_ready=අවවà·à¶¯à¶ºà¶ºà·’: මුද්â€à¶»à¶«à¶º සඳහ෠PDF සම්පූර්ණයෙන් පූර්ණය වී නොමà·à¶. -web_fonts_disabled=ජà·à¶½ අකුරු අක්â€à¶»à·“යයි: à¶à·’à·…à·à¶½à·’ PDF අකුරු භà·à·€à·’චකළ නොහà·à¶š. -document_colors_disabled=PDF ලේඛනයට ඔවුන්ගේම වර්ණ භà·à·€à·’à¶à¶ºà¶§ ඉඩ නොලà·à¶¶à·š: 'පිටු වෙචඔවුන්ගේම වර්ණ භà·à·€à·’à¶à¶ºà¶§ ඉඩදෙන්න' ගවේà·à¶šà¶º මචඅක්â€à¶»à·“ය කර ඇà¶. diff --git a/public/pdfjs/web/locale/sk/viewer.properties b/public/pdfjs/web/locale/sk/viewer.properties deleted file mode 100644 index a410e56b..00000000 --- a/public/pdfjs/web/locale/sk/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Predchádzajúca strana -previous_label=Predchádzajúca -next.title=Nasledujúca strana -next_label=Nasledujúca - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Strana: -page_of=z {{pageCount}} - -zoom_out.title=VzdialiÅ¥ -zoom_out_label=VzdialiÅ¥ -zoom_in.title=PriblÞiÅ¥ -zoom_in_label=PriblÞiÅ¥ -zoom.title=Lupa -presentation_mode.title=Prepnúť na režim Prezentácia -presentation_mode_label=Režim Prezentácia -open_file.title=OtvoriÅ¥ súbor -open_file_label=OtvoriÅ¥ -print.title=TlaÄiÅ¥ -print_label=TlaÄiÅ¥ -download.title=PrevziaÅ¥ -download_label=PrevziaÅ¥ -bookmark.title=Aktuálne zobrazenie (kopÃrovaÅ¥ alebo otvoriÅ¥ v novom okne) -bookmark_label=Aktuálne zobrazenie - -# Secondary toolbar and context menu -tools.title=Nástroje -tools_label=Nástroje -first_page.title=PrejsÅ¥ na prvú stranu -first_page.label=PrejsÅ¥ na prvú stranu -first_page_label=PrejsÅ¥ na prvú stranu -last_page.title=PrejsÅ¥ na poslednú stranu -last_page.label=PrejsÅ¥ na poslednú stranu -last_page_label=PrejsÅ¥ na poslednú stranu -page_rotate_cw.title=OtoÄiÅ¥ v smere hodinových ruÄiÄiek -page_rotate_cw.label=OtoÄiÅ¥ v smere hodinových ruÄiÄiek -page_rotate_cw_label=OtoÄiÅ¥ v smere hodinových ruÄiÄiek -page_rotate_ccw.title=OtoÄiÅ¥ proti smeru hodinových ruÄiÄiek -page_rotate_ccw.label=OtoÄiÅ¥ proti smeru hodinových ruÄiÄiek -page_rotate_ccw_label=OtoÄiÅ¥ proti smeru hodinových ruÄiÄiek - -hand_tool_enable.title=Zapnúť nástroj Ruka -hand_tool_enable_label=Zapnúť nástroj Ruka -hand_tool_disable.title=Vypnúť nástroj Ruka -hand_tool_disable_label=Vypnúť nástroj Ruka - -# Document properties dialog box -document_properties.title=Vlastnosti dokumentu… -document_properties_label=Vlastnosti dokumentu… -document_properties_file_name=Názov súboru: -document_properties_file_size=VeľkosÅ¥ súboru: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kB ({{size_b}} bajtov) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajtov) -document_properties_title=Názov: -document_properties_author=Autor: -document_properties_subject=Predmet: -document_properties_keywords=KľúÄové slová: -document_properties_creation_date=Dátum vytvorenia: -document_properties_modification_date=Dátum úpravy: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Vytvoril: -document_properties_producer=Tvorca PDF: -document_properties_version=Verzia PDF: -document_properties_page_count=PoÄet strán: -document_properties_close=ZavrieÅ¥ - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Prepnúť boÄný panel -toggle_sidebar_label=Prepnúť boÄný panel -outline.title=ZobraziÅ¥ prehľad dokumentu -outline_label=Prehľad dokumentu -attachments.title=ZobraziÅ¥ prÃlohy -attachments_label=PrÃlohy -thumbs.title=ZobraziÅ¥ miniatúry -thumbs_label=Miniatúry -findbar.title=HľadaÅ¥ v dokumente -findbar_label=HľadaÅ¥ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Strana {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatúra strany {{page}} - -# Find panel button title and messages -find_label=HľadaÅ¥: -find_previous.title=VyhľadaÅ¥ predchádzajúci výskyt reÅ¥azca -find_previous_label=Predchádzajúce -find_next.title=VyhľadaÅ¥ ÄalÅ¡Ã výskyt reÅ¥azca -find_next_label=ÄŽalÅ¡ie -find_highlight=ZvýrazniÅ¥ vÅ¡etky -find_match_case_label=RozliÅ¡ovaÅ¥ malé/veľké pÃsmená -find_reached_top=Bol dosiahnutý zaÄiatok stránky, pokraÄuje sa od konca -find_reached_bottom=Bol dosiahnutý koniec stránky, pokraÄuje sa od zaÄiatku -find_not_found=Výraz nebol nájdený - -# Error panel labels -error_more_info=Viac informácià -error_less_info=Menej informácià -error_close=ZavrieÅ¥ -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (zostavenie: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Správa: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ZásobnÃk: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Súbor: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Riadok: {{line}} -rendering_error=Pri vykresľovanà stránky sa vyskytla chyba. - -# Predefined zoom values -page_scale_width=Na Å¡Ãrku strany -page_scale_fit=Na veľkosÅ¥ strany -page_scale_auto=Automatická veľkosÅ¥ -page_scale_actual=SkutoÄná veľkosÅ¥ -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Chyba -loading_error=PoÄas naÄÃtavania dokumentu PDF sa vyskytla chyba. -invalid_file_error=Neplatný alebo poÅ¡kodený súbor PDF. -missing_file_error=Chýbajúci súbor PDF. -unexpected_response_error=NeoÄakávaná odpoveÄ zo servera. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Anotácia typu {{type}}] -password_label=Ak chcete otvoriÅ¥ tento súbor PDF, zadajte jeho heslo. -password_invalid=Heslo nie je platné. Skúste to znova. -password_ok=OK -password_cancel=ZruÅ¡iÅ¥ - -printing_not_supported=Upozornenie: tlaÄ nie je v tomto prehliadaÄi plne podporovaná. -printing_not_ready=Upozornenie: súbor PDF nie je plne naÄÃtaný pre tlaÄ. -web_fonts_disabled=Webové pÃsma sú vypnuté: nie je možné použiÅ¥ pÃsma vložené do súboru PDF. -document_colors_disabled=Dokumenty PDF nemajú povolené použÃvaÅ¥ vlastné farby, pretože voľba "PovoliÅ¥ stránkam použÃvaÅ¥ vlastné farby" je v nastaveniach prehliadaÄa vypnutá. diff --git a/public/pdfjs/web/locale/sl/viewer.properties b/public/pdfjs/web/locale/sl/viewer.properties deleted file mode 100644 index 047c0f9a..00000000 --- a/public/pdfjs/web/locale/sl/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=PrejÅ¡nja stran -previous_label=Nazaj -next.title=Naslednja stran -next_label=Naprej - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Stran: -page_of=od {{pageCount}} - -zoom_out.title=PomanjÅ¡aj -zoom_out_label=PomanjÅ¡aj -zoom_in.title=PoveÄaj -zoom_in_label=PoveÄaj -zoom.title=PoveÄava -presentation_mode.title=Preklopi v naÄin predstavitve -presentation_mode_label=NaÄin predstavitve -open_file.title=Odpri datoteko -open_file_label=Odpri -print.title=Natisni -print_label=Natisni -download.title=Prenesi -download_label=Prenesi -bookmark.title=Trenutni pogled (kopiraj ali odpri v novem oknu) -bookmark_label=Trenutni pogled - -# Secondary toolbar and context menu -tools.title=Orodja -tools_label=Orodja -first_page.title=Pojdi na prvo stran -first_page.label=Pojdi na prvo stran -first_page_label=Pojdi na prvo stran -last_page.title=Pojdi na zadnjo stran -last_page.label=Pojdi na zadnjo stran -last_page_label=Pojdi na zadnjo stran -page_rotate_cw.title=Zavrti v smeri urninega kazalca -page_rotate_cw.label=Zavrti v smeri urninega kazalca -page_rotate_cw_label=Zavrti v smeri urninega kazalca -page_rotate_ccw.title=Zavrti v nasprotni smeri urninega kazalca -page_rotate_ccw.label=Zavrti v nasprotni smeri urninega kazalca -page_rotate_ccw_label=Zavrti v nasprotni smeri urninega kazalca - -hand_tool_enable.title=OmogoÄi roko -hand_tool_enable_label=OmogoÄi roko -hand_tool_disable.title=OnemogoÄi roko -hand_tool_disable_label=OnemogoÄi roko - -# Document properties dialog box -document_properties.title=Lastnosti dokumenta … -document_properties_label=Lastnosti dokumenta … -document_properties_file_name=Ime datoteke: -document_properties_file_size=Velikost datoteke: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bajtov) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bajtov) -document_properties_title=Ime: -document_properties_author=Avtor: -document_properties_subject=Tema: -document_properties_keywords=KljuÄne besede: -document_properties_creation_date=Datum nastanka: -document_properties_modification_date=Datum spremembe: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Ustvaril: -document_properties_producer=Izdelovalec PDF: -document_properties_version=RazliÄica PDF: -document_properties_page_count=Å tevilo strani: -document_properties_close=Zapri - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Preklopi stransko vrstico -toggle_sidebar_label=Preklopi stransko vrstico -outline.title=Prikaži oris dokumenta -outline_label=Oris dokumenta -attachments.title=Prikaži priponke -attachments_label=Priponke -thumbs.title=Prikaži sliÄice -thumbs_label=SliÄice -findbar.title=Iskanje po dokumentu -findbar_label=Iskanje - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Stran {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=SliÄica strani {{page}} - -# Find panel button title and messages -find_label=Najdi: -find_previous.title=Najdi prejÅ¡njo ponovitev iskanega -find_previous_label=Najdi nazaj -find_next.title=Najdi naslednjo ponovitev iskanega -find_next_label=Najdi naprej -find_highlight=OznaÄi vse -find_match_case_label=Razlikuj velike/male Ärke -find_reached_top=Dosežen zaÄetek dokumenta iz smeri konca -find_reached_bottom=Doseženo konec dokumenta iz smeri zaÄetka -find_not_found=Iskanega ni mogoÄe najti - -# Error panel labels -error_more_info=VeÄ informacij -error_less_info=Manj informacij -error_close=Zapri -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js r{{version}} (graditev: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=SporoÄilo: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Sklad: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Datoteka: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Vrstica: {{line}} -rendering_error=Med pripravljanjem strani je priÅ¡lo do napake! - -# Predefined zoom values -page_scale_width=Å irina strani -page_scale_fit=Prilagodi stran -page_scale_auto=Samodejno -page_scale_actual=Dejanska velikost -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}} % - -# Loading indicator messages -loading_error_indicator=Napaka -loading_error=Med nalaganjem datoteke PDF je priÅ¡lo do napake. -invalid_file_error=Neveljavna ali pokvarjena datoteka PDF. -missing_file_error=Ni datoteke PDF. -unexpected_response_error=NepriÄakovan odgovor strežnika. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Opomba vrste {{type}}] -password_label=Vnesite geslo za odpiranje te datoteke PDF. -password_invalid=Neveljavno geslo. Poskusite znova. -password_ok=V redu -password_cancel=PrekliÄi - -printing_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja. -printing_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje. -web_fonts_disabled=Spletne pisave so onemogoÄene: vgradnih pisav za PDF ni mogoÄe uporabiti. -document_colors_disabled=Dokumenti PDF ne smejo uporabljati svojih lastnih barv: možnost 'Dovoli stranem uporabo lastnih barv' je v brskalniku onemogoÄena. diff --git a/public/pdfjs/web/locale/son/viewer.properties b/public/pdfjs/web/locale/son/viewer.properties deleted file mode 100644 index 2c8460f1..00000000 --- a/public/pdfjs/web/locale/son/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Moo bisante -previous_label=Bisante -next.title=Jinehere moo -next_label=Jine - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=&Moo: -page_of={{pageCount}} ga - -zoom_out.title=Nakasandi -zoom_out_label=Nakasandi -zoom_in.title=Bebbeerandi -zoom_in_label=Bebbeerandi -zoom.title=Bebbeerandi -presentation_mode.title=Bere cebeyan alhaali -presentation_mode_label=Cebeyan alhaali -open_file.title=Tuku feeri -open_file_label=Feeri -print.title=Kar -print_label=Kar -download.title=Zumandi -download_label=Zumandi -bookmark.title=Sohõ gunarro (bere wala feeri zanfun taaga ra) -bookmark_label=Sohõ gunaroo - -# Secondary toolbar and context menu -tools.title=Goyjinawey -tools_label=Goyjinawey -first_page.title=Koy moo jinaa ga -first_page.label=Koy moo jinaa ga -first_page_label=Koy moo jinaa ga -last_page.title=Koy moo koraa ga -last_page.label=Koy moo koraa ga -last_page_label=Koy moo koraa ga -page_rotate_cw.title=Kuubi kanbe guma here -page_rotate_cw.label=Kuubi kanbe guma here -page_rotate_cw_label=Kuubi kanbe guma here -page_rotate_ccw.title=Kuubi kanbe wowa here -page_rotate_ccw.label=Kuubi kanbe wowa here -page_rotate_ccw_label=Kuubi kanbe wowa here - -hand_tool_enable.title=Kanbe goyjinay tunandi -hand_tool_enable_label=Kanbe goyjinay tunandi -hand_tool_disable.title=Kanbe joyjinay kaa -hand_tool_disable_label=Kanbe goyjinay kaa - -# Document properties dialog box -document_properties.title=Takadda mayrawey… -document_properties_label=Takadda mayrawey… -document_properties_file_name=Tuku maa: -document_properties_file_size=Tuku adadu: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb=KB {{size_kb}} (cebsu-ize {{size_b}}) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb=MB {{size_mb}} (cebsu-ize {{size_b}}) -document_properties_title=Tiiramaa: -document_properties_author=Hantumkaw: -document_properties_subject=Dalil: -document_properties_keywords=Kufalkalimawey: -document_properties_creation_date=Teeyan han: -document_properties_modification_date=Barmayan han: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Teekaw: -document_properties_producer=PDF berandikaw: -document_properties_version=PDF dumi: -document_properties_page_count=Moo hinna: -document_properties_close=Daabu - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Kanjari ceraw zuu -toggle_sidebar_label=Kanjari ceraw zuu -outline.title=Takadda filla-boÅ‹ cebe -outline_label=Takadda filla-boÅ‹ -attachments.title=Hangarey cebe -attachments_label=Hangarey -thumbs.title=Kabeboy biyey cebe -thumbs_label=Kabeboy biyey -findbar.title=Ceeci takaddaa ra -findbar_label=Ceeci - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title={{page}} moo -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Kabeboy bii {{page}} moo Å¡e - -# Find panel button title and messages -find_label=Ceeci: -find_previous.title=KalimaɲaÅ‹oo bangayri bisantaa ceeci -find_previous_label=Bisante -find_next.title=KalimaɲaÅ‹oo hiino bangayroo ceeci -find_next_label=Jine -find_highlight=Ikul Å¡ilbay -find_match_case_label=Harfu-beeriyan hawgay -find_reached_top=A too moÅ‹oo boÅ‹oo, koy jine ka Å¡initin nda cewoo -find_reached_bottom=A too moɲoo cewoo, koy jine Å¡intioo ga -find_not_found=Kalimaɲaa mana duwandi - -# Error panel labels -error_more_info=Alhabar tontoni -error_less_info=Alhabar tontoni -error_close=Daabu -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Alhabar: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Dekeri: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Tuku: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Žeeri: {{line}} -rendering_error=Firka bangay kaÅ‹ moɲoo goo ma willandi. - -# Predefined zoom values -page_scale_width=Mooo hayyan -page_scale_fit=Moo sawayan -page_scale_auto=BoÅ‹Å¡e azzaati barmayyan -page_scale_actual=Adadu cimi -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Firka -loading_error=Firka bangay kaÅ‹ PDF goo ma zumandi. -invalid_file_error=PDF tuku laala wala laybante. -missing_file_error=PDF tuku kumante. -unexpected_response_error=Manti ferÅ¡ikaw tuuruyan maatante. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt={{type}} maasa-caw] -password_label=Å ennikufal dam ka PDF tukoo woo feeri. -password_invalid=Å ennikufal laalo. Ceeci koyne taare. -password_ok=Ayyo -password_cancel=NaÅ‹ - -printing_not_supported=Yaamar: Karyan Å¡i tee ka timme nda ceecikaa woo. -printing_not_ready=Yaamar: PDF Å¡i zunbu ka timme karyan Å¡e. -web_fonts_disabled=Interneti Å¡igirawey kay: Å¡i hin ka goy nda PDF Å¡igira hurantey. -document_colors_disabled=PDF takaddawey Å¡i duu fondo ka ngey boÅ‹ noonawey zaa: 'NaÅ‹ moɲey ma ngey boÅ‹ noonawey suuba' Å¡i dira ceecikaa ga. diff --git a/public/pdfjs/web/locale/sq/viewer.properties b/public/pdfjs/web/locale/sq/viewer.properties deleted file mode 100644 index 68ab16b7..00000000 --- a/public/pdfjs/web/locale/sq/viewer.properties +++ /dev/null @@ -1,165 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Faqja e Mëparshme -previous_label=E mëparshmja -next.title=Faqja Pasuese -next_label=Pasuesja - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Faqja: -page_of=nga {{pageCount}} - -zoom_out.title=Zmadhim -zoom_out_label=Zmadhoji -zoom_in.title=Zvogëlim -zoom_in_label=Zvogëloji -zoom.title=Zoom -print.title=Shtypje -print_label=Shtypeni -presentation_mode.title=Kalo te Mënyra Paraqitje -presentation_mode_label=Mënyra Paraqitje -open_file.title=Hapni Kartelë -open_file_label=Hapeni -download.title=Shkarkim -download_label=Shkarkojeni -bookmark.title=Pamja e tanishme (kopjojeni ose hapeni në dritare të re) -bookmark_label=Pamja e Tanishme - -# Secondary toolbar and context menu -tools.title=Mjete -tools_label=Mjete -first_page.title=Shkoni te Faqja e Parë -first_page.label=Shkoni te Faqja e Parë -first_page_label=Shkoni te Faqja e Parë -last_page.title=Shkoni te Faqja e Fundit -last_page.label=Shkoni te Faqja e Fundit -last_page_label=Shkoni te Faqja e Fundit -page_rotate_cw.title=Rrotullojeni Në Kahun Orar -page_rotate_cw.label=Rrotullojeni Në Kahun Orar -page_rotate_cw_label=Rrotullojeni Në Kahun Orar -page_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar -page_rotate_ccw.label=Rrotullojeni Në Kahun Kundërorar -page_rotate_ccw_label=Rrotullojeni Në Kahun Kundërorar - -hand_tool_enable.title=Aktivizoni mjet dore -hand_tool_enable_label=Aktivizoni mjet dore -hand_tool_disable.title=Çaktivizoni mjet dore -hand_tool_disable_label=Çaktivizoni mjet dore - -# Document properties dialog box -document_properties.title=Veti Dokumenti… -document_properties_label=Veti Dokumenti… -document_properties_file_name=Emër kartele: -document_properties_file_size=Madhësi kartele: -document_properties_kb={{size_kb}} KB ({{size_b}} bajte) -document_properties_mb={{size_mb}} MB ({{size_b}} bajte) -document_properties_title=Titull: -document_properties_author=Autor: -document_properties_subject=Subjekt: -document_properties_keywords=Fjalëkyçe: -document_properties_creation_date=Datë Krijimi: -document_properties_modification_date=Datë Ndryshimi: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Krijues: -document_properties_producer=Prodhues PDF-je: -document_properties_version=Version PDF-je: -document_properties_page_count=Numër Faqesh: -document_properties_close=Mbylle - - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Shfaqni/Fshihni Anështyllën -toggle_sidebar_label=Shfaqni/Fshihni Anështyllën -outline.title=Shfaq Përvijim Dokumenti -outline_label=Shfaq Përvijim Dokumenti -attachments.title=Shfaq Bashkëngjitje -attachments_label=Bashkëngjitje -thumbs.title=Shfaq Miniatura -thumbs_label=Miniatura -findbar.title=Gjej në Dokument -findbar_label=Gjej - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Faqja {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniaturë e Faqes {{page}} - -# Context menu -first_page.label=Kalo te Faqja e Parë -last_page.label=Kalo te Faqja e Fundit -page_rotate_cw.label=Rrotulloje Në Kahun Orar -page_rotate_ccw.label=Rrotulloje Në Kahun Antiorar - -# Find panel button title and messages -find_label=Gjej: -find_previous.title=Gjeni hasjen e mëparshme të togfjalëshit -find_previous_label=E mëparshmja -find_next.title=Gjeni hasjen pasuese të togfjalëshit -find_next_label=Pasuesja -find_highlight=Theksoji të gjitha -find_match_case_label=Siç është shkruar -find_reached_top=U mbërrit në krye të dokumentit, vazhduar prej fundit -find_reached_bottom=U mbërrit në fund të dokumentit, vazhduar prej kreut -find_not_found=Nuk u gjet togfjalëshi - -# Error panel labels -error_more_info=Më Tepër të Dhëna -error_less_info=Më Pak të Dhëna -error_close=Mbylle -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mesazh: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Kartelë: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rresht: {{line}} -rendering_error=Ndodhi një gabim gjatë riprodhimit të faqes. - -# Predefined zoom values -page_scale_width=Gjerësi Faqeje -page_scale_fit=Sa Nxë Faqja -page_scale_auto=Zoom i Vetvetishëm -page_scale_actual=Madhësia Faktike -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage -loading_error_indicator=Gabim -loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së. -invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar. -missing_file_error=Kartelë PDF që mungon. -unexpected_response_error=Përgjigje shërbyesi e papritur. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Nënvizim {{type}}] -password_label=Jepni fjalëkalimin që të hapet kjo kartelë PDF. -password_invalid=Fjalëkalim i pavlefshëm. Ju lutemi, riprovoni. -password_ok=OK -password_cancel=Anuloje - -printing_not_supported=Kujdes: Shtypja nuk mbulohet plotësisht nga ky shfletues. -printing_not_ready=Kujdes: PDF-ja nuk është ngarkuar plotësisht që ta shtypni. -web_fonts_disabled=Shkronjat Web janë të çaktivizuara: i pazoti të përdorë shkronja të trupëzuara në PDF. -document_colors_disabled=Dokumenteve PDF nuk u është lejuar të përdorin ngjyrat e veta: 'Lejoji faqet t'i zgjedhin vetë ngjyrat', te shfletuesi, është e çaktivizuar. diff --git a/public/pdfjs/web/locale/sr/viewer.properties b/public/pdfjs/web/locale/sr/viewer.properties deleted file mode 100644 index 0603d887..00000000 --- a/public/pdfjs/web/locale/sr/viewer.properties +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Претходна Ñтраница -previous_label=Претходна -next.title=Следећа Ñтраница -next_label=Следећа - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Страница: -page_of=од {{pageCount}} - -zoom_out.title=Умањи -zoom_out_label=Умањи -zoom_in.title=Увеличај -zoom_in_label=Увеличај -zoom.title=Зумирање -presentation_mode.title=Промени на приказ у режиму презентације -presentation_mode_label=Режим презентације -open_file.title=Отвори датотеку -open_file_label=Отвори -print.title=Штампај -print_label=Штампај -download.title=Преузми -download_label=Преузми -bookmark.title=Тренутни приказ (копирај или отвори нови прозор) -bookmark_label=Тренутни приказ - -# Secondary toolbar and context menu -tools.title=Ðлатке -tools_label=Ðлатке -first_page.title=Иди на прву Ñтраницу -first_page.label=Иди на прву Ñтраницу -first_page_label=Иди на прву Ñтраницу -last_page.title=Иди на поÑледњу Ñтраницу -last_page.label=Иди на поÑледњу Ñтраницу -last_page_label=Иди на поÑледњу Ñтраницу -page_rotate_cw.title=Ротирај у Ñмеру казаљке на Ñату -page_rotate_cw.label=Ротирај у Ñмеру казаљке на Ñату -page_rotate_cw_label=Ротирај у Ñмеру казаљке на Ñату -page_rotate_ccw.title=Ротирај у Ñмеру Ñупротном од казаљке на Ñату -page_rotate_ccw.label=Ротирај у Ñмеру Ñупротном од казаљке на Ñату -page_rotate_ccw_label=Ротирај у Ñмеру Ñупротном од казаљке на Ñату - -hand_tool_enable.title=Омогући алатку за померање -hand_tool_enable_label=Омогући алатку за померање -hand_tool_disable.title=Онемогући алатку за померање -hand_tool_disable_label=Онемогући алатку за померање - -# Document properties dialog box -document_properties.title=Параметри документа… -document_properties_label=Параметри документа… -document_properties_file_name=Име датотеке: -document_properties_file_size=Величина датотеке: -document_properties_kb={{size_kb}} KB ({{size_b}} B) -document_properties_mb={{size_mb}} MB ({{size_b}} B) -document_properties_title=ÐаÑлов: -document_properties_author=Ðутор: -document_properties_subject=Тема: -document_properties_keywords=Кључне речи: -document_properties_creation_date=Датум креирања: -document_properties_modification_date=Датум модификације: -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Стваралац: -document_properties_producer=PDF произвођач: -document_properties_version=PDF верзија: -document_properties_page_count=Број Ñтраница: -document_properties_close=Затвори - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Прикажи додатну палету -toggle_sidebar_label=Прикажи додатну палету -outline.title=Прикажи контуру документа -outline_label=Контура документа -attachments.title=Прикажи прилоге -attachments_label=Прилози -thumbs.title=Прикажи Ñличице -thumbs_label=Сличице -findbar.title=Пронађи у документу -findbar_label=Пронађи - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Страница {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Сличица од Ñтранице {{page}} - -# Find panel button title and messages -find_label=Пронађи: -find_previous.title=Пронађи претходну појаву фразе -find_previous_label=Претходна -find_next.title=Пронађи Ñледећу појаву фразе -find_next_label=Следећа -find_highlight=ИÑтакнути Ñве -find_match_case_label=Подударања -find_reached_top=ДоÑтигнут врх документа, наÑтавио Ñа дна -find_reached_bottom=ДоÑтигнуто дно документа, наÑтавио Ñа врха -find_not_found=Фраза није пронађена - -# Error panel labels -error_more_info=Више информација -error_less_info=Мање информација -error_close=Затвори -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Порука: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стек: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Датотека: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Линија: {{line}} -rendering_error=Дошло је до грешке приликом рендеровања ове Ñтранице. - -# Predefined zoom values -page_scale_width=Ширина Ñтранице -page_scale_fit=Уклапање Ñтранице -page_scale_auto=ÐутоматÑко увеличавање -page_scale_actual=Стварна величина -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Грешка -loading_error=Дошло је до грешке приликом учитавања PDF-а. -invalid_file_error=PDF датотека је оштећена или је неиÑправна. -missing_file_error=PDF датотека није пронађена. -unexpected_response_error=Ðеочекиван одговор од Ñервера. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} коментар] -password_label=УнеÑите лозинку да биÑте отворили овај PDF докуменат. -password_invalid=ÐеиÑправна лозинка. Покушајте поново. -password_ok=У реду -password_cancel=Откажи - -printing_not_supported=Упозорење: Штампање није у потпуноÑти подржано у овом прегледачу. -printing_not_ready=Упозорење: PDF није у потпуноÑти учитан за штампу. -web_fonts_disabled=Веб фонтови Ñу онемогућени: не могу кориÑтити уграђене PDF фонтове. -document_colors_disabled=PDF документи не могу да кориÑте ÑопÑтвене боје: “Дозволи Ñтраницама да изаберу Ñвоје боје†је деактивирано у прегледачу. diff --git a/public/pdfjs/web/locale/sv-SE/viewer.properties b/public/pdfjs/web/locale/sv-SE/viewer.properties deleted file mode 100644 index 2236e77a..00000000 --- a/public/pdfjs/web/locale/sv-SE/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=FöregÃ¥ende sida -previous_label=FöregÃ¥ende -next.title=Nästa sida -next_label=Nästa - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Sida: -page_of=av {{pageCount}} - -zoom_out.title=Zooma ut -zoom_out_label=Zooma ut -zoom_in.title=Zooma in -zoom_in_label=Zooma in -zoom.title=Zoom -presentation_mode.title=Byt till presentationsläge -presentation_mode_label=Presentationsläge -open_file.title=Öppna fil -open_file_label=Öppna -print.title=Skriv ut -print_label=Skriv ut -download.title=Hämta -download_label=Hämta -bookmark.title=Aktuell vy (kopiera eller öppna i nytt fönster) -bookmark_label=Aktuell vy - -# Secondary toolbar and context menu -tools.title=Verktyg -tools_label=Verktyg -first_page.title=GÃ¥ till första sidan -first_page.label=GÃ¥ till första sidan -first_page_label=GÃ¥ till första sidan -last_page.title=GÃ¥ till sista sidan -last_page.label=GÃ¥ till sista sidan -last_page_label=GÃ¥ till sista sidan -page_rotate_cw.title=Rotera medurs -page_rotate_cw.label=Rotera medurs -page_rotate_cw_label=Rotera medurs -page_rotate_ccw.title=Rotera moturs -page_rotate_ccw.label=Rotera moturs -page_rotate_ccw_label=Rotera moturs - -hand_tool_enable.title=Aktivera handverktyg -hand_tool_enable_label=Aktivera handverktyg -hand_tool_disable.title=Inaktivera handverktyg -hand_tool_disable_label=Inaktivera handverktyg - -# Document properties dialog box -document_properties.title=Dokumentegenskaper… -document_properties_label=Dokumentegenskaper… -document_properties_file_name=Filnamn: -document_properties_file_size=Filstorlek: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} kB ({{size_b}} byte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Titel: -document_properties_author=Författare: -document_properties_subject=Ämne: -document_properties_keywords=Nyckelord: -document_properties_creation_date=Skapades: -document_properties_modification_date=Ändrades: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Skapare: -document_properties_producer=PDF-producent: -document_properties_version=PDF-version: -document_properties_page_count=Sidantal: -document_properties_close=Stäng - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Visa/dölj sidofält -toggle_sidebar_label=Visa/dölj sidofält -outline.title=Visa dokumentöversikt -outline_label=Dokumentöversikt -attachments.title=Visa Bilagor -attachments_label=Bilagor -thumbs.title=Visa miniatyrer -thumbs_label=Miniatyrer -findbar.title=Sök i dokument -findbar_label=Sök - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Sida {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Miniatyr av sida {{page}} - -# Find panel button title and messages -find_label=Sök: -find_previous.title=Hitta föregÃ¥ende förekomst av frasen -find_previous_label=FöregÃ¥ende -find_next.title=Hitta nästa förekomst av frasen -find_next_label=Nästa -find_highlight=Markera alla -find_match_case_label=Matcha versal/gemen -find_reached_top=NÃ¥dde början av dokumentet, började frÃ¥n slutet -find_reached_bottom=NÃ¥dde slutet pÃ¥ dokumentet, började frÃ¥n början -find_not_found=Frasen hittades inte - -# Error panel labels -error_more_info=Mer information -error_less_info=Mindre information -error_close=Stäng -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Meddelande: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Fil: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rad: {{line}} -rendering_error=Ett fel uppstod vid visning av sidan. - -# Predefined zoom values -page_scale_width=Sidbredd -page_scale_fit=Anpassa sida -page_scale_auto=Automatisk zoom -page_scale_actual=Verklig storlek -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Fel -loading_error=Ett fel uppstod vid laddning av PDF-filen. -invalid_file_error=Ogiltig eller korrupt PDF-fil. -missing_file_error=Saknad PDF-fil. -unexpected_response_error=Oväntat svar frÃ¥n servern. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-annotering] -password_label=Skriv in lösenordet för att öppna PDF-filen. -password_invalid=Ogiltigt lösenord. Försök igen. -password_ok=OK -password_cancel=Avbryt - -printing_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren. -printing_not_ready=Varning: PDF:en är inte klar för utskrift. -web_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt. -document_colors_disabled=PDF-dokument tillÃ¥ts inte använda egna färger: 'LÃ¥t sidor använda egna färger' är inaktiverat i webbläsaren. diff --git a/public/pdfjs/web/locale/sw/viewer.properties b/public/pdfjs/web/locale/sw/viewer.properties deleted file mode 100644 index 7f0f1b8c..00000000 --- a/public/pdfjs/web/locale/sw/viewer.properties +++ /dev/null @@ -1,129 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Ukurasa Uliotangulia -previous_label=Iliyotangulia -next.title=Ukurasa Ufuatao -next_label=Ifuatayo - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Ukurasa: -page_of=ya {{Hesabu ya ukurasa}} - -zoom_out.title=Kuza Nje -zoom_out_label=Kuza Nje -zoom_in.title=Kuza Ndani -zoom_in_label=Kuza Ndani -zoom.title=Kuza -presentation_mode.title=Badili kwa Hali ya Uwasilishaji -presentation_mode_label=Hali ya Uwasilishaji -open_file.title=Fungua Faili -open_file_label=Fungua -print.title=Chapisha -print_label=Chapisha -download.title=Pakua -download_label=Pakua -bookmark.title=Mwonekano wa sasa (nakili au ufungue katika dirisha mpya) -bookmark_label=Mwonekano wa Sasa - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Kichwa: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Kibiano cha Upau wa Kando -toggle_sidebar_label=Kibiano cha Upau wa Kando -outline.title=Onyesha Ufupisho wa Waraka -outline_label=Ufupisho wa Waraka -thumbs.title=Onyesha Kijipicha -thumbs_label=Vijipicha -findbar.title=Pata katika Waraka -findbar_label=Tafuta - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Ukurasa {{ukurasa}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Kijipicha cha ukurasa {{ukurasa}} - -# Find panel button title and messages -find_label=Tafuta: -find_previous.title=Tafuta tukio kabla ya msemo huu -find_previous_label=Iliyotangulia -find_next.title=Tafuta tukio linalofuata la msemo -find_next_label=Ifuatayo -find_highlight=Angazia yote -find_match_case_label=Linganisha herufi -find_reached_top=Imefika juu ya waraka, imeendelea kutoka chini -find_reached_bottom=Imefika mwisho wa waraka, imeendelea kutoka juu -find_not_found=Msemo hukupatikana - -# Error panel labels -error_more_info=Maelezo Zaidi -error_less_info=Maelezo Kidogo -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (jenga: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ujumbe: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Panganya: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Faili: {{faili}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Laini: {{laini}} -rendering_error=Hitilafu lilitokea wajati wa kutoa ukurasa - -# Predefined zoom values -page_scale_width=Upana wa Ukurasa -page_scale_fit=Usawa wa Ukurasa -page_scale_auto=Ukuzaji wa Kiotomatiki -page_scale_actual=Ukubwa Halisi -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Hitilafu -loading_error=Hitilafu lilitokea wakati wa kupakia PDF. -invalid_file_error=Faili ya PDF isiyohalali au potofu. -missing_file_error=Faili ya PDF isiyopo. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Ufafanuzi] -password_ok=SAWA -password_cancel=Ghairi - -printing_not_supported=Onyo: Uchapishaji hauauniwi kabisa kwa kivinjari hiki. -web_fonts_disabled=Fonti za tovuti zimelemazwa: haziwezi kutumia fonti za PDF zilizopachikwa. diff --git a/public/pdfjs/web/locale/ta-LK/viewer.properties b/public/pdfjs/web/locale/ta-LK/viewer.properties deleted file mode 100644 index 178b6199..00000000 --- a/public/pdfjs/web/locale/ta-LK/viewer.properties +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. - -zoom.title=அளவ௠-open_file.title=கோபà¯à®ªà®¿à®©à¯ˆà®¤à¯ திறகà¯à®• -open_file_label=திறகà¯à®• - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages -find_previous.title=இநà¯à®¤ சொறà¯à®±à¯Šà®Ÿà®°à®¿à®©à¯ à®®à¯à®©à¯à®©à¯ˆà®¯ நிகழà¯à®µà¯ˆ தேட௠-find_next.title=இநà¯à®¤ சொறà¯à®±à¯Šà®Ÿà®°à®¿à®©à¯ அடà¯à®¤à¯à®¤ நிகழà¯à®µà¯ˆà®¤à¯ தேட௠- -# Error panel labels -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=ஆம௠- diff --git a/public/pdfjs/web/locale/ta/viewer.properties b/public/pdfjs/web/locale/ta/viewer.properties deleted file mode 100644 index 73f545d2..00000000 --- a/public/pdfjs/web/locale/ta/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=à®®à¯à®¨à¯à®¤à¯ˆà®¯ பகà¯à®•à®®à¯ -previous_label=à®®à¯à®¨à¯à®¤à¯ˆà®¯à®¤à¯ -next.title=அடà¯à®¤à¯à®¤ பகà¯à®•à®®à¯ -next_label=அடà¯à®¤à¯à®¤à¯ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=பகà¯à®•à®®à¯: -page_of=இல௠{{pageCount}} - -zoom_out.title=சிறிதாகà¯à®•à¯ -zoom_out_label=சிறிதாகà¯à®•à¯ -zoom_in.title=பெரிதாகà¯à®•à¯ -zoom_in_label=பெரிதாகà¯à®•à¯ -zoom.title=பெரிதாகà¯à®•à¯ -presentation_mode.title=விளகà¯à®•à®•à®¾à®Ÿà¯à®šà®¿ பயனà¯à®®à¯à®±à¯ˆà®•à¯à®•à¯ மாற௠-presentation_mode_label=விளகà¯à®•à®•à®¾à®Ÿà¯à®šà®¿ பயனà¯à®®à¯à®±à¯ˆ -open_file.title=கோபà¯à®ªà®¿à®©à¯ˆ திற -open_file_label=திற -print.title=அசà¯à®šà®¿à®Ÿà¯ -print_label=அசà¯à®šà®¿à®Ÿà¯ -download.title=பதிவிறகà¯à®•à¯ -download_label=பதிவிறகà¯à®•à¯ -bookmark.title=தறà¯à®ªà¯‹à®¤à¯ˆà®¯ காடà¯à®šà®¿ (பà¯à®¤à®¿à®¯ சாளரதà¯à®¤à®¿à®±à¯à®•à¯ நகலெட௠அலà¯à®²à®¤à¯ பà¯à®¤à®¿à®¯ சாளரதà¯à®¤à®¿à®²à¯ திற) -bookmark_label=தறà¯à®ªà¯‹à®¤à¯ˆà®¯ காடà¯à®šà®¿ - -# Secondary toolbar and context menu -tools.title=கரà¯à®µà®¿à®•à®³à¯ -tools_label=கரà¯à®µà®¿à®•à®³à¯ -first_page.title=à®®à¯à®¤à®²à¯ பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ -first_page.label=à®®à¯à®¤à®²à¯ பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ -first_page_label=à®®à¯à®¤à®²à¯ பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ -last_page.title=கடைசி பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ -last_page.label=கடைசி பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ -last_page_label=கடைசி பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯ -page_rotate_cw.title=வலஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ -page_rotate_cw.label=வலஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ -page_rotate_cw_label=வலஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ -page_rotate_ccw.title=இடஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ -page_rotate_ccw.label=இடஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ -page_rotate_ccw_label=இடஞà¯à®šà¯à®´à®¿à®¯à®¾à®• சà¯à®´à®±à¯à®±à¯ - -hand_tool_enable.title=கை கரà¯à®µà®¿à®¯à¯ˆ செயலாகà¯à®•à¯ -hand_tool_enable_label=கை கரà¯à®µà®¿à®¯à¯ˆ செயலாகà¯à®•à¯ -hand_tool_disable.title=கை கரà¯à®µà®¿à®¯à¯ˆ à®®à¯à®Ÿà®•à¯à®•à¯ -hand_tool_disable_label=கை கரà¯à®µà®¿à®¯à¯ˆ à®®à¯à®Ÿà®•à¯à®•à¯ - -# Document properties dialog box -document_properties.title=ஆவண பணà¯à®ªà¯à®•à®³à¯... -document_properties_label=ஆவண பணà¯à®ªà¯à®•à®³à¯... -document_properties_file_name=கோபà¯à®ªà¯ பெயரà¯: -document_properties_file_size=கோபà¯à®ªà®¿à®©à¯ அளவà¯: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} கிபை ({{size_b}} பைடà¯à®Ÿà¯à®•à®³à¯) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} மெபை ({{size_b}} பைடà¯à®Ÿà¯à®•à®³à¯) -document_properties_title=தலைபà¯à®ªà¯: -document_properties_author=எழà¯à®¤à®¿à®¯à®µà®°à¯ -document_properties_subject=பொரà¯à®³à¯: -document_properties_keywords=à®®à¯à®•à¯à®•à®¿à®¯ வாரà¯à®¤à¯à®¤à¯ˆà®•à®³à¯: -document_properties_creation_date=படைதà¯à®¤ தேதி : -document_properties_modification_date=திரà¯à®¤à¯à®¤à®¿à®¯ தேதி: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=உரà¯à®µà®¾à®•à¯à®•à¯à®ªà®µà®°à¯: -document_properties_producer=பிடிஎஃப௠தயாரிபà¯à®ªà®¾à®³à®°à¯: -document_properties_version=PDF பதிபà¯à®ªà¯: -document_properties_page_count=பகà¯à®• எணà¯à®£à®¿à®•à¯à®•à¯ˆ: -document_properties_close=மூடà¯à®• - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=பகà¯à®•à®ªà¯ படà¯à®Ÿà®¿à®¯à¯ˆ நிலைமாறà¯à®±à¯ -toggle_sidebar_label=பகà¯à®•à®ªà¯ படà¯à®Ÿà®¿à®¯à¯ˆ நிலைமாறà¯à®±à¯ -outline.title=ஆவண வெளிவரையைக௠காணà¯à®ªà®¿ -outline_label=ஆவண வெளிவரை -attachments.title=இணைபà¯à®ªà¯à®•à®³à¯ˆ காணà¯à®ªà®¿ -attachments_label=இணைபà¯à®ªà¯à®•à®³à¯ -thumbs.title=சிறà¯à®ªà®Ÿà®™à¯à®•à®³à¯ˆà®•à¯ காணà¯à®ªà®¿ -thumbs_label=சிறà¯à®ªà®Ÿà®™à¯à®•à®³à¯ -findbar.title=ஆவணதà¯à®¤à®¿à®²à¯ கணà¯à®Ÿà®±à®¿ -findbar_label=கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿ - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=பகà¯à®•à®®à¯ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=பகà¯à®•à®¤à¯à®¤à®¿à®©à¯ சிறà¯à®ªà®Ÿà®®à¯ {{page}} - -# Find panel button title and messages -find_label=கணà¯à®Ÿà®±à®¿: -find_previous.title=இநà¯à®¤ சொறà¯à®±à¯Šà®Ÿà®°à®¿à®©à¯ à®®à¯à®¨à¯à®¤à¯ˆà®¯ நிகழà¯à®µà¯ˆ தேட௠-find_previous_label=à®®à¯à®¨à¯à®¤à¯ˆà®¯à®¤à¯ -find_next.title=இநà¯à®¤ சொறà¯à®±à¯Šà®Ÿà®°à®¿à®©à¯ அடà¯à®¤à¯à®¤ நிகழà¯à®µà¯ˆ தேட௠-find_next_label=அடà¯à®¤à¯à®¤à¯ -find_highlight=அனைதà¯à®¤à¯ˆà®¯à¯à®®à¯ தனிபà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ -find_match_case_label=பேரெழà¯à®¤à¯à®¤à®¾à®•à¯à®•à®¤à¯à®¤à¯ˆ உணர௠-find_reached_top=ஆவணதà¯à®¤à®¿à®©à¯ மேல௠பகà¯à®¤à®¿à®¯à¯ˆ அடைநà¯à®¤à®¤à¯, அடிபà¯à®ªà®•à¯à®•à®¤à¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ தொடரà¯à®¨à¯à®¤à®¤à¯ -find_reached_bottom=ஆவணதà¯à®¤à®¿à®©à¯ à®®à¯à®Ÿà®¿à®µà¯ˆ அடைநà¯à®¤à®¤à¯, மேலிரà¯à®¨à¯à®¤à¯ தொடரà¯à®¨à¯à®¤à®¤à¯ -find_not_found=சொறà¯à®±à¯Šà®Ÿà®°à¯ காணவிலà¯à®²à¯ˆ - -# Error panel labels -error_more_info=கூடà¯à®¤à®²à¯ தகவல௠-error_less_info=கà¯à®±à¯ˆà®¨à¯à®¤ தகவல௠-error_close=மூடà¯à®• -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=செயà¯à®¤à®¿: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=ஸà¯à®Ÿà¯‡à®•à¯: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=கோபà¯à®ªà¯: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=வரி: {{line}} -rendering_error=இநà¯à®¤à®ªà¯ பகà¯à®•à®¤à¯à®¤à¯ˆ காடà¯à®šà®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®®à¯ போத௠ஒர௠பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯. - -# Predefined zoom values -page_scale_width=பகà¯à®• அகலம௠-page_scale_fit=பகà¯à®•à®ªà¯ பொரà¯à®¤à¯à®¤à®®à¯ -page_scale_auto=தானியகà¯à®• பெரிதாகà¯à®•à®²à¯ -page_scale_actual=உணà¯à®®à¯ˆà®¯à®¾à®© அளவ௠-# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=பிழை -loading_error=PDF à® à®à®±à¯à®±à¯à®®à¯ போத௠ஒர௠பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯. -invalid_file_error=செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®•à®¾à®¤ அலà¯à®²à®¤à¯ சிதைநà¯à®¤ PDF கோபà¯à®ªà¯. -missing_file_error=PDF கோபà¯à®ªà¯ காணவிலà¯à®²à¯ˆ. -unexpected_response_error=சேவகன௠பதில௠எதிரà¯à®ªà®¾à®°à®¤à®¤à¯. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} விளகà¯à®•à®®à¯] -password_label=இநà¯à®¤ PDF கோபà¯à®ªà¯ˆ திறகà¯à®• கடவà¯à®šà¯à®šà¯†à®¾à®²à¯à®²à¯ˆ உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯. -password_invalid=செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®•à®¾à®¤ கடவà¯à®šà¯à®šà¯Šà®²à¯, தயை செயà¯à®¤à¯ மீணà¯à®Ÿà¯à®®à¯ à®®à¯à®¯à®±à¯à®šà®¿ செயà¯à®•. -password_ok=சரி -password_cancel=இரதà¯à®¤à¯ - -printing_not_supported=எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: இநà¯à®¤ உலாவி அசà¯à®šà®¿à®Ÿà¯à®¤à®²à¯ˆ à®®à¯à®´à¯à®®à¯ˆà®¯à®¾à®• ஆதரிகà¯à®•à®µà®¿à®²à¯à®²à¯ˆ. -printing_not_ready=எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: PDF அசà¯à®šà®¿à®Ÿ à®®à¯à®´à¯à®µà®¤à¯à®®à®¾à®• à®à®±à¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. -web_fonts_disabled=வலை எழà¯à®¤à¯à®¤à¯à®°à¯à®•à¯à®•à®³à¯ à®®à¯à®Ÿà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©: உடà¯à®ªà¯Šà®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ PDF எழà¯à®¤à¯à®¤à¯à®°à¯à®•à¯à®•à®³à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ. -document_colors_disabled=PDF ஆவணஙà¯à®•à®³à¯à®•à¯à®•à¯ அவறà¯à®±à®¿à®©à¯ சொநà¯à®¤ நிறஙà¯à®•à®³à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ அனà¯à®®à®¤à®¿à®¯à®¿à®²à¯à®²à¯ˆ: உலாவியில௠'பகà¯à®•à®™à¯à®•à®³à¯ தஙà¯à®•à®³à¯ சொநà¯à®¤ நிறஙà¯à®•à®³à¯ˆà®¤à¯ தேரà¯à®µà¯ செயà¯à®¤à¯à®•à¯Šà®³à¯à®³ அனà¯à®®à®¤à®¿' எனà¯à®©à¯à®®à¯ விரà¯à®ªà¯à®ªà®®à¯ à®®à¯à®Ÿà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯. diff --git a/public/pdfjs/web/locale/te/viewer.properties b/public/pdfjs/web/locale/te/viewer.properties deleted file mode 100644 index df0edbe8..00000000 --- a/public/pdfjs/web/locale/te/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=à°•à±à°°à°¿à°¤à°‚ పేజీ -previous_label=à°•à±à°°à°¿à°¤à°‚ -next.title=తరà±à°µà°¾à°¤ పేజీ -next_label=తరà±à°µà°¾à°¤ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=పేజీ: -page_of=మొతà±à°¤à°‚ {{pageCount}} లో - -zoom_out.title=జూమౠతగà±à°—à°¿à°‚à°šà± -zoom_out_label=జూమౠతగà±à°—à°¿à°‚à°šà± -zoom_in.title=జూమౠచేయి -zoom_in_label=జూమౠచేయి -zoom.title=జూమౠ-presentation_mode.title=à°ªà±à°°à°¦à°°à±à°¶à°¨à°¾ రీతికి మారౠ-presentation_mode_label=à°ªà±à°°à°¦à°°à±à°¶à°¨à°¾ రీతి -open_file.title=ఫైలౠతెరà±à°µà± -open_file_label=తెరà±à°µà± -print.title=à°®à±à°¦à±à°°à°¿à°‚à°šà± -print_label=à°®à±à°¦à±à°°à°¿à°‚à°šà± -download.title=డౌనà±à°²à±‹à°¡à± -download_label=డౌనà±à°²à±‹à°¡à± -bookmark.title=à°ªà±à°°à°¸à±à°¤à±à°¤ దరà±à°¶à°¨à°‚ (నకలà±à°¤à±€à°¯à°¿ లేదా కొతà±à°¤ విండోనందౠతెరà±à°µà±à°®à±) -bookmark_label=à°ªà±à°°à°¸à±à°¤à±à°¤ దరà±à°¶à°¨à°‚ - -# Secondary toolbar and context menu -tools.title=పనిమà±à°Ÿà±à°²à± -tools_label=పనిమà±à°Ÿà±à°²à± -first_page.title=మొదటి పేజీకి వెళà±à°³à± -first_page.label=మొదటి పేజీకి వెళà±à°³à± -first_page_label=మొదటి పేజీకి వెళà±à°³à± -last_page.title=చివరి పేజీకి వెళà±à°³à± -last_page.label=చివరి పేజీకి వెళà±à°³à± -last_page_label=చివరి పేజీకి వెళà±à°³à± -page_rotate_cw.title=సవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà±à°®à± -page_rotate_cw.label=సవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà±à°®à± -page_rotate_cw_label=సవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà±à°®à± -page_rotate_ccw.title=అపసవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà±à°®à± -page_rotate_ccw.label=అపసవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà±à°®à± -page_rotate_ccw_label=అపసవà±à°¯à°¦à°¿à°¶à°²à±‹ తిపà±à°ªà±à°®à± - -hand_tool_enable.title=చేతి సాధనం చేతనించౠ-hand_tool_enable_label=చేతి సాధనం చేతనించౠ-hand_tool_disable.title=చేతి సాధనం అచేతనించౠ-hand_tool_disable_label=చేతి సాధనం అచేతనించౠ- -# Document properties dialog box -document_properties.title=పతà±à°°à°®à± లకà±à°·à°£à°¾à°²à±... -document_properties_label=పతà±à°°à°®à± లకà±à°·à°£à°¾à°²à±... -document_properties_file_name=దసà±à°¤à±à°°à°‚ పేరà±: -document_properties_file_size=దసà±à°¤à±à°°à°‚ పరిమాణం: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=శీరà±à°·à°¿à°•: -document_properties_author=మూలకరà±à°¤: -document_properties_subject=విషయం: -document_properties_keywords=కీపదాలà±: -document_properties_creation_date=సృషà±à°Ÿà°¿à°‚à°šà°¿à°¨ తేదీ: -document_properties_modification_date=సవరించిన తేదీ: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=సృషà±à°Ÿà°¿à°•à°°à±à°¤: -document_properties_producer=PDF ఉతà±à°ªà°¾à°¦à°•à°¿: -document_properties_version=PDF వరà±à°·à°¨à±: -document_properties_page_count=పేజీల సంఖà±à°¯: -document_properties_close=మూసివేయి - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=పకà±à°•à°ªà°Ÿà±à°Ÿà±€ మారà±à°šà± -toggle_sidebar_label=పకà±à°•à°ªà°Ÿà±à°Ÿà±€ మారà±à°šà± -outline.title=పతà±à°°à°®à± à°…à°µà±à°Ÿà±â€Œà°²à±ˆà°¨à± చూపౠ-outline_label=పతà±à°°à°®à± à°…à°µà±à°Ÿà±â€Œà°²à±ˆà°¨à± -attachments.title=à°…à°¨à±à°¬à°‚ధాలౠచూపౠ-attachments_label=à°…à°¨à±à°¬à°‚ధాలౠ-thumbs.title=థంబà±â€Œà°¨à±ˆà°²à±à°¸à± చూపౠ-thumbs_label=థంబà±â€Œà°¨à±ˆà°²à±à°¸à± -findbar.title=à°ˆ పతà±à°°à°®à±à°¨à°‚దౠకనà±à°—ొనà±à°®à± -findbar_label=à°•à°¨à±à°—ొనౠ- -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=పేజీ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=పేజీ {{page}} యొకà±à°• థంబà±â€Œà°¨à±ˆà°²à± - -# Find panel button title and messages -find_label=à°•à°¨à±à°—ొనà±: -find_previous.title=పదంయొకà±à°• à°®à±à°‚దలి సంà°à°µà°¾à°¨à±à°¨à°¿ à°•à°¨à±à°—ొనౠ-find_previous_label=à°®à±à°¨à±à°ªà°Ÿà°¿ -find_next.title=పదం యొకà±à°• తరà±à°µà°¾à°¤à°¿ సంà°à°µà°¾à°¨à±à°¨à°¿ à°•à°¨à±à°—ొనౠ-find_next_label=తరà±à°µà°¾à°¤ -find_highlight=à°…à°¨à±à°¨à°¿à°Ÿà°¿à°¨à°¿ ఉదà±à°¦à±€à°ªà°¨à°‚ చేయà±à°®à± -find_match_case_label=à°…à°•à±à°·à°°à°®à±à°²à°¤à±‡à°¡à°¾à°¤à±‹ పోలà±à°šà±à°®à± -find_reached_top=పేజీ పైకి చేరà±à°•à±à°¨à±à°¨à°¦à°¿, à°•à±à°°à°¿à°‚ది à°¨à±à°‚à°¡à°¿ కొనసాగించండి -find_reached_bottom=పేజీ చివరకౠచేరà±à°•à±à°¨à±à°¨à°¦à°¿, పైనà±à°‚à°¡à°¿ కొనసాగించండి -find_not_found=పదం కనబడలేదౠ- -# Error panel labels -error_more_info=మరింత సమాచారం -error_less_info=తకà±à°•à±à°µ సమాచారం -error_close=మూసివేయి -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=సందేశం: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=à°¸à±à°Ÿà°¾à°•à±: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=ఫైలà±: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=వరà±à°¸: {{line}} -rendering_error=పేజీనౠరెండరౠచేయà±à°Ÿà°²à±‹ వొక దోషం యెదà±à°°à±ˆà°‚ది. - -# Predefined zoom values -page_scale_width=పేజీ వెడలà±à°ªà± -page_scale_fit=పేజీ అమరà±à°ªà± -page_scale_auto=à°¸à±à°µà°¯à°‚చాలక జూమౠ-page_scale_actual=యథారà±à°§ పరిమాణం -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=దోషం -loading_error=PDF లోడవà±à°šà±à°¨à±à°¨à°ªà±à°ªà±à°¡à± వొక దోషం యెదà±à°°à±ˆà°‚ది. -invalid_file_error=చెలà±à°²à°¨à°¿ లేదా పాడైన PDF ఫైలà±. -missing_file_error=దొరకని PDF ఫైలà±. -unexpected_response_error=à°…à°¨à±à°•à±‹à°¨à°¿ సేవిక à°¸à±à°ªà°‚దన. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} టీకా] -password_label=à°ˆ PDF ఫైలౠతెరà±à°šà±à°Ÿà°•à± సంకేతపదం à°ªà±à°°à°µà±‡à°¶à°ªà±†à°Ÿà±à°Ÿà±à°®à± -password_invalid=సంకేతపదం చెలà±à°²à°¦à±. దయచేసి మళà±à°³à±€ à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿. -password_ok=సరే -password_cancel=à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿ - -printing_not_supported=హెచà±à°šà°°à°¿à°•: à°ˆ విహారిణి చేత à°®à±à°¦à±à°°à°£ పూరà±à°¤à°¿à°—à°¾ తోడà±à°ªà°¾à°Ÿà±à°¨à±€à°¯à°¬à°¡à±à°Ÿ లేదౠ-printing_not_ready=హెచà±à°šà°°à°¿à°•: à°®à±à°¦à±à°°à°£ కొరకౠఈ PDF పూరà±à°¤à°¿à°—à°¾ లోడవలేదà±. -web_fonts_disabled=వెబౠఫాంటà±à°²à± అచేతనపరచ బడెనà±: ఎంబెడెడౠPDF ఫాంటà±à°²à± à°µà±à°ªà°¯à±‹à°—ించలేక పోయింది. -document_colors_disabled=PDF పతà±à°°à°¾à°²à± వాటి à°¸à±à°µà°‚à°¤ à°°à°‚à°—à±à°²à°¨à± à°µà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°•à±Šà°¨à±à°Ÿà°•à± à°…à°¨à±à°®à°¤à°¿à°‚చబడవà±: విహరణి నందౠ'పేజీలనౠవాటి à°¸à±à°µà°‚à°¤ à°°à°‚à°—à±à°²à°¨à± యెంచà±à°•à±Šà°¨à±à°Ÿà°•à± à°…à°¨à±à°®à°¤à°¿à°‚à°šà±' à°…à°¨à±à°¨à°¦à°¿ అచేతనం చేయబడివà±à°‚ది. diff --git a/public/pdfjs/web/locale/th/viewer.properties b/public/pdfjs/web/locale/th/viewer.properties deleted file mode 100644 index 24cdff31..00000000 --- a/public/pdfjs/web/locale/th/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=หน้าà¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸² -previous_label=à¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸² -next.title=หน้าถัดไป -next_label=ถัดไป - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=หน้า: -page_of=จาภ{{pageCount}} - -zoom_out.title=ย่ภ-zoom_out_label=ย่ภOut -zoom_in.title=ขยาย -zoom_in_label=ขยาย -zoom.title=ย่à¸-ขยาย -presentation_mode.title=สลับเข้าสู่รูปà¹à¸šà¸šà¸à¸²à¸£à¸™à¸³à¹€à¸ªà¸™à¸ -presentation_mode_label=รูปà¹à¸šà¸šà¸à¸²à¸£à¸™à¸³à¹€à¸ªà¸™à¸ -open_file.title=เปิดà¹à¸Ÿà¹‰à¸¡ -open_file_label=เปิด -print.title=พิมพ์ -print_label=พิมพ์ -download.title=ดาวน์โหลด -download_label=ดาวน์โหลด -bookmark.title=มุมมà¸à¸‡à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™ (คัดลà¸à¸à¸«à¸£à¸·à¸à¹€à¸›à¸´à¸”ในหน้าต่างใหม่) -bookmark_label=มุมมà¸à¸‡à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™ - -# Secondary toolbar and context menu -tools.title=เครื่à¸à¸‡à¸¡à¸·à¸ -tools_label=เครื่à¸à¸‡à¸¡à¸·à¸ -first_page.title=ไปยังหน้าà¹à¸£à¸ -first_page.label=ไปยังหน้าà¹à¸£à¸ -first_page_label=ไปยังหน้าà¹à¸£à¸ -last_page.title=ไปยังหน้าสุดท้าย -last_page.label=ไปยังหน้าสุดท้าย -last_page_label=ไปยังหน้าสุดท้าย -page_rotate_cw.title=หมุนตามเข็มนาฬิà¸à¸² -page_rotate_cw.label=หมุนตามเข็มนาฬิà¸à¸² -page_rotate_cw_label=หมุนตามเข็มนาฬิà¸à¸² -page_rotate_ccw.title=หมุนทวนเข็มนาฬิà¸à¸² -page_rotate_ccw.label=หมุนทวนเข็มนาฬิà¸à¸² -page_rotate_ccw_label=หมุนทวนเข็มนาฬิà¸à¸² - -hand_tool_enable.title=เปิดใช้งานเครื่à¸à¸‡à¸¡à¸·à¸à¸£à¸¹à¸›à¸¡à¸·à¸ -hand_tool_enable_label=เปิดใช้งานเครื่à¸à¸‡à¸¡à¸·à¸à¸£à¸¹à¸›à¸¡à¸·à¸ -hand_tool_disable.title=ปิดใช้งานเครื่à¸à¸‡à¸¡à¸·à¸à¸£à¸¹à¸›à¸¡à¸·à¸ -hand_tool_disable_label=ปิดใช้งานเครื่à¸à¸‡à¸¡à¸·à¸à¸£à¸¹à¸›à¸¡à¸·à¸ - -# Document properties dialog box -document_properties.title=คุณสมบัติเà¸à¸à¸ªà¸²à¸£â€¦ -document_properties_label=คุณสมบัติเà¸à¸à¸ªà¸²à¸£â€¦ -document_properties_file_name=ชื่à¸à¹à¸Ÿà¹‰à¸¡ : -document_properties_file_size=ขนาดà¹à¸Ÿà¹‰à¸¡ : -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} à¸à¸´à¹‚ลไบต์ ({{size_b}} ไบต์) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} เมà¸à¸°à¹„บต์ ({{size_b}} ไบต์) -document_properties_title=หัวเรื่à¸à¸‡ : -document_properties_author=ผู้à¹à¸•à¹ˆà¸‡ : -document_properties_subject=หัวข้ภ: -document_properties_keywords=คำสำคัภ: -document_properties_creation_date=วันที่สร้าง : -document_properties_modification_date=วันที่à¹à¸à¹‰à¹„ข : -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=สร้างโดย : -document_properties_producer=ผู้ผลิต PDF : -document_properties_version=รุ่น PDF : -document_properties_page_count=จำนวนหน้า : -document_properties_close=ปิด - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=สลับà¹à¸–บข้าง -toggle_sidebar_label=สลับà¹à¸–บข้าง -outline.title=à¹à¸ªà¸”งโครงเà¸à¸à¸ªà¸²à¸£ -outline_label=โครงเà¸à¸à¸ªà¸²à¸£ -attachments.title=à¹à¸ªà¸”งสิ่งที่à¹à¸™à¸šà¸¡à¸² -attachments_label=สิ่งที่à¹à¸™à¸šà¸¡à¸² -thumbs.title=à¹à¸ªà¸”งภาพขนาดย่ภ-thumbs_label=ภาพขนาดย่ภ-findbar.title=ค้นหาในเà¸à¸à¸ªà¸²à¸£ -findbar_label=ค้นหา - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=หน้า {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=ภาพขนาดย่à¸à¸‚à¸à¸‡à¸«à¸™à¹‰à¸² {{page}} - -# Find panel button title and messages -find_label=ค้นหา: -find_previous.title=หาตำà¹à¸«à¸™à¹ˆà¸‡à¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²à¸‚à¸à¸‡à¸„ำค้น -find_previous_label=à¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸² -find_next.title=หาตำà¹à¸«à¸™à¹ˆà¸‡à¸–ัดไปขà¸à¸‡à¸„ำค้น -find_next_label=ถัดไป -find_highlight=เน้นสีทั้งหมด -find_match_case_label=ตัวพิมพ์ตรงà¸à¸±à¸™ -find_reached_top=ค้นหาถึงจุดเริ่มต้นขà¸à¸‡à¸«à¸™à¹‰à¸² เริ่มค้นต่à¸à¸ˆà¸²à¸à¸”้านล่าง -find_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่à¸à¸ˆà¸²à¸à¸”้านบน -find_not_found=ไม่พบวลีที่ต้à¸à¸‡à¸à¸²à¸£ - -# Error panel labels -error_more_info=ข้à¸à¸¡à¸¹à¸¥à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•à¸´à¸¡ -error_less_info=ข้à¸à¸¡à¸¹à¸¥à¸™à¹‰à¸à¸¢ -error_close=ปิด -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ข้à¸à¸„วาม: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=สà¹à¸•à¹‡à¸: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=à¹à¸Ÿà¹‰à¸¡: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=บรรทัด: {{line}} -rendering_error=เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดขณะà¸à¸³à¸¥à¸±à¸‡à¸„ำนวณà¸à¸²à¸£à¹à¸ªà¸”งผลขà¸à¸‡à¸«à¸™à¹‰à¸² - -# Predefined zoom values -page_scale_width=ความà¸à¸§à¹‰à¸²à¸‡à¸«à¸™à¹‰à¸² -page_scale_fit=พà¸à¸”ีหน้า -page_scale_auto=ย่à¸-ขยายà¸à¸±à¸•à¹‚นมัติ -page_scale_actual=ขนาดเท่าจริง -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=ข้à¸à¸œà¸´à¸”พลาด -loading_error=เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดขณะà¸à¸³à¸¥à¸±à¸‡à¹‚หลด PDF -invalid_file_error=à¹à¸Ÿà¹‰à¸¡ PDF ไม่ถูà¸à¸•à¹‰à¸à¸‡à¸«à¸£à¸·à¸à¹„ม่สมบูรณ์ -missing_file_error=à¹à¸Ÿà¹‰à¸¡ PDF หาย -unexpected_response_error=à¸à¸²à¸£à¸•à¸à¸šà¸ªà¸™à¸à¸‡à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸à¸£à¹Œà¸—ี่ไม่คาดหวัง - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[คำà¸à¸˜à¸´à¸šà¸²à¸¢à¸›à¸£à¸°à¸à¸à¸š {{type}}] -password_label=ใส่รหัสผ่านเพื่à¸à¹€à¸›à¸´à¸”ไฟล์ PDF นี้ -password_invalid=รหัสผ่านไม่ถูà¸à¸•à¹‰à¸à¸‡ โปรดลà¸à¸‡à¸à¸µà¸à¸„รั้ง -password_ok=ตà¸à¸¥à¸‡ -password_cancel=ยà¸à¹€à¸¥à¸´à¸ - -printing_not_supported=คำเตืà¸à¸™: เบราว์เซà¸à¸£à¹Œà¸™à¸µà¹‰à¹„ม่ได้สนับสนุนà¸à¸²à¸£à¸žà¸´à¸¡à¸žà¹Œà¸à¸¢à¹ˆà¸²à¸‡à¹€à¸•à¹‡à¸¡à¸—ี่ -printing_not_ready=คำเตืà¸à¸™: PDF ไม่ได้รับà¸à¸²à¸£à¹‚หลดà¸à¸¢à¹ˆà¸²à¸‡à¹€à¸•à¹‡à¸¡à¸—ี่สำหรับà¸à¸²à¸£à¸žà¸´à¸¡à¸žà¹Œ -web_fonts_disabled=à¹à¸šà¸šà¸à¸±à¸à¸©à¸£à¹€à¸§à¹‡à¸šà¸–ูà¸à¸›à¸´à¸”à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™: ไม่สามารถใช้à¹à¸šà¸šà¸à¸±à¸à¸©à¸£à¸à¸±à¸‡à¸•à¸±à¸§à¹ƒà¸™ PDF -document_colors_disabled=เà¸à¸à¸ªà¸²à¸£ PDF ไม่ได้รับà¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¸ªà¸µà¸‚à¸à¸‡à¸•à¸±à¸§à¹€à¸à¸‡: 'à¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸«à¸™à¹‰à¸²à¹€à¸à¸à¸ªà¸²à¸£à¸ªà¸²à¸¡à¸²à¸£à¸–เลืà¸à¸à¸ªà¸µà¸‚à¸à¸‡à¸•à¸±à¸§à¹€à¸à¸‡' ถูà¸à¸›à¸´à¸”ใช้งานในเบราว์เซà¸à¸£à¹Œ diff --git a/public/pdfjs/web/locale/tl/viewer.properties b/public/pdfjs/web/locale/tl/viewer.properties deleted file mode 100644 index e83cc87a..00000000 --- a/public/pdfjs/web/locale/tl/viewer.properties +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Naunang Pahina -next.title=Sunod na Pahina - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Pahina: -page_of=ng {{pageCount}} - -open_file.title=Magbukas ng file -open_file_label=Buksan -bookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window) -bookmark_label=Kasalukuyang tingin - -# Secondary toolbar and context menu -tools.title=Mga Tool -tools_label=Mga Tool - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Pamagat: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -outline.title=Ipakita ang banghay ng dokumento -outline_label=Banghay ng dokumento -thumbs.title=Ipakita ang mga Thumbnails -findbar_label=Hanapin - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Pahina {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Thumbnail ng Pahina {{page}} - -# Find panel button title and messages -find_highlight=I-highlight lahat - -# Error panel labels -error_more_info=Maraming Inpormasyon -error_less_info=Maikling Inpormasyon -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Mensahe: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linya: {{line}} -rendering_error=May naganap na pagkakamali habang pagsasalin sa pahina. - -# Predefined zoom values -page_scale_width=Haba ng Pahina -page_scale_fit=ang pahina ay angkop -page_scale_auto=awtomatikong pag-imbulog -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error=May maling nangyari habang kinakarga ang PDF. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=OK - diff --git a/public/pdfjs/web/locale/tn/viewer.properties b/public/pdfjs/web/locale/tn/viewer.properties deleted file mode 100644 index 3c9b5031..00000000 --- a/public/pdfjs/web/locale/tn/viewer.properties +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Tsebe: - -zoom.title=Zuma/gogela -open_file.title=Bula Faele -open_file_label=Bula - -# Secondary toolbar and context menu - -hand_tool_disable.title=Thibela go dira ga sediriswa sa seatla -hand_tool_disable_label=Thibela go dira ga sediriswa sa seatla - -# Document properties dialog box -document_properties_file_name=Leina la faele: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Leina: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -findbar_label=Batla - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. - -# Find panel button title and messages -find_previous.title=Batla tiragalo e e fetileng ya setlhopha sa mafoko -find_next.title=Batla tiragalo e e latelang ya setlhopha sa mafoko -find_not_found=Setlhopha sa mafoko ga se a bonwa - -# Error panel labels -error_more_info=Tshedimosetso e Nngwe -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number - -# Predefined zoom values -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Phoso - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_ok=Siame -password_cancel=Khansela - -web_fonts_disabled=Mefutatlhaka ya Webo ga e dire: ga e kgone go dirisa mofutatlhaka wa PDF o tsentsweng. diff --git a/public/pdfjs/web/locale/tr/viewer.properties b/public/pdfjs/web/locale/tr/viewer.properties deleted file mode 100644 index 256123ef..00000000 --- a/public/pdfjs/web/locale/tr/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Önceki sayfa -previous_label=Önceki -next.title=Sonraki sayfa -next_label=Sonraki - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Sayfa: -page_of=/ {{pageCount}} - -zoom_out.title=UzaklaÈ™ -zoom_out_label=UzaklaÈ™ -zoom_in.title=YaklaÅŸ -zoom_in_label=YaklaÅŸ -zoom.title=YakınlaÅŸtırma -presentation_mode.title=Sunum moduna geç -presentation_mode_label=Sunum Modu -open_file.title=Dosya aç -open_file_label=Aç -print.title=Yazdır -print_label=Yazdır -download.title=Ä°ndir -download_label=Ä°ndir -bookmark.title=Geçerli görünüm (kopyala veya yeni pencerede aç) -bookmark_label=Geçerli görünüm - -# Secondary toolbar and context menu -tools.title=Araçlar -tools_label=Araçlar -first_page.title=Ä°lk sayfaya git -first_page.label=Ä°lk sayfaya git -first_page_label=Ä°lk sayfaya git -last_page.title=Son sayfaya git -last_page.label=Son sayfaya git -last_page_label=Son sayfaya git -page_rotate_cw.title=Saat yönünde döndür -page_rotate_cw.label=Saat yönünde döndür -page_rotate_cw_label=Saat yönünde döndür -page_rotate_ccw.title=Saat yönünün tersine döndür -page_rotate_ccw.label=Saat yönünün tersine döndür -page_rotate_ccw_label=Saat yönünün tersine döndür - -hand_tool_enable.title=El aracını etkinleÅŸtir -hand_tool_enable_label=El aracını etkinleÅŸtir -hand_tool_disable.title=El aracını kapat -hand_tool_disable_label=El aracını kapat - -# Document properties dialog box -document_properties.title=Belge özellikleri… -document_properties_label=Belge özellikleri… -document_properties_file_name=Dosya adı: -document_properties_file_size=Dosya boyutu: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bayt) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bayt) -document_properties_title=BaÅŸlık: -document_properties_author=Yazar: -document_properties_subject=Konu: -document_properties_keywords=Anahtar kelimeler: -document_properties_creation_date=Oluturma tarihi: -document_properties_modification_date=DeÄŸiÅŸtirme tarihi: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}} {{time}} -document_properties_creator=OluÅŸturan: -document_properties_producer=PDF üreticisi: -document_properties_version=PDF sürümü: -document_properties_page_count=Sayfa sayısı: -document_properties_close=Kapat - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Kenar çubuÄŸunu aç/kapat -toggle_sidebar_label=Kenar çubuÄŸunu aç/kapat -outline.title=Belge ÅŸemasını göster -outline_label=Belge ÅŸeması -attachments.title=Ekleri göster -attachments_label=Ekler -thumbs.title=Küçük resimleri göster -thumbs_label=Küçük resimler -findbar.title=Belgede bul -findbar_label=Bul - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Sayfa {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas={{page}}. sayfanın küçük hâli - -# Find panel button title and messages -find_label=Bul: -find_previous.title=Önceki eÅŸleÅŸmeyi bul -find_previous_label=Önceki -find_next.title=Sonraki eÅŸleÅŸmeyi bul -find_next_label=Sonraki -find_highlight=Tümünü vurgula -find_match_case_label=Büyük-küçük harf eÅŸleÅŸtir -find_reached_top=Belgenin başına ulaşıldı, sonundan devam edildi -find_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi -find_not_found=EÅŸleÅŸme bulunamadı - -# Error panel labels -error_more_info=Daha fazla bilgi al -error_less_info=Daha az bilgi -error_close=Kapat -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js sürüm {{version}} (yapı: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Ä°leti: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Yığın: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Dosya: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Satır: {{line}} -rendering_error=Sayfa yorumlanırken bir hata oluÅŸtu. - -# Predefined zoom values -page_scale_width=Sayfa geniÅŸliÄŸi -page_scale_fit=Sayfayı sığdır -page_scale_auto=Otomatik yakınlaÅŸtır -page_scale_actual=Gerçek boyut -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent=%{{scale}} - -# Loading indicator messages -loading_error_indicator=Hata -loading_error=PDF yüklenirken bir hata oluÅŸtu. -invalid_file_error=Geçersiz veya bozulmuÅŸ PDF dosyası. -missing_file_error=PDF dosyası eksik. -unexpected_response_error=Beklenmeyen sunucu yanıtı. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} iÅŸareti] -password_label=Bu PDF dosyasını açmak için parolasını girin. -password_invalid=Geçersiz parola. Lütfen tekrar deneyin. -password_ok=Tamam -password_cancel=Ä°ptal - -printing_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir. -printing_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır deÄŸil. -web_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor. -document_colors_disabled=PDF belgelerinin kendi renklerini kullanması için izin verilmiyor: 'Sayfalara kendi renklerini seçmesi için izin ver' tarayıcıda etkinleÅŸtirilmemiÅŸ. diff --git a/public/pdfjs/web/locale/uk/viewer.properties b/public/pdfjs/web/locale/uk/viewer.properties deleted file mode 100644 index 4f53bb33..00000000 --- a/public/pdfjs/web/locale/uk/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñторінка -previous_label=ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ -next.title=ÐаÑтупна Ñторінка -next_label=ÐаÑтупна - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Сторінка: -page_of=з {{pageCount}} - -zoom_out.title=Зменшити -zoom_out_label=Зменшити -zoom_in.title=Збільшити -zoom_in_label=Збільшити -zoom.title=МаÑштаб -presentation_mode.title=Перейти в режим презентації -presentation_mode_label=Режим презентації -open_file.title=Відкрити файл -open_file_label=Відкрити -print.title=Друк -print_label=Друк -download.title=Завантажити -download_label=Завантажити -bookmark.title=Поточний виглÑд (копіювати чи відкрити у новому вікні) -bookmark_label=Поточний виглÑд - -# Secondary toolbar and context menu -tools.title=ІнÑтрументи -tools_label=ІнÑтрументи -first_page.title=Ðа першу Ñторінку -first_page.label=Ðа першу Ñторінку -first_page_label=Ðа першу Ñторінку -last_page.title=Ðа оÑтанню Ñторінку -last_page.label=Ðа оÑтанню Ñторінку -last_page_label=Ðа оÑтанню Ñторінку -page_rotate_cw.title=Повернути за годинниковою Ñтрілкою -page_rotate_cw.label=Повернути за годинниковою Ñтрілкою -page_rotate_cw_label=Повернути за годинниковою Ñтрілкою -page_rotate_ccw.title=Повернути проти годинникової Ñтрілки -page_rotate_ccw.label=Повернути проти годинникової Ñтрілки -page_rotate_ccw_label=Повернути проти годинникової Ñтрілки - -hand_tool_enable.title=Увімкнути інÑтрумент «Рука» -hand_tool_enable_label=Увімкнути інÑтрумент «Рука» -hand_tool_disable.title=Вимкнути інÑтрумент «Рука» -hand_tool_disable_label=Вимкнути інÑтрумент «Рука» - -# Document properties dialog box -document_properties.title=ВлаÑтивоÑÑ‚Ñ– документа… -document_properties_label=ВлаÑтивоÑÑ‚Ñ– документа… -document_properties_file_name=Ðазва файла: -document_properties_file_size=Розмір файла: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} КБ ({{size_b}} bytes) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} МБ ({{size_b}} bytes) -document_properties_title=Заголовок: -document_properties_author=Ðвтор: -document_properties_subject=Тема: -document_properties_keywords=Ключові Ñлова: -document_properties_creation_date=Дата ÑтвореннÑ: -document_properties_modification_date=Дата зміни: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Створено: -document_properties_producer=Виробник PDF: -document_properties_version=ВерÑÑ–Ñ PDF: -document_properties_page_count=КількіÑÑ‚ÑŒ Ñторінок: -document_properties_close=Закрити - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Бічна панель -toggle_sidebar_label=Перемкнути бічну панель -outline.title=Показувати Ñхему документа -outline_label=Схема документа -attachments.title=Показати Ð¿Ñ€Ð¸ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ -attachments_label=ÐŸÑ€Ð¸ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ -thumbs.title=Показувати еÑкізи -thumbs_label=ЕÑкізи -findbar.title=Шукати в документі -findbar_label=Пошук - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Сторінка {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=ЕÑкіз Ñторінки {{page}} - -# Find panel button title and messages -find_label=Знайти: -find_previous.title=Знайти попереднє Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ„Ñ€Ð°Ð·Ð¸ -find_previous_label=Попереднє -find_next.title=Знайти наÑтупне Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ„Ñ€Ð°Ð·Ð¸ -find_next_label=ÐаÑтупне -find_highlight=ПідÑвітити вÑе -find_match_case_label=З урахуваннÑм регіÑтру -find_reached_top=ДоÑÑгнуто початку документу, продовжено з ÐºÑ–Ð½Ñ†Ñ -find_reached_bottom=ДоÑÑгнуто ÐºÑ–Ð½Ñ†Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñƒ, продовжено з початку -find_not_found=Фразу не знайдено - -# Error panel labels -error_more_info=Більше інформації -error_less_info=Менше інформації -error_close=Закрити -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ПовідомленнÑ: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Стек: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Файл: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Ð Ñдок: {{line}} -rendering_error=Під Ñ‡Ð°Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñторінки ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. - -# Predefined zoom values -page_scale_width=За шириною -page_scale_fit=УміÑтити -page_scale_auto=Ðвто-маÑштаб -page_scale_actual=ДійÑний розмір -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Помилка -loading_error=Під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ PDF ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. -invalid_file_error=ÐедійÑний або пошкоджений PDF-файл. -missing_file_error=ВідÑутній PDF-файл. -unexpected_response_error=Ðеочікувана відповідь Ñервера. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-аннотаціÑ] -password_label=Введіть пароль Ð´Ð»Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ†ÑŒÐ¾Ð³Ð¾ PDF-файла. -password_invalid=Ðевірний пароль. Спробуйте ще. -password_ok=Гаразд -password_cancel=СкаÑувати - -printing_not_supported=ПопередженнÑ: Цей браузер не повніÑÑ‚ÑŽ підтримує друк. -printing_not_ready=ПопередженнÑ: PDF не повніÑÑ‚ÑŽ завантажений Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ. -web_fonts_disabled=Веб-шрифти вимкнено: неможливо викориÑтати вбудовані у PDF шрифти. -document_colors_disabled=PDF-документам не дозволено викориÑтовувати Ñвої влаÑні кольори: в браузері вимкнено «Дозволити Ñторінкам викориÑтовувати Ñвої влаÑні кольори». diff --git a/public/pdfjs/web/locale/ur/viewer.properties b/public/pdfjs/web/locale/ur/viewer.properties deleted file mode 100644 index c52220f1..00000000 --- a/public/pdfjs/web/locale/ur/viewer.properties +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=پچھلا صÙØÛ -previous_label=پچھلا -next.title=اگلا صÙØÛ -next_label=Ø¢Ú¯Û’ - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=صÙØÛ: -page_of={{pageCount}} کا - -zoom_out.title=باÛر زوم کریں -zoom_out_label=باÛر زوم کریں -zoom_in.title=اندر زوم کریں -zoom_in_label=اندر زوم کریں -zoom.title=زوم -presentation_mode.title=پیشکش موڈ میں Ú†Ù„Û’ جائیں -presentation_mode_label=پیشکش موڈ -open_file.title=مسل کھولیں -open_file_label=کھولیں -print.title=چھاپیں -print_label=چھاپیں -download.title=ڈاؤن لوڈ -download_label=ڈاؤن لوڈ -bookmark.title=ØØ§Ù„ÛŒÛ Ù†Ø¸Ø§Ø±Û (Ù†Û“ Ø¯Ø±ÛŒÚ†Û Ù…ÛŒÚº نقل کریں یا کھولیں) -bookmark_label=ØØ§Ù„ÛŒÛ Ù†Ø¸Ø§Ø±Û - -# Secondary toolbar and context menu -tools.title=آلات -tools_label=آلات -first_page.title=Ù¾ÛÙ„Û’ صÙØÛ Ù¾Ø± جائیں -first_page.label=Ù¾ÛÙ„Û’ صÙØÛ Ù¾Ø± جائیں -first_page_label=Ù¾ÛÙ„Û’ صÙØÛ Ù¾Ø± جائیں -last_page.title=آخری صÙØÛ Ù¾Ø± جائیں -last_page.label=آخری صÙØÛ Ù¾Ø± جائیں -last_page_label=آخری صÙØÛ Ù¾Ø± جائیں -page_rotate_cw.title=Ú¯Ú¾Ú‘ÛŒ وار گھمائیں -page_rotate_cw.label=Ú¯Ú¾Ú‘ÛŒ وار گھمائیں -page_rotate_cw_label=Ú¯Ú¾Ú‘ÛŒ وار گھمائیں -page_rotate_ccw.title=ضد Ú¯Ú¾Ú‘ÛŒ وار گھمائیں -page_rotate_ccw.label=ضد Ú¯Ú¾Ú‘ÛŒ وار گھمائیں -page_rotate_ccw_label=ضد Ú¯Ú¾Ú‘ÛŒ وار گھمائیں - -hand_tool_enable.title=Ûاتھ ٹول اÛÙ„ بنائیں -hand_tool_enable_label=Ûاتھ ٹول اÛÙ„ بنائیں -hand_tool_disable.title=Ûاتھ ٹول nنااÛÙ„ بنائیں -hand_tool_disable_label=Ûاتھ ٹول نااÛÙ„ بنائیں - -# Document properties dialog box -document_properties.title=دستاویز خواص… -document_properties_label=دستاویز خواص… -document_properties_file_name=نام مسل: -document_properties_file_size=مسل سائز: -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) -document_properties_title=عنوان: -document_properties_author=تخلیق کار: -document_properties_subject=موضوع: -document_properties_keywords=کلیدی الÙاظ: -document_properties_creation_date=تخلیق Ú©ÛŒ تاریخ: -document_properties_modification_date=ترمیم Ú©ÛŒ تاریخ: -document_properties_date_string={{date}}ØŒ {{time}} -document_properties_creator=تخلیق کار: -document_properties_producer=PDF پیدا کار: -document_properties_version=PDF ورژن: -document_properties_page_count=صÙØÛ Ø´Ù…Ø§Ø±: -document_properties_close=بند کریں - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=سلائیڈ ٹوگل کریں -toggle_sidebar_label=سلائیڈ ٹوگل کریں -outline.title=دستاویز آؤٹ لائن دکھائیں -outline_label=دستاویز آؤٹ لائن -thumbs.title=تھمبنیل دکھائیں -thumbs_label=مجمل -findbar.title=دستاویز میں ڈھونڈیں -findbar_label=ڈھونڈیں - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=صÙØÛ {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=صÙØÛ’ کا مجمل {{page}} - -# Find panel button title and messages -find_label=ڈھونڈیں: -find_previous.title=Ùقرے کا پچھلا وقوع ڈھونڈیں -find_previous_label=پچھلا -find_next.title=Ùقرے کا Ø§Ú¯Ù„Û ÙˆÙ‚ÙˆØ¹ ڈھونڈیں -find_next_label=Ø¢Ú¯Û’ -find_highlight=تمام نمایاں کریں -find_match_case_label=ØØ±ÙˆÙ Ù…Ø´Ø§Ø¨Û Ú©Ø±ÛŒÚº -find_reached_top=صÙØÛ Ú©Û’ شروع پر Ù¾ÛÙ†Ú† گیا، نیچے سے جاری کیا -find_reached_bottom=صÙØÛ Ú©Û’ اختتام پر Ù¾ÛÙ†Ú† گیا، اوپر سے جاری کیا -find_not_found=Ùقرا Ù†Ûیں ملا - -# Error panel labels -error_more_info=مزید معلومات -error_less_info=Ú©Ù… معلومات -error_close=بند کریں -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=پیغام: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=سٹیک: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=مسل: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=لائن: {{line}} -rendering_error=صÙØÛ Ø¨Ù†Ø§ØªÛ’ Ûوئے نقص Ø¢ گیا۔ - -# Predefined zoom values -page_scale_width=صÙØÛ Ú†ÙˆÚ‘Ø§Ø¦ÛŒ -page_scale_fit=صÙØÛ Ùٹنگ -page_scale_auto=خودکار زوم -page_scale_actual=اصل سائز - -# Loading indicator messages -loading_error_indicator=نقص -loading_error=PDF لوڈ کرتے وقت نقص Ø¢ گیا۔ -invalid_file_error=ناجائز یا خراب PDF مسل -missing_file_error=PDF مسل غائب ÛÛ’Û” - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} نوٹ] -password_label=PDF مسل کھولنے Ú©Û’ لیے پاس ورڈ داخل کریں. -password_invalid=ناجائز پاس ورڈ. براےؑ کرم Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کریں. -password_ok=سÛÛŒ -password_cancel=منسوخ کریں - -printing_not_supported=تنبیÛ:چھاپنا اس براؤزر پر پوری Ø·Ø±Ø Ù…Ø¹Ø§ÙˆÙ†Øª Ø´Ø¯Û Ù†Ûیں ÛÛ’Û” -printing_not_ready=تنبیÛ: PDF چھپائی Ú©Û’ لیے پوری Ø·Ø±Ø Ù„ÙˆÚˆ Ù†Ûیں Ûوئی۔ -web_fonts_disabled=ویب Ùانٹ نا اÛÙ„ Ûیں: شامل PDF Ùانٹ استعمال کرنے میں ناکام۔ -document_colors_disabled=PDF دستاویزات Ú©Ùˆ اپنے رنگ استعمال کرنے Ú©ÛŒ اجازت Ù†Ûیں: 'صÙØات Ú©Ùˆ اپنے رنگ چنیں' Ú©ÛŒ اÙجازت براؤزر میں بے عمل ÛÛ’Û” diff --git a/public/pdfjs/web/locale/vi/viewer.properties b/public/pdfjs/web/locale/vi/viewer.properties deleted file mode 100644 index 8fc2807c..00000000 --- a/public/pdfjs/web/locale/vi/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Trang TrÆ°á»›c -previous_label=TrÆ°á»›c -next.title=Trang Sau -next_label=Tiếp - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Trang: -page_of=trên {{pageCount}} - -zoom_out.title=Thu nhá» -zoom_out_label=Thu nhá» -zoom_in.title=Phóng to -zoom_in_label=Phóng to -zoom.title=Chỉnh kÃch thÆ°á»›c -presentation_mode.title=Chuyển sang chế Ä‘á»™ trình chiếu -presentation_mode_label=Chế Ä‘á»™ trình chiếu -open_file.title=Mở táºp tin -open_file_label=Mở táºp tin -print.title=In -print_label=In -download.title=Tải xuống -download_label=Tải xuống -bookmark.title=Góc nhìn hiện tại (copy hoặc mở trong cá»a sổ má»›i) -bookmark_label=Chế Ä‘á»™ xem hiện tại - -# Secondary toolbar and context menu -tools.title=Công cụ -tools_label=Công cụ -first_page.title=Vá» trang đầu -first_page.label=Vá» trang đầu -first_page_label=Vá» trang đầu -last_page.title=Äến trang cuối -last_page.label=Äến trang cuối -last_page_label=Äến trang cuối -page_rotate_cw.title=Xoay theo chiá»u kim đồng hồ -page_rotate_cw.label=Xoay theo chiá»u kim đồng hồ -page_rotate_cw_label=Xoay theo chiá»u kim đồng hồ -page_rotate_ccw.title=Xoay ngược chiá»u kim đồng hồ -page_rotate_ccw.label=Xoay ngược chiá»u kim đồng hồ -page_rotate_ccw_label=Xoay ngược chiá»u kim đồng hồ - -hand_tool_enable.title=Cho phép kéo để cuá»™n trang -hand_tool_enable_label=Cho phép kéo để cuá»™n trang -hand_tool_disable.title=Tắt kéo để cuá»™n trang -hand_tool_disable_label=Tắt kéo để cuá»™n trang - -# Document properties dialog box -document_properties.title=Thuá»™c tÃnh của tà i liệu… -document_properties_label=Thuá»™c tÃnh của tà i liệu… -document_properties_file_name=Tên táºp tin: -document_properties_file_size=KÃch thÆ°á»›c: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} byte) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} byte) -document_properties_title=Tiêu Ä‘á»: -document_properties_author=Tác giả: -document_properties_subject=Chủ Ä‘á»: -document_properties_keywords=Từ khóa: -document_properties_creation_date=Ngà y tạo: -document_properties_modification_date=Ngà y sá»a đổi: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=NgÆ°á»i tạo: -document_properties_producer=Phần má»m tạo PDF: -document_properties_version=Phiên bản PDF: -document_properties_page_count=Tổng số trang: -document_properties_close=Ãóng - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Báºt/Tắt thanh lá» -toggle_sidebar_label=Báºt/Tắt thanh lá» -outline.title=Hiển thị bản phác tà i liệu -outline_label=Bản phác tà i liệu -attachments.title=Hiện ná»™i dung Ä‘Ãnh kèm -attachments_label=Ná»™i dung Ä‘Ãnh kèm -thumbs.title=Hiển thị ảnh thu nhá» -thumbs_label=Ảnh thu nhá» -findbar.title=Tìm trong tà i liệu -findbar_label=Tìm - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Trang {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Ảnh thu nhá» của trang {{page}} - -# Find panel button title and messages -find_label=Tìm: -find_previous.title=Tìm cụm từ ở phần trÆ°á»›c -find_previous_label=TrÆ°á»›c -find_next.title=Tìm cụm từ ở phần sau -find_next_label=Tiếp -find_highlight=Tô sáng tất cả -find_match_case_label=Phân biệt hoa, thÆ°á»ng -find_reached_top=Äã đến phần đầu tà i liệu, quay trở lại từ cuối -find_reached_bottom=Äã đến phần cuối của tà i liệu, quay trở lại từ đầu -find_not_found=Không tìm thấy cụm từ nà y - -# Error panel labels -error_more_info=Thông tin thêm -error_less_info=Hiển thị Ãt thông tin hÆ¡n -error_close=Äóng -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Thông Ä‘iệp: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Táºp tin: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Dòng: {{line}} -rendering_error=Lá»—i khi hiển thị trang. - -# Predefined zoom values -page_scale_width=Vừa chiá»u rá»™ng -page_scale_fit=Vừa chiá»u cao -page_scale_auto=Tá»± Ä‘á»™ng chá»n kÃch thÆ°á»›c -page_scale_actual=KÃch thÆ°á»›c thá»±c -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Lá»—i -loading_error=Lá»—i khi tải tà i liệu PDF. -invalid_file_error=Táºp tin PDF há»ng hoặc không hợp lệ. -missing_file_error=Thiếu táºp tin PDF. -unexpected_response_error=Máy chủ có phản hồi lạ. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Chú thÃch] -password_label=Nháºp máºt khẩu để mở táºp tin PDF nà y. -password_invalid=Máºt khẩu không đúng. Vui lòng thá» lại. -password_ok=OK -password_cancel=Hủy bá» - -printing_not_supported=Cảnh báo: In ấn không được há»— trợ đầy đủ ở trình duyệt nà y. -printing_not_ready=Cảnh báo: PDF chÆ°a được tải hết để in. -web_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sá» dụng các phông chữ PDF được nhúng. -document_colors_disabled=Tà i liệu PDF không được cho phép dùng mà u riêng: 'Cho phép trang chá»n mà u riêng' đã bị tắt trên trình duyệt. diff --git a/public/pdfjs/web/locale/wo/viewer.properties b/public/pdfjs/web/locale/wo/viewer.properties deleted file mode 100644 index 1e70845b..00000000 --- a/public/pdfjs/web/locale/wo/viewer.properties +++ /dev/null @@ -1,124 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Xët wi jiitu -previous_label=Bi jiitu -next.title=Xët wi ci topp -next_label=Bi ci topp - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Xët: -page_of=ci {{pageCount}} - -zoom_out.title=Wà ññi -zoom_out_label=Wà ññi -zoom_in.title=Yaatal -zoom_in_label=Yaatal -zoom.title=YambalaÅ‹ -presentation_mode.title=Wañarñil ci anamu wone -presentation_mode_label=Anamu Wone -open_file.title=Ubbi benn dencukaay -open_file_label=Ubbi -print.title=Móol -print_label=Móol -download.title=Yeb yi -download_label=Yeb yi -bookmark.title=Wone bi taxaw (duppi walla ubbi palanteer bu bees) -bookmark_label=Wone bi feeñ - -# Secondary toolbar and context menu - - -# Document properties dialog box -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Bopp: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -outline.title=Wone takku yi -outline_label=Takku jukki yi -thumbs.title=Wone nataal yu ndaw yi -thumbs_label=Nataal yu ndaw yi -findbar.title=Gis ci biir jukki bi -findbar_label=Wut - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Xët {{xët}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Wiñet bu xët{{xët}} - -# Find panel button title and messages -find_label=Wut: -find_previous.title=Seet beneen kaddu bu ni mel te jiitu -find_previous_label=Bi jiitu -find_next.title=Seet beneen kaddu bu ni mel -find_next_label=Bi ci topp -find_highlight=Melaxal lépp -find_match_case_label=Sà mm jëmmalin wi -find_reached_top=Jot nañu ndorteel xët wi, kontine dale ko ci suuf -find_reached_bottom=Jot nañu jeexitalu xët wi, kontine ci ndorte -find_not_found=Gisiñu kaddu gi - -# Error panel labels -error_more_info=Xibaar yu gën bari -error_less_info=Xibaar yu gën bari -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Bataaxal: {{bataaxal}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Juug: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Dencukaay: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Rëdd : {{line}} -rendering_error=Am njumte bu am bi xët bi di wonewu. - -# Predefined zoom values -page_scale_width=Yaatuwaay bu mët -page_scale_fit=Xët lëmm -page_scale_auto=YambalaÅ‹ ci saa si -page_scale_actual=Dayo bi am -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Njumte -loading_error=Am na njumte ci yebum dencukaay PDF bi. -invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Karmat {{type}}] -password_ok=OK -password_cancel=Neenal - -printing_not_supported=Artu: Joowkat bii nanguwul lool mool. diff --git a/public/pdfjs/web/locale/xh/viewer.properties b/public/pdfjs/web/locale/xh/viewer.properties deleted file mode 100644 index 3cc2317d..00000000 --- a/public/pdfjs/web/locale/xh/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Iphepha langaphambili -previous_label=Okwangaphambili -next.title=Iphepha elilandelayo -next_label=Okulandelayo - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Iphepha: -page_of=kwali- {{pageCount}} - -zoom_out.title=Bhekelisela Kudana -zoom_out_label=Bhekelisela Kudana -zoom_in.title=Sondeza Kufuphi -zoom_in_label=Sondeza Kufuphi -zoom.title=Yandisa / Nciphisa -presentation_mode.title=Tshintshela kwimo yonikezelo -presentation_mode_label=Imo yonikezelo -open_file.title=Vula Ifayile -open_file_label=Vula -print.title=Printa -print_label=Printa -download.title=Khuphela -download_label=Khuphela -bookmark.title=Imbonakalo ekhoyo (kopa okanye vula kwifestile entsha) -bookmark_label=Imbonakalo ekhoyo - -# Secondary toolbar and context menu -tools.title=Izixhobo zemiyalelo -tools_label=Izixhobo zemiyalelo -first_page.title=Yiya kwiphepha lokuqala -first_page.label=Yiya kwiphepha lokuqala -first_page_label=Yiya kwiphepha lokuqala -last_page.title=Yiya kwiphepha lokugqibela -last_page.label=Yiya kwiphepha lokugqibela -last_page_label=Yiya kwiphepha lokugqibela -page_rotate_cw.title=Jikelisa ngasekunene -page_rotate_cw.label=Jikelisa ngasekunene -page_rotate_cw_label=Jikelisa ngasekunene -page_rotate_ccw.title=Jikelisa ngasekhohlo -page_rotate_ccw.label=Jikelisa ngasekhohlo -page_rotate_ccw_label=Jikelisa ngasekhohlo - -hand_tool_enable.title=Yenza isixhobo sesandla sisebenze -hand_tool_enable_label=Yenza isixhobo sesandla sisebenze -hand_tool_disable.title=Yenza isixhobo sesandla singasebenzi -hand_tool_disable_label=Yenza isixhobo sesandla singasebenzi - -# Document properties dialog box -document_properties.title=Iipropati zoxwebhu… -document_properties_label=Iipropati zoxwebhu… -document_properties_file_name=Igama lefayile: -document_properties_file_size=Isayizi yefayile: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB (iibhayiti{{size_b}}) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB (iibhayithi{{size_b}}) -document_properties_title=Umxholo: -document_properties_author=Umbhali: -document_properties_subject=Umbandela: -document_properties_keywords=Amagama aphambili: -document_properties_creation_date=Umhla wokwenziwa kwayo: -document_properties_modification_date=Umhla wokulungiswa kwayo: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=Umntu oyenzileyo: -document_properties_producer=Umvelisi we-PDF: -document_properties_version=Uhlelo lwe-PDF: -document_properties_page_count=Inani lamaphepha: -document_properties_close=Vala - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=Togola ngebha eseCaleni -toggle_sidebar_label=Togola ngebha eseCaleni -outline.title=Bonisa isishwankathelo soxwebhu -outline_label=Isishwankathelo soxwebhu -attachments.title=Bonisa iziqhotyoshelwa -attachments_label=Iziqhoboshelo -thumbs.title=Bonisa ukrobiso kumfanekiso -thumbs_label=Ukrobiso kumfanekiso -findbar.title=Fumana kuXwebhu -findbar_label=Fumana - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Iphepha {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Ukrobiso kumfanekiso wephepha {{page}} - -# Find panel button title and messages -find_label=Fumanisa: -find_previous.title=Fumanisa isenzeko sangaphambili sebinzana lamagama -find_previous_label=Okwangaphambili -find_next.title=Fumanisa isenzeko esilandelayo sebinzana lamagama -find_next_label=Okulandelayo -find_highlight=Qaqambisa konke -find_match_case_label=Tshatisa ngobukhulu bukanobumba -find_reached_top=Ufike ngaphezulu ephepheni, kusukwa ngezantsi -find_reached_bottom=Ufike ekupheleni kwephepha, kusukwa ngaphezulu -find_not_found=Ibinzana alifunyenwanga - -# Error panel labels -error_more_info=Inkcazelo Engakumbi -error_less_info=Inkcazelo Encinane -error_close=Vala -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=I-PDF.js v{{version}} (yakha: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Umyalezo: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Imfumba: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ifayile: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Umgca: {{line}} -rendering_error=Imposiso yenzekile xa bekunikezelwa iphepha. - -# Predefined zoom values -page_scale_width=Ububanzi bephepha -page_scale_fit=Ukulinganiswa kwephepha -page_scale_auto=Ukwandisa/Ukunciphisa Ngokwayo -page_scale_actual=Ubungakanani bokwenene -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=Imposiso -loading_error=Imposiso yenzekile xa kulayishwa i-PDF. -invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo. -missing_file_error=Ifayile ye-PDF edukileyo. -unexpected_response_error=Impendulo yeseva engalindelekanga. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Ubhalo-nqaku] -password_label=Faka ipasiwedi ukuze uvule le fayile yePDF. -password_invalid=Ipasiwedi ayisebenzi. Nceda uzame kwakhona. -password_ok=KULUNGILE -password_cancel=Rhoxisa - -printing_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza. -printing_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta. -web_fonts_disabled=Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa iifonti ze-PDF ezincanyathelisiweyo. -document_colors_disabled=Amaxwebhu ePDF akavumelekanga ukuba asebenzise imibala yawo: 'Ukuvumela amaphepha ukuba asebenzise eyawo imibala' kuvaliwe ukuba kungasebenzi kwibhrawuza. diff --git a/public/pdfjs/web/locale/zh-CN/viewer.properties b/public/pdfjs/web/locale/zh-CN/viewer.properties deleted file mode 100644 index 03866813..00000000 --- a/public/pdfjs/web/locale/zh-CN/viewer.properties +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=上一页 -previous_label=上一页 -next.title=下一页 -next_label=下一页 - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=页é¢ï¼š -page_of=/ {{pageCount}} - -zoom_out.title=ç¼©å° -zoom_out_label=ç¼©å° -zoom_in.title=放大 -zoom_in_label=放大 -zoom.title=缩放 -presentation_mode.title=切æ¢åˆ°æ¼”ç¤ºæ¨¡å¼ -presentation_mode_label=æ¼”ç¤ºæ¨¡å¼ -open_file.title=打开文件 -open_file_label=打开 -print.title=æ‰“å° -print_label=æ‰“å° -download.title=下载 -download_label=下载 -bookmark.title=当å‰è§†å›¾ï¼ˆå¤åˆ¶æˆ–在新窗å£ä¸æ‰“开) -bookmark_label=当å‰è§†å›¾ - -# Secondary toolbar and context menu -tools.title=工具 -tools_label=工具 -first_page.title=转到第一页 -first_page.label=转到第一页 -first_page_label=转到第一页 -last_page.title=转到最åŽä¸€é¡µ -last_page.label=转到最åŽä¸€é¡µ -last_page_label=转到最åŽä¸€é¡µ -page_rotate_cw.title=顺时针旋转 -page_rotate_cw.label=顺时针旋转 -page_rotate_cw_label=顺时针旋转 -page_rotate_ccw.title=逆时针旋转 -page_rotate_ccw.label=逆时针旋转 -page_rotate_ccw_label=逆时针旋转 - -hand_tool_enable.title=å¯ç”¨æ‰‹å½¢å·¥å…· -hand_tool_enable_label=å¯ç”¨æ‰‹å½¢å·¥å…· -hand_tool_disable.title=ç¦ç”¨æ‰‹å½¢å·¥å…· -hand_tool_disable_label=ç¦ç”¨æ‰‹å½¢å·¥å…· - -# Document properties dialog box -document_properties.title=文档属性… -document_properties_label=文档属性… -document_properties_file_name=文件å: -document_properties_file_size=文件大å°: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} å—节) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} å—节) -document_properties_title=æ ‡é¢˜: -document_properties_author=作者: -document_properties_subject=主题: -document_properties_keywords=关键è¯: -document_properties_creation_date=创建日期: -document_properties_modification_date=修改日期: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=创建者: -document_properties_producer=PDF 制作者: -document_properties_version=PDF 版本: -document_properties_page_count=页数: -document_properties_close=å…³é— - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=切æ¢ä¾§æ -toggle_sidebar_label=切æ¢ä¾§æ -outline.title=显示文档大纲 -outline_label=文档大纲 -attachments.title=显示附件 -attachments_label=附件 -thumbs.title=显示缩略图 -thumbs_label=缩略图 -findbar.title=在文档ä¸æŸ¥æ‰¾ -findbar_label=查找 - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=页ç {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=é¡µé¢ {{page}} 的缩略图 - -# Find panel button title and messages -find_label=查找: -find_previous.title=查找è¯è¯ä¸Šä¸€æ¬¡å‡ºçŽ°çš„ä½ç½® -find_previous_label=上一页 -find_next.title=查找è¯è¯åŽä¸€æ¬¡å‡ºçŽ°çš„ä½ç½® -find_next_label=下一页 -find_highlight=全部高亮显示 -find_match_case_label=区分大å°å†™ -find_reached_top=åˆ°è¾¾æ–‡æ¡£å¼€å¤´ï¼Œä»Žæœ«å°¾ç»§ç» -find_reached_bottom=åˆ°è¾¾æ–‡æ¡£æœ«å°¾ï¼Œä»Žå¼€å¤´ç»§ç» -find_not_found=è¯è¯æœªæ‰¾åˆ° - -# Error panel labels -error_more_info=æ›´å¤šä¿¡æ¯ -error_less_info=æ›´å°‘ä¿¡æ¯ -error_close=å…³é— -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=ä¿¡æ¯ï¼š{{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=å †æ ˆï¼š{{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=文件:{{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=è¡Œå·ï¼š{{line}} -rendering_error=渲染页é¢æ—¶å‘生错误。 - -# Predefined zoom values -page_scale_width=适åˆé¡µå®½ -page_scale_fit=适åˆé¡µé¢ -page_scale_auto=自动缩放 -page_scale_actual=å®žé™…å¤§å° -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=错误 -loading_error=载入PDFæ—¶å‘生错误。 -invalid_file_error=æ— æ•ˆæˆ–æŸåçš„PDF文件。 -missing_file_error=缺少PDF文件。 -unexpected_response_error=æ„外的æœåŠ¡å™¨å“应。 - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} 注解] -password_label=输入密ç ä»¥æ‰“å¼€æ¤ PDF 文件。 -password_invalid=密ç æ— æ•ˆã€‚è¯·é‡è¯•ã€‚ -password_ok=确定 -password_cancel=å–消 - -printing_not_supported=è¦å‘Šï¼šæ‰“å°åŠŸèƒ½ä¸å®Œå…¨æ”¯æŒæ¤æµè§ˆå™¨ã€‚ -printing_not_ready=è¦å‘Šï¼šè¯¥ PDF æœªå®Œå…¨åŠ è½½ä»¥ä¾›æ‰“å°ã€‚ -web_fonts_disabled=Web å—体已被ç¦ç”¨ï¼šæ— 法使用嵌入的PDFå—体。 -document_colors_disabled=ä¸å…许 PDF 文档使用自己的颜色:æµè§ˆå™¨ä¸â€œå…许页é¢é€‰æ‹©è‡ªå·±çš„颜色â€çš„选项已åœç”¨ã€‚ diff --git a/public/pdfjs/web/locale/zh-TW/viewer.properties b/public/pdfjs/web/locale/zh-TW/viewer.properties deleted file mode 100644 index 13e884bd..00000000 --- a/public/pdfjs/web/locale/zh-TW/viewer.properties +++ /dev/null @@ -1,174 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=上一é -previous_label=上一é -next.title=下一é -next_label=下一é - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=é : -page_of=/ {{pageCount}} - -zoom_out.title=ç¸®å° -zoom_out_label=ç¸®å° -zoom_in.title=放大 -zoom_in_label=放大 -zoom.title=縮放 -presentation_mode.title=切æ›è‡³ç°¡å ±æ¨¡å¼ -presentation_mode_label=ç°¡å ±æ¨¡å¼ -open_file.title=開啟檔案 -open_file_label=é–‹å•Ÿ -print.title=åˆ—å° -print_label=åˆ—å° -download.title=下載 -download_label=下載 -bookmark.title=ç›®å‰æª¢è¦–的內容(複製或開啟於新視窗) -bookmark_label=ç›®å‰æª¢è¦– - -# Secondary toolbar and context menu -tools.title=工具 -tools_label=工具 -first_page.title=跳到第一é -first_page.label=跳到第一é -first_page_label=跳到第一é -last_page.title=跳到最後一é -last_page.label=跳到最後一é -last_page_label=跳到最後一é -page_rotate_cw.title=é †æ™‚é‡æ—‹è½‰ -page_rotate_cw.label=é †æ™‚é‡æ—‹è½‰ -page_rotate_cw_label=é †æ™‚é‡æ—‹è½‰ -page_rotate_ccw.title=逆時é‡æ—‹è½‰ -page_rotate_ccw.label=逆時é‡æ—‹è½‰ -page_rotate_ccw_label=逆時é‡æ—‹è½‰ - -hand_tool_enable.title=啟用掌型工具 -hand_tool_enable_label=啟用掌型工具 -hand_tool_disable.title=åœç”¨æŽŒåž‹å·¥å…· -hand_tool_disable_label=åœç”¨æŽŒåž‹å·¥å…· - -# Document properties dialog box -document_properties.title=文件內容… -document_properties_label=文件內容… -document_properties_file_name=檔案å稱: -document_properties_file_size=檔案大å°: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB({{size_b}} ä½å…ƒçµ„) -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB({{size_b}} ä½å…ƒçµ„) -document_properties_title=標題: -document_properties_author=作者: -document_properties_subject=主旨: -document_properties_keywords=é—œéµå—: -document_properties_creation_date=建立日期: -document_properties_modification_date=修改日期: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. -document_properties_date_string={{date}}, {{time}} -document_properties_creator=建立者: -document_properties_producer=PDF 產生器: -document_properties_version=PDF 版本: -document_properties_page_count=é 數: -document_properties_close=關閉 - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=切æ›å´é‚Šæ¬„ -toggle_sidebar_label=切æ›å´é‚Šæ¬„ -outline.title=顯示文件大綱 -outline_label=文件大綱 -attachments.title=顯示附件 -attachments_label=附件 -thumbs.title=顯示縮圖 -thumbs_label=縮圖 -findbar.title=在文件ä¸å°‹æ‰¾ -findbar_label=尋找 - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=é {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=é {{page}} 的縮圖 - -# Find panel button title and messages -find_label=尋找: -find_previous.title=尋找文å—å‰æ¬¡å‡ºç¾çš„ä½ç½® -find_previous_label=上一個 -find_next.title=尋找文å—下次出ç¾çš„ä½ç½® -find_next_label=下一個 -find_highlight=全部強調標示 -find_match_case_label=å€åˆ†å¤§å°å¯« -find_reached_top=å·²æœå°‹è‡³æ–‡ä»¶é ‚端,自底端繼續æœå°‹ -find_reached_bottom=å·²æœå°‹è‡³æ–‡ä»¶åº•ç«¯ï¼Œè‡ªé ‚端繼續æœå°‹ -find_not_found=找ä¸åˆ°æŒ‡å®šæ–‡å— - -# Error panel labels -error_more_info=更多資訊 -error_less_info=更少資訊 -error_close=關閉 -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=訊æ¯: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=å †ç–Š: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=檔案: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=è¡Œ: {{line}} -rendering_error=æ繪é é¢æ™‚發生錯誤。 - -# Predefined zoom values -page_scale_width=é é¢å¯¬åº¦ -page_scale_fit=縮放至é é¢å¤§å° -page_scale_auto=自動縮放 -page_scale_actual=å¯¦éš›å¤§å° -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. -page_scale_percent={{scale}}% - -# Loading indicator messages -loading_error_indicator=錯誤 -loading_error=載入 PDF 時發生錯誤。 -invalid_file_error=無效或毀æçš„ PDF 檔案。 -missing_file_error=找ä¸åˆ° PDF 檔案。 -unexpected_response_error=伺æœå™¨å›žæ‡‰æœªé 期的內容。 - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} 註解] -password_label=è«‹è¼¸å…¥ç”¨ä¾†é–‹å•Ÿæ¤ PDF 檔案的密碼。 -password_invalid=密碼ä¸æ£ç¢ºï¼Œè«‹å†è©¦ä¸€æ¬¡ã€‚ -password_ok=確定 -password_cancel=å–消 - -printing_not_supported=è¦å‘Š: æ¤ç€è¦½å™¨æœªå®Œæ•´æ”¯æ´åˆ—å°åŠŸèƒ½ã€‚ -printing_not_ready=è¦å‘Š: æ¤ PDF 未完æˆä¸‹è¼‰ä»¥ä¾›åˆ—å°ã€‚ -web_fonts_disabled=å·²åœç”¨ç¶²è·¯å—åž‹ (Web fonts): 無法使用 PDF 內嵌å—型。 -document_colors_disabled=ç€è¦½å™¨çš„「優先使用網é 指定的色彩ã€æœªè¢«å‹¾é¸ï¼ŒPDF 文件無法使用自己的色彩。 - diff --git a/public/pdfjs/web/locale/zu/viewer.properties b/public/pdfjs/web/locale/zu/viewer.properties deleted file mode 100644 index b19ca5fd..00000000 --- a/public/pdfjs/web/locale/zu/viewer.properties +++ /dev/null @@ -1,132 +0,0 @@ -# Copyright 2012 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. - -# Main toolbar buttons (tooltips and alt text for images) -previous.title=Ikhasi eledlule -previous_label=Okudlule -next.title=Ikhasi elilandelayo -next_label=Okulandelayo - -# LOCALIZATION NOTE (page_label, page_of): -# These strings are concatenated to form the "Page: X of Y" string. -# Do not translate "{{pageCount}}", it will be substituted with a number -# representing the total number of pages. -page_label=Ikhasi: -page_of=kwe-{{pageCount}} - -zoom_out.title=Hlehlisela emuva -zoom_out_label=Hlehlisela emuva -zoom_in.title=Sondeza eduze -zoom_in_label=Sondeza eduze -zoom.title=Lwiza -presentation_mode.title=Guqulela kwindlela yesethulo -presentation_mode_label=Indlelo yesethulo -open_file.title=Vula ifayela -open_file_label=Vula -print.title=Phrinta -print_label=Phrinta -download.title=Landa -download_label=Landa -bookmark.title=Ukubuka kwamanje (kopisha noma vula kwifasitela elisha) -bookmark_label=Ukubuka kwamanje - -# Secondary toolbar and context menu - - -# Document properties dialog box -document_properties_file_name=Igama lefayela: -# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" -# will be replaced by the PDF file size in kilobytes, respectively in bytes. -# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" -# will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_title=Isihloko: -# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" -# will be replaced by the creation/modification date, and time, of the PDF file. - -# Tooltips and alt text for side panel toolbar buttons -# (the _label strings are alt text for the buttons, the .title strings are -# tooltips) -toggle_sidebar.title=I-toggle yebha yaseceleni -toggle_sidebar_label=i-toggle yebha yaseceleni -outline.title=Bonisa umugqa waseceleni wedokhumenti -outline_label=Umugqa waseceleni wedokhumenti -thumbs.title=Bonisa izithombe ezincane -thumbs_label=Izithonjana -findbar.title=Thola kwidokhumenti -findbar_label=Thola - -# Thumbnails panel item (tooltip and alt text for images) -# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page -# number. -thumb_page_title=Ikhasi {{page}} -# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page -# number. -thumb_page_canvas=Isithonjana sekhasi {{page}} - -# Find panel button title and messages -find_label=Thola -find_previous.title=Thola indawo eyandulelayo okuvela kuyo lomshwana -find_previous_label=Okudlulile -find_next.title=Thola enye indawo okuvela kuyo lomshwana -find_next_label=Okulandelayo -find_highlight=Gqamisa konke -find_match_case_label=Fanisa ikheyisi -find_reached_top=Finyelele phezulu kwidokhumenti, qhubeka kusukaphansi -find_reached_bottom=Ifinyelele ekupheleni kwedokhumenti, qhubeka kusukaphezulu -find_not_found=Umshwana awutholakali - -# Error panel labels -error_more_info=Ukwaziswa Okwengeziwe -error_less_info=Ukwazi okuncane -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Umlayezo: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Isitaki: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Ifayela: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Umugqa: {{line}} -rendering_error=Iphutha lenzekile uma kunikwa ikhasi. - -# Predefined zoom values -page_scale_width=Ububanzi bekhasi -page_scale_fit=Ukulingana kwekhasi -page_scale_auto=Ukulwiza okuzenzekalelayo -page_scale_actual=Usayizi Wangempela -# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a -# numerical scale value. - -# Loading indicator messages -loading_error_indicator=Iphutha -loading_error=Kwenzeke iphutha uma kulayishwa i-PDF. -invalid_file_error=Ifayela le-PDF elingavumelekile noma elonakele. -missing_file_error=Ifayela le-PDF elilahlekile. - -# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. -# "{{type}}" will be replaced with an annotation type from a list defined in -# the PDF spec (32000-1:2008 Table 169 – Annotation types). -# Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Amazwibela e-{{type}}] -password_ok=Kulungile -password_cancel=Khansela - -printing_not_supported=Isixwayiso: Ukuphrinta akuxhasiwe yilesisiphequluli ngokugcwele. -printing_not_ready=Isixwayiso: I-PDF ayikalayishwa ngokuphelele yiPhrinta. -web_fonts_disabled=Amafonti e-webhu akutshaziwe: ayikwazi ukusebenzisa amafonti abekiwe e-PDF.\u0020 -document_colors_disabled=Amadokhumenti we-PDF awavumelekile ukusebenzisa imibalo yayo: 'Vumela amakhasi ukukhetha imibala yayo' ayisebenzi kusiphequluli. diff --git a/public/pdfjs/web/viewer.css b/public/pdfjs/web/viewer.css deleted file mode 100644 index a8391669..00000000 --- a/public/pdfjs/web/viewer.css +++ /dev/null @@ -1,2088 +0,0 @@ -/* Copyright 2014 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. - */ - -.textLayer { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - overflow: hidden; - opacity: 0.2; -} - -.textLayer > div { - color: transparent; - position: absolute; - white-space: pre; - cursor: text; - -webkit-transform-origin: 0% 0%; - -moz-transform-origin: 0% 0%; - -o-transform-origin: 0% 0%; - -ms-transform-origin: 0% 0%; - transform-origin: 0% 0%; -} - -.textLayer .highlight { - margin: -1px; - padding: 1px; - - background-color: rgb(180, 0, 170); - border-radius: 4px; -} - -.textLayer .highlight.begin { - border-radius: 4px 0px 0px 4px; -} - -.textLayer .highlight.end { - border-radius: 0px 4px 4px 0px; -} - -.textLayer .highlight.middle { - border-radius: 0px; -} - -.textLayer .highlight.selected { - background-color: rgb(0, 100, 0); -} - -.textLayer ::selection { background: rgb(0,0,255); } -.textLayer ::-moz-selection { background: rgb(0,0,255); } - -.textLayer .endOfContent { - display: block; - position: absolute; - left: 0px; - top: 100%; - right: 0px; - bottom: 0px; - z-index: -1; - cursor: default; - -webkit-user-select: none; - -ms-user-select: none; - -moz-user-select: none; -} - -.textLayer .endOfContent.active { - top: 0px; -} - - -.annotationLayer .annotLink > a:hover { - opacity: 0.2; - background: #ff0; - box-shadow: 0px 2px 10px #ff0; -} - -.annotationLayer .annotText > img { - position: absolute; - cursor: pointer; -} - -.annotationLayer .annotTextContentWrapper { - position: absolute; - width: 20em; -} - -.annotationLayer .annotTextContent { - z-index: 200; - float: left; - max-width: 20em; - background-color: #FFFF99; - box-shadow: 0px 2px 5px #333; - border-radius: 2px; - padding: 0.6em; - cursor: pointer; -} - -.annotationLayer .annotTextContent > h1 { - font-size: 1em; - border-bottom: 1px solid #000000; - padding-bottom: 0.2em; -} - -.annotationLayer .annotTextContent > p { - padding-top: 0.2em; -} - -.annotationLayer .annotLink > a { - position: absolute; - font-size: 1em; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.annotationLayer .annotLink > a /* -ms-a */ { - background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7") 0 0 repeat; -} - -.pdfViewer .canvasWrapper { - overflow: hidden; -} - -.pdfViewer .page { - direction: ltr; - width: 816px; - height: 1056px; - margin: 1px auto -8px auto; - position: relative; - overflow: visible; - border: 9px solid transparent; - background-clip: content-box; - border-image: url(images/shadow.png) 9 9 repeat; - background-color: white; -} - -.pdfViewer.removePageBorders .page { - margin: 0px auto 10px auto; - border: none; -} - -.pdfViewer .page canvas { - margin: 0; - display: block; -} - -.pdfViewer .page .loadingIcon { - position: absolute; - display: block; - left: 0; - top: 0; - right: 0; - bottom: 0; - background: url('images/loading-icon.gif') center no-repeat; -} - -.pdfPresentationMode:-webkit-full-screen .pdfViewer .page { - margin-bottom: 100%; - border: 0; -} - -.pdfPresentationMode:-moz-full-screen .pdfViewer .page { - margin-bottom: 100%; - border: 0; -} - -.pdfPresentationMode:-ms-fullscreen .pdfViewer .page { - margin-bottom: 100% !important; - border: 0; -} - -.pdfPresentationMode:fullscreen .pdfViewer .page { - margin-bottom: 100%; - border: 0; -} - -* { - padding: 0; - margin: 0; -} - -html { - height: 100%; - /* Font size is needed to make the activity bar the correct size. */ - font-size: 10px; -} - -body { - height: 100%; - background-color: #404040; - background-image: url(images/texture.png); -} - -body, -input, -button, -select { - font: message-box; - outline: none; -} - -.hidden { - display: none !important; -} -[hidden] { - display: none !important; -} - -#viewerContainer.pdfPresentationMode:-webkit-full-screen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; - width: 100%; - height: 100%; - overflow: hidden; - cursor: none; - -webkit-user-select: none; -} - -#viewerContainer.pdfPresentationMode:-moz-full-screen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; - width: 100%; - height: 100%; - overflow: hidden; - cursor: none; - -moz-user-select: none; -} - -#viewerContainer.pdfPresentationMode:-ms-fullscreen { - top: 0px !important; - border-top: 2px solid transparent; - width: 100%; - height: 100%; - overflow: hidden !important; - cursor: none; - -ms-user-select: none; -} - -#viewerContainer.pdfPresentationMode:-ms-fullscreen::-ms-backdrop { - background-color: #000; -} - -#viewerContainer.pdfPresentationMode:fullscreen { - top: 0px; - border-top: 2px solid transparent; - background-color: #000; - width: 100%; - height: 100%; - overflow: hidden; - cursor: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; -} - -.pdfPresentationMode:-webkit-full-screen a:not(.internalLink) { - display: none; -} - -.pdfPresentationMode:-moz-full-screen a:not(.internalLink) { - display: none; -} - -.pdfPresentationMode:-ms-fullscreen a:not(.internalLink) { - display: none !important; -} - -.pdfPresentationMode:fullscreen a:not(.internalLink) { - display: none; -} - -.pdfPresentationMode:-webkit-full-screen .textLayer > div { - cursor: none; -} - -.pdfPresentationMode:-moz-full-screen .textLayer > div { - cursor: none; -} - -.pdfPresentationMode:-ms-fullscreen .textLayer > div { - cursor: none; -} - -.pdfPresentationMode:fullscreen .textLayer > div { - cursor: none; -} - -.pdfPresentationMode.pdfPresentationModeControls > *, -.pdfPresentationMode.pdfPresentationModeControls .textLayer > div { - cursor: default; -} - -/* outer/inner center provides horizontal center */ -.outerCenter { - pointer-events: none; - position: relative; -} -html[dir='ltr'] .outerCenter { - float: right; - right: 50%; -} -html[dir='rtl'] .outerCenter { - float: left; - left: 50%; -} -.innerCenter { - pointer-events: auto; - position: relative; -} -html[dir='ltr'] .innerCenter { - float: right; - right: -50%; -} -html[dir='rtl'] .innerCenter { - float: left; - left: -50%; -} - -#outerContainer { - width: 100%; - height: 100%; - position: relative; -} - -#sidebarContainer { - position: absolute; - top: 0; - bottom: 0; - width: 200px; - visibility: hidden; - -webkit-transition-duration: 200ms; - -webkit-transition-timing-function: ease; - transition-duration: 200ms; - transition-timing-function: ease; - -} -html[dir='ltr'] #sidebarContainer { - -webkit-transition-property: left; - transition-property: left; - left: -200px; -} -html[dir='rtl'] #sidebarContainer { - -webkit-transition-property: right; - transition-property: right; - right: -200px; -} - -#outerContainer.sidebarMoving > #sidebarContainer, -#outerContainer.sidebarOpen > #sidebarContainer { - visibility: visible; -} -html[dir='ltr'] #outerContainer.sidebarOpen > #sidebarContainer { - left: 0px; -} -html[dir='rtl'] #outerContainer.sidebarOpen > #sidebarContainer { - right: 0px; -} - -#mainContainer { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - min-width: 320px; - -webkit-transition-duration: 200ms; - -webkit-transition-timing-function: ease; - transition-duration: 200ms; - transition-timing-function: ease; -} -html[dir='ltr'] #outerContainer.sidebarOpen > #mainContainer { - -webkit-transition-property: left; - transition-property: left; - left: 200px; -} -html[dir='rtl'] #outerContainer.sidebarOpen > #mainContainer { - -webkit-transition-property: right; - transition-property: right; - right: 200px; -} - -#sidebarContent { - top: 32px; - bottom: 0; - overflow: auto; - -webkit-overflow-scrolling: touch; - position: absolute; - width: 200px; - background-color: hsla(0,0%,0%,.1); -} -html[dir='ltr'] #sidebarContent { - left: 0; - box-shadow: inset -1px 0 0 hsla(0,0%,0%,.25); -} -html[dir='rtl'] #sidebarContent { - right: 0; - box-shadow: inset 1px 0 0 hsla(0,0%,0%,.25); -} - -#viewerContainer { - overflow: auto; - -webkit-overflow-scrolling: touch; - position: absolute; - top: 32px; - right: 0; - bottom: 0; - left: 0; - outline: none; -} -html[dir='ltr'] #viewerContainer { - box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05); -} -html[dir='rtl'] #viewerContainer { - box-shadow: inset -1px 0 0 hsla(0,0%,100%,.05); -} - -.toolbar { - position: relative; - left: 0; - right: 0; - z-index: 9999; - cursor: default; -} - -#toolbarContainer { - width: 100%; -} - -#toolbarSidebar { - width: 200px; - height: 32px; - background-color: #424242; /* fallback */ - background-image: url(images/texture.png), - linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95)); -} -html[dir='ltr'] #toolbarSidebar { - box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 0 1px hsla(0,0%,0%,.1); -} -html[dir='rtl'] #toolbarSidebar { - box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.25), - inset 0 1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 0 1px hsla(0,0%,0%,.1); -} - -#toolbarContainer, .findbar, .secondaryToolbar { - position: relative; - height: 32px; - background-color: #474747; /* fallback */ - background-image: url(images/texture.png), - linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); -} -html[dir='ltr'] #toolbarContainer, .findbar, .secondaryToolbar { - box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08), - inset 0 1px 1px hsla(0,0%,0%,.15), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 1px 1px hsla(0,0%,0%,.1); -} -html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar { - box-shadow: inset -1px 0 0 hsla(0,0%,100%,.08), - inset 0 1px 1px hsla(0,0%,0%,.15), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 1px 1px hsla(0,0%,0%,.1); -} - -#toolbarViewer { - height: 32px; -} - -#loadingBar { - position: relative; - width: 100%; - height: 4px; - background-color: #333; - border-bottom: 1px solid #333; -} - -#loadingBar .progress { - position: absolute; - top: 0; - left: 0; - width: 0%; - height: 100%; - background-color: #ddd; - overflow: hidden; - -webkit-transition: width 200ms; - transition: width 200ms; -} - -@-webkit-keyframes progressIndeterminate { - 0% { left: -142px; } - 100% { left: 0; } -} - -@keyframes progressIndeterminate { - 0% { left: -142px; } - 100% { left: 0; } -} - -#loadingBar .progress.indeterminate { - background-color: #999; - -webkit-transition: none; - transition: none; -} - -#loadingBar .progress.indeterminate .glimmer { - position: absolute; - top: 0; - left: 0; - height: 100%; - width: calc(100% + 150px); - - background: repeating-linear-gradient(135deg, - #bbb 0, #999 5px, - #999 45px, #ddd 55px, - #ddd 95px, #bbb 100px); - - -webkit-animation: progressIndeterminate 950ms linear infinite; - animation: progressIndeterminate 950ms linear infinite; -} - -.findbar, .secondaryToolbar { - top: 32px; - position: absolute; - z-index: 10000; - height: 32px; - - min-width: 16px; - padding: 0px 6px 0px 6px; - margin: 4px 2px 4px 2px; - color: hsl(0,0%,85%); - font-size: 12px; - line-height: 14px; - text-align: left; - cursor: default; -} - -html[dir='ltr'] .findbar { - left: 68px; -} - -html[dir='rtl'] .findbar { - right: 68px; -} - -.findbar label { - -webkit-user-select: none; - -moz-user-select: none; -} - -#findInput[data-status="pending"] { - background-image: url(images/loading-small.png); - background-repeat: no-repeat; - background-position: right; -} -html[dir='rtl'] #findInput[data-status="pending"] { - background-position: left; -} - -.secondaryToolbar { - padding: 6px; - height: auto; - z-index: 30000; -} -html[dir='ltr'] .secondaryToolbar { - right: 4px; -} -html[dir='rtl'] .secondaryToolbar { - left: 4px; -} - -#secondaryToolbarButtonContainer { - max-width: 200px; - max-height: 400px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - margin-bottom: -4px; -} - -.doorHanger, -.doorHangerRight { - border: 1px solid hsla(0,0%,0%,.5); - border-radius: 2px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); -} -.doorHanger:after, .doorHanger:before, -.doorHangerRight:after, .doorHangerRight:before { - bottom: 100%; - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; -} -.doorHanger:after, -.doorHangerRight:after { - border-bottom-color: hsla(0,0%,32%,.99); - border-width: 8px; -} -.doorHanger:before, -.doorHangerRight:before { - border-bottom-color: hsla(0,0%,0%,.5); - border-width: 9px; -} - -html[dir='ltr'] .doorHanger:after, -html[dir='rtl'] .doorHangerRight:after { - left: 13px; - margin-left: -8px; -} - -html[dir='ltr'] .doorHanger:before, -html[dir='rtl'] .doorHangerRight:before { - left: 13px; - margin-left: -9px; -} - -html[dir='rtl'] .doorHanger:after, -html[dir='ltr'] .doorHangerRight:after { - right: 13px; - margin-right: -8px; -} - -html[dir='rtl'] .doorHanger:before, -html[dir='ltr'] .doorHangerRight:before { - right: 13px; - margin-right: -9px; -} - -#findResultsCount { - background-color: hsl(0, 0%, 85%); - color: hsl(0, 0%, 32%); - text-align: center; - padding: 3px 4px; -} - -#findMsg { - font-style: italic; - color: #A6B7D0; -} - -#findInput.notFound { - background-color: rgb(255, 102, 102); -} - -html[dir='ltr'] #toolbarViewerLeft { - margin-left: -1px; -} -html[dir='rtl'] #toolbarViewerRight { - margin-right: -1px; -} - -html[dir='ltr'] #toolbarViewerLeft, -html[dir='rtl'] #toolbarViewerRight { - position: absolute; - top: 0; - left: 0; -} -html[dir='ltr'] #toolbarViewerRight, -html[dir='rtl'] #toolbarViewerLeft { - position: absolute; - top: 0; - right: 0; -} -html[dir='ltr'] #toolbarViewerLeft > *, -html[dir='ltr'] #toolbarViewerMiddle > *, -html[dir='ltr'] #toolbarViewerRight > *, -html[dir='ltr'] .findbar > * { - position: relative; - float: left; -} -html[dir='rtl'] #toolbarViewerLeft > *, -html[dir='rtl'] #toolbarViewerMiddle > *, -html[dir='rtl'] #toolbarViewerRight > *, -html[dir='rtl'] .findbar > * { - position: relative; - float: right; -} - -html[dir='ltr'] .splitToolbarButton { - margin: 3px 2px 4px 0; - display: inline-block; -} -html[dir='rtl'] .splitToolbarButton { - margin: 3px 0 4px 2px; - display: inline-block; -} -html[dir='ltr'] .splitToolbarButton > .toolbarButton { - border-radius: 0; - float: left; -} -html[dir='rtl'] .splitToolbarButton > .toolbarButton { - border-radius: 0; - float: right; -} - -.toolbarButton, -.secondaryToolbarButton, -.overlayButton { - border: 0 none; - background: none; - width: 32px; - height: 25px; -} - -.toolbarButton > span { - display: inline-block; - width: 0; - height: 0; - overflow: hidden; -} - -.toolbarButton[disabled], -.secondaryToolbarButton[disabled], -.overlayButton[disabled] { - opacity: .5; -} - -.toolbarButton.group { - margin-right: 0; -} - -.splitToolbarButton.toggled .toolbarButton { - margin: 0; -} - -.splitToolbarButton:hover > .toolbarButton, -.splitToolbarButton:focus > .toolbarButton, -.splitToolbarButton.toggled > .toolbarButton, -.toolbarButton.textButton { - background-color: hsla(0,0%,0%,.12); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - border: 1px solid hsla(0,0%,0%,.35); - border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.15) inset, - 0 1px 0 hsla(0,0%,100%,.05); - -webkit-transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 150ms; - -webkit-transition-timing-function: ease; - transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; - transition-timing-function: ease; - -} -.splitToolbarButton > .toolbarButton:hover, -.splitToolbarButton > .toolbarButton:focus, -.dropdownToolbarButton:hover, -.overlayButton:hover, -.overlayButton:focus, -.toolbarButton.textButton:hover, -.toolbarButton.textButton:focus { - background-color: hsla(0,0%,0%,.2); - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.15) inset, - 0 0 1px hsla(0,0%,0%,.05); - z-index: 199; -} -.splitToolbarButton > .toolbarButton { - position: relative; -} -html[dir='ltr'] .splitToolbarButton > .toolbarButton:first-child, -html[dir='rtl'] .splitToolbarButton > .toolbarButton:last-child { - position: relative; - margin: 0; - margin-right: -1px; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; - border-right-color: transparent; -} -html[dir='ltr'] .splitToolbarButton > .toolbarButton:last-child, -html[dir='rtl'] .splitToolbarButton > .toolbarButton:first-child { - position: relative; - margin: 0; - margin-left: -1px; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-left-color: transparent; -} -.splitToolbarButtonSeparator { - padding: 8px 0; - width: 1px; - background-color: hsla(0,0%,0%,.5); - z-index: 99; - box-shadow: 0 0 0 1px hsla(0,0%,100%,.08); - display: inline-block; - margin: 5px 0; -} -html[dir='ltr'] .splitToolbarButtonSeparator { - float: left; -} -html[dir='rtl'] .splitToolbarButtonSeparator { - float: right; -} -.splitToolbarButton:hover > .splitToolbarButtonSeparator, -.splitToolbarButton.toggled > .splitToolbarButtonSeparator { - padding: 12px 0; - margin: 1px 0; - box-shadow: 0 0 0 1px hsla(0,0%,100%,.03); - -webkit-transition-property: padding; - -webkit-transition-duration: 10ms; - -webkit-transition-timing-function: ease; - transition-property: padding; - transition-duration: 10ms; - transition-timing-function: ease; -} - -.toolbarButton, -.dropdownToolbarButton, -.secondaryToolbarButton, -.overlayButton { - min-width: 16px; - padding: 2px 6px 0; - border: 1px solid transparent; - border-radius: 2px; - color: hsla(0,0%,100%,.8); - font-size: 12px; - line-height: 14px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - /* Opera does not support user-select, use <... unselectable="on"> instead */ - cursor: default; - -webkit-transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 150ms; - -webkit-transition-timing-function: ease; - transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; - transition-timing-function: ease; -} - -html[dir='ltr'] .toolbarButton, -html[dir='ltr'] .overlayButton, -html[dir='ltr'] .dropdownToolbarButton { - margin: 3px 2px 4px 0; -} -html[dir='rtl'] .toolbarButton, -html[dir='rtl'] .overlayButton, -html[dir='rtl'] .dropdownToolbarButton { - margin: 3px 0 4px 2px; -} - -.toolbarButton:hover, -.toolbarButton:focus, -.dropdownToolbarButton, -.overlayButton, -.secondaryToolbarButton:hover, -.secondaryToolbarButton:focus { - background-color: hsla(0,0%,0%,.12); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - border: 1px solid hsla(0,0%,0%,.35); - border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.15) inset, - 0 1px 0 hsla(0,0%,100%,.05); -} - -.toolbarButton:hover:active, -.overlayButton:hover:active, -.dropdownToolbarButton:hover:active, -.secondaryToolbarButton:hover:active { - background-color: hsla(0,0%,0%,.2); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45); - box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, - 0 0 1px hsla(0,0%,0%,.2) inset, - 0 1px 0 hsla(0,0%,100%,.05); - -webkit-transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 10ms; - -webkit-transition-timing-function: linear; - transition-property: background-color, border-color, box-shadow; - transition-duration: 10ms; - transition-timing-function: linear; -} - -.toolbarButton.toggled, -.splitToolbarButton.toggled > .toolbarButton.toggled, -.secondaryToolbarButton.toggled { - background-color: hsla(0,0%,0%,.3); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5); - box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, - 0 0 1px hsla(0,0%,0%,.2) inset, - 0 1px 0 hsla(0,0%,100%,.05); - -webkit-transition-property: background-color, border-color, box-shadow; - -webkit-transition-duration: 10ms; - -webkit-transition-timing-function: linear; - transition-property: background-color, border-color, box-shadow; - transition-duration: 10ms; - transition-timing-function: linear; -} - -.toolbarButton.toggled:hover:active, -.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active, -.secondaryToolbarButton.toggled:hover:active { - background-color: hsla(0,0%,0%,.4); - border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.5) hsla(0,0%,0%,.55); - box-shadow: 0 1px 1px hsla(0,0%,0%,.2) inset, - 0 0 1px hsla(0,0%,0%,.3) inset, - 0 1px 0 hsla(0,0%,100%,.05); -} - -.dropdownToolbarButton { - width: 120px; - max-width: 120px; - padding: 0; - overflow: hidden; - background: url(images/toolbarButton-menuArrows.png) no-repeat; -} -html[dir='ltr'] .dropdownToolbarButton { - background-position: 95%; -} -html[dir='rtl'] .dropdownToolbarButton { - background-position: 5%; -} - -.dropdownToolbarButton > select { - min-width: 140px; - font-size: 12px; - color: hsl(0,0%,95%); - margin: 0; - padding: 3px 2px 2px; - border: none; - background: rgba(0,0,0,0); /* Opera does not support 'transparent' <select> background */ -} - -.dropdownToolbarButton > select > option { - background: hsl(0,0%,24%); -} - -#customScaleOption { - display: none; -} - -#pageWidthOption { - border-bottom: 1px rgba(255, 255, 255, .5) solid; -} - -html[dir='ltr'] .splitToolbarButton:first-child, -html[dir='ltr'] .toolbarButton:first-child, -html[dir='rtl'] .splitToolbarButton:last-child, -html[dir='rtl'] .toolbarButton:last-child { - margin-left: 4px; -} -html[dir='ltr'] .splitToolbarButton:last-child, -html[dir='ltr'] .toolbarButton:last-child, -html[dir='rtl'] .splitToolbarButton:first-child, -html[dir='rtl'] .toolbarButton:first-child { - margin-right: 4px; -} - -.toolbarButtonSpacer { - width: 30px; - display: inline-block; - height: 1px; -} - -.toolbarButtonFlexibleSpacer { - -webkit-box-flex: 1; - -moz-box-flex: 1; - min-width: 30px; -} - -html[dir='ltr'] #findPrevious { - margin-left: 3px; -} -html[dir='ltr'] #findNext { - margin-right: 3px; -} - -html[dir='rtl'] #findPrevious { - margin-right: 3px; -} -html[dir='rtl'] #findNext { - margin-left: 3px; -} - -.toolbarButton::before, -.secondaryToolbarButton::before { - /* All matching images have a size of 16x16 - * All relevant containers have a size of 32x25 */ - position: absolute; - display: inline-block; - top: 4px; - left: 7px; -} - -html[dir="ltr"] .secondaryToolbarButton::before { - left: 4px; -} -html[dir="rtl"] .secondaryToolbarButton::before { - right: 4px; -} - -html[dir='ltr'] .toolbarButton#sidebarToggle::before { - content: url(images/toolbarButton-sidebarToggle.png); -} -html[dir='rtl'] .toolbarButton#sidebarToggle::before { - content: url(images/toolbarButton-sidebarToggle-rtl.png); -} - -html[dir='ltr'] .toolbarButton#secondaryToolbarToggle::before { - content: url(images/toolbarButton-secondaryToolbarToggle.png); -} -html[dir='rtl'] .toolbarButton#secondaryToolbarToggle::before { - content: url(images/toolbarButton-secondaryToolbarToggle-rtl.png); -} - -html[dir='ltr'] .toolbarButton.findPrevious::before { - content: url(images/findbarButton-previous.png); -} -html[dir='rtl'] .toolbarButton.findPrevious::before { - content: url(images/findbarButton-previous-rtl.png); -} - -html[dir='ltr'] .toolbarButton.findNext::before { - content: url(images/findbarButton-next.png); -} -html[dir='rtl'] .toolbarButton.findNext::before { - content: url(images/findbarButton-next-rtl.png); -} - -html[dir='ltr'] .toolbarButton.pageUp::before { - content: url(images/toolbarButton-pageUp.png); -} -html[dir='rtl'] .toolbarButton.pageUp::before { - content: url(images/toolbarButton-pageUp-rtl.png); -} - -html[dir='ltr'] .toolbarButton.pageDown::before { - content: url(images/toolbarButton-pageDown.png); -} -html[dir='rtl'] .toolbarButton.pageDown::before { - content: url(images/toolbarButton-pageDown-rtl.png); -} - -.toolbarButton.zoomOut::before { - content: url(images/toolbarButton-zoomOut.png); -} - -.toolbarButton.zoomIn::before { - content: url(images/toolbarButton-zoomIn.png); -} - -.toolbarButton.presentationMode::before, -.secondaryToolbarButton.presentationMode::before { - content: url(images/toolbarButton-presentationMode.png); -} - -.toolbarButton.print::before, -.secondaryToolbarButton.print::before { - content: url(images/toolbarButton-print.png); -} - -.toolbarButton.openFile::before, -.secondaryToolbarButton.openFile::before { - content: url(images/toolbarButton-openFile.png); -} - -.toolbarButton.download::before, -.secondaryToolbarButton.download::before { - content: url(images/toolbarButton-download.png); -} - -.toolbarButton.bookmark, -.secondaryToolbarButton.bookmark { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - outline: none; - padding-top: 4px; - text-decoration: none; -} -.secondaryToolbarButton.bookmark { - padding-top: 5px; -} - -.bookmark[href='#'] { - opacity: .5; - pointer-events: none; -} - -.toolbarButton.bookmark::before, -.secondaryToolbarButton.bookmark::before { - content: url(images/toolbarButton-bookmark.png); -} - -#viewThumbnail.toolbarButton::before { - content: url(images/toolbarButton-viewThumbnail.png); -} - -html[dir="ltr"] #viewOutline.toolbarButton::before { - content: url(images/toolbarButton-viewOutline.png); -} -html[dir="rtl"] #viewOutline.toolbarButton::before { - content: url(images/toolbarButton-viewOutline-rtl.png); -} - -#viewAttachments.toolbarButton::before { - content: url(images/toolbarButton-viewAttachments.png); -} - -#viewFind.toolbarButton::before { - content: url(images/toolbarButton-search.png); -} - -.secondaryToolbarButton { - position: relative; - margin: 0 0 4px 0; - padding: 3px 0 1px 0; - height: auto; - min-height: 25px; - width: auto; - min-width: 100%; - white-space: normal; -} -html[dir="ltr"] .secondaryToolbarButton { - padding-left: 24px; - text-align: left; -} -html[dir="rtl"] .secondaryToolbarButton { - padding-right: 24px; - text-align: right; -} -html[dir="ltr"] .secondaryToolbarButton.bookmark { - padding-left: 27px; -} -html[dir="rtl"] .secondaryToolbarButton.bookmark { - padding-right: 27px; -} - -html[dir="ltr"] .secondaryToolbarButton > span { - padding-right: 4px; -} -html[dir="rtl"] .secondaryToolbarButton > span { - padding-left: 4px; -} - -.secondaryToolbarButton.firstPage::before { - content: url(images/secondaryToolbarButton-firstPage.png); -} - -.secondaryToolbarButton.lastPage::before { - content: url(images/secondaryToolbarButton-lastPage.png); -} - -.secondaryToolbarButton.rotateCcw::before { - content: url(images/secondaryToolbarButton-rotateCcw.png); -} - -.secondaryToolbarButton.rotateCw::before { - content: url(images/secondaryToolbarButton-rotateCw.png); -} - -.secondaryToolbarButton.handTool::before { - content: url(images/secondaryToolbarButton-handTool.png); -} - -.secondaryToolbarButton.documentProperties::before { - content: url(images/secondaryToolbarButton-documentProperties.png); -} - -.verticalToolbarSeparator { - display: block; - padding: 8px 0; - margin: 8px 4px; - width: 1px; - background-color: hsla(0,0%,0%,.5); - box-shadow: 0 0 0 1px hsla(0,0%,100%,.08); -} -html[dir='ltr'] .verticalToolbarSeparator { - margin-left: 2px; -} -html[dir='rtl'] .verticalToolbarSeparator { - margin-right: 2px; -} - -.horizontalToolbarSeparator { - display: block; - margin: 0 0 4px 0; - height: 1px; - width: 100%; - background-color: hsla(0,0%,0%,.5); - box-shadow: 0 0 0 1px hsla(0,0%,100%,.08); -} - -.toolbarField { - padding: 3px 6px; - margin: 4px 0 4px 0; - border: 1px solid transparent; - border-radius: 2px; - background-color: hsla(0,0%,100%,.09); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - border: 1px solid hsla(0,0%,0%,.35); - border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); - box-shadow: 0 1px 0 hsla(0,0%,0%,.05) inset, - 0 1px 0 hsla(0,0%,100%,.05); - color: hsl(0,0%,95%); - font-size: 12px; - line-height: 14px; - outline-style: none; - transition-property: background-color, border-color, box-shadow; - transition-duration: 150ms; - transition-timing-function: ease; -} - -.toolbarField[type=checkbox] { - display: inline-block; - margin: 8px 0px; -} - -.toolbarField.pageNumber { - -moz-appearance: textfield; /* hides the spinner in moz */ - min-width: 16px; - text-align: right; - width: 40px; -} - -.toolbarField.pageNumber.visiblePageIsLoading { - background-image: url(images/loading-small.png); - background-repeat: no-repeat; - background-position: 1px; -} - -.toolbarField.pageNumber::-webkit-inner-spin-button, -.toolbarField.pageNumber::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; -} - -.toolbarField:hover { - background-color: hsla(0,0%,100%,.11); - border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.43) hsla(0,0%,0%,.45); -} - -.toolbarField:focus { - background-color: hsla(0,0%,100%,.15); - border-color: hsla(204,100%,65%,.8) hsla(204,100%,65%,.85) hsla(204,100%,65%,.9); -} - -.toolbarLabel { - min-width: 16px; - padding: 3px 6px 3px 2px; - margin: 4px 2px 4px 0; - border: 1px solid transparent; - border-radius: 2px; - color: hsl(0,0%,85%); - font-size: 12px; - line-height: 14px; - text-align: left; - -webkit-user-select: none; - -moz-user-select: none; - cursor: default; -} - -#thumbnailView { - position: absolute; - width: 120px; - top: 0; - bottom: 0; - padding: 10px 40px 0; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.thumbnail { - float: left; - margin-bottom: 5px; -} - -#thumbnailView > a:last-of-type > .thumbnail { - margin-bottom: 10px; -} - -#thumbnailView > a:last-of-type > .thumbnail:not([data-loaded]) { - margin-bottom: 9px; -} - -.thumbnail:not([data-loaded]) { - border: 1px dashed rgba(255, 255, 255, 0.5); - margin: -1px -1px 4px -1px; -} - -.thumbnailImage { - border: 1px solid transparent; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3); - opacity: 0.8; - z-index: 99; - background-color: white; - background-clip: content-box; -} - -.thumbnailSelectionRing { - border-radius: 2px; - padding: 7px; -} - -a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage, -.thumbnail:hover > .thumbnailSelectionRing > .thumbnailImage { - opacity: .9; -} - -a:focus > .thumbnail > .thumbnailSelectionRing, -.thumbnail:hover > .thumbnailSelectionRing { - background-color: hsla(0,0%,100%,.15); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.2) inset, - 0 0 1px hsla(0,0%,0%,.2); - color: hsla(0,0%,100%,.9); -} - -.thumbnail.selected > .thumbnailSelectionRing > .thumbnailImage { - box-shadow: 0 0 0 1px hsla(0,0%,0%,.5); - opacity: 1; -} - -.thumbnail.selected > .thumbnailSelectionRing { - background-color: hsla(0,0%,100%,.3); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.1) inset, - 0 0 1px hsla(0,0%,0%,.2); - color: hsla(0,0%,100%,1); -} - -#outlineView, -#attachmentsView { - position: absolute; - width: 192px; - top: 0; - bottom: 0; - overflow: auto; - -webkit-overflow-scrolling: touch; - -webkit-user-select: none; - -moz-user-select: none; -} - -#outlineView { - padding: 4px 4px 0; -} -#attachmentsView { - padding: 3px 4px 0; -} - -html[dir='ltr'] .outlineWithDeepNesting > .outlineItem, -html[dir='ltr'] .outlineItem > .outlineItems { - margin-left: 20px; -} - -html[dir='rtl'] .outlineWithDeepNesting > .outlineItem, -html[dir='rtl'] .outlineItem > .outlineItems { - margin-right: 20px; -} - -.outlineItem > a, -.attachmentsItem > button { - text-decoration: none; - display: inline-block; - min-width: 95%; - min-width: calc(100% - 4px); /* Subtract the right padding (left, in RTL mode) - of the container. */ - height: auto; - margin-bottom: 1px; - border-radius: 2px; - color: hsla(0,0%,100%,.8); - font-size: 13px; - line-height: 15px; - -moz-user-select: none; - white-space: normal; -} - -.attachmentsItem > button { - border: 0 none; - background: none; - cursor: pointer; - width: 100%; -} - -html[dir='ltr'] .outlineItem > a { - padding: 2px 0 5px 4px; -} -html[dir='ltr'] .attachmentsItem > button { - padding: 2px 0 3px 7px; - text-align: left; -} - -html[dir='rtl'] .outlineItem > a { - padding: 2px 4px 5px 0; -} -html[dir='rtl'] .attachmentsItem > button { - padding: 2px 7px 3px 0; - text-align: right; -} - -.outlineItemToggler { - position: relative; - height: 0; - width: 0; - color: hsla(0,0%,100%,.5); -} -.outlineItemToggler::before { - content: url(images/treeitem-expanded.png); - display: inline-block; - position: absolute; -} -html[dir='ltr'] .outlineItemToggler.outlineItemsHidden::before { - content: url(images/treeitem-collapsed.png); -} -html[dir='rtl'] .outlineItemToggler.outlineItemsHidden::before { - content: url(images/treeitem-collapsed-rtl.png); -} -.outlineItemToggler.outlineItemsHidden ~ .outlineItems { - display: none; -} -html[dir='ltr'] .outlineItemToggler { - float: left; -} -html[dir='rtl'] .outlineItemToggler { - float: right; -} -html[dir='ltr'] .outlineItemToggler::before { - right: 4px; -} -html[dir='rtl'] .outlineItemToggler::before { - left: 4px; -} - -.outlineItemToggler:hover, -.outlineItemToggler:hover + a, -.outlineItemToggler:hover ~ .outlineItems, -.outlineItem > a:hover, -.attachmentsItem > button:hover { - background-color: hsla(0,0%,100%,.02); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.2) inset, - 0 0 1px hsla(0,0%,0%,.2); - border-radius: 2px; - color: hsla(0,0%,100%,.9); -} - -.outlineItem.selected { - background-color: hsla(0,0%,100%,.08); - background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); - background-clip: padding-box; - box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, - 0 0 1px hsla(0,0%,100%,.1) inset, - 0 0 1px hsla(0,0%,0%,.2); - color: hsla(0,0%,100%,1); -} - -.noResults { - font-size: 12px; - color: hsla(0,0%,100%,.8); - font-style: italic; - cursor: default; -} - -/* TODO: file FF bug to support ::-moz-selection:window-inactive - so we can override the opaque grey background when the window is inactive; - see https://bugzilla.mozilla.org/show_bug.cgi?id=706209 */ -::selection { background: rgba(0,0,255,0.3); } -::-moz-selection { background: rgba(0,0,255,0.3); } - -#errorWrapper { - background: none repeat scroll 0 0 #FF5555; - color: white; - left: 0; - position: absolute; - right: 0; - z-index: 1000; - padding: 3px; - font-size: 0.8em; -} -.loadingInProgress #errorWrapper { - top: 37px; -} - -#errorMessageLeft { - float: left; -} - -#errorMessageRight { - float: right; -} - -#errorMoreInfo { - background-color: #FFFFFF; - color: black; - padding: 3px; - margin: 3px; - width: 98%; -} - -.overlayButton { - width: auto; - margin: 3px 4px 2px 4px !important; - padding: 2px 6px 3px 6px; -} - -#overlayContainer { - display: table; - position: absolute; - width: 100%; - height: 100%; - background-color: hsla(0,0%,0%,.2); - z-index: 40000; -} -#overlayContainer > * { - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -#overlayContainer > .container { - display: table-cell; - vertical-align: middle; - text-align: center; -} - -#overlayContainer > .container > .dialog { - display: inline-block; - padding: 15px; - border-spacing: 4px; - color: hsl(0,0%,85%); - font-size: 12px; - line-height: 14px; - background-color: #474747; /* fallback */ - background-image: url(images/texture.png), - linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); - box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08), - inset 0 1px 1px hsla(0,0%,0%,.15), - inset 0 -1px 0 hsla(0,0%,100%,.05), - 0 1px 0 hsla(0,0%,0%,.15), - 0 1px 1px hsla(0,0%,0%,.1); - border: 1px solid hsla(0,0%,0%,.5); - border-radius: 4px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); -} - -.dialog > .row { - display: table-row; -} - -.dialog > .row > * { - display: table-cell; -} - -.dialog .toolbarField { - margin: 5px 0; -} - -.dialog .separator { - display: block; - margin: 4px 0 4px 0; - height: 1px; - width: 100%; - background-color: hsla(0,0%,0%,.5); - box-shadow: 0 0 0 1px hsla(0,0%,100%,.08); -} - -.dialog .buttonRow { - text-align: center; - vertical-align: middle; -} - -.dialog :link { - color: white; -} - -#passwordOverlay > .dialog { - text-align: center; -} -#passwordOverlay .toolbarField { - width: 200px; -} - -#documentPropertiesOverlay > .dialog { - text-align: left; -} -#documentPropertiesOverlay .row > * { - min-width: 100px; -} -html[dir='ltr'] #documentPropertiesOverlay .row > * { - text-align: left; -} -html[dir='rtl'] #documentPropertiesOverlay .row > * { - text-align: right; -} -#documentPropertiesOverlay .row > span { - width: 125px; - word-wrap: break-word; -} -#documentPropertiesOverlay .row > p { - max-width: 225px; - word-wrap: break-word; -} -#documentPropertiesOverlay .buttonRow { - margin-top: 10px; -} - -.clearBoth { - clear: both; -} - -.fileInput { - background: white; - color: black; - margin-top: 5px; - visibility: hidden; - position: fixed; - right: 0; - top: 0; -} - -#PDFBug { - background: none repeat scroll 0 0 white; - border: 1px solid #666666; - position: fixed; - top: 32px; - right: 0; - bottom: 0; - font-size: 10px; - padding: 0; - width: 300px; -} -#PDFBug .controls { - background:#EEEEEE; - border-bottom: 1px solid #666666; - padding: 3px; -} -#PDFBug .panels { - bottom: 0; - left: 0; - overflow: auto; - -webkit-overflow-scrolling: touch; - position: absolute; - right: 0; - top: 27px; -} -#PDFBug button.active { - font-weight: bold; -} -.debuggerShowText { - background: none repeat scroll 0 0 yellow; - color: blue; -} -.debuggerHideText:hover { - background: none repeat scroll 0 0 yellow; -} -#PDFBug .stats { - font-family: courier; - font-size: 10px; - white-space: pre; -} -#PDFBug .stats .title { - font-weight: bold; -} -#PDFBug table { - font-size: 10px; -} - -#viewer.textLayer-visible .textLayer > div, -#viewer.textLayer-hover .textLayer > div:hover { - background-color: white; - color: black; -} - -#viewer.textLayer-shadow .textLayer > div { - background-color: rgba(255,255,255, .6); - color: black; -} - -.grab-to-pan-grab { - cursor: url("images/grab.cur"), move !important; - cursor: -webkit-grab !important; - cursor: -moz-grab !important; - cursor: grab !important; -} -.grab-to-pan-grab *:not(input):not(textarea):not(button):not(select):not(:link) { - cursor: inherit !important; -} -.grab-to-pan-grab:active, -.grab-to-pan-grabbing { - cursor: url("images/grabbing.cur"), move !important; - cursor: -webkit-grabbing !important; - cursor: -moz-grabbing !important; - cursor: grabbing !important; - - position: fixed; - background: transparent; - display: block; - top: 0; - left: 0; - right: 0; - bottom: 0; - overflow: hidden; - z-index: 50000; /* should be higher than anything else in PDF.js! */ -} - -@page { - margin: 0; -} - -#printContainer { - display: none; -} - -@media screen and (min-resolution: 2dppx) { - /* Rules for Retina screens */ - .toolbarButton::before { - -webkit-transform: scale(0.5); - transform: scale(0.5); - top: -5px; - } - - .secondaryToolbarButton::before { - -webkit-transform: scale(0.5); - transform: scale(0.5); - top: -4px; - } - - html[dir='ltr'] .toolbarButton::before, - html[dir='rtl'] .toolbarButton::before { - left: -1px; - } - - html[dir='ltr'] .secondaryToolbarButton::before { - left: -2px; - } - html[dir='rtl'] .secondaryToolbarButton::before { - left: 186px; - } - - .toolbarField.pageNumber.visiblePageIsLoading, - #findInput[data-status="pending"] { - background-image: url(images/loading-small@2x.png); - background-size: 16px 17px; - } - - .dropdownToolbarButton { - background: url(images/toolbarButton-menuArrows@2x.png) no-repeat; - background-size: 7px 16px; - } - - html[dir='ltr'] .toolbarButton#sidebarToggle::before { - content: url(images/toolbarButton-sidebarToggle@2x.png); - } - html[dir='rtl'] .toolbarButton#sidebarToggle::before { - content: url(images/toolbarButton-sidebarToggle-rtl@2x.png); - } - - html[dir='ltr'] .toolbarButton#secondaryToolbarToggle::before { - content: url(images/toolbarButton-secondaryToolbarToggle@2x.png); - } - html[dir='rtl'] .toolbarButton#secondaryToolbarToggle::before { - content: url(images/toolbarButton-secondaryToolbarToggle-rtl@2x.png); - } - - html[dir='ltr'] .toolbarButton.findPrevious::before { - content: url(images/findbarButton-previous@2x.png); - } - html[dir='rtl'] .toolbarButton.findPrevious::before { - content: url(images/findbarButton-previous-rtl@2x.png); - } - - html[dir='ltr'] .toolbarButton.findNext::before { - content: url(images/findbarButton-next@2x.png); - } - html[dir='rtl'] .toolbarButton.findNext::before { - content: url(images/findbarButton-next-rtl@2x.png); - } - - html[dir='ltr'] .toolbarButton.pageUp::before { - content: url(images/toolbarButton-pageUp@2x.png); - } - html[dir='rtl'] .toolbarButton.pageUp::before { - content: url(images/toolbarButton-pageUp-rtl@2x.png); - } - - html[dir='ltr'] .toolbarButton.pageDown::before { - content: url(images/toolbarButton-pageDown@2x.png); - } - html[dir='rtl'] .toolbarButton.pageDown::before { - content: url(images/toolbarButton-pageDown-rtl@2x.png); - } - - .toolbarButton.zoomIn::before { - content: url(images/toolbarButton-zoomIn@2x.png); - } - - .toolbarButton.zoomOut::before { - content: url(images/toolbarButton-zoomOut@2x.png); - } - - .toolbarButton.presentationMode::before, - .secondaryToolbarButton.presentationMode::before { - content: url(images/toolbarButton-presentationMode@2x.png); - } - - .toolbarButton.print::before, - .secondaryToolbarButton.print::before { - content: url(images/toolbarButton-print@2x.png); - } - - .toolbarButton.openFile::before, - .secondaryToolbarButton.openFile::before { - content: url(images/toolbarButton-openFile@2x.png); - } - - .toolbarButton.download::before, - .secondaryToolbarButton.download::before { - content: url(images/toolbarButton-download@2x.png); - } - - .toolbarButton.bookmark::before, - .secondaryToolbarButton.bookmark::before { - content: url(images/toolbarButton-bookmark@2x.png); - } - - #viewThumbnail.toolbarButton::before { - content: url(images/toolbarButton-viewThumbnail@2x.png); - } - - html[dir="ltr"] #viewOutline.toolbarButton::before { - content: url(images/toolbarButton-viewOutline@2x.png); - } - html[dir="rtl"] #viewOutline.toolbarButton::before { - content: url(images/toolbarButton-viewOutline-rtl@2x.png); - } - - #viewAttachments.toolbarButton::before { - content: url(images/toolbarButton-viewAttachments@2x.png); - } - - #viewFind.toolbarButton::before { - content: url(images/toolbarButton-search@2x.png); - } - - .secondaryToolbarButton.firstPage::before { - content: url(images/secondaryToolbarButton-firstPage@2x.png); - } - - .secondaryToolbarButton.lastPage::before { - content: url(images/secondaryToolbarButton-lastPage@2x.png); - } - - .secondaryToolbarButton.rotateCcw::before { - content: url(images/secondaryToolbarButton-rotateCcw@2x.png); - } - - .secondaryToolbarButton.rotateCw::before { - content: url(images/secondaryToolbarButton-rotateCw@2x.png); - } - - .secondaryToolbarButton.handTool::before { - content: url(images/secondaryToolbarButton-handTool@2x.png); - } - - .secondaryToolbarButton.documentProperties::before { - content: url(images/secondaryToolbarButton-documentProperties@2x.png); - } - - .outlineItemToggler::before { - -webkit-transform: scale(0.5); - transform: scale(0.5); - top: -1px; - content: url(images/treeitem-expanded@2x.png); - } - html[dir='ltr'] .outlineItemToggler.outlineItemsHidden::before { - content: url(images/treeitem-collapsed@2x.png); - } - html[dir='rtl'] .outlineItemToggler.outlineItemsHidden::before { - content: url(images/treeitem-collapsed-rtl@2x.png); - } - html[dir='ltr'] .outlineItemToggler::before { - right: 0; - } - html[dir='rtl'] .outlineItemToggler::before { - left: 0; - } -} - -@media print { - /* General rules for printing. */ - body { - background: transparent none; - } - - /* Rules for browsers that don't support mozPrintCallback. */ - #sidebarContainer, #secondaryToolbar, .toolbar, #loadingBox, #errorWrapper, .textLayer { - display: none; - } - #viewerContainer { - overflow: visible; - } - - #mainContainer, #viewerContainer, .page, .page canvas { - position: static; - padding: 0; - margin: 0; - } - - .page { - float: left; - display: none; - border: none; - box-shadow: none; - background-clip: content-box; - background-color: white; - } - - .page[data-loaded] { - display: block; - } - - .fileInput { - display: none; - } - - /* Rules for browsers that support mozPrintCallback */ - body[data-mozPrintCallback] #outerContainer { - display: none; - } - body[data-mozPrintCallback] #printContainer { - display: block; - } - /* wrapper around (scaled) print canvas elements */ - #printContainer > div { - position: relative; - top: 0; - left: 0; - overflow: hidden; - } - #printContainer canvas { - display: block; - } -} - -.visibleLargeView, -.visibleMediumView, -.visibleSmallView { - display: none; -} - -@media all and (max-width: 960px) { - html[dir='ltr'] #outerContainer.sidebarMoving .outerCenter, - html[dir='ltr'] #outerContainer.sidebarOpen .outerCenter { - float: left; - left: 205px; - } - html[dir='rtl'] #outerContainer.sidebarMoving .outerCenter, - html[dir='rtl'] #outerContainer.sidebarOpen .outerCenter { - float: right; - right: 205px; - } -} - -@media all and (max-width: 900px) { - .sidebarOpen .hiddenLargeView { - display: none; - } - .sidebarOpen .visibleLargeView { - display: inherit; - } -} - -@media all and (max-width: 860px) { - .sidebarOpen .hiddenMediumView { - display: none; - } - .sidebarOpen .visibleMediumView { - display: inherit; - } -} - -@media all and (max-width: 770px) { - #sidebarContainer { - top: 32px; - z-index: 100; - } - .loadingInProgress #sidebarContainer { - top: 37px; - } - #sidebarContent { - top: 32px; - background-color: hsla(0,0%,0%,.7); - } - - html[dir='ltr'] #outerContainer.sidebarOpen > #mainContainer { - left: 0px; - } - html[dir='rtl'] #outerContainer.sidebarOpen > #mainContainer { - right: 0px; - } - - html[dir='ltr'] .outerCenter { - float: left; - left: 205px; - } - html[dir='rtl'] .outerCenter { - float: right; - right: 205px; - } - - #outerContainer .hiddenLargeView, - #outerContainer .hiddenMediumView { - display: inherit; - } - #outerContainer .visibleLargeView, - #outerContainer .visibleMediumView { - display: none; - } -} - -@media all and (max-width: 700px) { - #outerContainer .hiddenLargeView { - display: none; - } - #outerContainer .visibleLargeView { - display: inherit; - } -} - -@media all and (max-width: 660px) { - #outerContainer .hiddenMediumView { - display: none; - } - #outerContainer .visibleMediumView { - display: inherit; - } -} - -@media all and (max-width: 600px) { - .hiddenSmallView { - display: none; - } - .visibleSmallView { - display: inherit; - } - html[dir='ltr'] #outerContainer.sidebarMoving .outerCenter, - html[dir='ltr'] #outerContainer.sidebarOpen .outerCenter, - html[dir='ltr'] .outerCenter { - left: 156px; - } - html[dir='rtl'] #outerContainer.sidebarMoving .outerCenter, - html[dir='rtl'] #outerContainer.sidebarOpen .outerCenter, - html[dir='rtl'] .outerCenter { - right: 156px; - } - .toolbarButtonSpacer { - width: 0; - } -} - -@media all and (max-width: 510px) { - #scaleSelectContainer, #pageNumberLabel { - display: none; - } -} diff --git a/public/pdfjs/web/viewer.html b/public/pdfjs/web/viewer.html deleted file mode 100644 index 211de6b8..00000000 --- a/public/pdfjs/web/viewer.html +++ /dev/null @@ -1,423 +0,0 @@ -<!DOCTYPE html> -<!-- -Copyright 2012 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. - -Adobe CMap resources are covered by their own copyright but the same license: - - Copyright 1990-2015 Adobe Systems Incorporated. - -See https://github.com/adobe-type-tools/cmap-resources ---> -<html dir="ltr" mozdisallowselectionprint moznomarginboxes> - <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> - <meta name="google" content="notranslate"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <title>PDF.js viewer</title> - - - <link rel="stylesheet" href="viewer.css"/> - - <script src="compatibility.js"></script> - - - -<!-- This snippet is used in production (included from viewer.html) --> -<link rel="resource" type="application/l10n" href="locale/locale.properties"/> -<script src="l10n.js"></script> -<script src="../build/pdf.js"></script> - - - - <script src="debugger.js"></script> - <script src="viewer.js"></script> - - </head> - - <body tabindex="1" class="loadingInProgress"> - <div id="outerContainer"> - - <div id="sidebarContainer"> - <div id="toolbarSidebar"> - <div class="splitToolbarButton toggled"> - <button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs"> - <span data-l10n-id="thumbs_label">Thumbnails</span> - </button> - <button id="viewOutline" class="toolbarButton group" title="Show Document Outline" tabindex="3" data-l10n-id="outline"> - <span data-l10n-id="outline_label">Document Outline</span> - </button> - <button id="viewAttachments" class="toolbarButton group" title="Show Attachments" tabindex="4" data-l10n-id="attachments"> - <span data-l10n-id="attachments_label">Attachments</span> - </button> - </div> - </div> - <div id="sidebarContent"> - <div id="thumbnailView"> - </div> - <div id="outlineView" class="hidden"> - </div> - <div id="attachmentsView" class="hidden"> - </div> - </div> - </div> <!-- sidebarContainer --> - - <div id="mainContainer"> - <div class="findbar hidden doorHanger hiddenSmallView" id="findbar"> - <label for="findInput" class="toolbarLabel" data-l10n-id="find_label">Find:</label> - <input id="findInput" class="toolbarField" tabindex="91"> - <div class="splitToolbarButton"> - <button class="toolbarButton findPrevious" title="" id="findPrevious" tabindex="92" data-l10n-id="find_previous"> - <span data-l10n-id="find_previous_label">Previous</span> - </button> - <div class="splitToolbarButtonSeparator"></div> - <button class="toolbarButton findNext" title="" id="findNext" tabindex="93" data-l10n-id="find_next"> - <span data-l10n-id="find_next_label">Next</span> - </button> - </div> - <input type="checkbox" id="findHighlightAll" class="toolbarField" tabindex="94"> - <label for="findHighlightAll" class="toolbarLabel" data-l10n-id="find_highlight">Highlight all</label> - <input type="checkbox" id="findMatchCase" class="toolbarField" tabindex="95"> - <label for="findMatchCase" class="toolbarLabel" data-l10n-id="find_match_case_label">Match case</label> - <span id="findResultsCount" class="toolbarLabel hidden"></span> - <span id="findMsg" class="toolbarLabel"></span> - </div> <!-- findbar --> - - <div id="secondaryToolbar" class="secondaryToolbar hidden doorHangerRight"> - <div id="secondaryToolbarButtonContainer"> - <button id="secondaryPresentationMode" class="secondaryToolbarButton presentationMode visibleLargeView" title="Switch to Presentation Mode" tabindex="51" data-l10n-id="presentation_mode"> - <span data-l10n-id="presentation_mode_label">Presentation Mode</span> - </button> - - <button id="secondaryOpenFile" class="secondaryToolbarButton openFile visibleLargeView" title="Open File" tabindex="52" data-l10n-id="open_file"> - <span data-l10n-id="open_file_label">Open</span> - </button> - - <button id="secondaryPrint" class="secondaryToolbarButton print visibleMediumView" title="Print" tabindex="53" data-l10n-id="print"> - <span data-l10n-id="print_label">Print</span> - </button> - - <button id="secondaryDownload" class="secondaryToolbarButton download visibleMediumView" title="Download" tabindex="54" data-l10n-id="download"> - <span data-l10n-id="download_label">Download</span> - </button> - - <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark visibleSmallView" title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark"> - <span data-l10n-id="bookmark_label">Current View</span> - </a> - - <div class="horizontalToolbarSeparator visibleLargeView"></div> - - <button id="firstPage" class="secondaryToolbarButton firstPage" title="Go to First Page" tabindex="56" data-l10n-id="first_page"> - <span data-l10n-id="first_page_label">Go to First Page</span> - </button> - <button id="lastPage" class="secondaryToolbarButton lastPage" title="Go to Last Page" tabindex="57" data-l10n-id="last_page"> - <span data-l10n-id="last_page_label">Go to Last Page</span> - </button> - - <div class="horizontalToolbarSeparator"></div> - - <button id="pageRotateCw" class="secondaryToolbarButton rotateCw" title="Rotate Clockwise" tabindex="58" data-l10n-id="page_rotate_cw"> - <span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span> - </button> - <button id="pageRotateCcw" class="secondaryToolbarButton rotateCcw" title="Rotate Counterclockwise" tabindex="59" data-l10n-id="page_rotate_ccw"> - <span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span> - </button> - - <div class="horizontalToolbarSeparator"></div> - - <button id="toggleHandTool" class="secondaryToolbarButton handTool" title="Enable hand tool" tabindex="60" data-l10n-id="hand_tool_enable"> - <span data-l10n-id="hand_tool_enable_label">Enable hand tool</span> - </button> - - <div class="horizontalToolbarSeparator"></div> - - <button id="documentProperties" class="secondaryToolbarButton documentProperties" title="Document Properties…" tabindex="61" data-l10n-id="document_properties"> - <span data-l10n-id="document_properties_label">Document Properties…</span> - </button> - </div> - </div> <!-- secondaryToolbar --> - - <div class="toolbar"> - <div id="toolbarContainer"> - <div id="toolbarViewer"> - <div id="toolbarViewerLeft"> - <button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="11" data-l10n-id="toggle_sidebar"> - <span data-l10n-id="toggle_sidebar_label">Toggle Sidebar</span> - </button> - <div class="toolbarButtonSpacer"></div> - <button id="viewFind" class="toolbarButton group hiddenSmallView" title="Find in Document" tabindex="12" data-l10n-id="findbar"> - <span data-l10n-id="findbar_label">Find</span> - </button> - <div class="splitToolbarButton"> - <button class="toolbarButton pageUp" title="Previous Page" id="previous" tabindex="13" data-l10n-id="previous"> - <span data-l10n-id="previous_label">Previous</span> - </button> - <div class="splitToolbarButtonSeparator"></div> - <button class="toolbarButton pageDown" title="Next Page" id="next" tabindex="14" data-l10n-id="next"> - <span data-l10n-id="next_label">Next</span> - </button> - </div> - <label id="pageNumberLabel" class="toolbarLabel" for="pageNumber" data-l10n-id="page_label">Page: </label> - <input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1" tabindex="15"> - <span id="numPages" class="toolbarLabel"></span> - </div> - <div id="toolbarViewerRight"> - <button id="presentationMode" class="toolbarButton presentationMode hiddenLargeView" title="Switch to Presentation Mode" tabindex="31" data-l10n-id="presentation_mode"> - <span data-l10n-id="presentation_mode_label">Presentation Mode</span> - </button> - - <button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file"> - <span data-l10n-id="open_file_label">Open</span> - </button> - - <button id="print" class="toolbarButton print hiddenMediumView" title="Print" tabindex="33" data-l10n-id="print"> - <span data-l10n-id="print_label">Print</span> - </button> - - <button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="34" data-l10n-id="download"> - <span data-l10n-id="download_label">Download</span> - </button> - <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="35" data-l10n-id="bookmark"> - <span data-l10n-id="bookmark_label">Current View</span> - </a> - - <div class="verticalToolbarSeparator hiddenSmallView"></div> - - <button id="secondaryToolbarToggle" class="toolbarButton" title="Tools" tabindex="36" data-l10n-id="tools"> - <span data-l10n-id="tools_label">Tools</span> - </button> - </div> - <div class="outerCenter"> - <div class="innerCenter" id="toolbarViewerMiddle"> - <div class="splitToolbarButton"> - <button id="zoomOut" class="toolbarButton zoomOut" title="Zoom Out" tabindex="21" data-l10n-id="zoom_out"> - <span data-l10n-id="zoom_out_label">Zoom Out</span> - </button> - <div class="splitToolbarButtonSeparator"></div> - <button id="zoomIn" class="toolbarButton zoomIn" title="Zoom In" tabindex="22" data-l10n-id="zoom_in"> - <span data-l10n-id="zoom_in_label">Zoom In</span> - </button> - </div> - <span id="scaleSelectContainer" class="dropdownToolbarButton"> - <select id="scaleSelect" title="Zoom" tabindex="23" data-l10n-id="zoom"> - <option id="pageAutoOption" title="" value="auto" selected="selected" data-l10n-id="page_scale_auto">Automatic Zoom</option> - <option id="pageActualOption" title="" value="page-actual" data-l10n-id="page_scale_actual">Actual Size</option> - <option id="pageFitOption" title="" value="page-fit" data-l10n-id="page_scale_fit">Fit Page</option> - <option id="pageWidthOption" title="" value="page-width" data-l10n-id="page_scale_width">Full Width</option> - <option id="customScaleOption" title="" value="custom"></option> - <option title="" value="0.5" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 50 }'>50%</option> - <option title="" value="0.75" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 75 }'>75%</option> - <option title="" value="1" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 100 }'>100%</option> - <option title="" value="1.25" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 125 }'>125%</option> - <option title="" value="1.5" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 150 }'>150%</option> - <option title="" value="2" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 200 }'>200%</option> - <option title="" value="3" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 300 }'>300%</option> - <option title="" value="4" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 400 }'>400%</option> - </select> - </span> - </div> - </div> - </div> - <div id="loadingBar"> - <div class="progress"> - <div class="glimmer"> - </div> - </div> - </div> - </div> - </div> - - <menu type="context" id="viewerContextMenu"> - <menuitem id="contextFirstPage" label="First Page" - data-l10n-id="first_page"></menuitem> - <menuitem id="contextLastPage" label="Last Page" - data-l10n-id="last_page"></menuitem> - <menuitem id="contextPageRotateCw" label="Rotate Clockwise" - data-l10n-id="page_rotate_cw"></menuitem> - <menuitem id="contextPageRotateCcw" label="Rotate Counter-Clockwise" - data-l10n-id="page_rotate_ccw"></menuitem> - </menu> - - <div id="viewerContainer" tabindex="0"> - <div id="viewer" class="pdfViewer"></div> - </div> - - <div id="errorWrapper" hidden='true'> - <div id="errorMessageLeft"> - <span id="errorMessage"></span> - <button id="errorShowMore" data-l10n-id="error_more_info"> - More Information - </button> - <button id="errorShowLess" data-l10n-id="error_less_info" hidden='true'> - Less Information - </button> - </div> - <div id="errorMessageRight"> - <button id="errorClose" data-l10n-id="error_close"> - Close - </button> - </div> - <div class="clearBoth"></div> - <textarea id="errorMoreInfo" hidden='true' readonly="readonly"></textarea> - </div> - </div> <!-- mainContainer --> - - <div id="overlayContainer" class="hidden"> - <div id="passwordOverlay" class="container hidden"> - <div class="dialog"> - <div class="row"> - <p id="passwordText" data-l10n-id="password_label">Enter the password to open this PDF file:</p> - </div> - <div class="row"> - <input type="password" id="password" class="toolbarField" /> - </div> - <div class="buttonRow"> - <button id="passwordCancel" class="overlayButton"><span data-l10n-id="password_cancel">Cancel</span></button> - <button id="passwordSubmit" class="overlayButton"><span data-l10n-id="password_ok">OK</span></button> - </div> - </div> - </div> - <div id="documentPropertiesOverlay" class="container hidden"> - <div class="dialog"> - <div class="row"> - <span data-l10n-id="document_properties_file_name">File name:</span> <p id="fileNameField">-</p> - </div> - <div class="row"> - <span data-l10n-id="document_properties_file_size">File size:</span> <p id="fileSizeField">-</p> - </div> - <div class="separator"></div> - <div class="row"> - <span data-l10n-id="document_properties_title">Title:</span> <p id="titleField">-</p> - </div> - <div class="row"> - <span data-l10n-id="document_properties_author">Author:</span> <p id="authorField">-</p> - </div> - <div class="row"> - <span data-l10n-id="document_properties_subject">Subject:</span> <p id="subjectField">-</p> - </div> - <div class="row"> - <span data-l10n-id="document_properties_keywords">Keywords:</span> <p id="keywordsField">-</p> - </div> - <div class="row"> - <span data-l10n-id="document_properties_creation_date">Creation Date:</span> <p id="creationDateField">-</p> - </div> - <div class="row"> - <span data-l10n-id="document_properties_modification_date">Modification Date:</span> <p id="modificationDateField">-</p> - </div> - <div class="row"> - <span data-l10n-id="document_properties_creator">Creator:</span> <p id="creatorField">-</p> - </div> - <div class="separator"></div> - <div class="row"> - <span data-l10n-id="document_properties_producer">PDF Producer:</span> <p id="producerField">-</p> - </div> - <div class="row"> - <span data-l10n-id="document_properties_version">PDF Version:</span> <p id="versionField">-</p> - </div> - <div class="row"> - <span data-l10n-id="document_properties_page_count">Page Count:</span> <p id="pageCountField">-</p> - </div> - <div class="buttonRow"> - <button id="documentPropertiesClose" class="overlayButton"><span data-l10n-id="document_properties_close">Close</span></button> - </div> - </div> - </div> - </div> <!-- overlayContainer --> - - </div> <!-- outerContainer --> - <div id="printContainer"></div> -<div id="mozPrintCallback-shim" hidden> - <style> -@media print { - #printContainer div { - page-break-after: always; - page-break-inside: avoid; - } -} - </style> - <style scoped> -#mozPrintCallback-shim { - position: fixed; - top: 0; - left: 0; - height: 100%; - width: 100%; - z-index: 9999999; - - display: block; - text-align: center; - background-color: rgba(0, 0, 0, 0.5); -} -#mozPrintCallback-shim[hidden] { - display: none; -} -@media print { - #mozPrintCallback-shim { - display: none; - } -} - -#mozPrintCallback-shim .mozPrintCallback-dialog-box { - display: inline-block; - margin: -50px auto 0; - position: relative; - top: 45%; - left: 0; - min-width: 220px; - max-width: 400px; - - padding: 9px; - - border: 1px solid hsla(0, 0%, 0%, .5); - border-radius: 2px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); - - background-color: #474747; - - color: hsl(0, 0%, 85%); - font-size: 16px; - line-height: 20px; -} -#mozPrintCallback-shim .progress-row { - clear: both; - padding: 1em 0; -} -#mozPrintCallback-shim progress { - width: 100%; -} -#mozPrintCallback-shim .relative-progress { - clear: both; - float: right; -} -#mozPrintCallback-shim .progress-actions { - clear: both; -} - </style> - <div class="mozPrintCallback-dialog-box"> - <!-- TODO: Localise the following strings --> - Preparing document for printing... - <div class="progress-row"> - <progress value="0" max="100"></progress> - <span class="relative-progress">0%</span> - </div> - <div class="progress-actions"> - <input type="button" value="Cancel" class="mozPrintCallback-cancel"> - </div> - </div> -</div> - - </body> -</html> - diff --git a/public/pdfjs/web/viewer.js b/public/pdfjs/web/viewer.js deleted file mode 100644 index 135a2e5a..00000000 --- a/public/pdfjs/web/viewer.js +++ /dev/null @@ -1,8197 +0,0 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ -/* Copyright 2012 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. - */ -/* globals PDFJS, PDFBug, FirefoxCom, Stats, Cache, ProgressBar, - DownloadManager, getFileName, getPDFFileNameFromURL, - PDFHistory, Preferences, SidebarView, ViewHistory, Stats, - PDFThumbnailViewer, URL, noContextMenuHandler, SecondaryToolbar, - PasswordPrompt, PDFPresentationMode, PDFDocumentProperties, HandTool, - Promise, PDFLinkService, PDFOutlineView, PDFAttachmentView, - OverlayManager, PDFFindController, PDFFindBar, PDFViewer, - PDFRenderingQueue, PresentationModeState, parseQueryString, - RenderingStates, UNKNOWN_SCALE, DEFAULT_SCALE_VALUE, - IGNORE_CURRENT_POSITION_ON_ZOOM: true */ - -'use strict'; - -var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf'; -var DEFAULT_SCALE_DELTA = 1.1; -var MIN_SCALE = 0.25; -var MAX_SCALE = 10.0; -var SCALE_SELECT_CONTAINER_PADDING = 8; -var SCALE_SELECT_PADDING = 22; -var PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading'; -var DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; - -PDFJS.imageResourcesPath = './images/'; - PDFJS.workerSrc = '../build/pdf.worker.js'; - PDFJS.cMapUrl = '../web/cmaps/'; - PDFJS.cMapPacked = true; - -var mozL10n = document.mozL10n || document.webL10n; - - -var CSS_UNITS = 96.0 / 72.0; -var DEFAULT_SCALE_VALUE = 'auto'; -var DEFAULT_SCALE = 1.0; -var UNKNOWN_SCALE = 0; -var MAX_AUTO_SCALE = 1.25; -var SCROLLBAR_PADDING = 40; -var VERTICAL_PADDING = 5; - -// optimised CSS custom property getter/setter -var CustomStyle = (function CustomStyleClosure() { - - // As noted on: http://www.zachstronaut.com/posts/2009/02/17/ - // animate-css-transforms-firefox-webkit.html - // in some versions of IE9 it is critical that ms appear in this list - // before Moz - var prefixes = ['ms', 'Moz', 'Webkit', 'O']; - var _cache = {}; - - function CustomStyle() {} - - CustomStyle.getProp = function get(propName, element) { - // check cache only when no element is given - if (arguments.length === 1 && typeof _cache[propName] === 'string') { - return _cache[propName]; - } - - element = element || document.documentElement; - var style = element.style, prefixed, uPropName; - - // test standard property first - if (typeof style[propName] === 'string') { - return (_cache[propName] = propName); - } - - // capitalize - uPropName = propName.charAt(0).toUpperCase() + propName.slice(1); - - // test vendor specific properties - for (var i = 0, l = prefixes.length; i < l; i++) { - prefixed = prefixes[i] + uPropName; - if (typeof style[prefixed] === 'string') { - return (_cache[propName] = prefixed); - } - } - - //if all fails then set to undefined - return (_cache[propName] = 'undefined'); - }; - - CustomStyle.setProp = function set(propName, element, str) { - var prop = this.getProp(propName); - if (prop !== 'undefined') { - element.style[prop] = str; - } - }; - - return CustomStyle; -})(); - -var NullCharactersRegExp = /\x00/g; - -function removeNullCharacters(str) { - return str.replace(NullCharactersRegExp, ''); -} - -function getFileName(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); -} - -/** - * Returns scale factor for the canvas. It makes sense for the HiDPI displays. - * @return {Object} The object with horizontal (sx) and vertical (sy) - scales. The scaled property is set to false if scaling is - not required, true otherwise. - */ -function getOutputScale(ctx) { - var devicePixelRatio = window.devicePixelRatio || 1; - var backingStoreRatio = ctx.webkitBackingStorePixelRatio || - ctx.mozBackingStorePixelRatio || - ctx.msBackingStorePixelRatio || - ctx.oBackingStorePixelRatio || - ctx.backingStorePixelRatio || 1; - var pixelRatio = devicePixelRatio / backingStoreRatio; - return { - sx: pixelRatio, - sy: pixelRatio, - scaled: pixelRatio !== 1 - }; -} - -/** - * Scrolls specified element into view of its parent. - * @param {Object} element - The element to be visible. - * @param {Object} spot - An object with optional top and left properties, - * specifying the offset from the top left edge. - * @param {boolean} skipOverflowHiddenElements - Ignore elements that have - * the CSS rule `overflow: hidden;` set. The default is false. - */ -function scrollIntoView(element, spot, skipOverflowHiddenElements) { - // Assuming offsetParent is available (it's not available when viewer is in - // hidden iframe or object). We have to scroll: if the offsetParent is not set - // producing the error. See also animationStartedClosure. - var parent = element.offsetParent; - if (!parent) { - console.error('offsetParent is not set -- cannot scroll'); - return; - } - var checkOverflow = skipOverflowHiddenElements || false; - var offsetY = element.offsetTop + element.clientTop; - var offsetX = element.offsetLeft + element.clientLeft; - while (parent.clientHeight === parent.scrollHeight || - (checkOverflow && getComputedStyle(parent).overflow === 'hidden')) { - if (parent.dataset._scaleY) { - offsetY /= parent.dataset._scaleY; - offsetX /= parent.dataset._scaleX; - } - offsetY += parent.offsetTop; - offsetX += parent.offsetLeft; - parent = parent.offsetParent; - if (!parent) { - return; // no need to scroll - } - } - if (spot) { - if (spot.top !== undefined) { - offsetY += spot.top; - } - if (spot.left !== undefined) { - offsetX += spot.left; - parent.scrollLeft = offsetX; - } - } - parent.scrollTop = offsetY; -} - -/** - * Helper function to start monitoring the scroll event and converting them into - * PDF.js friendly one: with scroll debounce and scroll direction. - */ -function watchScroll(viewAreaElement, callback) { - var debounceScroll = function debounceScroll(evt) { - if (rAF) { - return; - } - // schedule an invocation of scroll for next animation frame. - rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { - rAF = null; - - var currentY = viewAreaElement.scrollTop; - var lastY = state.lastY; - if (currentY !== lastY) { - state.down = currentY > lastY; - } - state.lastY = currentY; - callback(state); - }); - }; - - var state = { - down: true, - lastY: viewAreaElement.scrollTop, - _eventHandler: debounceScroll - }; - - var rAF = null; - viewAreaElement.addEventListener('scroll', debounceScroll, true); - return state; -} - -/** - * Helper function to parse query string (e.g. ?param1=value&parm2=...). - */ -function parseQueryString(query) { - var parts = query.split('&'); - var params = {}; - for (var i = 0, ii = parts.length; i < ii; ++i) { - var param = parts[i].split('='); - var key = param[0].toLowerCase(); - var value = param.length > 1 ? param[1] : null; - params[decodeURIComponent(key)] = decodeURIComponent(value); - } - return params; -} - -/** - * Use binary search to find the index of the first item in a given array which - * passes a given condition. The items are expected to be sorted in the sense - * that if the condition is true for one item in the array, then it is also true - * for all following items. - * - * @returns {Number} Index of the first array element to pass the test, - * or |items.length| if no such element exists. - */ -function binarySearchFirstItem(items, condition) { - var minIndex = 0; - var maxIndex = items.length - 1; - - if (items.length === 0 || !condition(items[maxIndex])) { - return items.length; - } - if (condition(items[minIndex])) { - return minIndex; - } - - while (minIndex < maxIndex) { - var currentIndex = (minIndex + maxIndex) >> 1; - var currentItem = items[currentIndex]; - if (condition(currentItem)) { - maxIndex = currentIndex; - } else { - minIndex = currentIndex + 1; - } - } - return minIndex; /* === maxIndex */ -} - -/** - * Approximates float number as a fraction using Farey sequence (max order - * of 8). - * @param {number} x - Positive float number. - * @returns {Array} Estimated fraction: the first array item is a numerator, - * the second one is a denominator. - */ -function approximateFraction(x) { - // Fast paths for int numbers or their inversions. - if (Math.floor(x) === x) { - return [x, 1]; - } - var xinv = 1 / x; - var limit = 8; - if (xinv > limit) { - return [1, limit]; - } else if (Math.floor(xinv) === xinv) { - return [1, xinv]; - } - - var x_ = x > 1 ? xinv : x; - // a/b and c/d are neighbours in Farey sequence. - var a = 0, b = 1, c = 1, d = 1; - // Limiting search to order 8. - while (true) { - // Generating next term in sequence (order of q). - var p = a + c, q = b + d; - if (q > limit) { - break; - } - if (x_ <= p / q) { - c = p; d = q; - } else { - a = p; b = q; - } - } - // Select closest of the neighbours to x. - if (x_ - a / b < c / d - x_) { - return x_ === x ? [a, b] : [b, a]; - } else { - return x_ === x ? [c, d] : [d, c]; - } -} - -function roundToDivide(x, div) { - var r = x % div; - return r === 0 ? x : Math.round(x - r + div); -} - -/** - * Generic helper to find out what elements are visible within a scroll pane. - */ -function getVisibleElements(scrollEl, views, sortByVisibility) { - var top = scrollEl.scrollTop, bottom = top + scrollEl.clientHeight; - var left = scrollEl.scrollLeft, right = left + scrollEl.clientWidth; - - function isElementBottomBelowViewTop(view) { - var element = view.div; - var elementBottom = - element.offsetTop + element.clientTop + element.clientHeight; - return elementBottom > top; - } - - var visible = [], view, element; - var currentHeight, viewHeight, hiddenHeight, percentHeight; - var currentWidth, viewWidth; - var firstVisibleElementInd = (views.length === 0) ? 0 : - binarySearchFirstItem(views, isElementBottomBelowViewTop); - - for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) { - view = views[i]; - element = view.div; - currentHeight = element.offsetTop + element.clientTop; - viewHeight = element.clientHeight; - - if (currentHeight > bottom) { - break; - } - - currentWidth = element.offsetLeft + element.clientLeft; - viewWidth = element.clientWidth; - if (currentWidth + viewWidth < left || currentWidth > right) { - continue; - } - hiddenHeight = Math.max(0, top - currentHeight) + - Math.max(0, currentHeight + viewHeight - bottom); - percentHeight = ((viewHeight - hiddenHeight) * 100 / viewHeight) | 0; - - visible.push({ - id: view.id, - x: currentWidth, - y: currentHeight, - view: view, - percent: percentHeight - }); - } - - var first = visible[0]; - var last = visible[visible.length - 1]; - - if (sortByVisibility) { - visible.sort(function(a, b) { - var pc = a.percent - b.percent; - if (Math.abs(pc) > 0.001) { - return -pc; - } - return a.id - b.id; // ensure stability - }); - } - return {first: first, last: last, views: visible}; -} - -/** - * Event handler to suppress context menu. - */ -function noContextMenuHandler(e) { - e.preventDefault(); -} - -/** - * Returns the filename or guessed filename from the url (see issue 3455). - * url {String} The original PDF location. - * @return {String} Guessed PDF file name. - */ -function getPDFFileNameFromURL(url) { - var reURI = /^(?:([^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; - // SCHEME HOST 1.PATH 2.QUERY 3.REF - // Pattern to get last matching NAME.pdf - var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i; - var splitURI = reURI.exec(url); - var suggestedFilename = reFilename.exec(splitURI[1]) || - reFilename.exec(splitURI[2]) || - reFilename.exec(splitURI[3]); - if (suggestedFilename) { - suggestedFilename = suggestedFilename[0]; - if (suggestedFilename.indexOf('%') !== -1) { - // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf - try { - suggestedFilename = - reFilename.exec(decodeURIComponent(suggestedFilename))[0]; - } catch(e) { // Possible (extremely rare) errors: - // URIError "Malformed URI", e.g. for "%AA.pdf" - // TypeError "null has no properties", e.g. for "%2F.pdf" - } - } - } - return suggestedFilename || 'document.pdf'; -} - -var ProgressBar = (function ProgressBarClosure() { - - function clamp(v, min, max) { - return Math.min(Math.max(v, min), max); - } - - function ProgressBar(id, opts) { - this.visible = true; - - // Fetch the sub-elements for later. - this.div = document.querySelector(id + ' .progress'); - - // Get the loading bar element, so it can be resized to fit the viewer. - this.bar = this.div.parentNode; - - // Get options, with sensible defaults. - this.height = opts.height || 100; - this.width = opts.width || 100; - this.units = opts.units || '%'; - - // Initialize heights. - this.div.style.height = this.height + this.units; - this.percent = 0; - } - - ProgressBar.prototype = { - - updateBar: function ProgressBar_updateBar() { - if (this._indeterminate) { - this.div.classList.add('indeterminate'); - this.div.style.width = this.width + this.units; - return; - } - - this.div.classList.remove('indeterminate'); - var progressSize = this.width * this._percent / 100; - this.div.style.width = progressSize + this.units; - }, - - get percent() { - return this._percent; - }, - - set percent(val) { - this._indeterminate = isNaN(val); - this._percent = clamp(val, 0, 100); - this.updateBar(); - }, - - setWidth: function ProgressBar_setWidth(viewer) { - if (viewer) { - var container = viewer.parentNode; - var scrollbarWidth = container.offsetWidth - viewer.offsetWidth; - if (scrollbarWidth > 0) { - this.bar.setAttribute('style', 'width: calc(100% - ' + - scrollbarWidth + 'px);'); - } - } - }, - - hide: function ProgressBar_hide() { - if (!this.visible) { - return; - } - this.visible = false; - this.bar.classList.add('hidden'); - document.body.classList.remove('loadingInProgress'); - }, - - show: function ProgressBar_show() { - if (this.visible) { - return; - } - this.visible = true; - document.body.classList.add('loadingInProgress'); - this.bar.classList.remove('hidden'); - } - }; - - return ProgressBar; -})(); - - - -var DEFAULT_PREFERENCES = { - showPreviousViewOnLoad: true, - defaultZoomValue: '', - sidebarViewOnLoad: 0, - enableHandToolOnLoad: false, - enableWebGL: false, - pdfBugEnabled: false, - disableRange: false, - disableStream: false, - disableAutoFetch: false, - disableFontFace: false, - disableTextLayer: false, - useOnlyCssZoom: false, - externalLinkTarget: 0, -}; - - -var SidebarView = { - NONE: 0, - THUMBS: 1, - OUTLINE: 2, - ATTACHMENTS: 3 -}; - -/** - * Preferences - Utility for storing persistent settings. - * Used for settings that should be applied to all opened documents, - * or every time the viewer is loaded. - */ -var Preferences = { - prefs: Object.create(DEFAULT_PREFERENCES), - isInitializedPromiseResolved: false, - initializedPromise: null, - - /** - * Initialize and fetch the current preference values from storage. - * @return {Promise} A promise that is resolved when the preferences - * have been initialized. - */ - initialize: function preferencesInitialize() { - return this.initializedPromise = - this._readFromStorage(DEFAULT_PREFERENCES).then(function(prefObj) { - this.isInitializedPromiseResolved = true; - if (prefObj) { - this.prefs = prefObj; - } - }.bind(this)); - }, - - /** - * Stub function for writing preferences to storage. - * NOTE: This should be overridden by a build-specific function defined below. - * @param {Object} prefObj The preferences that should be written to storage. - * @return {Promise} A promise that is resolved when the preference values - * have been written. - */ - _writeToStorage: function preferences_writeToStorage(prefObj) { - return Promise.resolve(); - }, - - /** - * Stub function for reading preferences from storage. - * NOTE: This should be overridden by a build-specific function defined below. - * @param {Object} prefObj The preferences that should be read from storage. - * @return {Promise} A promise that is resolved with an {Object} containing - * the preferences that have been read. - */ - _readFromStorage: function preferences_readFromStorage(prefObj) { - return Promise.resolve(); - }, - - /** - * Reset the preferences to their default values and update storage. - * @return {Promise} A promise that is resolved when the preference values - * have been reset. - */ - reset: function preferencesReset() { - return this.initializedPromise.then(function() { - this.prefs = Object.create(DEFAULT_PREFERENCES); - return this._writeToStorage(DEFAULT_PREFERENCES); - }.bind(this)); - }, - - /** - * Replace the current preference values with the ones from storage. - * @return {Promise} A promise that is resolved when the preference values - * have been updated. - */ - reload: function preferencesReload() { - return this.initializedPromise.then(function () { - this._readFromStorage(DEFAULT_PREFERENCES).then(function(prefObj) { - if (prefObj) { - this.prefs = prefObj; - } - }.bind(this)); - }.bind(this)); - }, - - /** - * Set the value of a preference. - * @param {string} name The name of the preference that should be changed. - * @param {boolean|number|string} value The new value of the preference. - * @return {Promise} A promise that is resolved when the value has been set, - * provided that the preference exists and the types match. - */ - set: function preferencesSet(name, value) { - return this.initializedPromise.then(function () { - if (DEFAULT_PREFERENCES[name] === undefined) { - throw new Error('preferencesSet: \'' + name + '\' is undefined.'); - } else if (value === undefined) { - throw new Error('preferencesSet: no value is specified.'); - } - var valueType = typeof value; - var defaultType = typeof DEFAULT_PREFERENCES[name]; - - if (valueType !== defaultType) { - if (valueType === 'number' && defaultType === 'string') { - value = value.toString(); - } else { - throw new Error('Preferences_set: \'' + value + '\' is a \"' + - valueType + '\", expected \"' + defaultType + '\".'); - } - } else { - if (valueType === 'number' && (value | 0) !== value) { - throw new Error('Preferences_set: \'' + value + - '\' must be an \"integer\".'); - } - } - this.prefs[name] = value; - return this._writeToStorage(this.prefs); - }.bind(this)); - }, - - /** - * Get the value of a preference. - * @param {string} name The name of the preference whose value is requested. - * @return {Promise} A promise that is resolved with a {boolean|number|string} - * containing the value of the preference. - */ - get: function preferencesGet(name) { - return this.initializedPromise.then(function () { - var defaultValue = DEFAULT_PREFERENCES[name]; - - if (defaultValue === undefined) { - throw new Error('preferencesGet: \'' + name + '\' is undefined.'); - } else { - var prefValue = this.prefs[name]; - - if (prefValue !== undefined) { - return prefValue; - } - } - return defaultValue; - }.bind(this)); - } -}; - - -Preferences._writeToStorage = function (prefObj) { - return new Promise(function (resolve) { - localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj)); - resolve(); - }); -}; - -Preferences._readFromStorage = function (prefObj) { - return new Promise(function (resolve) { - var readPrefs = JSON.parse(localStorage.getItem('pdfjs.preferences')); - resolve(readPrefs); - }); -}; - - -(function mozPrintCallbackPolyfillClosure() { - if ('mozPrintCallback' in document.createElement('canvas')) { - return; - } - // Cause positive result on feature-detection: - HTMLCanvasElement.prototype.mozPrintCallback = undefined; - - var canvases; // During print task: non-live NodeList of <canvas> elements - var index; // Index of <canvas> element that is being processed - - var print = window.print; - window.print = function print() { - if (canvases) { - console.warn('Ignored window.print() because of a pending print job.'); - return; - } - try { - dispatchEvent('beforeprint'); - } finally { - canvases = document.querySelectorAll('canvas'); - index = -1; - next(); - } - }; - - function dispatchEvent(eventType) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent(eventType, false, false, 'custom'); - window.dispatchEvent(event); - } - - function next() { - if (!canvases) { - return; // Print task cancelled by user (state reset in abort()) - } - - renderProgress(); - if (++index < canvases.length) { - var canvas = canvases[index]; - if (typeof canvas.mozPrintCallback === 'function') { - canvas.mozPrintCallback({ - context: canvas.getContext('2d'), - abort: abort, - done: next - }); - } else { - next(); - } - } else { - renderProgress(); - print.call(window); - setTimeout(abort, 20); // Tidy-up - } - } - - function abort() { - if (canvases) { - canvases = null; - renderProgress(); - dispatchEvent('afterprint'); - } - } - - function renderProgress() { - var progressContainer = document.getElementById('mozPrintCallback-shim'); - if (canvases && canvases.length) { - var progress = Math.round(100 * index / canvases.length); - var progressBar = progressContainer.querySelector('progress'); - var progressPerc = progressContainer.querySelector('.relative-progress'); - progressBar.value = progress; - progressPerc.textContent = progress + '%'; - progressContainer.removeAttribute('hidden'); - progressContainer.onclick = abort; - } else { - progressContainer.setAttribute('hidden', ''); - } - } - - var hasAttachEvent = !!document.attachEvent; - - window.addEventListener('keydown', function(event) { - // Intercept Cmd/Ctrl + P in all browsers. - // Also intercept Cmd/Ctrl + Shift + P in Chrome and Opera - if (event.keyCode === 80/*P*/ && (event.ctrlKey || event.metaKey) && - !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { - window.print(); - if (hasAttachEvent) { - // Only attachEvent can cancel Ctrl + P dialog in IE <=10 - // attachEvent is gone in IE11, so the dialog will re-appear in IE11. - return; - } - event.preventDefault(); - if (event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } else { - event.stopPropagation(); - } - return; - } - if (event.keyCode === 27 && canvases) { // Esc - abort(); - } - }, true); - if (hasAttachEvent) { - document.attachEvent('onkeydown', function(event) { - event = event || window.event; - if (event.keyCode === 80/*P*/ && event.ctrlKey) { - event.keyCode = 0; - return false; - } - }); - } - - if ('onbeforeprint' in window) { - // Do not propagate before/afterprint events when they are not triggered - // from within this polyfill. (FF/IE). - var stopPropagationIfNeeded = function(event) { - if (event.detail !== 'custom' && event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } - }; - window.addEventListener('beforeprint', stopPropagationIfNeeded, false); - window.addEventListener('afterprint', stopPropagationIfNeeded, false); - } -})(); - - - -var DownloadManager = (function DownloadManagerClosure() { - - function download(blobUrl, filename) { - var a = document.createElement('a'); - if (a.click) { - // Use a.click() if available. Otherwise, Chrome might show - // "Unsafe JavaScript attempt to initiate a navigation change - // for frame with URL" and not open the PDF at all. - // Supported by (not mentioned = untested): - // - Firefox 6 - 19 (4- does not support a.click, 5 ignores a.click) - // - Chrome 19 - 26 (18- does not support a.click) - // - Opera 9 - 12.15 - // - Internet Explorer 6 - 10 - // - Safari 6 (5.1- does not support a.click) - a.href = blobUrl; - a.target = '_parent'; - // Use a.download if available. This increases the likelihood that - // the file is downloaded instead of opened by another PDF plugin. - if ('download' in a) { - a.download = filename; - } - // <a> must be in the document for IE and recent Firefox versions. - // (otherwise .click() is ignored) - (document.body || document.documentElement).appendChild(a); - a.click(); - a.parentNode.removeChild(a); - } else { - if (window.top === window && - blobUrl.split('#')[0] === window.location.href.split('#')[0]) { - // If _parent == self, then opening an identical URL with different - // location hash will only cause a navigation, not a download. - var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&'; - blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&'); - } - window.open(blobUrl, '_parent'); - } - } - - function DownloadManager() {} - - DownloadManager.prototype = { - downloadUrl: function DownloadManager_downloadUrl(url, filename) { - if (!PDFJS.isValidUrl(url, true)) { - return; // restricted/invalid URL - } - - download(url + '#pdfjs.action=download', filename); - }, - - downloadData: function DownloadManager_downloadData(data, filename, - contentType) { - if (navigator.msSaveBlob) { // IE10 and above - return navigator.msSaveBlob(new Blob([data], { type: contentType }), - filename); - } - - var blobUrl = PDFJS.createObjectURL(data, contentType); - download(blobUrl, filename); - }, - - download: function DownloadManager_download(blob, url, filename) { - if (!URL) { - // URL.createObjectURL is not supported - this.downloadUrl(url, filename); - return; - } - - if (navigator.msSaveBlob) { - // IE10 / IE11 - if (!navigator.msSaveBlob(blob, filename)) { - this.downloadUrl(url, filename); - } - return; - } - - var blobUrl = URL.createObjectURL(blob); - download(blobUrl, filename); - } - }; - - return DownloadManager; -})(); - - - - - -var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; - -/** - * View History - This is a utility for saving various view parameters for - * recently opened files. - * - * The way that the view parameters are stored depends on how PDF.js is built, - * for 'node make <flag>' the following cases exist: - * - FIREFOX or MOZCENTRAL - uses sessionStorage. - * - GENERIC or CHROME - uses localStorage, if it is available. - */ -var ViewHistory = (function ViewHistoryClosure() { - function ViewHistory(fingerprint, cacheSize) { - this.fingerprint = fingerprint; - this.cacheSize = cacheSize || DEFAULT_VIEW_HISTORY_CACHE_SIZE; - this.isInitializedPromiseResolved = false; - this.initializedPromise = - this._readFromStorage().then(function (databaseStr) { - this.isInitializedPromiseResolved = true; - - var database = JSON.parse(databaseStr || '{}'); - if (!('files' in database)) { - database.files = []; - } - if (database.files.length >= this.cacheSize) { - database.files.shift(); - } - var index; - for (var i = 0, length = database.files.length; i < length; i++) { - var branch = database.files[i]; - if (branch.fingerprint === this.fingerprint) { - index = i; - break; - } - } - if (typeof index !== 'number') { - index = database.files.push({fingerprint: this.fingerprint}) - 1; - } - this.file = database.files[index]; - this.database = database; - }.bind(this)); - } - - ViewHistory.prototype = { - _writeToStorage: function ViewHistory_writeToStorage() { - return new Promise(function (resolve) { - var databaseStr = JSON.stringify(this.database); - - - localStorage.setItem('database', databaseStr); - resolve(); - }.bind(this)); - }, - - _readFromStorage: function ViewHistory_readFromStorage() { - return new Promise(function (resolve) { - - resolve(localStorage.getItem('database')); - }); - }, - - set: function ViewHistory_set(name, val) { - if (!this.isInitializedPromiseResolved) { - return; - } - this.file[name] = val; - return this._writeToStorage(); - }, - - setMultiple: function ViewHistory_setMultiple(properties) { - if (!this.isInitializedPromiseResolved) { - return; - } - for (var name in properties) { - this.file[name] = properties[name]; - } - return this._writeToStorage(); - }, - - get: function ViewHistory_get(name, defaultValue) { - if (!this.isInitializedPromiseResolved) { - return defaultValue; - } - return this.file[name] || defaultValue; - } - }; - - return ViewHistory; -})(); - - -/** - * Creates a "search bar" given a set of DOM elements that act as controls - * for searching or for setting search preferences in the UI. This object - * also sets up the appropriate events for the controls. Actual searching - * is done by PDFFindController. - */ -var PDFFindBar = (function PDFFindBarClosure() { - function PDFFindBar(options) { - this.opened = false; - this.bar = options.bar || null; - this.toggleButton = options.toggleButton || null; - this.findField = options.findField || null; - this.highlightAll = options.highlightAllCheckbox || null; - this.caseSensitive = options.caseSensitiveCheckbox || null; - this.findMsg = options.findMsg || null; - this.findResultsCount = options.findResultsCount || null; - this.findStatusIcon = options.findStatusIcon || null; - this.findPreviousButton = options.findPreviousButton || null; - this.findNextButton = options.findNextButton || null; - this.findController = options.findController || null; - - if (this.findController === null) { - throw new Error('PDFFindBar cannot be used without a ' + - 'PDFFindController instance.'); - } - - // Add event listeners to the DOM elements. - var self = this; - this.toggleButton.addEventListener('click', function() { - self.toggle(); - }); - - this.findField.addEventListener('input', function() { - self.dispatchEvent(''); - }); - - this.bar.addEventListener('keydown', function(evt) { - switch (evt.keyCode) { - case 13: // Enter - if (evt.target === self.findField) { - self.dispatchEvent('again', evt.shiftKey); - } - break; - case 27: // Escape - self.close(); - break; - } - }); - - this.findPreviousButton.addEventListener('click', function() { - self.dispatchEvent('again', true); - }); - - this.findNextButton.addEventListener('click', function() { - self.dispatchEvent('again', false); - }); - - this.highlightAll.addEventListener('click', function() { - self.dispatchEvent('highlightallchange'); - }); - - this.caseSensitive.addEventListener('click', function() { - self.dispatchEvent('casesensitivitychange'); - }); - } - - PDFFindBar.prototype = { - dispatchEvent: function PDFFindBar_dispatchEvent(type, findPrev) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('find' + type, true, true, { - query: this.findField.value, - caseSensitive: this.caseSensitive.checked, - highlightAll: this.highlightAll.checked, - findPrevious: findPrev - }); - return window.dispatchEvent(event); - }, - - updateUIState: - function PDFFindBar_updateUIState(state, previous, matchCount) { - var notFound = false; - var findMsg = ''; - var status = ''; - - switch (state) { - case FindStates.FIND_FOUND: - break; - - case FindStates.FIND_PENDING: - status = 'pending'; - break; - - case FindStates.FIND_NOTFOUND: - findMsg = mozL10n.get('find_not_found', null, 'Phrase not found'); - notFound = true; - break; - - case FindStates.FIND_WRAPPED: - if (previous) { - findMsg = mozL10n.get('find_reached_top', null, - 'Reached top of document, continued from bottom'); - } else { - findMsg = mozL10n.get('find_reached_bottom', null, - 'Reached end of document, continued from top'); - } - break; - } - - if (notFound) { - this.findField.classList.add('notFound'); - } else { - this.findField.classList.remove('notFound'); - } - - this.findField.setAttribute('data-status', status); - this.findMsg.textContent = findMsg; - - this.updateResultsCount(matchCount); - }, - - updateResultsCount: function(matchCount) { - if (!this.findResultsCount) { - return; // no UI control is provided - } - - // If there are no matches, hide the counter - if (!matchCount) { - this.findResultsCount.classList.add('hidden'); - return; - } - - // Create the match counter - this.findResultsCount.textContent = matchCount.toLocaleString(); - - // Show the counter - this.findResultsCount.classList.remove('hidden'); - }, - - open: function PDFFindBar_open() { - if (!this.opened) { - this.opened = true; - this.toggleButton.classList.add('toggled'); - this.bar.classList.remove('hidden'); - } - this.findField.select(); - this.findField.focus(); - }, - - close: function PDFFindBar_close() { - if (!this.opened) { - return; - } - this.opened = false; - this.toggleButton.classList.remove('toggled'); - this.bar.classList.add('hidden'); - this.findController.active = false; - }, - - toggle: function PDFFindBar_toggle() { - if (this.opened) { - this.close(); - } else { - this.open(); - } - } - }; - return PDFFindBar; -})(); - - -var FindStates = { - FIND_FOUND: 0, - FIND_NOTFOUND: 1, - FIND_WRAPPED: 2, - FIND_PENDING: 3 -}; - -var FIND_SCROLL_OFFSET_TOP = -50; -var FIND_SCROLL_OFFSET_LEFT = -400; - -/** - * Provides "search" or "find" functionality for the PDF. - * This object actually performs the search for a given string. - */ -var PDFFindController = (function PDFFindControllerClosure() { - function PDFFindController(options) { - this.startedTextExtraction = false; - this.extractTextPromises = []; - this.pendingFindMatches = {}; - this.active = false; // If active, find results will be highlighted. - this.pageContents = []; // Stores the text for each page. - this.pageMatches = []; - this.matchCount = 0; - this.selected = { // Currently selected match. - pageIdx: -1, - matchIdx: -1 - }; - this.offset = { // Where the find algorithm currently is in the document. - pageIdx: null, - matchIdx: null - }; - this.pagesToSearch = null; - this.resumePageIdx = null; - this.state = null; - this.dirtyMatch = false; - this.findTimeout = null; - this.pdfViewer = options.pdfViewer || null; - this.integratedFind = options.integratedFind || false; - this.charactersToNormalize = { - '\u2018': '\'', // Left single quotation mark - '\u2019': '\'', // Right single quotation mark - '\u201A': '\'', // Single low-9 quotation mark - '\u201B': '\'', // Single high-reversed-9 quotation mark - '\u201C': '"', // Left double quotation mark - '\u201D': '"', // Right double quotation mark - '\u201E': '"', // Double low-9 quotation mark - '\u201F': '"', // Double high-reversed-9 quotation mark - '\u00BC': '1/4', // Vulgar fraction one quarter - '\u00BD': '1/2', // Vulgar fraction one half - '\u00BE': '3/4', // Vulgar fraction three quarters - '\u00A0': ' ' // No-break space - }; - this.findBar = options.findBar || null; - - // Compile the regular expression for text normalization once - var replace = Object.keys(this.charactersToNormalize).join(''); - this.normalizationRegex = new RegExp('[' + replace + ']', 'g'); - - var events = [ - 'find', - 'findagain', - 'findhighlightallchange', - 'findcasesensitivitychange' - ]; - - this.firstPagePromise = new Promise(function (resolve) { - this.resolveFirstPage = resolve; - }.bind(this)); - this.handleEvent = this.handleEvent.bind(this); - - for (var i = 0, len = events.length; i < len; i++) { - window.addEventListener(events[i], this.handleEvent); - } - } - - PDFFindController.prototype = { - setFindBar: function PDFFindController_setFindBar(findBar) { - this.findBar = findBar; - }, - - reset: function PDFFindController_reset() { - this.startedTextExtraction = false; - this.extractTextPromises = []; - this.active = false; - }, - - normalize: function PDFFindController_normalize(text) { - var self = this; - return text.replace(this.normalizationRegex, function (ch) { - return self.charactersToNormalize[ch]; - }); - }, - - calcFindMatch: function PDFFindController_calcFindMatch(pageIndex) { - var pageContent = this.normalize(this.pageContents[pageIndex]); - var query = this.normalize(this.state.query); - var caseSensitive = this.state.caseSensitive; - var queryLen = query.length; - - if (queryLen === 0) { - // Do nothing: the matches should be wiped out already. - return; - } - - if (!caseSensitive) { - pageContent = pageContent.toLowerCase(); - query = query.toLowerCase(); - } - - var matches = []; - var matchIdx = -queryLen; - while (true) { - matchIdx = pageContent.indexOf(query, matchIdx + queryLen); - if (matchIdx === -1) { - break; - } - matches.push(matchIdx); - } - this.pageMatches[pageIndex] = matches; - this.updatePage(pageIndex); - if (this.resumePageIdx === pageIndex) { - this.resumePageIdx = null; - this.nextPageMatch(); - } - - // Update the matches count - if (matches.length > 0) { - this.matchCount += matches.length; - this.updateUIResultsCount(); - } - }, - - extractText: function PDFFindController_extractText() { - if (this.startedTextExtraction) { - return; - } - this.startedTextExtraction = true; - - this.pageContents = []; - var extractTextPromisesResolves = []; - var numPages = this.pdfViewer.pagesCount; - for (var i = 0; i < numPages; i++) { - this.extractTextPromises.push(new Promise(function (resolve) { - extractTextPromisesResolves.push(resolve); - })); - } - - var self = this; - function extractPageText(pageIndex) { - self.pdfViewer.getPageTextContent(pageIndex).then( - function textContentResolved(textContent) { - var textItems = textContent.items; - var str = []; - - for (var i = 0, len = textItems.length; i < len; i++) { - str.push(textItems[i].str); - } - - // Store the pageContent as a string. - self.pageContents.push(str.join('')); - - extractTextPromisesResolves[pageIndex](pageIndex); - if ((pageIndex + 1) < self.pdfViewer.pagesCount) { - extractPageText(pageIndex + 1); - } - } - ); - } - extractPageText(0); - }, - - handleEvent: function PDFFindController_handleEvent(e) { - if (this.state === null || e.type !== 'findagain') { - this.dirtyMatch = true; - } - this.state = e.detail; - this.updateUIState(FindStates.FIND_PENDING); - - this.firstPagePromise.then(function() { - this.extractText(); - - clearTimeout(this.findTimeout); - if (e.type === 'find') { - // Only trigger the find action after 250ms of silence. - this.findTimeout = setTimeout(this.nextMatch.bind(this), 250); - } else { - this.nextMatch(); - } - }.bind(this)); - }, - - updatePage: function PDFFindController_updatePage(index) { - if (this.selected.pageIdx === index) { - // If the page is selected, scroll the page into view, which triggers - // rendering the page, which adds the textLayer. Once the textLayer is - // build, it will scroll onto the selected match. - this.pdfViewer.scrollPageIntoView(index + 1); - } - - var page = this.pdfViewer.getPageView(index); - if (page.textLayer) { - page.textLayer.updateMatches(); - } - }, - - nextMatch: function PDFFindController_nextMatch() { - var previous = this.state.findPrevious; - var currentPageIndex = this.pdfViewer.currentPageNumber - 1; - var numPages = this.pdfViewer.pagesCount; - - this.active = true; - - if (this.dirtyMatch) { - // Need to recalculate the matches, reset everything. - this.dirtyMatch = false; - this.selected.pageIdx = this.selected.matchIdx = -1; - this.offset.pageIdx = currentPageIndex; - this.offset.matchIdx = null; - this.hadMatch = false; - this.resumePageIdx = null; - this.pageMatches = []; - this.matchCount = 0; - var self = this; - - for (var i = 0; i < numPages; i++) { - // Wipe out any previous highlighted matches. - this.updatePage(i); - - // As soon as the text is extracted start finding the matches. - if (!(i in this.pendingFindMatches)) { - this.pendingFindMatches[i] = true; - this.extractTextPromises[i].then(function(pageIdx) { - delete self.pendingFindMatches[pageIdx]; - self.calcFindMatch(pageIdx); - }); - } - } - } - - // If there's no query there's no point in searching. - if (this.state.query === '') { - this.updateUIState(FindStates.FIND_FOUND); - return; - } - - // If we're waiting on a page, we return since we can't do anything else. - if (this.resumePageIdx) { - return; - } - - var offset = this.offset; - // Keep track of how many pages we should maximally iterate through. - this.pagesToSearch = numPages; - // If there's already a matchIdx that means we are iterating through a - // page's matches. - if (offset.matchIdx !== null) { - var numPageMatches = this.pageMatches[offset.pageIdx].length; - if ((!previous && offset.matchIdx + 1 < numPageMatches) || - (previous && offset.matchIdx > 0)) { - // The simple case; we just have advance the matchIdx to select - // the next match on the page. - this.hadMatch = true; - offset.matchIdx = (previous ? offset.matchIdx - 1 : - offset.matchIdx + 1); - this.updateMatch(true); - return; - } - // We went beyond the current page's matches, so we advance to - // the next page. - this.advanceOffsetPage(previous); - } - // Start searching through the page. - this.nextPageMatch(); - }, - - matchesReady: function PDFFindController_matchesReady(matches) { - var offset = this.offset; - var numMatches = matches.length; - var previous = this.state.findPrevious; - - if (numMatches) { - // There were matches for the page, so initialize the matchIdx. - this.hadMatch = true; - offset.matchIdx = (previous ? numMatches - 1 : 0); - this.updateMatch(true); - return true; - } else { - // No matches, so attempt to search the next page. - this.advanceOffsetPage(previous); - if (offset.wrapped) { - offset.matchIdx = null; - if (this.pagesToSearch < 0) { - // No point in wrapping again, there were no matches. - this.updateMatch(false); - // while matches were not found, searching for a page - // with matches should nevertheless halt. - return true; - } - } - // Matches were not found (and searching is not done). - return false; - } - }, - - /** - * The method is called back from the text layer when match presentation - * is updated. - * @param {number} pageIndex - page index. - * @param {number} index - match index. - * @param {Array} elements - text layer div elements array. - * @param {number} beginIdx - start index of the div array for the match. - * @param {number} endIdx - end index of the div array for the match. - */ - updateMatchPosition: function PDFFindController_updateMatchPosition( - pageIndex, index, elements, beginIdx, endIdx) { - if (this.selected.matchIdx === index && - this.selected.pageIdx === pageIndex) { - var spot = { - top: FIND_SCROLL_OFFSET_TOP, - left: FIND_SCROLL_OFFSET_LEFT - }; - scrollIntoView(elements[beginIdx], spot, - /* skipOverflowHiddenElements = */ true); - } - }, - - nextPageMatch: function PDFFindController_nextPageMatch() { - if (this.resumePageIdx !== null) { - console.error('There can only be one pending page.'); - } - do { - var pageIdx = this.offset.pageIdx; - var matches = this.pageMatches[pageIdx]; - if (!matches) { - // The matches don't exist yet for processing by "matchesReady", - // so set a resume point for when they do exist. - this.resumePageIdx = pageIdx; - break; - } - } while (!this.matchesReady(matches)); - }, - - advanceOffsetPage: function PDFFindController_advanceOffsetPage(previous) { - var offset = this.offset; - var numPages = this.extractTextPromises.length; - offset.pageIdx = (previous ? offset.pageIdx - 1 : offset.pageIdx + 1); - offset.matchIdx = null; - - this.pagesToSearch--; - - if (offset.pageIdx >= numPages || offset.pageIdx < 0) { - offset.pageIdx = (previous ? numPages - 1 : 0); - offset.wrapped = true; - } - }, - - updateMatch: function PDFFindController_updateMatch(found) { - var state = FindStates.FIND_NOTFOUND; - var wrapped = this.offset.wrapped; - this.offset.wrapped = false; - - if (found) { - var previousPage = this.selected.pageIdx; - this.selected.pageIdx = this.offset.pageIdx; - this.selected.matchIdx = this.offset.matchIdx; - state = (wrapped ? FindStates.FIND_WRAPPED : FindStates.FIND_FOUND); - // Update the currently selected page to wipe out any selected matches. - if (previousPage !== -1 && previousPage !== this.selected.pageIdx) { - this.updatePage(previousPage); - } - } - - this.updateUIState(state, this.state.findPrevious); - if (this.selected.pageIdx !== -1) { - this.updatePage(this.selected.pageIdx); - } - }, - - updateUIResultsCount: - function PDFFindController_updateUIResultsCount() { - if (this.findBar === null) { - throw new Error('PDFFindController is not initialized with a ' + - 'PDFFindBar instance.'); - } - this.findBar.updateResultsCount(this.matchCount); - }, - - updateUIState: function PDFFindController_updateUIState(state, previous) { - if (this.integratedFind) { - FirefoxCom.request('updateFindControlState', - { result: state, findPrevious: previous }); - return; - } - if (this.findBar === null) { - throw new Error('PDFFindController is not initialized with a ' + - 'PDFFindBar instance.'); - } - this.findBar.updateUIState(state, previous, this.matchCount); - } - }; - return PDFFindController; -})(); - - -/** - * Performs navigation functions inside PDF, such as opening specified page, - * or destination. - * @class - * @implements {IPDFLinkService} - */ -var PDFLinkService = (function () { - /** - * @constructs PDFLinkService - */ - function PDFLinkService() { - this.baseUrl = null; - this.pdfDocument = null; - this.pdfViewer = null; - this.pdfHistory = null; - - this._pagesRefCache = null; - } - - PDFLinkService.prototype = { - setDocument: function PDFLinkService_setDocument(pdfDocument, baseUrl) { - this.baseUrl = baseUrl; - this.pdfDocument = pdfDocument; - this._pagesRefCache = Object.create(null); - }, - - setViewer: function PDFLinkService_setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - }, - - setHistory: function PDFLinkService_setHistory(pdfHistory) { - this.pdfHistory = pdfHistory; - }, - - /** - * @returns {number} - */ - get pagesCount() { - return this.pdfDocument.numPages; - }, - - /** - * @returns {number} - */ - get page() { - return this.pdfViewer.currentPageNumber; - }, - - /** - * @param {number} value - */ - set page(value) { - this.pdfViewer.currentPageNumber = value; - }, - - /** - * @param dest - The PDF destination object. - */ - navigateTo: function PDFLinkService_navigateTo(dest) { - var destString = ''; - var self = this; - - var goToDestination = function(destRef) { - // dest array looks like that: <page-ref> </XYZ|FitXXX> <args..> - var pageNumber = destRef instanceof Object ? - self._pagesRefCache[destRef.num + ' ' + destRef.gen + ' R'] : - (destRef + 1); - if (pageNumber) { - if (pageNumber > self.pagesCount) { - pageNumber = self.pagesCount; - } - self.pdfViewer.scrollPageIntoView(pageNumber, dest); - - if (self.pdfHistory) { - // Update the browsing history. - self.pdfHistory.push({ - dest: dest, - hash: destString, - page: pageNumber - }); - } - } else { - self.pdfDocument.getPageIndex(destRef).then(function (pageIndex) { - var pageNum = pageIndex + 1; - var cacheKey = destRef.num + ' ' + destRef.gen + ' R'; - self._pagesRefCache[cacheKey] = pageNum; - goToDestination(destRef); - }); - } - }; - - var destinationPromise; - if (typeof dest === 'string') { - destString = dest; - destinationPromise = this.pdfDocument.getDestination(dest); - } else { - destinationPromise = Promise.resolve(dest); - } - destinationPromise.then(function(destination) { - dest = destination; - if (!(destination instanceof Array)) { - return; // invalid destination - } - goToDestination(destination[0]); - }); - }, - - /** - * @param dest - The PDF destination object. - * @returns {string} The hyperlink to the PDF object. - */ - getDestinationHash: function PDFLinkService_getDestinationHash(dest) { - if (typeof dest === 'string') { - return this.getAnchorUrl('#' + escape(dest)); - } - if (dest instanceof Array) { - var destRef = dest[0]; // see navigateTo method for dest format - var pageNumber = destRef instanceof Object ? - this._pagesRefCache[destRef.num + ' ' + destRef.gen + ' R'] : - (destRef + 1); - if (pageNumber) { - var pdfOpenParams = this.getAnchorUrl('#page=' + pageNumber); - var destKind = dest[1]; - if (typeof destKind === 'object' && 'name' in destKind && - destKind.name === 'XYZ') { - var scale = (dest[4] || this.pdfViewer.currentScaleValue); - var scaleNumber = parseFloat(scale); - if (scaleNumber) { - scale = scaleNumber * 100; - } - pdfOpenParams += '&zoom=' + scale; - if (dest[2] || dest[3]) { - pdfOpenParams += ',' + (dest[2] || 0) + ',' + (dest[3] || 0); - } - } - return pdfOpenParams; - } - } - return ''; - }, - - /** - * Prefix the full url on anchor links to make sure that links are resolved - * relative to the current URL instead of the one defined in <base href>. - * @param {String} anchor The anchor hash, including the #. - * @returns {string} The hyperlink to the PDF object. - */ - getAnchorUrl: function PDFLinkService_getAnchorUrl(anchor) { - return (this.baseUrl || '') + anchor; - }, - - /** - * @param {string} hash - */ - setHash: function PDFLinkService_setHash(hash) { - if (hash.indexOf('=') >= 0) { - var params = parseQueryString(hash); - // borrowing syntax from "Parameters for Opening PDF Files" - if ('nameddest' in params) { - if (this.pdfHistory) { - this.pdfHistory.updateNextHashParam(params.nameddest); - } - this.navigateTo(params.nameddest); - return; - } - var pageNumber, dest; - if ('page' in params) { - pageNumber = (params.page | 0) || 1; - } - if ('zoom' in params) { - // Build the destination array. - var zoomArgs = params.zoom.split(','); // scale,left,top - var zoomArg = zoomArgs[0]; - var zoomArgNumber = parseFloat(zoomArg); - - if (zoomArg.indexOf('Fit') === -1) { - // If the zoomArg is a number, it has to get divided by 100. If it's - // a string, it should stay as it is. - dest = [null, { name: 'XYZ' }, - zoomArgs.length > 1 ? (zoomArgs[1] | 0) : null, - zoomArgs.length > 2 ? (zoomArgs[2] | 0) : null, - (zoomArgNumber ? zoomArgNumber / 100 : zoomArg)]; - } else { - if (zoomArg === 'Fit' || zoomArg === 'FitB') { - dest = [null, { name: zoomArg }]; - } else if ((zoomArg === 'FitH' || zoomArg === 'FitBH') || - (zoomArg === 'FitV' || zoomArg === 'FitBV')) { - dest = [null, { name: zoomArg }, - zoomArgs.length > 1 ? (zoomArgs[1] | 0) : null]; - } else if (zoomArg === 'FitR') { - if (zoomArgs.length !== 5) { - console.error('PDFLinkService_setHash: ' + - 'Not enough parameters for \'FitR\'.'); - } else { - dest = [null, { name: zoomArg }, - (zoomArgs[1] | 0), (zoomArgs[2] | 0), - (zoomArgs[3] | 0), (zoomArgs[4] | 0)]; - } - } else { - console.error('PDFLinkService_setHash: \'' + zoomArg + - '\' is not a valid zoom value.'); - } - } - } - if (dest) { - this.pdfViewer.scrollPageIntoView(pageNumber || this.page, dest); - } else if (pageNumber) { - this.page = pageNumber; // simple page - } - if ('pagemode' in params) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagemode', true, true, { - mode: params.pagemode, - }); - this.pdfViewer.container.dispatchEvent(event); - } - } else if (/^\d+$/.test(hash)) { // page number - this.page = hash; - } else { // named destination - if (this.pdfHistory) { - this.pdfHistory.updateNextHashParam(unescape(hash)); - } - this.navigateTo(unescape(hash)); - } - }, - - /** - * @param {string} action - */ - executeNamedAction: function PDFLinkService_executeNamedAction(action) { - // See PDF reference, table 8.45 - Named action - switch (action) { - case 'GoBack': - if (this.pdfHistory) { - this.pdfHistory.back(); - } - break; - - case 'GoForward': - if (this.pdfHistory) { - this.pdfHistory.forward(); - } - break; - - case 'NextPage': - this.page++; - break; - - case 'PrevPage': - this.page--; - break; - - case 'LastPage': - this.page = this.pagesCount; - break; - - case 'FirstPage': - this.page = 1; - break; - - default: - break; // No action according to spec - } - - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('namedaction', true, true, { - action: action - }); - this.pdfViewer.container.dispatchEvent(event); - }, - - /** - * @param {number} pageNum - page number. - * @param {Object} pageRef - reference to the page. - */ - cachePageRef: function PDFLinkService_cachePageRef(pageNum, pageRef) { - var refStr = pageRef.num + ' ' + pageRef.gen + ' R'; - this._pagesRefCache[refStr] = pageNum; - } - }; - - return PDFLinkService; -})(); - - -var PDFHistory = (function () { - function PDFHistory(options) { - this.linkService = options.linkService; - - this.initialized = false; - this.initialDestination = null; - this.initialBookmark = null; - } - - PDFHistory.prototype = { - /** - * @param {string} fingerprint - * @param {IPDFLinkService} linkService - */ - initialize: function pdfHistoryInitialize(fingerprint) { - this.initialized = true; - this.reInitialized = false; - this.allowHashChange = true; - this.historyUnlocked = true; - this.isViewerInPresentationMode = false; - - this.previousHash = window.location.hash.substring(1); - this.currentBookmark = ''; - this.currentPage = 0; - this.updatePreviousBookmark = false; - this.previousBookmark = ''; - this.previousPage = 0; - this.nextHashParam = ''; - - this.fingerprint = fingerprint; - this.currentUid = this.uid = 0; - this.current = {}; - - var state = window.history.state; - if (this._isStateObjectDefined(state)) { - // This corresponds to navigating back to the document - // from another page in the browser history. - if (state.target.dest) { - this.initialDestination = state.target.dest; - } else { - this.initialBookmark = state.target.hash; - } - this.currentUid = state.uid; - this.uid = state.uid + 1; - this.current = state.target; - } else { - // This corresponds to the loading of a new document. - if (state && state.fingerprint && - this.fingerprint !== state.fingerprint) { - // Reinitialize the browsing history when a new document - // is opened in the web viewer. - this.reInitialized = true; - } - this._pushOrReplaceState({fingerprint: this.fingerprint}, true); - } - - var self = this; - window.addEventListener('popstate', function pdfHistoryPopstate(evt) { - if (!self.historyUnlocked) { - return; - } - if (evt.state) { - // Move back/forward in the history. - self._goTo(evt.state); - return; - } - - // If the state is not set, then the user tried to navigate to a - // different hash by manually editing the URL and pressing Enter, or by - // clicking on an in-page link (e.g. the "current view" link). - // Save the current view state to the browser history. - - // Note: In Firefox, history.null could also be null after an in-page - // navigation to the same URL, and without dispatching the popstate - // event: https://bugzilla.mozilla.org/show_bug.cgi?id=1183881 - - if (self.uid === 0) { - // Replace the previous state if it was not explicitly set. - var previousParams = (self.previousHash && self.currentBookmark && - self.previousHash !== self.currentBookmark) ? - {hash: self.currentBookmark, page: self.currentPage} : - {page: 1}; - replacePreviousHistoryState(previousParams, function() { - updateHistoryWithCurrentHash(); - }); - } else { - updateHistoryWithCurrentHash(); - } - }, false); - - - function updateHistoryWithCurrentHash() { - self.previousHash = window.location.hash.slice(1); - self._pushToHistory({hash: self.previousHash}, false, true); - self._updatePreviousBookmark(); - } - - function replacePreviousHistoryState(params, callback) { - // To modify the previous history entry, the following happens: - // 1. history.back() - // 2. _pushToHistory, which calls history.replaceState( ... ) - // 3. history.forward() - // Because a navigation via the history API does not immediately update - // the history state, the popstate event is used for synchronization. - self.historyUnlocked = false; - - // Suppress the hashchange event to avoid side effects caused by - // navigating back and forward. - self.allowHashChange = false; - window.addEventListener('popstate', rewriteHistoryAfterBack); - history.back(); - - function rewriteHistoryAfterBack() { - window.removeEventListener('popstate', rewriteHistoryAfterBack); - window.addEventListener('popstate', rewriteHistoryAfterForward); - self._pushToHistory(params, false, true); - history.forward(); - } - function rewriteHistoryAfterForward() { - window.removeEventListener('popstate', rewriteHistoryAfterForward); - self.allowHashChange = true; - self.historyUnlocked = true; - callback(); - } - } - - function pdfHistoryBeforeUnload() { - var previousParams = self._getPreviousParams(null, true); - if (previousParams) { - var replacePrevious = (!self.current.dest && - self.current.hash !== self.previousHash); - self._pushToHistory(previousParams, false, replacePrevious); - self._updatePreviousBookmark(); - } - // Remove the event listener when navigating away from the document, - // since 'beforeunload' prevents Firefox from caching the document. - window.removeEventListener('beforeunload', pdfHistoryBeforeUnload, - false); - } - - window.addEventListener('beforeunload', pdfHistoryBeforeUnload, false); - - window.addEventListener('pageshow', function pdfHistoryPageShow(evt) { - // If the entire viewer (including the PDF file) is cached in - // the browser, we need to reattach the 'beforeunload' event listener - // since the 'DOMContentLoaded' event is not fired on 'pageshow'. - window.addEventListener('beforeunload', pdfHistoryBeforeUnload, false); - }, false); - - window.addEventListener('presentationmodechanged', function(e) { - self.isViewerInPresentationMode = !!e.detail.active; - }); - }, - - clearHistoryState: function pdfHistory_clearHistoryState() { - this._pushOrReplaceState(null, true); - }, - - _isStateObjectDefined: function pdfHistory_isStateObjectDefined(state) { - return (state && state.uid >= 0 && - state.fingerprint && this.fingerprint === state.fingerprint && - state.target && state.target.hash) ? true : false; - }, - - _pushOrReplaceState: function pdfHistory_pushOrReplaceState(stateObj, - replace) { - if (replace) { - window.history.replaceState(stateObj, '', document.URL); - } else { - window.history.pushState(stateObj, '', document.URL); - } - }, - - get isHashChangeUnlocked() { - if (!this.initialized) { - return true; - } - return this.allowHashChange; - }, - - _updatePreviousBookmark: function pdfHistory_updatePreviousBookmark() { - if (this.updatePreviousBookmark && - this.currentBookmark && this.currentPage) { - this.previousBookmark = this.currentBookmark; - this.previousPage = this.currentPage; - this.updatePreviousBookmark = false; - } - }, - - updateCurrentBookmark: function pdfHistoryUpdateCurrentBookmark(bookmark, - pageNum) { - if (this.initialized) { - this.currentBookmark = bookmark.substring(1); - this.currentPage = pageNum | 0; - this._updatePreviousBookmark(); - } - }, - - updateNextHashParam: function pdfHistoryUpdateNextHashParam(param) { - if (this.initialized) { - this.nextHashParam = param; - } - }, - - push: function pdfHistoryPush(params, isInitialBookmark) { - if (!(this.initialized && this.historyUnlocked)) { - return; - } - if (params.dest && !params.hash) { - params.hash = (this.current.hash && this.current.dest && - this.current.dest === params.dest) ? - this.current.hash : - this.linkService.getDestinationHash(params.dest).split('#')[1]; - } - if (params.page) { - params.page |= 0; - } - if (isInitialBookmark) { - var target = window.history.state.target; - if (!target) { - // Invoked when the user specifies an initial bookmark, - // thus setting initialBookmark, when the document is loaded. - this._pushToHistory(params, false); - this.previousHash = window.location.hash.substring(1); - } - this.updatePreviousBookmark = this.nextHashParam ? false : true; - if (target) { - // If the current document is reloaded, - // avoid creating duplicate entries in the history. - this._updatePreviousBookmark(); - } - return; - } - if (this.nextHashParam) { - if (this.nextHashParam === params.hash) { - this.nextHashParam = null; - this.updatePreviousBookmark = true; - return; - } else { - this.nextHashParam = null; - } - } - - if (params.hash) { - if (this.current.hash) { - if (this.current.hash !== params.hash) { - this._pushToHistory(params, true); - } else { - if (!this.current.page && params.page) { - this._pushToHistory(params, false, true); - } - this.updatePreviousBookmark = true; - } - } else { - this._pushToHistory(params, true); - } - } else if (this.current.page && params.page && - this.current.page !== params.page) { - this._pushToHistory(params, true); - } - }, - - _getPreviousParams: function pdfHistory_getPreviousParams(onlyCheckPage, - beforeUnload) { - if (!(this.currentBookmark && this.currentPage)) { - return null; - } else if (this.updatePreviousBookmark) { - this.updatePreviousBookmark = false; - } - if (this.uid > 0 && !(this.previousBookmark && this.previousPage)) { - // Prevent the history from getting stuck in the current state, - // effectively preventing the user from going back/forward in - // the history. - // - // This happens if the current position in the document didn't change - // when the history was previously updated. The reasons for this are - // either: - // 1. The current zoom value is such that the document does not need to, - // or cannot, be scrolled to display the destination. - // 2. The previous destination is broken, and doesn't actally point to a - // position within the document. - // (This is either due to a bad PDF generator, or the user making a - // mistake when entering a destination in the hash parameters.) - return null; - } - if ((!this.current.dest && !onlyCheckPage) || beforeUnload) { - if (this.previousBookmark === this.currentBookmark) { - return null; - } - } else if (this.current.page || onlyCheckPage) { - if (this.previousPage === this.currentPage) { - return null; - } - } else { - return null; - } - var params = {hash: this.currentBookmark, page: this.currentPage}; - if (this.isViewerInPresentationMode) { - params.hash = null; - } - return params; - }, - - _stateObj: function pdfHistory_stateObj(params) { - return {fingerprint: this.fingerprint, uid: this.uid, target: params}; - }, - - _pushToHistory: function pdfHistory_pushToHistory(params, - addPrevious, overwrite) { - if (!this.initialized) { - return; - } - if (!params.hash && params.page) { - params.hash = ('page=' + params.page); - } - if (addPrevious && !overwrite) { - var previousParams = this._getPreviousParams(); - if (previousParams) { - var replacePrevious = (!this.current.dest && - this.current.hash !== this.previousHash); - this._pushToHistory(previousParams, false, replacePrevious); - } - } - this._pushOrReplaceState(this._stateObj(params), - (overwrite || this.uid === 0)); - this.currentUid = this.uid++; - this.current = params; - this.updatePreviousBookmark = true; - }, - - _goTo: function pdfHistory_goTo(state) { - if (!(this.initialized && this.historyUnlocked && - this._isStateObjectDefined(state))) { - return; - } - if (!this.reInitialized && state.uid < this.currentUid) { - var previousParams = this._getPreviousParams(true); - if (previousParams) { - this._pushToHistory(this.current, false); - this._pushToHistory(previousParams, false); - this.currentUid = state.uid; - window.history.back(); - return; - } - } - this.historyUnlocked = false; - - if (state.target.dest) { - this.linkService.navigateTo(state.target.dest); - } else { - this.linkService.setHash(state.target.hash); - } - this.currentUid = state.uid; - if (state.uid > this.uid) { - this.uid = state.uid; - } - this.current = state.target; - this.updatePreviousBookmark = true; - - var currentHash = window.location.hash.substring(1); - if (this.previousHash !== currentHash) { - this.allowHashChange = false; - } - this.previousHash = currentHash; - - this.historyUnlocked = true; - }, - - back: function pdfHistoryBack() { - this.go(-1); - }, - - forward: function pdfHistoryForward() { - this.go(1); - }, - - go: function pdfHistoryGo(direction) { - if (this.initialized && this.historyUnlocked) { - var state = window.history.state; - if (direction === -1 && state && state.uid > 0) { - window.history.back(); - } else if (direction === 1 && state && state.uid < (this.uid - 1)) { - window.history.forward(); - } - } - } - }; - - return PDFHistory; -})(); - - -var SecondaryToolbar = { - opened: false, - previousContainerHeight: null, - newContainerHeight: null, - - initialize: function secondaryToolbarInitialize(options) { - this.toolbar = options.toolbar; - this.buttonContainer = this.toolbar.firstElementChild; - - // Define the toolbar buttons. - this.toggleButton = options.toggleButton; - this.presentationModeButton = options.presentationModeButton; - this.openFile = options.openFile; - this.print = options.print; - this.download = options.download; - this.viewBookmark = options.viewBookmark; - this.firstPage = options.firstPage; - this.lastPage = options.lastPage; - this.pageRotateCw = options.pageRotateCw; - this.pageRotateCcw = options.pageRotateCcw; - this.documentPropertiesButton = options.documentPropertiesButton; - - // Attach the event listeners. - var elements = [ - // Button to toggle the visibility of the secondary toolbar: - { element: this.toggleButton, handler: this.toggle }, - // All items within the secondary toolbar - // (except for toggleHandTool, hand_tool.js is responsible for it): - { element: this.presentationModeButton, - handler: this.presentationModeClick }, - { element: this.openFile, handler: this.openFileClick }, - { element: this.print, handler: this.printClick }, - { element: this.download, handler: this.downloadClick }, - { element: this.viewBookmark, handler: this.viewBookmarkClick }, - { element: this.firstPage, handler: this.firstPageClick }, - { element: this.lastPage, handler: this.lastPageClick }, - { element: this.pageRotateCw, handler: this.pageRotateCwClick }, - { element: this.pageRotateCcw, handler: this.pageRotateCcwClick }, - { element: this.documentPropertiesButton, - handler: this.documentPropertiesClick } - ]; - - for (var item in elements) { - var element = elements[item].element; - if (element) { - element.addEventListener('click', elements[item].handler.bind(this)); - } - } - }, - - // Event handling functions. - presentationModeClick: function secondaryToolbarPresentationModeClick(evt) { - PDFViewerApplication.requestPresentationMode(); - this.close(); - }, - - openFileClick: function secondaryToolbarOpenFileClick(evt) { - document.getElementById('fileInput').click(); - this.close(); - }, - - printClick: function secondaryToolbarPrintClick(evt) { - window.print(); - this.close(); - }, - - downloadClick: function secondaryToolbarDownloadClick(evt) { - PDFViewerApplication.download(); - this.close(); - }, - - viewBookmarkClick: function secondaryToolbarViewBookmarkClick(evt) { - this.close(); - }, - - firstPageClick: function secondaryToolbarFirstPageClick(evt) { - PDFViewerApplication.page = 1; - this.close(); - }, - - lastPageClick: function secondaryToolbarLastPageClick(evt) { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - } - this.close(); - }, - - pageRotateCwClick: function secondaryToolbarPageRotateCwClick(evt) { - PDFViewerApplication.rotatePages(90); - }, - - pageRotateCcwClick: function secondaryToolbarPageRotateCcwClick(evt) { - PDFViewerApplication.rotatePages(-90); - }, - - documentPropertiesClick: function secondaryToolbarDocumentPropsClick(evt) { - PDFViewerApplication.pdfDocumentProperties.open(); - this.close(); - }, - - // Misc. functions for interacting with the toolbar. - setMaxHeight: function secondaryToolbarSetMaxHeight(container) { - if (!container || !this.buttonContainer) { - return; - } - this.newContainerHeight = container.clientHeight; - if (this.previousContainerHeight === this.newContainerHeight) { - return; - } - this.buttonContainer.setAttribute('style', - 'max-height: ' + (this.newContainerHeight - SCROLLBAR_PADDING) + 'px;'); - this.previousContainerHeight = this.newContainerHeight; - }, - - open: function secondaryToolbarOpen() { - if (this.opened) { - return; - } - this.opened = true; - this.toggleButton.classList.add('toggled'); - this.toolbar.classList.remove('hidden'); - }, - - close: function secondaryToolbarClose(target) { - if (!this.opened) { - return; - } else if (target && !this.toolbar.contains(target)) { - return; - } - this.opened = false; - this.toolbar.classList.add('hidden'); - this.toggleButton.classList.remove('toggled'); - }, - - toggle: function secondaryToolbarToggle() { - if (this.opened) { - this.close(); - } else { - this.open(); - } - } -}; - - -var DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; // in ms -var DELAY_BEFORE_HIDING_CONTROLS = 3000; // in ms -var ACTIVE_SELECTOR = 'pdfPresentationMode'; -var CONTROLS_SELECTOR = 'pdfPresentationModeControls'; - -/** - * @typedef {Object} PDFPresentationModeOptions - * @property {HTMLDivElement} container - The container for the viewer element. - * @property {HTMLDivElement} viewer - (optional) The viewer element. - * @property {PDFViewer} pdfViewer - The document viewer. - * @property {PDFThumbnailViewer} pdfThumbnailViewer - (optional) The thumbnail - * viewer. - * @property {Array} contextMenuItems - (optional) The menuitems that are added - * to the context menu in Presentation Mode. - */ - -/** - * @class - */ -var PDFPresentationMode = (function PDFPresentationModeClosure() { - /** - * @constructs PDFPresentationMode - * @param {PDFPresentationModeOptions} options - */ - function PDFPresentationMode(options) { - this.container = options.container; - this.viewer = options.viewer || options.container.firstElementChild; - this.pdfViewer = options.pdfViewer; - this.pdfThumbnailViewer = options.pdfThumbnailViewer || null; - var contextMenuItems = options.contextMenuItems || null; - - this.active = false; - this.args = null; - this.contextMenuOpen = false; - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; - - if (contextMenuItems) { - for (var i = 0, ii = contextMenuItems.length; i < ii; i++) { - var item = contextMenuItems[i]; - item.element.addEventListener('click', function (handler) { - this.contextMenuOpen = false; - handler(); - }.bind(this, item.handler)); - } - } - } - - PDFPresentationMode.prototype = { - /** - * Request the browser to enter fullscreen mode. - * @returns {boolean} Indicating if the request was successful. - */ - request: function PDFPresentationMode_request() { - if (this.switchInProgress || this.active || - !this.viewer.hasChildNodes()) { - return false; - } - this._addFullscreenChangeListeners(); - this._setSwitchInProgress(); - this._notifyStateChange(); - - if (this.container.requestFullscreen) { - this.container.requestFullscreen(); - } else if (this.container.mozRequestFullScreen) { - this.container.mozRequestFullScreen(); - } else if (this.container.webkitRequestFullscreen) { - this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } else if (this.container.msRequestFullscreen) { - this.container.msRequestFullscreen(); - } else { - return false; - } - - this.args = { - page: this.pdfViewer.currentPageNumber, - previousScale: this.pdfViewer.currentScaleValue, - }; - - return true; - }, - - /** - * Switches page when the user scrolls (using a scroll wheel or a touchpad) - * with large enough motion, to prevent accidental page switches. - * @param {number} delta - The delta value from the mouse event. - */ - mouseScroll: function PDFPresentationMode_mouseScroll(delta) { - if (!this.active) { - return; - } - var MOUSE_SCROLL_COOLDOWN_TIME = 50; - var PAGE_SWITCH_THRESHOLD = 120; - var PageSwitchDirection = { - UP: -1, - DOWN: 1 - }; - - var currentTime = (new Date()).getTime(); - var storedTime = this.mouseScrollTimeStamp; - - // If we've already switched page, avoid accidentally switching again. - if (currentTime > storedTime && - currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { - return; - } - // If the scroll direction changed, reset the accumulated scroll delta. - if ((this.mouseScrollDelta > 0 && delta < 0) || - (this.mouseScrollDelta < 0 && delta > 0)) { - this._resetMouseScrollState(); - } - this.mouseScrollDelta += delta; - - if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { - var pageSwitchDirection = (this.mouseScrollDelta > 0) ? - PageSwitchDirection.UP : PageSwitchDirection.DOWN; - var page = this.pdfViewer.currentPageNumber; - this._resetMouseScrollState(); - - // If we're at the first/last page, we don't need to do anything. - if ((page === 1 && pageSwitchDirection === PageSwitchDirection.UP) || - (page === this.pdfViewer.pagesCount && - pageSwitchDirection === PageSwitchDirection.DOWN)) { - return; - } - this.pdfViewer.currentPageNumber = (page + pageSwitchDirection); - this.mouseScrollTimeStamp = currentTime; - } - }, - - get isFullscreen() { - return !!(document.fullscreenElement || - document.mozFullScreen || - document.webkitIsFullScreen || - document.msFullscreenElement); - }, - - /** - * @private - */ - _notifyStateChange: function PDFPresentationMode_notifyStateChange() { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('presentationmodechanged', true, true, { - active: this.active, - switchInProgress: !!this.switchInProgress - }); - window.dispatchEvent(event); - }, - - /** - * Used to initialize a timeout when requesting Presentation Mode, - * i.e. when the browser is requested to enter fullscreen mode. - * This timeout is used to prevent the current page from being scrolled - * partially, or completely, out of view when entering Presentation Mode. - * NOTE: This issue seems limited to certain zoom levels (e.g. page-width). - * @private - */ - _setSwitchInProgress: function PDFPresentationMode_setSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - } - this.switchInProgress = setTimeout(function switchInProgressTimeout() { - this._removeFullscreenChangeListeners(); - delete this.switchInProgress; - this._notifyStateChange(); - }.bind(this), DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS); - }, - - /** - * @private - */ - _resetSwitchInProgress: - function PDFPresentationMode_resetSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - delete this.switchInProgress; - } - }, - - /** - * @private - */ - _enter: function PDFPresentationMode_enter() { - this.active = true; - this._resetSwitchInProgress(); - this._notifyStateChange(); - this.container.classList.add(ACTIVE_SELECTOR); - - // Ensure that the correct page is scrolled into view when entering - // Presentation Mode, by waiting until fullscreen mode in enabled. - setTimeout(function enterPresentationModeTimeout() { - this.pdfViewer.currentPageNumber = this.args.page; - this.pdfViewer.currentScaleValue = 'page-fit'; - }.bind(this), 0); - - this._addWindowListeners(); - this._showControls(); - this.contextMenuOpen = false; - this.container.setAttribute('contextmenu', 'viewerContextMenu'); - - // Text selection is disabled in Presentation Mode, thus it's not possible - // for the user to deselect text that is selected (e.g. with "Select all") - // when entering Presentation Mode, hence we remove any active selection. - window.getSelection().removeAllRanges(); - }, - - /** - * @private - */ - _exit: function PDFPresentationMode_exit() { - var page = this.pdfViewer.currentPageNumber; - this.container.classList.remove(ACTIVE_SELECTOR); - - // Ensure that the correct page is scrolled into view when exiting - // Presentation Mode, by waiting until fullscreen mode is disabled. - setTimeout(function exitPresentationModeTimeout() { - this.active = false; - this._removeFullscreenChangeListeners(); - this._notifyStateChange(); - - this.pdfViewer.currentScaleValue = this.args.previousScale; - this.pdfViewer.currentPageNumber = page; - this.args = null; - }.bind(this), 0); - - this._removeWindowListeners(); - this._hideControls(); - this._resetMouseScrollState(); - this.container.removeAttribute('contextmenu'); - this.contextMenuOpen = false; - - if (this.pdfThumbnailViewer) { - this.pdfThumbnailViewer.ensureThumbnailVisible(page); - } - }, - - /** - * @private - */ - _mouseDown: function PDFPresentationMode_mouseDown(evt) { - if (this.contextMenuOpen) { - this.contextMenuOpen = false; - evt.preventDefault(); - return; - } - if (evt.button === 0) { - // Enable clicking of links in presentation mode. Please note: - // Only links pointing to destinations in the current PDF document work. - var isInternalLink = (evt.target.href && - evt.target.classList.contains('internalLink')); - if (!isInternalLink) { - // Unless an internal link was clicked, advance one page. - evt.preventDefault(); - this.pdfViewer.currentPageNumber += (evt.shiftKey ? -1 : 1); - } - } - }, - - /** - * @private - */ - _contextMenu: function PDFPresentationMode_contextMenu() { - this.contextMenuOpen = true; - }, - - /** - * @private - */ - _showControls: function PDFPresentationMode_showControls() { - if (this.controlsTimeout) { - clearTimeout(this.controlsTimeout); - } else { - this.container.classList.add(CONTROLS_SELECTOR); - } - this.controlsTimeout = setTimeout(function showControlsTimeout() { - this.container.classList.remove(CONTROLS_SELECTOR); - delete this.controlsTimeout; - }.bind(this), DELAY_BEFORE_HIDING_CONTROLS); - }, - - /** - * @private - */ - _hideControls: function PDFPresentationMode_hideControls() { - if (!this.controlsTimeout) { - return; - } - clearTimeout(this.controlsTimeout); - this.container.classList.remove(CONTROLS_SELECTOR); - delete this.controlsTimeout; - }, - - /** - * Resets the properties used for tracking mouse scrolling events. - * @private - */ - _resetMouseScrollState: - function PDFPresentationMode_resetMouseScrollState() { - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; - }, - - /** - * @private - */ - _addWindowListeners: function PDFPresentationMode_addWindowListeners() { - this.showControlsBind = this._showControls.bind(this); - this.mouseDownBind = this._mouseDown.bind(this); - this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this); - this.contextMenuBind = this._contextMenu.bind(this); - - window.addEventListener('mousemove', this.showControlsBind); - window.addEventListener('mousedown', this.mouseDownBind); - window.addEventListener('keydown', this.resetMouseScrollStateBind); - window.addEventListener('contextmenu', this.contextMenuBind); - }, - - /** - * @private - */ - _removeWindowListeners: - function PDFPresentationMode_removeWindowListeners() { - window.removeEventListener('mousemove', this.showControlsBind); - window.removeEventListener('mousedown', this.mouseDownBind); - window.removeEventListener('keydown', this.resetMouseScrollStateBind); - window.removeEventListener('contextmenu', this.contextMenuBind); - - delete this.showControlsBind; - delete this.mouseDownBind; - delete this.resetMouseScrollStateBind; - delete this.contextMenuBind; - }, - - /** - * @private - */ - _fullscreenChange: function PDFPresentationMode_fullscreenChange() { - if (this.isFullscreen) { - this._enter(); - } else { - this._exit(); - } - }, - - /** - * @private - */ - _addFullscreenChangeListeners: - function PDFPresentationMode_addFullscreenChangeListeners() { - this.fullscreenChangeBind = this._fullscreenChange.bind(this); - - window.addEventListener('fullscreenchange', this.fullscreenChangeBind); - window.addEventListener('mozfullscreenchange', this.fullscreenChangeBind); - window.addEventListener('webkitfullscreenchange', - this.fullscreenChangeBind); - window.addEventListener('MSFullscreenChange', this.fullscreenChangeBind); - }, - - /** - * @private - */ - _removeFullscreenChangeListeners: - function PDFPresentationMode_removeFullscreenChangeListeners() { - window.removeEventListener('fullscreenchange', this.fullscreenChangeBind); - window.removeEventListener('mozfullscreenchange', - this.fullscreenChangeBind); - window.removeEventListener('webkitfullscreenchange', - this.fullscreenChangeBind); - window.removeEventListener('MSFullscreenChange', - this.fullscreenChangeBind); - - delete this.fullscreenChangeBind; - } - }; - - return PDFPresentationMode; -})(); - - -/* Copyright 2013 Rob Wu <gwnRob@gmail.com> - * https://github.com/Rob--W/grab-to-pan.js - * - * 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. - */ - -'use strict'; - -var GrabToPan = (function GrabToPanClosure() { - /** - * Construct a GrabToPan instance for a given HTML element. - * @param options.element {Element} - * @param options.ignoreTarget {function} optional. See `ignoreTarget(node)` - * @param options.onActiveChanged {function(boolean)} optional. Called - * when grab-to-pan is (de)activated. The first argument is a boolean that - * shows whether grab-to-pan is activated. - */ - function GrabToPan(options) { - this.element = options.element; - this.document = options.element.ownerDocument; - if (typeof options.ignoreTarget === 'function') { - this.ignoreTarget = options.ignoreTarget; - } - this.onActiveChanged = options.onActiveChanged; - - // Bind the contexts to ensure that `this` always points to - // the GrabToPan instance. - this.activate = this.activate.bind(this); - this.deactivate = this.deactivate.bind(this); - this.toggle = this.toggle.bind(this); - this._onmousedown = this._onmousedown.bind(this); - this._onmousemove = this._onmousemove.bind(this); - this._endPan = this._endPan.bind(this); - - // This overlay will be inserted in the document when the mouse moves during - // a grab operation, to ensure that the cursor has the desired appearance. - var overlay = this.overlay = document.createElement('div'); - overlay.className = 'grab-to-pan-grabbing'; - } - GrabToPan.prototype = { - /** - * Class name of element which can be grabbed - */ - CSS_CLASS_GRAB: 'grab-to-pan-grab', - - /** - * Bind a mousedown event to the element to enable grab-detection. - */ - activate: function GrabToPan_activate() { - if (!this.active) { - this.active = true; - this.element.addEventListener('mousedown', this._onmousedown, true); - this.element.classList.add(this.CSS_CLASS_GRAB); - if (this.onActiveChanged) { - this.onActiveChanged(true); - } - } - }, - - /** - * Removes all events. Any pending pan session is immediately stopped. - */ - deactivate: function GrabToPan_deactivate() { - if (this.active) { - this.active = false; - this.element.removeEventListener('mousedown', this._onmousedown, true); - this._endPan(); - this.element.classList.remove(this.CSS_CLASS_GRAB); - if (this.onActiveChanged) { - this.onActiveChanged(false); - } - } - }, - - toggle: function GrabToPan_toggle() { - if (this.active) { - this.deactivate(); - } else { - this.activate(); - } - }, - - /** - * Whether to not pan if the target element is clicked. - * Override this method to change the default behaviour. - * - * @param node {Element} The target of the event - * @return {boolean} Whether to not react to the click event. - */ - ignoreTarget: function GrabToPan_ignoreTarget(node) { - // Use matchesSelector to check whether the clicked element - // is (a child of) an input element / link - return node[matchesSelector]( - 'a[href], a[href] *, input, textarea, button, button *, select, option' - ); - }, - - /** - * @private - */ - _onmousedown: function GrabToPan__onmousedown(event) { - if (event.button !== 0 || this.ignoreTarget(event.target)) { - return; - } - if (event.originalTarget) { - try { - /* jshint expr:true */ - event.originalTarget.tagName; - } catch (e) { - // Mozilla-specific: element is a scrollbar (XUL element) - return; - } - } - - this.scrollLeftStart = this.element.scrollLeft; - this.scrollTopStart = this.element.scrollTop; - this.clientXStart = event.clientX; - this.clientYStart = event.clientY; - this.document.addEventListener('mousemove', this._onmousemove, true); - this.document.addEventListener('mouseup', this._endPan, true); - // When a scroll event occurs before a mousemove, assume that the user - // dragged a scrollbar (necessary for Opera Presto, Safari and IE) - // (not needed for Chrome/Firefox) - this.element.addEventListener('scroll', this._endPan, true); - event.preventDefault(); - event.stopPropagation(); - this.document.documentElement.classList.add(this.CSS_CLASS_GRABBING); - - var focusedElement = document.activeElement; - if (focusedElement && !focusedElement.contains(event.target)) { - focusedElement.blur(); - } - }, - - /** - * @private - */ - _onmousemove: function GrabToPan__onmousemove(event) { - this.element.removeEventListener('scroll', this._endPan, true); - if (isLeftMouseReleased(event)) { - this._endPan(); - return; - } - var xDiff = event.clientX - this.clientXStart; - var yDiff = event.clientY - this.clientYStart; - this.element.scrollTop = this.scrollTopStart - yDiff; - this.element.scrollLeft = this.scrollLeftStart - xDiff; - if (!this.overlay.parentNode) { - document.body.appendChild(this.overlay); - } - }, - - /** - * @private - */ - _endPan: function GrabToPan__endPan() { - this.element.removeEventListener('scroll', this._endPan, true); - this.document.removeEventListener('mousemove', this._onmousemove, true); - this.document.removeEventListener('mouseup', this._endPan, true); - if (this.overlay.parentNode) { - this.overlay.parentNode.removeChild(this.overlay); - } - } - }; - - // Get the correct (vendor-prefixed) name of the matches method. - var matchesSelector; - ['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function(prefix) { - var name = prefix + 'atches'; - if (name in document.documentElement) { - matchesSelector = name; - } - name += 'Selector'; - if (name in document.documentElement) { - matchesSelector = name; - } - return matchesSelector; // If found, then truthy, and [].some() ends. - }); - - // Browser sniffing because it's impossible to feature-detect - // whether event.which for onmousemove is reliable - var isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9; - var chrome = window.chrome; - var isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app); - // ^ Chrome 15+ ^ Opera 15+ - var isSafari6plus = /Apple/.test(navigator.vendor) && - /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent); - - /** - * Whether the left mouse is not pressed. - * @param event {MouseEvent} - * @return {boolean} True if the left mouse button is not pressed. - * False if unsure or if the left mouse button is pressed. - */ - function isLeftMouseReleased(event) { - if ('buttons' in event && isNotIEorIsIE10plus) { - // http://www.w3.org/TR/DOM-Level-3-Events/#events-MouseEvent-buttons - // Firefox 15+ - // Internet Explorer 10+ - return !(event.buttons | 1); - } - if (isChrome15OrOpera15plus || isSafari6plus) { - // Chrome 14+ - // Opera 15+ - // Safari 6.0+ - return event.which === 0; - } - } - - return GrabToPan; -})(); - -var HandTool = { - initialize: function handToolInitialize(options) { - var toggleHandTool = options.toggleHandTool; - this.handTool = new GrabToPan({ - element: options.container, - onActiveChanged: function(isActive) { - if (!toggleHandTool) { - return; - } - if (isActive) { - toggleHandTool.title = - mozL10n.get('hand_tool_disable.title', null, 'Disable hand tool'); - toggleHandTool.firstElementChild.textContent = - mozL10n.get('hand_tool_disable_label', null, 'Disable hand tool'); - } else { - toggleHandTool.title = - mozL10n.get('hand_tool_enable.title', null, 'Enable hand tool'); - toggleHandTool.firstElementChild.textContent = - mozL10n.get('hand_tool_enable_label', null, 'Enable hand tool'); - } - } - }); - if (toggleHandTool) { - toggleHandTool.addEventListener('click', this.toggle.bind(this), false); - - window.addEventListener('localized', function (evt) { - Preferences.get('enableHandToolOnLoad').then(function resolved(value) { - if (value) { - this.handTool.activate(); - } - }.bind(this), function rejected(reason) {}); - }.bind(this)); - - window.addEventListener('presentationmodechanged', function (evt) { - if (evt.detail.switchInProgress) { - return; - } - if (evt.detail.active) { - this.enterPresentationMode(); - } else { - this.exitPresentationMode(); - } - }.bind(this)); - } - }, - - toggle: function handToolToggle() { - this.handTool.toggle(); - SecondaryToolbar.close(); - }, - - enterPresentationMode: function handToolEnterPresentationMode() { - if (this.handTool.active) { - this.wasActive = true; - this.handTool.deactivate(); - } - }, - - exitPresentationMode: function handToolExitPresentationMode() { - if (this.wasActive) { - this.wasActive = null; - this.handTool.activate(); - } - } -}; - - -var OverlayManager = { - overlays: {}, - active: null, - - /** - * @param {string} name The name of the overlay that is registered. This must - * be equal to the ID of the overlay's DOM element. - * @param {function} callerCloseMethod (optional) The method that, if present, - * will call OverlayManager.close from the Object - * registering the overlay. Access to this method is - * necessary in order to run cleanup code when e.g. - * the overlay is force closed. The default is null. - * @param {boolean} canForceClose (optional) Indicates if opening the overlay - * will close an active overlay. The default is false. - * @returns {Promise} A promise that is resolved when the overlay has been - * registered. - */ - register: function overlayManagerRegister(name, - callerCloseMethod, canForceClose) { - return new Promise(function (resolve) { - var element, container; - if (!name || !(element = document.getElementById(name)) || - !(container = element.parentNode)) { - throw new Error('Not enough parameters.'); - } else if (this.overlays[name]) { - throw new Error('The overlay is already registered.'); - } - this.overlays[name] = { element: element, - container: container, - callerCloseMethod: (callerCloseMethod || null), - canForceClose: (canForceClose || false) }; - resolve(); - }.bind(this)); - }, - - /** - * @param {string} name The name of the overlay that is unregistered. - * @returns {Promise} A promise that is resolved when the overlay has been - * unregistered. - */ - unregister: function overlayManagerUnregister(name) { - return new Promise(function (resolve) { - if (!this.overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (this.active === name) { - throw new Error('The overlay cannot be removed while it is active.'); - } - delete this.overlays[name]; - - resolve(); - }.bind(this)); - }, - - /** - * @param {string} name The name of the overlay that should be opened. - * @returns {Promise} A promise that is resolved when the overlay has been - * opened. - */ - open: function overlayManagerOpen(name) { - return new Promise(function (resolve) { - if (!this.overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (this.active) { - if (this.overlays[name].canForceClose) { - this._closeThroughCaller(); - } else if (this.active === name) { - throw new Error('The overlay is already active.'); - } else { - throw new Error('Another overlay is currently active.'); - } - } - this.active = name; - this.overlays[this.active].element.classList.remove('hidden'); - this.overlays[this.active].container.classList.remove('hidden'); - - window.addEventListener('keydown', this._keyDown); - resolve(); - }.bind(this)); - }, - - /** - * @param {string} name The name of the overlay that should be closed. - * @returns {Promise} A promise that is resolved when the overlay has been - * closed. - */ - close: function overlayManagerClose(name) { - return new Promise(function (resolve) { - if (!this.overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (!this.active) { - throw new Error('The overlay is currently not active.'); - } else if (this.active !== name) { - throw new Error('Another overlay is currently active.'); - } - this.overlays[this.active].container.classList.add('hidden'); - this.overlays[this.active].element.classList.add('hidden'); - this.active = null; - - window.removeEventListener('keydown', this._keyDown); - resolve(); - }.bind(this)); - }, - - /** - * @private - */ - _keyDown: function overlayManager_keyDown(evt) { - var self = OverlayManager; - if (self.active && evt.keyCode === 27) { // Esc key. - self._closeThroughCaller(); - evt.preventDefault(); - } - }, - - /** - * @private - */ - _closeThroughCaller: function overlayManager_closeThroughCaller() { - if (this.overlays[this.active].callerCloseMethod) { - this.overlays[this.active].callerCloseMethod(); - } - if (this.active) { - this.close(this.active); - } - } -}; - - -var PasswordPrompt = { - overlayName: null, - updatePassword: null, - reason: null, - passwordField: null, - passwordText: null, - passwordSubmit: null, - passwordCancel: null, - - initialize: function secondaryToolbarInitialize(options) { - this.overlayName = options.overlayName; - this.passwordField = options.passwordField; - this.passwordText = options.passwordText; - this.passwordSubmit = options.passwordSubmit; - this.passwordCancel = options.passwordCancel; - - // Attach the event listeners. - this.passwordSubmit.addEventListener('click', - this.verifyPassword.bind(this)); - - this.passwordCancel.addEventListener('click', this.close.bind(this)); - - this.passwordField.addEventListener('keydown', function (e) { - if (e.keyCode === 13) { // Enter key - this.verifyPassword(); - } - }.bind(this)); - - OverlayManager.register(this.overlayName, this.close.bind(this), true); - }, - - open: function passwordPromptOpen() { - OverlayManager.open(this.overlayName).then(function () { - this.passwordField.focus(); - - var promptString = mozL10n.get('password_label', null, - 'Enter the password to open this PDF file.'); - - if (this.reason === PDFJS.PasswordResponses.INCORRECT_PASSWORD) { - promptString = mozL10n.get('password_invalid', null, - 'Invalid password. Please try again.'); - } - - this.passwordText.textContent = promptString; - }.bind(this)); - }, - - close: function passwordPromptClose() { - OverlayManager.close(this.overlayName).then(function () { - this.passwordField.value = ''; - }.bind(this)); - }, - - verifyPassword: function passwordPromptVerifyPassword() { - var password = this.passwordField.value; - if (password && password.length > 0) { - this.close(); - return this.updatePassword(password); - } - } -}; - - -/** - * @typedef {Object} PDFDocumentPropertiesOptions - * @property {string} overlayName - Name/identifier for the overlay. - * @property {Object} fields - Names and elements of the overlay's fields. - * @property {HTMLButtonElement} closeButton - Button for closing the overlay. - */ - -/** - * @class - */ -var PDFDocumentProperties = (function PDFDocumentPropertiesClosure() { - /** - * @constructs PDFDocumentProperties - * @param {PDFDocumentPropertiesOptions} options - */ - function PDFDocumentProperties(options) { - this.fields = options.fields; - this.overlayName = options.overlayName; - - this.rawFileSize = 0; - this.url = null; - this.pdfDocument = null; - - // Bind the event listener for the Close button. - if (options.closeButton) { - options.closeButton.addEventListener('click', this.close.bind(this)); - } - - this.dataAvailablePromise = new Promise(function (resolve) { - this.resolveDataAvailable = resolve; - }.bind(this)); - - OverlayManager.register(this.overlayName, this.close.bind(this)); - } - - PDFDocumentProperties.prototype = { - /** - * Open the document properties overlay. - */ - open: function PDFDocumentProperties_open() { - Promise.all([OverlayManager.open(this.overlayName), - this.dataAvailablePromise]).then(function () { - this._getProperties(); - }.bind(this)); - }, - - /** - * Close the document properties overlay. - */ - close: function PDFDocumentProperties_close() { - OverlayManager.close(this.overlayName); - }, - - /** - * Set the file size of the PDF document. This method is used to - * update the file size in the document properties overlay once it - * is known so we do not have to wait until the entire file is loaded. - * - * @param {number} fileSize - The file size of the PDF document. - */ - setFileSize: function PDFDocumentProperties_setFileSize(fileSize) { - if (fileSize > 0) { - this.rawFileSize = fileSize; - } - }, - - /** - * Set a reference to the PDF document and the URL in order - * to populate the overlay fields with the document properties. - * Note that the overlay will contain no information if this method - * is not called. - * - * @param {Object} pdfDocument - A reference to the PDF document. - * @param {string} url - The URL of the document. - */ - setDocumentAndUrl: - function PDFDocumentProperties_setDocumentAndUrl(pdfDocument, url) { - this.pdfDocument = pdfDocument; - this.url = url; - this.resolveDataAvailable(); - }, - - /** - * @private - */ - _getProperties: function PDFDocumentProperties_getProperties() { - if (!OverlayManager.active) { - // If the dialog was closed before dataAvailablePromise was resolved, - // don't bother updating the properties. - return; - } - // Get the file size (if it hasn't already been set). - this.pdfDocument.getDownloadInfo().then(function(data) { - if (data.length === this.rawFileSize) { - return; - } - this.setFileSize(data.length); - this._updateUI(this.fields['fileSize'], this._parseFileSize()); - }.bind(this)); - - // Get the document properties. - this.pdfDocument.getMetadata().then(function(data) { - var content = { - 'fileName': getPDFFileNameFromURL(this.url), - 'fileSize': this._parseFileSize(), - 'title': data.info.Title, - 'author': data.info.Author, - 'subject': data.info.Subject, - 'keywords': data.info.Keywords, - 'creationDate': this._parseDate(data.info.CreationDate), - 'modificationDate': this._parseDate(data.info.ModDate), - 'creator': data.info.Creator, - 'producer': data.info.Producer, - 'version': data.info.PDFFormatVersion, - 'pageCount': this.pdfDocument.numPages - }; - - // Show the properties in the dialog. - for (var identifier in content) { - this._updateUI(this.fields[identifier], content[identifier]); - } - }.bind(this)); - }, - - /** - * @private - */ - _updateUI: function PDFDocumentProperties_updateUI(field, content) { - if (field && content !== undefined && content !== '') { - field.textContent = content; - } - }, - - /** - * @private - */ - _parseFileSize: function PDFDocumentProperties_parseFileSize() { - var fileSize = this.rawFileSize, kb = fileSize / 1024; - if (!kb) { - return; - } else if (kb < 1024) { - return mozL10n.get('document_properties_kb', { - size_kb: (+kb.toPrecision(3)).toLocaleString(), - size_b: fileSize.toLocaleString() - }, '{{size_kb}} KB ({{size_b}} bytes)'); - } else { - return mozL10n.get('document_properties_mb', { - size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(), - size_b: fileSize.toLocaleString() - }, '{{size_mb}} MB ({{size_b}} bytes)'); - } - }, - - /** - * @private - */ - _parseDate: function PDFDocumentProperties_parseDate(inputDate) { - // This is implemented according to the PDF specification, but note that - // Adobe Reader doesn't handle changing the date to universal time - // and doesn't use the user's time zone (they're effectively ignoring - // the HH' and mm' parts of the date string). - var dateToParse = inputDate; - if (dateToParse === undefined) { - return ''; - } - - // Remove the D: prefix if it is available. - if (dateToParse.substring(0,2) === 'D:') { - dateToParse = dateToParse.substring(2); - } - - // Get all elements from the PDF date string. - // JavaScript's Date object expects the month to be between - // 0 and 11 instead of 1 and 12, so we're correcting for this. - var year = parseInt(dateToParse.substring(0,4), 10); - var month = parseInt(dateToParse.substring(4,6), 10) - 1; - var day = parseInt(dateToParse.substring(6,8), 10); - var hours = parseInt(dateToParse.substring(8,10), 10); - var minutes = parseInt(dateToParse.substring(10,12), 10); - var seconds = parseInt(dateToParse.substring(12,14), 10); - var utRel = dateToParse.substring(14,15); - var offsetHours = parseInt(dateToParse.substring(15,17), 10); - var offsetMinutes = parseInt(dateToParse.substring(18,20), 10); - - // As per spec, utRel = 'Z' means equal to universal time. - // The other cases ('-' and '+') have to be handled here. - if (utRel === '-') { - hours += offsetHours; - minutes += offsetMinutes; - } else if (utRel === '+') { - hours -= offsetHours; - minutes -= offsetMinutes; - } - - // Return the new date format from the user's locale. - var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds)); - var dateString = date.toLocaleDateString(); - var timeString = date.toLocaleTimeString(); - return mozL10n.get('document_properties_date_string', - {date: dateString, time: timeString}, - '{{date}}, {{time}}'); - } - }; - - return PDFDocumentProperties; -})(); - - -var PresentationModeState = { - UNKNOWN: 0, - NORMAL: 1, - CHANGING: 2, - FULLSCREEN: 3, -}; - -var IGNORE_CURRENT_POSITION_ON_ZOOM = false; -var DEFAULT_CACHE_SIZE = 10; - - -var CLEANUP_TIMEOUT = 30000; - -var RenderingStates = { - INITIAL: 0, - RUNNING: 1, - PAUSED: 2, - FINISHED: 3 -}; - -/** - * Controls rendering of the views for pages and thumbnails. - * @class - */ -var PDFRenderingQueue = (function PDFRenderingQueueClosure() { - /** - * @constructs - */ - function PDFRenderingQueue() { - this.pdfViewer = null; - this.pdfThumbnailViewer = null; - this.onIdle = null; - - this.highestPriorityPage = null; - this.idleTimeout = null; - this.printing = false; - this.isThumbnailViewEnabled = false; - } - - PDFRenderingQueue.prototype = /** @lends PDFRenderingQueue.prototype */ { - /** - * @param {PDFViewer} pdfViewer - */ - setViewer: function PDFRenderingQueue_setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - }, - - /** - * @param {PDFThumbnailViewer} pdfThumbnailViewer - */ - setThumbnailViewer: - function PDFRenderingQueue_setThumbnailViewer(pdfThumbnailViewer) { - this.pdfThumbnailViewer = pdfThumbnailViewer; - }, - - /** - * @param {IRenderableView} view - * @returns {boolean} - */ - isHighestPriority: function PDFRenderingQueue_isHighestPriority(view) { - return this.highestPriorityPage === view.renderingId; - }, - - renderHighestPriority: function - PDFRenderingQueue_renderHighestPriority(currentlyVisiblePages) { - if (this.idleTimeout) { - clearTimeout(this.idleTimeout); - this.idleTimeout = null; - } - - // Pages have a higher priority than thumbnails, so check them first. - if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { - return; - } - // No pages needed rendering so check thumbnails. - if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) { - if (this.pdfThumbnailViewer.forceRendering()) { - return; - } - } - - if (this.printing) { - // If printing is currently ongoing do not reschedule cleanup. - return; - } - - if (this.onIdle) { - this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); - } - }, - - getHighestPriority: function - PDFRenderingQueue_getHighestPriority(visible, views, scrolledDown) { - // The state has changed figure out which page has the highest priority to - // render next (if any). - // Priority: - // 1 visible pages - // 2 if last scrolled down page after the visible pages - // 2 if last scrolled up page before the visible pages - var visibleViews = visible.views; - - var numVisible = visibleViews.length; - if (numVisible === 0) { - return false; - } - for (var i = 0; i < numVisible; ++i) { - var view = visibleViews[i].view; - if (!this.isViewFinished(view)) { - return view; - } - } - - // All the visible views have rendered, try to render next/previous pages. - if (scrolledDown) { - var nextPageIndex = visible.last.id; - // ID's start at 1 so no need to add 1. - if (views[nextPageIndex] && - !this.isViewFinished(views[nextPageIndex])) { - return views[nextPageIndex]; - } - } else { - var previousPageIndex = visible.first.id - 2; - if (views[previousPageIndex] && - !this.isViewFinished(views[previousPageIndex])) { - return views[previousPageIndex]; - } - } - // Everything that needs to be rendered has been. - return null; - }, - - /** - * @param {IRenderableView} view - * @returns {boolean} - */ - isViewFinished: function PDFRenderingQueue_isViewFinished(view) { - return view.renderingState === RenderingStates.FINISHED; - }, - - /** - * Render a page or thumbnail view. This calls the appropriate function - * based on the views state. If the view is already rendered it will return - * false. - * @param {IRenderableView} view - */ - renderView: function PDFRenderingQueue_renderView(view) { - var state = view.renderingState; - switch (state) { - case RenderingStates.FINISHED: - return false; - case RenderingStates.PAUSED: - this.highestPriorityPage = view.renderingId; - view.resume(); - break; - case RenderingStates.RUNNING: - this.highestPriorityPage = view.renderingId; - break; - case RenderingStates.INITIAL: - this.highestPriorityPage = view.renderingId; - var continueRendering = function () { - this.renderHighestPriority(); - }.bind(this); - view.draw().then(continueRendering, continueRendering); - break; - } - return true; - }, - }; - - return PDFRenderingQueue; -})(); - - -var TEXT_LAYER_RENDER_DELAY = 200; // ms - -/** - * @typedef {Object} PDFPageViewOptions - * @property {HTMLDivElement} container - The viewer element. - * @property {number} id - The page unique ID (normally its number). - * @property {number} scale - The page scale display. - * @property {PageViewport} defaultViewport - The page viewport. - * @property {PDFRenderingQueue} renderingQueue - The rendering queue object. - * @property {IPDFTextLayerFactory} textLayerFactory - * @property {IPDFAnnotationsLayerFactory} annotationsLayerFactory - */ - -/** - * @class - * @implements {IRenderableView} - */ -var PDFPageView = (function PDFPageViewClosure() { - /** - * @constructs PDFPageView - * @param {PDFPageViewOptions} options - */ - function PDFPageView(options) { - var container = options.container; - var id = options.id; - var scale = options.scale; - var defaultViewport = options.defaultViewport; - var renderingQueue = options.renderingQueue; - var textLayerFactory = options.textLayerFactory; - var annotationsLayerFactory = options.annotationsLayerFactory; - - this.id = id; - this.renderingId = 'page' + id; - - this.rotation = 0; - this.scale = scale || 1.0; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this.hasRestrictedScaling = false; - - this.renderingQueue = renderingQueue; - this.textLayerFactory = textLayerFactory; - this.annotationsLayerFactory = annotationsLayerFactory; - - this.renderingState = RenderingStates.INITIAL; - this.resume = null; - - this.onBeforeDraw = null; - this.onAfterDraw = null; - - this.textLayer = null; - - this.zoomLayer = null; - - this.annotationLayer = null; - - var div = document.createElement('div'); - div.id = 'pageContainer' + this.id; - div.className = 'page'; - div.style.width = Math.floor(this.viewport.width) + 'px'; - div.style.height = Math.floor(this.viewport.height) + 'px'; - div.setAttribute('data-page-number', this.id); - this.div = div; - - container.appendChild(div); - } - - PDFPageView.prototype = { - setPdfPage: function PDFPageView_setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport(this.scale * CSS_UNITS, - totalRotation); - this.stats = pdfPage.stats; - this.reset(); - }, - - destroy: function PDFPageView_destroy() { - this.zoomLayer = null; - this.reset(); - if (this.pdfPage) { - this.pdfPage.cleanup(); - } - }, - - reset: function PDFPageView_reset(keepZoomLayer, keepAnnotations) { - if (this.renderTask) { - this.renderTask.cancel(); - } - this.resume = null; - this.renderingState = RenderingStates.INITIAL; - - var div = this.div; - div.style.width = Math.floor(this.viewport.width) + 'px'; - div.style.height = Math.floor(this.viewport.height) + 'px'; - - var childNodes = div.childNodes; - var currentZoomLayerNode = (keepZoomLayer && this.zoomLayer) || null; - var currentAnnotationNode = (keepAnnotations && this.annotationLayer && - this.annotationLayer.div) || null; - for (var i = childNodes.length - 1; i >= 0; i--) { - var node = childNodes[i]; - if (currentZoomLayerNode === node || currentAnnotationNode === node) { - continue; - } - div.removeChild(node); - } - div.removeAttribute('data-loaded'); - - if (currentAnnotationNode) { - // Hide annotationLayer until all elements are resized - // so they are not displayed on the already-resized page - this.annotationLayer.hide(); - } else { - this.annotationLayer = null; - } - - if (this.canvas && !currentZoomLayerNode) { - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - - this.loadingIconDiv = document.createElement('div'); - this.loadingIconDiv.className = 'loadingIcon'; - div.appendChild(this.loadingIconDiv); - }, - - update: function PDFPageView_update(scale, rotation) { - this.scale = scale || this.scale; - - if (typeof rotation !== 'undefined') { - this.rotation = rotation; - } - - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: this.scale * CSS_UNITS, - rotation: totalRotation - }); - - var isScalingRestricted = false; - if (this.canvas && PDFJS.maxCanvasPixels > 0) { - var ctx = this.canvas.getContext('2d'); - var outputScale = getOutputScale(ctx); - var pixelsInViewport = this.viewport.width * this.viewport.height; - var maxScale = Math.sqrt(PDFJS.maxCanvasPixels / pixelsInViewport); - if (((Math.floor(this.viewport.width) * outputScale.sx) | 0) * - ((Math.floor(this.viewport.height) * outputScale.sy) | 0) > - PDFJS.maxCanvasPixels) { - isScalingRestricted = true; - } - } - - if (this.canvas) { - if (PDFJS.useOnlyCssZoom || - (this.hasRestrictedScaling && isScalingRestricted)) { - this.cssTransform(this.canvas, true); - - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagerendered', true, true, { - pageNumber: this.id, - cssTransform: true, - }); - this.div.dispatchEvent(event); - - return; - } - if (!this.zoomLayer) { - this.zoomLayer = this.canvas.parentNode; - this.zoomLayer.style.position = 'absolute'; - } - } - if (this.zoomLayer) { - this.cssTransform(this.zoomLayer.firstChild); - } - this.reset(/* keepZoomLayer = */ true, /* keepAnnotations = */ true); - }, - - /** - * Called when moved in the parent's container. - */ - updatePosition: function PDFPageView_updatePosition() { - if (this.textLayer) { - this.textLayer.render(TEXT_LAYER_RENDER_DELAY); - } - }, - - cssTransform: function PDFPageView_transform(canvas, redrawAnnotations) { - // Scale canvas, canvas wrapper, and page container. - var width = this.viewport.width; - var height = this.viewport.height; - var div = this.div; - canvas.style.width = canvas.parentNode.style.width = div.style.width = - Math.floor(width) + 'px'; - canvas.style.height = canvas.parentNode.style.height = div.style.height = - Math.floor(height) + 'px'; - // The canvas may have been originally rotated, rotate relative to that. - var relativeRotation = this.viewport.rotation - canvas._viewport.rotation; - var absRotation = Math.abs(relativeRotation); - var scaleX = 1, scaleY = 1; - if (absRotation === 90 || absRotation === 270) { - // Scale x and y because of the rotation. - scaleX = height / width; - scaleY = width / height; - } - var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + - 'scale(' + scaleX + ',' + scaleY + ')'; - CustomStyle.setProp('transform', canvas, cssTransform); - - if (this.textLayer) { - // Rotating the text layer is more complicated since the divs inside the - // the text layer are rotated. - // TODO: This could probably be simplified by drawing the text layer in - // one orientation then rotating overall. - var textLayerViewport = this.textLayer.viewport; - var textRelativeRotation = this.viewport.rotation - - textLayerViewport.rotation; - var textAbsRotation = Math.abs(textRelativeRotation); - var scale = width / textLayerViewport.width; - if (textAbsRotation === 90 || textAbsRotation === 270) { - scale = width / textLayerViewport.height; - } - var textLayerDiv = this.textLayer.textLayerDiv; - var transX, transY; - switch (textAbsRotation) { - case 0: - transX = transY = 0; - break; - case 90: - transX = 0; - transY = '-' + textLayerDiv.style.height; - break; - case 180: - transX = '-' + textLayerDiv.style.width; - transY = '-' + textLayerDiv.style.height; - break; - case 270: - transX = '-' + textLayerDiv.style.width; - transY = 0; - break; - default: - console.error('Bad rotation value.'); - break; - } - CustomStyle.setProp('transform', textLayerDiv, - 'rotate(' + textAbsRotation + 'deg) ' + - 'scale(' + scale + ', ' + scale + ') ' + - 'translate(' + transX + ', ' + transY + ')'); - CustomStyle.setProp('transformOrigin', textLayerDiv, '0% 0%'); - } - - if (redrawAnnotations && this.annotationLayer) { - this.annotationLayer.setupAnnotations(this.viewport); - } - }, - - get width() { - return this.viewport.width; - }, - - get height() { - return this.viewport.height; - }, - - getPagePoint: function PDFPageView_getPagePoint(x, y) { - return this.viewport.convertToPdfPoint(x, y); - }, - - draw: function PDFPageView_draw() { - if (this.renderingState !== RenderingStates.INITIAL) { - console.error('Must be in new state before drawing'); - } - - this.renderingState = RenderingStates.RUNNING; - - var pdfPage = this.pdfPage; - var viewport = this.viewport; - var div = this.div; - // Wrap the canvas so if it has a css transform for highdpi the overflow - // will be hidden in FF. - var canvasWrapper = document.createElement('div'); - canvasWrapper.style.width = div.style.width; - canvasWrapper.style.height = div.style.height; - canvasWrapper.classList.add('canvasWrapper'); - - var canvas = document.createElement('canvas'); - canvas.id = 'page' + this.id; - canvasWrapper.appendChild(canvas); - if (this.annotationLayer && this.annotationLayer.div) { - // annotationLayer needs to stay on top - div.insertBefore(canvasWrapper, this.annotationLayer.div); - } else { - div.appendChild(canvasWrapper); - } - this.canvas = canvas; - - var ctx = canvas.getContext('2d'); - var outputScale = getOutputScale(ctx); - - if (PDFJS.useOnlyCssZoom) { - var actualSizeViewport = viewport.clone({scale: CSS_UNITS}); - // Use a scale that will make the canvas be the original intended size - // of the page. - outputScale.sx *= actualSizeViewport.width / viewport.width; - outputScale.sy *= actualSizeViewport.height / viewport.height; - outputScale.scaled = true; - } - - if (PDFJS.maxCanvasPixels > 0) { - var pixelsInViewport = viewport.width * viewport.height; - var maxScale = Math.sqrt(PDFJS.maxCanvasPixels / pixelsInViewport); - if (outputScale.sx > maxScale || outputScale.sy > maxScale) { - outputScale.sx = maxScale; - outputScale.sy = maxScale; - outputScale.scaled = true; - this.hasRestrictedScaling = true; - } else { - this.hasRestrictedScaling = false; - } - } - - var sfx = approximateFraction(outputScale.sx); - var sfy = approximateFraction(outputScale.sy); - canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]); - canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]); - canvas.style.width = roundToDivide(viewport.width, sfx[1]) + 'px'; - canvas.style.height = roundToDivide(viewport.height, sfy[1]) + 'px'; - // Add the viewport so it's known what it was originally drawn with. - canvas._viewport = viewport; - - var textLayerDiv = null; - var textLayer = null; - if (this.textLayerFactory) { - textLayerDiv = document.createElement('div'); - textLayerDiv.className = 'textLayer'; - textLayerDiv.style.width = canvasWrapper.style.width; - textLayerDiv.style.height = canvasWrapper.style.height; - if (this.annotationLayer && this.annotationLayer.div) { - // annotationLayer needs to stay on top - div.insertBefore(textLayerDiv, this.annotationLayer.div); - } else { - div.appendChild(textLayerDiv); - } - - textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, - this.id - 1, - this.viewport); - } - this.textLayer = textLayer; - - if (outputScale.scaled) { - // Used by the mozCurrentTransform polyfill in src/display/canvas.js. - ctx._transformMatrix = [outputScale.sx, 0, 0, outputScale.sy, 0, 0]; - ctx.scale(outputScale.sx, outputScale.sy); - } - - var resolveRenderPromise, rejectRenderPromise; - var promise = new Promise(function (resolve, reject) { - resolveRenderPromise = resolve; - rejectRenderPromise = reject; - }); - - // Rendering area - - var self = this; - function pageViewDrawCallback(error) { - // The renderTask may have been replaced by a new one, so only remove - // the reference to the renderTask if it matches the one that is - // triggering this callback. - if (renderTask === self.renderTask) { - self.renderTask = null; - } - - if (error === 'cancelled') { - rejectRenderPromise(error); - return; - } - - self.renderingState = RenderingStates.FINISHED; - - if (self.loadingIconDiv) { - div.removeChild(self.loadingIconDiv); - delete self.loadingIconDiv; - } - - if (self.zoomLayer) { - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - var zoomLayerCanvas = self.zoomLayer.firstChild; - zoomLayerCanvas.width = 0; - zoomLayerCanvas.height = 0; - - div.removeChild(self.zoomLayer); - self.zoomLayer = null; - } - - self.error = error; - self.stats = pdfPage.stats; - if (self.onAfterDraw) { - self.onAfterDraw(); - } - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagerendered', true, true, { - pageNumber: self.id, - cssTransform: false, - }); - div.dispatchEvent(event); - // This custom event is deprecated, and will be removed in the future, - // please use the |pagerendered| event instead. - var deprecatedEvent = document.createEvent('CustomEvent'); - deprecatedEvent.initCustomEvent('pagerender', true, true, { - pageNumber: pdfPage.pageNumber - }); - div.dispatchEvent(deprecatedEvent); - - if (!error) { - resolveRenderPromise(undefined); - } else { - rejectRenderPromise(error); - } - } - - var renderContinueCallback = null; - if (this.renderingQueue) { - renderContinueCallback = function renderContinueCallback(cont) { - if (!self.renderingQueue.isHighestPriority(self)) { - self.renderingState = RenderingStates.PAUSED; - self.resume = function resumeCallback() { - self.renderingState = RenderingStates.RUNNING; - cont(); - }; - return; - } - cont(); - }; - } - - var renderContext = { - canvasContext: ctx, - viewport: this.viewport, - // intent: 'default', // === 'display' - }; - var renderTask = this.renderTask = this.pdfPage.render(renderContext); - renderTask.onContinue = renderContinueCallback; - - this.renderTask.promise.then( - function pdfPageRenderCallback() { - pageViewDrawCallback(null); - if (textLayer) { - self.pdfPage.getTextContent().then( - function textContentResolved(textContent) { - textLayer.setTextContent(textContent); - textLayer.render(TEXT_LAYER_RENDER_DELAY); - } - ); - } - }, - function pdfPageRenderError(error) { - pageViewDrawCallback(error); - } - ); - - if (this.annotationsLayerFactory) { - if (!this.annotationLayer) { - this.annotationLayer = this.annotationsLayerFactory. - createAnnotationsLayerBuilder(div, this.pdfPage); - } - this.annotationLayer.setupAnnotations(this.viewport); - } - div.setAttribute('data-loaded', true); - - if (self.onBeforeDraw) { - self.onBeforeDraw(); - } - return promise; - }, - - beforePrint: function PDFPageView_beforePrint() { - var pdfPage = this.pdfPage; - - var viewport = pdfPage.getViewport(1); - // Use the same hack we use for high dpi displays for printing to get - // better output until bug 811002 is fixed in FF. - var PRINT_OUTPUT_SCALE = 2; - var canvas = document.createElement('canvas'); - - // The logical size of the canvas. - canvas.width = Math.floor(viewport.width) * PRINT_OUTPUT_SCALE; - canvas.height = Math.floor(viewport.height) * PRINT_OUTPUT_SCALE; - - // The rendered size of the canvas, relative to the size of canvasWrapper. - canvas.style.width = (PRINT_OUTPUT_SCALE * 100) + '%'; - canvas.style.height = (PRINT_OUTPUT_SCALE * 100) + '%'; - - var cssScale = 'scale(' + (1 / PRINT_OUTPUT_SCALE) + ', ' + - (1 / PRINT_OUTPUT_SCALE) + ')'; - CustomStyle.setProp('transform' , canvas, cssScale); - CustomStyle.setProp('transformOrigin' , canvas, '0% 0%'); - - var printContainer = document.getElementById('printContainer'); - var canvasWrapper = document.createElement('div'); - canvasWrapper.style.width = viewport.width + 'pt'; - canvasWrapper.style.height = viewport.height + 'pt'; - canvasWrapper.appendChild(canvas); - printContainer.appendChild(canvasWrapper); - - canvas.mozPrintCallback = function(obj) { - var ctx = obj.context; - - ctx.save(); - ctx.fillStyle = 'rgb(255, 255, 255)'; - ctx.fillRect(0, 0, canvas.width, canvas.height); - ctx.restore(); - // Used by the mozCurrentTransform polyfill in src/display/canvas.js. - ctx._transformMatrix = - [PRINT_OUTPUT_SCALE, 0, 0, PRINT_OUTPUT_SCALE, 0, 0]; - ctx.scale(PRINT_OUTPUT_SCALE, PRINT_OUTPUT_SCALE); - - var renderContext = { - canvasContext: ctx, - viewport: viewport, - intent: 'print' - }; - - pdfPage.render(renderContext).promise.then(function() { - // Tell the printEngine that rendering this canvas/page has finished. - obj.done(); - }, function(error) { - console.error(error); - // Tell the printEngine that rendering this canvas/page has failed. - // This will make the print proces stop. - if ('abort' in obj) { - obj.abort(); - } else { - obj.done(); - } - }); - }; - }, - }; - - return PDFPageView; -})(); - - -var MAX_TEXT_DIVS_TO_RENDER = 100000; - -var NonWhitespaceRegexp = /\S/; - -function isAllWhitespace(str) { - return !NonWhitespaceRegexp.test(str); -} - -/** - * @typedef {Object} TextLayerBuilderOptions - * @property {HTMLDivElement} textLayerDiv - The text layer container. - * @property {number} pageIndex - The page index. - * @property {PageViewport} viewport - The viewport of the text layer. - * @property {PDFFindController} findController - */ - -/** - * TextLayerBuilder provides text-selection functionality for the PDF. - * It does this by creating overlay divs over the PDF text. These divs - * contain text that matches the PDF text they are overlaying. This object - * also provides a way to highlight text that is being searched for. - * @class - */ -var TextLayerBuilder = (function TextLayerBuilderClosure() { - function TextLayerBuilder(options) { - this.textLayerDiv = options.textLayerDiv; - this.renderingDone = false; - this.divContentDone = false; - this.pageIdx = options.pageIndex; - this.pageNumber = this.pageIdx + 1; - this.matches = []; - this.viewport = options.viewport; - this.textDivs = []; - this.findController = options.findController || null; - this._bindMouse(); - } - - TextLayerBuilder.prototype = { - _finishRendering: function TextLayerBuilder_finishRendering() { - this.renderingDone = true; - - var endOfContent = document.createElement('div'); - endOfContent.className = 'endOfContent'; - this.textLayerDiv.appendChild(endOfContent); - - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('textlayerrendered', true, true, { - pageNumber: this.pageNumber - }); - this.textLayerDiv.dispatchEvent(event); - }, - - renderLayer: function TextLayerBuilder_renderLayer() { - var textLayerFrag = document.createDocumentFragment(); - var textDivs = this.textDivs; - var textDivsLength = textDivs.length; - var canvas = document.createElement('canvas'); - var ctx = canvas.getContext('2d'); - - // No point in rendering many divs as it would make the browser - // unusable even after the divs are rendered. - if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { - this._finishRendering(); - return; - } - - var lastFontSize; - var lastFontFamily; - for (var i = 0; i < textDivsLength; i++) { - var textDiv = textDivs[i]; - if (textDiv.dataset.isWhitespace !== undefined) { - continue; - } - - var fontSize = textDiv.style.fontSize; - var fontFamily = textDiv.style.fontFamily; - - // Only build font string and set to context if different from last. - if (fontSize !== lastFontSize || fontFamily !== lastFontFamily) { - ctx.font = fontSize + ' ' + fontFamily; - lastFontSize = fontSize; - lastFontFamily = fontFamily; - } - - var width = ctx.measureText(textDiv.textContent).width; - if (width > 0) { - textLayerFrag.appendChild(textDiv); - var transform; - if (textDiv.dataset.canvasWidth !== undefined) { - // Dataset values come of type string. - var textScale = textDiv.dataset.canvasWidth / width; - transform = 'scaleX(' + textScale + ')'; - } else { - transform = ''; - } - var rotation = textDiv.dataset.angle; - if (rotation) { - transform = 'rotate(' + rotation + 'deg) ' + transform; - } - if (transform) { - CustomStyle.setProp('transform' , textDiv, transform); - } - } - } - - this.textLayerDiv.appendChild(textLayerFrag); - this._finishRendering(); - this.updateMatches(); - }, - - /** - * Renders the text layer. - * @param {number} timeout (optional) if specified, the rendering waits - * for specified amount of ms. - */ - render: function TextLayerBuilder_render(timeout) { - if (!this.divContentDone || this.renderingDone) { - return; - } - - if (this.renderTimer) { - clearTimeout(this.renderTimer); - this.renderTimer = null; - } - - if (!timeout) { // Render right away - this.renderLayer(); - } else { // Schedule - var self = this; - this.renderTimer = setTimeout(function() { - self.renderLayer(); - self.renderTimer = null; - }, timeout); - } - }, - - appendText: function TextLayerBuilder_appendText(geom, styles) { - var style = styles[geom.fontName]; - var textDiv = document.createElement('div'); - this.textDivs.push(textDiv); - if (isAllWhitespace(geom.str)) { - textDiv.dataset.isWhitespace = true; - return; - } - var tx = PDFJS.Util.transform(this.viewport.transform, geom.transform); - var angle = Math.atan2(tx[1], tx[0]); - 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)); - } - textDiv.style.left = left + 'px'; - textDiv.style.top = top + 'px'; - textDiv.style.fontSize = fontHeight + 'px'; - textDiv.style.fontFamily = style.fontFamily; - - textDiv.textContent = geom.str; - // |fontName| is only used by the Font Inspector. This test will succeed - // when e.g. the Font Inspector is off but the Stepper is on, but it's - // not worth the effort to do a more accurate test. - if (PDFJS.pdfBug) { - textDiv.dataset.fontName = geom.fontName; - } - // Storing into dataset will convert number into string. - if (angle !== 0) { - textDiv.dataset.angle = angle * (180 / Math.PI); - } - // We don't bother scaling single-char text divs, because it has very - // little effect on text highlighting. This makes scrolling on docs with - // lots of such divs a lot faster. - if (geom.str.length > 1) { - if (style.vertical) { - textDiv.dataset.canvasWidth = geom.height * this.viewport.scale; - } else { - textDiv.dataset.canvasWidth = geom.width * this.viewport.scale; - } - } - }, - - setTextContent: function TextLayerBuilder_setTextContent(textContent) { - this.textContent = textContent; - - var textItems = textContent.items; - for (var i = 0, len = textItems.length; i < len; i++) { - this.appendText(textItems[i], textContent.styles); - } - this.divContentDone = true; - }, - - convertMatches: function TextLayerBuilder_convertMatches(matches) { - var i = 0; - var iIndex = 0; - var bidiTexts = this.textContent.items; - var end = bidiTexts.length - 1; - var queryLen = (this.findController === null ? - 0 : this.findController.state.query.length); - var ret = []; - - for (var m = 0, len = matches.length; m < len; m++) { - // Calculate the start position. - var matchIdx = matches[m]; - - // Loop over the divIdxs. - while (i !== end && matchIdx >= (iIndex + bidiTexts[i].str.length)) { - iIndex += bidiTexts[i].str.length; - i++; - } - - if (i === bidiTexts.length) { - console.error('Could not find a matching mapping'); - } - - var match = { - begin: { - divIdx: i, - offset: matchIdx - iIndex - } - }; - - // Calculate the end position. - matchIdx += queryLen; - - // Somewhat the same array as above, but use > instead of >= to get - // the end position right. - while (i !== end && matchIdx > (iIndex + bidiTexts[i].str.length)) { - iIndex += bidiTexts[i].str.length; - i++; - } - - match.end = { - divIdx: i, - offset: matchIdx - iIndex - }; - ret.push(match); - } - - return ret; - }, - - renderMatches: function TextLayerBuilder_renderMatches(matches) { - // Early exit if there is nothing to render. - if (matches.length === 0) { - return; - } - - var bidiTexts = this.textContent.items; - var textDivs = this.textDivs; - var prevEnd = null; - var pageIdx = this.pageIdx; - var isSelectedPage = (this.findController === null ? - false : (pageIdx === this.findController.selected.pageIdx)); - var selectedMatchIdx = (this.findController === null ? - -1 : this.findController.selected.matchIdx); - var highlightAll = (this.findController === null ? - false : this.findController.state.highlightAll); - var infinity = { - divIdx: -1, - offset: undefined - }; - - function beginText(begin, className) { - var divIdx = begin.divIdx; - textDivs[divIdx].textContent = ''; - appendTextToDiv(divIdx, 0, begin.offset, className); - } - - function appendTextToDiv(divIdx, fromOffset, toOffset, className) { - var div = textDivs[divIdx]; - var content = bidiTexts[divIdx].str.substring(fromOffset, toOffset); - var node = document.createTextNode(content); - if (className) { - var span = document.createElement('span'); - span.className = className; - span.appendChild(node); - div.appendChild(span); - return; - } - div.appendChild(node); - } - - var i0 = selectedMatchIdx, i1 = i0 + 1; - if (highlightAll) { - i0 = 0; - i1 = matches.length; - } else if (!isSelectedPage) { - // Not highlighting all and this isn't the selected page, so do nothing. - return; - } - - for (var i = i0; i < i1; i++) { - var match = matches[i]; - var begin = match.begin; - var end = match.end; - var isSelected = (isSelectedPage && i === selectedMatchIdx); - var highlightSuffix = (isSelected ? ' selected' : ''); - - if (this.findController) { - this.findController.updateMatchPosition(pageIdx, i, textDivs, - begin.divIdx, end.divIdx); - } - - // Match inside new div. - if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { - // If there was a previous div, then add the text at the end. - if (prevEnd !== null) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - // Clear the divs and set the content until the starting point. - beginText(begin); - } else { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); - } - - if (begin.divIdx === end.divIdx) { - appendTextToDiv(begin.divIdx, begin.offset, end.offset, - 'highlight' + highlightSuffix); - } else { - appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, - 'highlight begin' + highlightSuffix); - for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { - textDivs[n0].className = 'highlight middle' + highlightSuffix; - } - beginText(end, 'highlight end' + highlightSuffix); - } - prevEnd = end; - } - - if (prevEnd) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - }, - - updateMatches: function TextLayerBuilder_updateMatches() { - // Only show matches when all rendering is done. - if (!this.renderingDone) { - return; - } - - // Clear all matches. - var matches = this.matches; - var textDivs = this.textDivs; - var bidiTexts = this.textContent.items; - var clearedUntilDivIdx = -1; - - // Clear all current matches. - for (var i = 0, len = matches.length; i < len; i++) { - var match = matches[i]; - var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); - for (var n = begin, end = match.end.divIdx; n <= end; n++) { - var div = textDivs[n]; - div.textContent = bidiTexts[n].str; - div.className = ''; - } - clearedUntilDivIdx = match.end.divIdx + 1; - } - - if (this.findController === null || !this.findController.active) { - return; - } - - // Convert the matches on the page controller into the match format - // used for the textLayer. - this.matches = this.convertMatches(this.findController === null ? - [] : (this.findController.pageMatches[this.pageIdx] || [])); - this.renderMatches(this.matches); - }, - - /** - * Fixes text selection: adds additional div where mouse was clicked. - * This reduces flickering of the content if mouse slowly dragged down/up. - * @private - */ - _bindMouse: function TextLayerBuilder_bindMouse() { - var div = this.textLayerDiv; - div.addEventListener('mousedown', function (e) { - var end = div.querySelector('.endOfContent'); - if (!end) { - return; - } - // On non-Firefox browsers, the selection will feel better if the height - // of the endOfContent div will be adjusted to start at mouse click - // location -- this will avoid flickering when selections moves up. - // However it does not work when selection started on empty space. - var adjustTop = e.target !== div; - adjustTop = adjustTop && window.getComputedStyle(end). - getPropertyValue('-moz-user-select') !== 'none'; - if (adjustTop) { - var divBounds = div.getBoundingClientRect(); - var r = Math.max(0, (e.pageY - divBounds.top) / divBounds.height); - end.style.top = (r * 100).toFixed(2) + '%'; - } - end.classList.add('active'); - }); - div.addEventListener('mouseup', function (e) { - var end = div.querySelector('.endOfContent'); - if (!end) { - return; - } - end.style.top = ''; - end.classList.remove('active'); - }); - }, - }; - return TextLayerBuilder; -})(); - -/** - * @constructor - * @implements IPDFTextLayerFactory - */ -function DefaultTextLayerFactory() {} -DefaultTextLayerFactory.prototype = { - /** - * @param {HTMLDivElement} textLayerDiv - * @param {number} pageIndex - * @param {PageViewport} viewport - * @returns {TextLayerBuilder} - */ - createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) { - return new TextLayerBuilder({ - textLayerDiv: textLayerDiv, - pageIndex: pageIndex, - viewport: viewport - }); - } -}; - - -/** - * @typedef {Object} AnnotationsLayerBuilderOptions - * @property {HTMLDivElement} pageDiv - * @property {PDFPage} pdfPage - * @property {IPDFLinkService} linkService - */ - -/** - * @class - */ -var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() { - /** - * @param {AnnotationsLayerBuilderOptions} options - * @constructs AnnotationsLayerBuilder - */ - function AnnotationsLayerBuilder(options) { - this.pageDiv = options.pageDiv; - this.pdfPage = options.pdfPage; - this.linkService = options.linkService; - - this.div = null; - } - AnnotationsLayerBuilder.prototype = - /** @lends AnnotationsLayerBuilder.prototype */ { - - /** - * @param {PageViewport} viewport - */ - setupAnnotations: - function AnnotationsLayerBuilder_setupAnnotations(viewport) { - function bindLink(link, dest) { - link.href = linkService.getDestinationHash(dest); - link.onclick = function annotationsLayerBuilderLinksOnclick() { - if (dest) { - linkService.navigateTo(dest); - } - return false; - }; - if (dest) { - link.className = 'internalLink'; - } - } - - function bindNamedAction(link, action) { - link.href = linkService.getAnchorUrl(''); - link.onclick = function annotationsLayerBuilderNamedActionOnClick() { - linkService.executeNamedAction(action); - return false; - }; - link.className = 'internalLink'; - } - - var linkService = this.linkService; - var pdfPage = this.pdfPage; - var self = this; - - pdfPage.getAnnotations().then(function (annotationsData) { - viewport = viewport.clone({ dontFlip: true }); - var transform = viewport.transform; - var transformStr = 'matrix(' + transform.join(',') + ')'; - var data, element, i, ii; - - if (self.div) { - // If an annotationLayer already exists, refresh its children's - // transformation matrices - for (i = 0, ii = annotationsData.length; i < ii; i++) { - data = annotationsData[i]; - element = self.div.querySelector( - '[data-annotation-id="' + data.id + '"]'); - if (element) { - CustomStyle.setProp('transform', element, transformStr); - } - } - // See PDFPageView.reset() - self.div.removeAttribute('hidden'); - } else { - for (i = 0, ii = annotationsData.length; i < ii; i++) { - data = annotationsData[i]; - if (!data || !data.hasHtml) { - continue; - } - - element = PDFJS.AnnotationUtils.getHtmlElement(data, - pdfPage.commonObjs); - element.setAttribute('data-annotation-id', data.id); - if (typeof mozL10n !== 'undefined') { - mozL10n.translate(element); - } - - var rect = data.rect; - var view = pdfPage.view; - rect = PDFJS.Util.normalizeRect([ - rect[0], - view[3] - rect[1] + view[1], - rect[2], - view[3] - rect[3] + view[1] - ]); - element.style.left = rect[0] + 'px'; - element.style.top = rect[1] + 'px'; - element.style.position = 'absolute'; - - CustomStyle.setProp('transform', element, transformStr); - var transformOriginStr = -rect[0] + 'px ' + -rect[1] + 'px'; - CustomStyle.setProp('transformOrigin', element, transformOriginStr); - - if (data.subtype === 'Link' && !data.url) { - var link = element.getElementsByTagName('a')[0]; - if (link) { - if (data.action) { - bindNamedAction(link, data.action); - } else { - bindLink(link, ('dest' in data) ? data.dest : null); - } - } - } - - if (!self.div) { - var annotationLayerDiv = document.createElement('div'); - annotationLayerDiv.className = 'annotationLayer'; - self.pageDiv.appendChild(annotationLayerDiv); - self.div = annotationLayerDiv; - } - - self.div.appendChild(element); - } - } - }); - }, - - hide: function () { - if (!this.div) { - return; - } - this.div.setAttribute('hidden', 'true'); - } - }; - return AnnotationsLayerBuilder; -})(); - -/** - * @constructor - * @implements IPDFAnnotationsLayerFactory - */ -function DefaultAnnotationsLayerFactory() {} -DefaultAnnotationsLayerFactory.prototype = { - /** - * @param {HTMLDivElement} pageDiv - * @param {PDFPage} pdfPage - * @returns {AnnotationsLayerBuilder} - */ - createAnnotationsLayerBuilder: function (pageDiv, pdfPage) { - return new AnnotationsLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - linkService: new SimpleLinkService(), - }); - } -}; - - -/** - * @typedef {Object} PDFViewerOptions - * @property {HTMLDivElement} container - The container for the viewer element. - * @property {HTMLDivElement} viewer - (optional) The viewer element. - * @property {IPDFLinkService} linkService - The navigation/linking service. - * @property {PDFRenderingQueue} renderingQueue - (optional) The rendering - * queue object. - * @property {boolean} removePageBorders - (optional) Removes the border shadow - * around the pages. The default is false. - */ - -/** - * Simple viewer control to display PDF content/pages. - * @class - * @implements {IRenderableView} - */ -var PDFViewer = (function pdfViewer() { - function PDFPageViewBuffer(size) { - var data = []; - this.push = function cachePush(view) { - var i = data.indexOf(view); - if (i >= 0) { - data.splice(i, 1); - } - data.push(view); - if (data.length > size) { - data.shift().destroy(); - } - }; - this.resize = function (newSize) { - size = newSize; - while (data.length > size) { - data.shift().destroy(); - } - }; - } - - function isSameScale(oldScale, newScale) { - if (newScale === oldScale) { - return true; - } - if (Math.abs(newScale - oldScale) < 1e-15) { - // Prevent unnecessary re-rendering of all pages when the scale - // changes only because of limited numerical precision. - return true; - } - return false; - } - - /** - * @constructs PDFViewer - * @param {PDFViewerOptions} options - */ - function PDFViewer(options) { - this.container = options.container; - this.viewer = options.viewer || options.container.firstElementChild; - this.linkService = options.linkService || new SimpleLinkService(); - this.removePageBorders = options.removePageBorders || false; - - this.defaultRenderingQueue = !options.renderingQueue; - if (this.defaultRenderingQueue) { - // Custom rendering queue is not specified, using default one - this.renderingQueue = new PDFRenderingQueue(); - this.renderingQueue.setViewer(this); - } else { - this.renderingQueue = options.renderingQueue; - } - - this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this)); - this.updateInProgress = false; - this.presentationModeState = PresentationModeState.UNKNOWN; - this._resetView(); - - if (this.removePageBorders) { - this.viewer.classList.add('removePageBorders'); - } - } - - PDFViewer.prototype = /** @lends PDFViewer.prototype */{ - get pagesCount() { - return this._pages.length; - }, - - getPageView: function (index) { - return this._pages[index]; - }, - - get currentPageNumber() { - return this._currentPageNumber; - }, - - set currentPageNumber(val) { - if (!this.pdfDocument) { - this._currentPageNumber = val; - return; - } - - var event = document.createEvent('UIEvents'); - event.initUIEvent('pagechange', true, true, window, 0); - event.updateInProgress = this.updateInProgress; - - if (!(0 < val && val <= this.pagesCount)) { - event.pageNumber = this._currentPageNumber; - event.previousPageNumber = val; - this.container.dispatchEvent(event); - return; - } - - event.previousPageNumber = this._currentPageNumber; - this._currentPageNumber = val; - event.pageNumber = val; - this.container.dispatchEvent(event); - - // Check if the caller is `PDFViewer_update`, to avoid breaking scrolling. - if (this.updateInProgress) { - return; - } - this.scrollPageIntoView(val); - }, - - /** - * @returns {number} - */ - get currentScale() { - return this._currentScale !== UNKNOWN_SCALE ? this._currentScale : - DEFAULT_SCALE; - }, - - /** - * @param {number} val - Scale of the pages in percents. - */ - set currentScale(val) { - if (isNaN(val)) { - throw new Error('Invalid numeric scale'); - } - if (!this.pdfDocument) { - this._currentScale = val; - this._currentScaleValue = val !== UNKNOWN_SCALE ? val.toString() : null; - return; - } - this._setScale(val, false); - }, - - /** - * @returns {string} - */ - get currentScaleValue() { - return this._currentScaleValue; - }, - - /** - * @param val - The scale of the pages (in percent or predefined value). - */ - set currentScaleValue(val) { - if (!this.pdfDocument) { - this._currentScale = isNaN(val) ? UNKNOWN_SCALE : val; - this._currentScaleValue = val; - return; - } - this._setScale(val, false); - }, - - /** - * @returns {number} - */ - get pagesRotation() { - return this._pagesRotation; - }, - - /** - * @param {number} rotation - The rotation of the pages (0, 90, 180, 270). - */ - set pagesRotation(rotation) { - this._pagesRotation = rotation; - - for (var i = 0, l = this._pages.length; i < l; i++) { - var pageView = this._pages[i]; - pageView.update(pageView.scale, rotation); - } - - this._setScale(this._currentScaleValue, true); - - if (this.defaultRenderingQueue) { - this.update(); - } - }, - - /** - * @param pdfDocument {PDFDocument} - */ - setDocument: function (pdfDocument) { - if (this.pdfDocument) { - this._resetView(); - } - - this.pdfDocument = pdfDocument; - if (!pdfDocument) { - return; - } - - var pagesCount = pdfDocument.numPages; - var self = this; - - var resolvePagesPromise; - var pagesPromise = new Promise(function (resolve) { - resolvePagesPromise = resolve; - }); - this.pagesPromise = pagesPromise; - pagesPromise.then(function () { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagesloaded', true, true, { - pagesCount: pagesCount - }); - self.container.dispatchEvent(event); - }); - - var isOnePageRenderedResolved = false; - var resolveOnePageRendered = null; - var onePageRendered = new Promise(function (resolve) { - resolveOnePageRendered = resolve; - }); - this.onePageRendered = onePageRendered; - - var bindOnAfterAndBeforeDraw = function (pageView) { - pageView.onBeforeDraw = function pdfViewLoadOnBeforeDraw() { - // Add the page to the buffer at the start of drawing. That way it can - // be evicted from the buffer and destroyed even if we pause its - // rendering. - self._buffer.push(this); - }; - // when page is painted, using the image as thumbnail base - pageView.onAfterDraw = function pdfViewLoadOnAfterDraw() { - if (!isOnePageRenderedResolved) { - isOnePageRenderedResolved = true; - resolveOnePageRendered(); - } - }; - }; - - var firstPagePromise = pdfDocument.getPage(1); - this.firstPagePromise = firstPagePromise; - - // Fetch a single page so we can get a viewport that will be the default - // viewport for all pages - return firstPagePromise.then(function(pdfPage) { - var scale = this.currentScale; - var viewport = pdfPage.getViewport(scale * CSS_UNITS); - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var textLayerFactory = null; - if (!PDFJS.disableTextLayer) { - textLayerFactory = this; - } - var pageView = new PDFPageView({ - container: this.viewer, - id: pageNum, - scale: scale, - defaultViewport: viewport.clone(), - renderingQueue: this.renderingQueue, - textLayerFactory: textLayerFactory, - annotationsLayerFactory: this - }); - bindOnAfterAndBeforeDraw(pageView); - this._pages.push(pageView); - } - - var linkService = this.linkService; - - // Fetch all the pages since the viewport is needed before printing - // starts to create the correct size canvas. Wait until one page is - // rendered so we don't tie up too many resources early on. - onePageRendered.then(function () { - if (!PDFJS.disableAutoFetch) { - var getPagesLeft = pagesCount; - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - pdfDocument.getPage(pageNum).then(function (pageNum, pdfPage) { - var pageView = self._pages[pageNum - 1]; - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - linkService.cachePageRef(pageNum, pdfPage.ref); - getPagesLeft--; - if (!getPagesLeft) { - resolvePagesPromise(); - } - }.bind(null, pageNum)); - } - } else { - // XXX: Printing is semi-broken with auto fetch disabled. - resolvePagesPromise(); - } - }); - - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('pagesinit', true, true, null); - self.container.dispatchEvent(event); - - if (this.defaultRenderingQueue) { - this.update(); - } - - if (this.findController) { - this.findController.resolveFirstPage(); - } - }.bind(this)); - }, - - _resetView: function () { - this._pages = []; - this._currentPageNumber = 1; - this._currentScale = UNKNOWN_SCALE; - this._currentScaleValue = null; - this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); - this._location = null; - this._pagesRotation = 0; - this._pagesRequests = []; - - var container = this.viewer; - while (container.hasChildNodes()) { - container.removeChild(container.lastChild); - } - }, - - _scrollUpdate: function PDFViewer_scrollUpdate() { - if (this.pagesCount === 0) { - return; - } - this.update(); - for (var i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].updatePosition(); - } - }, - - _setScaleDispatchEvent: function pdfViewer_setScaleDispatchEvent( - newScale, newValue, preset) { - var event = document.createEvent('UIEvents'); - event.initUIEvent('scalechange', true, true, window, 0); - event.scale = newScale; - if (preset) { - event.presetValue = newValue; - } - this.container.dispatchEvent(event); - }, - - _setScaleUpdatePages: function pdfViewer_setScaleUpdatePages( - newScale, newValue, noScroll, preset) { - this._currentScaleValue = newValue; - - if (isSameScale(this._currentScale, newScale)) { - if (preset) { - this._setScaleDispatchEvent(newScale, newValue, true); - } - return; - } - - for (var i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].update(newScale); - } - this._currentScale = newScale; - - if (!noScroll) { - var page = this._currentPageNumber, dest; - if (this._location && !IGNORE_CURRENT_POSITION_ON_ZOOM && - !(this.isInPresentationMode || this.isChangingPresentationMode)) { - page = this._location.pageNumber; - dest = [null, { name: 'XYZ' }, this._location.left, - this._location.top, null]; - } - this.scrollPageIntoView(page, dest); - } - - this._setScaleDispatchEvent(newScale, newValue, preset); - - if (this.defaultRenderingQueue) { - this.update(); - } - }, - - _setScale: function pdfViewer_setScale(value, noScroll) { - var scale = parseFloat(value); - - if (scale > 0) { - this._setScaleUpdatePages(scale, value, noScroll, false); - } else { - var currentPage = this._pages[this._currentPageNumber - 1]; - if (!currentPage) { - return; - } - var hPadding = (this.isInPresentationMode || this.removePageBorders) ? - 0 : SCROLLBAR_PADDING; - var vPadding = (this.isInPresentationMode || this.removePageBorders) ? - 0 : VERTICAL_PADDING; - var pageWidthScale = (this.container.clientWidth - hPadding) / - currentPage.width * currentPage.scale; - var pageHeightScale = (this.container.clientHeight - vPadding) / - currentPage.height * currentPage.scale; - switch (value) { - case 'page-actual': - scale = 1; - break; - case 'page-width': - scale = pageWidthScale; - break; - case 'page-height': - scale = pageHeightScale; - break; - case 'page-fit': - scale = Math.min(pageWidthScale, pageHeightScale); - break; - case 'auto': - var isLandscape = (currentPage.width > currentPage.height); - // For pages in landscape mode, fit the page height to the viewer - // *unless* the page would thus become too wide to fit horizontally. - var horizontalScale = isLandscape ? - Math.min(pageHeightScale, pageWidthScale) : pageWidthScale; - scale = Math.min(MAX_AUTO_SCALE, horizontalScale); - break; - default: - console.error('pdfViewSetScale: \'' + value + - '\' is an unknown zoom value.'); - return; - } - this._setScaleUpdatePages(scale, value, noScroll, true); - } - }, - - /** - * Scrolls page into view. - * @param {number} pageNumber - * @param {Array} dest - (optional) original PDF destination array: - * <page-ref> </XYZ|FitXXX> <args..> - */ - scrollPageIntoView: function PDFViewer_scrollPageIntoView(pageNumber, - dest) { - if (!this.pdfDocument) { - return; - } - - var pageView = this._pages[pageNumber - 1]; - - if (this.isInPresentationMode) { - if (this._currentPageNumber !== pageView.id) { - // Avoid breaking getVisiblePages in presentation mode. - this.currentPageNumber = pageView.id; - return; - } - dest = null; - // Fixes the case when PDF has different page sizes. - this._setScale(this._currentScaleValue, true); - } - if (!dest) { - scrollIntoView(pageView.div); - return; - } - - var x = 0, y = 0; - var width = 0, height = 0, widthScale, heightScale; - var changeOrientation = (pageView.rotation % 180 === 0 ? false : true); - var pageWidth = (changeOrientation ? pageView.height : pageView.width) / - pageView.scale / CSS_UNITS; - var pageHeight = (changeOrientation ? pageView.width : pageView.height) / - pageView.scale / CSS_UNITS; - var scale = 0; - switch (dest[1].name) { - case 'XYZ': - x = dest[2]; - y = dest[3]; - scale = dest[4]; - // If x and/or y coordinates are not supplied, default to - // _top_ left of the page (not the obvious bottom left, - // since aligning the bottom of the intended page with the - // top of the window is rarely helpful). - x = x !== null ? x : 0; - y = y !== null ? y : pageHeight; - break; - case 'Fit': - case 'FitB': - scale = 'page-fit'; - break; - case 'FitH': - case 'FitBH': - y = dest[2]; - scale = 'page-width'; - // According to the PDF spec, section 12.3.2.2, a `null` value in the - // parameter should maintain the position relative to the new page. - if (y === null && this._location) { - x = this._location.left; - y = this._location.top; - } - break; - case 'FitV': - case 'FitBV': - x = dest[2]; - width = pageWidth; - height = pageHeight; - scale = 'page-height'; - break; - case 'FitR': - x = dest[2]; - y = dest[3]; - width = dest[4] - x; - height = dest[5] - y; - var hPadding = this.removePageBorders ? 0 : SCROLLBAR_PADDING; - var vPadding = this.removePageBorders ? 0 : VERTICAL_PADDING; - - widthScale = (this.container.clientWidth - hPadding) / - width / CSS_UNITS; - heightScale = (this.container.clientHeight - vPadding) / - height / CSS_UNITS; - scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); - break; - default: - return; - } - - if (scale && scale !== this._currentScale) { - this.currentScaleValue = scale; - } else if (this._currentScale === UNKNOWN_SCALE) { - this.currentScaleValue = DEFAULT_SCALE_VALUE; - } - - if (scale === 'page-fit' && !dest[4]) { - scrollIntoView(pageView.div); - return; - } - - var boundingRect = [ - pageView.viewport.convertToViewportPoint(x, y), - pageView.viewport.convertToViewportPoint(x + width, y + height) - ]; - var left = Math.min(boundingRect[0][0], boundingRect[1][0]); - var top = Math.min(boundingRect[0][1], boundingRect[1][1]); - - scrollIntoView(pageView.div, { left: left, top: top }); - }, - - _updateLocation: function (firstPage) { - var currentScale = this._currentScale; - var currentScaleValue = this._currentScaleValue; - var normalizedScaleValue = - parseFloat(currentScaleValue) === currentScale ? - Math.round(currentScale * 10000) / 100 : currentScaleValue; - - var pageNumber = firstPage.id; - var pdfOpenParams = '#page=' + pageNumber; - pdfOpenParams += '&zoom=' + normalizedScaleValue; - var currentPageView = this._pages[pageNumber - 1]; - var container = this.container; - var topLeft = currentPageView.getPagePoint( - (container.scrollLeft - firstPage.x), - (container.scrollTop - firstPage.y)); - var intLeft = Math.round(topLeft[0]); - var intTop = Math.round(topLeft[1]); - pdfOpenParams += ',' + intLeft + ',' + intTop; - - this._location = { - pageNumber: pageNumber, - scale: normalizedScaleValue, - top: intTop, - left: intLeft, - pdfOpenParams: pdfOpenParams - }; - }, - - update: function PDFViewer_update() { - var visible = this._getVisiblePages(); - var visiblePages = visible.views; - if (visiblePages.length === 0) { - return; - } - - this.updateInProgress = true; - - var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, - 2 * visiblePages.length + 1); - this._buffer.resize(suggestedCacheSize); - - this.renderingQueue.renderHighestPriority(visible); - - var currentId = this._currentPageNumber; - var firstPage = visible.first; - - for (var i = 0, ii = visiblePages.length, stillFullyVisible = false; - i < ii; ++i) { - var page = visiblePages[i]; - - if (page.percent < 100) { - break; - } - if (page.id === currentId) { - stillFullyVisible = true; - break; - } - } - - if (!stillFullyVisible) { - currentId = visiblePages[0].id; - } - - if (!this.isInPresentationMode) { - this.currentPageNumber = currentId; - } - - this._updateLocation(firstPage); - - this.updateInProgress = false; - - var event = document.createEvent('UIEvents'); - event.initUIEvent('updateviewarea', true, true, window, 0); - event.location = this._location; - this.container.dispatchEvent(event); - }, - - containsElement: function (element) { - return this.container.contains(element); - }, - - focus: function () { - this.container.focus(); - }, - - get isInPresentationMode() { - return this.presentationModeState === PresentationModeState.FULLSCREEN; - }, - - get isChangingPresentationMode() { - return this.presentationModeState === PresentationModeState.CHANGING; - }, - - get isHorizontalScrollbarEnabled() { - return (this.isInPresentationMode ? - false : (this.container.scrollWidth > this.container.clientWidth)); - }, - - _getVisiblePages: function () { - if (!this.isInPresentationMode) { - return getVisibleElements(this.container, this._pages, true); - } else { - // The algorithm in getVisibleElements doesn't work in all browsers and - // configurations when presentation mode is active. - var visible = []; - var currentPage = this._pages[this._currentPageNumber - 1]; - visible.push({ id: currentPage.id, view: currentPage }); - return { first: currentPage, last: currentPage, views: visible }; - } - }, - - cleanup: function () { - for (var i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i] && - this._pages[i].renderingState !== RenderingStates.FINISHED) { - this._pages[i].reset(); - } - } - }, - - /** - * @param {PDFPageView} pageView - * @returns {PDFPage} - * @private - */ - _ensurePdfPageLoaded: function (pageView) { - if (pageView.pdfPage) { - return Promise.resolve(pageView.pdfPage); - } - var pageNumber = pageView.id; - if (this._pagesRequests[pageNumber]) { - return this._pagesRequests[pageNumber]; - } - var promise = this.pdfDocument.getPage(pageNumber).then( - function (pdfPage) { - pageView.setPdfPage(pdfPage); - this._pagesRequests[pageNumber] = null; - return pdfPage; - }.bind(this)); - this._pagesRequests[pageNumber] = promise; - return promise; - }, - - forceRendering: function (currentlyVisiblePages) { - var visiblePages = currentlyVisiblePages || this._getVisiblePages(); - var pageView = this.renderingQueue.getHighestPriority(visiblePages, - this._pages, - this.scroll.down); - if (pageView) { - this._ensurePdfPageLoaded(pageView).then(function () { - this.renderingQueue.renderView(pageView); - }.bind(this)); - return true; - } - return false; - }, - - getPageTextContent: function (pageIndex) { - return this.pdfDocument.getPage(pageIndex + 1).then(function (page) { - return page.getTextContent(); - }); - }, - - /** - * @param {HTMLDivElement} textLayerDiv - * @param {number} pageIndex - * @param {PageViewport} viewport - * @returns {TextLayerBuilder} - */ - createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) { - return new TextLayerBuilder({ - textLayerDiv: textLayerDiv, - pageIndex: pageIndex, - viewport: viewport, - findController: this.isInPresentationMode ? null : this.findController - }); - }, - - /** - * @param {HTMLDivElement} pageDiv - * @param {PDFPage} pdfPage - * @returns {AnnotationsLayerBuilder} - */ - createAnnotationsLayerBuilder: function (pageDiv, pdfPage) { - return new AnnotationsLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - linkService: this.linkService - }); - }, - - setFindController: function (findController) { - this.findController = findController; - }, - }; - - return PDFViewer; -})(); - -var SimpleLinkService = (function SimpleLinkServiceClosure() { - function SimpleLinkService() {} - - SimpleLinkService.prototype = { - /** - * @returns {number} - */ - get page() { - return 0; - }, - /** - * @param {number} value - */ - set page(value) {}, - /** - * @param dest - The PDF destination object. - */ - navigateTo: function (dest) {}, - /** - * @param dest - The PDF destination object. - * @returns {string} The hyperlink to the PDF object. - */ - getDestinationHash: function (dest) { - return '#'; - }, - /** - * @param hash - The PDF parameters/hash. - * @returns {string} The hyperlink to the PDF object. - */ - getAnchorUrl: function (hash) { - return '#'; - }, - /** - * @param {string} hash - */ - setHash: function (hash) {}, - /** - * @param {string} action - */ - executeNamedAction: function (action) {}, - /** - * @param {number} pageNum - page number. - * @param {Object} pageRef - reference to the page. - */ - cachePageRef: function (pageNum, pageRef) {} - }; - return SimpleLinkService; -})(); - - -var THUMBNAIL_SCROLL_MARGIN = -19; - - -var THUMBNAIL_WIDTH = 98; // px -var THUMBNAIL_CANVAS_BORDER_WIDTH = 1; // px - -/** - * @typedef {Object} PDFThumbnailViewOptions - * @property {HTMLDivElement} container - The viewer element. - * @property {number} id - The thumbnail's unique ID (normally its number). - * @property {PageViewport} defaultViewport - The page viewport. - * @property {IPDFLinkService} linkService - The navigation/linking service. - * @property {PDFRenderingQueue} renderingQueue - The rendering queue object. - */ - -/** - * @class - * @implements {IRenderableView} - */ -var PDFThumbnailView = (function PDFThumbnailViewClosure() { - function getTempCanvas(width, height) { - var tempCanvas = PDFThumbnailView.tempImageCache; - if (!tempCanvas) { - tempCanvas = document.createElement('canvas'); - PDFThumbnailView.tempImageCache = tempCanvas; - } - tempCanvas.width = width; - tempCanvas.height = height; - - // Since this is a temporary canvas, we need to fill the canvas with a white - // background ourselves. |_getPageDrawContext| uses CSS rules for this. - var ctx = tempCanvas.getContext('2d'); - ctx.save(); - ctx.fillStyle = 'rgb(255, 255, 255)'; - ctx.fillRect(0, 0, width, height); - ctx.restore(); - return tempCanvas; - } - - /** - * @constructs PDFThumbnailView - * @param {PDFThumbnailViewOptions} options - */ - function PDFThumbnailView(options) { - var container = options.container; - var id = options.id; - var defaultViewport = options.defaultViewport; - var linkService = options.linkService; - var renderingQueue = options.renderingQueue; - - this.id = id; - this.renderingId = 'thumbnail' + id; - - this.pdfPage = null; - this.rotation = 0; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - - this.linkService = linkService; - this.renderingQueue = renderingQueue; - - this.hasImage = false; - this.resume = null; - this.renderingState = RenderingStates.INITIAL; - - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - - this.canvasWidth = THUMBNAIL_WIDTH; - this.canvasHeight = (this.canvasWidth / this.pageRatio) | 0; - this.scale = this.canvasWidth / this.pageWidth; - - var anchor = document.createElement('a'); - anchor.href = linkService.getAnchorUrl('#page=' + id); - anchor.title = mozL10n.get('thumb_page_title', {page: id}, 'Page {{page}}'); - anchor.onclick = function stopNavigation() { - linkService.page = id; - return false; - }; - - var div = document.createElement('div'); - div.id = 'thumbnailContainer' + id; - div.className = 'thumbnail'; - this.div = div; - - if (id === 1) { - // Highlight the thumbnail of the first page when no page number is - // specified (or exists in cache) when the document is loaded. - div.classList.add('selected'); - } - - var ring = document.createElement('div'); - ring.className = 'thumbnailSelectionRing'; - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + 'px'; - ring.style.height = this.canvasHeight + borderAdjustment + 'px'; - this.ring = ring; - - div.appendChild(ring); - anchor.appendChild(div); - container.appendChild(anchor); - } - - PDFThumbnailView.prototype = { - setPdfPage: function PDFThumbnailView_setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport(1, totalRotation); - this.reset(); - }, - - reset: function PDFThumbnailView_reset() { - if (this.renderTask) { - this.renderTask.cancel(); - } - this.hasImage = false; - this.resume = null; - this.renderingState = RenderingStates.INITIAL; - - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - - this.canvasHeight = (this.canvasWidth / this.pageRatio) | 0; - this.scale = (this.canvasWidth / this.pageWidth); - - this.div.removeAttribute('data-loaded'); - var ring = this.ring; - var childNodes = ring.childNodes; - for (var i = childNodes.length - 1; i >= 0; i--) { - ring.removeChild(childNodes[i]); - } - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + 'px'; - ring.style.height = this.canvasHeight + borderAdjustment + 'px'; - - if (this.canvas) { - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - if (this.image) { - this.image.removeAttribute('src'); - delete this.image; - } - }, - - update: function PDFThumbnailView_update(rotation) { - if (typeof rotation !== 'undefined') { - this.rotation = rotation; - } - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: 1, - rotation: totalRotation - }); - this.reset(); - }, - - /** - * @private - */ - _getPageDrawContext: - function PDFThumbnailView_getPageDrawContext(noCtxScale) { - var canvas = document.createElement('canvas'); - this.canvas = canvas; - - var ctx = canvas.getContext('2d'); - var outputScale = getOutputScale(ctx); - - canvas.width = (this.canvasWidth * outputScale.sx) | 0; - canvas.height = (this.canvasHeight * outputScale.sy) | 0; - canvas.style.width = this.canvasWidth + 'px'; - canvas.style.height = this.canvasHeight + 'px'; - - if (!noCtxScale && outputScale.scaled) { - ctx.scale(outputScale.sx, outputScale.sy); - } - - var image = document.createElement('img'); - this.image = image; - - image.id = this.renderingId; - image.className = 'thumbnailImage'; - image.setAttribute('aria-label', mozL10n.get('thumb_page_canvas', - { page: this.id }, 'Thumbnail of Page {{page}}')); - - image.style.width = canvas.style.width; - image.style.height = canvas.style.height; - - return ctx; - }, - - /** - * @private - */ - _convertCanvasToImage: function PDFThumbnailView_convertCanvasToImage() { - if (!this.canvas) { - return; - } - this.image.src = this.canvas.toDataURL(); - - this.div.setAttribute('data-loaded', true); - this.ring.appendChild(this.image); - - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - }, - - draw: function PDFThumbnailView_draw() { - if (this.renderingState !== RenderingStates.INITIAL) { - console.error('Must be in new state before drawing'); - } - if (this.hasImage) { - return Promise.resolve(undefined); - } - this.hasImage = true; - this.renderingState = RenderingStates.RUNNING; - - var resolveRenderPromise, rejectRenderPromise; - var promise = new Promise(function (resolve, reject) { - resolveRenderPromise = resolve; - rejectRenderPromise = reject; - }); - - var self = this; - function thumbnailDrawCallback(error) { - // The renderTask may have been replaced by a new one, so only remove - // the reference to the renderTask if it matches the one that is - // triggering this callback. - if (renderTask === self.renderTask) { - self.renderTask = null; - } - if (error === 'cancelled') { - rejectRenderPromise(error); - return; - } - self.renderingState = RenderingStates.FINISHED; - self._convertCanvasToImage(); - - if (!error) { - resolveRenderPromise(undefined); - } else { - rejectRenderPromise(error); - } - } - - var ctx = this._getPageDrawContext(); - var drawViewport = this.viewport.clone({ scale: this.scale }); - var renderContinueCallback = function renderContinueCallback(cont) { - if (!self.renderingQueue.isHighestPriority(self)) { - self.renderingState = RenderingStates.PAUSED; - self.resume = function resumeCallback() { - self.renderingState = RenderingStates.RUNNING; - cont(); - }; - return; - } - cont(); - }; - - var renderContext = { - canvasContext: ctx, - viewport: drawViewport - }; - var renderTask = this.renderTask = this.pdfPage.render(renderContext); - renderTask.onContinue = renderContinueCallback; - - renderTask.promise.then( - function pdfPageRenderCallback() { - thumbnailDrawCallback(null); - }, - function pdfPageRenderError(error) { - thumbnailDrawCallback(error); - } - ); - return promise; - }, - - setImage: function PDFThumbnailView_setImage(pageView) { - var img = pageView.canvas; - if (this.hasImage || !img) { - return; - } - if (!this.pdfPage) { - this.setPdfPage(pageView.pdfPage); - } - this.hasImage = true; - this.renderingState = RenderingStates.FINISHED; - - var ctx = this._getPageDrawContext(true); - var canvas = ctx.canvas; - - if (img.width <= 2 * canvas.width) { - ctx.drawImage(img, 0, 0, img.width, img.height, - 0, 0, canvas.width, canvas.height); - this._convertCanvasToImage(); - return; - } - // drawImage does an awful job of rescaling the image, doing it gradually. - var MAX_NUM_SCALING_STEPS = 3; - var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; - var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; - var reducedImage = getTempCanvas(reducedWidth, reducedHeight); - var reducedImageCtx = reducedImage.getContext('2d'); - - while (reducedWidth > img.width || reducedHeight > img.height) { - reducedWidth >>= 1; - reducedHeight >>= 1; - } - reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, - 0, 0, reducedWidth, reducedHeight); - while (reducedWidth > 2 * canvas.width) { - reducedImageCtx.drawImage(reducedImage, - 0, 0, reducedWidth, reducedHeight, - 0, 0, reducedWidth >> 1, reducedHeight >> 1); - reducedWidth >>= 1; - reducedHeight >>= 1; - } - ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, - 0, 0, canvas.width, canvas.height); - this._convertCanvasToImage(); - } - }; - - return PDFThumbnailView; -})(); - -PDFThumbnailView.tempImageCache = null; - - -/** - * @typedef {Object} PDFThumbnailViewerOptions - * @property {HTMLDivElement} container - The container for the thumbnail - * elements. - * @property {IPDFLinkService} linkService - The navigation/linking service. - * @property {PDFRenderingQueue} renderingQueue - The rendering queue object. - */ - -/** - * Simple viewer control to display thumbnails for pages. - * @class - * @implements {IRenderableView} - */ -var PDFThumbnailViewer = (function PDFThumbnailViewerClosure() { - /** - * @constructs PDFThumbnailViewer - * @param {PDFThumbnailViewerOptions} options - */ - function PDFThumbnailViewer(options) { - this.container = options.container; - this.renderingQueue = options.renderingQueue; - this.linkService = options.linkService; - - this.scroll = watchScroll(this.container, this._scrollUpdated.bind(this)); - this._resetView(); - } - - PDFThumbnailViewer.prototype = { - /** - * @private - */ - _scrollUpdated: function PDFThumbnailViewer_scrollUpdated() { - this.renderingQueue.renderHighestPriority(); - }, - - getThumbnail: function PDFThumbnailViewer_getThumbnail(index) { - return this.thumbnails[index]; - }, - - /** - * @private - */ - _getVisibleThumbs: function PDFThumbnailViewer_getVisibleThumbs() { - return getVisibleElements(this.container, this.thumbnails); - }, - - scrollThumbnailIntoView: - function PDFThumbnailViewer_scrollThumbnailIntoView(page) { - var selected = document.querySelector('.thumbnail.selected'); - if (selected) { - selected.classList.remove('selected'); - } - var thumbnail = document.getElementById('thumbnailContainer' + page); - if (thumbnail) { - thumbnail.classList.add('selected'); - } - var visibleThumbs = this._getVisibleThumbs(); - var numVisibleThumbs = visibleThumbs.views.length; - - // If the thumbnail isn't currently visible, scroll it into view. - if (numVisibleThumbs > 0) { - var first = visibleThumbs.first.id; - // Account for only one thumbnail being visible. - var last = (numVisibleThumbs > 1 ? visibleThumbs.last.id : first); - if (page <= first || page >= last) { - scrollIntoView(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN }); - } - } - }, - - get pagesRotation() { - return this._pagesRotation; - }, - - set pagesRotation(rotation) { - this._pagesRotation = rotation; - for (var i = 0, l = this.thumbnails.length; i < l; i++) { - var thumb = this.thumbnails[i]; - thumb.update(rotation); - } - }, - - cleanup: function PDFThumbnailViewer_cleanup() { - var tempCanvas = PDFThumbnailView.tempImageCache; - if (tempCanvas) { - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - tempCanvas.width = 0; - tempCanvas.height = 0; - } - PDFThumbnailView.tempImageCache = null; - }, - - /** - * @private - */ - _resetView: function PDFThumbnailViewer_resetView() { - this.thumbnails = []; - this._pagesRotation = 0; - this._pagesRequests = []; - }, - - setDocument: function PDFThumbnailViewer_setDocument(pdfDocument) { - if (this.pdfDocument) { - // cleanup of the elements and views - var thumbsView = this.container; - while (thumbsView.hasChildNodes()) { - thumbsView.removeChild(thumbsView.lastChild); - } - this._resetView(); - } - - this.pdfDocument = pdfDocument; - if (!pdfDocument) { - return Promise.resolve(); - } - - return pdfDocument.getPage(1).then(function (firstPage) { - var pagesCount = pdfDocument.numPages; - var viewport = firstPage.getViewport(1.0); - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var thumbnail = new PDFThumbnailView({ - container: this.container, - id: pageNum, - defaultViewport: viewport.clone(), - linkService: this.linkService, - renderingQueue: this.renderingQueue - }); - this.thumbnails.push(thumbnail); - } - }.bind(this)); - }, - - /** - * @param {PDFPageView} pageView - * @returns {PDFPage} - * @private - */ - _ensurePdfPageLoaded: - function PDFThumbnailViewer_ensurePdfPageLoaded(thumbView) { - if (thumbView.pdfPage) { - return Promise.resolve(thumbView.pdfPage); - } - var pageNumber = thumbView.id; - if (this._pagesRequests[pageNumber]) { - return this._pagesRequests[pageNumber]; - } - var promise = this.pdfDocument.getPage(pageNumber).then( - function (pdfPage) { - thumbView.setPdfPage(pdfPage); - this._pagesRequests[pageNumber] = null; - return pdfPage; - }.bind(this)); - this._pagesRequests[pageNumber] = promise; - return promise; - }, - - ensureThumbnailVisible: - function PDFThumbnailViewer_ensureThumbnailVisible(page) { - // Ensure that the thumbnail of the current page is visible - // when switching from another view. - scrollIntoView(document.getElementById('thumbnailContainer' + page)); - }, - - forceRendering: function () { - var visibleThumbs = this._getVisibleThumbs(); - var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, - this.thumbnails, - this.scroll.down); - if (thumbView) { - this._ensurePdfPageLoaded(thumbView).then(function () { - this.renderingQueue.renderView(thumbView); - }.bind(this)); - return true; - } - return false; - } - }; - - return PDFThumbnailViewer; -})(); - - -/** - * @typedef {Object} PDFOutlineViewOptions - * @property {HTMLDivElement} container - The viewer element. - * @property {Array} outline - An array of outline objects. - * @property {IPDFLinkService} linkService - The navigation/linking service. - */ - -/** - * @class - */ -var PDFOutlineView = (function PDFOutlineViewClosure() { - /** - * @constructs PDFOutlineView - * @param {PDFOutlineViewOptions} options - */ - function PDFOutlineView(options) { - this.container = options.container; - this.outline = options.outline; - this.linkService = options.linkService; - this.lastToggleIsShow = true; - } - - PDFOutlineView.prototype = { - reset: function PDFOutlineView_reset() { - var container = this.container; - while (container.firstChild) { - container.removeChild(container.firstChild); - } - this.lastToggleIsShow = true; - }, - - /** - * @private - */ - _dispatchEvent: function PDFOutlineView_dispatchEvent(outlineCount) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('outlineloaded', true, true, { - outlineCount: outlineCount - }); - this.container.dispatchEvent(event); - }, - - /** - * @private - */ - _bindLink: function PDFOutlineView_bindLink(element, item) { - var linkService = this.linkService; - element.href = linkService.getDestinationHash(item.dest); - element.onclick = function goToDestination(e) { - linkService.navigateTo(item.dest); - return false; - }; - }, - - /** - * Prepend a button before an outline item which allows the user to toggle - * the visibility of all outline items at that level. - * - * @private - */ - _addToggleButton: function PDFOutlineView_addToggleButton(div) { - var toggler = document.createElement('div'); - toggler.className = 'outlineItemToggler'; - toggler.onclick = function(event) { - event.stopPropagation(); - toggler.classList.toggle('outlineItemsHidden'); - - if (event.shiftKey) { - var shouldShowAll = !toggler.classList.contains('outlineItemsHidden'); - this._toggleOutlineItem(div, shouldShowAll); - } - }.bind(this); - div.insertBefore(toggler, div.firstChild); - }, - - /** - * Toggle the visibility of the subtree of an outline item. - * - * @param {Element} root - the root of the outline (sub)tree. - * @param {boolean} state - whether to show the outline (sub)tree. If false, - * the outline subtree rooted at |root| will be collapsed. - * - * @private - */ - _toggleOutlineItem: function PDFOutlineView_toggleOutlineItem(root, show) { - this.lastToggleIsShow = show; - var togglers = root.querySelectorAll('.outlineItemToggler'); - for (var i = 0, ii = togglers.length; i < ii; ++i) { - togglers[i].classList[show ? 'remove' : 'add']('outlineItemsHidden'); - } - }, - - /** - * Collapse or expand all subtrees of the outline. - */ - toggleOutlineTree: function PDFOutlineView_toggleOutlineTree() { - this._toggleOutlineItem(this.container, !this.lastToggleIsShow); - }, - - render: function PDFOutlineView_render() { - var outline = this.outline; - var outlineCount = 0; - - this.reset(); - - if (!outline) { - this._dispatchEvent(outlineCount); - return; - } - - var fragment = document.createDocumentFragment(); - var queue = [{ parent: fragment, items: this.outline }]; - var hasAnyNesting = false; - while (queue.length > 0) { - var levelData = queue.shift(); - for (var i = 0, len = levelData.items.length; i < len; i++) { - var item = levelData.items[i]; - var div = document.createElement('div'); - div.className = 'outlineItem'; - var element = document.createElement('a'); - this._bindLink(element, item); - element.textContent = removeNullCharacters(item.title); - div.appendChild(element); - - if (item.items.length > 0) { - hasAnyNesting = true; - this._addToggleButton(div); - - var itemsDiv = document.createElement('div'); - itemsDiv.className = 'outlineItems'; - div.appendChild(itemsDiv); - queue.push({ parent: itemsDiv, items: item.items }); - } - - levelData.parent.appendChild(div); - outlineCount++; - } - } - if (hasAnyNesting) { - this.container.classList.add('outlineWithDeepNesting'); - } - - this.container.appendChild(fragment); - - this._dispatchEvent(outlineCount); - } - }; - - return PDFOutlineView; -})(); - - -/** - * @typedef {Object} PDFAttachmentViewOptions - * @property {HTMLDivElement} container - The viewer element. - * @property {Array} attachments - An array of attachment objects. - * @property {DownloadManager} downloadManager - The download manager. - */ - -/** - * @class - */ -var PDFAttachmentView = (function PDFAttachmentViewClosure() { - /** - * @constructs PDFAttachmentView - * @param {PDFAttachmentViewOptions} options - */ - function PDFAttachmentView(options) { - this.container = options.container; - this.attachments = options.attachments; - this.downloadManager = options.downloadManager; - } - - PDFAttachmentView.prototype = { - reset: function PDFAttachmentView_reset() { - var container = this.container; - while (container.firstChild) { - container.removeChild(container.firstChild); - } - }, - - /** - * @private - */ - _dispatchEvent: function PDFAttachmentView_dispatchEvent(attachmentsCount) { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('attachmentsloaded', true, true, { - attachmentsCount: attachmentsCount - }); - this.container.dispatchEvent(event); - }, - - /** - * @private - */ - _bindLink: function PDFAttachmentView_bindLink(button, content, filename) { - button.onclick = function downloadFile(e) { - this.downloadManager.downloadData(content, filename, ''); - return false; - }.bind(this); - }, - - render: function PDFAttachmentView_render() { - var attachments = this.attachments; - var attachmentsCount = 0; - - this.reset(); - - if (!attachments) { - this._dispatchEvent(attachmentsCount); - return; - } - - var names = Object.keys(attachments).sort(function(a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - attachmentsCount = names.length; - - for (var i = 0; i < attachmentsCount; i++) { - var item = attachments[names[i]]; - var filename = getFileName(item.filename); - var div = document.createElement('div'); - div.className = 'attachmentsItem'; - var button = document.createElement('button'); - this._bindLink(button, item.content, filename); - button.textContent = removeNullCharacters(filename); - div.appendChild(button); - this.container.appendChild(div); - } - - this._dispatchEvent(attachmentsCount); - } - }; - - return PDFAttachmentView; -})(); - - -var PDFViewerApplication = { - initialBookmark: document.location.hash.substring(1), - initialDestination: null, - initialized: false, - fellback: false, - pdfDocument: null, - pdfLoadingTask: null, - sidebarOpen: false, - printing: false, - /** @type {PDFViewer} */ - pdfViewer: null, - /** @type {PDFThumbnailViewer} */ - pdfThumbnailViewer: null, - /** @type {PDFRenderingQueue} */ - pdfRenderingQueue: null, - /** @type {PDFPresentationMode} */ - pdfPresentationMode: null, - /** @type {PDFDocumentProperties} */ - pdfDocumentProperties: null, - /** @type {PDFLinkService} */ - pdfLinkService: null, - /** @type {PDFHistory} */ - pdfHistory: null, - pageRotation: 0, - isInitialViewSet: false, - animationStartedPromise: null, - preferenceSidebarViewOnLoad: SidebarView.NONE, - preferencePdfBugEnabled: false, - preferenceShowPreviousViewOnLoad: true, - preferenceDefaultZoomValue: '', - isViewerEmbedded: (window.parent !== window), - url: '', - - // called once when the document is loaded - initialize: function pdfViewInitialize() { - var pdfRenderingQueue = new PDFRenderingQueue(); - pdfRenderingQueue.onIdle = this.cleanup.bind(this); - this.pdfRenderingQueue = pdfRenderingQueue; - - var pdfLinkService = new PDFLinkService(); - this.pdfLinkService = pdfLinkService; - - var container = document.getElementById('viewerContainer'); - var viewer = document.getElementById('viewer'); - this.pdfViewer = new PDFViewer({ - container: container, - viewer: viewer, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService - }); - pdfRenderingQueue.setViewer(this.pdfViewer); - pdfLinkService.setViewer(this.pdfViewer); - - var thumbnailContainer = document.getElementById('thumbnailView'); - this.pdfThumbnailViewer = new PDFThumbnailViewer({ - container: thumbnailContainer, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService - }); - pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); - - Preferences.initialize(); - - this.pdfHistory = new PDFHistory({ - linkService: pdfLinkService - }); - pdfLinkService.setHistory(this.pdfHistory); - - this.findController = new PDFFindController({ - pdfViewer: this.pdfViewer, - integratedFind: this.supportsIntegratedFind - }); - this.pdfViewer.setFindController(this.findController); - - this.findBar = new PDFFindBar({ - bar: document.getElementById('findbar'), - toggleButton: document.getElementById('viewFind'), - findField: document.getElementById('findInput'), - highlightAllCheckbox: document.getElementById('findHighlightAll'), - caseSensitiveCheckbox: document.getElementById('findMatchCase'), - findMsg: document.getElementById('findMsg'), - findResultsCount: document.getElementById('findResultsCount'), - findStatusIcon: document.getElementById('findStatusIcon'), - findPreviousButton: document.getElementById('findPrevious'), - findNextButton: document.getElementById('findNext'), - findController: this.findController - }); - - this.findController.setFindBar(this.findBar); - - HandTool.initialize({ - container: container, - toggleHandTool: document.getElementById('toggleHandTool') - }); - - this.pdfDocumentProperties = new PDFDocumentProperties({ - overlayName: 'documentPropertiesOverlay', - closeButton: document.getElementById('documentPropertiesClose'), - fields: { - 'fileName': document.getElementById('fileNameField'), - 'fileSize': document.getElementById('fileSizeField'), - 'title': document.getElementById('titleField'), - 'author': document.getElementById('authorField'), - 'subject': document.getElementById('subjectField'), - 'keywords': document.getElementById('keywordsField'), - 'creationDate': document.getElementById('creationDateField'), - 'modificationDate': document.getElementById('modificationDateField'), - 'creator': document.getElementById('creatorField'), - 'producer': document.getElementById('producerField'), - 'version': document.getElementById('versionField'), - 'pageCount': document.getElementById('pageCountField') - } - }); - - SecondaryToolbar.initialize({ - toolbar: document.getElementById('secondaryToolbar'), - toggleButton: document.getElementById('secondaryToolbarToggle'), - presentationModeButton: - document.getElementById('secondaryPresentationMode'), - openFile: document.getElementById('secondaryOpenFile'), - print: document.getElementById('secondaryPrint'), - download: document.getElementById('secondaryDownload'), - viewBookmark: document.getElementById('secondaryViewBookmark'), - firstPage: document.getElementById('firstPage'), - lastPage: document.getElementById('lastPage'), - pageRotateCw: document.getElementById('pageRotateCw'), - pageRotateCcw: document.getElementById('pageRotateCcw'), - documentPropertiesButton: document.getElementById('documentProperties') - }); - - if (this.supportsFullscreen) { - var toolbar = SecondaryToolbar; - this.pdfPresentationMode = new PDFPresentationMode({ - container: container, - viewer: viewer, - pdfViewer: this.pdfViewer, - pdfThumbnailViewer: this.pdfThumbnailViewer, - contextMenuItems: [ - { element: document.getElementById('contextFirstPage'), - handler: toolbar.firstPageClick.bind(toolbar) }, - { element: document.getElementById('contextLastPage'), - handler: toolbar.lastPageClick.bind(toolbar) }, - { element: document.getElementById('contextPageRotateCw'), - handler: toolbar.pageRotateCwClick.bind(toolbar) }, - { element: document.getElementById('contextPageRotateCcw'), - handler: toolbar.pageRotateCcwClick.bind(toolbar) } - ] - }); - } - - PasswordPrompt.initialize({ - overlayName: 'passwordOverlay', - passwordField: document.getElementById('password'), - passwordText: document.getElementById('passwordText'), - passwordSubmit: document.getElementById('passwordSubmit'), - passwordCancel: document.getElementById('passwordCancel') - }); - - var self = this; - var initializedPromise = Promise.all([ - Preferences.get('enableWebGL').then(function resolved(value) { - PDFJS.disableWebGL = !value; - }), - Preferences.get('sidebarViewOnLoad').then(function resolved(value) { - self.preferenceSidebarViewOnLoad = value; - }), - Preferences.get('pdfBugEnabled').then(function resolved(value) { - self.preferencePdfBugEnabled = value; - }), - Preferences.get('showPreviousViewOnLoad').then(function resolved(value) { - self.preferenceShowPreviousViewOnLoad = value; - }), - Preferences.get('defaultZoomValue').then(function resolved(value) { - self.preferenceDefaultZoomValue = value; - }), - Preferences.get('disableTextLayer').then(function resolved(value) { - if (PDFJS.disableTextLayer === true) { - return; - } - PDFJS.disableTextLayer = value; - }), - Preferences.get('disableRange').then(function resolved(value) { - if (PDFJS.disableRange === true) { - return; - } - PDFJS.disableRange = value; - }), - Preferences.get('disableStream').then(function resolved(value) { - if (PDFJS.disableStream === true) { - return; - } - PDFJS.disableStream = value; - }), - Preferences.get('disableAutoFetch').then(function resolved(value) { - PDFJS.disableAutoFetch = value; - }), - Preferences.get('disableFontFace').then(function resolved(value) { - if (PDFJS.disableFontFace === true) { - return; - } - PDFJS.disableFontFace = value; - }), - Preferences.get('useOnlyCssZoom').then(function resolved(value) { - PDFJS.useOnlyCssZoom = value; - }), - Preferences.get('externalLinkTarget').then(function resolved(value) { - if (PDFJS.isExternalLinkTargetSet()) { - return; - } - PDFJS.externalLinkTarget = value; - }), - // TODO move more preferences and other async stuff here - ]).catch(function (reason) { }); - - return initializedPromise.then(function () { - if (self.isViewerEmbedded && !PDFJS.isExternalLinkTargetSet()) { - // Prevent external links from "replacing" the viewer, - // when it's embedded in e.g. an iframe or an object. - PDFJS.externalLinkTarget = PDFJS.LinkTarget.TOP; - } - - self.initialized = true; - }); - }, - - zoomIn: function pdfViewZoomIn(ticks) { - var newScale = this.pdfViewer.currentScale; - do { - newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.ceil(newScale * 10) / 10; - newScale = Math.min(MAX_SCALE, newScale); - } while (--ticks > 0 && newScale < MAX_SCALE); - this.pdfViewer.currentScaleValue = newScale; - }, - - zoomOut: function pdfViewZoomOut(ticks) { - var newScale = this.pdfViewer.currentScale; - do { - newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.floor(newScale * 10) / 10; - newScale = Math.max(MIN_SCALE, newScale); - } while (--ticks > 0 && newScale > MIN_SCALE); - this.pdfViewer.currentScaleValue = newScale; - }, - - get pagesCount() { - return this.pdfDocument.numPages; - }, - - set page(val) { - this.pdfLinkService.page = val; - }, - - get page() { // TODO remove - return this.pdfLinkService.page; - }, - - get supportsPrinting() { - var canvas = document.createElement('canvas'); - var value = 'mozPrintCallback' in canvas; - - return PDFJS.shadow(this, 'supportsPrinting', value); - }, - - get supportsFullscreen() { - var doc = document.documentElement; - var support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || - doc.webkitRequestFullScreen || doc.msRequestFullscreen); - - if (document.fullscreenEnabled === false || - document.mozFullScreenEnabled === false || - document.webkitFullscreenEnabled === false || - document.msFullscreenEnabled === false) { - support = false; - } - if (support && PDFJS.disableFullscreen === true) { - support = false; - } - - return PDFJS.shadow(this, 'supportsFullscreen', support); - }, - - get supportsIntegratedFind() { - var support = false; - - return PDFJS.shadow(this, 'supportsIntegratedFind', support); - }, - - get supportsDocumentFonts() { - var support = true; - - return PDFJS.shadow(this, 'supportsDocumentFonts', support); - }, - - get supportsDocumentColors() { - var support = true; - - return PDFJS.shadow(this, 'supportsDocumentColors', support); - }, - - get loadingBar() { - var bar = new ProgressBar('#loadingBar', {}); - - return PDFJS.shadow(this, 'loadingBar', bar); - }, - - get supportedMouseWheelZoomModifierKeys() { - var support = { - ctrlKey: true, - metaKey: true, - }; - - return PDFJS.shadow(this, 'supportedMouseWheelZoomModifierKeys', support); - }, - - - setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) { - this.url = url; - try { - this.setTitle(decodeURIComponent(getFileName(url)) || url); - } catch (e) { - // decodeURIComponent may throw URIError, - // fall back to using the unprocessed url in that case - this.setTitle(url); - } - }, - - setTitle: function pdfViewSetTitle(title) { - if (this.isViewerEmbedded) { - // Embedded PDF viewers should not be changing their parent page's title. - return; - } - document.title = title; - }, - - /** - * Closes opened PDF document. - * @returns {Promise} - Returns the promise, which is resolved when all - * destruction is completed. - */ - close: function pdfViewClose() { - var errorWrapper = document.getElementById('errorWrapper'); - errorWrapper.setAttribute('hidden', 'true'); - - if (!this.pdfLoadingTask) { - return Promise.resolve(); - } - - var promise = this.pdfLoadingTask.destroy(); - this.pdfLoadingTask = null; - - if (this.pdfDocument) { - this.pdfDocument = null; - - this.pdfThumbnailViewer.setDocument(null); - this.pdfViewer.setDocument(null); - this.pdfLinkService.setDocument(null, null); - } - - if (typeof PDFBug !== 'undefined') { - PDFBug.cleanup(); - } - return promise; - }, - - /** - * Opens PDF document specified by URL or array with additional arguments. - * @param {string|TypedArray|ArrayBuffer} file - PDF location or binary data. - * @param {Object} args - (optional) Additional arguments for the getDocument - * call, e.g. HTTP headers ('httpHeaders') or - * alternative data transport ('range'). - * @returns {Promise} - Returns the promise, which is resolved when document - * is opened. - */ - open: function pdfViewOpen(file, args) { - var scale = 0; - if (arguments.length > 2 || typeof args === 'number') { - console.warn('Call of open() with obsolete signature.'); - if (typeof args === 'number') { - scale = args; // scale argument was found - } - args = arguments[4] || null; - if (arguments[3] && typeof arguments[3] === 'object') { - // The pdfDataRangeTransport argument is present. - args = Object.create(args); - args.range = arguments[3]; - } - if (typeof arguments[2] === 'string') { - // The password argument is present. - args = Object.create(args); - args.password = arguments[2]; - } - } - - if (this.pdfLoadingTask) { - // We need to destroy already opened document. - return this.close().then(function () { - // Reload the preferences if a document was previously opened. - Preferences.reload(); - // ... and repeat the open() call. - return this.open(file, args); - }.bind(this)); - } - - var parameters = Object.create(null); - if (typeof file === 'string') { // URL - this.setTitleUsingUrl(file); - parameters.url = file; - } else if (file && 'byteLength' in file) { // ArrayBuffer - parameters.data = file; - } else if (file.url && file.originalUrl) { - this.setTitleUsingUrl(file.originalUrl); - parameters.url = file.url; - } - if (args) { - for (var prop in args) { - parameters[prop] = args[prop]; - } - } - - var self = this; - self.downloadComplete = false; - - var loadingTask = PDFJS.getDocument(parameters); - this.pdfLoadingTask = loadingTask; - - loadingTask.onPassword = function passwordNeeded(updatePassword, reason) { - PasswordPrompt.updatePassword = updatePassword; - PasswordPrompt.reason = reason; - PasswordPrompt.open(); - }; - - loadingTask.onProgress = function getDocumentProgress(progressData) { - self.progress(progressData.loaded / progressData.total); - }; - - var result = loadingTask.promise.then( - function getDocumentCallback(pdfDocument) { - self.load(pdfDocument, scale); - }, - function getDocumentError(exception) { - var message = exception && exception.message; - var loadingErrorMessage = mozL10n.get('loading_error', null, - 'An error occurred while loading the PDF.'); - - if (exception instanceof PDFJS.InvalidPDFException) { - // change error message also for other builds - loadingErrorMessage = mozL10n.get('invalid_file_error', null, - 'Invalid or corrupted PDF file.'); - } else if (exception instanceof PDFJS.MissingPDFException) { - // special message for missing PDF's - loadingErrorMessage = mozL10n.get('missing_file_error', null, - 'Missing PDF file.'); - } else if (exception instanceof PDFJS.UnexpectedResponseException) { - loadingErrorMessage = mozL10n.get('unexpected_response_error', null, - 'Unexpected server response.'); - } - - var moreInfo = { - message: message - }; - self.error(loadingErrorMessage, moreInfo); - - throw new Error(loadingErrorMessage); - } - ); - - if (args && args.length) { - PDFViewerApplication.pdfDocumentProperties.setFileSize(args.length); - } - return result; - }, - - download: function pdfViewDownload() { - function downloadByUrl() { - downloadManager.downloadUrl(url, filename); - } - - var url = this.url.split('#')[0]; - var filename = getPDFFileNameFromURL(url); - var downloadManager = new DownloadManager(); - downloadManager.onerror = function (err) { - // This error won't really be helpful because it's likely the - // fallback won't work either (or is already open). - PDFViewerApplication.error('PDF failed to download.'); - }; - - if (!this.pdfDocument) { // the PDF is not ready yet - downloadByUrl(); - return; - } - - if (!this.downloadComplete) { // the PDF is still downloading - downloadByUrl(); - return; - } - - this.pdfDocument.getData().then( - function getDataSuccess(data) { - var blob = PDFJS.createBlob(data, 'application/pdf'); - downloadManager.download(blob, url, filename); - }, - downloadByUrl // Error occurred try downloading with just the url. - ).then(null, downloadByUrl); - }, - - fallback: function pdfViewFallback(featureId) { - }, - - /** - * Show the error box. - * @param {String} message A message that is human readable. - * @param {Object} moreInfo (optional) Further information about the error - * that is more technical. Should have a 'message' - * and optionally a 'stack' property. - */ - error: function pdfViewError(message, moreInfo) { - var moreInfoText = mozL10n.get('error_version_info', - {version: PDFJS.version || '?', build: PDFJS.build || '?'}, - 'PDF.js v{{version}} (build: {{build}})') + '\n'; - if (moreInfo) { - moreInfoText += - mozL10n.get('error_message', {message: moreInfo.message}, - 'Message: {{message}}'); - if (moreInfo.stack) { - moreInfoText += '\n' + - mozL10n.get('error_stack', {stack: moreInfo.stack}, - 'Stack: {{stack}}'); - } else { - if (moreInfo.filename) { - moreInfoText += '\n' + - mozL10n.get('error_file', {file: moreInfo.filename}, - 'File: {{file}}'); - } - if (moreInfo.lineNumber) { - moreInfoText += '\n' + - mozL10n.get('error_line', {line: moreInfo.lineNumber}, - 'Line: {{line}}'); - } - } - } - - var errorWrapper = document.getElementById('errorWrapper'); - errorWrapper.removeAttribute('hidden'); - - var errorMessage = document.getElementById('errorMessage'); - errorMessage.textContent = message; - - var closeButton = document.getElementById('errorClose'); - closeButton.onclick = function() { - errorWrapper.setAttribute('hidden', 'true'); - }; - - var errorMoreInfo = document.getElementById('errorMoreInfo'); - var moreInfoButton = document.getElementById('errorShowMore'); - var lessInfoButton = document.getElementById('errorShowLess'); - moreInfoButton.onclick = function() { - errorMoreInfo.removeAttribute('hidden'); - moreInfoButton.setAttribute('hidden', 'true'); - lessInfoButton.removeAttribute('hidden'); - errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px'; - }; - lessInfoButton.onclick = function() { - errorMoreInfo.setAttribute('hidden', 'true'); - moreInfoButton.removeAttribute('hidden'); - lessInfoButton.setAttribute('hidden', 'true'); - }; - moreInfoButton.oncontextmenu = noContextMenuHandler; - lessInfoButton.oncontextmenu = noContextMenuHandler; - closeButton.oncontextmenu = noContextMenuHandler; - moreInfoButton.removeAttribute('hidden'); - lessInfoButton.setAttribute('hidden', 'true'); - errorMoreInfo.value = moreInfoText; - }, - - progress: function pdfViewProgress(level) { - var percent = Math.round(level * 100); - // When we transition from full request to range requests, it's possible - // that we discard some of the loaded data. This can cause the loading - // bar to move backwards. So prevent this by only updating the bar if it - // increases. - if (percent > this.loadingBar.percent || isNaN(percent)) { - this.loadingBar.percent = percent; - - // When disableAutoFetch is enabled, it's not uncommon for the entire file - // to never be fetched (depends on e.g. the file structure). In this case - // the loading bar will not be completely filled, nor will it be hidden. - // To prevent displaying a partially filled loading bar permanently, we - // hide it when no data has been loaded during a certain amount of time. - if (PDFJS.disableAutoFetch && percent) { - if (this.disableAutoFetchLoadingBarTimeout) { - clearTimeout(this.disableAutoFetchLoadingBarTimeout); - this.disableAutoFetchLoadingBarTimeout = null; - } - this.loadingBar.show(); - - this.disableAutoFetchLoadingBarTimeout = setTimeout(function () { - this.loadingBar.hide(); - this.disableAutoFetchLoadingBarTimeout = null; - }.bind(this), DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT); - } - } - }, - - load: function pdfViewLoad(pdfDocument, scale) { - var self = this; - scale = scale || UNKNOWN_SCALE; - - this.findController.reset(); - - this.pdfDocument = pdfDocument; - - this.pdfDocumentProperties.setDocumentAndUrl(pdfDocument, this.url); - - var downloadedPromise = pdfDocument.getDownloadInfo().then(function() { - self.downloadComplete = true; - self.loadingBar.hide(); - }); - - var pagesCount = pdfDocument.numPages; - document.getElementById('numPages').textContent = - mozL10n.get('page_of', {pageCount: pagesCount}, 'of {{pageCount}}'); - document.getElementById('pageNumber').max = pagesCount; - - var id = this.documentFingerprint = pdfDocument.fingerprint; - var store = this.store = new ViewHistory(id); - - var baseDocumentUrl = null; - this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); - - var pdfViewer = this.pdfViewer; - pdfViewer.currentScale = scale; - pdfViewer.setDocument(pdfDocument); - var firstPagePromise = pdfViewer.firstPagePromise; - var pagesPromise = pdfViewer.pagesPromise; - var onePageRendered = pdfViewer.onePageRendered; - - this.pageRotation = 0; - this.isInitialViewSet = false; - - this.pdfThumbnailViewer.setDocument(pdfDocument); - - firstPagePromise.then(function(pdfPage) { - downloadedPromise.then(function () { - var event = document.createEvent('CustomEvent'); - event.initCustomEvent('documentload', true, true, {}); - window.dispatchEvent(event); - }); - - self.loadingBar.setWidth(document.getElementById('viewer')); - - if (!PDFJS.disableHistory && !self.isViewerEmbedded) { - // The browsing history is only enabled when the viewer is standalone, - // i.e. not when it is embedded in a web page. - if (!self.preferenceShowPreviousViewOnLoad) { - self.pdfHistory.clearHistoryState(); - } - self.pdfHistory.initialize(self.documentFingerprint); - - if (self.pdfHistory.initialDestination) { - self.initialDestination = self.pdfHistory.initialDestination; - } else if (self.pdfHistory.initialBookmark) { - self.initialBookmark = self.pdfHistory.initialBookmark; - } - } - - var initialParams = { - destination: self.initialDestination, - bookmark: self.initialBookmark, - hash: null, - }; - - store.initializedPromise.then(function resolved() { - var storedHash = null; - if (self.preferenceShowPreviousViewOnLoad && - store.get('exists', false)) { - var pageNum = store.get('page', '1'); - var zoom = self.preferenceDefaultZoomValue || - store.get('zoom', DEFAULT_SCALE_VALUE); - var left = store.get('scrollLeft', '0'); - var top = store.get('scrollTop', '0'); - - storedHash = 'page=' + pageNum + '&zoom=' + zoom + ',' + - left + ',' + top; - } else if (self.preferenceDefaultZoomValue) { - storedHash = 'page=1&zoom=' + self.preferenceDefaultZoomValue; - } - self.setInitialView(storedHash, scale); - - initialParams.hash = storedHash; - - // Make all navigation keys work on document load, - // unless the viewer is embedded in a web page. - if (!self.isViewerEmbedded) { - self.pdfViewer.focus(); - } - }, function rejected(reason) { - console.error(reason); - self.setInitialView(null, scale); - }); - - // For documents with different page sizes, - // ensure that the correct location becomes visible on load. - pagesPromise.then(function resolved() { - if (!initialParams.destination && !initialParams.bookmark && - !initialParams.hash) { - return; - } - if (self.hasEqualPageSizes) { - return; - } - self.initialDestination = initialParams.destination; - self.initialBookmark = initialParams.bookmark; - - self.pdfViewer.currentScaleValue = self.pdfViewer.currentScaleValue; - self.setInitialView(initialParams.hash, scale); - }); - }); - - pagesPromise.then(function() { - if (self.supportsPrinting) { - pdfDocument.getJavaScript().then(function(javaScript) { - if (javaScript.length) { - console.warn('Warning: JavaScript is not supported'); - self.fallback(PDFJS.UNSUPPORTED_FEATURES.javaScript); - } - // Hack to support auto printing. - var regex = /\bprint\s*\(/; - for (var i = 0, ii = javaScript.length; i < ii; i++) { - var js = javaScript[i]; - if (js && regex.test(js)) { - setTimeout(function() { - window.print(); - }); - return; - } - } - }); - } - }); - - // outline depends on pagesRefMap - var promises = [pagesPromise, this.animationStartedPromise]; - Promise.all(promises).then(function() { - pdfDocument.getOutline().then(function(outline) { - var container = document.getElementById('outlineView'); - self.outline = new PDFOutlineView({ - container: container, - outline: outline, - linkService: self.pdfLinkService - }); - self.outline.render(); - document.getElementById('viewOutline').disabled = !outline; - - if (!outline && !container.classList.contains('hidden')) { - self.switchSidebarView('thumbs'); - } - if (outline && - self.preferenceSidebarViewOnLoad === SidebarView.OUTLINE) { - self.switchSidebarView('outline', true); - } - }); - pdfDocument.getAttachments().then(function(attachments) { - var container = document.getElementById('attachmentsView'); - self.attachments = new PDFAttachmentView({ - container: container, - attachments: attachments, - downloadManager: new DownloadManager() - }); - self.attachments.render(); - document.getElementById('viewAttachments').disabled = !attachments; - - if (!attachments && !container.classList.contains('hidden')) { - self.switchSidebarView('thumbs'); - } - if (attachments && - self.preferenceSidebarViewOnLoad === SidebarView.ATTACHMENTS) { - self.switchSidebarView('attachments', true); - } - }); - }); - - if (self.preferenceSidebarViewOnLoad === SidebarView.THUMBS) { - Promise.all([firstPagePromise, onePageRendered]).then(function () { - self.switchSidebarView('thumbs', true); - }); - } - - pdfDocument.getMetadata().then(function(data) { - var info = data.info, metadata = data.metadata; - self.documentInfo = info; - self.metadata = metadata; - - // Provides some basic debug information - console.log('PDF ' + pdfDocument.fingerprint + ' [' + - info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + - ' / ' + (info.Creator || '-').trim() + ']' + - ' (PDF.js: ' + (PDFJS.version || '-') + - (!PDFJS.disableWebGL ? ' [WebGL]' : '') + ')'); - - var pdfTitle; - if (metadata && metadata.has('dc:title')) { - var title = metadata.get('dc:title'); - // Ghostscript sometimes return 'Untitled', sets the title to 'Untitled' - if (title !== 'Untitled') { - pdfTitle = title; - } - } - - if (!pdfTitle && info && info['Title']) { - pdfTitle = info['Title']; - } - - if (pdfTitle) { - self.setTitle(pdfTitle + ' - ' + document.title); - } - - if (info.IsAcroFormPresent) { - console.warn('Warning: AcroForm/XFA is not supported'); - self.fallback(PDFJS.UNSUPPORTED_FEATURES.forms); - } - - }); - }, - - setInitialView: function pdfViewSetInitialView(storedHash, scale) { - this.isInitialViewSet = true; - - // When opening a new file, when one is already loaded in the viewer, - // ensure that the 'pageNumber' element displays the correct value. - document.getElementById('pageNumber').value = - this.pdfViewer.currentPageNumber; - - if (this.initialDestination) { - this.pdfLinkService.navigateTo(this.initialDestination); - this.initialDestination = null; - } else if (this.initialBookmark) { - this.pdfLinkService.setHash(this.initialBookmark); - this.pdfHistory.push({ hash: this.initialBookmark }, true); - this.initialBookmark = null; - } else if (storedHash) { - this.pdfLinkService.setHash(storedHash); - } else if (scale) { - this.pdfViewer.currentScaleValue = scale; - this.page = 1; - } - - if (!this.pdfViewer.currentScaleValue) { - // Scale was not initialized: invalid bookmark or scale was not specified. - // Setting the default one. - this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE; - } - }, - - cleanup: function pdfViewCleanup() { - if (!this.pdfDocument) { - return; // run cleanup when document is loaded - } - this.pdfViewer.cleanup(); - this.pdfThumbnailViewer.cleanup(); - this.pdfDocument.cleanup(); - }, - - forceRendering: function pdfViewForceRendering() { - this.pdfRenderingQueue.printing = this.printing; - this.pdfRenderingQueue.isThumbnailViewEnabled = this.sidebarOpen; - this.pdfRenderingQueue.renderHighestPriority(); - }, - - refreshThumbnailViewer: function pdfViewRefreshThumbnailViewer() { - var pdfViewer = this.pdfViewer; - var thumbnailViewer = this.pdfThumbnailViewer; - - // set thumbnail images of rendered pages - var pagesCount = pdfViewer.pagesCount; - for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) { - var pageView = pdfViewer.getPageView(pageIndex); - if (pageView && pageView.renderingState === RenderingStates.FINISHED) { - var thumbnailView = thumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - } - - thumbnailViewer.scrollThumbnailIntoView(this.page); - }, - - switchSidebarView: function pdfViewSwitchSidebarView(view, openSidebar) { - if (openSidebar && !this.sidebarOpen) { - document.getElementById('sidebarToggle').click(); - } - var thumbsView = document.getElementById('thumbnailView'); - var outlineView = document.getElementById('outlineView'); - var attachmentsView = document.getElementById('attachmentsView'); - - var thumbsButton = document.getElementById('viewThumbnail'); - var outlineButton = document.getElementById('viewOutline'); - var attachmentsButton = document.getElementById('viewAttachments'); - - switch (view) { - case 'thumbs': - var wasAnotherViewVisible = thumbsView.classList.contains('hidden'); - - thumbsButton.classList.add('toggled'); - outlineButton.classList.remove('toggled'); - attachmentsButton.classList.remove('toggled'); - thumbsView.classList.remove('hidden'); - outlineView.classList.add('hidden'); - attachmentsView.classList.add('hidden'); - - this.forceRendering(); - - if (wasAnotherViewVisible) { - this.pdfThumbnailViewer.ensureThumbnailVisible(this.page); - } - break; - - case 'outline': - if (outlineButton.disabled) { - return; - } - thumbsButton.classList.remove('toggled'); - outlineButton.classList.add('toggled'); - attachmentsButton.classList.remove('toggled'); - thumbsView.classList.add('hidden'); - outlineView.classList.remove('hidden'); - attachmentsView.classList.add('hidden'); - break; - - case 'attachments': - if (attachmentsButton.disabled) { - return; - } - thumbsButton.classList.remove('toggled'); - outlineButton.classList.remove('toggled'); - attachmentsButton.classList.add('toggled'); - thumbsView.classList.add('hidden'); - outlineView.classList.add('hidden'); - attachmentsView.classList.remove('hidden'); - break; - } - }, - - beforePrint: function pdfViewSetupBeforePrint() { - if (!this.supportsPrinting) { - var printMessage = mozL10n.get('printing_not_supported', null, - 'Warning: Printing is not fully supported by this browser.'); - this.error(printMessage); - return; - } - - var alertNotReady = false; - var i, ii; - if (!this.pdfDocument || !this.pagesCount) { - alertNotReady = true; - } else { - for (i = 0, ii = this.pagesCount; i < ii; ++i) { - if (!this.pdfViewer.getPageView(i).pdfPage) { - alertNotReady = true; - break; - } - } - } - if (alertNotReady) { - var notReadyMessage = mozL10n.get('printing_not_ready', null, - 'Warning: The PDF is not fully loaded for printing.'); - window.alert(notReadyMessage); - return; - } - - this.printing = true; - this.forceRendering(); - - var body = document.querySelector('body'); - body.setAttribute('data-mozPrintCallback', true); - - if (!this.hasEqualPageSizes) { - console.warn('Not all pages have the same size. The printed result ' + - 'may be incorrect!'); - } - - // Insert a @page + size rule to make sure that the page size is correctly - // set. Note that we assume that all pages have the same size, because - // variable-size pages are not supported yet (at least in Chrome & Firefox). - // TODO(robwu): Use named pages when size calculation bugs get resolved - // (e.g. https://crbug.com/355116) AND when support for named pages is - // added (http://www.w3.org/TR/css3-page/#using-named-pages). - // In browsers where @page + size is not supported (such as Firefox, - // https://bugzil.la/851441), the next stylesheet will be ignored and the - // user has to select the correct paper size in the UI if wanted. - this.pageStyleSheet = document.createElement('style'); - var pageSize = this.pdfViewer.getPageView(0).pdfPage.getViewport(1); - this.pageStyleSheet.textContent = - // "size:<width> <height>" is what we need. But also add "A4" because - // Firefox incorrectly reports support for the other value. - '@supports ((size:A4) and (size:1pt 1pt)) {' + - '@page { size: ' + pageSize.width + 'pt ' + pageSize.height + 'pt;}' + - // The canvas and each ancestor node must have a height of 100% to make - // sure that each canvas is printed on exactly one page. - '#printContainer {height:100%}' + - '#printContainer > div {width:100% !important;height:100% !important;}' + - '}'; - body.appendChild(this.pageStyleSheet); - - for (i = 0, ii = this.pagesCount; i < ii; ++i) { - this.pdfViewer.getPageView(i).beforePrint(); - } - - }, - - // Whether all pages of the PDF have the same width and height. - get hasEqualPageSizes() { - var firstPage = this.pdfViewer.getPageView(0); - for (var i = 1, ii = this.pagesCount; i < ii; ++i) { - var pageView = this.pdfViewer.getPageView(i); - if (pageView.width !== firstPage.width || - pageView.height !== firstPage.height) { - return false; - } - } - return true; - }, - - afterPrint: function pdfViewSetupAfterPrint() { - var div = document.getElementById('printContainer'); - while (div.hasChildNodes()) { - div.removeChild(div.lastChild); - } - - if (this.pageStyleSheet && this.pageStyleSheet.parentNode) { - this.pageStyleSheet.parentNode.removeChild(this.pageStyleSheet); - this.pageStyleSheet = null; - } - - this.printing = false; - this.forceRendering(); - }, - - rotatePages: function pdfViewRotatePages(delta) { - var pageNumber = this.page; - this.pageRotation = (this.pageRotation + 360 + delta) % 360; - this.pdfViewer.pagesRotation = this.pageRotation; - this.pdfThumbnailViewer.pagesRotation = this.pageRotation; - - this.forceRendering(); - - this.pdfViewer.scrollPageIntoView(pageNumber); - }, - - requestPresentationMode: function pdfViewRequestPresentationMode() { - if (!this.pdfPresentationMode) { - return; - } - this.pdfPresentationMode.request(); - }, - - /** - * @param {number} delta - The delta value from the mouse event. - */ - scrollPresentationMode: function pdfViewScrollPresentationMode(delta) { - if (!this.pdfPresentationMode) { - return; - } - this.pdfPresentationMode.mouseScroll(delta); - } -}; -window.PDFView = PDFViewerApplication; // obsolete name, using it as an alias - - -function webViewerLoad(evt) { - PDFViewerApplication.initialize().then(webViewerInitialized); -} - -function webViewerInitialized() { - var queryString = document.location.search.substring(1); - var params = parseQueryString(queryString); - var file = 'file' in params ? params.file : DEFAULT_URL; - - var fileInput = document.createElement('input'); - fileInput.id = 'fileInput'; - fileInput.className = 'fileInput'; - fileInput.setAttribute('type', 'file'); - fileInput.oncontextmenu = noContextMenuHandler; - document.body.appendChild(fileInput); - - if (!window.File || !window.FileReader || !window.FileList || !window.Blob) { - document.getElementById('openFile').setAttribute('hidden', 'true'); - document.getElementById('secondaryOpenFile').setAttribute('hidden', 'true'); - } else { - document.getElementById('fileInput').value = null; - } - - var locale = PDFJS.locale || navigator.language; - - if (PDFViewerApplication.preferencePdfBugEnabled) { - // Special debugging flags in the hash section of the URL. - var hash = document.location.hash.substring(1); - var hashParams = parseQueryString(hash); - - if ('disableworker' in hashParams) { - PDFJS.disableWorker = (hashParams['disableworker'] === 'true'); - } - if ('disablerange' in hashParams) { - PDFJS.disableRange = (hashParams['disablerange'] === 'true'); - } - if ('disablestream' in hashParams) { - PDFJS.disableStream = (hashParams['disablestream'] === 'true'); - } - if ('disableautofetch' in hashParams) { - PDFJS.disableAutoFetch = (hashParams['disableautofetch'] === 'true'); - } - if ('disablefontface' in hashParams) { - PDFJS.disableFontFace = (hashParams['disablefontface'] === 'true'); - } - if ('disablehistory' in hashParams) { - PDFJS.disableHistory = (hashParams['disablehistory'] === 'true'); - } - if ('webgl' in hashParams) { - PDFJS.disableWebGL = (hashParams['webgl'] !== 'true'); - } - if ('useonlycsszoom' in hashParams) { - PDFJS.useOnlyCssZoom = (hashParams['useonlycsszoom'] === 'true'); - } - if ('verbosity' in hashParams) { - PDFJS.verbosity = hashParams['verbosity'] | 0; - } - if ('ignorecurrentpositiononzoom' in hashParams) { - IGNORE_CURRENT_POSITION_ON_ZOOM = - (hashParams['ignorecurrentpositiononzoom'] === 'true'); - } - if ('locale' in hashParams) { - locale = hashParams['locale']; - } - if ('textlayer' in hashParams) { - switch (hashParams['textlayer']) { - case 'off': - PDFJS.disableTextLayer = true; - break; - case 'visible': - case 'shadow': - case 'hover': - var viewer = document.getElementById('viewer'); - viewer.classList.add('textLayer-' + hashParams['textlayer']); - break; - } - } - if ('pdfbug' in hashParams) { - PDFJS.pdfBug = true; - var pdfBug = hashParams['pdfbug']; - var enabled = pdfBug.split(','); - PDFBug.enable(enabled); - PDFBug.init(); - } - } - - mozL10n.setLanguage(locale); - - if (!PDFViewerApplication.supportsPrinting) { - document.getElementById('print').classList.add('hidden'); - document.getElementById('secondaryPrint').classList.add('hidden'); - } - - if (!PDFViewerApplication.supportsFullscreen) { - document.getElementById('presentationMode').classList.add('hidden'); - document.getElementById('secondaryPresentationMode'). - classList.add('hidden'); - } - - if (PDFViewerApplication.supportsIntegratedFind) { - document.getElementById('viewFind').classList.add('hidden'); - } - - // Listen for unsupported features to trigger the fallback UI. - PDFJS.UnsupportedManager.listen( - PDFViewerApplication.fallback.bind(PDFViewerApplication)); - - // Suppress context menus for some controls - document.getElementById('scaleSelect').oncontextmenu = noContextMenuHandler; - - var mainContainer = document.getElementById('mainContainer'); - var outerContainer = document.getElementById('outerContainer'); - mainContainer.addEventListener('transitionend', function(e) { - if (e.target === mainContainer) { - var event = document.createEvent('UIEvents'); - event.initUIEvent('resize', false, false, window, 0); - window.dispatchEvent(event); - outerContainer.classList.remove('sidebarMoving'); - } - }, true); - - document.getElementById('sidebarToggle').addEventListener('click', - function() { - this.classList.toggle('toggled'); - outerContainer.classList.add('sidebarMoving'); - outerContainer.classList.toggle('sidebarOpen'); - PDFViewerApplication.sidebarOpen = - outerContainer.classList.contains('sidebarOpen'); - if (PDFViewerApplication.sidebarOpen) { - PDFViewerApplication.refreshThumbnailViewer(); - } - PDFViewerApplication.forceRendering(); - }); - - document.getElementById('viewThumbnail').addEventListener('click', - function() { - PDFViewerApplication.switchSidebarView('thumbs'); - }); - - document.getElementById('viewOutline').addEventListener('click', - function() { - PDFViewerApplication.switchSidebarView('outline'); - }); - - document.getElementById('viewOutline').addEventListener('dblclick', - function() { - PDFViewerApplication.outline.toggleOutlineTree(); - }); - - document.getElementById('viewAttachments').addEventListener('click', - function() { - PDFViewerApplication.switchSidebarView('attachments'); - }); - - document.getElementById('previous').addEventListener('click', - function() { - PDFViewerApplication.page--; - }); - - document.getElementById('next').addEventListener('click', - function() { - PDFViewerApplication.page++; - }); - - document.getElementById('zoomIn').addEventListener('click', - function() { - PDFViewerApplication.zoomIn(); - }); - - document.getElementById('zoomOut').addEventListener('click', - function() { - PDFViewerApplication.zoomOut(); - }); - - document.getElementById('pageNumber').addEventListener('click', function() { - this.select(); - }); - - document.getElementById('pageNumber').addEventListener('change', function() { - // Handle the user inputting a floating point number. - PDFViewerApplication.page = (this.value | 0); - - if (this.value !== (this.value | 0).toString()) { - this.value = PDFViewerApplication.page; - } - }); - - document.getElementById('scaleSelect').addEventListener('change', function() { - if (this.value === 'custom') { - return; - } - PDFViewerApplication.pdfViewer.currentScaleValue = this.value; - }); - - document.getElementById('presentationMode').addEventListener('click', - SecondaryToolbar.presentationModeClick.bind(SecondaryToolbar)); - - document.getElementById('openFile').addEventListener('click', - SecondaryToolbar.openFileClick.bind(SecondaryToolbar)); - - document.getElementById('print').addEventListener('click', - SecondaryToolbar.printClick.bind(SecondaryToolbar)); - - document.getElementById('download').addEventListener('click', - SecondaryToolbar.downloadClick.bind(SecondaryToolbar)); - - - if (file && file.lastIndexOf('file:', 0) === 0) { - // file:-scheme. Load the contents in the main thread because QtWebKit - // cannot load file:-URLs in a Web Worker. file:-URLs are usually loaded - // very quickly, so there is no need to set up progress event listeners. - PDFViewerApplication.setTitleUsingUrl(file); - var xhr = new XMLHttpRequest(); - xhr.onload = function() { - PDFViewerApplication.open(new Uint8Array(xhr.response)); - }; - try { - xhr.open('GET', file); - xhr.responseType = 'arraybuffer'; - xhr.send(); - } catch (e) { - PDFViewerApplication.error(mozL10n.get('loading_error', null, - 'An error occurred while loading the PDF.'), e); - } - return; - } - - if (file) { - PDFViewerApplication.open(file); - } -} - -document.addEventListener('DOMContentLoaded', webViewerLoad, true); - -document.addEventListener('pagerendered', function (e) { - var pageNumber = e.detail.pageNumber; - var pageIndex = pageNumber - 1; - var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex); - - if (PDFViewerApplication.sidebarOpen) { - var thumbnailView = PDFViewerApplication.pdfThumbnailViewer. - getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - - if (PDFJS.pdfBug && Stats.enabled && pageView.stats) { - Stats.add(pageNumber, pageView.stats); - } - - if (pageView.error) { - PDFViewerApplication.error(mozL10n.get('rendering_error', null, - 'An error occurred while rendering the page.'), pageView.error); - } - - // If the page is still visible when it has finished rendering, - // ensure that the page number input loading indicator is hidden. - if (pageNumber === PDFViewerApplication.page) { - var pageNumberInput = document.getElementById('pageNumber'); - pageNumberInput.classList.remove(PAGE_NUMBER_LOADING_INDICATOR); - } - -}, true); - -document.addEventListener('textlayerrendered', function (e) { - var pageIndex = e.detail.pageNumber - 1; - var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex); - -}, true); - -document.addEventListener('pagemode', function (evt) { - if (!PDFViewerApplication.initialized) { - return; - } - // Handle the 'pagemode' hash parameter, see also `PDFLinkService_setHash`. - var mode = evt.detail.mode; - switch (mode) { - case 'bookmarks': - // Note: Our code calls this property 'outline', even though the - // Open Parameter specification calls it 'bookmarks'. - mode = 'outline'; - /* falls through */ - case 'thumbs': - case 'attachments': - PDFViewerApplication.switchSidebarView(mode, true); - break; - case 'none': - if (PDFViewerApplication.sidebarOpen) { - document.getElementById('sidebarToggle').click(); - } - break; - } -}, true); - -document.addEventListener('namedaction', function (e) { - if (!PDFViewerApplication.initialized) { - return; - } - // Processing couple of named actions that might be useful. - // See also PDFLinkService.executeNamedAction - var action = e.detail.action; - switch (action) { - case 'GoToPage': - document.getElementById('pageNumber').focus(); - break; - - case 'Find': - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.toggle(); - } - break; - } -}, true); - -window.addEventListener('presentationmodechanged', function (e) { - var active = e.detail.active; - var switchInProgress = e.detail.switchInProgress; - PDFViewerApplication.pdfViewer.presentationModeState = - switchInProgress ? PresentationModeState.CHANGING : - active ? PresentationModeState.FULLSCREEN : PresentationModeState.NORMAL; -}); - -window.addEventListener('updateviewarea', function (evt) { - if (!PDFViewerApplication.initialized) { - return; - } - var location = evt.location; - - PDFViewerApplication.store.initializedPromise.then(function() { - PDFViewerApplication.store.setMultiple({ - 'exists': true, - 'page': location.pageNumber, - 'zoom': location.scale, - 'scrollLeft': location.left, - 'scrollTop': location.top - }).catch(function() { - // unable to write to storage - }); - }); - var href = - PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); - document.getElementById('viewBookmark').href = href; - document.getElementById('secondaryViewBookmark').href = href; - - // Update the current bookmark in the browsing history. - PDFViewerApplication.pdfHistory.updateCurrentBookmark(location.pdfOpenParams, - location.pageNumber); - - // Show/hide the loading indicator in the page number input element. - var pageNumberInput = document.getElementById('pageNumber'); - var currentPage = - PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1); - - if (currentPage.renderingState === RenderingStates.FINISHED) { - pageNumberInput.classList.remove(PAGE_NUMBER_LOADING_INDICATOR); - } else { - pageNumberInput.classList.add(PAGE_NUMBER_LOADING_INDICATOR); - } -}, true); - -window.addEventListener('resize', function webViewerResize(evt) { - if (PDFViewerApplication.initialized) { - var currentScaleValue = PDFViewerApplication.pdfViewer.currentScaleValue; - if (currentScaleValue === 'auto' || - currentScaleValue === 'page-fit' || - currentScaleValue === 'page-width') { - // Note: the scale is constant for 'page-actual'. - PDFViewerApplication.pdfViewer.currentScaleValue = currentScaleValue; - } else if (!currentScaleValue) { - // Normally this shouldn't happen, but if the scale wasn't initialized - // we set it to the default value in order to prevent any issues. - // (E.g. the document being rendered with the wrong scale on load.) - PDFViewerApplication.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE; - } - PDFViewerApplication.pdfViewer.update(); - } - - // Set the 'max-height' CSS property of the secondary toolbar. - SecondaryToolbar.setMaxHeight(document.getElementById('viewerContainer')); -}); - -window.addEventListener('hashchange', function webViewerHashchange(evt) { - if (PDFViewerApplication.pdfHistory.isHashChangeUnlocked) { - var hash = document.location.hash.substring(1); - if (!hash) { - return; - } - if (!PDFViewerApplication.isInitialViewSet) { - PDFViewerApplication.initialBookmark = hash; - } else { - PDFViewerApplication.pdfLinkService.setHash(hash); - } - } -}); - -window.addEventListener('change', function webViewerChange(evt) { - var files = evt.target.files; - if (!files || files.length === 0) { - return; - } - var file = files[0]; - - if (!PDFJS.disableCreateObjectURL && - typeof URL !== 'undefined' && URL.createObjectURL) { - PDFViewerApplication.open(URL.createObjectURL(file)); - } else { - // Read the local file into a Uint8Array. - var fileReader = new FileReader(); - fileReader.onload = function webViewerChangeFileReaderOnload(evt) { - var buffer = evt.target.result; - var uint8Array = new Uint8Array(buffer); - PDFViewerApplication.open(uint8Array); - }; - fileReader.readAsArrayBuffer(file); - } - - PDFViewerApplication.setTitleUsingUrl(file.name); - - // URL does not reflect proper document location - hiding some icons. - document.getElementById('viewBookmark').setAttribute('hidden', 'true'); - document.getElementById('secondaryViewBookmark'). - setAttribute('hidden', 'true'); - document.getElementById('download').setAttribute('hidden', 'true'); - document.getElementById('secondaryDownload').setAttribute('hidden', 'true'); -}, true); - -function selectScaleOption(value) { - var options = document.getElementById('scaleSelect').options; - var predefinedValueFound = false; - for (var i = 0, ii = options.length; i < ii; i++) { - var option = options[i]; - if (option.value !== value) { - option.selected = false; - continue; - } - option.selected = true; - predefinedValueFound = true; - } - return predefinedValueFound; -} - -window.addEventListener('localized', function localized(evt) { - document.getElementsByTagName('html')[0].dir = mozL10n.getDirection(); - - PDFViewerApplication.animationStartedPromise.then(function() { - // Adjust the width of the zoom box to fit the content. - // Note: If the window is narrow enough that the zoom box is not visible, - // we temporarily show it to be able to adjust its width. - var container = document.getElementById('scaleSelectContainer'); - if (container.clientWidth === 0) { - container.setAttribute('style', 'display: inherit;'); - } - if (container.clientWidth > 0) { - var select = document.getElementById('scaleSelect'); - select.setAttribute('style', 'min-width: inherit;'); - var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING; - select.setAttribute('style', 'min-width: ' + - (width + SCALE_SELECT_PADDING) + 'px;'); - container.setAttribute('style', 'min-width: ' + width + 'px; ' + - 'max-width: ' + width + 'px;'); - } - - // Set the 'max-height' CSS property of the secondary toolbar. - SecondaryToolbar.setMaxHeight(document.getElementById('viewerContainer')); - }); -}, true); - -window.addEventListener('scalechange', function scalechange(evt) { - document.getElementById('zoomOut').disabled = (evt.scale === MIN_SCALE); - document.getElementById('zoomIn').disabled = (evt.scale === MAX_SCALE); - - // Update the 'scaleSelect' DOM element. - var predefinedValueFound = selectScaleOption(evt.presetValue || - '' + evt.scale); - if (!predefinedValueFound) { - var customScaleOption = document.getElementById('customScaleOption'); - var customScale = Math.round(evt.scale * 10000) / 100; - customScaleOption.textContent = - mozL10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%'); - customScaleOption.selected = true; - } - if (!PDFViewerApplication.initialized) { - return; - } - PDFViewerApplication.pdfViewer.update(); -}, true); - -window.addEventListener('pagechange', function pagechange(evt) { - var page = evt.pageNumber; - if (evt.previousPageNumber !== page) { - document.getElementById('pageNumber').value = page; - if (PDFViewerApplication.sidebarOpen) { - PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page); - } - } - var numPages = PDFViewerApplication.pagesCount; - - document.getElementById('previous').disabled = (page <= 1); - document.getElementById('next').disabled = (page >= numPages); - - document.getElementById('firstPage').disabled = (page <= 1); - document.getElementById('lastPage').disabled = (page >= numPages); - - // we need to update stats - if (PDFJS.pdfBug && Stats.enabled) { - var pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1); - if (pageView.stats) { - Stats.add(page, pageView.stats); - } - } -}, true); - -function handleMouseWheel(evt) { - var MOUSE_WHEEL_DELTA_FACTOR = 40; - var ticks = (evt.type === 'DOMMouseScroll') ? -evt.detail : - evt.wheelDelta / MOUSE_WHEEL_DELTA_FACTOR; - var direction = (ticks < 0) ? 'zoomOut' : 'zoomIn'; - - var pdfViewer = PDFViewerApplication.pdfViewer; - if (pdfViewer.isInPresentationMode) { - evt.preventDefault(); - PDFViewerApplication.scrollPresentationMode(ticks * - MOUSE_WHEEL_DELTA_FACTOR); - } else if (evt.ctrlKey || evt.metaKey) { - var support = PDFViewerApplication.supportedMouseWheelZoomModifierKeys; - if ((evt.ctrlKey && !support.ctrlKey) || - (evt.metaKey && !support.metaKey)) { - return; - } - // Only zoom the pages, not the entire viewer. - evt.preventDefault(); - - var previousScale = pdfViewer.currentScale; - - PDFViewerApplication[direction](Math.abs(ticks)); - - var currentScale = pdfViewer.currentScale; - if (previousScale !== currentScale) { - // After scaling the page via zoomIn/zoomOut, the position of the upper- - // left corner is restored. When the mouse wheel is used, the position - // under the cursor should be restored instead. - var scaleCorrectionFactor = currentScale / previousScale - 1; - var rect = pdfViewer.container.getBoundingClientRect(); - var dx = evt.clientX - rect.left; - var dy = evt.clientY - rect.top; - pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor; - pdfViewer.container.scrollTop += dy * scaleCorrectionFactor; - } - } -} - -window.addEventListener('DOMMouseScroll', handleMouseWheel); -window.addEventListener('mousewheel', handleMouseWheel); - -window.addEventListener('click', function click(evt) { - if (SecondaryToolbar.opened && - PDFViewerApplication.pdfViewer.containsElement(evt.target)) { - SecondaryToolbar.close(); - } -}, false); - -window.addEventListener('keydown', function keydown(evt) { - if (OverlayManager.active) { - return; - } - - var handled = false; - var cmd = (evt.ctrlKey ? 1 : 0) | - (evt.altKey ? 2 : 0) | - (evt.shiftKey ? 4 : 0) | - (evt.metaKey ? 8 : 0); - - var pdfViewer = PDFViewerApplication.pdfViewer; - var isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode; - - // First, handle the key bindings that are independent whether an input - // control is selected or not. - if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { - // either CTRL or META key with optional SHIFT. - switch (evt.keyCode) { - case 70: // f - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.open(); - handled = true; - } - break; - case 71: // g - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.dispatchEvent('again', - cmd === 5 || cmd === 12); - handled = true; - } - break; - case 61: // FF/Mac '=' - case 107: // FF '+' and '=' - case 187: // Chrome '+' - case 171: // FF with German keyboard - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomIn(); - } - handled = true; - break; - case 173: // FF/Mac '-' - case 109: // FF '-' - case 189: // Chrome '-' - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomOut(); - } - handled = true; - break; - case 48: // '0' - case 96: // '0' on Numpad of Swedish keyboard - if (!isViewerInPresentationMode) { - // keeping it unhandled (to restore page zoom to 100%) - setTimeout(function () { - // ... and resetting the scale after browser adjusts its scale - pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE; - }); - handled = false; - } - break; - } - } - - // CTRL or META without shift - if (cmd === 1 || cmd === 8) { - switch (evt.keyCode) { - case 83: // s - PDFViewerApplication.download(); - handled = true; - break; - } - } - - // CTRL+ALT or Option+Command - if (cmd === 3 || cmd === 10) { - switch (evt.keyCode) { - case 80: // p - PDFViewerApplication.requestPresentationMode(); - handled = true; - break; - case 71: // g - // focuses input#pageNumber field - document.getElementById('pageNumber').select(); - handled = true; - break; - } - } - - if (handled) { - evt.preventDefault(); - return; - } - - // Some shortcuts should not get handled if a control/input element - // is selected. - var curElement = document.activeElement || document.querySelector(':focus'); - var curElementTagName = curElement && curElement.tagName.toUpperCase(); - if (curElementTagName === 'INPUT' || - curElementTagName === 'TEXTAREA' || - curElementTagName === 'SELECT') { - // Make sure that the secondary toolbar is closed when Escape is pressed. - if (evt.keyCode !== 27) { // 'Esc' - return; - } - } - var ensureViewerFocused = false; - - if (cmd === 0) { // no control key pressed at all. - switch (evt.keyCode) { - case 38: // up arrow - case 33: // pg up - case 8: // backspace - if (!isViewerInPresentationMode && - pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - /* in presentation mode */ - /* falls through */ - case 37: // left arrow - // horizontal scrolling using arrow keys - if (pdfViewer.isHorizontalScrollbarEnabled) { - break; - } - /* falls through */ - case 75: // 'k' - case 80: // 'p' - PDFViewerApplication.page--; - handled = true; - break; - case 27: // esc key - if (SecondaryToolbar.opened) { - SecondaryToolbar.close(); - handled = true; - } - if (!PDFViewerApplication.supportsIntegratedFind && - PDFViewerApplication.findBar.opened) { - PDFViewerApplication.findBar.close(); - handled = true; - } - break; - case 40: // down arrow - case 34: // pg down - case 32: // spacebar - if (!isViewerInPresentationMode && - pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - /* falls through */ - case 39: // right arrow - // horizontal scrolling using arrow keys - if (pdfViewer.isHorizontalScrollbarEnabled) { - break; - } - /* falls through */ - case 74: // 'j' - case 78: // 'n' - PDFViewerApplication.page++; - handled = true; - break; - - case 36: // home - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; - } - break; - case 35: // end - if (isViewerInPresentationMode || (PDFViewerApplication.pdfDocument && - PDFViewerApplication.page < PDFViewerApplication.pagesCount)) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; - } - break; - - case 72: // 'h' - if (!isViewerInPresentationMode) { - HandTool.toggle(); - } - break; - case 82: // 'r' - PDFViewerApplication.rotatePages(90); - break; - } - } - - if (cmd === 4) { // shift-key - switch (evt.keyCode) { - case 32: // spacebar - if (!isViewerInPresentationMode && - pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - PDFViewerApplication.page--; - handled = true; - break; - - case 82: // 'r' - PDFViewerApplication.rotatePages(-90); - break; - } - } - - if (!handled && !isViewerInPresentationMode) { - // 33=Page Up 34=Page Down 35=End 36=Home - // 37=Left 38=Up 39=Right 40=Down - // 32=Spacebar - if ((evt.keyCode >= 33 && evt.keyCode <= 40) || - (evt.keyCode === 32 && curElementTagName !== 'BUTTON')) { - ensureViewerFocused = true; - } - } - - if (cmd === 2) { // alt-key - switch (evt.keyCode) { - case 37: // left arrow - if (isViewerInPresentationMode) { - PDFViewerApplication.pdfHistory.back(); - handled = true; - } - break; - case 39: // right arrow - if (isViewerInPresentationMode) { - PDFViewerApplication.pdfHistory.forward(); - handled = true; - } - break; - } - } - - if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { - // The page container is not focused, but a page navigation key has been - // pressed. Change the focus to the viewer container to make sure that - // navigation by keyboard works as expected. - pdfViewer.focus(); - } - - if (handled) { - evt.preventDefault(); - } -}); - -window.addEventListener('beforeprint', function beforePrint(evt) { - PDFViewerApplication.beforePrint(); -}); - -window.addEventListener('afterprint', function afterPrint(evt) { - PDFViewerApplication.afterPrint(); -}); - -(function animationStartedClosure() { - // The offsetParent is not set until the pdf.js iframe or object is visible. - // Waiting for first animation. - PDFViewerApplication.animationStartedPromise = new Promise( - function (resolve) { - window.requestAnimationFrame(resolve); - }); -})(); - -- GitLab