From f91bdd61c164a72ea06be1a43dc0a412afc3925f Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 22 Jun 2018 10:54:14 -0500 Subject: [PATCH 01/41] Features/outline (#831) Outline support by @alexvdev and @blforce Close #216, close #13 --- README.md | 2 +- docs/generate.coffee | 7 ++++++ docs/guide.pdf | Bin 184969 -> 699930 bytes docs/outline.coffee.md | 28 +++++++++++++++++++++++ lib/document.coffee | 4 ++++ lib/mixins/outline.coffee | 11 +++++++++ lib/outline.coffee | 47 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 docs/outline.coffee.md create mode 100644 lib/mixins/outline.coffee create mode 100644 lib/outline.coffee diff --git a/README.md b/README.md index ec05c72d1..23a3c60dd 100644 --- a/README.md +++ b/README.md @@ -48,11 +48,11 @@ Installation uses the [npm](http://npmjs.org/) package manager. Just type the f * Highlights * Underlines * etc. +* Outlines ## Coming soon! * Patterns fills -* Outlines * PDF Security * Higher level APIs for creating tables and laying out content * More performance optimizations diff --git a/docs/generate.coffee b/docs/generate.coffee index 7dae10d86..888ef0eae 100644 --- a/docs/generate.coffee +++ b/docs/generate.coffee @@ -190,6 +190,11 @@ class Node if @type in ['h1', 'h2'] and lastType? and lastType isnt 'h1' doc.addPage() + if @type == 'h1' + doc.h1Outline = doc.outline.addItem(fragment.text) + else if @type == 'h2' && doc.h1Outline != null + doc.h1Outline.addItem(fragment.text) + # set styles and whether this fragment is continued (for rich text wrapping) options = @setStyle doc options.continued ?= continued or index < @content.length - 1 @@ -227,6 +232,7 @@ renderTitlePage = (doc) -> doc.y = doc.page.height / 2 - doc.currentLineHeight() doc.text title, align: 'center' w = doc.widthOfString(title) + doc.h1Outline = doc.outline.addItem(title) doc.fontSize 20 doc.y -= 10 @@ -250,5 +256,6 @@ do -> render doc, 'vector.coffee.md' render doc, 'text.coffee.md' render doc, 'images.coffee.md' + render doc, 'outline.coffee.md' render doc, 'annotations.coffee.md' doc.end() diff --git a/docs/guide.pdf b/docs/guide.pdf index b4b0bff21482b8794a6439923468f5f47b90c275..373dda3fd9154c5c47725e7222c843b4bdf67d0b 100644 GIT binary patch literal 699930 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 T!jma9FT#A&&tnq90* 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 o=e~+B6PH_)TR4FL*(x!wW2l=K356s#- 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 f5UNp~X zBKjscV76i{Vv8o7njIjVKlq`nR2d{7D20%g{%^4lXDGjXLK zIU6C$3U4V=&|cAJx+Tip*)4xbF{Z3LVO1lmlgaV9s%{#q*jO16R>eu@tTg_ly|PlP ztfp+=6Y&J0>y@@FHXDLqxrwx8_>(tOAD2BYBKd4ds78WUi7=~^@wHa*B9-mT zVR&ho|J}%Ml`@@CW)PV^xRj*Ws1puLuxX}rX0Uu2XTZl2BaVS4N35Z6JO^7-WDMA6 zAn|zZXs_W~AHyr!5ov#73A_g`2}7|Qv8-%2@G-OZW}-B6J(Esw>yHV~-;A zIF$*qls?PO*T&T}@p9F2S4<5ejXid9$uEB z;G-kbBQz5tkWd{X1e2+XhF(ESz3BQDwC#CicRx^~YZAEJJ+5(OgNwG#$d(eeVD92WWkMT}AH40~*`=zB4szL9+8?IzjO|vK*N1z- zMj=AlzO$xZm`kb-e>e{}wo_VvArD^#{Q4fgK82U?@O79E_wbjB5=wbO=Nh5}t}CU! zQQ!s_!Xa=gJ}3MeH<5p^#eNXS4H0C6&;vRAlcJK8osNG!M-X+T*)fsf6Ph0lIQQ=n z4SkOm5k3K$^HuAorM62KgzJvefY_$(mr0hjywhM3t|9Uiodbbu2T$`vA^J|!x!R_= z?w(|Y2jyt(4@GG zh9Mz-T7qi0FX9LSRLL@ZHu9DlVusDZi#zC0iwMK<-6>IpXM9$yk6X2BfF>7PBYQ1i zH2}S>g4hMPmQBF%`IIbg?QRggo{)q#?CTA*J%oQP7@v^FuV^$i^7~b6NErS#l87*- zEs4mL{rC@%q2)Oz)?b6!2y64i*B1L;&i|z67kA9V)oO~pZAVIz$Brfw|9HtVXT2m5 z&UM<_ac=gN_ja_PeVJ~Px10vNm~=SVY#*H4Eud;>FmrtGS$7RrIj!!9t%ERTdj6WiB1({-z2I(gIeFkzYJvR)g2z5TI zV|)gevHUq^J-vQB|3}$sDVXb+l?y6*wXCuVIJckY>?UeJxqsf6F6uSF%(KY<0VS?j z@t5#%2o;yH&j=I(GBKC&NeCi;-5g1dROPzWwFpw{I_hy~F&*8YaNz`Q;!u%?~EbCc>-`zAjv!!}k)t zSN!e6|AwFn|A%M%jL+V4ztko|ZgCuypUcor>3p5;ow2{gz84(#y_(BnTO21|Cm74Q z)ihT84XVI_V_%rY9^qSm!|^@O8^?@&6P~byL)s-iB3@tTc&D)qNa;ic$k)_<#*s)#^E!wqtq%L?f+DKwhZu{u z2|j*ZJ_pE@isK|snW|kezcTrrAjxu>Tf{+Oa14@$a4p>g7a$jZNm5d~E5c%`dsn2@ zTY<}t6z2Z7a#f2B-791^$*P?0MQV)tMKX*W6r{6+VIkY2u8=Mq$@be)C*tEYCXG*h zA%Dpp%&4;kf5A19E~%N&21cn&+=Bc}8HRF~
    7q`jw240_CrvO(CAewg^v2tR%@ zw@kq;(yNU9U170*Y7WbWyp&R|ctIVzPrF;?Rl0R6bYBiw&AjmzOcI4Ssc2xp+anm@ zeGSSw{-u@i$b&2D%*K6rDxUqY?2ocXHVe@1;~Fs9tGnw7cwpXvg0vj8a*5RB{hpvm zVJc7#xm2$$X&s?;<5GDyx-$zECbH6j6E~;_uI))p(%N=^SBM<~sUzZ@*S- z`n4seXx&e%peW?R6f1DOa@O!~d6wsCd|s@sw0fs|)Go@tVQ2&yvm9LW8HN`Hs zuCRQ=&)}T@(Fc|~onRODlOsowAI520A6Ed)}0%esK zEm9WAJfoS!SVB*BVvNfg_%pVl`@8(vuu&9^U+43WUi+=ms{MvPn)TzJtZ|$PrF3G9 z_J=NcbgrVJC$um*A;dia643@t5N#2HOm@kNB4k~E7?u_`l98dYRt#IqIHM>Q25p43 z!JS+i^S+Lb^p*iQojtAwwm;6r48G+IlpTK0UCaAAeu{bN+tuJ1o*$oqw5JD^`I)C@ zZZ$o2!^s>CGo=8xG^|J&mMM*0ZKXsIIsVs4GXxZv9i;(x(lQ(!ymBGlGTaOIg`8M3 z!8ZnfI6vwHm@TVvE62>1)3!#bYI&;@V&p21ww-KL;eIEmC1N1gF>bbZ_YP0AI!fr4 zJg6+MH`c`g_Hu{myO`hy1;6sxp!Q85H{Qc zA*@lBYv&-uHeSt;swu%|{k8FHRQdl2B{&PcIDN!|WE`W5eOKxk;5x@z08Ua`@sE-O-EE(DL!i!H@L0df$L*o7V+gWZi9AA=gT zSfKX${2i0$?|D5OHCe4|e7e7)@#^#uS`S*cVg70LTuWw+`$T$v2r%U-QgBUM3m5b{ zk~DoxjM4!4Gh&ouFk+Api74Uuaf)NA1Xs3Dtxw&1RM;W~3tZiyM{CrQjtXLbrZpWX zi`g$cSh|<15wtI2@f+JvRC8!3K2tO!Jah4w(Y9^uESNb2xX)PT80>C*pkq*NP2sGC z@xXz?BM|A?+q5cyT+yiK`#K=oWT;Pj+n~?fF`aVth??x)**S)|�yW?rv1N0anaT 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 # end the current page if needed @@ -184,6 +186,8 @@ class PDFDocument extends stream.Readable for name, font of @_fontFamilies font.finalize() + @endOutline() + @_root.end() @_root.data.Pages.end() diff --git a/lib/mixins/outline.coffee b/lib/mixins/outline.coffee new file mode 100644 index 000000000..c3c83f55f --- /dev/null +++ b/lib/mixins/outline.coffee @@ -0,0 +1,11 @@ +PDFOutline = require '../outline' + +module.exports = + initOutline: () -> + @outline = new PDFOutline(this, null, null, null) + + endOutline: () -> + @outline.endOutline() + if @outline.children.length > 0 + @_root.data.Outlines = @outline.dictionary + @_root.data.PageMode = 'UseOutlines' diff --git a/lib/outline.coffee b/lib/outline.coffee new file mode 100644 index 000000000..b16264521 --- /dev/null +++ b/lib/outline.coffee @@ -0,0 +1,47 @@ +PDFObject = require './object' +PDFPage = require './page' + +class PDFOutline + constructor: (@document, parent, title, dest, @options = { expanded: false }) -> + + @outlineData = {} + + if dest != null + @outlineData['Dest'] = [dest.dictionary, 'Fit'] + + if parent != null + @outlineData['Parent'] = parent + + if title != null + @outlineData['Title'] = new String(title) + + @dictionary = @document.ref @outlineData + @children = [] + + addItem: (title, options = { expanded: false }) -> + result = new PDFOutline(@document, @dictionary, title, @document.page, options) + @children.push(result) + + return result + + endOutline: () -> + if @children.length > 0 + if @options.expanded + @outlineData.Count = @children.length + + [first, ..., last] = @children + @outlineData.First = first.dictionary + @outlineData.Last = last.dictionary + + for i in [0...@children.length] + child = @children[i] + if i > 0 + child.outlineData.Prev = @children[i-1].dictionary + if i < @children.length - 1 + child.outlineData.Next = @children[i+1].dictionary + child.endOutline() + + @dictionary.end() + + +module.exports = PDFOutline \ No newline at end of file From 56c7debb8918165efc668c622e2d977ea5d88cc2 Mon Sep 17 00:00:00 2001 From: Oleksandr Martyshchenko Date: Fri, 29 Jun 2018 18:54:15 +0300 Subject: [PATCH 02/41] Fix linewrapper ellipsis inifinite loop (#779) --- lib/line_wrapper.coffee | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/line_wrapper.coffee b/lib/line_wrapper.coffee index 25db6581a..7a5ccf335 100644 --- a/lib/line_wrapper.coffee +++ b/lib/line_wrapper.coffee @@ -146,12 +146,16 @@ class LineWrapper extends EventEmitter textWidth = @wordWidth buffer + @ellipsis # remove characters from the buffer until the ellipsis fits - while textWidth > @lineWidth + # to avoid inifinite loop need to stop while-loop if buffer is empty string + while buffer and textWidth > @lineWidth buffer = buffer.slice(0, -1).replace(/\s+$/, '') textWidth = @wordWidth buffer + @ellipsis - - buffer = buffer + @ellipsis - + # need to add ellipsis only if there is enough space for it + if textWidth <= @lineWidth + buffer = buffer + @ellipsis + + textWidth = @wordWidth buffer + if bk.required if w > @spaceLeft emitLine() From 7839a41f15278ef64681f55e633ce7e78d35e5e3 Mon Sep 17 00:00:00 2001 From: MichaelK Date: Fri, 29 Jun 2018 11:05:43 -0500 Subject: [PATCH 03/41] Long running loop fix (#796) Fix long-running loop This can be caused by having text with a huge number of spaces. --- lib/line_wrapper.coffee | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/line_wrapper.coffee b/lib/line_wrapper.coffee index 7a5ccf335..08567d55f 100644 --- a/lib/line_wrapper.coffee +++ b/lib/line_wrapper.coffee @@ -63,19 +63,34 @@ class LineWrapper extends EventEmitter while bk = breaker.nextBreak() word = text.slice(last?.position or 0, bk.position) w = wordWidths[word] ?= @wordWidth word - + # if the word is longer than the whole line, chop it up # TODO: break by grapheme clusters, not JS string characters if w > @lineWidth + @continuedX # make some fake break objects lbk = last fbk = {} - + while word.length # fit as much of the word as possible into the space we have - l = word.length - while w > @spaceLeft and l > 0 - w = @wordWidth word.slice(0, --l) + if w > @spaceLeft + # start our check at the end of our available space - this method is faster than a loop of each character and it resolves + # an issue with long loops when processing massive words, such as a huge number of spaces + l = Math.ceil(@spaceLeft / (w / word.length)) + w = @wordWidth word.slice(0, l) + mightGrow = w <= @spaceLeft and l < word.length + else + l = word.length + mustShrink = w > @spaceLeft and l > 0 + # shrink or grow word as necessary after our near-guess above + while mustShrink or mightGrow + if mustShrink + w = @wordWidth word.slice(0, --l) + mustShrink = w > @spaceLeft and l > 0 + else + w = @wordWidth word.slice(0, ++l) + mustShrink = w > @spaceLeft and l > 0 + mightGrow = w <= @spaceLeft and l < word.length # send a required break unless this is the last piece fbk.required = l < word.length From 93061f3210fed1ab90e451f9e39f194478c2f64a Mon Sep 17 00:00:00 2001 From: MichaelK Date: Fri, 29 Jun 2018 11:23:07 -0500 Subject: [PATCH 04/41] Fix bug with \n translation (#797) This causes \n characters to be displayed more consistently. --- lib/line_wrapper.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/line_wrapper.coffee b/lib/line_wrapper.coffee index 08567d55f..573773510 100644 --- a/lib/line_wrapper.coffee +++ b/lib/line_wrapper.coffee @@ -92,8 +92,8 @@ class LineWrapper extends EventEmitter mustShrink = w > @spaceLeft and l > 0 mightGrow = w <= @spaceLeft and l < word.length - # send a required break unless this is the last piece - fbk.required = l < word.length + # send a required break unless this is the last piece and a linebreak is not specified + fbk.required = bk.required or l < word.length shouldContinue = fn word.slice(0, l), w, fbk, lbk lbk = required: false From 2567227a92a10c0d88407dde232c4a3c3bc23d1a Mon Sep 17 00:00:00 2001 From: Aaron Fischer Date: Fri, 29 Jun 2018 09:25:19 -0700 Subject: [PATCH 05/41] Allows the text continue feature to work when the starting string is empty --- lib/line_wrapper.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/line_wrapper.coffee b/lib/line_wrapper.coffee index 573773510..3c2084425 100644 --- a/lib/line_wrapper.coffee +++ b/lib/line_wrapper.coffee @@ -219,7 +219,7 @@ class LineWrapper extends EventEmitter # the y position if options.continued is yes @continuedX = 0 if lc > 1 - @continuedX += options.textWidth + @continuedX += options.textWidth or 0 @document.y = y else @document.x = @startX From 6e72e0fe8ce6551d0b81b3750ad88c4d4778eb4e Mon Sep 17 00:00:00 2001 From: Diego Muracciole Date: Thu, 22 Nov 2018 23:57:34 -0300 Subject: [PATCH 06/41] Fix build config --- package.json | 6 +- rollup.config.js | 65 ++++---- yarn.lock | 402 ++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 408 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index a2c4883d2..fc21ef698 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "url": "http://badassjs.com/" }, "scripts": { - "build": "rollup -c", + "build": "rimraf ./dist && rollup -c", "prepublish": "npm run build", "prebuild": "node ./src/font/data/compressData.js", "postbuild": "rimraf ./src/font/data/*.b64.afm" @@ -28,13 +28,15 @@ "lz-string": "^1.4.4" }, "devDependencies": { + "babel-core": "^6.26.3", "babel-plugin-external-helpers": "^6.22.0", + "babel-preset-env": "^1.7.0", "babel-preset-es2015": "^6.24.1", "blob-stream": "^0.1.2", "iconv-lite": "^0.4.13", "rimraf": "^2.6.2", "rollup": "^0.52.2", - "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-babel": "3", "rollup-plugin-bundle-size": "https://github.com/vimeo/rollup-plugin-bundle-size", "rollup-plugin-ignore": "^1.0.3", "rollup-plugin-json": "^2.1.0", diff --git a/rollup.config.js b/rollup.config.js index 6cd98d448..25b785d6b 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,12 +1,12 @@ -import babel from 'rollup-plugin-babel'; -import json from 'rollup-plugin-json'; -import nodeResolve from 'rollup-plugin-node-resolve'; -import bundleSize from 'rollup-plugin-bundle-size'; -import uglify from 'rollup-plugin-uglify'; -import string from 'rollup-plugin-string'; +import babel from 'rollup-plugin-babel' +import json from 'rollup-plugin-json' +import nodeResolve from 'rollup-plugin-node-resolve' +import bundleSize from 'rollup-plugin-bundle-size' +import uglify from 'rollup-plugin-uglify' +import string from 'rollup-plugin-string' import replace from 'rollup-plugin-replace' import ignore from 'rollup-plugin-ignore' -import pkg from './package.json'; +import pkg from './package.json' const cjs = { exports: 'named', @@ -28,43 +28,42 @@ const configBase = { string({ include: '**/*.afm' }), babel({ babelrc: false, - presets: [['es2015', { modules: false }]], + presets: [ + [ + 'env', + { + modules: false, + targets: { + ie: '11' + } + } + ] + ], plugins: ['external-helpers'], runtimeHelpers: true }), - bundleSize(), + bundleSize() ], external: Object.keys(pkg.dependencies) } const serverConfig = Object.assign({}, configBase, { - output: [ - getESM({ file: 'dist/pdfkit.es.js' }), - getCJS({ file: 'dist/pdfkit.cjs.js' }), - ], + output: [getESM({ file: 'dist/pdfkit.es.js' }), getCJS({ file: 'dist/pdfkit.cjs.js' })], plugins: configBase.plugins.concat( replace({ - BROWSER: JSON.stringify(false), + BROWSER: JSON.stringify(false) }) ), external: configBase.external.concat(['fs']) }) const serverProdConfig = Object.assign({}, serverConfig, { - output: [ - getESM({ file: 'dist/pdfkit.es.min.js' }), - getCJS({ file: 'dist/pdfkit.cjs.min.js' }), - ], - plugins: serverConfig.plugins.concat( - uglify() - ), + output: [getESM({ file: 'dist/pdfkit.es.min.js' }), getCJS({ file: 'dist/pdfkit.cjs.min.js' })], + plugins: serverConfig.plugins.concat(uglify()) }) const browserConfig = Object.assign({}, configBase, { - output: [ - getESM({ file: 'dist/pdfkit.browser.es.js' }), - getCJS({ file: 'dist/pdfkit.browser.cjs.js' }), - ], + output: [getESM({ file: 'dist/pdfkit.browser.es.js' }), getCJS({ file: 'dist/pdfkit.browser.cjs.js' })], plugins: configBase.plugins.concat( replace({ BROWSER: JSON.stringify(true) @@ -74,18 +73,8 @@ const browserConfig = Object.assign({}, configBase, { }) const browserProdConfig = Object.assign({}, browserConfig, { - output: [ - getESM({ file: 'dist/pdfkit.browser.es.min.js' }), - getCJS({ file: 'dist/pdfkit.browser.cjs.min.js' }), - ], - plugins: browserConfig.plugins.concat( - uglify() - ), + output: [getESM({ file: 'dist/pdfkit.browser.es.min.js' }), getCJS({ file: 'dist/pdfkit.browser.cjs.min.js' })], + plugins: browserConfig.plugins.concat(uglify()) }) -export default [ - serverConfig, - serverProdConfig, - browserConfig, - browserProdConfig -] +export default [serverConfig, serverProdConfig, browserConfig, browserProdConfig] diff --git a/yarn.lock b/yarn.lock index 7925ddefc..0b2aaab4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,7 @@ "@react-pdf/fontkit@^1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@react-pdf/fontkit/-/fontkit-1.11.0.tgz#2492ffca9454be2a52eb2aba01eacdf2a11ce9fd" + integrity sha1-JJL/ypRUvipS6yq6AerN8qEc6f0= dependencies: "@react-pdf/unicode-properties" "^2.2.0" brfs "^1.4.0" @@ -20,46 +21,56 @@ "@react-pdf/png-js@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@react-pdf/png-js/-/png-js-1.0.0.tgz#00fcb969dca4ce82a0a7673413ade039e47b361e" + integrity sha1-APy5adykzoKgp2c0E63gOeR7Nh4= "@react-pdf/unicode-properties@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@react-pdf/unicode-properties/-/unicode-properties-2.2.0.tgz#f109eaac244ceb108011d4038cee4cc787cb40f3" + integrity sha1-8QnqrCRM6xCAEdQDjO5Mx4fLQPM= dependencies: unicode-trie "^0.3.0" acorn@^5.0.0: version "5.5.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" + integrity sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ== amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= dependencies: arr-flatten "^1.0.1" arr-flatten@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= ast-transform@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/ast-transform/-/ast-transform-0.0.0.tgz#74944058887d8283e189d954600947bc98fe0062" + integrity sha1-dJRAWIh9goPhidlUYAlHvJj+AGI= dependencies: escodegen "~1.2.0" esprima "~1.0.4" @@ -68,18 +79,21 @@ ast-transform@0.0.0: ast-types@^0.7.0: version "0.7.8" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.7.8.tgz#902d2e0d60d071bdcd46dc115e1809ed11c138a9" + integrity sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk= babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= dependencies: chalk "^1.1.3" esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@6, babel-core@^6.26.0: +babel-core@^6.26.0, babel-core@^6.26.3: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== dependencies: babel-code-frame "^6.26.0" babel-generator "^6.26.0" @@ -104,6 +118,7 @@ babel-core@6, babel-core@^6.26.0: babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== dependencies: babel-messages "^6.23.0" babel-runtime "^6.26.0" @@ -114,9 +129,19 @@ babel-generator@^6.26.0: source-map "^0.5.7" trim-right "^1.0.1" +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -126,15 +151,26 @@ babel-helper-call-delegate@^6.24.1: babel-helper-define-map@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.26.0" babel-types "^6.26.0" lodash "^4.17.4" +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= dependencies: babel-helper-get-function-arity "^6.24.1" babel-runtime "^6.22.0" @@ -145,6 +181,7 @@ babel-helper-function-name@^6.24.1: babel-helper-get-function-arity@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -152,6 +189,7 @@ babel-helper-get-function-arity@^6.24.1: babel-helper-hoist-variables@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -159,6 +197,7 @@ babel-helper-hoist-variables@^6.24.1: babel-helper-optimise-call-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -166,14 +205,27 @@ babel-helper-optimise-call-expression@^6.24.1: babel-helper-regex@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= dependencies: babel-runtime "^6.26.0" babel-types "^6.26.0" lodash "^4.17.4" +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babel-helper-replace-supers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= dependencies: babel-helper-optimise-call-expression "^6.24.1" babel-messages "^6.23.0" @@ -185,6 +237,7 @@ babel-helper-replace-supers@^6.24.1: babel-helpers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -192,36 +245,66 @@ babel-helpers@^6.24.1: babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= dependencies: babel-runtime "^6.22.0" babel-plugin-check-es2015-constants@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= dependencies: babel-runtime "^6.22.0" babel-plugin-external-helpers@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" + integrity sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E= dependencies: babel-runtime "^6.22.0" +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.24.1: +babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= dependencies: babel-runtime "^6.26.0" babel-template "^6.26.0" @@ -229,9 +312,10 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1: babel-types "^6.26.0" lodash "^4.17.4" -babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.9.0: +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= dependencies: babel-helper-define-map "^6.24.1" babel-helper-function-name "^6.24.1" @@ -243,35 +327,40 @@ babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-cla babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-computed-properties@^6.24.1: +babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-destructuring@^6.22.0: +babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.24.1: +babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-for-of@^6.22.0: +babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.24.1: +babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -280,52 +369,59 @@ babel-plugin-transform-es2015-function-name@^6.24.1: babel-plugin-transform-es2015-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-modules-amd@^6.24.1: +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= dependencies: babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-commonjs@^6.24.1: +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: version "6.26.2" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== dependencies: babel-plugin-transform-strict-mode "^6.24.1" babel-runtime "^6.26.0" babel-template "^6.26.0" babel-types "^6.26.0" -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: +babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-umd@^6.24.1: +babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= dependencies: babel-plugin-transform-es2015-modules-amd "^6.24.1" babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-object-super@^6.24.1: +babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.24.1: +babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= dependencies: babel-helper-call-delegate "^6.24.1" babel-helper-get-function-arity "^6.24.1" @@ -334,9 +430,10 @@ babel-plugin-transform-es2015-parameters@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-shorthand-properties@^6.24.1: +babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -344,12 +441,14 @@ babel-plugin-transform-es2015-shorthand-properties@^6.24.1: babel-plugin-transform-es2015-spread@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.24.1: +babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -358,39 +457,90 @@ babel-plugin-transform-es2015-sticky-regex@^6.24.1: babel-plugin-transform-es2015-template-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-typeof-symbol@^6.22.0: +babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.24.1: +babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-regenerator@^6.24.1: +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= dependencies: regenerator-transform "^0.10.0" babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + babel-preset-es2015@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk= dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-transform-es2015-arrow-functions "^6.22.0" @@ -420,6 +570,7 @@ babel-preset-es2015@^6.24.1: babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= dependencies: babel-core "^6.26.0" babel-runtime "^6.26.0" @@ -432,6 +583,7 @@ babel-register@^6.26.0: babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" @@ -439,6 +591,7 @@ babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runti babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= dependencies: babel-runtime "^6.26.0" babel-traverse "^6.26.0" @@ -449,6 +602,7 @@ babel-template@^6.24.1, babel-template@^6.26.0: babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= dependencies: babel-code-frame "^6.26.0" babel-messages "^6.23.0" @@ -463,6 +617,7 @@ babel-traverse@^6.24.1, babel-traverse@^6.26.0: babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" @@ -472,28 +627,34 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-js@^1.1.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== blob-stream@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/blob-stream/-/blob-stream-0.1.3.tgz#98d668af6996e0f32ef666d06e215ccc7d77686c" + integrity sha1-mNZor2mW4PMu9mbQbiFczH13aGw= dependencies: blob "0.0.4" blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE= brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -501,6 +662,7 @@ brace-expansion@^1.1.7: braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= dependencies: expand-range "^1.8.1" preserve "^0.2.0" @@ -509,6 +671,7 @@ braces@^1.8.2: brfs@^1.4.0: version "1.6.1" resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" + integrity sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ== dependencies: quote-stream "^1.0.1" resolve "^1.1.5" @@ -518,44 +681,65 @@ brfs@^1.4.0: brotli@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/brotli/-/brotli-1.3.2.tgz#525a9cad4fcba96475d7d388f6aecb13eed52f46" + integrity sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y= dependencies: base64-js "^1.1.2" browser-resolve@^1.11.0: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" browser-resolve@^1.8.1: version "1.11.2" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + integrity sha1-j/CbCixCFxihBRwmCzLkj0QpOM4= dependencies: resolve "1.1.7" browserify-optional@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/browserify-optional/-/browserify-optional-1.0.1.tgz#1e13722cfde0d85f121676c2a72ced533a018869" + integrity sha1-HhNyLP3g2F8SFnbCpyztUzoBiGk= dependencies: ast-transform "0.0.0" ast-types "^0.7.0" browser-resolve "^1.8.1" +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + buffer-equal@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= buffer-from@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + integrity sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA== builtin-modules@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + +caniuse-lite@^1.0.30000844: + version "1.0.30000904" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000904.tgz#4445d00da859a0e0ae6dbb2876c545f3324f6c74" + integrity sha512-M4sXvogCoY5Fp6fuXIaQG/MIexlEFQ3Lgwban+KlqiQUbUIkSmjAB8ZJIP79aj2cdqz2F1Lb+Z+5GwHvCrbLtg== chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -566,18 +750,22 @@ chalk@^1.0.0, chalk@^1.1.3: clone@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@~1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" @@ -587,62 +775,80 @@ concat-stream@~1.6.0: convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + integrity sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU= core-js@^2.4.0: version "2.5.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b" + integrity sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs= core-js@^2.5.0: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" deep-equal@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= dependencies: repeating "^2.0.0" dfa@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/dfa/-/dfa-1.1.0.tgz#d30218bd10d030fa421df3ebbc82285463a31781" + integrity sha1-0wIYvRDQMPpCHfPrvIIoVGOjF4E= dependencies: babel-runtime "^6.11.6" duplexer2@~0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= dependencies: readable-stream "^2.0.2" duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +electron-to-chromium@^1.3.47: + version "1.3.83" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.83.tgz#74584eb0972bb6777811c5d68d988c722f5e6666" + integrity sha512-DqJoDarxq50dcHsOOlMLNoy+qQitlMNbYb6wwbE0oUw2veHdRkpNrhmngiUYKMErdJ8SJ48rpJsZTQgy5SoEAA== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.8.1, escodegen@~1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + integrity sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -654,6 +860,7 @@ escodegen@^1.8.1, escodegen@~1.9.0: escodegen@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.2.0.tgz#09de7967791cc958b7f89a2ddb6d23451af327e1" + integrity sha1-Cd55Z3kcyVi3+Jot220jRRrzJ+E= dependencies: esprima "~1.0.4" estraverse "~1.5.0" @@ -664,56 +871,68 @@ escodegen@~1.2.0: esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= esprima@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" + integrity sha1-n1V+CPw7TSbs6d00+Pv0drYlha0= estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= estraverse@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" + integrity sha1-hno+jlip+EYYr7bC3bzZFrfLr3E= estree-walker@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" + integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4= estree-walker@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" + integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= esutils@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" + integrity sha1-gVHTWOIMisx/t0XnRywAJf5JZXA= expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= dependencies: is-posix-bracket "^0.1.0" expand-range@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= dependencies: fill-range "^2.1.0" extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= dependencies: is-extglob "^1.0.0" falafel@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c" + integrity sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw= dependencies: acorn "^5.0.0" foreach "^2.0.5" @@ -723,10 +942,12 @@ falafel@^2.1.0: fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= figures@^1.0.1: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= dependencies: escape-string-regexp "^1.0.5" object-assign "^4.1.0" @@ -734,10 +955,12 @@ figures@^1.0.1: filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= fill-range@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== dependencies: is-number "^2.1.0" isobject "^2.0.0" @@ -748,28 +971,34 @@ fill-range@^2.1.0: for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= for-own@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= dependencies: for-in "^1.0.1" foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= function-bind@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= dependencies: glob-parent "^2.0.0" is-glob "^2.0.0" @@ -777,12 +1006,14 @@ glob-base@^0.3.0: glob-parent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= dependencies: is-glob "^2.0.0" glob@^7.0.5: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -794,28 +1025,33 @@ glob@^7.0.5: globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== gzip-size@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA= dependencies: duplexer "^0.1.1" has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" has@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + integrity sha1-hGFzP1OLCDfJNh45qauelwTcLyg= dependencies: function-bind "^1.0.2" home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.1" @@ -823,12 +1059,14 @@ home-or-tmp@^2.0.0: iconv-lite@^0.4.13: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== dependencies: safer-buffer ">= 2.1.2 < 3" inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" @@ -836,112 +1074,136 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= is-equal-shallow@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= dependencies: is-primitive "^2.0.0" is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= dependencies: number-is-nan "^1.0.0" is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= dependencies: is-extglob "^1.0.0" is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= dependencies: kind-of "^3.0.2" is-number@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^6.0.0: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -949,30 +1211,36 @@ levn@~0.3.0: lodash@^4.17.4: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" lz-string@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= magic-string@^0.22.4: version "0.22.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== dependencies: vlq "^0.2.2" math-random@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= maxmin@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" + integrity sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY= dependencies: chalk "^1.0.0" figures "^1.0.1" @@ -982,12 +1250,14 @@ maxmin@^2.1.0: merge-source-map@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" + integrity sha1-pd5GU42uhNQRTMXqArR3KmNGcB8= dependencies: source-map "^0.5.6" micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= dependencies: arr-diff "^2.0.0" array-unique "^0.2.1" @@ -1006,52 +1276,63 @@ micromatch@^2.3.11: minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-inspect@~1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" + integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw== object-keys@^1.0.6: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + integrity sha1-xUYBd4rVYPEULODgG8yotW0TQm0= object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= dependencies: for-own "^0.1.4" is-extendable "^0.1.1" @@ -1059,12 +1340,14 @@ object.omit@^2.0.0: once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" @@ -1076,18 +1359,22 @@ optionator@^0.8.1: os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= pako@^0.2.5: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= dependencies: glob-base "^0.3.0" is-dotfile "^1.0.0" @@ -1097,36 +1384,44 @@ parse-glob@^3.0.4: path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + integrity sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= pretty-bytes@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" + integrity sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8= dependencies: number-is-nan "^1.0.0" private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== quote-stream@^1.0.1, quote-stream@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" + integrity sha1-hJY/jJwmuULhU/7rU6rnRlK34LI= dependencies: buffer-equal "0.0.1" minimist "^1.1.3" @@ -1135,6 +1430,7 @@ quote-stream@^1.0.1, quote-stream@~1.0.2: randomatic@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" + integrity sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA== dependencies: is-number "^4.0.0" kind-of "^6.0.0" @@ -1143,6 +1439,7 @@ randomatic@^3.0.0: readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@~2.3.3: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -1155,14 +1452,17 @@ readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== dependencies: babel-runtime "^6.18.0" babel-types "^6.19.0" @@ -1171,12 +1471,14 @@ regenerator-transform@^0.10.0: regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== dependencies: is-equal-shallow "^0.1.3" regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" @@ -1185,66 +1487,75 @@ regexpu-core@^2.0.0: regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= dependencies: jsesc "~0.5.0" remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= dependencies: is-finite "^1.0.0" resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resolve@^1.1.5: version "1.7.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== dependencies: path-parse "^1.0.5" resolve@^1.1.6: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== dependencies: path-parse "^1.0.5" restructure@^0.5.3: version "0.5.4" resolved "https://registry.yarnpkg.com/restructure/-/restructure-0.5.4.tgz#f54e7dd563590fb34fd6bf55876109aeccb28de8" + integrity sha1-9U591WNZD7NP1r9Vh2EJrsyyjeg= dependencies: browserify-optional "^1.0.0" rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== dependencies: glob "^7.0.5" -rollup-plugin-babel@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-2.7.1.tgz#16528197b0f938a1536f44683c7a93d573182f57" +rollup-plugin-babel@3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-3.0.7.tgz#5b13611f1ab8922497e9d15197ae5d8a23fe3b1e" + integrity sha512-bVe2y0z/V5Ax1qU8NX/0idmzIwJPdUGu8Xx3vXH73h0yGjxfv2gkFI82MBVg49SlsFlLTBadBHb67zy4TWM3hA== dependencies: - babel-core "6" - babel-plugin-transform-es2015-classes "^6.9.0" - object-assign "^4.1.0" rollup-pluginutils "^1.5.0" "rollup-plugin-bundle-size@https://github.com/vimeo/rollup-plugin-bundle-size": @@ -1257,16 +1568,19 @@ rollup-plugin-babel@^2.7.1: rollup-plugin-ignore@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/rollup-plugin-ignore/-/rollup-plugin-ignore-1.0.3.tgz#9a3caac6709e481471ce4498a48164bbc2359e3d" + integrity sha1-mjyqxnCeSBRxzkSYpIFku8I1nj0= rollup-plugin-json@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-2.3.1.tgz#9759d27f33dcd2c896de18b6235df162b88edd77" + integrity sha512-alQQQVPo2z9pl6LSK8QqyDlWwCH5KeE8YxgQv7fa/SeTxz+gQe36jBjcha7hQW68MrVh9Ms71EQaMZDAG3w2yw== dependencies: rollup-pluginutils "^2.0.1" rollup-plugin-node-resolve@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-2.1.1.tgz#cbb783b0d15b02794d58915350b2f0d902b8ddc8" + integrity sha1-y7eDsNFbAnlNWJFTULLw2QK43cg= dependencies: browser-resolve "^1.11.0" builtin-modules "^1.1.0" @@ -1275,6 +1589,7 @@ rollup-plugin-node-resolve@^2.0.0: rollup-plugin-replace@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-1.2.1.tgz#6307ee15f223aa1fd3207cd3c08052468f180daf" + integrity sha512-l9Pgb7bh5Wx18+qM9iOWZ/CKcwyKJETLAwCh6bjKwTOgTzNH3KmKDWI/X/ToNA7fA/68chhFyvISvreRxWFVtw== dependencies: magic-string "^0.22.4" minimatch "^3.0.2" @@ -1283,18 +1598,21 @@ rollup-plugin-replace@^1.1.1: rollup-plugin-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/rollup-plugin-string/-/rollup-plugin-string-2.0.2.tgz#f5323a22cfd738b450cbea62ab6593705eac744b" + integrity sha1-9TI6Is/XOLRQy+piq2WTcF6sdEs= dependencies: rollup-pluginutils "^1.5.0" rollup-plugin-uglify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-3.0.0.tgz#a34eca24617709c6bf1778e9653baafa06099b86" + integrity sha512-dehLu9eRRoV4l09aC+ySntRw1OAfoyKdbk8Nelblj03tHoynkSybqyEpgavemi1LBOH6S1vzI58/mpxkZIe1iQ== dependencies: uglify-es "^3.3.7" rollup-pluginutils@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" + integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg= dependencies: estree-walker "^0.2.1" minimatch "^3.0.2" @@ -1302,6 +1620,7 @@ rollup-pluginutils@^1.5.0: rollup-pluginutils@^2.0.1: version "2.3.0" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.0.tgz#478ace04bd7f6da2e724356ca798214884738fc4" + integrity sha512-xB6hsRsjdJdIYWEyYUJy/3ki5g69wrf0luHPGNK3ZSocV6HLNfio59l3dZ3TL4xUwEKgROhFi9jOCt6c5gfUWw== dependencies: estree-walker "^0.5.2" micromatch "^2.3.11" @@ -1309,52 +1628,68 @@ rollup-pluginutils@^2.0.1: rollup@^0.52.2: version "0.52.3" resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.52.3.tgz#020d99fffe9619351e47b3894fd397c26f5e1bf6" + integrity sha512-cw+vb9NqaTXlwJyb8G+Ve+uhhlVTcl1NKBkfANdeQqVcpZFilQgeNnAnNiu7MwfeXrqiKEGz+3R03a3zeFkmEQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== shallow-copy@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" + integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== dependencies: source-map "^0.5.6" source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@~0.1.30: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= dependencies: amdefine ">=0.0.4" source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== static-eval@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.0.tgz#0e821f8926847def7b4b50cda5d55c04a9b13864" + integrity sha512-6flshd3F1Gwm+Ksxq463LtFd1liC77N/PX1FVVc3OzL3hAmo2fwHFbuArkcfi7s9rTNsLEhcRmXGFZhlgy40uw== dependencies: escodegen "^1.8.1" static-module@^2.2.0: version "2.2.4" resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.4.tgz#25a3ffbe6e1fdaf7e64e5bc21edcd77fc7708dac" + integrity sha512-qlzhn8tYcfLsXK2RTWtkx1v/cqiPtS9eFy+UmQ9UnpEDYcwtgbceOybnKp5JncsOnLI/pyGeyzI9Bej9tv0xiA== dependencies: concat-stream "~1.6.0" convert-source-map "^1.5.1" @@ -1374,22 +1709,26 @@ static-module@^2.2.0: string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= through2@^2.0.0, through2@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= dependencies: readable-stream "^2.1.5" xtend "~4.0.1" @@ -1397,32 +1736,39 @@ through2@^2.0.0, through2@~2.0.3: through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= tiny-inflate@^1.0.0, tiny-inflate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7" + integrity sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c= to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= uglify-es@^3.3.7: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== dependencies: commander "~2.13.0" source-map "~0.6.1" @@ -1430,6 +1776,7 @@ uglify-es@^3.3.7: unicode-trie@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" + integrity sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU= dependencies: pako "^0.2.5" tiny-inflate "^1.0.0" @@ -1437,19 +1784,24 @@ unicode-trie@^0.3.0: util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= vlq@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= From 83f5f7243172a017adcf6a7faa5547c55982c57b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Thu, 29 Nov 2018 14:14:45 -0200 Subject: [PATCH 07/41] Convert to EcmaScript (ES6+) (#859) --- .eslintrc | 3 + .gitignore | 5 +- .npmignore | 9 +- Makefile | 30 - demo/out.pdf | Bin 653654 -> 655477 bytes demo/test.coffee | 92 - demo/test.js | 80 + docs/README.md | 2 +- docs/generate.coffee | 261 - docs/generate.js | 331 + docs/generate_website.coffee | 108 - docs/generate_website.js | 142 + lib/abstract_reference.js | 11 + lib/data.coffee | 140 - lib/data.js | 177 + lib/document.coffee | 227 - lib/document.js | 284 + lib/font.coffee | 53 - lib/font.js | 35 + lib/font/afm.coffee | 197 - lib/font/afm.js | 227 + lib/font/embedded.coffee | 202 - lib/font/embedded.js | 236 + lib/font/standard.coffee | 65 - lib/font/standard.js | 82 + lib/font_factory.js | 34 + lib/gradient.coffee | 195 - lib/gradient.js | 249 + lib/image.coffee | 34 - lib/image.js | 40 + lib/image/jpeg.coffee | 59 - lib/image/jpeg.js | 70 + lib/image/png.coffee | 134 - lib/image/png.js | 160 + lib/line_wrapper.coffee | 250 - lib/line_wrapper.js | 289 + lib/mixins/annotations.coffee | 107 - lib/mixins/annotations.js | 136 + lib/mixins/color.coffee | 262 - lib/mixins/color.js | 288 + lib/mixins/fonts.coffee | 68 - lib/mixins/fonts.js | 84 + lib/mixins/images.coffee | 99 - lib/mixins/images.js | 120 + lib/mixins/outline.coffee | 11 - lib/mixins/outline.js | 15 + lib/mixins/text.coffee | 370 - lib/mixins/text.js | 457 + lib/mixins/vector.coffee | 260 - lib/mixins/vector.js | 319 + lib/object.coffee | 100 - lib/object.js | 113 + lib/outline.coffee | 47 - lib/outline.js | 61 + lib/page.coffee | 124 - lib/page.js | 142 + lib/path.coffee | 326 - lib/path.js | 375 + lib/reference.coffee | 73 - lib/reference.js | 74 + package.json | 38 +- rollup.config.js | 104 + tests/__snapshots__/fonts.spec.js.snap | Bin 0 -> 108644 bytes tests/__snapshots__/text.spec.js.snap | Bin 0 -> 5468 bytes tests/__snapshots__/vector.spec.js.snap | Bin 0 -> 62820 bytes tests/fonts.spec.js | 54 + tests/fonts/Roboto-Italic.ttf | Bin 0 -> 161484 bytes tests/fonts/Roboto-Medium.ttf | Bin 0 -> 162588 bytes tests/fonts/Roboto-MediumItalic.ttf | Bin 0 -> 165636 bytes tests/fonts/Roboto-Regular.ttf | Bin 0 -> 162876 bytes tests/helpers.js | 69 + tests/images/bee.jpg | Bin 0 -> 31870 bytes tests/images/bee.js | 8 + tests/images/bee.png | Bin 0 -> 47832 bytes tests/images/sampleImage.jpg | Bin 0 -> 63966 bytes .../__snapshots__/absolute.spec.js.snap | Bin 0 -> 74056 bytes .../__snapshots__/background.spec.js.snap | Bin 0 -> 71960 bytes .../pdfmake/__snapshots__/basics.spec.js.snap | Bin 0 -> 1720 bytes .../__snapshots__/columns_simple.spec.js.snap | Bin 0 -> 52344 bytes .../pdfmake/__snapshots__/images.spec.js.snap | Bin 0 -> 174028 bytes .../pdfmake/__snapshots__/lists.spec.js.snap | Bin 0 -> 43424 bytes .../page_references.spec.js.snap | Bin 0 -> 15282 bytes .../pdfmake/__snapshots__/qrcode.spec.js.snap | Bin 0 -> 35987 bytes .../pdfmake/__snapshots__/tables.spec.js.snap | Bin 0 -> 56882 bytes .../text_decorations.spec.js.snap | Bin 0 -> 13686 bytes tests/pdfmake/__snapshots__/toc.spec.js.snap | Bin 0 -> 13979 bytes .../__snapshots__/watermark.spec.js.snap | Bin 0 -> 14283 bytes tests/pdfmake/absolute.spec.js | 733 + tests/pdfmake/background.spec.js | 1119 + tests/pdfmake/basics.spec.js | 170 + tests/pdfmake/columns_simple.spec.js | 10807 +++++ tests/pdfmake/images.spec.js | 619 + tests/pdfmake/lists.spec.js | 10257 +++++ tests/pdfmake/page_references.spec.js | 4164 ++ tests/pdfmake/qrcode.spec.js | 37336 ++++++++++++++++ tests/pdfmake/tables.spec.js | 13817 ++++++ tests/pdfmake/text_decorations.spec.js | 548 + tests/pdfmake/toc.spec.js | 3679 ++ tests/pdfmake/watermark.spec.js | 868 + tests/text.spec.js | 35 + tests/unit/color.spec.js | 20 + tests/vector.spec.js | 149 + 102 files changed, 89231 insertions(+), 3907 deletions(-) create mode 100644 .eslintrc delete mode 100644 Makefile delete mode 100644 demo/test.coffee create mode 100644 demo/test.js delete mode 100644 docs/generate.coffee create mode 100644 docs/generate.js delete mode 100644 docs/generate_website.coffee create mode 100644 docs/generate_website.js create mode 100644 lib/abstract_reference.js delete mode 100644 lib/data.coffee create mode 100644 lib/data.js delete mode 100644 lib/document.coffee create mode 100644 lib/document.js delete mode 100644 lib/font.coffee create mode 100644 lib/font.js delete mode 100644 lib/font/afm.coffee create mode 100644 lib/font/afm.js delete mode 100644 lib/font/embedded.coffee create mode 100644 lib/font/embedded.js delete mode 100644 lib/font/standard.coffee create mode 100644 lib/font/standard.js create mode 100644 lib/font_factory.js delete mode 100644 lib/gradient.coffee create mode 100644 lib/gradient.js delete mode 100644 lib/image.coffee create mode 100644 lib/image.js delete mode 100644 lib/image/jpeg.coffee create mode 100644 lib/image/jpeg.js delete mode 100644 lib/image/png.coffee create mode 100644 lib/image/png.js delete mode 100644 lib/line_wrapper.coffee create mode 100644 lib/line_wrapper.js delete mode 100644 lib/mixins/annotations.coffee create mode 100644 lib/mixins/annotations.js delete mode 100644 lib/mixins/color.coffee create mode 100644 lib/mixins/color.js delete mode 100644 lib/mixins/fonts.coffee create mode 100644 lib/mixins/fonts.js delete mode 100644 lib/mixins/images.coffee create mode 100644 lib/mixins/images.js delete mode 100644 lib/mixins/outline.coffee create mode 100644 lib/mixins/outline.js delete mode 100644 lib/mixins/text.coffee create mode 100644 lib/mixins/text.js delete mode 100644 lib/mixins/vector.coffee create mode 100644 lib/mixins/vector.js delete mode 100644 lib/object.coffee create mode 100644 lib/object.js delete mode 100644 lib/outline.coffee create mode 100644 lib/outline.js delete mode 100644 lib/page.coffee create mode 100644 lib/page.js delete mode 100644 lib/path.coffee create mode 100644 lib/path.js delete mode 100644 lib/reference.coffee create mode 100644 lib/reference.js create mode 100644 rollup.config.js create mode 100644 tests/__snapshots__/fonts.spec.js.snap create mode 100644 tests/__snapshots__/text.spec.js.snap create mode 100644 tests/__snapshots__/vector.spec.js.snap create mode 100644 tests/fonts.spec.js create mode 100644 tests/fonts/Roboto-Italic.ttf create mode 100644 tests/fonts/Roboto-Medium.ttf create mode 100644 tests/fonts/Roboto-MediumItalic.ttf create mode 100644 tests/fonts/Roboto-Regular.ttf create mode 100644 tests/helpers.js create mode 100644 tests/images/bee.jpg create mode 100644 tests/images/bee.js create mode 100644 tests/images/bee.png create mode 100644 tests/images/sampleImage.jpg create mode 100644 tests/pdfmake/__snapshots__/absolute.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/background.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/basics.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/columns_simple.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/images.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/lists.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/page_references.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/qrcode.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/tables.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/text_decorations.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/toc.spec.js.snap create mode 100644 tests/pdfmake/__snapshots__/watermark.spec.js.snap create mode 100644 tests/pdfmake/absolute.spec.js create mode 100644 tests/pdfmake/background.spec.js create mode 100644 tests/pdfmake/basics.spec.js create mode 100644 tests/pdfmake/columns_simple.spec.js create mode 100644 tests/pdfmake/images.spec.js create mode 100644 tests/pdfmake/lists.spec.js create mode 100644 tests/pdfmake/page_references.spec.js create mode 100644 tests/pdfmake/qrcode.spec.js create mode 100644 tests/pdfmake/tables.spec.js create mode 100644 tests/pdfmake/text_decorations.spec.js create mode 100644 tests/pdfmake/toc.spec.js create mode 100644 tests/pdfmake/watermark.spec.js create mode 100644 tests/text.spec.js create mode 100644 tests/unit/color.spec.js create mode 100644 tests/vector.spec.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 000000000..c19581799 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "eslint:recommended" +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4530372e8..45bf9ad7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ lib/font/tables/.DS_Store .DS_Store /node_modules/ -/tests/ node-zlib/ src/ playground/ @@ -9,4 +8,6 @@ build/ js/ demo/bundle.js *.html -!demo/browser.html \ No newline at end of file +!demo/browser.html +.vscode +coverage \ No newline at end of file diff --git a/.npmignore b/.npmignore index 49061d6c2..4eef745eb 100644 --- a/.npmignore +++ b/.npmignore @@ -5,4 +5,11 @@ src/ lib/ docs/ playground/ -index.js \ No newline at end of file +.vscode/ +coverage/ +tests/ +index.js +index.html +yarn.lock +rollup.config.js +.eslintrc \ No newline at end of file diff --git a/Makefile b/Makefile deleted file mode 100644 index 301506739..000000000 --- a/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -.PHONY: js - -js: - ./node_modules/.bin/coffee -o js -c lib/ - cp -r lib/font/data js/font/data - -browser: lib/**/*.coffee - mkdir -p build/ - ./node_modules/.bin/browserify \ - --standalone PDFDocument \ - --debug \ - --transform coffeeify \ - --extension .coffee \ - lib/document.coffee \ - | ./node_modules/.bin/exorcist build/pdfkit.js.map > build/pdfkit.js - -browser-demo: js demo/browser.js - ./node_modules/.bin/browserify demo/browser.js > demo/bundle.js - -docs: pdf-guide website browser-demo - -pdf-guide: - ./node_modules/.bin/coffee docs/generate.coffee - -website: - mkdir -p docs/img - ./node_modules/.bin/coffee docs/generate_website.coffee - -clean: - rm -rf js build demo/bundle.js diff --git a/demo/out.pdf b/demo/out.pdf index bf066c1bef5934a8f21e307626bf3c344b7b22bb..0a3e4a1554d00b2aefb0c4932c0c1880d3cad94c 100644 GIT binary patch delta 53026 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 delta 51183 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

    RAIad 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 - # special case for text nodes - if typeof tree is 'string' - @type = 'text' - @text = tree - return - - @type = tree.shift() - @attrs = {} - - if typeof tree[0] is 'object' and not Array.isArray tree[0] - @attrs = tree.shift() - - # parse sub nodes - @content = while tree.length - new Node tree.shift() - - switch @type - when 'header' - @type = 'h' + @attrs.level - - when 'code_block' - # use code mirror to syntax highlight the code block - code = @content[0].text - @content = [] - CodeMirror.runMode code, 'coffeescript', (text, style) => - color = colors[style] or colors.default - opts = - color: color - continued: text isnt '\n' - - @content.push new Node ['code', opts, text] - - @content[@content.length - 1]?.attrs.continued = false - codeBlocks.push code - - when 'img' - # images are used to generate inline example output - # compiles the coffeescript to JS so it can be run - # in the render method - @type = 'example' - code = codeBlocks[@attrs.alt] - @code = coffee.compile code if code - @height = +@attrs.title or 0 - - @style = styles[@type] or styles.para - - # sets the styles on the document for this node - setStyle: (doc) -> - if @style.font - doc.font @style.font - - if @style.fontSize - doc.fontSize @style.fontSize - - if @style.color or @attrs.color - doc.fillColor @style.color or @attrs.color - else - doc.fillColor 'black' - - options = {} - options.align = @style.align - options.link = @attrs.href or false # override continued link - options.continued = @attrs.continued if @attrs.continued? - return options - - # renders this node and its subnodes to the document - render: (doc, continued = false) -> - switch @type - when 'example' - @setStyle doc - - # translate all points in the example code to - # the current point in the document - doc.moveDown() - doc.save() - doc.translate(doc.x, doc.y) - x = doc.x - y = doc.y - doc.x = doc.y = 0 - - # run the example code with the document - vm.runInNewContext @code, - doc: doc - lorem: lorem - - # restore points and styles - y += doc.y - doc.restore() - doc.x = x - doc.y = y + @height - when 'hr' - doc.addPage() - else - # loop through subnodes and render them - for fragment, index in @content - if fragment.type is 'text' - # add a new page for each heading, unless it follows another heading - if @type in ['h1', 'h2'] and lastType? and lastType isnt 'h1' - doc.addPage() - - if @type == 'h1' - doc.h1Outline = doc.outline.addItem(fragment.text) - else if @type == 'h2' && doc.h1Outline != null - doc.h1Outline.addItem(fragment.text) - - # set styles and whether this fragment is continued (for rich text wrapping) - options = @setStyle doc - options.continued ?= continued or index < @content.length - 1 - - # remove newlines unless this is code - unless @type is 'code' - fragment.text = fragment.text.replace(/[\r\n]\s*/g, ' ') - - doc.text fragment.text, options - else - fragment.render doc, index < @content.length - 1 and @type isnt 'bulletlist' - - lastType = @type - - if @style.padding - doc.y += @style.padding - -# reads and renders a markdown/literate coffeescript file to the document -render = (doc, filename) -> - codeBlocks = [] - tree = md.parse fs.readFileSync(filename, 'utf8') - tree.shift() - - while tree.length - node = new Node tree.shift() - node.render(doc) - -# renders the title page of the guide -renderTitlePage = (doc) -> - title = 'PDFKit Guide' - author = 'By Devon Govett' - version = 'Version ' + require('../package.json').version - - doc.font 'fonts/AlegreyaSans-Light.ttf', 60 - doc.y = doc.page.height / 2 - doc.currentLineHeight() - doc.text title, align: 'center' - w = doc.widthOfString(title) - doc.h1Outline = doc.outline.addItem(title) - - doc.fontSize 20 - doc.y -= 10 - doc.text author, - align: 'center' - indent: w - doc.widthOfString(author) - - doc.font styles.para.font, 10 - doc.text version, - align: 'center' - indent: w - doc.widthOfString(version) - - doc.addPage() - -# render all sections of the guide and write the pdf file -do -> - doc = new PDFDocument - doc.pipe fs.createWriteStream('guide.pdf') - renderTitlePage doc - render doc, 'getting_started.coffee.md' - render doc, 'vector.coffee.md' - render doc, 'text.coffee.md' - render doc, 'images.coffee.md' - render doc, 'outline.coffee.md' - render doc, 'annotations.coffee.md' - doc.end() diff --git a/docs/generate.js b/docs/generate.js new file mode 100644 index 000000000..bd0c40afd --- /dev/null +++ b/docs/generate.js @@ -0,0 +1,331 @@ +/* + * decaffeinate suggestions: + * DS102: Remove unnecessary code created because of implicit returns + * DS103: Rewrite code to no longer use __guard__ + * DS205: Consider reworking code to avoid use of IIFEs + * DS207: Consider shorter variations of null checks + * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md + */ +const fs = require('fs'); +const vm = require('vm'); +const md = require('markdown').markdown; +const coffee = require('coffee-script'); +const CodeMirror = require('codemirror/addon/runmode/runmode.node'); +const PDFDocument = require('../'); + +process.chdir(__dirname); + +// setup code mirror coffeescript mode +const filename = require.resolve('codemirror/mode/coffeescript/coffeescript'); +const coffeeMode = fs.readFileSync(filename, 'utf8'); +vm.runInNewContext(coffeeMode, {CodeMirror}); + +// style definitions for markdown +const styles = { + h1: { + font: 'fonts/Alegreya-Bold.ttf', + fontSize: 25, + padding: 15 + }, + h2: { + font: 'fonts/Alegreya-Bold.ttf', + fontSize: 18, + padding: 10 + }, + h3: { + font: 'fonts/Alegreya-Bold.ttf', + fontSize: 18, + padding: 10 + }, + para: { + font: 'fonts/Merriweather-Regular.ttf', + fontSize: 10, + padding: 10 + }, + code: { + font: 'fonts/SourceCodePro-Regular.ttf', + fontSize: 9 + }, + code_block: { + padding: 10, + background: '#2c2c2c' + }, + inlinecode: { + font: 'fonts/SourceCodePro-Bold.ttf', + fontSize: 10 + }, + listitem: { + font: 'fonts/Merriweather-Regular.ttf', + fontSize: 10, + padding: 6 + }, + link: { + font: 'fonts/Merriweather-Regular.ttf', + fontSize: 10, + color: 'blue', + underline: true + }, + example: { + font: 'Helvetica', + fontSize: 9, + color: 'black', + padding: 10 + } +}; + +// syntax highlighting colors +// based on Github's theme +const colors = { + keyword: '#cb4b16', + atom: '#d33682', + number: '#009999', + def: '#2aa198', + variable: '#108888', + 'variable-2': '#b58900', + 'variable-3': '#6c71c4', + property: '#2aa198', + operator: '#6c71c4', + comment: '#999988', + string: '#dd1144', + 'string-2': '#009926', + meta: '#768E04', + qualifier: '#b58900', + builtin: '#d33682', + bracket: '#cb4b16', + tag: '#93a1a1', + attribute: '#2aa198', + header: '#586e75', + quote: '#93a1a1', + link: '#93a1a1', + special: '#6c71c4', + default: '#002b36' +}; + +// shared lorem ipsum text so we don't need to copy it into every example +const lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus nec hendrerit felis. Morbi aliquam facilisis risus eu lacinia. Sed eu leo in turpis fringilla hendrerit. Ut nec accumsan nisl. Suspendisse rhoncus nisl posuere tortor tempus et dapibus elit porta. Cras leo neque, elementum a rhoncus ut, vestibulum non nibh. Phasellus pretium justo turpis. Etiam vulputate, odio vitae tincidunt ultricies, eros odio dapibus nisi, ut tincidunt lacus arcu eu elit. Aenean velit erat, vehicula eget lacinia ut, dignissim non tellus. Aliquam nec lacus mi, sed vestibulum nunc. Suspendisse potenti. Curabitur vitae sem turpis. Vestibulum sed neque eget dolor dapibus porttitor at sit amet sem. Fusce a turpis lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;'; + +let codeBlocks = []; +let lastType = null; + +// This class represents a node in the markdown tree, and can render it to pdf +class Node { + constructor(tree) { + // special case for text nodes + if (typeof tree === 'string') { + this.type = 'text'; + this.text = tree; + return; + } + + this.type = tree.shift(); + this.attrs = {}; + + if ((typeof tree[0] === 'object') && !Array.isArray(tree[0])) { + this.attrs = tree.shift(); + } + + // parse sub nodes + this.content = (() => { + const result = []; + while (tree.length) { + result.push(new Node(tree.shift())); + } + return result; + })(); + + switch (this.type) { + case 'header': + this.type = `h${this.attrs.level}`; + break; + + case 'code_block': + // use code mirror to syntax highlight the code block + var code = this.content[0].text; + this.content = []; + CodeMirror.runMode(code, 'coffeescript', (text, style) => { + const color = colors[style] || colors.default; + const opts = { + color, + continued: text !== '\n' + }; + + return this.content.push(new Node(['code', opts, text])); + }); + + __guard__(this.content[this.content.length - 1], x => x.attrs.continued = false); + codeBlocks.push(code); + break; + + case 'img': + // images are used to generate inline example output + // compiles the coffeescript to JS so it can be run + // in the render method + this.type = 'example'; + code = codeBlocks[this.attrs.alt]; + if (code) { this.code = coffee.compile(code); } + this.height = +this.attrs.title || 0; + break; + } + + this.style = styles[this.type] || styles.para; + } + + // sets the styles on the document for this node + setStyle(doc) { + if (this.style.font) { + doc.font(this.style.font); + } + + if (this.style.fontSize) { + doc.fontSize(this.style.fontSize); + } + + if (this.style.color || this.attrs.color) { + doc.fillColor(this.style.color || this.attrs.color); + } else { + doc.fillColor('black'); + } + + const options = {}; + options.align = this.style.align; + options.link = this.attrs.href || false; // override continued link + if (this.attrs.continued != null) { options.continued = this.attrs.continued; } + return options; + } + + // renders this node and its subnodes to the document + render(doc, continued) { + let y; + if (continued == null) { continued = false; } + switch (this.type) { + case 'example': + this.setStyle(doc); + + // translate all points in the example code to + // the current point in the document + doc.moveDown(); + doc.save(); + doc.translate(doc.x, doc.y); + var { x } = doc; + ({ y } = doc); + doc.x = (doc.y = 0); + + // run the example code with the document + vm.runInNewContext(this.code, { + doc, + lorem + } + ); + + // restore points and styles + y += doc.y; + doc.restore(); + doc.x = x; + doc.y = y + this.height; + break; + case 'hr': + doc.addPage(); + break; + default: + // loop through subnodes and render them + for (let index = 0; index < this.content.length; index++) { + const fragment = this.content[index]; + if (fragment.type === 'text') { + // add a new page for each heading, unless it follows another heading + if (['h1', 'h2'].includes(this.type) && (lastType != null) && (lastType !== 'h1')) { + doc.addPage(); + } + + if (this.type === 'h1') { + doc.h1Outline = doc.outline.addItem(fragment.text); + } else if ((this.type === 'h2') && (doc.h1Outline !== null)) { + doc.h1Outline.addItem(fragment.text); + } + + // set styles and whether this fragment is continued (for rich text wrapping) + const options = this.setStyle(doc); + if (options.continued == null) { options.continued = continued || (index < (this.content.length - 1)); } + + // remove newlines unless this is code + if (this.type !== 'code') { + fragment.text = fragment.text.replace(/[\r\n]\s*/g, ' '); + } + + doc.text(fragment.text, options); + } else { + fragment.render(doc, (index < (this.content.length - 1)) && (this.type !== 'bulletlist')); + } + + lastType = this.type; + } + } + + if (this.style.padding) { + return doc.y += this.style.padding; + } + } +} + +// reads and renders a markdown/literate coffeescript file to the document +const render = function(doc, filename) { + codeBlocks = []; + const tree = md.parse(fs.readFileSync(filename, 'utf8')); + tree.shift(); + + return (() => { + const result = []; + while (tree.length) { + const node = new Node(tree.shift()); + result.push(node.render(doc)); + } + return result; + })(); +}; + +// renders the title page of the guide +const renderTitlePage = function(doc) { + const title = 'PDFKit Guide'; + const author = 'By Devon Govett'; + const version = `Version ${require('../package.json').version}`; + + doc.font('fonts/AlegreyaSans-Light.ttf', 60); + doc.y = (doc.page.height / 2) - doc.currentLineHeight(); + doc.text(title, {align: 'center'}); + const w = doc.widthOfString(title); + doc.h1Outline = doc.outline.addItem(title); + + doc.fontSize(20); + doc.y -= 10; + doc.text(author, { + align: 'center', + indent: w - doc.widthOfString(author) + } + ); + + doc.font(styles.para.font, 10); + doc.text(version, { + align: 'center', + indent: w - doc.widthOfString(version) + } + ); + + return doc.addPage(); +}; + +// render all sections of the guide and write the pdf file +(function() { + const doc = new PDFDocument; + doc.pipe(fs.createWriteStream('guide.pdf')); + renderTitlePage(doc); + render(doc, 'getting_started.coffee.md'); + render(doc, 'vector.coffee.md'); + render(doc, 'text.coffee.md'); + render(doc, 'images.coffee.md'); + render(doc, 'outline.coffee.md'); + render(doc, 'annotations.coffee.md'); + return doc.end(); +})(); + +function __guard__(value, transform) { + return (typeof value !== 'undefined' && value !== null) ? transform(value) : undefined; +} \ No newline at end of file diff --git a/docs/generate_website.coffee b/docs/generate_website.coffee deleted file mode 100644 index 89c007c45..000000000 --- a/docs/generate_website.coffee +++ /dev/null @@ -1,108 +0,0 @@ -jade = require 'jade' -markdown = require('markdown').markdown -fs = require 'fs' -vm = require 'vm' -coffee = require 'coffee-script' -{exec} = require 'child_process' -PDFDocument = require '../' - -process.chdir(__dirname) - -files = [ - '../README.md' - 'getting_started.coffee.md' - 'vector.coffee.md' - 'text.coffee.md' - 'images.coffee.md' - 'annotations.coffee.md' -] - -# shared lorem ipsum text so we don't need to copy it into every example -lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus nec hendrerit felis. Morbi aliquam facilisis risus eu lacinia. Sed eu leo in turpis fringilla hendrerit. Ut nec accumsan nisl. Suspendisse rhoncus nisl posuere tortor tempus et dapibus elit porta. Cras leo neque, elementum a rhoncus ut, vestibulum non nibh. Phasellus pretium justo turpis. Etiam vulputate, odio vitae tincidunt ultricies, eros odio dapibus nisi, ut tincidunt lacus arcu eu elit. Aenean velit erat, vehicula eget lacinia ut, dignissim non tellus. Aliquam nec lacus mi, sed vestibulum nunc. Suspendisse potenti. Curabitur vitae sem turpis. Vestibulum sed neque eget dolor dapibus porttitor at sit amet sem. Fusce a turpis lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;' - -extractHeaders = (tree) -> - headers = [] - - for node, index in tree - if node[0] is 'header' and (headers.length is 0 or node[1].level > 1) - node[1].level = 2 if node[1].level > 2 - hash = node[2].toLowerCase().replace(/\s+/g, '_') - node[1].id = hash - headers.push - hash: hash - title: node[2] - - return headers - -imageIndex = 0 -generateImages = (tree) -> - # find code blocks - codeBlocks = [] - for node in tree - if node[0] is 'code_block' - codeBlocks.push node[1] - - for node in tree - if node[0] is 'para' and Array.isArray(node[1]) and node[1][0] is 'img' - # compile the code - attrs = node[1][1] - code = codeBlocks[attrs.alt] - code = coffee.compile code if code - delete attrs.height # used for pdf generation - - # create a PDF and run the example - doc = new PDFDocument - f = "img/#{imageIndex++}" - file = fs.createWriteStream "#{f}.pdf" - doc.pipe file - - doc.translate doc.x, doc.y - doc.scale 0.8 - doc.x = doc.y = 0 - - vm.runInNewContext code, - doc: doc - lorem: lorem - - delete attrs.title - delete attrs.alt - attrs.href = "#{f}.png" - - # write the PDF, convert to PNG using the mac `sips` - # command line tool, and trim with graphicsmagick - do (f) -> - file.on 'finish', -> - exec "sips -s format png #{f}.pdf --out #{f}.png", -> - fs.unlink "#{f}.pdf" - exec "gm convert #{f}.png -trim #{f}.png" - - doc.end() - -pages = [] -for file in files - content = fs.readFileSync file, 'utf8' - - # turn github highlighted code blocks into normal markdown code blocks - content = content.replace /^```coffeescript\n((:?.|\n)*?)\n```/mg, (m, $1) -> - ' ' + $1.split('\n').join('\n ') - - tree = markdown.parse(content) - headers = extractHeaders(tree) - generateImages(tree) - - file = file - .replace(/\.coffee\.md$/, '') - .replace(/README\.md/, 'index') - - pages.push - file: file - url: '/docs/' + file + '.html' - title: headers[0].title - headers: headers.slice(1) - content: markdown.toHTML(tree) - -for page, index in pages - page.pages = pages - page.index = index - html = jade.renderFile 'template.jade', page - fs.writeFileSync page.file + '.html', html, 'utf8' diff --git a/docs/generate_website.js b/docs/generate_website.js new file mode 100644 index 000000000..b7881453b --- /dev/null +++ b/docs/generate_website.js @@ -0,0 +1,142 @@ +/* + * decaffeinate suggestions: + * DS101: Remove unnecessary use of Array.from + * DS102: Remove unnecessary code created because of implicit returns + * DS205: Consider reworking code to avoid use of IIFEs + * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md + */ +const jade = require('jade'); +const { markdown } = require('markdown'); +const fs = require('fs'); +const vm = require('vm'); +const coffee = require('coffee-script'); +const {exec} = require('child_process'); +const PDFDocument = require('../'); + +process.chdir(__dirname); + +if (!fs.existsSync('img')) { + fs.mkdirSync('img'); +} + +const files = [ + '../README.md', + 'getting_started.coffee.md', + 'vector.coffee.md', + 'text.coffee.md', + 'images.coffee.md', + 'annotations.coffee.md' +]; + +// shared lorem ipsum text so we don't need to copy it into every example +const lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus nec hendrerit felis. Morbi aliquam facilisis risus eu lacinia. Sed eu leo in turpis fringilla hendrerit. Ut nec accumsan nisl. Suspendisse rhoncus nisl posuere tortor tempus et dapibus elit porta. Cras leo neque, elementum a rhoncus ut, vestibulum non nibh. Phasellus pretium justo turpis. Etiam vulputate, odio vitae tincidunt ultricies, eros odio dapibus nisi, ut tincidunt lacus arcu eu elit. Aenean velit erat, vehicula eget lacinia ut, dignissim non tellus. Aliquam nec lacus mi, sed vestibulum nunc. Suspendisse potenti. Curabitur vitae sem turpis. Vestibulum sed neque eget dolor dapibus porttitor at sit amet sem. Fusce a turpis lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;'; + +const extractHeaders = function(tree) { + const headers = []; + + for (let index = 0; index < tree.length; index++) { + const node = tree[index]; + if ((node[0] === 'header') && ((headers.length === 0) || (node[1].level > 1))) { + if (node[1].level > 2) { node[1].level = 2; } + const hash = node[2].toLowerCase().replace(/\s+/g, '_'); + node[1].id = hash; + headers.push({ + hash, + title: node[2]}); + } + } + + return headers; +}; + +let imageIndex = 0; +const generateImages = function(tree) { + // find code blocks + const codeBlocks = []; + for (var node of Array.from(tree)) { + if (node[0] === 'code_block') { + codeBlocks.push(node[1]); + } + } + + return (() => { + const result = []; + for (node of Array.from(tree)) { + if ((node[0] === 'para') && Array.isArray(node[1]) && (node[1][0] === 'img')) { + // compile the code + const attrs = node[1][1]; + let code = codeBlocks[attrs.alt]; + if (code) { code = coffee.compile(code); } + delete attrs.height; // used for pdf generation + + // create a PDF and run the example + const doc = new PDFDocument; + const f = `img/${imageIndex++}`; + var file = fs.createWriteStream(`${f}.pdf`); + doc.pipe(file); + + doc.translate(doc.x, doc.y); + doc.scale(0.8); + doc.x = (doc.y = 0); + + vm.runInNewContext(code, { + doc, + lorem + } + ); + + delete attrs.title; + delete attrs.alt; + attrs.href = `${f}.png`; + + // write the PDF, convert to PNG using the mac `sips` + // command line tool, and trim with graphicsmagick + (f => + file.on('finish', () => + exec(`sips -s format png ${f}.pdf --out ${f}.png`, function() { + fs.unlink(`${f}.pdf`); + return exec(`gm convert ${f}.png -trim ${f}.png`); + }) + ) + )(f); + + result.push(doc.end()); + } else { + result.push(undefined); + } + } + return result; + })(); +}; + +const pages = []; +for (let file of Array.from(files)) { + let content = fs.readFileSync(file, 'utf8'); + + // turn github highlighted code blocks into normal markdown code blocks + content = content.replace(/^```coffeescript\n((:?.|\n)*?)\n```/mg, (m, $1) => ` ${$1.split('\n').join('\n ')}`); + + const tree = markdown.parse(content); + const headers = extractHeaders(tree); + generateImages(tree); + + file = file + .replace(/\.coffee\.md$/, '') + .replace(/README\.md/, 'index'); + + pages.push({ + file, + url: `/docs/${file}.html`, + title: headers[0].title, + headers: headers.slice(1), + content: markdown.toHTML(tree) + }); +} + +for (let index = 0; index < pages.length; index++) { + const page = pages[index]; + page.pages = pages; + page.index = index; + const html = jade.renderFile('template.jade', page); + fs.writeFileSync(page.file + '.html', html, 'utf8'); +} diff --git a/lib/abstract_reference.js b/lib/abstract_reference.js new file mode 100644 index 000000000..af2d96e11 --- /dev/null +++ b/lib/abstract_reference.js @@ -0,0 +1,11 @@ +/* +PDFAbstractReference - abstract class for PDF reference +*/ + +class PDFAbstractReference { + toString() { + throw new Error('Must be implemented by subclasses'); + } +} + +export default PDFAbstractReference; diff --git a/lib/data.coffee b/lib/data.coffee deleted file mode 100644 index 38db1849f..000000000 --- a/lib/data.coffee +++ /dev/null @@ -1,140 +0,0 @@ -class Data - constructor: (@data = []) -> - @pos = 0 - @length = @data.length - - readByte: -> - @data[@pos++] - - writeByte: (byte) -> - @data[@pos++] = byte - - byteAt: (index) -> - @data[index] - - readBool: -> - return !!@readByte() - - writeBool: (val) -> - @writeByte if val then 1 else 0 - - readUInt32: -> - b1 = @readByte() * 0x1000000 - b2 = @readByte() << 16 - b3 = @readByte() << 8 - b4 = @readByte() - b1 + b2 + b3 + b4 - - writeUInt32: (val) -> - @writeByte (val >>> 24) & 0xff - @writeByte (val >> 16) & 0xff - @writeByte (val >> 8) & 0xff - @writeByte val & 0xff - - readInt32: -> - int = @readUInt32() - if int >= 0x80000000 then int - 0x100000000 else int - - writeInt32: (val) -> - val += 0x100000000 if val < 0 - @writeUInt32 val - - readUInt16: -> - b1 = @readByte() << 8 - b2 = @readByte() - b1 | b2 - - writeUInt16: (val) -> - @writeByte (val >> 8) & 0xff - @writeByte val & 0xff - - readInt16: -> - int = @readUInt16() - if int >= 0x8000 then int - 0x10000 else int - - writeInt16: (val) -> - val += 0x10000 if val < 0 - @writeUInt16 val - - readString: (length) -> - ret = [] - for i in [0...length] - ret[i] = String.fromCharCode @readByte() - - return ret.join '' - - writeString: (val) -> - for i in [0...val.length] - @writeByte val.charCodeAt(i) - - stringAt: (@pos, length) -> - @readString length - - readShort: -> - @readInt16() - - writeShort: (val) -> - @writeInt16 val - - readLongLong: -> - b1 = @readByte() - b2 = @readByte() - b3 = @readByte() - b4 = @readByte() - b5 = @readByte() - b6 = @readByte() - b7 = @readByte() - b8 = @readByte() - - if b1 & 0x80 # sign -> avoid overflow - return ((b1 ^ 0xff) * 0x100000000000000 + - (b2 ^ 0xff) * 0x1000000000000 + - (b3 ^ 0xff) * 0x10000000000 + - (b4 ^ 0xff) * 0x100000000 + - (b5 ^ 0xff) * 0x1000000 + - (b6 ^ 0xff) * 0x10000 + - (b7 ^ 0xff) * 0x100 + - (b8 ^ 0xff) + 1) * -1 - - return b1 * 0x100000000000000 + - b2 * 0x1000000000000 + - b3 * 0x10000000000 + - b4 * 0x100000000 + - b5 * 0x1000000 + - b6 * 0x10000 + - b7 * 0x100 + - b8 - - writeLongLong: (val) -> - high = Math.floor(val / 0x100000000) - low = val & 0xffffffff - @writeByte (high >> 24) & 0xff - @writeByte (high >> 16) & 0xff - @writeByte (high >> 8) & 0xff - @writeByte high & 0xff - @writeByte (low >> 24) & 0xff - @writeByte (low >> 16) & 0xff - @writeByte (low >> 8) & 0xff - @writeByte low & 0xff - - readInt: -> - @readInt32() - - writeInt: (val) -> - @writeInt32 val - - slice: (start, end) -> - @data.slice start, end - - read: (bytes) -> - buf = [] - for i in [0...bytes] - buf.push @readByte() - - return buf - - write: (bytes) -> - for byte in bytes - @writeByte byte - -module.exports = Data diff --git a/lib/data.js b/lib/data.js new file mode 100644 index 000000000..03240c9b2 --- /dev/null +++ b/lib/data.js @@ -0,0 +1,177 @@ +class Data { + constructor(data) { + if (data == null) { data = []; } + this.data = data; + this.pos = 0; + this.length = this.data.length; + } + + readByte() { + return this.data[this.pos++]; + } + + writeByte(byte) { + return this.data[this.pos++] = byte; + } + + byteAt(index) { + return this.data[index]; + } + + readBool() { + return !!this.readByte(); + } + + writeBool(val) { + return this.writeByte(val ? 1 : 0); + } + + readUInt32() { + const b1 = this.readByte() * 0x1000000; + const b2 = this.readByte() << 16; + const b3 = this.readByte() << 8; + const b4 = this.readByte(); + return b1 + b2 + b3 + b4; + } + + writeUInt32(val) { + this.writeByte((val >>> 24) & 0xff); + this.writeByte((val >> 16) & 0xff); + this.writeByte((val >> 8) & 0xff); + return this.writeByte(val & 0xff); + } + + readInt32() { + const int = this.readUInt32(); + if (int >= 0x80000000) { return int - 0x100000000; } else { return int; } + } + + writeInt32(val) { + if (val < 0) { val += 0x100000000; } + return this.writeUInt32(val); + } + + readUInt16() { + const b1 = this.readByte() << 8; + const b2 = this.readByte(); + return b1 | b2; + } + + writeUInt16(val) { + this.writeByte((val >> 8) & 0xff); + return this.writeByte(val & 0xff); + } + + readInt16() { + const int = this.readUInt16(); + if (int >= 0x8000) { return int - 0x10000; } else { return int; } + } + + writeInt16(val) { + if (val < 0) { val += 0x10000; } + return this.writeUInt16(val); + } + + readString(length) { + const ret = []; + for (let i = 0, end = length, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + ret[i] = String.fromCharCode(this.readByte()); + } + + return ret.join(''); + } + + writeString(val) { + // todo: remove returning data. Seems not used + const result = []; + for (let i = 0; i <= val.length; i++) { + result.push(this.writeByte(val.charCodeAt(i))); + } + return result; + } + + stringAt(pos, length) { + this.pos = pos; + return this.readString(length); + } + + readShort() { + return this.readInt16(); + } + + writeShort(val) { + return this.writeInt16(val); + } + + readLongLong() { + const b1 = this.readByte(); + const b2 = this.readByte(); + const b3 = this.readByte(); + const b4 = this.readByte(); + const b5 = this.readByte(); + const b6 = this.readByte(); + const b7 = this.readByte(); + const b8 = this.readByte(); + + if (b1 & 0x80) { // sign -> avoid overflow + return (((b1 ^ 0xff) * 0x100000000000000) + + ((b2 ^ 0xff) * 0x1000000000000) + + ((b3 ^ 0xff) * 0x10000000000) + + ((b4 ^ 0xff) * 0x100000000) + + ((b5 ^ 0xff) * 0x1000000) + + ((b6 ^ 0xff) * 0x10000) + + ((b7 ^ 0xff) * 0x100) + + (b8 ^ 0xff) + 1) * -1; + } + + return (b1 * 0x100000000000000) + + (b2 * 0x1000000000000) + + (b3 * 0x10000000000) + + (b4 * 0x100000000) + + (b5 * 0x1000000) + + (b6 * 0x10000) + + (b7 * 0x100) + + b8; + } + + writeLongLong(val) { + const high = Math.floor(val / 0x100000000); + const low = val & 0xffffffff; + this.writeByte((high >> 24) & 0xff); + this.writeByte((high >> 16) & 0xff); + this.writeByte((high >> 8) & 0xff); + this.writeByte(high & 0xff); + this.writeByte((low >> 24) & 0xff); + this.writeByte((low >> 16) & 0xff); + this.writeByte((low >> 8) & 0xff); + return this.writeByte(low & 0xff); + } + + readInt() { + return this.readInt32(); + } + + writeInt(val) { + return this.writeInt32(val); + } + + slice(start, end) { + return this.data.slice(start, end); + } + + read(bytes) { + const buf = []; + for (let i = 0, end = bytes, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + buf.push(this.readByte()); + } + + return buf; + } + + write(bytes) { + return bytes.map((byte) => + this.writeByte(byte)); + } +} + +export default Data; \ No newline at end of file diff --git a/lib/document.coffee b/lib/document.coffee deleted file mode 100644 index 5ce9a5166..000000000 --- a/lib/document.coffee +++ /dev/null @@ -1,227 +0,0 @@ -### -PDFDocument - represents an entire PDF document -By Devon Govett -### - -stream = require 'stream' -fs = require 'fs' -PDFObject = require './object' -PDFReference = require './reference' -PDFPage = require './page' - -class PDFDocument extends stream.Readable - constructor: (@options = {}) -> - super - - # PDF version - @version = 1.3 - - # Whether streams should be compressed - @compress = @options.compress ? yes - - @_pageBuffer = [] - @_pageBufferStart = 0 - - # The PDF object store - @_offsets = [] - @_waiting = 0 - @_ended = false - @_offset = 0 - - @_root = @ref - Type: 'Catalog' - Pages: @ref - Type: 'Pages' - Count: 0 - Kids: [] - - # The current page - @page = null - - # Initialize mixins - @initColor() - @initVector() - @initFonts() - @initText() - @initImages() - @initOutline() - - # Initialize the metadata - @info = - Producer: 'PDFKit' - Creator: 'PDFKit' - CreationDate: new Date() - - if @options.info - for key, val of @options.info - @info[key] = val - - # Write the header - # PDF version - @_write "%PDF-#{@version}" - - # 4 binary chars, as recommended by the spec - @_write "%\xFF\xFF\xFF\xFF" - - # Add the first page - if @options.autoFirstPage isnt false - @addPage() - - mixin = (methods) => - for name, method of methods - this::[name] = method - - # Load mixins - mixin require './mixins/color' - mixin require './mixins/vector' - mixin require './mixins/fonts' - mixin require './mixins/text' - mixin require './mixins/images' - mixin require './mixins/annotations' - mixin require './mixins/outline' - - addPage: (options = @options) -> - # end the current page if needed - @flushPages() unless @options.bufferPages - - # create a page object - @page = new PDFPage(this, options) - @_pageBuffer.push(@page) - - # add the page to the object store - pages = @_root.data.Pages.data - pages.Kids.push @page.dictionary - pages.Count++ - - # reset x and y coordinates - @x = @page.margins.left - @y = @page.margins.top - - # flip PDF coordinate system so that the origin is in - # the top left rather than the bottom left - @_ctm = [1, 0, 0, 1, 0, 0] - @transform 1, 0, 0, -1, 0, @page.height - - @emit('pageAdded') - - return this - - bufferedPageRange: -> - return { start: @_pageBufferStart, count: @_pageBuffer.length } - - switchToPage: (n) -> - unless page = @_pageBuffer[n - @_pageBufferStart] - throw new Error "switchToPage(#{n}) out of bounds, current buffer covers pages #{@_pageBufferStart} to #{@_pageBufferStart + @_pageBuffer.length - 1}" - - @page = page - - flushPages: -> - # this local variable exists so we're future-proof against - # reentrant calls to flushPages. - pages = @_pageBuffer - @_pageBuffer = [] - @_pageBufferStart += pages.length - for page in pages - page.end() - - return - - ref: (data) -> - ref = new PDFReference(this, @_offsets.length + 1, data) - @_offsets.push null # placeholder for this object's offset once it is finalized - @_waiting++ - return ref - - _read: -> - # do nothing, but this method is required by node - - _write: (data) -> - unless Buffer.isBuffer(data) - data = new Buffer(data + '\n', 'binary') - - @push data - @_offset += data.length - - addContent: (data) -> - @page.write data - return this - - _refEnd: (ref) -> - @_offsets[ref.id - 1] = ref.offset - if --@_waiting is 0 and @_ended - @_finalize() - @_ended = false - - write: (filename, fn) -> - # print a deprecation warning with a stacktrace - err = new Error ' - PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. - Please pipe the document into a Node stream. - ' - - console.warn err.stack - - @pipe fs.createWriteStream(filename) - @end() - @once 'end', fn - - output: (fn) -> - # more difficult to support this. It would involve concatenating all the buffers together - throw new Error ' - PDFDocument#output is deprecated, and has been removed from PDFKit. - Please pipe the document into a Node stream. - ' - - end: -> - @flushPages() - @_info = @ref() - for key, val of @info - if typeof val is 'string' - val = new String val - - @_info.data[key] = val - - @_info.end() - - for name, font of @_fontFamilies - font.finalize() - - @endOutline() - - @_root.end() - @_root.data.Pages.end() - - if @_waiting is 0 - @_finalize() - else - @_ended = true - - _finalize: (fn) -> - # generate xref - xRefOffset = @_offset - @_write "xref" - @_write "0 #{@_offsets.length + 1}" - @_write "0000000000 65535 f " - - for offset in @_offsets - offset = ('0000000000' + offset).slice(-10) - @_write offset + ' 00000 n ' - - # trailer - @_write 'trailer' - @_write PDFObject.convert - Size: @_offsets.length + 1 - Root: @_root - Info: @_info - - @_write 'startxref' - @_write "#{xRefOffset}" - @_write '%%EOF' - - # end the stream - @push null - - toString: -> - "[object PDFDocument]" - -module.exports = PDFDocument diff --git a/lib/document.js b/lib/document.js new file mode 100644 index 000000000..e4d598673 --- /dev/null +++ b/lib/document.js @@ -0,0 +1,284 @@ +/* +PDFDocument - represents an entire PDF document +By Devon Govett +*/ + +import stream from 'stream'; +import fs from 'fs'; +import PDFObject from './object'; +import PDFReference from './reference'; +import PDFPage from './page'; +import ColorMixin from './mixins/color'; +import VectorMixin from './mixins/vector'; +import FontsMixin from './mixins/fonts'; +import TextMixin from './mixins/text'; +import ImagesMixin from './mixins/images'; +import AnnotationsMixin from './mixins/annotations'; +import OutlineMixin from './mixins/outline'; + +class PDFDocument extends stream.Readable { + constructor(options = {}) { + super(options); + this.options = options; + + // PDF version + this.version = 1.3; + + // Whether streams should be compressed + this.compress = this.options.compress != null ? this.options.compress : true; + + this._pageBuffer = []; + this._pageBufferStart = 0; + + // The PDF object store + this._offsets = []; + this._waiting = 0; + this._ended = false; + this._offset = 0; + const Pages = this.ref({ + Type: 'Pages', + Count: 0, + Kids: []}); + + Pages.finalize = function() { + this.offset = this.document._offset; + this.document._write(this.id + " " + this.gen + " obj"); + this.document._write('<<'); + this.document._write('/Type /Pages'); + this.document._write(`/Count ${this.data.Count}`); + this.document._write(`/Kids [${Buffer.concat(this.data.Kids).slice(0,-1).toString()}]`); + this.document._write('>>'); + this.document._write('endobj'); + return this.document._refEnd(this); + }; + + this._root = this.ref({ + Type: 'Catalog', + Pages + }); + + // The current page + this.page = null; + + // Initialize mixins + this.initColor(); + this.initVector(); + this.initFonts(); + this.initText(); + this.initImages(); + this.initOutline(); + + // Initialize the metadata + this.info = { + Producer: 'PDFKit', + Creator: 'PDFKit', + CreationDate: new Date() + }; + + if (this.options.info) { + for (let key in this.options.info) { + const val = this.options.info[key]; + this.info[key] = val; + } + } + + // Write the header + // PDF version + this._write(`%PDF-${this.version}`); + + // 4 binary chars, as recommended by the spec + this._write("%\xFF\xFF\xFF\xFF"); + + // Add the first page + if (this.options.autoFirstPage !== false) { + this.addPage(); + } + } + + addPage(options) { + // end the current page if needed + if (options == null) { ({ options } = this); } + if (!this.options.bufferPages) { this.flushPages(); } + + // create a page object + this.page = new PDFPage(this, options); + this._pageBuffer.push(this.page); + + // add the page to the object store + const pages = this._root.data.Pages.data; + pages.Kids.push(new Buffer(this.page.dictionary + ' ')); + pages.Count++; + + // reset x and y coordinates + this.x = this.page.margins.left; + this.y = this.page.margins.top; + + // flip PDF coordinate system so that the origin is in + // the top left rather than the bottom left + this._ctm = [1, 0, 0, 1, 0, 0]; + this.transform(1, 0, 0, -1, 0, this.page.height); + + this.emit('pageAdded'); + + return this; + } + + bufferedPageRange() { + return { start: this._pageBufferStart, count: this._pageBuffer.length }; + } + + switchToPage(n) { + let page; + if (!(page = this._pageBuffer[n - this._pageBufferStart])) { + throw new Error(`switchToPage(${n}) out of bounds, current buffer covers pages ${this._pageBufferStart} to ${(this._pageBufferStart + this._pageBuffer.length) - 1}`); + } + + return this.page = page; + } + + flushPages() { + // this local variable exists so we're future-proof against + // reentrant calls to flushPages. + const pages = this._pageBuffer; + this._pageBuffer = []; + this._pageBufferStart += pages.length; + for (let page of pages) { + page.end(); + } + + } + + ref(data) { + const ref = new PDFReference(this, this._offsets.length + 1, data); + this._offsets.push(null); // placeholder for this object's offset once it is finalized + this._waiting++; + return ref; + } + + _read() {} + // do nothing, but this method is required by node + + _write(data) { + if (!Buffer.isBuffer(data)) { + data = new Buffer(data + '\n', 'binary'); + } + + this.push(data); + return this._offset += data.length; + } + + addContent(data) { + this.page.write(data); + return this; + } + + _refEnd(ref) { + this._offsets[ref.id - 1] = ref.offset; + if ((--this._waiting === 0) && this._ended) { + this._finalize(); + return this._ended = false; + } + } + + write(filename, fn) { + // print a deprecation warning with a stacktrace + const err = new Error(`\ +PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. \ +Please pipe the document into a Node stream.\ +` + ); + + console.warn(err.stack); + + this.pipe(fs.createWriteStream(filename)); + this.end(); + return this.once('end', fn); + } + + output(fn) { + // more difficult to support this. It would involve concatenating all the buffers together + throw new Error(`\ +PDFDocument#output is deprecated, and has been removed from PDFKit. \ +Please pipe the document into a Node stream.\ +` + ); + } + + end() { + this.flushPages(); + this._info = this.ref(); + for (let key in this.info) { + let val = this.info[key]; + if (typeof val === 'string') { + val = new String(val); + } + + this._info.data[key] = val; + } + + this._info.end(); + + for (let name in this._fontFamilies) { + const font = this._fontFamilies[name]; + font.finalize(); + } + + this.endOutline(); + + this._root.end(); + this._root.data.Pages.end(); + + if (this._waiting === 0) { + return this._finalize(); + } else { + return this._ended = true; + } + } + + _finalize(fn) { + // generate xref + const xRefOffset = this._offset; + this._write("xref"); + this._write(`0 ${this._offsets.length + 1}`); + this._write("0000000000 65535 f "); + + for (let offset of this._offsets) { + offset = (`0000000000${offset}`).slice(-10); + this._write(offset + ' 00000 n '); + } + + // trailer + this._write('trailer'); + this._write(PDFObject.convert({ + Size: this._offsets.length + 1, + Root: this._root, + Info: this._info + }) + ); + + this._write('startxref'); + this._write(`${xRefOffset}`); + this._write('%%EOF'); + + // end the stream + return this.push(null); + } + + toString() { + return "[object PDFDocument]"; + } +}; + +const mixin = methods => { + Object.assign(PDFDocument.prototype, methods); +}; + +mixin(ColorMixin); +mixin(VectorMixin); +mixin(FontsMixin); +mixin(TextMixin); +mixin(ImagesMixin); +mixin(AnnotationsMixin); +mixin(OutlineMixin); + +export default PDFDocument; diff --git a/lib/font.coffee b/lib/font.coffee deleted file mode 100644 index c8c58c3a4..000000000 --- a/lib/font.coffee +++ /dev/null @@ -1,53 +0,0 @@ -fontkit = require 'fontkit' - -class PDFFont - @open: (document, src, family, id) -> - if typeof src is 'string' - if StandardFont.isStandardFont src - return new StandardFont document, src, id - - font = fontkit.openSync src, family - - else if Buffer.isBuffer(src) - font = fontkit.create src, family - - else if src instanceof Uint8Array - font = fontkit.create new Buffer(src), family - - else if src instanceof ArrayBuffer - font = fontkit.create new Buffer(new Uint8Array(src)), family - - if not font? - throw new Error 'Not a supported font format or standard PDF font.' - - return new EmbeddedFont document, font, id - - constructor: -> - throw new Error 'Cannot construct a PDFFont directly.' - - encode: (text) -> - throw new Error 'Must be implemented by subclasses' - - widthOfString: (text) -> - throw new Error 'Must be implemented by subclasses' - - ref: -> - @dictionary ?= @document.ref() - - finalize: -> - return if @embedded or not @dictionary? - - @embed() - @embedded = true - - embed: -> - throw new Error 'Must be implemented by subclasses' - - lineHeight: (size, includeGap = false) -> - gap = if includeGap then @lineGap else 0 - (@ascender + gap - @descender) / 1000 * size - -module.exports = PDFFont - -StandardFont = require './font/standard' -EmbeddedFont = require './font/embedded' diff --git a/lib/font.js b/lib/font.js new file mode 100644 index 000000000..3152078eb --- /dev/null +++ b/lib/font.js @@ -0,0 +1,35 @@ +class PDFFont { + constructor() { + } + + encode() { + throw new Error('Must be implemented by subclasses'); + } + + widthOfString() { + throw new Error('Must be implemented by subclasses'); + } + + ref() { + return this.dictionary != null ? this.dictionary : (this.dictionary = this.document.ref()); + } + + finalize() { + if (this.embedded || (this.dictionary == null)) { return; } + + this.embed(); + return this.embedded = true; + } + + embed() { + throw new Error('Must be implemented by subclasses'); + } + + lineHeight(size, includeGap) { + if (includeGap == null) { includeGap = false; } + const gap = includeGap ? this.lineGap : 0; + return (((this.ascender + gap) - this.descender) / 1000) * size; + } +} + +export default PDFFont; diff --git a/lib/font/afm.coffee b/lib/font/afm.coffee deleted file mode 100644 index 62ecb3d54..000000000 --- a/lib/font/afm.coffee +++ /dev/null @@ -1,197 +0,0 @@ -fs = require 'fs' - -class AFMFont - @open: (filename) -> - new AFMFont fs.readFileSync filename, 'utf8' - - constructor: (@contents) -> - @attributes = {} - @glyphWidths = {} - @boundingBoxes = {} - @kernPairs = {} - - @parse() - @charWidths = (@glyphWidths[characters[i]] for i in [0..255]) - - @bbox = (+e for e in @attributes['FontBBox'].split /\s+/) - @ascender = +(@attributes['Ascender'] or 0) - @descender = +(@attributes['Descender'] or 0) - @xHeight = +(@attributes['XHeight'] or 0) - @capHeight = +(@attributes['CapHeight'] or 0) - @lineGap = (@bbox[3] - @bbox[1]) - (@ascender - @descender) - - parse: -> - section = '' - for line in @contents.split '\n' - if match = line.match /^Start(\w+)/ - section = match[1] - continue - - else if match = line.match /^End(\w+)/ - section = '' - continue - - switch section - when 'FontMetrics' - match = line.match /(^\w+)\s+(.*)/ - key = match[1] - value = match[2] - - if a = @attributes[key] - a = @attributes[key] = [a] if !Array.isArray(a) - a.push(value) - else - @attributes[key] = value - - when 'CharMetrics' - continue unless /^CH?\s/.test(line) - name = line.match(/\bN\s+(\.?\w+)\s*;/)[1] - @glyphWidths[name] = +line.match(/\bWX\s+(\d+)\s*;/)[1] - - when 'KernPairs' - match = line.match /^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/ - if match - @kernPairs[match[1] + '\0' + match[2]] = parseInt match[3] - - return - - WIN_ANSI_MAP = - 402: 131 - 8211: 150 - 8212: 151 - 8216: 145 - 8217: 146 - 8218: 130 - 8220: 147 - 8221: 148 - 8222: 132 - 8224: 134 - 8225: 135 - 8226: 149 - 8230: 133 - 8364: 128 - 8240: 137 - 8249: 139 - 8250: 155 - 710: 136 - 8482: 153 - 338: 140 - 339: 156 - 732: 152 - 352: 138 - 353: 154 - 376: 159 - 381: 142 - 382: 158 - - encodeText: (text) -> - res = [] - for i in [0...text.length] - char = text.charCodeAt(i) - char = WIN_ANSI_MAP[char] or char - res.push char.toString(16) - - return res - - glyphsForString: (string) -> - glyphs = [] - - for i in [0...string.length] - charCode = string.charCodeAt(i) - glyphs.push @characterToGlyph charCode - - return glyphs - - characterToGlyph: (character) -> - return characters[WIN_ANSI_MAP[character] or character] or '.notdef' - - widthOfGlyph: (glyph) -> - return @glyphWidths[glyph] or 0 - - getKernPair: (left, right) -> - return @kernPairs[left + '\0' + right] or 0 - - advancesForGlyphs: (glyphs) -> - advances = [] - - for left, index in glyphs - right = glyphs[index + 1] - advances.push @widthOfGlyph(left) + @getKernPair(left, right) - - return advances - - characters = ''' - .notdef .notdef .notdef .notdef - .notdef .notdef .notdef .notdef - .notdef .notdef .notdef .notdef - .notdef .notdef .notdef .notdef - .notdef .notdef .notdef .notdef - .notdef .notdef .notdef .notdef - .notdef .notdef .notdef .notdef - .notdef .notdef .notdef .notdef - - 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 .notdef - - Euro .notdef quotesinglbase florin - quotedblbase ellipsis dagger daggerdbl - circumflex perthousand Scaron guilsinglleft - OE .notdef Zcaron .notdef - .notdef quoteleft quoteright quotedblleft - quotedblright bullet endash emdash - tilde trademark scaron guilsinglright - oe .notdef 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 - '''.split(/\s+/) - -module.exports = AFMFont diff --git a/lib/font/afm.js b/lib/font/afm.js new file mode 100644 index 000000000..4aa1991e1 --- /dev/null +++ b/lib/font/afm.js @@ -0,0 +1,227 @@ +import fs from 'fs'; + +const WIN_ANSI_MAP = { + 402: 131, + 8211: 150, + 8212: 151, + 8216: 145, + 8217: 146, + 8218: 130, + 8220: 147, + 8221: 148, + 8222: 132, + 8224: 134, + 8225: 135, + 8226: 149, + 8230: 133, + 8364: 128, + 8240: 137, + 8249: 139, + 8250: 155, + 710: 136, + 8482: 153, + 338: 140, + 339: 156, + 732: 152, + 352: 138, + 353: 154, + 376: 159, + 381: 142, + 382: 158 +}; + +const characters = `\ +.notdef .notdef .notdef .notdef +.notdef .notdef .notdef .notdef +.notdef .notdef .notdef .notdef +.notdef .notdef .notdef .notdef +.notdef .notdef .notdef .notdef +.notdef .notdef .notdef .notdef +.notdef .notdef .notdef .notdef +.notdef .notdef .notdef .notdef + +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 .notdef + +Euro .notdef quotesinglbase florin +quotedblbase ellipsis dagger daggerdbl +circumflex perthousand Scaron guilsinglleft +OE .notdef Zcaron .notdef +.notdef quoteleft quoteright quotedblleft +quotedblright bullet endash emdash +tilde trademark scaron guilsinglright +oe .notdef 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\ +`.split(/\s+/); + + +class AFMFont { + static open(filename) { + return new AFMFont(fs.readFileSync(filename, 'utf8')); + } + + constructor(contents) { + this.contents = contents; + this.attributes = {}; + this.glyphWidths = {}; + this.boundingBoxes = {}; + this.kernPairs = {}; + + this.parse(); + // todo: remove charWidths since appears to not be used + this.charWidths = new Array(256); + for (let char = 0; char <= 255; char++) { + this.charWidths[char] = this.glyphWidths[characters[char]]; + } + + this.bbox = (this.attributes['FontBBox'].split(/\s+/).map((e) => +e)); + this.ascender = +(this.attributes['Ascender'] || 0); + this.descender = +(this.attributes['Descender'] || 0); + this.xHeight = +(this.attributes['XHeight'] || 0); + this.capHeight = +(this.attributes['CapHeight'] || 0); + this.lineGap = (this.bbox[3] - this.bbox[1]) - (this.ascender - this.descender); + } + + parse() { + let section = ''; + for (let line of this.contents.split('\n')) { + var match; + var a; + if (match = line.match(/^Start(\w+)/)) { + section = match[1]; + continue; + + } else if (match = line.match(/^End(\w+)/)) { + section = ''; + continue; + } + + switch (section) { + case 'FontMetrics': + match = line.match(/(^\w+)\s+(.*)/); + var key = match[1]; + var value = match[2]; + + if (a = this.attributes[key]) { + if (!Array.isArray(a)) { a = (this.attributes[key] = [a]); } + a.push(value); + } else { + this.attributes[key] = value; + } + break; + + case 'CharMetrics': + if (!/^CH?\s/.test(line)) { continue; } + var name = line.match(/\bN\s+(\.?\w+)\s*;/)[1]; + this.glyphWidths[name] = +line.match(/\bWX\s+(\d+)\s*;/)[1]; + break; + + case 'KernPairs': + match = line.match(/^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/); + if (match) { + this.kernPairs[match[1] + '\0' + match[2]] = parseInt(match[3]); + } + break; + } + } + + } + + encodeText(text) { + const res = []; + for (let i = 0, end = text.length, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + let char = text.charCodeAt(i); + char = WIN_ANSI_MAP[char] || char; + res.push(char.toString(16)); + } + + return res; + } + + glyphsForString(string) { + const glyphs = []; + + for (let i = 0, end = string.length, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + const charCode = string.charCodeAt(i); + glyphs.push(this.characterToGlyph(charCode)); + } + + return glyphs; + } + + characterToGlyph(character) { + return characters[WIN_ANSI_MAP[character] || character] || '.notdef'; + } + + widthOfGlyph(glyph) { + return this.glyphWidths[glyph] || 0; + } + + getKernPair(left, right) { + return this.kernPairs[left + '\0' + right] || 0; + } + + advancesForGlyphs(glyphs) { + const advances = []; + + for (let index = 0; index < glyphs.length; index++) { + const left = glyphs[index]; + const right = glyphs[index + 1]; + advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right)); + } + + return advances; + } +}; + +export default AFMFont; \ No newline at end of file diff --git a/lib/font/embedded.coffee b/lib/font/embedded.coffee deleted file mode 100644 index 7a65e1bea..000000000 --- a/lib/font/embedded.coffee +++ /dev/null @@ -1,202 +0,0 @@ -PDFFont = require '../font' -PDFObject = require '../object' - -class EmbeddedFont extends PDFFont - constructor: (@document, @font, @id) -> - @subset = @font.createSubset() - @unicode = [[0]] - @widths = [@font.getGlyph(0).advanceWidth] - - @name = @font.postscriptName - @scale = 1000 / @font.unitsPerEm - @ascender = @font.ascent * @scale - @descender = @font.descent * @scale - @xHeight = @font.xHeight * @scale - @capHeight = @font.capHeight * @scale - @lineGap = @font.lineGap * @scale - @bbox = @font.bbox - - @layoutCache = Object.create(null) - - layoutRun: (text, features) -> - run = @font.layout text, features - - # Normalize position values - for position, i in run.positions - for key of position - position[key] *= @scale - - position.advanceWidth = run.glyphs[i].advanceWidth * @scale - - return run - - layoutCached: (text) -> - if cached = @layoutCache[text] - return cached - - run = @layoutRun text - @layoutCache[text] = run - return run - - layout: (text, features, onlyWidth = false) -> - # Skip the cache if any user defined features are applied - if features - return @layoutRun text, features - - glyphs = if onlyWidth then null else [] - positions = if onlyWidth then null else [] - advanceWidth = 0 - - # Split the string by words to increase cache efficiency. - # For this purpose, spaces and tabs are a good enough delimeter. - last = 0 - index = 0 - while index <= text.length - if (index is text.length and last < index) or text.charAt(index) in [' ', '\t'] - run = @layoutCached text.slice(last, ++index) - if not onlyWidth - glyphs.push run.glyphs... - positions.push run.positions... - - advanceWidth += run.advanceWidth - last = index - else - index++ - - return {glyphs, positions, advanceWidth} - - encode: (text, features) -> - {glyphs, positions} = @layout text, features - - res = [] - for glyph, i in glyphs - gid = @subset.includeGlyph glyph.id - res.push ('0000' + gid.toString(16)).slice(-4) - - @widths[gid] ?= glyph.advanceWidth * @scale - @unicode[gid] ?= glyph.codePoints - - return [res, positions] - - widthOfString: (string, size, features) -> - width = @layout(string, features, true).advanceWidth - scale = size / 1000 - return width * scale - - embed: -> - isCFF = @subset.cff? - fontFile = @document.ref() - - if isCFF - fontFile.data.Subtype = 'CIDFontType0C' - - @subset.encodeStream().pipe(fontFile) - - familyClass = (@font['OS/2']?.sFamilyClass or 0) >> 8 - flags = 0 - flags |= 1 << 0 if @font.post.isFixedPitch - flags |= 1 << 1 if 1 <= familyClass <= 7 - flags |= 1 << 2 # assume the font uses non-latin characters - flags |= 1 << 3 if familyClass is 10 - flags |= 1 << 6 if @font.head.macStyle.italic - - # generate a random tag (6 uppercase letters. 65 is the char code for 'A') - tag = (String.fromCharCode Math.random() * 26 + 65 for i in [0...6]).join '' - name = tag + '+' + @font.postscriptName - - bbox = @font.bbox - descriptor = @document.ref - Type: 'FontDescriptor' - FontName: name - Flags: flags - FontBBox: [bbox.minX * @scale, bbox.minY * @scale, bbox.maxX * @scale, bbox.maxY * @scale] - ItalicAngle: @font.italicAngle - Ascent: @ascender - Descent: @descender - CapHeight: (@font.capHeight or @font.ascent) * @scale - XHeight: (@font.xHeight or 0) * @scale - StemV: 0 # not sure how to calculate this - - if isCFF - descriptor.data.FontFile3 = fontFile - else - descriptor.data.FontFile2 = fontFile - - descriptor.end() - - descendantFont = @document.ref - Type: 'Font' - Subtype: if isCFF then 'CIDFontType0' else 'CIDFontType2' - BaseFont: name - CIDSystemInfo: - Registry: new String 'Adobe' - Ordering: new String 'Identity' - Supplement: 0 - FontDescriptor: descriptor - W: [0, @widths] - - descendantFont.end() - - @dictionary.data = - Type: 'Font' - Subtype: 'Type0' - BaseFont: name - Encoding: 'Identity-H' - DescendantFonts: [descendantFont] - ToUnicode: @toUnicodeCmap() - - @dictionary.end() - - toHex = (codePoints...) -> - codes = for code in codePoints - ('0000' + code.toString(16)).slice(-4) - - return codes.join '' - - # Maps the glyph ids encoded in the PDF back to unicode strings - # Because of ligature substitutions and the like, there may be one or more - # unicode characters represented by each glyph. - toUnicodeCmap: -> - cmap = @document.ref() - - entries = [] - for codePoints in @unicode - encoded = [] - - # encode codePoints to utf16 - for value in codePoints - if value > 0xffff - value -= 0x10000 - encoded.push toHex value >>> 10 & 0x3ff | 0xd800 - value = 0xdc00 | value & 0x3ff - - encoded.push toHex value - - entries.push "<#{encoded.join ' '}>" - - cmap.end """ - /CIDInit /ProcSet findresource begin - 12 dict begin - begincmap - /CIDSystemInfo << - /Registry (Adobe) - /Ordering (UCS) - /Supplement 0 - >> def - /CMapName /Adobe-Identity-UCS def - /CMapType 2 def - 1 begincodespacerange - <0000> - endcodespacerange - 1 beginbfrange - <0000> <#{toHex entries.length - 1}> [#{entries.join ' '}] - endbfrange - endcmap - CMapName currentdict /CMap defineresource pop - end - end - """ - - return cmap - -module.exports = EmbeddedFont diff --git a/lib/font/embedded.js b/lib/font/embedded.js new file mode 100644 index 000000000..4246daf17 --- /dev/null +++ b/lib/font/embedded.js @@ -0,0 +1,236 @@ +import PDFFont from '../font'; + +const toHex = function(num) { + return (`0000${num.toString(16)}`).slice(-4); +}; + +class EmbeddedFont extends PDFFont { + constructor(document, font, id) { + super(); + this.document = document; + this.font = font; + this.id = id; + this.subset = this.font.createSubset(); + this.unicode = [[0]]; + this.widths = [this.font.getGlyph(0).advanceWidth]; + + this.name = this.font.postscriptName; + this.scale = 1000 / this.font.unitsPerEm; + this.ascender = this.font.ascent * this.scale; + this.descender = this.font.descent * this.scale; + this.xHeight = this.font.xHeight * this.scale; + this.capHeight = this.font.capHeight * this.scale; + this.lineGap = this.font.lineGap * this.scale; + this.bbox = this.font.bbox; + + this.layoutCache = Object.create(null); + } + + layoutRun(text, features) { + const run = this.font.layout(text, features); + + // Normalize position values + for (let i = 0; i < run.positions.length; i++) { + const position = run.positions[i]; + for (let key in position) { + position[key] *= this.scale; + } + + position.advanceWidth = run.glyphs[i].advanceWidth * this.scale; + } + + return run; + } + + layoutCached(text) { + let cached; + if (cached = this.layoutCache[text]) { + return cached; + } + + const run = this.layoutRun(text); + this.layoutCache[text] = run; + return run; + } + + layout(text, features, onlyWidth) { + // Skip the cache if any user defined features are applied + if (onlyWidth == null) { onlyWidth = false; } + if (features) { + return this.layoutRun(text, features); + } + + const glyphs = onlyWidth ? null : []; + const positions = onlyWidth ? null : []; + let advanceWidth = 0; + + // Split the string by words to increase cache efficiency. + // For this purpose, spaces and tabs are a good enough delimeter. + let last = 0; + let index = 0; + while (index <= text.length) { + var needle; + if (((index === text.length) && (last < index)) || (needle = text.charAt(index), [' ', '\t'].includes(needle))) { + const run = this.layoutCached(text.slice(last, ++index)); + if (!onlyWidth) { + glyphs.push(...(run.glyphs || [])); + positions.push(...(run.positions || [])); + } + + advanceWidth += run.advanceWidth; + last = index; + } else { + index++; + } + } + + return {glyphs, positions, advanceWidth}; + } + + encode(text, features) { + const {glyphs, positions} = this.layout(text, features); + + const res = []; + for (let i = 0; i < glyphs.length; i++) { + const glyph = glyphs[i]; + const gid = this.subset.includeGlyph(glyph.id); + res.push((`0000${gid.toString(16)}`).slice(-4)); + + if (this.widths[gid] == null) { this.widths[gid] = glyph.advanceWidth * this.scale; } + if (this.unicode[gid] == null) { this.unicode[gid] = glyph.codePoints; } + } + + return [res, positions]; + } + + widthOfString(string, size, features) { + const width = this.layout(string, features, true).advanceWidth; + const scale = size / 1000; + return width * scale; + } + + embed() { + const isCFF = (this.subset.cff != null); + const fontFile = this.document.ref(); + + if (isCFF) { + fontFile.data.Subtype = 'CIDFontType0C'; + } + + this.subset.encodeStream() + .on('data', data => fontFile.write(data)).on('end', () => fontFile.end()); + + const familyClass = ((this.font['OS/2'] != null ? this.font['OS/2'].sFamilyClass : undefined) || 0) >> 8; + let flags = 0; + if (this.font.post.isFixedPitch) { flags |= 1 << 0; } + if (1 <= familyClass && familyClass <= 7) { flags |= 1 << 1; } + flags |= 1 << 2; // assume the font uses non-latin characters + if (familyClass === 10) { flags |= 1 << 3; } + if (this.font.head.macStyle.italic) { flags |= 1 << 6; } + + // generate a tag (6 uppercase letters. 16 is the char code offset from '1' to 'A'. 74 will map to 'Z') + const tag = ([1, 2, 3, 4, 5, 6].map((i) => String.fromCharCode((this.id.charCodeAt(i) || 74) + 16))).join(''); + const name = tag + '+' + this.font.postscriptName; + + const { bbox } = this.font; + const descriptor = this.document.ref({ + Type: 'FontDescriptor', + FontName: name, + Flags: flags, + FontBBox: [bbox.minX * this.scale, bbox.minY * this.scale, bbox.maxX * this.scale, bbox.maxY * this.scale], + ItalicAngle: this.font.italicAngle, + Ascent: this.ascender, + Descent: this.descender, + CapHeight: (this.font.capHeight || this.font.ascent) * this.scale, + XHeight: (this.font.xHeight || 0) * this.scale, + StemV: 0 + }); // not sure how to calculate this + + if (isCFF) { + descriptor.data.FontFile3 = fontFile; + } else { + descriptor.data.FontFile2 = fontFile; + } + + descriptor.end(); + + const descendantFont = this.document.ref({ + Type: 'Font', + Subtype: isCFF ? 'CIDFontType0' : 'CIDFontType2', + BaseFont: name, + CIDSystemInfo: { + Registry: new String('Adobe'), + Ordering: new String('Identity'), + Supplement: 0 + }, + FontDescriptor: descriptor, + W: [0, this.widths]}); + + descendantFont.end(); + + this.dictionary.data = { + Type: 'Font', + Subtype: 'Type0', + BaseFont: name, + Encoding: 'Identity-H', + DescendantFonts: [descendantFont], + ToUnicode: this.toUnicodeCmap() + }; + + return this.dictionary.end(); + } + + // Maps the glyph ids encoded in the PDF back to unicode strings + // Because of ligature substitutions and the like, there may be one or more + // unicode characters represented by each glyph. + toUnicodeCmap() { + const cmap = this.document.ref(); + + const entries = []; + for (let codePoints of this.unicode) { + const encoded = []; + + // encode codePoints to utf16 + for (let value of codePoints) { + if (value > 0xffff) { + value -= 0x10000; + encoded.push(toHex(((value >>> 10) & 0x3ff) | 0xd800)); + value = 0xdc00 | (value & 0x3ff); + } + + encoded.push(toHex(value)); + } + + entries.push(`<${encoded.join(' ')}>`); + } + + cmap.end(`\ +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo << + /Registry (Adobe) + /Ordering (UCS) + /Supplement 0 +>> def +/CMapName /Adobe-Identity-UCS def +/CMapType 2 def +1 begincodespacerange +<0000> +endcodespacerange +1 beginbfrange +<0000> <${toHex(entries.length - 1)}> [${entries.join(' ')}] +endbfrange +endcmap +CMapName currentdict /CMap defineresource pop +end +end\ +` + ); + + return cmap; + } + }; + + +export default EmbeddedFont; diff --git a/lib/font/standard.coffee b/lib/font/standard.coffee deleted file mode 100644 index 5301190d9..000000000 --- a/lib/font/standard.coffee +++ /dev/null @@ -1,65 +0,0 @@ -AFMFont = require './afm' -PDFFont = require '../font' -fs = require 'fs' - -class StandardFont extends PDFFont - constructor: (@document, @name, @id) -> - @font = new AFMFont STANDARD_FONTS[@name]() - {@ascender,@descender,@bbox,@lineGap,@xHeight,@capHeight} = @font - - embed: -> - @dictionary.data = - Type: 'Font' - BaseFont: @name - Subtype: 'Type1' - Encoding: 'WinAnsiEncoding' - - @dictionary.end() - - encode: (text) -> - encoded = @font.encodeText text - glyphs = @font.glyphsForString '' + text - advances = @font.advancesForGlyphs glyphs - positions = [] - for glyph, i in glyphs - positions.push - xAdvance: advances[i] - yAdvance: 0 - xOffset: 0 - yOffset: 0 - advanceWidth: @font.widthOfGlyph glyph - - return [encoded, positions] - - widthOfString: (string, size) -> - glyphs = @font.glyphsForString '' + string - advances = @font.advancesForGlyphs glyphs - - width = 0 - for advance in advances - width += advance - - scale = size / 1000 - return width * scale - - @isStandardFont: (name) -> - return name of STANDARD_FONTS - - # This insanity is so browserify can inline the font files - STANDARD_FONTS = - "Courier": -> fs.readFileSync __dirname + "/../font/data/Courier.afm", 'utf8' - "Courier-Bold": -> fs.readFileSync __dirname + "/../font/data/Courier-Bold.afm", 'utf8' - "Courier-Oblique": -> fs.readFileSync __dirname + "/../font/data/Courier-Oblique.afm", 'utf8' - "Courier-BoldOblique": -> fs.readFileSync __dirname + "/../font/data/Courier-BoldOblique.afm", 'utf8' - "Helvetica": -> fs.readFileSync __dirname + "/../font/data/Helvetica.afm", 'utf8' - "Helvetica-Bold": -> fs.readFileSync __dirname + "/../font/data/Helvetica-Bold.afm", 'utf8' - "Helvetica-Oblique": -> fs.readFileSync __dirname + "/../font/data/Helvetica-Oblique.afm", 'utf8' - "Helvetica-BoldOblique": -> fs.readFileSync __dirname + "/../font/data/Helvetica-BoldOblique.afm", 'utf8' - "Times-Roman": -> fs.readFileSync __dirname + "/../font/data/Times-Roman.afm", 'utf8' - "Times-Bold": -> fs.readFileSync __dirname + "/../font/data/Times-Bold.afm", 'utf8' - "Times-Italic": -> fs.readFileSync __dirname + "/../font/data/Times-Italic.afm", 'utf8' - "Times-BoldItalic": -> fs.readFileSync __dirname + "/../font/data/Times-BoldItalic.afm", 'utf8' - "Symbol": -> fs.readFileSync __dirname + "/../font/data/Symbol.afm", 'utf8' - "ZapfDingbats": -> fs.readFileSync __dirname + "/../font/data/ZapfDingbats.afm", 'utf8' - -module.exports = StandardFont diff --git a/lib/font/standard.js b/lib/font/standard.js new file mode 100644 index 000000000..feaeee4dc --- /dev/null +++ b/lib/font/standard.js @@ -0,0 +1,82 @@ +import AFMFont from './afm'; +import PDFFont from '../font'; +import fs from 'fs'; + +// This insanity is so bundlers can inline the font files +const STANDARD_FONTS = { + "Courier"() { return fs.readFileSync(__dirname + "/font/data/Courier.afm", 'utf8'); }, + "Courier-Bold"() { return fs.readFileSync(__dirname + "/font/data/Courier-Bold.afm", 'utf8'); }, + "Courier-Oblique"() { return fs.readFileSync(__dirname + "/font/data/Courier-Oblique.afm", 'utf8'); }, + "Courier-BoldOblique"() { return fs.readFileSync(__dirname + "/font/data/Courier-BoldOblique.afm", 'utf8'); }, + "Helvetica"() { return fs.readFileSync(__dirname + "/font/data/Helvetica.afm", 'utf8'); }, + "Helvetica-Bold"() { return fs.readFileSync(__dirname + "/font/data/Helvetica-Bold.afm", 'utf8'); }, + "Helvetica-Oblique"() { return fs.readFileSync(__dirname + "/font/data/Helvetica-Oblique.afm", 'utf8'); }, + "Helvetica-BoldOblique"() { return fs.readFileSync(__dirname + "/font/data/Helvetica-BoldOblique.afm", 'utf8'); }, + "Times-Roman"() { return fs.readFileSync(__dirname + "/font/data/Times-Roman.afm", 'utf8'); }, + "Times-Bold"() { return fs.readFileSync(__dirname + "/font/data/Times-Bold.afm", 'utf8'); }, + "Times-Italic"() { return fs.readFileSync(__dirname + "/font/data/Times-Italic.afm", 'utf8'); }, + "Times-BoldItalic"() { return fs.readFileSync(__dirname + "/font/data/Times-BoldItalic.afm", 'utf8'); }, + "Symbol"() { return fs.readFileSync(__dirname + "/font/data/Symbol.afm", 'utf8'); }, + "ZapfDingbats"() { return fs.readFileSync(__dirname + "/font/data/ZapfDingbats.afm", 'utf8'); } +}; + +class StandardFont extends PDFFont { + constructor(document, name, id) { + super(); + this.document = document; + this.name = name; + this.id = id; + this.font = new AFMFont(STANDARD_FONTS[this.name]()); + ({ascender: this.ascender,descender: this.descender,bbox: this.bbox,lineGap: this.lineGap,xHeight: this.xHeight,capHeight: this.capHeight} = this.font); + } + + embed() { + this.dictionary.data = { + Type: 'Font', + BaseFont: this.name, + Subtype: 'Type1', + Encoding: 'WinAnsiEncoding' + }; + + return this.dictionary.end(); + } + + encode(text) { + const encoded = this.font.encodeText(text); + const glyphs = this.font.glyphsForString(`${text}`); + const advances = this.font.advancesForGlyphs(glyphs); + const positions = []; + for (let i = 0; i < glyphs.length; i++) { + const glyph = glyphs[i]; + positions.push({ + xAdvance: advances[i], + yAdvance: 0, + xOffset: 0, + yOffset: 0, + advanceWidth: this.font.widthOfGlyph(glyph) + }); + } + + return [encoded, positions]; + } + + widthOfString(string, size) { + const glyphs = this.font.glyphsForString(`${string}`); + const advances = this.font.advancesForGlyphs(glyphs); + + let width = 0; + for (let advance of advances) { + width += advance; + } + + const scale = size / 1000; + return width * scale; + } + + static isStandardFont(name) { + return name in STANDARD_FONTS; + } +}; + + +export default StandardFont; diff --git a/lib/font_factory.js b/lib/font_factory.js new file mode 100644 index 000000000..913ea13c4 --- /dev/null +++ b/lib/font_factory.js @@ -0,0 +1,34 @@ +import fontkit from 'fontkit'; +import StandardFont from './font/standard'; +import EmbeddedFont from './font/embedded'; + +class PDFFontFactory { + static open(document, src, family, id) { + let font; + if (typeof src === 'string') { + if (StandardFont.isStandardFont(src)) { + return new StandardFont(document, src, id); + } + + font = fontkit.openSync(src, family); + + } else if (Buffer.isBuffer(src)) { + font = fontkit.create(src, family); + + } else if (src instanceof Uint8Array) { + font = fontkit.create(new Buffer(src), family); + + } else if (src instanceof ArrayBuffer) { + font = fontkit.create(new Buffer(new Uint8Array(src)), family); + } + + if ((font == null)) { + throw new Error('Not a supported font format or standard PDF font.'); + } + + return new EmbeddedFont(document, font, id); + } +} + + +export default PDFFontFactory; diff --git a/lib/gradient.coffee b/lib/gradient.coffee deleted file mode 100644 index d2ac8e1a6..000000000 --- a/lib/gradient.coffee +++ /dev/null @@ -1,195 +0,0 @@ -{number} = require './object' - -class PDFGradient - constructor: (@doc) -> - @stops = [] - @embedded = no - @transform = [1, 0, 0, 1, 0, 0] - - stop: (pos, color, opacity = 1) -> - color = @doc._normalizeColor(color) - - if @stops.length is 0 - if color.length is 3 - @_colorSpace = 'DeviceRGB' - else if color.length is 4 - @_colorSpace = 'DeviceCMYK' - else if color.length is 1 - @_colorSpace = 'DeviceGray' - else - throw new Error('Unknown color space') - else if (@_colorSpace is 'DeviceRGB' and color.length isnt 3) or - (@_colorSpace is 'DeviceCMYK' and color.length isnt 4) or - (@_colorSpace is 'DeviceGray' and color.length isnt 1) - throw new Error('All gradient stops must use the same color space') - - opacity = Math.max(0, Math.min(1, opacity)) - @stops.push [pos, color, opacity] - return this - - setTransform: (m11, m12, m21, m22, dx, dy) -> - @transform = [m11, m12, m21, m22, dx, dy] - return this - - embed: (m) -> - return if @stops.length is 0 - @embedded = yes - @matrix = m - - # if the last stop comes before 100%, add a copy at 100% - last = @stops[@stops.length - 1] - if last[0] < 1 - @stops.push [1, last[1], last[2]] - - bounds = [] - encode = [] - stops = [] - - for i in [0...@stops.length - 1] - encode.push 0, 1 - unless i + 2 is @stops.length - bounds.push @stops[i + 1][0] - - fn = @doc.ref - FunctionType: 2 - Domain: [0, 1] - C0: @stops[i + 0][1] - C1: @stops[i + 1][1] - N: 1 - - stops.push fn - fn.end() - - # if there are only two stops, we don't need a stitching function - if stops.length is 1 - fn = stops[0] - else - fn = @doc.ref - FunctionType: 3 # stitching function - Domain: [0, 1] - Functions: stops - Bounds: bounds - Encode: encode - - fn.end() - - @id = 'Sh' + (++@doc._gradCount) - - shader = @shader fn - shader.end() - - pattern = @doc.ref - Type: 'Pattern' - PatternType: 2 - Shading: shader - Matrix: number(v) for v in @matrix - - pattern.end() - - if (@stops.some (stop) -> stop[2] < 1) - grad = @opacityGradient() - grad._colorSpace = 'DeviceGray' - - for stop in @stops - grad.stop stop[0], [stop[2]] - - grad = grad.embed(@matrix) - - pageBBox = [0, 0, @doc.page.width, @doc.page.height] - - form = @doc.ref - Type: 'XObject' - Subtype: 'Form' - FormType: 1 - BBox: pageBBox - Group: - Type: 'Group' - S: 'Transparency' - CS: 'DeviceGray' - Resources: - ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'] - Pattern: - Sh1: grad - - form.write "/Pattern cs /Sh1 scn" - form.end "#{pageBBox.join(" ")} re f" - - gstate = @doc.ref - Type: 'ExtGState' - SMask: - Type: 'Mask' - S: 'Luminosity' - G: form - - gstate.end() - - opacityPattern = @doc.ref - Type: 'Pattern' - PatternType: 1 - PaintType: 1 - TilingType: 2 - BBox: pageBBox - XStep: pageBBox[2] - YStep: pageBBox[3] - Resources: - ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'] - Pattern: - Sh1: pattern - ExtGState: - Gs1: gstate - - opacityPattern.write "/Gs1 gs /Pattern cs /Sh1 scn" - opacityPattern.end "#{pageBBox.join(" ")} re f" - - @doc.page.patterns[@id] = opacityPattern - - else - @doc.page.patterns[@id] = pattern - - return pattern - - apply: (op) -> - # apply gradient transform to existing document ctm - [m0, m1, m2, m3, m4, m5] = @doc._ctm.slice() - [m11, m12, m21, m22, dx, dy] = @transform - m = [m0 * m11 + m2 * m12, - m1 * m11 + m3 * m12, - m0 * m21 + m2 * m22, - m1 * m21 + m3 * m22, - m0 * dx + m2 * dy + m4, - m1 * dx + m3 * dy + m5] - - @embed(m) unless @embedded and m.join(" ") is @matrix.join(" ") - @doc.addContent "/#{@id} #{op}" - -class PDFLinearGradient extends PDFGradient - constructor: (@doc, @x1, @y1, @x2, @y2) -> - super - - shader: (fn) -> - @doc.ref - ShadingType: 2 - ColorSpace: @_colorSpace - Coords: [@x1, @y1, @x2, @y2] - Function: fn - Extend: [true, true] - - opacityGradient: -> - return new PDFLinearGradient(@doc, @x1, @y1, @x2, @y2) - -class PDFRadialGradient extends PDFGradient - constructor: (@doc, @x1, @y1, @r1, @x2, @y2, @r2) -> - super - - shader: (fn) -> - @doc.ref - ShadingType: 3 - ColorSpace: @_colorSpace - Coords: [@x1, @y1, @r1, @x2, @y2, @r2] - Function: fn - Extend: [true, true] - - opacityGradient: -> - return new PDFRadialGradient(@doc, @x1, @y1, @r1, @x2, @y2, @r2) - -module.exports = {PDFGradient, PDFLinearGradient, PDFRadialGradient} diff --git a/lib/gradient.js b/lib/gradient.js new file mode 100644 index 000000000..6f324360a --- /dev/null +++ b/lib/gradient.js @@ -0,0 +1,249 @@ +import PDFObject from './object'; + +const { + number +} = PDFObject; + +class PDFGradient { + constructor(doc) { + this.doc = doc; + this.stops = []; + this.embedded = false; + this.transform = [1, 0, 0, 1, 0, 0]; + } + + stop(pos, color, opacity) { + if (opacity == null) { opacity = 1; } + color = this.doc._normalizeColor(color); + + if (this.stops.length === 0) { + if (color.length === 3) { + this._colorSpace = 'DeviceRGB'; + } else if (color.length === 4) { + this._colorSpace = 'DeviceCMYK'; + } else if (color.length === 1) { + this._colorSpace = 'DeviceGray'; + } else { + throw new Error('Unknown color space'); + } + } else if (((this._colorSpace === 'DeviceRGB') && (color.length !== 3)) || + ((this._colorSpace === 'DeviceCMYK') && (color.length !== 4)) || + ((this._colorSpace === 'DeviceGray') && (color.length !== 1))) { + throw new Error('All gradient stops must use the same color space'); + } + + opacity = Math.max(0, Math.min(1, opacity)); + this.stops.push([pos, color, opacity]); + return this; + } + + setTransform(m11, m12, m21, m22, dx, dy) { + this.transform = [m11, m12, m21, m22, dx, dy]; + return this; + } + + embed(m) { + let asc, i; + let end, fn; + if (this.stops.length === 0) { return; } + this.embedded = true; + this.matrix = m; + + // if the last stop comes before 100%, add a copy at 100% + const last = this.stops[this.stops.length - 1]; + if (last[0] < 1) { + this.stops.push([1, last[1], last[2]]); + } + + const bounds = []; + const encode = []; + const stops = []; + + for (i = 0, end = this.stops.length - 1, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + encode.push(0, 1); + if ((i + 2) !== this.stops.length) { + bounds.push(this.stops[i + 1][0]); + } + + fn = this.doc.ref({ + FunctionType: 2, + Domain: [0, 1], + C0: this.stops[i + 0][1], + C1: this.stops[i + 1][1], + N: 1 + }); + + stops.push(fn); + fn.end(); + } + + // if there are only two stops, we don't need a stitching function + if (stops.length === 1) { + fn = stops[0]; + } else { + fn = this.doc.ref({ + FunctionType: 3, // stitching function + Domain: [0, 1], + Functions: stops, + Bounds: bounds, + Encode: encode + }); + + fn.end(); + } + + this.id = `Sh${++this.doc._gradCount}`; + + const shader = this.shader(fn); + shader.end(); + + const pattern = this.doc.ref({ + Type: 'Pattern', + PatternType: 2, + Shading: shader, + Matrix: (this.matrix.map((v) => number(v))) + }); + + pattern.end(); + + if (this.stops.some(stop => stop[2] < 1)) { + let grad = this.opacityGradient(); + grad._colorSpace = 'DeviceGray'; + + for (let stop of this.stops) { + grad.stop(stop[0], [stop[2]]); + } + + grad = grad.embed(this.matrix); + + const pageBBox = [0, 0, this.doc.page.width, this.doc.page.height]; + + const form = this.doc.ref({ + Type: 'XObject', + Subtype: 'Form', + FormType: 1, + BBox: pageBBox, + Group: { + Type: 'Group', + S: 'Transparency', + CS: 'DeviceGray' + }, + Resources: { + ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'], + Pattern: { + Sh1: grad + } + } + }); + + form.write("/Pattern cs /Sh1 scn"); + form.end(`${pageBBox.join(" ")} re f`); + + const gstate = this.doc.ref({ + Type: 'ExtGState', + SMask: { + Type: 'Mask', + S: 'Luminosity', + G: form + } + }); + + gstate.end(); + + const opacityPattern = this.doc.ref({ + Type: 'Pattern', + PatternType: 1, + PaintType: 1, + TilingType: 2, + BBox: pageBBox, + XStep: pageBBox[2], + YStep: pageBBox[3], + Resources: { + ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'], + Pattern: { + Sh1: pattern + }, + ExtGState: { + Gs1: gstate + } + } + }); + + opacityPattern.write("/Gs1 gs /Pattern cs /Sh1 scn"); + opacityPattern.end(`${pageBBox.join(" ")} re f`); + + this.doc.page.patterns[this.id] = opacityPattern; + + } else { + this.doc.page.patterns[this.id] = pattern; + } + + return pattern; + } + + apply(op) { + // apply gradient transform to existing document ctm + const [m0, m1, m2, m3, m4, m5] = this.doc._ctm; + const [m11, m12, m21, m22, dx, dy] = this.transform; + const m = [(m0 * m11) + (m2 * m12), + (m1 * m11) + (m3 * m12), + (m0 * m21) + (m2 * m22), + (m1 * m21) + (m3 * m22), + (m0 * dx) + (m2 * dy) + m4, + (m1 * dx) + (m3 * dy) + m5]; + + if (!this.embedded || (m.join(" ") !== this.matrix.join(" "))) { this.embed(m); } + return this.doc.addContent(`/${this.id} ${op}`); + } +} + +class PDFLinearGradient extends PDFGradient { + constructor(doc, x1, y1, x2, y2) { + super(doc); + this.x1 = x1; + this.y1 = y1; + this.x2 = x2; + this.y2 = y2; + } + + shader(fn) { + return this.doc.ref({ + ShadingType: 2, + ColorSpace: this._colorSpace, + Coords: [this.x1, this.y1, this.x2, this.y2], + Function: fn, + Extend: [true, true]}); + } + + opacityGradient() { + return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2); + } +} + +class PDFRadialGradient extends PDFGradient { + constructor(doc, x1, y1, r1, x2, y2, r2) { + super(doc); + this.doc = doc; + this.x1 = x1; + this.y1 = y1; + this.r1 = r1; + this.x2 = x2; + this.y2 = y2; + this.r2 = r2; + } + + shader(fn) { + return this.doc.ref({ + ShadingType: 3, + ColorSpace: this._colorSpace, + Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2], + Function: fn, + Extend: [true, true]}); + } + + opacityGradient() { + return new PDFRadialGradient(this.doc, this.x1, this.y1, this.r1, this.x2, this.y2, this.r2); + } +} + +export default {PDFGradient, PDFLinearGradient, PDFRadialGradient}; diff --git a/lib/image.coffee b/lib/image.coffee deleted file mode 100644 index 5078c4ab2..000000000 --- a/lib/image.coffee +++ /dev/null @@ -1,34 +0,0 @@ -### -PDFImage - embeds images in PDF documents -By Devon Govett -### - -fs = require 'fs' -Data = require './data' -JPEG = require './image/jpeg' -PNG = require './image/png' - -class PDFImage - @open: (src, label) -> - if Buffer.isBuffer(src) - data = src - else if src instanceof ArrayBuffer - data = new Buffer(new Uint8Array(src)) - else - if match = /^data:.+;base64,(.*)$/.exec(src) - data = new Buffer(match[1], 'base64') - - else - data = fs.readFileSync src - return unless data - - if data[0] is 0xff and data[1] is 0xd8 - return new JPEG(data, label) - - else if data[0] is 0x89 and data.toString('ascii', 1, 4) is 'PNG' - return new PNG(data, label) - - else - throw new Error 'Unknown image format.' - -module.exports = PDFImage \ No newline at end of file diff --git a/lib/image.js b/lib/image.js new file mode 100644 index 000000000..a3689352b --- /dev/null +++ b/lib/image.js @@ -0,0 +1,40 @@ +/* +PDFImage - embeds images in PDF documents +By Devon Govett +*/ + +import fs from 'fs'; +import JPEG from './image/jpeg'; +import PNG from './image/png'; + +class PDFImage { + static open(src, label) { + let data; + if (Buffer.isBuffer(src)) { + data = src; + } else if (src instanceof ArrayBuffer) { + data = new Buffer(new Uint8Array(src)); + } else { + let match; + if (match = /^data:.+;base64,(.*)$/.exec(src)) { + data = new Buffer(match[1], 'base64'); + + } else { + data = fs.readFileSync(src); + if (!data) { return; } + } + } + + if ((data[0] === 0xff) && (data[1] === 0xd8)) { + return new JPEG(data, label); + + } else if ((data[0] === 0x89) && (data.toString('ascii', 1, 4) === 'PNG')) { + return new PNG(data, label); + + } else { + throw new Error('Unknown image format.'); + } + } +} + +export default PDFImage; \ No newline at end of file diff --git a/lib/image/jpeg.coffee b/lib/image/jpeg.coffee deleted file mode 100644 index c7cebf8c1..000000000 --- a/lib/image/jpeg.coffee +++ /dev/null @@ -1,59 +0,0 @@ -fs = require 'fs' - -class JPEG - MARKERS = [0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC5, 0xFFC6, 0xFFC7, - 0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF] - - constructor: (@data, @label) -> - if @data.readUInt16BE(0) isnt 0xFFD8 - throw "SOI not found in JPEG" - - pos = 2 - while pos < @data.length - marker = @data.readUInt16BE(pos) - pos += 2 - break if marker in MARKERS - pos += @data.readUInt16BE(pos) - - throw "Invalid JPEG." unless marker in MARKERS - pos += 2 - - @bits = @data[pos++] - @height = @data.readUInt16BE(pos) - pos += 2 - - @width = @data.readUInt16BE(pos) - pos += 2 - - channels = @data[pos++] - @colorSpace = switch channels - when 1 then 'DeviceGray' - when 3 then 'DeviceRGB' - when 4 then 'DeviceCMYK' - - @obj = null - - embed: (document) -> - return if @obj - - @obj = document.ref - Type: 'XObject' - Subtype: 'Image' - BitsPerComponent: @bits - Width: @width - Height: @height - ColorSpace: @colorSpace - Filter: 'DCTDecode' - - # add extra decode params for CMYK images. By swapping the - # min and max values from the default, we invert the colors. See - # section 4.8.4 of the spec. - if @colorSpace is 'DeviceCMYK' - @obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0] - - @obj.end @data - - # free memory - @data = null - -module.exports = JPEG diff --git a/lib/image/jpeg.js b/lib/image/jpeg.js new file mode 100644 index 000000000..e7b5be124 --- /dev/null +++ b/lib/image/jpeg.js @@ -0,0 +1,70 @@ +const MARKERS = [0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC5, 0xFFC6, 0xFFC7, + 0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF]; + +const COLOR_SPACE_MAP = { + 1: 'DeviceGray', + 3: 'DeviceRGB', + 4: 'DeviceCMYK' +} + +class JPEG { + constructor(data, label) { + let marker; + this.data = data; + this.label = label; + if (this.data.readUInt16BE(0) !== 0xFFD8) { + throw "SOI not found in JPEG"; + } + + let pos = 2; + while (pos < this.data.length) { + marker = this.data.readUInt16BE(pos); + pos += 2; + if (MARKERS.includes(marker)) { break; } + pos += this.data.readUInt16BE(pos); + } + + if (!MARKERS.includes(marker)) { throw "Invalid JPEG."; } + pos += 2; + + this.bits = this.data[pos++]; + this.height = this.data.readUInt16BE(pos); + pos += 2; + + this.width = this.data.readUInt16BE(pos); + pos += 2; + + const channels = this.data[pos++]; + this.colorSpace = COLOR_SPACE_MAP[channels]; + + this.obj = null; + } + + embed(document) { + if (this.obj) { return; } + + this.obj = document.ref({ + Type: 'XObject', + Subtype: 'Image', + BitsPerComponent: this.bits, + Width: this.width, + Height: this.height, + ColorSpace: this.colorSpace, + Filter: 'DCTDecode' + }); + + // add extra decode params for CMYK images. By swapping the + // min and max values from the default, we invert the colors. See + // section 4.8.4 of the spec. + if (this.colorSpace === 'DeviceCMYK') { + this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]; + } + + this.obj.end(this.data); + + // free memory + return this.data = null; + } +}; + +export default JPEG; diff --git a/lib/image/png.coffee b/lib/image/png.coffee deleted file mode 100644 index 11090ed5d..000000000 --- a/lib/image/png.coffee +++ /dev/null @@ -1,134 +0,0 @@ -zlib = require 'zlib' -PNG = require 'png-js' - -class PNGImage - constructor: (data, @label) -> - @image = new PNG(data) - @width = @image.width - @height = @image.height - @imgData = @image.imgData - @obj = null - - embed: (@document) -> - return if @obj - - @obj = @document.ref - Type: 'XObject' - Subtype: 'Image' - BitsPerComponent: @image.bits - Width: @width - Height: @height - Filter: 'FlateDecode' - - unless @image.hasAlphaChannel - params = @document.ref - Predictor: 15 - Colors: @image.colors - BitsPerComponent: @image.bits - Columns: @width - - @obj.data['DecodeParms'] = params - params.end() - - if @image.palette.length is 0 - @obj.data['ColorSpace'] = @image.colorSpace - else - # embed the color palette in the PDF as an object stream - palette = @document.ref() - palette.end new Buffer @image.palette - - # build the color space array for the image - @obj.data['ColorSpace'] = ['Indexed', 'DeviceRGB', (@image.palette.length / 3) - 1, palette] - - # For PNG color types 0, 2 and 3, the transparency data is stored in - # a dedicated PNG chunk. - if @image.transparency.grayscale - # Use Color Key Masking (spec section 4.8.5) - # An array with N elements, where N is two times the number of color components. - val = @image.transparency.greyscale - @obj.data['Mask'] = [val, val] - - else if @image.transparency.rgb - # Use Color Key Masking (spec section 4.8.5) - # An array with N elements, where N is two times the number of color components. - rgb = @image.transparency.rgb - mask = [] - for x in rgb - mask.push x, x - - @obj.data['Mask'] = mask - - else if @image.transparency.indexed - # Create a transparency SMask for the image based on the data - # in the PLTE and tRNS sections. See below for details on SMasks. - @loadIndexedAlphaChannel() - - else if @image.hasAlphaChannel - # For PNG color types 4 and 6, the transparency data is stored as a alpha - # channel mixed in with the main image data. Separate this data out into an - # SMask object and store it separately in the PDF. - @splitAlphaChannel() - - else - @finalize() - - finalize: -> - if @alphaChannel - sMask = @document.ref - Type: 'XObject' - Subtype: 'Image' - Height: @height - Width: @width - BitsPerComponent: 8 - Filter: 'FlateDecode' - ColorSpace: 'DeviceGray' - Decode: [0, 1] - - sMask.end @alphaChannel - @obj.data['SMask'] = sMask - - # add the actual image data - @obj.end @imgData - - # free memory - @image = null - @imgData = null - - splitAlphaChannel: -> - @image.decodePixels (pixels) => - colorByteSize = @image.colors * @image.bits / 8 - pixelCount = @width * @height - imgData = new Buffer(pixelCount * colorByteSize) - alphaChannel = new Buffer(pixelCount) - - i = p = a = 0 - len = pixels.length - while i < len - imgData[p++] = pixels[i++] - imgData[p++] = pixels[i++] - imgData[p++] = pixels[i++] - alphaChannel[a++] = pixels[i++] - - done = 0 - zlib.deflate imgData, (err, @imgData) => - throw err if err - @finalize() if ++done is 2 - - zlib.deflate alphaChannel, (err, @alphaChannel) => - throw err if err - @finalize() if ++done is 2 - - loadIndexedAlphaChannel: (fn) -> - transparency = @image.transparency.indexed - @image.decodePixels (pixels) => - alphaChannel = new Buffer(@width * @height) - - i = 0 - for j in [0...pixels.length] by 1 - alphaChannel[i++] = transparency[pixels[j]] - - zlib.deflate alphaChannel, (err, @alphaChannel) => - throw err if err - @finalize() - -module.exports = PNGImage diff --git a/lib/image/png.js b/lib/image/png.js new file mode 100644 index 000000000..394767db9 --- /dev/null +++ b/lib/image/png.js @@ -0,0 +1,160 @@ +import zlib from 'zlib'; +import PNG from 'png-js'; + +class PNGImage { + constructor(data, label) { + this.label = label; + this.image = new PNG(data); + this.width = this.image.width; + this.height = this.image.height; + this.imgData = this.image.imgData; + this.obj = null; + } + + embed(document) { + this.document = document; + if (this.obj) { return; } + + this.obj = this.document.ref({ + Type: 'XObject', + Subtype: 'Image', + BitsPerComponent: this.image.bits, + Width: this.width, + Height: this.height, + Filter: 'FlateDecode' + }); + + if (!this.image.hasAlphaChannel) { + const params = this.document.ref({ + Predictor: 15, + Colors: this.image.colors, + BitsPerComponent: this.image.bits, + Columns: this.width + }); + + this.obj.data['DecodeParms'] = params; + params.end(); + } + + if (this.image.palette.length === 0) { + this.obj.data['ColorSpace'] = this.image.colorSpace; + } else { + // embed the color palette in the PDF as an object stream + const palette = this.document.ref(); + palette.end(new Buffer(this.image.palette)); + + // build the color space array for the image + this.obj.data['ColorSpace'] = ['Indexed', 'DeviceRGB', (this.image.palette.length / 3) - 1, palette]; + } + + // For PNG color types 0, 2 and 3, the transparency data is stored in + // a dedicated PNG chunk. + if (this.image.transparency.grayscale) { + // Use Color Key Masking (spec section 4.8.5) + // An array with N elements, where N is two times the number of color components. + const val = this.image.transparency.greyscale; + return this.obj.data['Mask'] = [val, val]; + + } else if (this.image.transparency.rgb) { + // Use Color Key Masking (spec section 4.8.5) + // An array with N elements, where N is two times the number of color components. + const { rgb } = this.image.transparency; + const mask = []; + for (let x of rgb) { + mask.push(x, x); + } + + return this.obj.data['Mask'] = mask; + + } else if (this.image.transparency.indexed) { + // Create a transparency SMask for the image based on the data + // in the PLTE and tRNS sections. See below for details on SMasks. + return this.loadIndexedAlphaChannel(); + + } else if (this.image.hasAlphaChannel) { + // For PNG color types 4 and 6, the transparency data is stored as a alpha + // channel mixed in with the main image data. Separate this data out into an + // SMask object and store it separately in the PDF. + return this.splitAlphaChannel(); + + } else { + return this.finalize(); + } + } + + finalize() { + if (this.alphaChannel) { + const sMask = this.document.ref({ + Type: 'XObject', + Subtype: 'Image', + Height: this.height, + Width: this.width, + BitsPerComponent: 8, + Filter: 'FlateDecode', + ColorSpace: 'DeviceGray', + Decode: [0, 1]}); + + sMask.end(this.alphaChannel); + this.obj.data['SMask'] = sMask; + } + + // add the actual image data + this.obj.end(this.imgData); + + // free memory + this.image = null; + return this.imgData = null; + } + + splitAlphaChannel() { + return this.image.decodePixels(pixels => { + let a, p; + const colorByteSize = (this.image.colors * this.image.bits) / 8; + const pixelCount = this.width * this.height; + const imgData = new Buffer(pixelCount * colorByteSize); + const alphaChannel = new Buffer(pixelCount); + + let i = (p = (a = 0)); + const len = pixels.length; + while (i < len) { + imgData[p++] = pixels[i++]; + imgData[p++] = pixels[i++]; + imgData[p++] = pixels[i++]; + alphaChannel[a++] = pixels[i++]; + } + + let done = 0; + zlib.deflate(imgData, (err, imgData1) => { + this.imgData = imgData1; + if (err) { throw err; } + if (++done === 2) { return this.finalize(); } + }); + + return zlib.deflate(alphaChannel, (err, alphaChannel1) => { + this.alphaChannel = alphaChannel1; + if (err) { throw err; } + if (++done === 2) { return this.finalize(); } + }); + }); + } + + loadIndexedAlphaChannel(fn) { + const transparency = this.image.transparency.indexed; + return this.image.decodePixels(pixels => { + const alphaChannel = new Buffer(this.width * this.height); + + let i = 0; + for (let j = 0, end = pixels.length; j < end; j++) { + alphaChannel[i++] = transparency[pixels[j]]; + } + + return zlib.deflate(alphaChannel, (err, alphaChannel1) => { + this.alphaChannel = alphaChannel1; + if (err) { throw err; } + return this.finalize(); + }); + }); + } +} + +export default PNGImage; diff --git a/lib/line_wrapper.coffee b/lib/line_wrapper.coffee deleted file mode 100644 index 3c2084425..000000000 --- a/lib/line_wrapper.coffee +++ /dev/null @@ -1,250 +0,0 @@ -{EventEmitter} = require 'events' -LineBreaker = require 'linebreak' - -class LineWrapper extends EventEmitter - constructor: (@document, options) -> - @indent = options.indent or 0 - @characterSpacing = options.characterSpacing or 0 - @wordSpacing = options.wordSpacing is 0 - @columns = options.columns or 1 - @columnGap = options.columnGap ? 18 # 1/4 inch - @lineWidth = (options.width - (@columnGap * (@columns - 1))) / @columns - @spaceLeft = @lineWidth - @startX = @document.x - @startY = @document.y - @column = 1 - @ellipsis = options.ellipsis - @continuedX = 0 - @features = options.features - - # calculate the maximum Y position the text can appear at - if options.height? - @height = options.height - @maxY = @startY + options.height - else - @maxY = @document.page.maxY() - - # handle paragraph indents - @on 'firstLine', (options) => - # if this is the first line of the text segment, and - # we're continuing where we left off, indent that much - # otherwise use the user specified indent option - indent = @continuedX or @indent - @document.x += indent - @lineWidth -= indent - - @once 'line', => - @document.x -= indent - @lineWidth += indent - if options.continued and not @continuedX - @continuedX = @indent - @continuedX = 0 unless options.continued - - # handle left aligning last lines of paragraphs - @on 'lastLine', (options) => - align = options.align - options.align = 'left' if align is 'justify' - @lastLine = true - - @once 'line', => - @document.y += options.paragraphGap or 0 - options.align = align - @lastLine = false - - wordWidth: (word) -> - return @document.widthOfString(word, this) + @characterSpacing + @wordSpacing - - eachWord: (text, fn) -> - # setup a unicode line breaker - breaker = new LineBreaker(text) - last = null - wordWidths = Object.create(null) - - while bk = breaker.nextBreak() - word = text.slice(last?.position or 0, bk.position) - w = wordWidths[word] ?= @wordWidth word - - # if the word is longer than the whole line, chop it up - # TODO: break by grapheme clusters, not JS string characters - if w > @lineWidth + @continuedX - # make some fake break objects - lbk = last - fbk = {} - - while word.length - # fit as much of the word as possible into the space we have - if w > @spaceLeft - # start our check at the end of our available space - this method is faster than a loop of each character and it resolves - # an issue with long loops when processing massive words, such as a huge number of spaces - l = Math.ceil(@spaceLeft / (w / word.length)) - w = @wordWidth word.slice(0, l) - mightGrow = w <= @spaceLeft and l < word.length - else - l = word.length - mustShrink = w > @spaceLeft and l > 0 - # shrink or grow word as necessary after our near-guess above - while mustShrink or mightGrow - if mustShrink - w = @wordWidth word.slice(0, --l) - mustShrink = w > @spaceLeft and l > 0 - else - w = @wordWidth word.slice(0, ++l) - mustShrink = w > @spaceLeft and l > 0 - mightGrow = w <= @spaceLeft and l < word.length - - # send a required break unless this is the last piece and a linebreak is not specified - fbk.required = bk.required or l < word.length - shouldContinue = fn word.slice(0, l), w, fbk, lbk - lbk = required: false - - # get the remaining piece of the word - word = word.slice(l) - w = @wordWidth word - - break if shouldContinue is no - else - # otherwise just emit the break as it was given to us - shouldContinue = fn word, w, bk, last - - break if shouldContinue is no - last = bk - - return - - wrap: (text, options) -> - # override options from previous continued fragments - @indent = options.indent if options.indent? - @characterSpacing = options.characterSpacing if options.characterSpacing? - @wordSpacing = options.wordSpacing if options.wordSpacing? - @ellipsis = options.ellipsis if options.ellipsis? - - # make sure we're actually on the page - # and that the first line of is never by - # itself at the bottom of a page (orphans) - nextY = @document.y + @document.currentLineHeight(true) - if @document.y > @maxY or nextY > @maxY - @nextSection() - - buffer = '' - textWidth = 0 - wc = 0 - lc = 0 - - y = @document.y # used to reset Y pos if options.continued (below) - emitLine = => - options.textWidth = textWidth + @wordSpacing * (wc - 1) - options.wordCount = wc - options.lineWidth = @lineWidth - y = @document.y - @emit 'line', buffer, options, this - lc++ - - @emit 'sectionStart', options, this - - @eachWord text, (word, w, bk, last) => - if not last? or last.required - @emit 'firstLine', options, this - @spaceLeft = @lineWidth - - if w <= @spaceLeft - buffer += word - textWidth += w - wc++ - - if bk.required or w > @spaceLeft - # if the user specified a max height and an ellipsis, and is about to pass the - # max height and max columns after the next line, append the ellipsis - lh = @document.currentLineHeight(true) - if @height? and @ellipsis and @document.y + lh * 2 > @maxY and @column >= @columns - @ellipsis = '…' if @ellipsis is true # map default ellipsis character - buffer = buffer.replace(/\s+$/, '') - textWidth = @wordWidth buffer + @ellipsis - - # remove characters from the buffer until the ellipsis fits - # to avoid inifinite loop need to stop while-loop if buffer is empty string - while buffer and textWidth > @lineWidth - buffer = buffer.slice(0, -1).replace(/\s+$/, '') - textWidth = @wordWidth buffer + @ellipsis - # need to add ellipsis only if there is enough space for it - if textWidth <= @lineWidth - buffer = buffer + @ellipsis - - textWidth = @wordWidth buffer - - if bk.required - if w > @spaceLeft - emitLine() - buffer = word - textWidth = w - wc = 1 - - @emit 'lastLine', options, this - - emitLine() - - # if we've reached the edge of the page, - # continue on a new page or column - if @document.y + lh > @maxY - shouldContinue = @nextSection() - - # stop if we reached the maximum height - unless shouldContinue - wc = 0 - buffer = '' - return no - - # reset the space left and buffer - if bk.required - @spaceLeft = @lineWidth - buffer = '' - textWidth = 0 - wc = 0 - else - # reset the space left and buffer - @spaceLeft = @lineWidth - w - buffer = word - textWidth = w - wc = 1 - else - @spaceLeft -= w - - if wc > 0 - @emit 'lastLine', options, this - emitLine() - - @emit 'sectionEnd', options, this - - # if the wrap is set to be continued, save the X position - # to start the first line of the next segment at, and reset - # the y position - if options.continued is yes - @continuedX = 0 if lc > 1 - @continuedX += options.textWidth or 0 - @document.y = y - else - @document.x = @startX - - nextSection: (options) -> - @emit 'sectionEnd', options, this - - if ++@column > @columns - # if a max height was specified by the user, we're done. - # otherwise, the default is to make a new page at the bottom. - return false if @height? - - @document.addPage() - @column = 1 - @startY = @document.page.margins.top - @maxY = @document.page.maxY() - @document.x = @startX - @document.fillColor @document._fillColor... if @document._fillColor - @emit 'pageBreak', options, this - else - @document.x += @lineWidth + @columnGap - @document.y = @startY - @emit 'columnBreak', options, this - - @emit 'sectionStart', options, this - return true - -module.exports = LineWrapper diff --git a/lib/line_wrapper.js b/lib/line_wrapper.js new file mode 100644 index 000000000..615a530a0 --- /dev/null +++ b/lib/line_wrapper.js @@ -0,0 +1,289 @@ +import { EventEmitter } from 'events'; +import LineBreaker from 'linebreak'; + +class LineWrapper extends EventEmitter { + constructor(document, options) { + super(); + this.document = document; + this.indent = options.indent || 0; + this.characterSpacing = options.characterSpacing || 0; + this.wordSpacing = options.wordSpacing === 0; + this.columns = options.columns || 1; + this.columnGap = options.columnGap != null ? options.columnGap : 18; // 1/4 inch + this.lineWidth = (options.width - (this.columnGap * (this.columns - 1))) / this.columns; + this.spaceLeft = this.lineWidth; + this.startX = this.document.x; + this.startY = this.document.y; + this.column = 1; + this.ellipsis = options.ellipsis; + this.continuedX = 0; + this.features = options.features; + + // calculate the maximum Y position the text can appear at + if (options.height != null) { + this.height = options.height; + this.maxY = this.startY + options.height; + } else { + this.maxY = this.document.page.maxY(); + } + + // handle paragraph indents + this.on('firstLine', options => { + // if this is the first line of the text segment, and + // we're continuing where we left off, indent that much + // otherwise use the user specified indent option + const indent = this.continuedX || this.indent; + this.document.x += indent; + this.lineWidth -= indent; + + return this.once('line', () => { + this.document.x -= indent; + this.lineWidth += indent; + if (options.continued && !this.continuedX) { + this.continuedX = this.indent; + } + if (!options.continued) { return this.continuedX = 0; } + }); + }); + + // handle left aligning last lines of paragraphs + this.on('lastLine', options => { + const { align } = options; + if (align === 'justify') { options.align = 'left'; } + this.lastLine = true; + + return this.once('line', () => { + this.document.y += options.paragraphGap || 0; + options.align = align; + return this.lastLine = false; + }); + }); + } + + wordWidth(word) { + return this.document.widthOfString(word, this) + this.characterSpacing + this.wordSpacing; + } + + eachWord(text, fn) { + // setup a unicode line breaker + let bk; + const breaker = new LineBreaker(text); + let last = null; + const wordWidths = Object.create(null); + + while ((bk = breaker.nextBreak())) { + var shouldContinue; + let word = text.slice((last != null ? last.position : undefined) || 0, bk.position); + let w = wordWidths[word] != null ? wordWidths[word] : (wordWidths[word] = this.wordWidth(word)); + + // if the word is longer than the whole line, chop it up + // TODO: break by grapheme clusters, not JS string characters + if (w > (this.lineWidth + this.continuedX)) { + // make some fake break objects + let lbk = last; + const fbk = {}; + + while (word.length) { + // fit as much of the word as possible into the space we have + var l, mightGrow; + if (w > this.spaceLeft) { + // start our check at the end of our available space - this method is faster than a loop of each character and it resolves + // an issue with long loops when processing massive words, such as a huge number of spaces + l = Math.ceil(this.spaceLeft / (w / word.length)); + w = this.wordWidth(word.slice(0, l)); + mightGrow = (w <= this.spaceLeft) && (l < word.length); + } else { + l = word.length; + } + let mustShrink = (w > this.spaceLeft) && (l > 0); + // shrink or grow word as necessary after our near-guess above + while (mustShrink || mightGrow) { + if (mustShrink) { + w = this.wordWidth(word.slice(0, --l)); + mustShrink = (w > this.spaceLeft) && (l > 0); + } else { + w = this.wordWidth(word.slice(0, ++l)); + mustShrink = (w > this.spaceLeft) && (l > 0); + mightGrow = (w <= this.spaceLeft) && (l < word.length); + } + } + + // send a required break unless this is the last piece and a linebreak is not specified + fbk.required = bk.required || (l < word.length); + shouldContinue = fn(word.slice(0, l), w, fbk, lbk); + lbk = {required: false}; + + // get the remaining piece of the word + word = word.slice(l); + w = this.wordWidth(word); + + if (shouldContinue === false) { break; } + } + } else { + // otherwise just emit the break as it was given to us + shouldContinue = fn(word, w, bk, last); + } + + if (shouldContinue === false) { break; } + last = bk; + } + + } + + wrap(text, options) { + // override options from previous continued fragments + if (options.indent != null) { this.indent = options.indent; } + if (options.characterSpacing != null) { this.characterSpacing = options.characterSpacing; } + if (options.wordSpacing != null) { this.wordSpacing = options.wordSpacing; } + if (options.ellipsis != null) { this.ellipsis = options.ellipsis; } + + // make sure we're actually on the page + // and that the first line of is never by + // itself at the bottom of a page (orphans) + const nextY = this.document.y + this.document.currentLineHeight(true); + if ((this.document.y > this.maxY) || (nextY > this.maxY)) { + this.nextSection(); + } + + let buffer = ''; + let textWidth = 0; + let wc = 0; + let lc = 0; + + let { y } = this.document; // used to reset Y pos if options.continued (below) + const emitLine = () => { + options.textWidth = textWidth + (this.wordSpacing * (wc - 1)); + options.wordCount = wc; + options.lineWidth = this.lineWidth; + ({ y } = this.document); + this.emit('line', buffer, options, this); + return lc++; + }; + + this.emit('sectionStart', options, this); + + this.eachWord(text, (word, w, bk, last) => { + if ((last == null) || last.required) { + this.emit('firstLine', options, this); + this.spaceLeft = this.lineWidth; + } + + if (w <= this.spaceLeft) { + buffer += word; + textWidth += w; + wc++; + } + + if (bk.required || (w > this.spaceLeft)) { + // if the user specified a max height and an ellipsis, and is about to pass the + // max height and max columns after the next line, append the ellipsis + const lh = this.document.currentLineHeight(true); + if ((this.height != null) && this.ellipsis && ((this.document.y + (lh * 2)) > this.maxY) && (this.column >= this.columns)) { + if (this.ellipsis === true) { this.ellipsis = '…'; } // map default ellipsis character + buffer = buffer.replace(/\s+$/, ''); + textWidth = this.wordWidth(buffer + this.ellipsis); + + // remove characters from the buffer until the ellipsis fits + // to avoid inifinite loop need to stop while-loop if buffer is empty string + while (buffer && (textWidth > this.lineWidth)) { + buffer = buffer.slice(0, -1).replace(/\s+$/, ''); + textWidth = this.wordWidth(buffer + this.ellipsis); + } + // need to add ellipsis only if there is enough space for it + if (textWidth <= this.lineWidth) { + buffer = buffer + this.ellipsis; + } + + textWidth = this.wordWidth(buffer); + } + + if (bk.required) { + if (w > this.spaceLeft) { + emitLine(); + buffer = word; + textWidth = w; + wc = 1; + } + + this.emit('lastLine', options, this); + } + + emitLine(); + + // if we've reached the edge of the page, + // continue on a new page or column + if ((this.document.y + lh) > this.maxY) { + const shouldContinue = this.nextSection(); + + // stop if we reached the maximum height + if (!shouldContinue) { + wc = 0; + buffer = ''; + return false; + } + } + + // reset the space left and buffer + if (bk.required) { + this.spaceLeft = this.lineWidth; + buffer = ''; + textWidth = 0; + return wc = 0; + } else { + // reset the space left and buffer + this.spaceLeft = this.lineWidth - w; + buffer = word; + textWidth = w; + return wc = 1; + } + } else { + return this.spaceLeft -= w; + } + }); + + if (wc > 0) { + this.emit('lastLine', options, this); + emitLine(); + } + + this.emit('sectionEnd', options, this); + + // if the wrap is set to be continued, save the X position + // to start the first line of the next segment at, and reset + // the y position + if (options.continued === true) { + if (lc > 1) { this.continuedX = 0; } + this.continuedX += options.textWidth || 0; + return this.document.y = y; + } else { + return this.document.x = this.startX; + } + } + + nextSection(options) { + this.emit('sectionEnd', options, this); + + if (++this.column > this.columns) { + // if a max height was specified by the user, we're done. + // otherwise, the default is to make a new page at the bottom. + if (this.height != null) { return false; } + + this.document.addPage(); + this.column = 1; + this.startY = this.document.page.margins.top; + this.maxY = this.document.page.maxY(); + this.document.x = this.startX; + if (this.document._fillColor) { this.document.fillColor(...(this.document._fillColor || [])); } + this.emit('pageBreak', options, this); + } else { + this.document.x += this.lineWidth + this.columnGap; + this.document.y = this.startY; + this.emit('columnBreak', options, this); + } + + this.emit('sectionStart', options, this); + return true; + } +} + +export default LineWrapper; diff --git a/lib/mixins/annotations.coffee b/lib/mixins/annotations.coffee deleted file mode 100644 index f5306075d..000000000 --- a/lib/mixins/annotations.coffee +++ /dev/null @@ -1,107 +0,0 @@ -module.exports = - annotate: (x, y, w, h, options) -> - options.Type = 'Annot' - options.Rect = @_convertRect x, y, w, h - options.Border = [0, 0, 0] - options.C ?= @_normalizeColor(options.color or [0, 0, 0]) unless options.Subtype is 'Link' # convert colors - delete options.color - - if typeof options.Dest is 'string' - options.Dest = new String options.Dest - - # Capitalize keys - for key, val of options - options[key[0].toUpperCase() + key.slice(1)] = val - - ref = @ref options - @page.annotations.push ref - ref.end() - return this - - note: (x, y, w, h, contents, options = {}) -> - options.Subtype = 'Text' - options.Contents = new String contents - options.Name = 'Comment' - options.color ?= [243, 223, 92] - @annotate x, y, w, h, options - - link: (x, y, w, h, url, options = {}) -> - options.Subtype = 'Link' - - if typeof url is 'number' - # Link to a page in the document (the page must already exist) - pages = @_root.data.Pages.data - if url >= 0 and url < pages.Kids.length - options.A = @ref - S: 'GoTo' - D: [pages.Kids[url], 'XYZ', null, null, null] - options.A.end() - else - throw new Error "The document has no page #{url}" - - else - # Link to an external url - options.A = @ref - S: 'URI' - URI: new String url - options.A.end() - - @annotate x, y, w, h, options - - _markup: (x, y, w, h, options = {}) -> - [x1, y1, x2, y2] = @_convertRect x, y, w, h - options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1] - options.Contents = new String - @annotate x, y, w, h, options - - highlight: (x, y, w, h, options = {}) -> - options.Subtype = 'Highlight' - options.color ?= [241, 238, 148] - @_markup x, y, w, h, options - - underline: (x, y, w, h, options = {}) -> - options.Subtype = 'Underline' - @_markup x, y, w, h, options - - strike: (x, y, w, h, options = {}) -> - options.Subtype = 'StrikeOut' - @_markup x, y, w, h, options - - lineAnnotation: (x1, y1, x2, y2, options = {}) -> - options.Subtype = 'Line' - options.Contents = new String - options.L = [x1, @page.height - y1, x2, @page.height - y2] - @annotate x1, y1, x2, y2, options - - rectAnnotation: (x, y, w, h, options = {}) -> - options.Subtype = 'Square' - options.Contents = new String - @annotate x, y, w, h, options - - ellipseAnnotation: (x, y, w, h, options = {}) -> - options.Subtype = 'Circle' - options.Contents = new String - @annotate x, y, w, h, options - - textAnnotation: (x, y, w, h, text, options = {}) -> - options.Subtype = 'FreeText' - options.Contents = new String text - options.DA = new String - @annotate x, y, w, h, options - - _convertRect: (x1, y1, w, h) -> - # flip y1 and y2 - y2 = y1 - y1 += h - - # make x2 - x2 = x1 + w - - # apply current transformation matrix to points - [m0, m1, m2, m3, m4, m5] = @_ctm - x1 = m0 * x1 + m2 * y1 + m4 - y1 = m1 * x1 + m3 * y1 + m5 - x2 = m0 * x2 + m2 * y2 + m4 - y2 = m1 * x2 + m3 * y2 + m5 - - return [x1, y1, x2, y2] diff --git a/lib/mixins/annotations.js b/lib/mixins/annotations.js new file mode 100644 index 000000000..ddc933f21 --- /dev/null +++ b/lib/mixins/annotations.js @@ -0,0 +1,136 @@ +export default { + annotate(x, y, w, h, options) { + options.Type = 'Annot'; + options.Rect = this._convertRect(x, y, w, h); + options.Border = [0, 0, 0]; + if (options.Subtype !== 'Link') { if (options.C == null) { options.C = this._normalizeColor(options.color || [0, 0, 0]); } } // convert colors + delete options.color; + + if (typeof options.Dest === 'string') { + options.Dest = new String(options.Dest); + } + + // Capitalize keys + for (let key in options) { + const val = options[key]; + options[key[0].toUpperCase() + key.slice(1)] = val; + } + + const ref = this.ref(options); + this.page.annotations.push(ref); + ref.end(); + return this; + }, + + note(x, y, w, h, contents, options) { + if (options == null) { options = {}; } + options.Subtype = 'Text'; + options.Contents = new String(contents); + options.Name = 'Comment'; + if (options.color == null) { options.color = [243, 223, 92]; } + return this.annotate(x, y, w, h, options); + }, + + link(x, y, w, h, url, options) { + if (options == null) { options = {}; } + options.Subtype = 'Link'; + + if (typeof url === 'number') { + // Link to a page in the document (the page must already exist) + const pages = this._root.data.Pages.data; + if ((url >= 0) && (url < pages.Kids.length)) { + options.A = this.ref({ + S: 'GoTo', + D: [pages.Kids[url], 'XYZ', null, null, null]}); + options.A.end(); + } else { + throw new Error(`The document has no page ${url}`); + } + + } else { + // Link to an external url + options.A = this.ref({ + S: 'URI', + URI: new String(url) + }); + options.A.end(); + } + + return this.annotate(x, y, w, h, options); + }, + + _markup(x, y, w, h, options) { + if (options == null) { options = {}; } + const [x1, y1, x2, y2] = this._convertRect(x, y, w, h); + options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1]; + options.Contents = new String; + return this.annotate(x, y, w, h, options); + }, + + highlight(x, y, w, h, options) { + if (options == null) { options = {}; } + options.Subtype = 'Highlight'; + if (options.color == null) { options.color = [241, 238, 148]; } + return this._markup(x, y, w, h, options); + }, + + underline(x, y, w, h, options) { + if (options == null) { options = {}; } + options.Subtype = 'Underline'; + return this._markup(x, y, w, h, options); + }, + + strike(x, y, w, h, options) { + if (options == null) { options = {}; } + options.Subtype = 'StrikeOut'; + return this._markup(x, y, w, h, options); + }, + + lineAnnotation(x1, y1, x2, y2, options) { + if (options == null) { options = {}; } + options.Subtype = 'Line'; + options.Contents = new String; + options.L = [x1, this.page.height - y1, x2, this.page.height - y2]; + return this.annotate(x1, y1, x2, y2, options); + }, + + rectAnnotation(x, y, w, h, options) { + if (options == null) { options = {}; } + options.Subtype = 'Square'; + options.Contents = new String; + return this.annotate(x, y, w, h, options); + }, + + ellipseAnnotation(x, y, w, h, options) { + if (options == null) { options = {}; } + options.Subtype = 'Circle'; + options.Contents = new String; + return this.annotate(x, y, w, h, options); + }, + + textAnnotation(x, y, w, h, text, options) { + if (options == null) { options = {}; } + options.Subtype = 'FreeText'; + options.Contents = new String(text); + options.DA = new String; + return this.annotate(x, y, w, h, options); + }, + + _convertRect(x1, y1, w, h) { + // flip y1 and y2 + let y2 = y1; + y1 += h; + + // make x2 + let x2 = x1 + w; + + // apply current transformation matrix to points + const [m0, m1, m2, m3, m4, m5] = this._ctm; + x1 = (m0 * x1) + (m2 * y1) + m4; + y1 = (m1 * x1) + (m3 * y1) + m5; + x2 = (m0 * x2) + (m2 * y2) + m4; + y2 = (m1 * x2) + (m3 * y2) + m5; + + return [x1, y1, x2, y2]; + } +}; diff --git a/lib/mixins/color.coffee b/lib/mixins/color.coffee deleted file mode 100644 index 32dc21d70..000000000 --- a/lib/mixins/color.coffee +++ /dev/null @@ -1,262 +0,0 @@ -{PDFGradient, PDFLinearGradient, PDFRadialGradient} = require '../gradient' - -module.exports = - initColor: -> - # The opacity dictionaries - @_opacityRegistry = {} - @_opacityCount = 0 - @_gradCount = 0 - - _normalizeColor: (color) -> - if color instanceof PDFGradient - return color - - if typeof color is 'string' - if color.charAt(0) is '#' - color = color.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i, "#$1$1$2$2$3$3") if color.length is 4 - hex = parseInt(color.slice(1), 16) - color = [hex >> 16, hex >> 8 & 0xff, hex & 0xff] - - else if namedColors[color] - color = namedColors[color] - - if Array.isArray color - # RGB - if color.length is 3 - color = (part / 255 for part in color) - - # CMYK - else if color.length is 4 - color = (part / 100 for part in color) - - return color - - return null - - _setColor: (color, stroke) -> - color = @_normalizeColor color - return no unless color - - op = if stroke then 'SCN' else 'scn' - - if color instanceof PDFGradient - @_setColorSpace 'Pattern', stroke - color.apply(op) - else - space = if color.length is 4 then 'DeviceCMYK' else 'DeviceRGB' - @_setColorSpace space, stroke - - color = color.join ' ' - @addContent "#{color} #{op}" - - return yes - - _setColorSpace: (space, stroke) -> - op = if stroke then 'CS' else 'cs' - @addContent "/#{space} #{op}" - - fillColor: (color, opacity) -> - set = @_setColor color, no - @fillOpacity opacity if set - - # save this for text wrapper, which needs to reset - # the fill color on new pages - @_fillColor = [color, opacity] - return this - - strokeColor: (color, opacity) -> - set = @_setColor color, yes - @strokeOpacity opacity if set - return this - - opacity: (opacity) -> - @_doOpacity opacity, opacity - return this - - fillOpacity: (opacity) -> - @_doOpacity opacity, null - return this - - strokeOpacity: (opacity) -> - @_doOpacity null, opacity - return this - - _doOpacity: (fillOpacity, strokeOpacity) -> - return unless fillOpacity? or strokeOpacity? - - fillOpacity = Math.max 0, Math.min 1, fillOpacity if fillOpacity? - strokeOpacity = Math.max 0, Math.min 1, strokeOpacity if strokeOpacity? - key = "#{fillOpacity}_#{strokeOpacity}" - - if @_opacityRegistry[key] - [dictionary, name] = @_opacityRegistry[key] - else - dictionary = - Type: 'ExtGState' - - dictionary.ca = fillOpacity if fillOpacity? - dictionary.CA = strokeOpacity if strokeOpacity? - - dictionary = @ref dictionary - dictionary.end() - id = ++@_opacityCount - name = "Gs#{id}" - @_opacityRegistry[key] = [dictionary, name] - - @page.ext_gstates[name] = dictionary - @addContent "/#{name} gs" - - linearGradient: (x1, y1, x2, y2) -> - return new PDFLinearGradient(this, x1, y1, x2, y2) - - radialGradient: (x1, y1, r1, x2, y2, r2) -> - return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2) - -namedColors = - aliceblue: [240, 248, 255] - antiquewhite: [250, 235, 215] - aqua: [0, 255, 255] - aquamarine: [127, 255, 212] - azure: [240, 255, 255] - beige: [245, 245, 220] - bisque: [255, 228, 196] - black: [0, 0, 0] - blanchedalmond: [255, 235, 205] - blue: [0, 0, 255] - blueviolet: [138, 43, 226] - brown: [165, 42, 42] - burlywood: [222, 184, 135] - cadetblue: [95, 158, 160] - chartreuse: [127, 255, 0] - chocolate: [210, 105, 30] - coral: [255, 127, 80] - cornflowerblue: [100, 149, 237] - cornsilk: [255, 248, 220] - crimson: [220, 20, 60] - cyan: [0, 255, 255] - darkblue: [0, 0, 139] - darkcyan: [0, 139, 139] - darkgoldenrod: [184, 134, 11] - darkgray: [169, 169, 169] - darkgreen: [0, 100, 0] - darkgrey: [169, 169, 169] - darkkhaki: [189, 183, 107] - darkmagenta: [139, 0, 139] - darkolivegreen: [85, 107, 47] - darkorange: [255, 140, 0] - darkorchid: [153, 50, 204] - darkred: [139, 0, 0] - darksalmon: [233, 150, 122] - darkseagreen: [143, 188, 143] - darkslateblue: [72, 61, 139] - darkslategray: [47, 79, 79] - darkslategrey: [47, 79, 79] - darkturquoise: [0, 206, 209] - darkviolet: [148, 0, 211] - deeppink: [255, 20, 147] - deepskyblue: [0, 191, 255] - dimgray: [105, 105, 105] - dimgrey: [105, 105, 105] - dodgerblue: [30, 144, 255] - firebrick: [178, 34, 34] - floralwhite: [255, 250, 240] - forestgreen: [34, 139, 34] - fuchsia: [255, 0, 255] - gainsboro: [220, 220, 220] - ghostwhite: [248, 248, 255] - gold: [255, 215, 0] - goldenrod: [218, 165, 32] - gray: [128, 128, 128] - grey: [128, 128, 128] - green: [0, 128, 0] - greenyellow: [173, 255, 47] - honeydew: [240, 255, 240] - hotpink: [255, 105, 180] - indianred: [205, 92, 92] - indigo: [75, 0, 130] - ivory: [255, 255, 240] - khaki: [240, 230, 140] - lavender: [230, 230, 250] - lavenderblush: [255, 240, 245] - lawngreen: [124, 252, 0] - lemonchiffon: [255, 250, 205] - lightblue: [173, 216, 230] - lightcoral: [240, 128, 128] - lightcyan: [224, 255, 255] - lightgoldenrodyellow: [250, 250, 210] - lightgray: [211, 211, 211] - lightgreen: [144, 238, 144] - lightgrey: [211, 211, 211] - lightpink: [255, 182, 193] - lightsalmon: [255, 160, 122] - lightseagreen: [32, 178, 170] - lightskyblue: [135, 206, 250] - lightslategray: [119, 136, 153] - lightslategrey: [119, 136, 153] - lightsteelblue: [176, 196, 222] - lightyellow: [255, 255, 224] - lime: [0, 255, 0] - limegreen: [50, 205, 50] - linen: [250, 240, 230] - magenta: [255, 0, 255] - maroon: [128, 0, 0] - mediumaquamarine: [102, 205, 170] - mediumblue: [0, 0, 205] - mediumorchid: [186, 85, 211] - mediumpurple: [147, 112, 219] - mediumseagreen: [60, 179, 113] - mediumslateblue: [123, 104, 238] - mediumspringgreen: [0, 250, 154] - mediumturquoise: [72, 209, 204] - mediumvioletred: [199, 21, 133] - midnightblue: [25, 25, 112] - mintcream: [245, 255, 250] - mistyrose: [255, 228, 225] - moccasin: [255, 228, 181] - navajowhite: [255, 222, 173] - navy: [0, 0, 128] - oldlace: [253, 245, 230] - olive: [128, 128, 0] - olivedrab: [107, 142, 35] - orange: [255, 165, 0] - orangered: [255, 69, 0] - orchid: [218, 112, 214] - palegoldenrod: [238, 232, 170] - palegreen: [152, 251, 152] - paleturquoise: [175, 238, 238] - palevioletred: [219, 112, 147] - papayawhip: [255, 239, 213] - peachpuff: [255, 218, 185] - peru: [205, 133, 63] - pink: [255, 192, 203] - plum: [221, 160, 221] - powderblue: [176, 224, 230] - purple: [128, 0, 128] - red: [255, 0, 0] - rosybrown: [188, 143, 143] - royalblue: [65, 105, 225] - saddlebrown: [139, 69, 19] - salmon: [250, 128, 114] - sandybrown: [244, 164, 96] - seagreen: [46, 139, 87] - seashell: [255, 245, 238] - sienna: [160, 82, 45] - silver: [192, 192, 192] - skyblue: [135, 206, 235] - slateblue: [106, 90, 205] - slategray: [112, 128, 144] - slategrey: [112, 128, 144] - snow: [255, 250, 250] - springgreen: [0, 255, 127] - steelblue: [70, 130, 180] - tan: [210, 180, 140] - teal: [0, 128, 128] - thistle: [216, 191, 216] - tomato: [255, 99, 71] - turquoise: [64, 224, 208] - violet: [238, 130, 238] - wheat: [245, 222, 179] - white: [255, 255, 255] - whitesmoke: [245, 245, 245] - yellow: [255, 255, 0] - yellowgreen: [154, 205, 50] diff --git a/lib/mixins/color.js b/lib/mixins/color.js new file mode 100644 index 000000000..0894b2c15 --- /dev/null +++ b/lib/mixins/color.js @@ -0,0 +1,288 @@ +import Gradient from '../gradient'; + +const { + PDFGradient, + PDFLinearGradient, + PDFRadialGradient +} = Gradient; + +export default { + initColor() { + // The opacity dictionaries + this._opacityRegistry = {}; + this._opacityCount = 0; + return this._gradCount = 0; + }, + + _normalizeColor(color) { + if (color instanceof PDFGradient) { + return color; + } + + if (typeof color === 'string') { + if (color.charAt(0) === '#') { + if (color.length === 4) { color = color.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i, "#$1$1$2$2$3$3"); } + const hex = parseInt(color.slice(1), 16); + color = [hex >> 16, (hex >> 8) & 0xff, hex & 0xff]; + + } else if (namedColors[color]) { + color = namedColors[color]; + } + } + + if (Array.isArray(color)) { + // RGB + if (color.length === 3) { + color = color.map(part => part / 255); + // CMYK + } else if (color.length === 4) { + color = color.map(part => part / 100); + } + return color; + } + + return null; + }, + + _setColor(color, stroke) { + color = this._normalizeColor(color); + if (!color) { return false; } + + const op = stroke ? 'SCN' : 'scn'; + + if (color instanceof PDFGradient) { + this._setColorSpace('Pattern', stroke); + color.apply(op); + } else { + const space = color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB'; + this._setColorSpace(space, stroke); + + color = color.join(' '); + this.addContent(`${color} ${op}`); + } + + return true; + }, + + _setColorSpace(space, stroke) { + const op = stroke ? 'CS' : 'cs'; + return this.addContent(`/${space} ${op}`); + }, + + fillColor(color, opacity) { + const set = this._setColor(color, false); + if (set) { this.fillOpacity(opacity); } + + // save this for text wrapper, which needs to reset + // the fill color on new pages + this._fillColor = [color, opacity]; + return this; + }, + + strokeColor(color, opacity) { + const set = this._setColor(color, true); + if (set) { this.strokeOpacity(opacity); } + return this; + }, + + opacity(opacity) { + this._doOpacity(opacity, opacity); + return this; + }, + + fillOpacity(opacity) { + this._doOpacity(opacity, null); + return this; + }, + + strokeOpacity(opacity) { + this._doOpacity(null, opacity); + return this; + }, + + _doOpacity(fillOpacity, strokeOpacity) { + let dictionary, name; + if ((fillOpacity == null) && (strokeOpacity == null)) { return; } + + if (fillOpacity != null) { fillOpacity = Math.max(0, Math.min(1, fillOpacity)); } + if (strokeOpacity != null) { strokeOpacity = Math.max(0, Math.min(1, strokeOpacity)); } + const key = `${fillOpacity}_${strokeOpacity}`; + + if (this._opacityRegistry[key]) { + [dictionary, name] = this._opacityRegistry[key]; + } else { + dictionary = + {Type: 'ExtGState'}; + + if (fillOpacity != null) { dictionary.ca = fillOpacity; } + if (strokeOpacity != null) { dictionary.CA = strokeOpacity; } + + dictionary = this.ref(dictionary); + dictionary.end(); + const id = ++this._opacityCount; + name = `Gs${id}`; + this._opacityRegistry[key] = [dictionary, name]; + } + + this.page.ext_gstates[name] = dictionary; + return this.addContent(`/${name} gs`); + }, + + linearGradient(x1, y1, x2, y2) { + return new PDFLinearGradient(this, x1, y1, x2, y2); + }, + + radialGradient(x1, y1, r1, x2, y2, r2) { + return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2); + } +}; + +var namedColors = { + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgreen: [0, 100, 0], + darkgrey: [169, 169, 169], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + grey: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgreen: [144, 238, 144], + lightgrey: [211, 211, 211], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50] +}; diff --git a/lib/mixins/fonts.coffee b/lib/mixins/fonts.coffee deleted file mode 100644 index 5492cf35e..000000000 --- a/lib/mixins/fonts.coffee +++ /dev/null @@ -1,68 +0,0 @@ -PDFFont = require '../font' - -module.exports = - initFonts: -> - # Lookup table for embedded fonts - @_fontFamilies = {} - @_fontCount = 0 - - # Font state - @_fontSize = 12 - @_font = null - - @_registeredFonts = {} - - # Set the default font - @font 'Helvetica' - - font: (src, family, size) -> - if typeof family is 'number' - size = family - family = null - - # check registered fonts if src is a string - if typeof src is 'string' and @_registeredFonts[src] - cacheKey = src - {src, family} = @_registeredFonts[src] - else - cacheKey = family or src - cacheKey = null unless typeof cacheKey is 'string' - - @fontSize size if size? - - # fast path: check if the font is already in the PDF - if font = @_fontFamilies[cacheKey] - @_font = font - return this - - # load the font - id = 'F' + (++@_fontCount) - @_font = PDFFont.open(this, src, family, id) - - # check for existing font familes with the same name already in the PDF - # useful if the font was passed as a buffer - if font = @_fontFamilies[@_font.name] - @_font = font - return this - - # save the font for reuse later - if cacheKey - @_fontFamilies[cacheKey] = @_font - - if @_font.name - @_fontFamilies[@_font.name] = @_font - - return this - - fontSize: (@_fontSize) -> - return this - - currentLineHeight: (includeGap = false) -> - @_font.lineHeight @_fontSize, includeGap - - registerFont: (name, src, family) -> - @_registeredFonts[name] = - src: src - family: family - - return this diff --git a/lib/mixins/fonts.js b/lib/mixins/fonts.js new file mode 100644 index 000000000..cf94a8c3d --- /dev/null +++ b/lib/mixins/fonts.js @@ -0,0 +1,84 @@ +import PDFFontFactory from '../font_factory'; + +export default { + initFonts() { + // Lookup table for embedded fonts + this._fontFamilies = {}; + this._fontCount = 0; + + // Font state + this._fontSize = 12; + this._font = null; + + this._registeredFonts = {}; + + // Set the default font + return this.font('Helvetica'); + }, + + font(src, family, size) { + let cacheKey, font; + if (typeof family === 'number') { + size = family; + family = null; + } + + // check registered fonts if src is a string + if ((typeof src === 'string') && this._registeredFonts[src]) { + cacheKey = src; + ({src, family} = this._registeredFonts[src]); + } else { + cacheKey = family || src; + if (typeof cacheKey !== 'string') { cacheKey = null; } + } + + if (size != null) { this.fontSize(size); } + + // fast path: check if the font is already in the PDF + if (font = this._fontFamilies[cacheKey]) { + this._font = font; + return this; + } + + // load the font + const id = `F${++this._fontCount}`; + this._font = PDFFontFactory.open(this, src, family, id); + + // check for existing font familes with the same name already in the PDF + // useful if the font was passed as a buffer + if (font = this._fontFamilies[this._font.name]) { + this._font = font; + return this; + } + + // save the font for reuse later + if (cacheKey) { + this._fontFamilies[cacheKey] = this._font; + } + + if (this._font.name) { + this._fontFamilies[this._font.name] = this._font; + } + + return this; + }, + + fontSize(_fontSize) { + this._fontSize = _fontSize; + return this; + }, + + currentLineHeight(includeGap) { + if (includeGap == null) { includeGap = false; } + return this._font.lineHeight(this._fontSize, includeGap); + }, + + registerFont(name, src, family) { + this._registeredFonts[name] = { + src, + family + }; + + return this; + } +}; diff --git a/lib/mixins/images.coffee b/lib/mixins/images.coffee deleted file mode 100644 index e532194f8..000000000 --- a/lib/mixins/images.coffee +++ /dev/null @@ -1,99 +0,0 @@ -PDFImage = require '../image' - -module.exports = - initImages: -> - @_imageRegistry = {} - @_imageCount = 0 - - image: (src, x, y, options = {}) -> - if typeof x is 'object' - options = x - x = null - - x = x ? options.x ? @x - y = y ? options.y ? @y - - if typeof src is 'string' - image = @_imageRegistry[src] - - if not image - if src.width and src.height - image = src - else - image = @openImage src - - unless image.obj - image.embed this - - @page.xobjects[image.label] ?= image.obj - - w = options.width or image.width - h = options.height or image.height - - if options.width and not options.height - wp = w / image.width - w = image.width * wp - h = image.height * wp - - else if options.height and not options.width - hp = h / image.height - w = image.width * hp - h = image.height * hp - - else if options.scale - w = image.width * options.scale - h = image.height * options.scale - - else if options.fit - [bw, bh] = options.fit - bp = bw / bh - ip = image.width / image.height - if ip > bp - w = bw - h = bw / ip - else - h = bh - w = bh * ip - - else if options.cover - [bw, bh] = options.cover - bp = bw / bh - ip = image.width / image.height - if ip > bp - h = bh - w = bh * ip - else - w = bw - h = bw / ip - - if options.fit or options.cover - if options.align is 'center' - x = x + bw / 2 - w / 2 - else if options.align is 'right' - x = x + bw - w - - if options.valign is 'center' - y = y + bh / 2 - h / 2 - else if options.valign is 'bottom' - y = y + bh - h - - # Set the current y position to below the image if it is in the document flow - @y += h if @y is y - - @save() - @transform w, 0, 0, -h, x, y + h - @addContent "/#{image.label} Do" - @restore() - - return this - - openImage: (src) -> - if typeof src is 'string' - image = @_imageRegistry[src] - - if not image - image = PDFImage.open src, 'I' + (++@_imageCount) - if typeof src is 'string' - @_imageRegistry[src] = image - - return image diff --git a/lib/mixins/images.js b/lib/mixins/images.js new file mode 100644 index 000000000..420c39f77 --- /dev/null +++ b/lib/mixins/images.js @@ -0,0 +1,120 @@ +import PDFImage from '../image'; + +export default { + initImages() { + this._imageRegistry = {}; + return this._imageCount = 0; + }, + + image(src, x, y, options) { + let bh, bp, bw, image, ip, left, left1; + if (options == null) { options = {}; } + if (typeof x === 'object') { + options = x; + x = null; + } + + x = (left = x != null ? x : options.x) != null ? left : this.x; + y = (left1 = y != null ? y : options.y) != null ? left1 : this.y; + + if (typeof src === 'string') { + image = this._imageRegistry[src]; + } + + if (!image) { + if (src.width && src.height) { + image = src; + } else { + image = this.openImage(src); + } + } + + if (!image.obj) { + image.embed(this); + } + + if (this.page.xobjects[image.label] == null) { this.page.xobjects[image.label] = image.obj; } + + let w = options.width || image.width; + let h = options.height || image.height; + + if (options.width && !options.height) { + const wp = w / image.width; + w = image.width * wp; + h = image.height * wp; + + } else if (options.height && !options.width) { + const hp = h / image.height; + w = image.width * hp; + h = image.height * hp; + + } else if (options.scale) { + w = image.width * options.scale; + h = image.height * options.scale; + + } else if (options.fit) { + [bw, bh] = options.fit; + bp = bw / bh; + ip = image.width / image.height; + if (ip > bp) { + w = bw; + h = bw / ip; + } else { + h = bh; + w = bh * ip; + } + + } else if (options.cover) { + [bw, bh] = options.cover; + bp = bw / bh; + ip = image.width / image.height; + if (ip > bp) { + h = bh; + w = bh * ip; + } else { + w = bw; + h = bw / ip; + } + } + + if (options.fit || options.cover) { + if (options.align === 'center') { + x = (x + (bw / 2)) - (w / 2); + } else if (options.align === 'right') { + x = (x + bw) - w; + } + + if (options.valign === 'center') { + y = (y + (bh / 2)) - (h / 2); + } else if (options.valign === 'bottom') { + y = (y + bh) - h; + } + } + + // Set the current y position to below the image if it is in the document flow + if (this.y === y) { this.y += h; } + + this.save(); + this.transform(w, 0, 0, -h, x, y + h); + this.addContent(`/${image.label} Do`); + this.restore(); + + return this; + }, + + openImage(src) { + let image; + if (typeof src === 'string') { + image = this._imageRegistry[src]; + } + + if (!image) { + image = PDFImage.open(src, `I${++this._imageCount}`); + if (typeof src === 'string') { + this._imageRegistry[src] = image; + } + } + + return image; + } +}; diff --git a/lib/mixins/outline.coffee b/lib/mixins/outline.coffee deleted file mode 100644 index c3c83f55f..000000000 --- a/lib/mixins/outline.coffee +++ /dev/null @@ -1,11 +0,0 @@ -PDFOutline = require '../outline' - -module.exports = - initOutline: () -> - @outline = new PDFOutline(this, null, null, null) - - endOutline: () -> - @outline.endOutline() - if @outline.children.length > 0 - @_root.data.Outlines = @outline.dictionary - @_root.data.PageMode = 'UseOutlines' diff --git a/lib/mixins/outline.js b/lib/mixins/outline.js new file mode 100644 index 000000000..89dd67267 --- /dev/null +++ b/lib/mixins/outline.js @@ -0,0 +1,15 @@ +import PDFOutline from '../outline'; + +export default { + initOutline() { + return this.outline = new PDFOutline(this, null, null, null); + }, + + endOutline() { + this.outline.endOutline(); + if (this.outline.children.length > 0) { + this._root.data.Outlines = this.outline.dictionary; + return this._root.data.PageMode = 'UseOutlines'; + } + } +}; diff --git a/lib/mixins/text.coffee b/lib/mixins/text.coffee deleted file mode 100644 index 7d564bb5c..000000000 --- a/lib/mixins/text.coffee +++ /dev/null @@ -1,370 +0,0 @@ -LineWrapper = require '../line_wrapper' -{number} = require '../object' - -module.exports = - initText: -> - # Current coordinates - @x = 0 - @y = 0 - @_lineGap = 0 - - lineGap: (@_lineGap) -> - return this - - moveDown: (lines = 1) -> - @y += @currentLineHeight(true) * lines + @_lineGap - return this - - moveUp: (lines = 1) -> - @y -= @currentLineHeight(true) * lines + @_lineGap - return this - - _text: (text, x, y, options, lineCallback) -> - options = @_initOptions(x, y, options) - - # Convert text to a string - text = if not text? then '' else '' + text - - # if the wordSpacing option is specified, remove multiple consecutive spaces - if options.wordSpacing - text = text.replace(/\s{2,}/g, ' ') - - # word wrapping - if options.width - wrapper = @_wrapper - unless wrapper - wrapper = new LineWrapper(this, options) - wrapper.on 'line', lineCallback - - @_wrapper = if options.continued then wrapper else null - @_textOptions = if options.continued then options else null - wrapper.wrap text, options - - # render paragraphs as single lines - else - lineCallback line, options for line in text.split '\n' - - return this - - text: (text, x, y, options) -> - @_text text, x, y, options, @_line.bind(this) - - widthOfString: (string, options = {}) -> - @_font.widthOfString(string, @_fontSize, options.features) + (options.characterSpacing or 0) * (string.length - 1) - - heightOfString: (text, options = {}) -> - {x,y} = this - - options = @_initOptions(options) - options.height = Infinity # don't break pages - - lineGap = options.lineGap or @_lineGap or 0 - @_text text, @x, @y, options, (line, options) => - @y += @currentLineHeight(true) + lineGap - - height = @y - y - @x = x - @y = y - - return height - - list: (list, x, y, options, wrapper) -> - options = @_initOptions(x, y, options) - - listType = options.listType or 'bullet' - unit = Math.round (@_font.ascender / 1000 * @_fontSize) - midLine = unit / 2 - r = options.bulletRadius or unit / 3 - indent = options.textIndent or if listType is 'bullet' then r * 5 else unit * 2 - itemIndent = options.bulletIndent or if listType is 'bullet' then r * 8 else unit * 2 - - level = 1 - items = [] - levels = [] - numbers = [] - - flatten = (list) -> - n = 1 - for item, i in list - if Array.isArray(item) - level++ - flatten(item) - level-- - else - items.push(item) - levels.push(level) - numbers.push(n++) unless listType is 'bullet' - - flatten(list) - - label = (n) -> - switch listType - when 'numbered' - "#{n}." - when 'lettered' - letter = String.fromCharCode (n - 1) % 26 + 65 - times = Math.floor (n - 1) / 26 + 1 - text = Array(times + 1).join(letter) - "#{text}." - - wrapper = new LineWrapper(this, options) - wrapper.on 'line', @_line.bind(this) - - level = 1 - i = 0 - wrapper.on 'firstLine', => - if (l = levels[i++]) isnt level - diff = itemIndent * (l - level) - @x += diff - wrapper.lineWidth -= diff - level = l - - switch listType - when 'bullet' - @circle @x - indent + r, @y + midLine, r - @fill() - when 'numbered', 'lettered' - text = label numbers[i - 1] - @_fragment text, @x - indent, @y, options - - wrapper.on 'sectionStart', => - pos = indent + itemIndent * (level - 1) - @x += pos - wrapper.lineWidth -= pos - - wrapper.on 'sectionEnd', => - pos = indent + itemIndent * (level - 1) - @x -= pos - wrapper.lineWidth += pos - - wrapper.wrap items.join('\n'), options - - return this - - _initOptions: (x = {}, y, options = {}) -> - if typeof x is 'object' - options = x - x = null - - # clone options object - options = do -> - opts = {} - opts[k] = v for k, v of options - return opts - - # extend options with previous values for continued text - if @_textOptions - for key, val of @_textOptions when key isnt 'continued' - options[key] ?= val - - # Update the current position - if x? - @x = x - if y? - @y = y - - # wrap to margins if no x or y position passed - unless options.lineBreak is false - options.width ?= @page.width - @x - @page.margins.right - - options.columns ||= 0 - options.columnGap ?= 18 # 1/4 inch - - return options - - _line: (text, options = {}, wrapper) -> - @_fragment text, @x, @y, options - lineGap = options.lineGap or @_lineGap or 0 - - if not wrapper - @x += @widthOfString text - else - @y += @currentLineHeight(true) + lineGap - - _fragment: (text, x, y, options) -> - text = ('' + text).replace(/\n/g, '') - return if text.length is 0 - - # handle options - align = options.align or 'left' - wordSpacing = options.wordSpacing or 0 - characterSpacing = options.characterSpacing or 0 - - # text alignments - if options.width - switch align - when 'right' - textWidth = @widthOfString text.replace(/\s+$/, ''), options - x += options.lineWidth - textWidth - - when 'center' - x += options.lineWidth / 2 - options.textWidth / 2 - - when 'justify' - # calculate the word spacing value - words = text.trim().split(/\s+/) - textWidth = @widthOfString(text.replace(/\s+/g, ''), options) - spaceWidth = @widthOfString(' ') + characterSpacing - wordSpacing = Math.max 0, (options.lineWidth - textWidth) / Math.max(1, words.length - 1) - spaceWidth - - # text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling - if typeof options.baseline is 'number' - dy = -options.baseline - else - switch options.baseline - when 'svg-middle' - dy = 0.5 * @_font.xHeight - when 'middle', 'svg-central' - dy = 0.5 * (@_font.descender + @_font.ascender) - when 'bottom', 'ideographic' - dy = @_font.descender - when 'alphabetic' - dy = 0; - when 'mathematical' - dy = 0.5 * @_font.ascender - when 'hanging' - dy = 0.8 * @_font.ascender - when 'top' - dy = @_font.ascender - else - dy = @_font.ascender - dy = dy / 1000 * @_fontSize - - # calculate the actual rendered width of the string after word and character spacing - renderedWidth = options.textWidth + (wordSpacing * (options.wordCount - 1)) + (characterSpacing * (text.length - 1)) - - # create link annotations if the link option is given - if options.link? - @link x, y, renderedWidth, @currentLineHeight(), options.link - - # create underline or strikethrough line - if options.underline or options.strike - @save() - @strokeColor @_fillColor... unless options.stroke - - lineWidth = if @_fontSize < 10 then 0.5 else Math.floor(@_fontSize / 10) - @lineWidth lineWidth - - d = if options.underline then 1 else 2 - lineY = y + @currentLineHeight() / d - lineY -= lineWidth if options.underline - - @moveTo x, lineY - @lineTo x + renderedWidth, lineY - @stroke() - @restore() - - @save() - - # oblique (angle in degrees or boolean) - if options.oblique - if typeof options.oblique is 'number' - skew = -Math.tan(options.oblique * Math.PI / 180) - else - skew = -0.25 - @transform 1, 0, 0, 1, x, y - @transform 1, 0, skew, 1, -skew * dy, 0 - @transform 1, 0, 0, 1, -x, -y - - # flip coordinate system - @transform 1, 0, 0, -1, 0, @page.height - y = @page.height - y - dy - - # add current font to page if necessary - @page.fonts[@_font.id] ?= @_font.ref() - - # begin the text object - @addContent "BT" - - # text position - @addContent "1 0 0 1 #{number(x)} #{number(y)} Tm" - - # font and font size - @addContent "/#{@_font.id} #{number(@_fontSize)} Tf" - - # rendering mode - mode = if options.fill and options.stroke then 2 else if options.stroke then 1 else 0 - @addContent "#{mode} Tr" if mode - - # Character spacing - @addContent "#{number(characterSpacing)} Tc" if characterSpacing - - # Add the actual text - # If we have a word spacing value, we need to encode each word separately - # since the normal Tw operator only works on character code 32, which isn't - # used for embedded fonts. - if wordSpacing - words = text.trim().split(/\s+/) - wordSpacing += @widthOfString(' ') + characterSpacing - wordSpacing *= 1000 / @_fontSize - - encoded = [] - positions = [] - for word in words - [encodedWord, positionsWord] = @_font.encode(word, options.features) - encoded.push encodedWord... - positions.push positionsWord... - - # add the word spacing to the end of the word - # clone object because of cache - space = {} - space[key] = val for key, val of positions[positions.length - 1] - space.xAdvance += wordSpacing - positions[positions.length - 1] = space - else - [encoded, positions] = @_font.encode(text, options.features) - - scale = @_fontSize / 1000 - commands = [] - last = 0 - hadOffset = no - - # Adds a segment of text to the TJ command buffer - addSegment = (cur) => - if last < cur - hex = encoded.slice(last, cur).join '' - advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth - commands.push "<#{hex}> #{number(-advance)}" - - last = cur - - # Flushes the current TJ commands to the output stream - flush = (i) => - addSegment i - - if commands.length > 0 - @addContent "[#{commands.join ' '}] TJ" - commands.length = 0 - - for pos, i in positions - # If we have an x or y offset, we have to break out of the current TJ command - # so we can move the text position. - if pos.xOffset or pos.yOffset - # Flush the current buffer - flush i - - # Move the text position and flush just the current character - @addContent "1 0 0 1 #{number(x + pos.xOffset * scale)} #{number(y + pos.yOffset * scale)} Tm" - flush i + 1 - - hadOffset = yes - else - # If the last character had an offset, reset the text position - if hadOffset - @addContent "1 0 0 1 #{number(x)} #{number(y)} Tm" - hadOffset = no - - # Group segments that don't have any advance adjustments - unless pos.xAdvance - pos.advanceWidth is 0 - addSegment i + 1 - - x += pos.xAdvance * scale - - # Flush any remaining commands - flush i - - # end the text object - @addContent "ET" - - # restore flipped coordinate system - @restore() diff --git a/lib/mixins/text.js b/lib/mixins/text.js new file mode 100644 index 000000000..d6cc17a33 --- /dev/null +++ b/lib/mixins/text.js @@ -0,0 +1,457 @@ +import LineWrapper from '../line_wrapper'; +import PDFObject from '../object'; + +const { + number +} = PDFObject; + +export default { + initText() { + this._line = this._line.bind(this); + // Current coordinates + this.x = 0; + this.y = 0; + return this._lineGap = 0; + }, + + lineGap(_lineGap) { + this._lineGap = _lineGap; + return this; + }, + + moveDown(lines) { + if (lines == null) { lines = 1; } + this.y += (this.currentLineHeight(true) * lines) + this._lineGap; + return this; + }, + + moveUp(lines) { + if (lines == null) { lines = 1; } + this.y -= (this.currentLineHeight(true) * lines) + this._lineGap; + return this; + }, + + _text(text, x, y, options, lineCallback) { + options = this._initOptions(x, y, options); + + // Convert text to a string + text = (text == null) ? '' : `${text}`; + + // if the wordSpacing option is specified, remove multiple consecutive spaces + if (options.wordSpacing) { + text = text.replace(/\s{2,}/g, ' '); + } + + // word wrapping + if (options.width) { + let wrapper = this._wrapper; + if (!wrapper) { + wrapper = new LineWrapper(this, options); + wrapper.on('line', lineCallback); + } + + this._wrapper = options.continued ? wrapper : null; + this._textOptions = options.continued ? options : null; + wrapper.wrap(text, options); + + // render paragraphs as single lines + } else { + for (let line of text.split('\n')) { lineCallback(line, options); } + } + + return this; + }, + + text(text, x, y, options) { + return this._text(text, x, y, options, this._line); + }, + + widthOfString(string, options) { + if (options == null) { options = {}; } + return this._font.widthOfString(string, this._fontSize, options.features) + ((options.characterSpacing || 0) * (string.length - 1)); + }, + + heightOfString(text, options) { + if (options == null) { options = {}; } + const {x,y} = this; + + options = this._initOptions(options); + options.height = Infinity; // don't break pages + + const lineGap = options.lineGap || this._lineGap || 0; + this._text(text, this.x, this.y, options, (line, options) => { + return this.y += this.currentLineHeight(true) + lineGap; + }); + + const height = this.y - y; + this.x = x; + this.y = y; + + return height; + }, + + list(list, x, y, options, wrapper) { + options = this._initOptions(x, y, options); + + const listType = options.listType || 'bullet'; + const unit = Math.round(((this._font.ascender / 1000) * this._fontSize)); + const midLine = unit / 2; + const r = options.bulletRadius || (unit / 3); + const indent = options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2); + const itemIndent = options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2); + + let level = 1; + const items = []; + const levels = []; + const numbers = []; + + var flatten = function(list) { + let n = 1; + for (let i = 0; i < list.length; i++) { + const item = list[i]; + if (Array.isArray(item)) { + level++; + flatten(item); + level--; + } else { + items.push(item); + levels.push(level); + if (listType !== 'bullet') { + numbers.push(n++); + } + } + } + }; + + flatten(list); + + const label = function(n) { + switch (listType) { + case 'numbered': + return `${n}.`; + case 'lettered': + var letter = String.fromCharCode(((n - 1) % 26) + 65); + var times = Math.floor(((n - 1) / 26) + 1); + var text = Array(times + 1).join(letter); + return `${text}.`; + } + }; + + wrapper = new LineWrapper(this, options); + wrapper.on('line', this._line); + + level = 1; + let i = 0; + wrapper.on('firstLine', () => { + let l; + if ((l = levels[i++]) !== level) { + const diff = itemIndent * (l - level); + this.x += diff; + wrapper.lineWidth -= diff; + level = l; + } + + switch (listType) { + case 'bullet': + this.circle((this.x - indent) + r, this.y + midLine, r); + return this.fill(); + case 'numbered': case 'lettered': + var text = label(numbers[i - 1]); + return this._fragment(text, this.x - indent, this.y, options); + } + }); + + wrapper.on('sectionStart', () => { + const pos = indent + (itemIndent * (level - 1)); + this.x += pos; + return wrapper.lineWidth -= pos; + }); + + wrapper.on('sectionEnd', () => { + const pos = indent + (itemIndent * (level - 1)); + this.x -= pos; + return wrapper.lineWidth += pos; + }); + + wrapper.wrap(items.join('\n'), options); + + return this; + }, + + _initOptions(x, y, options) { + if (x == null) { x = {}; } + if (options == null) { options = {}; } + if (typeof x === 'object') { + options = x; + x = null; + } + + // clone options object + options = (function() { + const opts = {}; + for (let k in options) { const v = options[k]; opts[k] = v; } + return opts; + })(); + + // extend options with previous values for continued text + if (this._textOptions) { + for (let key in this._textOptions) { + const val = this._textOptions[key]; + if (key !== 'continued') { + if (options[key] == null) { options[key] = val; } + } + } + } + + // Update the current position + if (x != null) { + this.x = x; + } + if (y != null) { + this.y = y; + } + + // wrap to margins if no x or y position passed + if (options.lineBreak !== false) { + if (options.width == null) { options.width = this.page.width - this.x - this.page.margins.right; } + } + + if (!options.columns) { options.columns = 0; } + if (options.columnGap == null) { options.columnGap = 18; } // 1/4 inch + + return options; + }, + + _line(text, options, wrapper) { + if (options == null) { options = {}; } + this._fragment(text, this.x, this.y, options); + const lineGap = options.lineGap || this._lineGap || 0; + + if (!wrapper) { + return this.x += this.widthOfString(text); + } else { + return this.y += this.currentLineHeight(true) + lineGap; + } + }, + + _fragment(text, x, y, options) { + let dy, encoded, i, positions, textWidth, words; + text = (`${text}`).replace(/\n/g, ''); + if (text.length === 0) { return; } + + // handle options + const align = options.align || 'left'; + let wordSpacing = options.wordSpacing || 0; + const characterSpacing = options.characterSpacing || 0; + + // text alignments + if (options.width) { + switch (align) { + case 'right': + textWidth = this.widthOfString(text.replace(/\s+$/, ''), options); + x += options.lineWidth - textWidth; + break; + + case 'center': + x += (options.lineWidth / 2) - (options.textWidth / 2); + break; + + case 'justify': + // calculate the word spacing value + words = text.trim().split(/\s+/); + textWidth = this.widthOfString(text.replace(/\s+/g, ''), options); + var spaceWidth = this.widthOfString(' ') + characterSpacing; + wordSpacing = Math.max(0, ((options.lineWidth - textWidth) / Math.max(1, words.length - 1)) - spaceWidth); + break; + } + } + + // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling + if (typeof options.baseline === 'number') { + dy = -options.baseline; + } else { + switch (options.baseline) { + case 'svg-middle': + dy = 0.5 * this._font.xHeight; + break; + case 'middle': case 'svg-central': + dy = 0.5 * (this._font.descender + this._font.ascender); + break; + case 'bottom': case 'ideographic': + dy = this._font.descender; + break; + case 'alphabetic': + dy = 0; + break; + case 'mathematical': + dy = 0.5 * this._font.ascender; + break; + case 'hanging': + dy = 0.8 * this._font.ascender; + break; + case 'top': + dy = this._font.ascender; + break; + default: + dy = this._font.ascender; + } + dy = (dy / 1000) * this._fontSize; + } + + // calculate the actual rendered width of the string after word and character spacing + const renderedWidth = options.textWidth + (wordSpacing * (options.wordCount - 1)) + (characterSpacing * (text.length - 1)); + + // create link annotations if the link option is given + if (options.link != null) { + this.link(x, y, renderedWidth, this.currentLineHeight(), options.link); + } + + // create underline or strikethrough line + if (options.underline || options.strike) { + this.save(); + if (!options.stroke) { this.strokeColor(...(this._fillColor || [])); } + + const lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10); + this.lineWidth(lineWidth); + + const d = options.underline ? 1 : 2; + let lineY = y + (this.currentLineHeight() / d); + if (options.underline) { lineY -= lineWidth; } + + this.moveTo(x, lineY); + this.lineTo(x + renderedWidth, lineY); + this.stroke(); + this.restore(); + } + + this.save(); + + // oblique (angle in degrees or boolean) + if (options.oblique) { + let skew; + if (typeof options.oblique === 'number') { + skew = -Math.tan((options.oblique * Math.PI) / 180); + } else { + skew = -0.25; + } + this.transform(1, 0, 0, 1, x, y); + this.transform(1, 0, skew, 1, -skew * dy, 0); + this.transform(1, 0, 0, 1, -x, -y); + } + + // flip coordinate system + this.transform(1, 0, 0, -1, 0, this.page.height); + y = this.page.height - y - dy; + + // add current font to page if necessary + if (this.page.fonts[this._font.id] == null) { this.page.fonts[this._font.id] = this._font.ref(); } + + // begin the text object + this.addContent("BT"); + + // text position + this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`); + + // font and font size + this.addContent(`/${this._font.id} ${number(this._fontSize)} Tf`); + + // rendering mode + const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0; + if (mode) { this.addContent(`${mode} Tr`); } + + // Character spacing + if (characterSpacing) { this.addContent(`${number(characterSpacing)} Tc`); } + + // Add the actual text + // If we have a word spacing value, we need to encode each word separately + // since the normal Tw operator only works on character code 32, which isn't + // used for embedded fonts. + if (wordSpacing) { + words = text.trim().split(/\s+/); + wordSpacing += this.widthOfString(' ') + characterSpacing; + wordSpacing *= 1000 / this._fontSize; + + encoded = []; + positions = []; + for (let word of words) { + const [encodedWord, positionsWord] = this._font.encode(word, options.features); + encoded.push(...(encodedWord || [])); + positions.push(...(positionsWord || [])); + + // add the word spacing to the end of the word + // clone object because of cache + const space = {}; + const object = positions[positions.length - 1]; + for (let key in object) { const val = object[key]; space[key] = val; } + space.xAdvance += wordSpacing; + positions[positions.length - 1] = space; + } + } else { + [encoded, positions] = this._font.encode(text, options.features); + } + + const scale = this._fontSize / 1000; + const commands = []; + let last = 0; + let hadOffset = false; + + // Adds a segment of text to the TJ command buffer + const addSegment = cur => { + if (last < cur) { + const hex = encoded.slice(last, cur).join(''); + const advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth; + commands.push(`<${hex}> ${number(-advance)}`); + } + + return last = cur; + }; + + // Flushes the current TJ commands to the output stream + const flush = i => { + addSegment(i); + + if (commands.length > 0) { + this.addContent(`[${commands.join(' ')}] TJ`); + return commands.length = 0; + } + }; + + for (i = 0; i < positions.length; i++) { + // If we have an x or y offset, we have to break out of the current TJ command + // so we can move the text position. + const pos = positions[i]; + if (pos.xOffset || pos.yOffset) { + // Flush the current buffer + flush(i); + + // Move the text position and flush just the current character + this.addContent(`1 0 0 1 ${number(x + (pos.xOffset * scale))} ${number(y + (pos.yOffset * scale))} Tm`); + flush(i + 1); + + hadOffset = true; + } else { + // If the last character had an offset, reset the text position + if (hadOffset) { + this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`); + hadOffset = false; + } + + // Group segments that don't have any advance adjustments + if ((pos.xAdvance - pos.advanceWidth) !== 0) { + addSegment(i + 1); + } + } + + x += pos.xAdvance * scale; + } + + // Flush any remaining commands + flush(i); + + // end the text object + this.addContent("ET"); + + // restore flipped coordinate system + return this.restore(); + } +}; diff --git a/lib/mixins/vector.coffee b/lib/mixins/vector.coffee deleted file mode 100644 index e478a589c..000000000 --- a/lib/mixins/vector.coffee +++ /dev/null @@ -1,260 +0,0 @@ -SVGPath = require '../path' -{number} = require '../object' - -# This constant is used to approximate a symmetrical arc using a cubic -# Bezier curve. -KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0) -module.exports = - initVector: -> - @_ctm = [1, 0, 0, 1, 0, 0] # current transformation matrix - @_ctmStack = [] - - save: -> - @_ctmStack.push @_ctm.slice() - # TODO: save/restore colorspace and styles so not setting it unnessesarily all the time? - @addContent 'q' - - restore: -> - @_ctm = @_ctmStack.pop() or [1, 0, 0, 1, 0, 0] - @addContent 'Q' - - closePath: -> - @addContent 'h' - - lineWidth: (w) -> - @addContent "#{number(w)} w" - - _CAP_STYLES: - BUTT: 0 - ROUND: 1 - SQUARE: 2 - - lineCap: (c) -> - c = @_CAP_STYLES[c.toUpperCase()] if typeof c is 'string' - @addContent "#{c} J" - - _JOIN_STYLES: - MITER: 0 - ROUND: 1 - BEVEL: 2 - - lineJoin: (j) -> - j = @_JOIN_STYLES[j.toUpperCase()] if typeof j is 'string' - @addContent "#{j} j" - - miterLimit: (m) -> - @addContent "#{number(m)} M" - - dash: (length, options = {}) -> - return this unless length? - if Array.isArray length - length = (number(v) for v in length).join(' ') - phase = options.phase or 0 - @addContent "[#{length}] #{number(phase)} d" - else - space = options.space ? length - phase = options.phase or 0 - @addContent "[#{number(length)} #{number(space)}] #{number(phase)} d" - - undash: -> - @addContent "[] 0 d" - - moveTo: (x, y) -> - @addContent "#{number(x)} #{number(y)} m" - - lineTo: (x, y) -> - @addContent "#{number(x)} #{number(y)} l" - - bezierCurveTo: (cp1x, cp1y, cp2x, cp2y, x, y) -> - @addContent "#{number(cp1x)} #{number(cp1y)} #{number(cp2x)} #{number(cp2y)} #{number(x)} #{number(y)} c" - - quadraticCurveTo: (cpx, cpy, x, y) -> - @addContent "#{number(cpx)} #{number(cpy)} #{number(x)} #{number(y)} v" - - rect: (x, y, w, h) -> - @addContent "#{number(x)} #{number(y)} #{number(w)} #{number(h)} re" - - roundedRect: (x, y, w, h, r = 0) -> - r = Math.min(r, 0.5 * w, 0.5 * h) - - # amount to inset control points from corners (see `ellipse`) - c = r * (1.0 - KAPPA) - - @moveTo x + r, y - @lineTo x + w - r, y - @bezierCurveTo x + w - c, y, x + w, y + c, x + w, y + r - @lineTo x + w, y + h - r - @bezierCurveTo x + w, y + h - c, x + w - c, y + h, x + w - r, y + h - @lineTo x + r, y + h - @bezierCurveTo x + c, y + h, x, y + h - c, x, y + h - r - @lineTo x, y + r - @bezierCurveTo x, y + c, x + c, y, x + r, y - @closePath() - - ellipse: (x, y, r1, r2 = r1) -> - # based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084 - x -= r1 - y -= r2 - ox = r1 * KAPPA - oy = r2 * KAPPA - xe = x + r1 * 2 - ye = y + r2 * 2 - xm = x + r1 - ym = y + r2 - - @moveTo(x, ym) - @bezierCurveTo(x, ym - oy, xm - ox, y, xm, y) - @bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym) - @bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye) - @bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym) - @closePath() - - circle: (x, y, radius) -> - @ellipse x, y, radius - - arc: (x, y, radius, startAngle, endAngle, anticlockwise = false) -> - TWO_PI = 2.0 * Math.PI - HALF_PI = 0.5 * Math.PI - - deltaAng = endAngle - startAngle - - if Math.abs(deltaAng) > TWO_PI - # draw only full circle if more than that is specified - deltaAng = TWO_PI - - else if (deltaAng isnt 0 && anticlockwise isnt (deltaAng < 0)) - # necessary to flip direction of rendering - dir = if anticlockwise then -1 else 1 - deltaAng = dir * TWO_PI + deltaAng - - numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI) - segAng = deltaAng / numSegs - handleLen = (segAng / HALF_PI) * KAPPA * radius - curAng = startAngle - - # component distances between anchor point and control point - deltaCx = -Math.sin(curAng) * handleLen - deltaCy = Math.cos(curAng) * handleLen - - # anchor point - ax = x + Math.cos(curAng) * radius - ay = y + Math.sin(curAng) * radius - - # calculate and render segments - @moveTo ax, ay - - for segIdx in [0...numSegs] - # starting control point - cp1x = ax + deltaCx - cp1y = ay + deltaCy - - # step angle - curAng += segAng - - # next anchor point - ax = x + Math.cos(curAng) * radius - ay = y + Math.sin(curAng) * radius - - # next control point delta - deltaCx = -Math.sin(curAng) * handleLen - deltaCy = Math.cos(curAng) * handleLen - - # ending control point - cp2x = ax - deltaCx - cp2y = ay - deltaCy - - # render segment - @bezierCurveTo cp1x, cp1y, cp2x, cp2y, ax, ay - - return this - - polygon: (points...) -> - @moveTo points.shift()... - @lineTo point... for point in points - @closePath() - - path: (path) -> - SVGPath.apply this, path - return this - - _windingRule: (rule) -> - if /even-?odd/.test(rule) - return '*' - - return '' - - fill: (color, rule) -> - if /(even-?odd)|(non-?zero)/.test(color) - rule = color - color = null - - @fillColor color if color - @addContent 'f' + @_windingRule(rule) - - stroke: (color) -> - @strokeColor color if color - @addContent 'S' - - fillAndStroke: (fillColor, strokeColor = fillColor, rule) -> - isFillRule = /(even-?odd)|(non-?zero)/ - if isFillRule.test(fillColor) - rule = fillColor - fillColor = null - - if isFillRule.test(strokeColor) - rule = strokeColor - strokeColor = fillColor - - if fillColor - @fillColor fillColor - @strokeColor strokeColor - - @addContent 'B' + @_windingRule(rule) - - clip: (rule) -> - @addContent 'W' + @_windingRule(rule) + ' n' - - transform: (m11, m12, m21, m22, dx, dy) -> - # keep track of the current transformation matrix - m = @_ctm - [m0, m1, m2, m3, m4, m5] = m - m[0] = m0 * m11 + m2 * m12 - m[1] = m1 * m11 + m3 * m12 - m[2] = m0 * m21 + m2 * m22 - m[3] = m1 * m21 + m3 * m22 - m[4] = m0 * dx + m2 * dy + m4 - m[5] = m1 * dx + m3 * dy + m5 - - values = (number(v) for v in [m11, m12, m21, m22, dx, dy]).join(' ') - @addContent "#{values} cm" - - translate: (x, y) -> - @transform 1, 0, 0, 1, x, y - - rotate: (angle, options = {}) -> - rad = angle * Math.PI / 180 - cos = Math.cos(rad) - sin = Math.sin(rad) - x = y = 0 - - if options.origin? - [x, y] = options.origin - x1 = x * cos - y * sin - y1 = x * sin + y * cos - x -= x1 - y -= y1 - - @transform cos, sin, -sin, cos, x, y - - scale: (xFactor, yFactor = xFactor, options = {}) -> - if typeof yFactor is "object" - options = yFactor - yFactor = xFactor - - x = y = 0 - if options.origin? - [x, y] = options.origin - x -= xFactor * x - y -= yFactor * y - - @transform xFactor, 0, 0, yFactor, x, y diff --git a/lib/mixins/vector.js b/lib/mixins/vector.js new file mode 100644 index 000000000..b1853a92b --- /dev/null +++ b/lib/mixins/vector.js @@ -0,0 +1,319 @@ +import SVGPath from '../path'; +import PDFObject from '../object'; + +const { + number +} = PDFObject; + +// This constant is used to approximate a symmetrical arc using a cubic +// Bezier curve. +const KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0); +export default { + initVector() { + this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix + return this._ctmStack = []; + }, + + save() { + this._ctmStack.push(this._ctm.slice()); + // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time? + return this.addContent('q'); + }, + + restore() { + this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0]; + return this.addContent('Q'); + }, + + closePath() { + return this.addContent('h'); + }, + + lineWidth(w) { + return this.addContent(`${number(w)} w`); + }, + + _CAP_STYLES: { + BUTT: 0, + ROUND: 1, + SQUARE: 2 + }, + + lineCap(c) { + if (typeof c === 'string') { c = this._CAP_STYLES[c.toUpperCase()]; } + return this.addContent(`${c} J`); + }, + + _JOIN_STYLES: { + MITER: 0, + ROUND: 1, + BEVEL: 2 + }, + + lineJoin(j) { + if (typeof j === 'string') { j = this._JOIN_STYLES[j.toUpperCase()]; } + return this.addContent(`${j} j`); + }, + + miterLimit(m) { + return this.addContent(`${number(m)} M`); + }, + + dash(length, options) { + let phase; + if (options == null) { options = {}; } + if (length == null) { return this; } + if (Array.isArray(length)) { + length = length.map((v) => number(v)).join(' '); + phase = options.phase || 0; + return this.addContent(`[${length}] ${number(phase)} d`); + } else { + const space = options.space != null ? options.space : length; + phase = options.phase || 0; + return this.addContent(`[${number(length)} ${number(space)}] ${number(phase)} d`); + } + }, + + undash() { + return this.addContent("[] 0 d"); + }, + + moveTo(x, y) { + return this.addContent(`${number(x)} ${number(y)} m`); + }, + + lineTo(x, y) { + return this.addContent(`${number(x)} ${number(y)} l`); + }, + + bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) { + return this.addContent(`${number(cp1x)} ${number(cp1y)} ${number(cp2x)} ${number(cp2y)} ${number(x)} ${number(y)} c`); + }, + + quadraticCurveTo(cpx, cpy, x, y) { + return this.addContent(`${number(cpx)} ${number(cpy)} ${number(x)} ${number(y)} v`); + }, + + rect(x, y, w, h) { + return this.addContent(`${number(x)} ${number(y)} ${number(w)} ${number(h)} re`); + }, + + roundedRect(x, y, w, h, r) { + if (r == null) { r = 0; } + r = Math.min(r, 0.5 * w, 0.5 * h); + + // amount to inset control points from corners (see `ellipse`) + const c = r * (1.0 - KAPPA); + + this.moveTo(x + r, y); + this.lineTo((x + w) - r, y); + this.bezierCurveTo((x + w) - c, y, x + w, y + c, x + w, y + r); + this.lineTo(x + w, (y + h) - r); + this.bezierCurveTo(x + w, (y + h) - c, (x + w) - c, y + h, (x + w) - r, y + h); + this.lineTo(x + r, y + h); + this.bezierCurveTo(x + c, y + h, x, (y + h) - c, x, (y + h) - r); + this.lineTo(x, y + r); + this.bezierCurveTo(x, y + c, x + c, y, x + r, y); + return this.closePath(); + }, + + ellipse(x, y, r1, r2) { + // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084 + if (r2 == null) { r2 = r1; } + x -= r1; + y -= r2; + const ox = r1 * KAPPA; + const oy = r2 * KAPPA; + const xe = x + (r1 * 2); + const ye = y + (r2 * 2); + const xm = x + r1; + const ym = y + r2; + + this.moveTo(x, ym); + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + return this.closePath(); + }, + + circle(x, y, radius) { + return this.ellipse(x, y, radius); + }, + + arc(x, y, radius, startAngle, endAngle, anticlockwise) { + if (anticlockwise == null) { anticlockwise = false; } + const TWO_PI = 2.0 * Math.PI; + const HALF_PI = 0.5 * Math.PI; + + let deltaAng = endAngle - startAngle; + + if (Math.abs(deltaAng) > TWO_PI) { + // draw only full circle if more than that is specified + deltaAng = TWO_PI; + + } else if ((deltaAng !== 0) && (anticlockwise !== (deltaAng < 0))) { + // necessary to flip direction of rendering + const dir = anticlockwise ? -1 : 1; + deltaAng = (dir * TWO_PI) + deltaAng; + } + + const numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI); + const segAng = deltaAng / numSegs; + const handleLen = (segAng / HALF_PI) * KAPPA * radius; + let curAng = startAngle; + + // component distances between anchor point and control point + let deltaCx = -Math.sin(curAng) * handleLen; + let deltaCy = Math.cos(curAng) * handleLen; + + // anchor point + let ax = x + (Math.cos(curAng) * radius); + let ay = y + (Math.sin(curAng) * radius); + + // calculate and render segments + this.moveTo(ax, ay); + + for (let segIdx = 0, end = numSegs, asc = 0 <= end; asc ? segIdx < end : segIdx > end; asc ? segIdx++ : segIdx--) { + // starting control point + const cp1x = ax + deltaCx; + const cp1y = ay + deltaCy; + + // step angle + curAng += segAng; + + // next anchor point + ax = x + (Math.cos(curAng) * radius); + ay = y + (Math.sin(curAng) * radius); + + // next control point delta + deltaCx = -Math.sin(curAng) * handleLen; + deltaCy = Math.cos(curAng) * handleLen; + + // ending control point + const cp2x = ax - deltaCx; + const cp2y = ay - deltaCy; + + // render segment + this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay); + } + + return this; + }, + + polygon(...points) { + this.moveTo(...(points.shift() || [])); + for (let point of points) { this.lineTo(...(point || [])); } + return this.closePath(); + }, + + path(path) { + SVGPath.apply(this, path); + return this; + }, + + _windingRule(rule) { + if (/even-?odd/.test(rule)) { + return '*'; + } + + return ''; + }, + + fill(color, rule) { + if (/(even-?odd)|(non-?zero)/.test(color)) { + rule = color; + color = null; + } + + if (color) { this.fillColor(color); } + return this.addContent(`f${this._windingRule(rule)}`); + }, + + stroke(color) { + if (color) { this.strokeColor(color); } + return this.addContent('S'); + }, + + fillAndStroke(fillColor, strokeColor, rule) { + if (strokeColor == null) { strokeColor = fillColor; } + const isFillRule = /(even-?odd)|(non-?zero)/; + if (isFillRule.test(fillColor)) { + rule = fillColor; + fillColor = null; + } + + if (isFillRule.test(strokeColor)) { + rule = strokeColor; + strokeColor = fillColor; + } + + if (fillColor) { + this.fillColor(fillColor); + this.strokeColor(strokeColor); + } + + return this.addContent(`B${this._windingRule(rule)}`); + }, + + clip(rule) { + return this.addContent(`W${this._windingRule(rule)} n`); + }, + + transform(m11, m12, m21, m22, dx, dy) { + // keep track of the current transformation matrix + const m = this._ctm; + const [m0, m1, m2, m3, m4, m5] = m; + m[0] = (m0 * m11) + (m2 * m12); + m[1] = (m1 * m11) + (m3 * m12); + m[2] = (m0 * m21) + (m2 * m22); + m[3] = (m1 * m21) + (m3 * m22); + m[4] = (m0 * dx) + (m2 * dy) + m4; + m[5] = (m1 * dx) + (m3 * dy) + m5; + + const values = ([m11, m12, m21, m22, dx, dy].map((v) => number(v))).join(' '); + return this.addContent(`${values} cm`); + }, + + translate(x, y) { + return this.transform(1, 0, 0, 1, x, y); + }, + + rotate(angle, options) { + let y; + if (options == null) { options = {}; } + const rad = (angle * Math.PI) / 180; + const cos = Math.cos(rad); + const sin = Math.sin(rad); + let x = (y = 0); + + if (options.origin != null) { + [x, y] = options.origin; + const x1 = (x * cos) - (y * sin); + const y1 = (x * sin) + (y * cos); + x -= x1; + y -= y1; + } + + return this.transform(cos, sin, -sin, cos, x, y); + }, + + scale(xFactor, yFactor, options) { + let y; + if (yFactor == null) { yFactor = xFactor; } + if (options == null) { options = {}; } + if (typeof yFactor === "object") { + options = yFactor; + yFactor = xFactor; + } + + let x = (y = 0); + if (options.origin != null) { + [x, y] = options.origin; + x -= xFactor * x; + y -= yFactor * y; + } + + return this.transform(xFactor, 0, 0, yFactor, x, y); + } +}; diff --git a/lib/object.coffee b/lib/object.coffee deleted file mode 100644 index b3c5b09bf..000000000 --- a/lib/object.coffee +++ /dev/null @@ -1,100 +0,0 @@ -### -PDFObject - converts JavaScript types into their corrisponding PDF types. -By Devon Govett -### - -class PDFObject - pad = (str, length) -> - (Array(length + 1).join('0') + str).slice(-length) - - escapableRe = /[\n\r\t\b\f\(\)\\]/g - escapable = - '\n': '\\n' - '\r': '\\r' - '\t': '\\t' - '\b': '\\b' - '\f': '\\f' - '\\': '\\\\' - '(': '\\(' - ')': '\\)' - - # Convert little endian UTF-16 to big endian - swapBytes = (buff) -> - l = buff.length - if l & 0x01 - throw new Error("Buffer length must be even") - else - for i in [0...l - 1] by 2 - a = buff[i] - buff[i] = buff[i + 1] - buff[i+1] = a - - return buff - - @convert: (object) -> - # String literals are converted to the PDF name type - if typeof object is 'string' - '/' + object - - # String objects are converted to PDF strings (UTF-16) - else if object instanceof String - string = object - # Detect if this is a unicode string - isUnicode = false - for i in [0...string.length] by 1 - if string.charCodeAt(i) > 0x7f - isUnicode = true - break - - # If so, encode it as big endian UTF-16 - if isUnicode - string = swapBytes(new Buffer('\ufeff' + string, 'utf16le')).toString('binary') - - # Escape characters as required by the spec - string = string.replace escapableRe, (c) -> - return escapable[c] - - '(' + string + ')' - - # Buffers are converted to PDF hex strings - else if Buffer.isBuffer(object) - '<' + object.toString('hex') + '>' - - else if object instanceof PDFReference - object.toString() - - else if object instanceof Date - '(D:' + pad(object.getUTCFullYear(), 4) + - pad(object.getUTCMonth() + 1, 2) + - pad(object.getUTCDate(), 2) + - pad(object.getUTCHours(), 2) + - pad(object.getUTCMinutes(), 2) + - pad(object.getUTCSeconds(), 2) + - 'Z)' - - else if Array.isArray object - items = (PDFObject.convert e for e in object).join(' ') - '[' + items + ']' - - else if {}.toString.call(object) is '[object Object]' - out = ['<<'] - for key, val of object - out.push '/' + key + ' ' + PDFObject.convert(val) - - out.push '>>' - out.join '\n' - - else if typeof object is 'number' - PDFObject.number object - - else - '' + object - - @number: (n) -> - if n > -1e21 and n < 1e21 - return Math.round(n * 1e6) / 1e6 - - throw new Error "unsupported number: #{n}" - -module.exports = PDFObject -PDFReference = require './reference' diff --git a/lib/object.js b/lib/object.js new file mode 100644 index 000000000..f87816028 --- /dev/null +++ b/lib/object.js @@ -0,0 +1,113 @@ +/* +PDFObject - converts JavaScript types into their corresponding PDF types. +By Devon Govett +*/ + +import PDFAbstractReference from './abstract_reference'; + +const pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length); + +const escapableRe = /[\n\r\t\b\f\(\)\\]/g; +const escapable = { + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\b': '\\b', + '\f': '\\f', + '\\': '\\\\', + '(': '\\(', + ')': '\\)' +}; + +// Convert little endian UTF-16 to big endian +const swapBytes = function(buff) { + const l = buff.length; + if (l & 0x01) { + throw new Error("Buffer length must be even"); + } else { + for (let i = 0, end = l - 1; i < end; i += 2) { + const a = buff[i]; + buff[i] = buff[i + 1]; + buff[i+1] = a; + } + } + + return buff; +}; + +class PDFObject { + static convert(object) { + // String literals are converted to the PDF name type + if (typeof object === 'string') { + return `/${object}`; + + // String objects are converted to PDF strings (UTF-16) + } else if (object instanceof String) { + let string = object; + // Detect if this is a unicode string + let isUnicode = false; + for (let i = 0, end = string.length; i < end; i++) { + if (string.charCodeAt(i) > 0x7f) { + isUnicode = true; + break; + } + } + + // If so, encode it as big endian UTF-16 + if (isUnicode) { + string = swapBytes(new Buffer(`\ufeff${string}`, 'utf16le')).toString('binary'); + } + + // Escape characters as required by the spec + string = string.replace(escapableRe, c => escapable[c]); + + return `(${string})`; + + // Buffers are converted to PDF hex strings + } else if (Buffer.isBuffer(object)) { + return `<${object.toString('hex')}>`; + + } else if (object instanceof PDFAbstractReference) { + return object.toString(); + + } else if (object instanceof Date) { + return `(D:${pad(object.getUTCFullYear(), 4)}` + + pad(object.getUTCMonth() + 1, 2) + + pad(object.getUTCDate(), 2) + + pad(object.getUTCHours(), 2) + + pad(object.getUTCMinutes(), 2) + + pad(object.getUTCSeconds(), 2) + + 'Z)'; + + } else if (Array.isArray(object)) { + const items = (object.map((e) => PDFObject.convert(e))).join(' '); + return `[${items}]`; + + } else if ({}.toString.call(object) === '[object Object]') { + const out = ['<<']; + for (let key in object) { + const val = object[key]; + out.push(`/${key} ${PDFObject.convert(val)}`); + } + + out.push('>>'); + return out.join('\n'); + + } else if (typeof object === 'number') { + return PDFObject.number(object); + + } else { + return `${object}`; + } + } + + static number(n) { + if ((n > -1e21) && (n < 1e21)) { + return Math.round(n * 1e6) / 1e6; + } + + throw new Error(`unsupported number: ${n}`); + } +}; + +export default PDFObject; diff --git a/lib/outline.coffee b/lib/outline.coffee deleted file mode 100644 index b16264521..000000000 --- a/lib/outline.coffee +++ /dev/null @@ -1,47 +0,0 @@ -PDFObject = require './object' -PDFPage = require './page' - -class PDFOutline - constructor: (@document, parent, title, dest, @options = { expanded: false }) -> - - @outlineData = {} - - if dest != null - @outlineData['Dest'] = [dest.dictionary, 'Fit'] - - if parent != null - @outlineData['Parent'] = parent - - if title != null - @outlineData['Title'] = new String(title) - - @dictionary = @document.ref @outlineData - @children = [] - - addItem: (title, options = { expanded: false }) -> - result = new PDFOutline(@document, @dictionary, title, @document.page, options) - @children.push(result) - - return result - - endOutline: () -> - if @children.length > 0 - if @options.expanded - @outlineData.Count = @children.length - - [first, ..., last] = @children - @outlineData.First = first.dictionary - @outlineData.Last = last.dictionary - - for i in [0...@children.length] - child = @children[i] - if i > 0 - child.outlineData.Prev = @children[i-1].dictionary - if i < @children.length - 1 - child.outlineData.Next = @children[i+1].dictionary - child.endOutline() - - @dictionary.end() - - -module.exports = PDFOutline \ No newline at end of file diff --git a/lib/outline.js b/lib/outline.js new file mode 100644 index 000000000..30b1906f9 --- /dev/null +++ b/lib/outline.js @@ -0,0 +1,61 @@ +class PDFOutline { + constructor(document, parent, title, dest, options) { + this.document = document; + if (options == null) { options = { expanded: false }; } + this.options = options; + this.outlineData = {}; + + if (dest !== null) { + this.outlineData['Dest'] = [dest.dictionary, 'Fit']; + } + + if (parent !== null) { + this.outlineData['Parent'] = parent; + } + + if (title !== null) { + this.outlineData['Title'] = new String(title); + } + + this.dictionary = this.document.ref(this.outlineData); + this.children = []; + } + + addItem(title, options) { + if (options == null) { options = { expanded: false }; } + const result = new PDFOutline(this.document, this.dictionary, title, this.document.page, options); + this.children.push(result); + + return result; + } + + endOutline() { + let end; + if (this.children.length > 0) { + let asc, i; + if (this.options.expanded) { + this.outlineData.Count = this.children.length; + } + + const first = this.children[0], last = this.children[this.children.length - 1]; + this.outlineData.First = first.dictionary; + this.outlineData.Last = last.dictionary; + + for (i = 0, end = this.children.length, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + const child = this.children[i]; + if (i > 0) { + child.outlineData.Prev = this.children[i-1].dictionary; + } + if (i < (this.children.length - 1)) { + child.outlineData.Next = this.children[i+1].dictionary; + } + child.endOutline(); + } + } + + return this.dictionary.end(); + } +} + + +export default PDFOutline; \ No newline at end of file diff --git a/lib/page.coffee b/lib/page.coffee deleted file mode 100644 index 2584b3ba7..000000000 --- a/lib/page.coffee +++ /dev/null @@ -1,124 +0,0 @@ -### -PDFPage - represents a single page in the PDF document -By Devon Govett -### - -class PDFPage - constructor: (@document, options = {}) -> - @size = options.size or 'letter' - @layout = options.layout or 'portrait' - - # process margins - if typeof options.margin is 'number' - @margins = - top: options.margin - left: options.margin - bottom: options.margin - right: options.margin - - # default to 1 inch margins - else - @margins = options.margins or DEFAULT_MARGINS - - # calculate page dimensions - dimensions = if Array.isArray(@size) then @size else SIZES[@size.toUpperCase()] - @width = dimensions[if @layout is 'portrait' then 0 else 1] - @height = dimensions[if @layout is 'portrait' then 1 else 0] - - @content = @document.ref() - - # Initialize the Font, XObject, and ExtGState dictionaries - @resources = @document.ref - ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'] - - # Lazily create these dictionaries - Object.defineProperties this, - fonts: - get: => @resources.data.Font ?= {} - xobjects: - get: => @resources.data.XObject ?= {} - ext_gstates: - get: => @resources.data.ExtGState ?= {} - patterns: - get: => @resources.data.Pattern ?= {} - annotations: - get: => @dictionary.data.Annots ?= [] - - # The page dictionary - @dictionary = @document.ref - Type: 'Page' - Parent: @document._root.data.Pages - MediaBox: [0, 0, @width, @height] - Contents: @content - Resources: @resources - - maxY: -> - @height - @margins.bottom - - write: (chunk) -> - @content.write chunk - - end: -> - @dictionary.end() - @resources.end() - @content.end() - - DEFAULT_MARGINS = - top: 72 - left: 72 - bottom: 72 - right: 72 - - SIZES = - '4A0': [4767.87, 6740.79] - '2A0': [3370.39, 4767.87] - A0: [2383.94, 3370.39] - A1: [1683.78, 2383.94] - A2: [1190.55, 1683.78] - A3: [841.89, 1190.55] - A4: [595.28, 841.89] - A5: [419.53, 595.28] - A6: [297.64, 419.53] - A7: [209.76, 297.64] - A8: [147.40, 209.76] - A9: [104.88, 147.40] - A10: [73.70, 104.88] - B0: [2834.65, 4008.19] - B1: [2004.09, 2834.65] - B2: [1417.32, 2004.09] - B3: [1000.63, 1417.32] - B4: [708.66, 1000.63] - B5: [498.90, 708.66] - B6: [354.33, 498.90] - B7: [249.45, 354.33] - B8: [175.75, 249.45] - B9: [124.72, 175.75] - B10: [87.87, 124.72] - C0: [2599.37, 3676.54] - C1: [1836.85, 2599.37] - C2: [1298.27, 1836.85] - C3: [918.43, 1298.27] - C4: [649.13, 918.43] - C5: [459.21, 649.13] - C6: [323.15, 459.21] - C7: [229.61, 323.15] - C8: [161.57, 229.61] - C9: [113.39, 161.57] - C10: [79.37, 113.39] - RA0: [2437.80, 3458.27] - RA1: [1729.13, 2437.80] - RA2: [1218.90, 1729.13] - RA3: [864.57, 1218.90] - RA4: [609.45, 864.57] - SRA0: [2551.18, 3628.35] - SRA1: [1814.17, 2551.18] - SRA2: [1275.59, 1814.17] - SRA3: [907.09, 1275.59] - SRA4: [637.80, 907.09] - EXECUTIVE: [521.86, 756.00] - FOLIO: [612.00, 936.00] - LEGAL: [612.00, 1008.00] - LETTER: [612.00, 792.00] - TABLOID: [792.00, 1224.00] - -module.exports = PDFPage \ No newline at end of file diff --git a/lib/page.js b/lib/page.js new file mode 100644 index 000000000..bff680c8d --- /dev/null +++ b/lib/page.js @@ -0,0 +1,142 @@ +/* +PDFPage - represents a single page in the PDF document +By Devon Govett +*/ + +const DEFAULT_MARGINS = { + top: 72, + left: 72, + bottom: 72, + right: 72 +}; + +const SIZES = { + '4A0': [4767.87, 6740.79], + '2A0': [3370.39, 4767.87], + A0: [2383.94, 3370.39], + A1: [1683.78, 2383.94], + A2: [1190.55, 1683.78], + A3: [841.89, 1190.55], + A4: [595.28, 841.89], + A5: [419.53, 595.28], + A6: [297.64, 419.53], + A7: [209.76, 297.64], + A8: [147.40, 209.76], + A9: [104.88, 147.40], + A10: [73.70, 104.88], + B0: [2834.65, 4008.19], + B1: [2004.09, 2834.65], + B2: [1417.32, 2004.09], + B3: [1000.63, 1417.32], + B4: [708.66, 1000.63], + B5: [498.90, 708.66], + B6: [354.33, 498.90], + B7: [249.45, 354.33], + B8: [175.75, 249.45], + B9: [124.72, 175.75], + B10: [87.87, 124.72], + C0: [2599.37, 3676.54], + C1: [1836.85, 2599.37], + C2: [1298.27, 1836.85], + C3: [918.43, 1298.27], + C4: [649.13, 918.43], + C5: [459.21, 649.13], + C6: [323.15, 459.21], + C7: [229.61, 323.15], + C8: [161.57, 229.61], + C9: [113.39, 161.57], + C10: [79.37, 113.39], + RA0: [2437.80, 3458.27], + RA1: [1729.13, 2437.80], + RA2: [1218.90, 1729.13], + RA3: [864.57, 1218.90], + RA4: [609.45, 864.57], + SRA0: [2551.18, 3628.35], + SRA1: [1814.17, 2551.18], + SRA2: [1275.59, 1814.17], + SRA3: [907.09, 1275.59], + SRA4: [637.80, 907.09], + EXECUTIVE: [521.86, 756.00], + FOLIO: [612.00, 936.00], + LEGAL: [612.00, 1008.00], + LETTER: [612.00, 792.00], + TABLOID: [792.00, 1224.00] +}; + +class PDFPage { + constructor(document, options) { + this.document = document; + if (options == null) { options = {}; } + this.size = options.size || 'letter'; + this.layout = options.layout || 'portrait'; + + // process margins + if (typeof options.margin === 'number') { + this.margins = { + top: options.margin, + left: options.margin, + bottom: options.margin, + right: options.margin + }; + + // default to 1 inch margins + } else { + this.margins = options.margins || DEFAULT_MARGINS; + } + + // calculate page dimensions + const dimensions = Array.isArray(this.size) ? this.size : SIZES[this.size.toUpperCase()]; + this.width = dimensions[this.layout === 'portrait' ? 0 : 1]; + this.height = dimensions[this.layout === 'portrait' ? 1 : 0]; + + this.content = this.document.ref(); + + // Initialize the Font, XObject, and ExtGState dictionaries + this.resources = this.document.ref({ + ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']}); + + // Lazily create these dictionaries + Object.defineProperties(this, { + fonts: { + get: () => this.resources.data.Font != null ? this.resources.data.Font : (this.resources.data.Font = {}) + }, + xobjects: { + get: () => this.resources.data.XObject != null ? this.resources.data.XObject : (this.resources.data.XObject = {}) + }, + ext_gstates: { + get: () => this.resources.data.ExtGState != null ? this.resources.data.ExtGState : (this.resources.data.ExtGState = {}) + }, + patterns: { + get: () => this.resources.data.Pattern != null ? this.resources.data.Pattern : (this.resources.data.Pattern = {}) + }, + annotations: { + get: () => this.dictionary.data.Annots != null ? this.dictionary.data.Annots : (this.dictionary.data.Annots = []) + } + }); + + // The page dictionary + this.dictionary = this.document.ref({ + Type: 'Page', + Parent: this.document._root.data.Pages, + MediaBox: [0, 0, this.width, this.height], + Contents: this.content, + Resources: this.resources + }); + } + + maxY() { + return this.height - this.margins.bottom; + } + + write(chunk) { + return this.content.write(chunk); + } + + end() { + this.dictionary.end(); + this.resources.end(); + return this.content.end(); + } +}; + +export default PDFPage; \ No newline at end of file diff --git a/lib/path.coffee b/lib/path.coffee deleted file mode 100644 index 9bd3ac2ec..000000000 --- a/lib/path.coffee +++ /dev/null @@ -1,326 +0,0 @@ -class SVGPath - @apply: (doc, path) -> - commands = parse path - apply commands, doc - - parameters = - A: 7 - a: 7 - C: 6 - c: 6 - H: 1 - h: 1 - L: 2 - l: 2 - M: 2 - m: 2 - Q: 4 - q: 4 - S: 4 - s: 4 - T: 2 - t: 2 - V: 1 - v: 1 - Z: 0 - z: 0 - - parse = (path) -> - ret = [] - args = [] - curArg = "" - foundDecimal = no - params = 0 - - for c in path - if parameters[c]? - params = parameters[c] - if cmd # save existing command - args[args.length] = +curArg if curArg.length > 0 - ret[ret.length] = {cmd,args} - - args = [] - curArg = "" - foundDecimal = no - - cmd = c - - else if c in [" ", ","] or (c is "-" and curArg.length > 0 and curArg[curArg.length - 1] isnt 'e') or (c is "." and foundDecimal) - continue if curArg.length is 0 - - if args.length is params # handle reused commands - ret[ret.length] = {cmd,args} - args = [+curArg] - - # handle assumed commands - cmd = "L" if cmd is "M" - cmd = "l" if cmd is "m" - - else - args[args.length] = +curArg - - foundDecimal = (c is ".") - - # fix for negative numbers or repeated decimals with no delimeter between commands - curArg = if c in ['-', '.'] then c else '' - - else - curArg += c - foundDecimal = true if c is '.' - - # add the last command - if curArg.length > 0 - if args.length is params # handle reused commands - ret[ret.length] = {cmd, args} - args = [+curArg] - - # handle assumed commands - cmd = "L" if cmd is "M" - cmd = "l" if cmd is "m" - else - args[args.length] = +curArg - - ret[ret.length] = {cmd,args} - - return ret - - cx = cy = px = py = sx = sy = 0 - apply = (commands, doc) -> - # current point, control point, and subpath starting point - cx = cy = px = py = sx = sy = 0 - - # run the commands - for c, i in commands - runners[c.cmd]?(doc, c.args) - - cx = cy = px = py = 0 - - runners = - M: (doc, a) -> - cx = a[0] - cy = a[1] - px = py = null - sx = cx - sy = cy - doc.moveTo cx, cy - - m: (doc, a) -> - cx += a[0] - cy += a[1] - px = py = null - sx = cx - sy = cy - doc.moveTo cx, cy - - C: (doc, a) -> - cx = a[4] - cy = a[5] - px = a[2] - py = a[3] - doc.bezierCurveTo a... - - c: (doc, a) -> - doc.bezierCurveTo a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy, a[4] + cx, a[5] + cy - px = cx + a[2] - py = cy + a[3] - cx += a[4] - cy += a[5] - - S: (doc, a) -> - if px is null - px = cx - py = cy - - doc.bezierCurveTo cx-(px-cx), cy-(py-cy), a[0], a[1], a[2], a[3] - px = a[0] - py = a[1] - cx = a[2] - cy = a[3] - - s: (doc, a) -> - if px is null - px = cx - py = cy - - doc.bezierCurveTo cx-(px-cx), cy-(py-cy), cx + a[0], cy + a[1], cx + a[2], cy + a[3] - px = cx + a[0] - py = cy + a[1] - cx += a[2] - cy += a[3] - - Q: (doc, a) -> - px = a[0] - py = a[1] - cx = a[2] - cy = a[3] - doc.quadraticCurveTo(a[0], a[1], cx, cy) - - q: (doc, a) -> - doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy) - px = cx + a[0] - py = cy + a[1] - cx += a[2] - cy += a[3] - - T: (doc, a) -> - if px is null - px = cx - py = cy - else - px = cx-(px-cx) - py = cy-(py-cy) - - doc.quadraticCurveTo(px, py, a[0], a[1]) - px = cx-(px-cx) - py = cy-(py-cy) - cx = a[0] - cy = a[1] - - t: (doc, a) -> - if px is null - px = cx - py = cy - else - px = cx-(px-cx) - py = cy-(py-cy) - - doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]) - cx += a[0] - cy += a[1] - - A: (doc, a) -> - solveArc(doc, cx, cy, a) - cx = a[5] - cy = a[6] - - a: (doc, a) -> - a[5] += cx - a[6] += cy - solveArc(doc, cx, cy, a) - cx = a[5] - cy = a[6] - - L: (doc, a) -> - cx = a[0] - cy = a[1] - px = py = null - doc.lineTo(cx, cy) - - l: (doc, a) -> - cx += a[0] - cy += a[1] - px = py = null - doc.lineTo(cx, cy) - - H: (doc, a) -> - cx = a[0] - px = py = null - doc.lineTo(cx, cy) - - h: (doc, a) -> - cx += a[0] - px = py = null - doc.lineTo(cx, cy) - - V: (doc, a) -> - cy = a[0] - px = py = null - doc.lineTo(cx, cy) - - v: (doc, a) -> - cy += a[0] - px = py = null - doc.lineTo(cx, cy) - - Z: (doc) -> - doc.closePath() - cx = sx - cy = sy - - z: (doc) -> - doc.closePath() - cx = sx - cy = sy - - solveArc = (doc, x, y, coords) -> - [rx,ry,rot,large,sweep,ex,ey] = coords - segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y) - - for seg in segs - bez = segmentToBezier seg... - doc.bezierCurveTo bez... - - # from Inkscape svgtopdf, thanks! - arcToSegments = (x, y, rx, ry, large, sweep, rotateX, ox, oy) -> - th = rotateX * (Math.PI/180) - sin_th = Math.sin(th) - cos_th = Math.cos(th) - rx = Math.abs(rx) - ry = Math.abs(ry) - px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5 - py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5 - pl = (px*px) / (rx*rx) + (py*py) / (ry*ry) - if pl > 1 - pl = Math.sqrt(pl) - rx *= pl - ry *= pl - - a00 = cos_th / rx - a01 = sin_th / rx - a10 = (-sin_th) / ry - a11 = (cos_th) / ry - x0 = a00 * ox + a01 * oy - y0 = a10 * ox + a11 * oy - x1 = a00 * x + a01 * y - y1 = a10 * x + a11 * y - - d = (x1-x0) * (x1-x0) + (y1-y0) * (y1-y0) - sfactor_sq = 1 / d - 0.25 - sfactor_sq = 0 if sfactor_sq < 0 - sfactor = Math.sqrt(sfactor_sq) - sfactor = -sfactor if sweep is large - - xc = 0.5 * (x0 + x1) - sfactor * (y1-y0) - yc = 0.5 * (y0 + y1) + sfactor * (x1-x0) - - th0 = Math.atan2(y0-yc, x0-xc) - th1 = Math.atan2(y1-yc, x1-xc) - - th_arc = th1-th0 - if th_arc < 0 && sweep is 1 - th_arc += 2*Math.PI - else if th_arc > 0 && sweep is 0 - th_arc -= 2 * Math.PI - - segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001))) - result = [] - - for i in [0...segments] - th2 = th0 + i * th_arc / segments - th3 = th0 + (i+1) * th_arc / segments - result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th] - - return result - - segmentToBezier = (cx, cy, th0, th1, rx, ry, sin_th, cos_th) -> - a00 = cos_th * rx - a01 = -sin_th * ry - a10 = sin_th * rx - a11 = cos_th * ry - - th_half = 0.5 * (th1 - th0) - t = (8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5) / Math.sin(th_half) - x1 = cx + Math.cos(th0) - t * Math.sin(th0) - y1 = cy + Math.sin(th0) + t * Math.cos(th0) - x3 = cx + Math.cos(th1) - y3 = cy + Math.sin(th1) - x2 = x3 + t * Math.sin(th1) - y2 = y3 - t * Math.cos(th1) - - return [ - a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, - a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, - a00 * x3 + a01 * y3, a10 * x3 + a11 * y3 - ] - -module.exports = SVGPath diff --git a/lib/path.js b/lib/path.js new file mode 100644 index 000000000..5fc732222 --- /dev/null +++ b/lib/path.js @@ -0,0 +1,375 @@ +let cx, cy, px, py, sx, sy; + +cx = cy = px = py = sx = sy = 0; + +const parameters = { + A: 7, + a: 7, + C: 6, + c: 6, + H: 1, + h: 1, + L: 2, + l: 2, + M: 2, + m: 2, + Q: 4, + q: 4, + S: 4, + s: 4, + T: 2, + t: 2, + V: 1, + v: 1, + Z: 0, + z: 0 +}; + +const parse = function(path) { + let cmd; + const ret = []; + let args = []; + let curArg = ""; + let foundDecimal = false; + let params = 0; + + for (let c of path) { + if (parameters[c] != null) { + params = parameters[c]; + if (cmd) { // save existing command + if (curArg.length > 0) { args[args.length] = +curArg; } + ret[ret.length] = {cmd,args}; + + args = []; + curArg = ""; + foundDecimal = false; + } + + cmd = c; + + } else if ([" ", ","].includes(c) || ((c === "-") && (curArg.length > 0) && (curArg[curArg.length - 1] !== 'e')) || ((c === ".") && foundDecimal)) { + if (curArg.length === 0) { continue; } + + if (args.length === params) { // handle reused commands + ret[ret.length] = {cmd,args}; + args = [+curArg]; + + // handle assumed commands + if (cmd === "M") { cmd = "L"; } + if (cmd === "m") { cmd = "l"; } + + } else { + args[args.length] = +curArg; + } + + foundDecimal = (c === "."); + + // fix for negative numbers or repeated decimals with no delimeter between commands + curArg = ['-', '.'].includes(c) ? c : ''; + + } else { + curArg += c; + if (c === '.') { foundDecimal = true; } + } + } + + // add the last command + if (curArg.length > 0) { + if (args.length === params) { // handle reused commands + ret[ret.length] = {cmd, args}; + args = [+curArg]; + + // handle assumed commands + if (cmd === "M") { cmd = "L"; } + if (cmd === "m") { cmd = "l"; } + } else { + args[args.length] = +curArg; + } + } + + ret[ret.length] = {cmd,args}; + + return ret; +}; + +const apply = function(commands, doc) { + // current point, control point, and subpath starting point + cx = cy = px = py = sx = sy = 0; + + // run the commands + for (let i = 0; i < commands.length; i++) { + const c = commands[i]; + if (typeof runners[c.cmd] === 'function') { + runners[c.cmd](doc, c.args); + } + } +}; + +const runners = { + M(doc, a) { + cx = a[0]; + cy = a[1]; + px = (py = null); + sx = cx; + sy = cy; + return doc.moveTo(cx, cy); + }, + + m(doc, a) { + cx += a[0]; + cy += a[1]; + px = (py = null); + sx = cx; + sy = cy; + return doc.moveTo(cx, cy); + }, + + C(doc, a) { + cx = a[4]; + cy = a[5]; + px = a[2]; + py = a[3]; + return doc.bezierCurveTo(...(a || [])); + }, + + c(doc, a) { + doc.bezierCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy, a[4] + cx, a[5] + cy); + px = cx + a[2]; + py = cy + a[3]; + cx += a[4]; + return cy += a[5]; + }, + + S(doc, a) { + if (px === null) { + px = cx; + py = cy; + } + + doc.bezierCurveTo(cx-(px-cx), cy-(py-cy), a[0], a[1], a[2], a[3]); + px = a[0]; + py = a[1]; + cx = a[2]; + return cy = a[3]; + }, + + s(doc, a) { + if (px === null) { + px = cx; + py = cy; + } + + doc.bezierCurveTo(cx-(px-cx), cy-(py-cy), cx + a[0], cy + a[1], cx + a[2], cy + a[3]); + px = cx + a[0]; + py = cy + a[1]; + cx += a[2]; + return cy += a[3]; + }, + + Q(doc, a) { + px = a[0]; + py = a[1]; + cx = a[2]; + cy = a[3]; + return doc.quadraticCurveTo(a[0], a[1], cx, cy); + }, + + q(doc, a) { + doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy); + px = cx + a[0]; + py = cy + a[1]; + cx += a[2]; + return cy += a[3]; + }, + + T(doc, a) { + if (px === null) { + px = cx; + py = cy; + } else { + px = cx-(px-cx); + py = cy-(py-cy); + } + + doc.quadraticCurveTo(px, py, a[0], a[1]); + px = cx-(px-cx); + py = cy-(py-cy); + cx = a[0]; + return cy = a[1]; + }, + + t(doc, a) { + if (px === null) { + px = cx; + py = cy; + } else { + px = cx-(px-cx); + py = cy-(py-cy); + } + + doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]); + cx += a[0]; + return cy += a[1]; + }, + + A(doc, a) { + solveArc(doc, cx, cy, a); + cx = a[5]; + return cy = a[6]; + }, + + a(doc, a) { + a[5] += cx; + a[6] += cy; + solveArc(doc, cx, cy, a); + cx = a[5]; + return cy = a[6]; + }, + + L(doc, a) { + cx = a[0]; + cy = a[1]; + px = (py = null); + return doc.lineTo(cx, cy); + }, + + l(doc, a) { + cx += a[0]; + cy += a[1]; + px = (py = null); + return doc.lineTo(cx, cy); + }, + + H(doc, a) { + cx = a[0]; + px = (py = null); + return doc.lineTo(cx, cy); + }, + + h(doc, a) { + cx += a[0]; + px = (py = null); + return doc.lineTo(cx, cy); + }, + + V(doc, a) { + cy = a[0]; + px = (py = null); + return doc.lineTo(cx, cy); + }, + + v(doc, a) { + cy += a[0]; + px = (py = null); + return doc.lineTo(cx, cy); + }, + + Z(doc) { + doc.closePath(); + cx = sx; + return cy = sy; + }, + + z(doc) { + doc.closePath(); + cx = sx; + return cy = sy; + } +}; + +const solveArc = function(doc, x, y, coords) { + const [rx,ry,rot,large,sweep,ex,ey] = coords; + const segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y); + + for (let seg of segs) { + const bez = segmentToBezier(...(seg || [])); + doc.bezierCurveTo(...(bez || [])); + } +}; + +// from Inkscape svgtopdf, thanks! +const arcToSegments = function(x, y, rx, ry, large, sweep, rotateX, ox, oy) { + const th = rotateX * (Math.PI/180); + const sin_th = Math.sin(th); + const cos_th = Math.cos(th); + rx = Math.abs(rx); + ry = Math.abs(ry); + px = (cos_th * (ox - x) * 0.5) + (sin_th * (oy - y) * 0.5); + py = (cos_th * (oy - y) * 0.5) - (sin_th * (ox - x) * 0.5); + let pl = ((px*px) / (rx*rx)) + ((py*py) / (ry*ry)); + if (pl > 1) { + pl = Math.sqrt(pl); + rx *= pl; + ry *= pl; + } + + const a00 = cos_th / rx; + const a01 = sin_th / rx; + const a10 = (-sin_th) / ry; + const a11 = (cos_th) / ry; + const x0 = (a00 * ox) + (a01 * oy); + const y0 = (a10 * ox) + (a11 * oy); + const x1 = (a00 * x) + (a01 * y); + const y1 = (a10 * x) + (a11 * y); + + const d = ((x1-x0) * (x1-x0)) + ((y1-y0) * (y1-y0)); + let sfactor_sq = (1 / d) - 0.25; + if (sfactor_sq < 0) { sfactor_sq = 0; } + let sfactor = Math.sqrt(sfactor_sq); + if (sweep === large) { sfactor = -sfactor; } + + const xc = (0.5 * (x0 + x1)) - (sfactor * (y1-y0)); + const yc = (0.5 * (y0 + y1)) + (sfactor * (x1-x0)); + + const th0 = Math.atan2(y0-yc, x0-xc); + const th1 = Math.atan2(y1-yc, x1-xc); + + let th_arc = th1-th0; + if ((th_arc < 0) && (sweep === 1)) { + th_arc += 2*Math.PI; + } else if ((th_arc > 0) && (sweep === 0)) { + th_arc -= 2 * Math.PI; + } + + const segments = Math.ceil(Math.abs(th_arc / ((Math.PI * 0.5) + 0.001))); + const result = []; + + for (let i = 0, end = segments, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + const th2 = th0 + ((i * th_arc) / segments); + const th3 = th0 + (((i+1) * th_arc) / segments); + result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th]; + } + + return result; +}; + +const segmentToBezier = function(cx, cy, th0, th1, rx, ry, sin_th, cos_th) { + const a00 = cos_th * rx; + const a01 = -sin_th * ry; + const a10 = sin_th * rx; + const a11 = cos_th * ry; + + const th_half = 0.5 * (th1 - th0); + const t = ((8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5)) / Math.sin(th_half); + const x1 = (cx + Math.cos(th0)) - (t * Math.sin(th0)); + const y1 = cy + Math.sin(th0) + (t * Math.cos(th0)); + const x3 = cx + Math.cos(th1); + const y3 = cy + Math.sin(th1); + const x2 = x3 + (t * Math.sin(th1)); + const y2 = y3 - (t * Math.cos(th1)); + + return [ + (a00 * x1) + (a01 * y1), (a10 * x1) + (a11 * y1), + (a00 * x2) + (a01 * y2), (a10 * x2) + (a11 * y2), + (a00 * x3) + (a01 * y3), (a10 * x3) + (a11 * y3) + ]; +}; + +class SVGPath { + static apply(doc, path) { + const commands = parse(path); + apply(commands, doc); + } +}; + +export default SVGPath; diff --git a/lib/reference.coffee b/lib/reference.coffee deleted file mode 100644 index 20b05f434..000000000 --- a/lib/reference.coffee +++ /dev/null @@ -1,73 +0,0 @@ -### -PDFReference - represents a reference to another object in the PDF object heirarchy -By Devon Govett -### - -zlib = require 'zlib' -stream = require 'stream' - -class PDFReference extends stream.Writable - constructor: (@document, @id, @data = {}) -> - super decodeStrings: no - @gen = 0 - @deflate = null - @compress = @document.compress and not @data.Filter - @uncompressedLength = 0 - @chunks = [] - - initDeflate: -> - @data.Filter = 'FlateDecode' - - @deflate = zlib.createDeflate() - @deflate.on 'data', (chunk) => - @chunks.push chunk - @data.Length += chunk.length - - @deflate.on 'end', @finalize - - _write: (chunk, encoding, callback) -> - unless Buffer.isBuffer(chunk) - chunk = new Buffer(chunk + '\n', 'binary') - - @uncompressedLength += chunk.length - @data.Length ?= 0 - - if @compress - @initDeflate() if not @deflate - @deflate.write chunk - else - @chunks.push chunk - @data.Length += chunk.length - - callback() - - end: (chunk) -> - super - - if @deflate - @deflate.end() - else - @finalize() - - finalize: => - @offset = @document._offset - - @document._write "#{@id} #{@gen} obj" - @document._write PDFObject.convert(@data) - - if @chunks.length - @document._write 'stream' - for chunk in @chunks - @document._write chunk - - @chunks.length = 0 # free up memory - @document._write '\nendstream' - - @document._write 'endobj' - @document._refEnd(this) - - toString: -> - return "#{@id} #{@gen} R" - -module.exports = PDFReference -PDFObject = require './object' diff --git a/lib/reference.js b/lib/reference.js new file mode 100644 index 000000000..3958ce1f4 --- /dev/null +++ b/lib/reference.js @@ -0,0 +1,74 @@ +/* +PDFReference - represents a reference to another object in the PDF object heirarchy +By Devon Govett +*/ + +import zlib from 'zlib'; +import PDFAbstractReference from './abstract_reference'; +import PDFObject from './object'; + +class PDFReference extends PDFAbstractReference { + constructor(document, id, data) { + super(); + this.document = document; + this.id = id; + if (data == null) { data = {}; } + this.data = data; + this.gen = 0; + this.compress = this.document.compress && !this.data.Filter; + this.uncompressedLength = 0; + this.buffer = []; + } + + write(chunk) { + if (!Buffer.isBuffer(chunk)) { + chunk = new Buffer(chunk + '\n', 'binary'); + } + + this.uncompressedLength += chunk.length; + if (this.data.Length == null) { this.data.Length = 0; } + this.buffer.push(chunk); + this.data.Length += chunk.length; + if (this.compress) { + return this.data.Filter = 'FlateDecode'; + } + } + + end(chunk) { + if (chunk) { + this.write(chunk); + } + return this.finalize(); + } + + finalize() { + return setTimeout(() => { + this.offset = this.document._offset; + + this.document._write(`${this.id} ${this.gen} obj`); + this.document._write(PDFObject.convert(this.data)); + + if (this.buffer.length) { + this.buffer = Buffer.concat(this.buffer); + if (this.compress) { + this.buffer = zlib.deflateSync(this.buffer); + this.data.Length = this.buffer.length; + } + this.document._write('stream'); + this.document._write(this.buffer); + + this.buffer = []; // free up memory + this.document._write('\nendstream'); + } + + this.document._write('endobj'); + return this.document._refEnd(this); + } + , 0); + } + toString() { + return `${this.id} ${this.gen} R`; + } +} + +export default PDFReference; diff --git a/package.json b/package.json index de204d27a..944952383 100644 --- a/package.json +++ b/package.json @@ -22,17 +22,23 @@ }, "bugs": "http://github.com/devongovett/pdfkit/issues", "devDependencies": { + "babel-core": "^6.26.3", + "babel-plugin-external-helpers": "^6.22.0", + "babel-preset-env": "^1.7.0", "blob-stream": "^0.1.2", "brace": "^0.2.1", - "brfs": "~1.0.1", + "brfs": "~2.0.1", "browserify": "^3.39.0", "codemirror": "~3.20.0", "coffee-script": ">=1.0.1", - "coffeeify": "^0.6.0", - "exorcist": "^0.1.5", + "eslint": "^5.3.0", "iconv-lite": "^0.4.13", "jade": "~1.1.5", - "markdown": "~0.5.0" + "jest": "^23.4.2", + "markdown": "~0.5.0", + "rollup": "^0.65.0", + "rollup-plugin-babel": "^3.0.7", + "rollup-plugin-cpy": "^1.0.0" }, "dependencies": { "fontkit": "^1.0.0", @@ -40,16 +46,30 @@ "png-js": ">=0.1.0" }, "scripts": { - "prepublish": "make js", - "postpublish": "make clean" + "prepublishOnly": "npm run build", + "build": "rollup -c", + "browser-demo": "browserify demo/browser.js > demo/bundle.js", + "pdf-guide": "node docs/generate.js", + "website": "node docs/generate_website.js", + "docs": "npm run pdf-guide && npm run website && npm run browser-demo", + "test": "jest -i" }, - "main": "js/document", + "main": "js/pdfkit.js", + "module": "js/pdfkit.es5.js", + "esnext": "js/pdfkit.esnext.js", "browserify": { "transform": [ "brfs" ] }, "engine": [ - "node >= v0.10.0" - ] + "node >= v6.0.0" + ], + "jest": { + "testPathIgnorePatterns": [ + "/node_modules/", + "/demo/" + ], + "testURL": "http://localhost/" + } } diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 000000000..cb8dd6159 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,104 @@ +import pkg from './package.json'; +import babel from 'rollup-plugin-babel'; +import copy from 'rollup-plugin-cpy'; + +const external = ['stream', 'fs', 'zlib', 'fontkit', 'events', 'linebreak', 'png-js']; + +// supports using brfs transform +const stripFSInterop = function () { + return { + renderChunk (code) { + code = code.replace('var fs = _interopDefault(require(\'fs\'));', 'var fs = require(\'fs\');'); + return { + code, + map: null + } + } + } +} + +export default [ + // CommonJS build for Node + { + input: 'lib/document.js', + external, + output: { + name: 'pdfkit', + file: pkg.main, + format: 'cjs', + sourcemap: true + }, + plugins: [ + babel({ + babelrc: false, + presets: [['env', { + modules: false, + targets: { + node: '6.10' + } + }]], + plugins: ['external-helpers'] + }), + copy({ + files: ['lib/font/data/*.afm'], + dest: 'js/font/data' + }), + stripFSInterop() + ] + }, + // ES for legacy (IE11) browsers + { + input: 'lib/document.js', + external, + output: { + name: 'pdfkit.es5', + file: pkg.module, + format: 'es', + sourcemap: true + }, + plugins: [ + babel({ + babelrc: false, + presets: [['env', { + modules: false, + targets: { + browsers: [ + 'ie 11' + ] + } + }]], + plugins: ['external-helpers'], + exclude: ['babel-plugin-transform-es2015-typeof-symbol'] + }) + ] + }, + // ES for green browsers + { + input: 'lib/document.js', + external, + output: { + name: 'pdfkit.esnext', + file: pkg.esnext, + format: 'es', + sourcemap: true + }, + plugins: [ + babel({ + babelrc: false, + presets: [['env', { + modules: false, + targets: { + browsers: [ + 'Firefox 57', + 'Edge 15', + 'Chrome 60', + 'iOS 10', + 'Safari 10' + ] + } + }]], + plugins: ['external-helpers'] + }) + ] + } +]; \ No newline at end of file diff --git a/tests/__snapshots__/fonts.spec.js.snap b/tests/__snapshots__/fonts.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..530cccb08963599e50077fc0fe272afcbdcfe2cd GIT binary patch literal 108644 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 literal 0 HcmV?d00001 diff --git a/tests/__snapshots__/text.spec.js.snap b/tests/__snapshots__/text.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..32d2bff7c98283cbdb28aa2739f064d2f7c2e5d9 GIT binary patch literal 5468 zcmeHL+iw(A7^mDjC0r{aU^&o>EwDQ?d*7B8dX=RuZMQAAUhH&tx}CC}S$3vnTLlvm z5`8cxCgOwmK;ok$#>59qjEN*Bh8KZ)iP2}{lmCLhZ_ac&*+o;dnrLXg+xgD@%y)k0 z+lnGPqnZ{Q)Rmk$ZCGqxKF+2sD`z%}V#YB1nXEW9**ehEF9>QOXXGt&WWrJl7E`iX zMxRx6i^&sXteH&+M{4^!x_q)fDAfM;#pf;wGLx7wIU}4nA&5f@IhBe1N=7vWvE7)X z?t<8@rA;;xLA&Ib(9$BPdYU?rqqL)d?sXKP>dDNAGY3AjDdsIDRO=E2_wAQkgnrC8HR~`*|k_1r4o2i*#0 zVC&nvkhE1$9K3iA;+n}F)DrYEIMG?&0ag9*gZ;a>7m`N&?masE_3LOqJrNq|6c}`w ztEi9GN{7m6=`H9kZf}2`>pWD3n~>Aos)riIUjr}FJ#b>exe+l>Kp|4ob18&TJtDPR zvlmxGmGQ;KduY*S3tj&t#}nw?iI zEu{$J;M}BTUu9~E8{DZQh&4UK#Pgcos+-!f!!to}WrCF}5?FCM;LxsEO4i8GH3v#C zLXV_pltNye5+oKE_!daANH`n}vnl5KWL#;xMt6O&0N|m>7mdeDe1S-5UpWdWD(Wjm zvGgKeR4VmFWY4@-UeU5@-iE?KZBfNG#H0b(rDFh=CG;tS(MPs-Y+6d*viBQ{#D&`0 z&b}_;h%nJq48>_6NM5ncqAjVW0KSM%7KuszIFq9RejqZzH|*?>!Zwy*NBk z_NVdAyEab;qL6>_m3#4orz02%ukz_|-~&q9#%;*Tg)+h?Ldwml=OIsmLG;`NT62&q zZPUEUD-WJUX%{_7z3q0=n{Dg|l+x*HQ=-dK5U5nIWhTuKQd(ZeB^;fILHhfW+#QQRJI_%KcLl!x3gtxJ;U2h4;h3(ri1;08pMl(7*! zS}Ntvoy$LACi^N;1Z@Og$8r>M<}uEofdI=0=gc zcohyIAXQ9n-A5@X=t7~Py^5RHbZA<$4@{F8VCu0BOuOYo;5xJ&;?bRe^V4L6dM@37 z*b08_@jIk``Scd#c`)c)uaEkH2$IK}f4ajP0Y!HcejI+Fo$yH#g|`kL_N1AF5`6l6>_f#4LDA9UXUV zDXe>wmbFH8Zyxo3%(BC!KpG1o^DhF|zm;VNOSADv$TM#VSg$h6j!XF0#UEzbrZ$_) zs?7f9$1}u!3dEL!t3qrQm$8XZ@6@(Ubo)VLTtObvgs*NwQ*O9v>E_UZNB4N$0jON2 z%1K@K!gn-zrG8{^-c(>eWc1HaHyiu3C}@fCb&5dbtMJS$jdRVo`b3gkbg=o zBQWXv@%Fg2o>%UNdWIis_$xgUe!|_xZ~L{xk8ltGUxY`YkZ0b%iXTxa?8T4Y0aOwv A8vpSXr3^o|!G3WrD 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 z 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 DZnZDz literal 0 HcmV?d00001 diff --git a/tests/fonts.spec.js b/tests/fonts.spec.js new file mode 100644 index 000000000..a88bf0a6f --- /dev/null +++ b/tests/fonts.spec.js @@ -0,0 +1,54 @@ +var {runDocTest} = require('./helpers'); + +const characters = `Latin +ABCDEFGHIJKLMNOPQRSTUVWXYZ +abcdefghijklmnopqrstuvwxyz + +Latin 1 (Western) +ÁÀÂÄÅÃÆÇÐÉÈÊËÍÌÎÏÑÓÒÔÖÕØŒÞÚÙÛÜÝŸ +áàâäãåæçðéèêëíìîïıñóòôöõøœßþúùûüýÿ + +Latin 2 (Eastern) +ĀĂĄĆČĎĐĒĖĘĚĞĢĪĮİĶŁĹĻĽŃŅŇŌŐŔŖŘŠŚŞȘŢȚŤŪŮŰŲŽŹŻ +āăąćčďđēėęěğģīįķłĺļľńņňōőŕŗřšśşșţțťūůűųžźż + +Greek (Modern) +ΑΒΓ∆ΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΆΈΉΊΌΎΏΪΫ +αβγδεζηθικλµνξοπρςστυφχψωάέήίόύώϊϋΐΰ + +Cyrillic 1 (Russian) +АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ +абвгдежзийклмнопрстуфхцчшщъыьэюя + +Cyrillic 2 (Extended) +ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏҐӁƏҒҖҚҢҮҰҲҶҺӘӢӨӮ +ѐёђѓєѕіїјљњћќѝўџґӂǝғҗқңүұҳҷһәӣөӯ` + +describe('fonts', function () { + test('default (Helvetica)', function () { + return runDocTest(function(doc) { + doc.text(characters, 10, 10); + }); + }); + + test('Helvetica Bold', function () { + return runDocTest(function(doc) { + doc.font('Helvetica-Bold'); + doc.text(characters, 10, 10); + }); + }); + + test('Roboto', function () { + return runDocTest(function(doc) { + doc.font('tests/fonts/Roboto-Regular.ttf'); + doc.text(characters, 10, 10); + }); + }); + + test('Roboto Bold', function () { + return runDocTest(function(doc) { + doc.font('tests/fonts/Roboto-Medium.ttf'); + doc.text(characters, 10, 10); + }); + }); +}); diff --git a/tests/fonts/Roboto-Italic.ttf b/tests/fonts/Roboto-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ff6046d5bfa7cd4498ad4a549d2d9028f6c73372 GIT binary patch literal 161484 zcmb@u2Urxz7ARb)yBXpT2PF+4U?M0AiaF;T(KTSspkhv#F=Ebf&ARG13I@OgDn>A8 z5hJLp?&`X`%JjTbJRjiXI=M~{!U!QJ*f6AR*0@R2JKgR?BVs)j zA=0>6`*xjLj(L6*5!JTE5nA0MwR*Fb!YkpC*U-g;2n;E{vB{&WB#Z6Q39HaKQ%9I`^rFkT#7 zw;eoU(x7dr<&Gf~ycgkz--ZkrInmdz0gYlmuq`EjVW@4P=M0&#giEzJmRLsbM zHCqj6kBGDlo;eg3J2u`Jg9ZRR?fLb%F$3e`w9%xBU7z)cyl` zz%cNa`Pngq_c@Q-F8*G_a97pZYAoER;`b_l@SHS4wgnj6zSoe)!*zs@7F|<1_JY3~ zw#$$k>WTzqB!ukwaCj^d;g~WTybP`&VS^A382FfadJ_%e!}RevL&5IylfGLe~J^)^G|M{$^@Kg&L8$D2v@h9oZn% zQaFiH*;5n+)ZR~ypphiqm_+-b;Vcfd#>T`% zG)Y*2YLP(Hf^|gJ>@A#+M76{mxCZBizGwpbr1Y@>dlcJ+g4hAHS8zgu*>|*4{D3mp zTjL#e6zye)jqgbrqmkA`XP}=ZaOL)okm3TFe64=anBvSFwd3q(yw8j6Q= zjI~ET_yY>XuZ%AAZ=~h>;(g=|@c6I^s0kZrybtiUAp7Ci8ikORs1fUcdeUoXl#q)O z=u2ZJO)>6*{#UrC2L6bA$$sNvp#vIf|VvVoqT{MNL(JuVWm<8u^ z>2h?I9z+f>pC?5JbWC(cTL6~ZQY+&e7L3XR{j_Wws=@XkZ*eVhW^2$-Y$9sRVo^;t z+xT3VgsS5|PzdXZf>{mZNBoe#Fbq|P>*b_4)LC*v&G4TnTo{ZxkVD26LT{k^B-Bud zh5kP3fn}qL`J%e?2-eW4IFPPKFKG`f;SboJ{ERX2Hy)-((NppXohKcQ1<2Yk4BC5W zHqib+)`gGpyTVi=VPEs>k-BzCgbxECRKK>n)iZ zn$Mb`!NM%m0BF!o9EAq4`KSY{ga(U#Xprz2Z5NuLiB{3ZYgQvrBe4fM2J_dDeMHrS z=f*{ntMM1$#Q-?hNJunZVeimNQ9?b16nI|`bVKTf8cIunPQRiB;#uIKd=vriix3!K=+fzCBhHjpC8DV%|)TC7PNWBEa55&V{>31&e2TNSJ;nQvmJ2U z5KR%=1CNdaJRhU3q8jdN04)Ml6Z=5l+IWWZG{;rkYRnK%!ZUGj4DS)2pjc5v?N~h& zBFd!QudvD)dM3(qa_IRCPxs5V<_EM%LFf6*vo0egh1h{I7; zpigTt6de@oK+jc0hw1NVo0MeC726meNm-zaCL({hcNmjUYhe-EAW$?7=5iQyLcdcZ z*n_VKnR{{w^fv>Y`x9v7L9kx|_PKt(YtqLg81yPM!4K^b%b@jim9Y3_;f75LDBu9*UBxAwQUJAAqHUa2#l13;g#JvKA^Be;2}xuZ2u>ji#bjRszuL zHF^g+b(V-xviJ*HA?`v+Vk2~#jYn;SkuWc-f#)Zo18hHP0Qa{cqOmL+imGs3PYXc@ zmqBId7u0|>Miar-#DQ*j2|6Mk^jde|n|N`*sj*wok3kigyr&6khb9Z3 z(P~!5n8I8Ec01z}psg3Q;pBy}0NM{|pW)aInm4piXg1Iy=p3|??8i2&oN)u&i&_c6 zpc^FAn986he4zi10$?mB=7mHSfU42WFm^kmPJst{I?;F=?3fpQY`iNp2Y&qy^LY<+ zUq>{8<0v^BGbLZZqcgy&hi4liA3-uM5Z;1qEe|;4z&uBS-P#R0Q-!(<)^JZp)I+R@ zyu{h?9764d>&iVotUuCT`fJLrWJoqC+QB8#=4U99{G2?BZ=`v_B&=x>j4((@X)1mES zos4(Ezo;Zm0e;>J`u!CeK#);|jnKZK5U`Jvi~8Rj&#@#~b{xYcsZ{Y>!n6o2!7^$HIGznAP&LGHPK z3iI**+H*ga`;weT_`E5+0{$%bDY;);vgf`X_vHW=E!ei2Y%u5$-nb6qI`O|X&>@uT z$P$g~$db*XAGvIoY+N^%Y+N^%9Ea=RlFh7-ON_|R!RHXB{-seq`oBOE0@C}V73qii) z(J(<{{3tX7-M<8BmFp1KDDnaG#CebNFpp#Y8N+ZMQRWrm73Cftvv41l`>o)kDE=z= zq>3-jWt;o^5M%K807Ii|6xO`*qeK<@!<}&LkGpuGf6rUgbbhGbi6^xpw+(4GW2j_mX0zcQE zTz()P;I!aAI`^yjzWKf8-Yi4Pya7Ine+Y35k7dlyS>6pa(RETG8nKYAV)fX$x5;{nBI2U_#FWe|@lF$DMdd7S)j`uhK;^JaYizxJG#+#W%1 z5BmDIf9li!=VNmm`G4#GsYi?APILVE-+D8z{YRe&HVraHii`liDz<{hSit){#^U_X z=fpf$=AO$L=Xo=4SmF#GXXT?xO6!T#w3YFV-~s-w6Zq<8e&Kcr#!%!AVmk9&7x8K@ z^O%Yr=xn^t;{x#4OXpf9qg4>UOcl&_)@^9meHpJeTCs3n-_#h1P;Ke!^H?rr*O}PfXn_@S(J~r8kirk-9e0i?>xgXDU zJJ;Lbvvb?Q_Z1t*{cErT{2XuQSb+P+mUqKF%KO20E)^euAFjNc+cf@u9uIJzm)o5I zptE5N#TSO>6ki+sb+hc6=K>-=3{l`Kl{Ex}gb*qSqChBR0vs^G@~0dyD^UJTsambxS3M82xBrPN)oezi-N=- z;x`f)z>0_zM&yscAEAU%3IKCJ89)G|b9mq>6QJ-i{xpXOUL#4ON+rQAycf0rrAh*j zIjjsuhuh#L#)p*n9v>KP6|5xwADSdutN3*hnw4ZF!JW$3h=a-a6&OHN@%uR-5{HFf z;&117GnJ%*7s1$6PzfqZ2v7wB=%NHT1J;1NK$(cGfZ9NBN#gH<7r+xt#o-3P`1@2q z4H%D7=z%7n6;vvP!kj4Z$4>)+_!IzX`GNAs_h5{oKRz|^UXkN%YD^)Y6{iO$7yJQ6 zl0rHD8ilSLetw0)fV|@yxBxHW`$ezjv=cc-3Wj_-sB#Z%`2GC6`Pg)ZpH=>pN6ZI+ zf{B8bt@60(vgMreI{qAiDI@>~P!$+XVH3FDbRR##xzO^b92dWXPbf!#W5JY}wcKgq zGa>G#zb2 zzo3KY47!N2(Hry$$=Ct%IRQ8bhv81R4<3xC;~6*!ufW@}4u8f*;z1%wG)W_u$Yt`B ze4!YmLq#2^KV3){(-m|()zOpmGQB}>(R(a_g)+$FuzoC-O=9!d4R)X9u|EVXs0C+l z>|M`$uJ>==U%dbJX`{8#I%-|D-daCxkTy&ku8q>x);8A0YiDS8YWHh@(H_yB(x&?g zzRtdGzJ9)ez9GK7Aw@3wIrusGmG$%XtK`?*udm<0fGZ!#w~QZ5HX02^$OsnUss&uP z1FnbAS#$~IpttBVGGaA$!hyIvu7W$`zIaFxuG{co!1X(EFT(XA;Q9b?MHXD=0Io~v zO1gs{p{M8-dJ}L(ERcn*63YPA7?YgKJc3$8n~yR`=Z*OS_`Qn>ak!qu?^t^)v947h^hZY%^`VWy4WjIZ!6 z<9WQ^cn(b7VrcWB&4xA;+6-tDpiMHm8bu?M|CHb1R8As!fZPauHrzMdGh`W#8ul1= z8@3xZ85Y1BuNtrLI}9q=KTv2W{EkrJNoYr)?S{4up8f;c@37wjq1T6B$G+CSZujcg z>o%`@<@L<#hEQJTyiR!?@>;wcpV#2!sJt3^s^>5>&mTd%`~1f9>(A#spY(jf^AWi# zpT|6}p1b1Nf!ukyb91NXPRWhU?UY+Px8~!!&ReZ>#U11TKCEyw2dVfE-h^HOUa+!< z%a>@J(@Xr}VK~0TVX0l*j~~Jv^I*HhbP1=xJ}mBmhmA;cXx*W`fCjiyvDD+r0r~4c z&%xdKruJ{w{%_||1IzccMZyCNMrLVMBPv=7qL zzBC3MrTu7sbc_x_$#ft}p@ZmPbR2S)C(ubcln$fA=?FTKj-s(N4%X<#(6K0!jz$+i zcU?kR=rX#3uF`mP4f4}R=wx)0PJ!(7R631LhxLrx=nlF|XHq?^@7<%b(S16H&P5OC zJoFGfLXYWunt-0rM7jX9*dmbaC3Gozik{IVx(pS7)_jjX(B%TMz>-SR^qH!FPcnKup8E3 zcU*=Zrzb#voCJMa9&}`X_7kpvE8W0ou<+>)`GPJtz3omWihxa z4ri@cYg`Ri#}POZ*T6MtIz7$Wu(tFJJ+>i}nLvbVAm^S<#!YcE)`fMY`LqBx z$1UhP`kswoBXLXmfsLZS(vNs39tJuu7SCYK@mw9M+)Afv-~9;2OQTO<<6PYwuOlkj zr+2UpSJrBq3~j8#eS>wRvJO}D4c5`h+NL@h(6nQB|7h((?ZOrV7HXSnhr|rfu>hrq z3j-HMhiY}GQ}>~;?cCj0S3larvO6$3Ix1Ml_-o(^xO-tVykJ<-3!qm{g&Kl&LgiLk z9Sv;Xy+e0hLSqkI{l?KAzP{Qfy0h)O>&`az@QscR)`=Dv0oG|l-A&L+m33mpV4aoe z4V}8{>U-!=^umSweVw}d`|1)FF7#Lk7?_XGmOeg#(LYbrFL?qe(BuS8Xb-P~&fnLA zpYZqf_XP-}8wcxDm0NY{-ULAO1rV((>&i6=*4b3n1wdz8`A85>)GqAQ{bYT_Q2!HF zD6w<*laTPwkBj!u`2(=p#1m?uThTd=rCnuR{lpVm)T8^60MyvyB&2Tg8^d|qN;*^t z>0!mV64pCl*dBL?3JdU1Bdbd2IBs4m#McFOkCX1rYm`^^Xvap?0^ImH*1JvZN@e(- z5K-B$j04{jNB3%4)r0Rz%P0I4<^HX<$cMK&x7 zxv(WjE$EPo=#E_RZsaJQ<<%p~Ukoz;+lDUUCODIfq0Y1t?Fsth41Ehu9IOg~w5754 zLKESt=qOGVzerl?7pnlPD64i>u~uuXPN;%ZFRlHoms@|aX=pRoCf&BY?FifXwx{h} z?V{`!+GW`X+fTKB>(I<0%^_bMtnQ^g;wU;sI>tG!aXjdF$MJ`gn^SeCROdkF+0Gwa zdb%8Qt?QcTn&zf*>*qGj?W?Ad=4W?%_et)@%Tz2gyG(W&xon%VtIOW^Pj!uzkA3F*{Lo6^l|0t|?pw`wlJ9lD27WPq$$okM#6QY^r2i@Z zi~i63zn60p~+_d})7*wD?P8KGB0{|YM`)+H=4?0OYcrBRi>Ri;;&UnQl=+p4On z0aeFTom_Q$)f?f>!sEkFgy&ZathS>%tsY-u5I3|`KA`?7Ktq~T6(q|-10~(b*uWV zMz(fr-JdrekKOs-4bt?$`NH zXG52vT^@Gr(lxzX*KRMmCq$Qv-W+Z0QLo4B9$$O*{VDjTUwe)1^`Upe-Ya@v=>4LP zSD$KqTJ`noyC#Ok#Kb)9XWuWX-|BuJ`#0}@XaE~9aDaZG_rRG09}k*7*mdxb!H0%O zL!yUl9_l%C)zDAFS`XVh++q0a;rSz4j))#Ha>VJ8wH?=c z+?erA$M+jQWBiKoyT^Z;FnOZq#C;Q!CrzAmdvf#?Hf7M1f~n1>o|x8a+U4mzr>D&* zH>2*1?lZ>BSUkg+5R?#;FfBnpv)0U+Gyj@Zb5^riU1lwvwQ<(@S&wJEo!xTwjyaKY z&d+T$Pcu(5f7Sfo68#br5)UU{SWte!o*AGrV4fye^~erfj0jf1fV zUmR+8XzyX?!v6B+0ms9R*ErtzxDNiEI8pw@x)a||)<3!TtdaBl`W~X|eiaRy`)P_?>PGy{Wbn4esmgcbxv6VY52c<&uW-KB`F7`H&W}Am_x#%P`_8AHzj*%U`IqNE zo&S+xm*JC9DI+qYMMlqz!5L#S5;In1Y|Hp1<8($&#*>WvjPIE?nVQTBnNgXoGka%_ z&YY9ECUbA*vCOlXw=!R5{&7LNQ079#3lSF@UTAxv$Au9Wrd?QYVfBUW7Y<%HbK&ZR zrx!k6L>C<|`d_SmvH8WG7e`&3dGW=i4ww308h2^_rFEAMTuQ%`eJStKmnfbz{$sQ`rI8k=f0&dt{Huo}QhQy&-#dwm$oG_Lb~= z*)OsUIYN$Ij%$urPC!m@PW7BRIZblf{Jj(f$^Jk9n zrgYQcrsigao3(DXx!LFD=$i{}ZoB1r%j;Iyts1xL-|BX2)UENirr(-(Yw4|RxAxxB z-8ymW?5(U@Ikz6%dVVYa*5}*gw)JhN+p)JN+@5iJ#qE8!kK8_a``Yb0x8L8vciiuU z-f4QL*PU^9mfYESC-qLoovU~5-}!jw+g-c6vt$nxC-C=iU-d%Th+ugl)&)$7- z_to9ccMI=X-E+C8y;uHT*u5I}+T9y;Z`8fH_cq--cJI=??0fg`72NxA-~PVa{R;PM z-*0!n-~IUe^X{*`zyE&v{ha$R@4vtQ<$?I1%!A4g>OJW2px=XW59UAE`r!D3><4)d z3=hjZ40u@OVa*3IcQywmPxa(os!#fY(KcbJyKC1et#iId_raxN#Xy>Ej zkFGp=`snjx`q=GpmB+0gcYi$K@%YDyk2gF%@Hpe~qsPBLQ9bc}QsYVcCxf5Nda~)s zp(kgbTzm51$*U)ypOU98Pb)ud^t9*GF;5ph-Tw6C)10U8p9#-ApM^hb`7Gwy#Aiv* zc0Wsdmi6q;v**t~Jd<==Jn1SmN!0cR^HOQ4SBos4!v-HG3UjVm+F_X zFR#3O{R+LZedYeD+^euxwO=)Vwer==*R@`+e!cnizSl=zr@qd3ef9P2*Nb>dqCiczzH(TEvf0O;@?Hl7;&D+qo&EEETJN)g0x3k|Sz1{eB&)cJK&%C|* z_Ql(;`6%Bu-#x!vepr6({O0+c^M~ip%3qqlA%AziKL2$7mHfQ?KMQDqLxD#@P(gS> zy@FN+-3s~_#1>2`m|w86U~9pig2M&J3(gc=D#$LlUyxhyw%}92p9RKu(mS7b5%1c( z8}M$#yZCpD->rIg;N7`*m*3rd_wZfbyT9I}_g3%K@7>>P-b2SV2--E}0?;|TGr8?785I6&&U(RxM@JgFB<9hBShBP*plVr~0XZ)-YZr*t}^ zK4NeCHLQxSucI$@#E^TVz7W#+((;DdBr`((D4)W%uLzZ8ObiA=_kE`z8K#j5KOD(K zLvPYMk=LA|M#kUqR|NxmR8OyRP;=N-9QJ>K)D9rE%b*1jU4?Mm`>#;=mBRDjy z3ifvn#}N^c5pJ$7q8Ny)?A&)+Zil17LTcCUT?=nyuHW~E)*+;JNN6o^kYV&J=16vn zRuFlpP#L77p?YFX`RhoiPRh|ywazLB-b*ECjfVO=Yw&_jquM8a;u~R?u#2`CF!%5t>4Y&kAdbzY(FdPL1A z>R67>OPNR5+T`eLLiJX~7j4u!dpM`oIpyfA)H)aCUbh?_QtRB6Gu|8ne}LXUG8~$( zb2ts>P4ZV7Y@Pi{#`iVLR=;sKCj8}&oz^X1|6|>X^_lL^5+1n!wt7Xi?=!#S4e}to zVFB*92yc`7^0r9cvOpe0{CV;Tqn5@nR$JTz@z+SbPvu}h!$blV;HENT?FR>b98uz@ z;#7utw$0&NHQ(x;u?1zK)|V+h@>A=4a&)i_j| zcCXX@mizDAYm;mc|Nj`X9LEa^{@- zyHm3_5i%F#Fcns7YY178m-c{qL|ErU3-kfC>u?+c)H)%DZ(&YgTS?j00Pe04s*4IO z7Cc9>MXd-0LKTIZRg^9S|0tx{k zfD%DK1|SnvC;@v4nf})`AqZ=T-J~Qd(II)-q!m`8-SI|3llqMZ+Nh+4jhYOyA&;jn zg|o>C6IVi~uPZca*tEZLvDp9{!69y zgbeCn_|6VYZ?xnvBl~AIUUW#F**=D!Zr6%mZU0AeHl!J7HeO*nA86}|0#FsSPVZec zoYU1?t#ioX+pr={QHs;dBBjt*10>aOw$qm7Y^SfFD$6^nt-w2n3R>Q&P1l@Eox7=X zRlCDAU0Jo>%ffSdAFm=Mr4O~746EV{9H=m&hBKZd!Ev}KY5apYfgD_XaiGkVu$Mh?vQC8?i0d;Uh_FMo_qWF)T*jmLYvr_LU+ls@S^ zFm!PHq4hgY0@>WpeDMNE`7)$7={TWC$8puhb>{fi32jyg3+1&qm&@`m1>PA~mp-sBv-9NPz^foa=iOvuz%m^Cpww1B3S*u_Csl)mxl` ztGAmvPM&Z0yD(e6&@(O`U&H}@A)$_qNpb~J11hHZ`=#Rd+j12y5+ns7=ZGK@6zS&V z1VkhL{wHMPCQsaLYzPsqhQ@7d!Kf{1@l|dk-)%b<6H@EVU3~CVTwB>7?>iCG6)+f1 z`p|`-i|vutq=p!<08>OPr;HATy6aTXt3usj#DGWv)M0=|aF!?y!U^*G#@H=(f-HlFRRN1?PXen&?5t9s)bCrj?k!xm zUmaGfUjqed<7~P@vEa@?Ym-JZ`xjwVH2yd|d?)R@W11MuE$$HGTUJT93^4klrh1K^ zKbJ2Jx3m9ZFU+0^C##zU9j*nvEk|Kh1kh|i7AI6Bd4#i%qTZ;eaRR*`i65LeVMSEs z!m$0*Q^zH$@~TX872$`4`AYR~6Ww?^`v0FCUk4=-f$- zWJ!3KFF%WKA^$0fIsChG>96fa` z!-sTK>s6K^;Rx)kUQ>oUhTLI`#EK5$hEl3aipU0@TS{S!8!6LopOanOpxHX-qjrm4 z&P~4S;CSsPxiUGkgjmPyOB%I^vF(fTyzE%YZtp#Nrxz@~0nF9lTNGb_xjdSox2jOl z0<%59Y;T6ytd;estUZSkh3c~r?xo*~@MwJ~-|K_$7@a++g<|0C)jDhL&gjcq&gosC zga)23tJZntaP91Cxdgnfsmc|sf?Py71v!y>1|s7oP-C)xa6Jfbn>Z)g&Mt2Fn5|An z9kFBj@tgLl#Z&wDvr@}%FQ-1UN){)MN!V{|Gi&A|S`{yv5I>iY1@ZV;9$`0?pl=In zl4}+Dyo>>P8wRj=p&@z?Zy$J}2_Ovfg3a?{_N!swlAJ1GI}RSWAZ0D!=>>@!Po14w z=a>Uqy^H0NX*$40ICGU3p>YH4jezDs;cndfDw>nWC&@hz!^OB!3CZW3oaOwRhwh2{ zq{%}P4y)}ak8d%$1}w$hJ|K^2K#2S$=ehiuktfF|&LQmdhWX$rgeh7i&iID@CFqeG z3Pk<%?m^`_NbcMdHeshopcy-b1x+4R38ko)kivt2ognc&y`~rw;6SbA2uLsai%g2p zc#|TG0zupO;y}@XxR`MZq^WBEEcsR2#FVi++t|9u@2~uv<6!061h2(W^2M0_Arh(D zui>PFj@A`p1pQ|A`5oBoDGz5qmGeaQ=G@SucpP46h$Hbm8g=Nnp*3hZ0A?wtNviU4dI%&Gb|pEzZ8du8J2Q9IE%Q5KB*kxx&&rc<>m2 zEAC?1)VZqlL6$p#tl*zp1QR@XuE)8+f=_Sq;el(MOYF1qss-bF_q1}5UtCFl;$X93 zZrfH?_EJva|MjOI6N&i zDq?5vldl+iRHz%hmXYl<;ujOPk@^l?$jHk0A@c}X4idb|C^KiEi#zDEfqExJpXr>` zx-v!dumO75nCamR2hN-x)R_w`k0KFO_MFvvR|~!nO_q#lY)Vo_p+!&#iBz<)#tmX` z0m8M2azSnp^$3q}xbvuSqmeClcO1K;m91Uk<2i>eT2ar2@)S8cSRHU5JKyWMH^Pdt z;RB`~wwIhdB1l5pHiS%nGHcoA*^GU?K76aZP@XGpVg-M**xoHVY~0I)%WLaQ4~v2N zi%Q@R>|{+ro}9iREP-#91gq5Q657kXZgf}`qtUogeu|gCok4KVL^>9WNDZGc7u~4{ zo^mJfZ3C1=Pr#Q@BFJg6m4vH0k^>$JAT3B>ZY2oetNR)P%hF!uNP;01Pg#K{Ux!(U z!%38X6-2=!3P7NTbQEH8pl&fuCAFSej^KsB>6Et@h4(yZrGd(phHN*S-3IVPp)>Rj zR1R3+QQQ;`4@77Jhev@XlG+*e`;x-4g$d=zQcP3ixy$7_m$_!&W&E9<0W0T@%AsC* z?|?u)-w=aX7x6`@7~c}@dRkm5lOLytN>Kiwx|EStD@NKC@!$eL;SsG_XG#&EO_iuZ zlqg(?aFbksAp&s&yS^hjOjFx-?Kx<+<1yzyj_f^Y@0dEdpXM)~^{9huhlbX|>&NQ) zHjACydpskfqw%gwgk9T}vUf=ITKOzwLvXFoklL6;0d|e$TH;1w1H`Y5(R_WwCQUhz z4Y@5sx}Z>9n8~*@dx*uMtHS$XO18*W>2$VmE5!4}5|f6h^<|5Xg4BAy;v>*oQN>5L zYJCICk>cDb5maP^6VO0IMOP6Fi*p14nSeSw(FvpijJkhdIZ{2)34!`xPOdIQ#Bf_Z z;tY2|72@IOk#>nm@o~1+>z>S7GUo%3@c(QSUABxTcf-0ldWgABJCdd#OH?uzY? zVW-8E$#Pk_AX$F39J7w&y5T*z!L5fl19v+@>0bHtwLE!SGOl}o3ahKz;P0MTkn`b( z5{U6I==VjS-zD%Enwlh~I9@Sl>$ryJ4!Q{1M&uM%F(vV(Dk%?oYvm*t1PYEfSN)VO zG3YN{rkY(?d(v?^t`*9l7a4_B^-3UqDEyaMJ#mG^6At#H#>;oG!;HfYb|a_DF9aRVI(l&gHxa>5J`9SQSos<|KiU@pYz}swfh|rNAH{_+;>p;xyKk z)J4pgAK{c66%{lf}t2pQLVSK94R~uj-=vD`qCW3rXD2Avv8V$PVzJ~>Hvjf z+YN=A1>F|8vKfk<0EG(G{~r>hR}sbIE+sVZ!CQ%--6T6jqaHWt;?fLsgr}i>SJHvZ zHcaCK+5^^;jPIZb_7X&~Kk0pxDAqJ=sg$pUuhh0m#szd+i5w>|R0+Sy*K~_-XelWP zfT)FYnUfQDj5Pk-6(CfST)5ifNd-2ggE2|O)FK5t>aPCgc*eW`IY=>aqA2Bi7*m3+f+nFVS+N3UH)Y* ztwBtz%@b=5a+N7J&oXFz$gDsvM88#q$LK><5YiP-uoCm~WJoxLWC)v_HqKCUT$&+m zB)K>;9j3F7pffBbV}QC)i%BrRK_PBY2KZOyqr5L1vs6PW+>7ByPTsJVu;+k6Oiz^x z11xq600fg`Tawelp>P>wpeRoqNtdP__L4u`ID5-B)g~@(%6?}-_v7yye?Y94IWdW_ zpJ$r*UTCk-D&90&sT_a=w35uUQlK|0aK(32lnvC@I@PT2*b<6)hM~z&+_M4gN2icg zFMUlO3&Teh{JL|5*i`H)4id+U^TajcZZSnv^#U%H6heZM$Nofnw=>XjDtYs}p(nm@ zlk7Mndjc_Qkqd_S!Y4&DOSzN^;L#RO**^g+A)8@U0=V>rV`s9(vv9W|eKQDK(VN8M zuxpQ^|Aoq>CaRb%z;IasMXbz3P{f220V6Ju5R56EwbB7{&Nv*VOG`5zFMl9x-VKn2_G=XE0**Ny{JO*>=NX!)*(E3JwwKW~Bcrzz_p z#X?Z55k9C;;@0v&XHQdn=Bb92G81$Tz-ta>=q!ToP*UM?9Z;?WSOFR-Nc6W5+Z)ni zU?Hgzek!!)#Ey)hiykhLTee(~GgcHEY>C@;V@b{!ky_i<9V)F`p%9$ao!{@okBY9X zZ;t+=# z1$QNrC-9Xc6ITD-DKsZ=^lFn+s4i(`^)`xBaWhw(L@hFN0(ZYe$yxHpX2**hly!sB z4LIfXXJ?xuD_`I&gAuzdyXfdJYp(p1v@slo`M_^3F372FSZ_z(;q?jAmcp!H6a*_Z zJCqz?jNZ9K4zLv0`@q!raLFe=JnPJP3f6Hz1d4ft`z!92snPkUb>(tks}HoC1Lz|{ zNjV-aLrx~BC`aG}AD`J19!5i!k44atZfOUj=g z)(kvrJ(~rX?uEs770i@mwls=YZe}=(x(A1*q_d-}1_1YSv;C`FD=#%quI0&^2u|NW z3QkbAkI`VzA6j^?6RNFuC|ViePJby1IspZp%ww5VtlqvPaiGATlK~8^$sKhTw0r&J zwAV?u2RQCMxyNzg;&nGY_6oYfpqKI&MyKR1rH={&)*oi#k!@757drvN7=T1XHS|cb zf|)Y$V5z)eDT`-OoCtGg2c}2~K*C8~((aByy<2{G0b_RfJGYq_L84n~pkP{LMM^1@ zQtG)>+FPN7*@`G)u2>Puc}Wj~$U8fw0{|q*l{#y9!qlGzNw5jWr&(isbn95_dN}@^ z;o^bmtfCxtV9arRPWKD_Qiyh6rcb}OXTbyFf4t;y8t(udD#4x&8vZW?C^awUsZh+T zV*fd4@GUC9R9`g@twFm{3SwZ`i%u;N*NgkalOmjg0uBy2)CogpA|2R1{y&^-!29wI zmvN`tvMjgECynHk96Fl>8v+cKNTlI1c}pNSVdBZE0I3zMk}4pSnyOO%h#Ar%;7sEI zW5Qtl@u%m8vAt6J%Bk1LJ@TkGnxCc@b5$V2J?V}n?hlBQy&&w)Y~B}RaO1gH2l{00)9?3ODA{Z1^P-EmU|+(le#P z11yTpugEsJgHm$msWeVji^a9jm`eh6=l-tVM(MyufaF4n{D9usMoAigSuT+=hAe4G zt?wIHJyPV3dPKQ!SVxCo$g+Y(B~c>vUV|K7D#6 zsZ&(5u8rK6=FnXr_C&7SZDWm~1qV`WRncCaH6a0fWbQBLaMzg8g!E~P`>gCh*o7U2 z{5Fvhj*CgRHo162|JDP67Ct}=8P?OCkT)8j_w>;MTDl_dgD(RE1r&p9CWl$vlq(j+ zAlfM|uZ`02m6T%R%uRK1Xb6)5U#7x}CK%~(zODkEh{@(j6n3Ge;}4gmSEgk43D|>e zl1I)uwds(6r9*Vc@O|St)ZR60Ye(X~TmF_nS<-Y78O|?b>{&+r+MQQyWbBY!VHacb zegpn!YAm2{;5TlxsFfc1`TNyMaK2PgZB2O zWWgWnt8V%R>ugW<;bF5GeQ>^P{l?=Gx!=?ZRx!rGd^ke1I6%*oRW8n(Wq~&#Y0T$C znF2EsW^YNkVm2sxk@2LD-bU&8d=#fl_sEP3%eGby5fxOjFy^|>;S7QA^nFcdD=I}-DX~nGv6a*bRolrsY2|TdbA6}elIF*$JX;HyLY@ngH9`NFt)0DzgYMvYs)6Ap1ub- z4ZdTf?cvuc+)#hLsNqs?;xuJp$-790C_2rIqT=$H56t-T1r=;DD}1S`*azZEs89;$ z3YwG`y@m5sx~3{rtZ?NZ@s-pGJNJ~??NoNa&>i7z-NLH$9%rw9Ugr4@dLSub$4`BU z<63JnE@pUAVHeI}Om4@@gKT&~b=PdYO~p!_&QNm~Skf~$!>35N`9KMDor-W$lq6S$ zBI8)=)$X?ZMUWOMF*k0?HLe^>=s{q>l6nxza5w`-7UeC1B4MUL&O{|wRDu_!&hAOq zC#Ur-xBHlv{O;PQ%Ta^-ZJ&A6%Vo}yfvY<*a-0qw_Vc(dwKuO!cO*VXurQ6Xg_C|f z&Hh^?1G>d7hbU!n-#Ls9&X`!sC22EbJMeF-MD`b0NZ?FFUn*L#g&r6As!k?pQ(OTv z1s#Jj$*5FjD2hKcY?h(IW0vx~f-Qm~inrunJFk9g<6-0 zh?mFGjs?LIO0C|tNfe91i%6}o(Aq4jcU{QXyU0!PT^Pp}R)T7qm{*x-GtP>-fmttE zgaM_vnjD=bRIj!y2Z3gXA0GhC4)a$v(%CrzxYW%R;xSm-S##ZG*WBt2)d3+h%VzuF znx^HPV1VF9ll9vOaayG!8(1p#46RE@osiJlP}d5xq6HtVEYQLhjWfZefMOP^QhLMe zuqhK$oRzXtvQDm1=%0D1E65sr*P_e+nUuOHS{J3Iz)EqS8$6gDOY8IL+7^ow-pdZS z>qY!!hP+rrg~Q@-Upd^c5+LSt_7Na1o$E70Y!-GtJ2?F1F>IX-_hPWTNF1hEs|kAe zrXG07gl;LdQ3_q(T%Y6+4lzErkWVPPs_d09z;2$x@NW%~~mJOChMNL;@NLf)=Zd zsZzQK$P}**m@z3ScFuTS*%hbOuP}?KJx+S)ZnEz zDv|Xv*L0Nv%u+p2!rcMm18< zK4-`MRBzH^MqeBUongE$_oamjZN1T8Ju`W8;5~R1>Go2toZ>B*nMhIeX5DUf^7J-# zJiOr!M2UhD(BGvOj}(Uv^joBfi=c2hvYNs-998=b+*h;C+@rCzh+Z5#qdpdgn@^O9lG^~zn3xk5N4%?+*h$#YN(tYqDNld94hV- zS)6h+9;LWQ@!icxStbj9x*Q&dG_BH=@Qh&UN_s|^8zrd22c-tsIDv1fWGPLa5ovL} zukRkY@L0cDzpP7<#HNc*XA3lT$olcU8?IT9248*881+4nu&Io^I6D|s;73mZpVbse@=`UJM+Zw922%T$47dI3*cd3wje*w`FtL# zYRK6xhX%||PCM)|c9U;)x>~il&GL2nI&3J+S z@KVAZFU2jkvGU@C2Up9%!s6U>DW;)bYr4g&bV3qG1X=2dl?)dzAl85^aM9qEY%Xr$ zZV@EiVPV=wE9uWYJFl~2WLWp!jq6$4CG(mt!os}t1pVU;n#h@F{FO|# zXJ}##7YiLQ9yjppWK*{xpB2~eDXN>y_?pJ&ksvX zPCGCh%4_bOB&mjml`A&yNW~r0<;O*UYZMr@UjeRv&7qk=QRK~hphzNT9;B3LL-?fR zuEOzNJnxJlci|nqf!6tP5#EVW0%WFS*t11_^+E|rC^b)|SW~g_{~StD2bQ7&WTO~8 z!PHqR9ZZx01y2d^b(wcKI#qUF87EI(IqqOXoUj5T8ujBMty*}4MHN1xfiNe=Ou+ps zKxczGnI@wYSf!-ZBA{F`S;AxZU3RWi-pDP zYa#{+U{E9|>c~h)Dek~CvkcSc-3n-~4(&QEtU+oz{MK}ZA5QY$uo|*PU|sr5W&WHd zQ0zg0ME}U2nFlxXWU0{l|1p0?`g#jp4At3(>Qzeh<5XS)U*c;b2n@M`2PA>>xxEciDysuDBIt1mOp^mFi)iq(EvuY8 z!5v?zeyH`Sh5LBi3HI~V54NTZl1Gm7-Vp4r-9>|%71*$>fL5( zJbLCJug_YZU+5#UOK zeh-I281~dYWAXGUwVO9gtZcPOov~!Xi0H=kS`Brg);k^&8W+`w?g^kj-(<8`r#hns zffw_eybf=NT008svgPgOU;-%yEw9AIouVhWTf5)s?8@=&pUI@!_bxwRk;P z9rDYM4??@px~y(+SS^ATAGD*Umz0%FlVF#M&5Om?G8Z~Yt%JHf*h0hw zISkhvD5K=1pq`dniqb?7_$Z%iDUO5bdoEXh?iGPMD7xW-n9Ux)xZd0rk{mi=xxH=W zNv9?RCkM}7xj!yu-9>v$<7bhvF?e3Ocfkkmv?a0F=GI)-7kS#NtB1{D@EiZHDlUaW zT5S9R5z+$T3dFC&^^PSff=Vr`m@}AqFGzTR`SvQ6c!nHhaX~+Py1>gG;KMxlJkKsi z?`nF&sbsY$Of>LZ0OY$h5s{HfK0>KXFIu^hd?kFs)1^DP>Q(6K)o8Sr$2N~mK4q}m z*}Z42Ql)+aM{Q7RafAmMb!Yuxx_J|+@bt!J!?kZByLki;o6OkGnLhwGf}G%&_?NKX zK;DBv&s7Qu<*--!M-3N`3ZQn|QORig6+0!6xvOY7f+^vgDFt!iaf$?O$GJ07!<7J$ zG!hogPPvlK6X~ne)0YxAkKF2Q?HoO1+>$XzQ_>b3jy~>aJ-}uLY9&CuqKhisq9bdtm-z#=L+COANFU zeCPw>=?v)z)xwm8dsF75$iGufVFAq|-{1{TWqY<=xCj}JdT6XA#pwsc@B{qyt`ZN2 zxr9Yorc+N`qxeaXLSR%_k12LW^&x&rz!IX?hZo=P5gx+t|Mzb$!4wpIP7ztm2IaW7 z8VM~T5?H0=mzWwB5X5~~HwN4f(J`y%bbGL!z5M*y!{2R^#d@>4cUtw6%67Q?zWwhm z_P6@mSiERrq2X?{7m1$`wm?r z?9C{>xhe{);TcVca3}2RpPg6l%xpH->Xh~DqZ9s|r$2cl9w5ZT_ zJM4$mhN9b$IzlukQKhsNv}bTgUDyu`HEB|c`a$j3uTZ_fzZH#wUqVwLMY; zwtN(-gSig092Hq1Zt#_fGbtq{)X=y^3U2USRXL}iK=_n{5h;QfqCxSXNLUarx@Ar5 zPpw|Q&EDE2d-KwbVv^XTN1qv9m`Lp!@Ao$ZyJ2=Z6}LI=;$}qW(&eKmJ>6d6-skn$ zbE&K5mAp62`na6Glyq6Uhp`8H`lUZ6Y{x3xr5}{x8@>J8^q|t2vf1+AgyrICr>|r9 z1zJ%e?q@$9EDLnkuf)Sg)Qg;}XfjcyK`Y;?1y%(aeS*h)@q)zhy((WQ$f+Yx1+d94V#fO2wOc>-US>qxp5M$A6Y2`L9Ko?S_{A6coYTV$=_up;mJ74 zD1&~Si6_ttR0}m;@I4}Yu&G#jzIIWv1P_99&|h>)N~mFp7kuwH0b6Z{FGFMC3uexf z4qz8+qK5E`dfjlENCVN@_k(W!)fpF}Y=8x-;^w%h%-1R~S2kdxy+^ zGM=(0cxuMn2l24rAc0Pv+I|M<(oWFU%sa@HGKYDkLUo5Z;~pQe)sMLH_fG%HG&$Y%vqlmqaxg=9)% z!E&T%Ev|}1Fy(=us<~^ae0uzWZ66#1%(Zn;zuD8oI#nXNh+>Uu5#8AF*zJU@9vBDT zwJ#rBrA7N1VePsA3;__i7}@{f>^;k0?qm&`YhJtKl z@4fflyKHEgQrRGcNXsfyKv99Js31K4wBRV`<$Db-1x!o_xJt3UN$D7NzZxC zbDsHrp655n$xx0^*C#o-H32dCjM`To0`q2M97+g>IGhYrVil2K_UKbfCg(`HiwuZn zFE!oUl&y>*Q<}a!!TEkPT9S3!$_A2MTglF+!3Ch*i*!5vO1TJm?M55>K)pnyF#LG%imN_J=+nqx<3r_$jFjV0CBE-K5!V|$YxX32;BBQ)3kruhmMvy^+f=pSpn&pLT z3p_S|`YOe5Ym=*F7TrFXRPEBHRyHARbIFv=D7G0oYfk2R?i-AyYv}h%DQxix>Y0f! zqIQ!+_?fTMVC6~2*^o%lC1se?_p?Fj!|7)7uG8Njz~~6HC3`QLIaw?|R(u=?Lr1*l z1K5hn|H(<{hLDZoJ8-g_2eL8|G~!Hv>c{RKn)NXmbL)(+xFc})oVodmsbH$C6fc>! zd26!Qv+6&lonaW z6)nr_d6LL-1J}AP4NghMol@e{>yuW}wydhc*J+rA8*p7Yfg6wlbCREkdaNRnp&hGO zG%f_tq85JRa%rX_(TLtn-n$q?+K9O@~7hAuLp1e*M~ZTKhAWN;+D zxof>;6S&m7L|>6+p>BhB)W}pxEvSn>;4sCBJU4HR;gOs?!5!^+g)58Z{!4d^SZWGb&1(#iXV4zvLOpH0y05#?=n z=_Q;`n7Rv%OuUxPa1x)HAwDzP@D-3-{IjiT0Y3AA=+W!`j0nSH=i)N}3M#9W^Wytg zi_hGZV!#L{@}c2n^nY}JCIKd7g7^$PhWFS^`UKGdUbhDM9i~PHgvWsJljFY%)TDne zP>a$E)W9zgEF2?{ZL_Hw22ZkW7Ezj}MipqQpch6Am=+w|x6i;O=98AkCtkS_8hUYZ z@0ceIGio&?IW=J>9~!e~aPLWz22Q4QLSJ&=Em?kZ|Ec3cyKW{;cy2Sd1~;7RV;74- z?&;8*p~!m%BO~P2wuAkR(;U;vrz|_Ir)tNzdpHdS5WVPB9Z!(%Qlumn@-N?K| z6r@0gapfg`P>O9lBxJ~5IRL)da+oX`GZOGszZk>pKe4$@%}vorfdlE;AGmkbHzdzBr^ z_vkK=j3~iSN01sNKzcf%3{V7nl`@sIJ_<`Cts^d2D4sO&KYN-ez=yu_rtjp$^_H8C!bXAUul=HTKbL6W5Xg@5S86e3s z_mvwa&pgDMv&+pgNcrd&q}9U}h5hjO5^33?gL7pAVBOP5$VM(}>LDUD5PZce;Cea2 zM9u@nnRX4euL&N(SDKPR<$|d3h5Z%~DCAK9EN(r|@Pw1s&E{&z3ZWE2lT%^1TC{>U z@_pt{Wj}-luK8&_`_@+C8qp7?=#}u01ydC}yGO{w(uLPX5%xM>J?Hw26waHTFN1^P zQP&@1j5Jg?^mZiF;7+3MLTJfzk)`1VnkVJQFGQe`w{)>b=mS)aN)eiR(05k?B0^Lo zbLC*<)$b6f={A5BpeT5?vc%177){Z|LhG7q=0W;aZGGDa>9^R zfhOC=Mn?+Zf6_4X+qB4b24pR*p?3JR)5r%X^k5W z=-sbD=h3pX6_%7_u#|se9Dw|6b=0LcHN5Vi&7R}Shgne@Rm5TThHie1gTRZ^g6SH+ zik*9cd6G~ZjzCp^1Og`&csmd#3OXj$^MpQ7@CYno9RC|&WowzEg8Hc(^;0?cRL<=j zcr-eA4!GT0*zTyR{wAV?HN4*nBx4=VD|cOMDr^MRffQ6!{YR_lGXV4zxP{ABt5Jt) zM9%>P5#ev9$>V37$vnh<*l;KyfPM5JD5zVn;p;+Q4Rf9y^Kw$rm3hb7gqvN>{QZL$ z4DYqGP1Z_h;FV1^lsB#%93{OO0d<*!+26^coF%xF2-tz z&Q~_%Iil2Rj3^Zyg(y8|K7oAF*wPau4hs>HCzxwG`GMe6s*X^Y-HBiW_)aa3x4L7J zU_zT!5@b_VkhJSWo#5!5_ZOCaVF_9J+2U>EDcm%AZnwHS>n&e6#$}tU$Zs85bxu<5L3K;O zJ0Fs3V&*cBuE(I_5r|-2E*V^SBG_%WoiMqdKo*=ZYi~xopFjxk;9*@{9|1FxvbAS& zh%-A;y5agp7{JIWB|ec_Y5I`sFj_s`6>9D-qaS$a58& z3rUWiX?WCnIEX8u-4Bmh7$>|7M~doXqzHKqZq}U#EJQl2;O}ZK< z=C!b}wS_!SO%u`_`=fJ*^&Yx--B=U#v+Vvkzh|GJi`PuW92A;Dvh4wxB9XJo_~9>&@6~AM3ZOTD#$6!Evt3V2FS%|2()#83M!8+q z@1Syl>#wznbPsnb3sxS_k6Ga9x+@QSJY5f@C&Ewow#YSwMTlqIxGUqm1$6Ke^D3taoA7@ZYn);|_t`!i_H=+vFNcx<-XuNHNxX!?HM>&7+ zf<_$ygsVO9GjFYfrigG*VcqQ+n^#g=(kYL;^Ns5fnS6)bWSMdUmQCJtedpqth$LJ* zyRaB~t1A?tG0pk$WYbBIP^y6R<3wN^c;j$(oCs`CZ|@3j;~|mcujP_N<{{Oja4Qo| z5`0&(l7vLF-v)?s%!wh$lh4Uue9l;?Sx8^X1a6=2H#nYxqFhl?x zvAN4Kl>zLpn9EzUo{O(nWpQda3%Y*JSxo-ChI$Uy(Na00F#LR9dE(Q26l<=N$77`_ ztfllT?21^F-wI0k2uL4Hl%S!u#2DBaG2D*A3=D20_*i*3MjehHD>Y?9jhiIzdOgrq z3t14g`r^xlk#nLhZpnJCQdZ5?3A2q-$ll!(@=E}=+YVIV!}Ctp{1GnUhG)|obZ^F*H(3yRrB7Q z;n3BqLoIkgOMIg`0R!tsk8ev%G?~(%u`Ond>h<_a=z?fLrW+thZrd0qI`4ecqTt?u z$c$>F=WlJ^lj^I5{c*0HDD{8(QoEJ!jP7^*hs2BkQ$W6%$h(MnH|C3&NgGNnDEr^( zaz;zR^15*P+Z}eNLx)9MA!k~ae`S0izknN>X=r5F7#9%<6B(sJ|Jj?^|Yv zNm$GKxw<^N2qVwO;NyUMn0M(M%k9>u_!Zs;h-bo$CT;-&jE`TTb7x$r=J;riy-m2q z)y~ftFs1*|b&Z<8F=_Vs>PH?gDeW2t4O?R;hOkW;5`rhMecRT{N6h>jcjvQ~9?_RpdJ>fY&>zf5RtPuNnIe#bD-# ztz-aapu?4OXVj~``5}1C8)1oq&?-sO)6^sm?~cJUTrj^eLJ-VKJ0AOSP=yGoOp5dm zJzuc@&E)2H7MvzzLWPh@x7g=9_dRXt{Kga-5Vkjh9wZqTW=lbX`tLX+N!`|GWJ~l_ zcH#P-BR2w9y8&o72xVxZB(g0)N#mw?udO;XmAn?s)8U@@6EXbumwn5?zKVVC9$&h9=(uG%N zwC!wJ7dB(6Sq{i&kM}LV*dt6zB6SZ=AG_v8tV#BtI&|!@-hkAu2pKeI)82%(ZC_`H z&dYNCpPM5Y$#(T$y+>9a-e}xn#u`~(`zP-4F!d3>IAg z5&ZCGRJacDn#@A?;gqluUX;z1fwvktEq>fIOQH4MOXH(!9ufv!cH?$3aS7J8Q#CvQI{%ZGPLkFe5S<=-eBdQZ(ry) z%}mDHP)6^Fj^goZc%u%<6OHE3T(6eHviXYDx-PL~+F5!E!sDsM|KKXOG1MXguCMSKk z(u3v>5io9!pab)H_s&z?x^ALy%e|Kobm6FcwDrTIpJ??#7U z(XTF4g45yeN#3ce<}Lwm=_?R`ye}!g-%`7vBlBl%q#I2OT6PXnKAf{rrWpU0p9AB1{d;hPbos>AD&IN(8-MJ5tm(6jR-Jam~fP|mJavm>&| zRcq!c(|gaI+_mTIiCt?pZds>hv)17K<7mVmg$z|Fuo+tZK{KlziYIZyol%k0hF<2` z1>8I|cjGvVR1(z`O^%u-JSR7Qp+i3^ktivnSI@?jRG3k1Naqs^K_A1X^2gFKf{{S&R1-+G_ElL7Yl*QcaElNauD+Jhj!aNyma_ z_DOA&lbh1D(#)VaePT04){gC#pnN)RX{EGyB8@SPT}{KAn#lxch%0iLbU`VHMQT#x zMe2F~cT$w|EF5#Nx8}9-g__D@z}fDMDcsUz`qf=_{nffR*&n-=a`p}s(L0EEe9K0X zta9Fg+RC$k(e4h3O#%&4n3N#ZlA1_L9}OkIBU7ruiY-TaUe&5?sw>Vn;-BYh9sYdt zUW1-*(YK3S88}~)oED$j;IGz0`#slkP|xQpWz;lcA&%`Dfx7H;{ewEqi0P!U(&Ee48s! z{Tefi$EK%@vu$bV09AS{C$3d!+15zADPx2Fo49#lGPPT~* zxyki=RFzQyf!jkDu9i$iLGnk1azL||Bc=YG7FKL!pw4^pm*q>9pTvpU{<%-}1cmG= z2{l$SW*Cvjhd|;uT;7%@1~P`9CT~H3AGY%3)9=XT-IqU*za#g|Ty@b_TRa2v9*RCjHl^BjO?yfhKl`%j^Oe=HyN`K(W^j>a5gaT7LGzDs^7qw)1AdfOcAZAJiLSmqmUnV zBX5t2Eh5RTsN_L$z=$n&+h0}G_8zcV*vDCo0oc&ojqme9L z(fT_PZ06F6ms&!)Y8i4PX5aBU{v4u1`w)9keEbc~)%65~;BR=1Vk}F5H{}(s9{10? zq#>f`iXAuT1itMvd>fyj;zrj9o%zr2(}ijrFp|JZe5)ie6%7{Y0h0CidpOrRcX(gL zoiZvQB*O@F!*K#pCBaHeH*{BRDj!eW6OEyw=6p6ZQ1r?EbUYd`=wejdtkQWe*jKX0 zh2;A}JUI>a6%1b(#%5l)4bMd#i-BOQY7|?trQ^&$mi)n{zxPLgQma`XQtQH=yfT@^hE&%O*69B6A_*QS%{B04lU%2f}V# z%>Cdx^bRdQNQ_tHWlv{ta&lUt!K}PgoRSH*qoYboVcY%JIe8DA^Q^d+jtm9t@9oyX z6@b@8LVJ52V{`vhmh$7A6Ccq}VqMAg&}z`RbmvZ~@lGiOX?KD=fI%6Lb(nbGmT&5R z&p+c{=;D5!7I=yBq|*DY*7r+Ya)z53K|w%GfK9h!zwWAHpFL{98a;DhgFd@~=HSG{ zZjc@38zb~r*YEU~IA?q;t;aS*OO7~KCh0=UTsL>siL62$E{{396d7aMa3dXjdPzv+x*eq3CTZZQ#o>_~wy|wX9*heO zJwhUP1*e~_vJx-CUSSUljVTvWNCzn>yx;9fdv69x0nXn^aPQY=9lR0f>_PJX+O(aJ zjr0sTji)=9bEEM%GUCLr6g%h5?PAc&F+kUEU))b^^FA?4kA+SA_@Fm3Su z^VBcqy_ac>>)!Y5zLjkuqvJ{T0~+G`rA5<`YoevSSU;49{4rvIX~0k!bajcM-M+R; zpMv02oMb9LNv|m3avq)Zy$v||slgOWR`UX>*=B*QOfv$48D#}~*(geDaAX{l$qgl& zDUr@9xSkg7C#_t5@GA`I7|}0=CB=QPr%FV8G4b0q@A_naQ=^`F)9%KxDti)1^dB=u z9lk0nf3encHy@8K+DVB->MlM>5(^}0>gTJ5vmINO^_6zQnra1qyAG;8qoLVnI3m;1 zIh_&h)Vj}z{^XhiC=N$^;Rz`7+bRrBzHKi$%n=kRdPZ5r|2T5YJLv^~!PhkxI5My( z51imfc;*O3@YycHN94Y_Nv^ZlPgbgihXrIcS{=6X((z(zV0A*yTG`>rHBd zVTEDDAJ7~VpgCXx1Sm~xQ;Oo{r~LA!+vvMTZ-s<^(6_&T82jq2qvN`j{1v|HZt%=) zfdL~1jy`0`ud=-LqO)Nk!v}1QRj$e(?k}BK^X#0rm@M~Ub(Iqn&yIAhrwhgmSRm82 zTBrH?O$sg%j`}Ql36$b;$S9e|SviIq;apm;iq;12Y9^Ezt=dDn!el3hApwIPkHO@?4`U`0Q)-k1-c()=eG&l6NXxe6jn6Ra#30_l! zKAhg9qv^rnnd>4J&h0uSAare3@xBNtk==QB+4*iElJ%pPrFLDKnv}rqwc0Pa6dyWk z%(AQUkNNv3we4w4J2dIjG`cN&bS3f$`&5ya|GXjURad3p)TOR|xlLC;mr9jeZ?1R{ zYW^D3u2TNB^hj=x=-qTjny!bR$a-i5)`CHf^cWSsnvUwb`RT~DHA&A)hxOuB3*36~ zYFw82O=fdUJ0&vKv*;tcg27I&>7oQViXb=?)yUmIvRL|46% z6NihQ_Cm$+1UYi!xF_l9*n=6G*(T>$Sw_|CF#%QD+*}n9aQ(%k4gr4s#;u$i7Dt+q zZmylNihTh~sPSQ0+YzxX>MSlO?3vP~d4q(+YDd0eqnEf` zKAS~=O0B{`Fv8nViU;;}0{S1ZQ$&cNl5E-N#|^Thzcr}MCrLpnD{efEg?ut&Ut3w~ zFmN4_N=_T8KZ-rSWt(ZVe<%$+z5I9;^3?Thlq3ztz~cyM?vGn1kvP(5H1amjh{J7*3H zc^ln7j2)Be2DQvZ(fcwehz~17wUGh}%#;=^meOD$o+|%Yx}^L7Tcy1tM6*>?*3|xl z_~Tjxnx`jq+Ac(mx`S@IRGyU^Cv~irD41WMTM}eFtZ^&}Av9Yy$uFt=Afmp-Y>cm* zH!xui8}tsf)eWzf932x>OZnm0(<3iPbelizHidR@{vn5b(I6c`ru;z8qm9`#ITSun zP1KCWWYhwmi6BM1y5Q=tLaM_)(b>li|LUR(9AaC69xn$I798Q8SB}&`twtF`)VSug znuJ7%mrX|PvO#2WRmH`IEgN!HdNjA^>Q{q9*KS%BJMZ#0;XxA~_iUUjDI@w1ZkX#A z(BnY!->pICj`ta=1nymXZP6^nFKtBc!Q%)iAjh|l-tk;QjTV`huHC&+^TrLLYa~u4 zQEPA4ue!Ngao|&`+7*k-?HGwg3>_)N=Qc2 z!WE~Y{7r+$%sd!Rn~uNHdYvMTzBw;vV8L$-s65m42Yq#oEZsaj>Seo3@083AwNX|C>Av#r2Pm=yPistP?7ROK^>=RFlt~O=lgs z7I4@!e8{5nv2r}A+ii1zGOEvuRa*L+I@G-VxIors2+BH`|HcxHVymxEpy ziyfFbZ{~%^-NevOg~tN4DFxYvOojMnk>m~R$8}Z`&)&W{_UKTw<)jIu>OGp}>^f=m zs>>Dp75^!NM(*z+?U4@s9PktS$Vi4>n%eBSu-`~k;+nbkC0Y6WOs|~rOC)LGxBRv* zEB`?b!yO1Ww01~lPH2^rgsRbw!Xu@CP|~rzkC@_YkCbI7XZS?P6oKRix49uA5$%wk zu!8ZVRbs>Vj(tWC3m(Oe$4Xy&ZICRSfx@HSjGpziP^tYUYSa6O5Lc+5e zAC)L>q_#BeM(PA6m(ilxzFC3^3_)TxaL}fO>=~o9X}R|v>U5Gy(v(nkow4Hwtz%F? zGNwJZ}^xy!~A?i|94)*{Iy8wH(d zkoA;)alc~3zWi83xI{m$NvWat}Pi9}q;-|r{$JcXentE_Yc?JF9ZBQBs$9pjx5 zAXWsTLfeps;@(6Pj~4(tin(q`zhH1(2xkH*+e3eaXXkv}XKB>F5B}pX1*I0J`&DFr z?)|k(ao5kv5<3@n4v>`@;}1cNwoQd)6`8wm7M-<#rGC83!s?T^Dv{@% zh;Eo7`Bk*=aDea~1u6*a6~&RR+_{7$W42KLR&9IJj&0t{$t(eUjdso}ZdW%VxW=iB zfbel&Y#&_^G3WDP>zYc+hjRUSi`d`01LiG}f`R*Q%+#R zdRX25mC_f^KRxqgm(c8zY?CQ)MAvCsqv9{U8$v_g-n@RRxnYNF*Ovif=QaeCw^i=| zI?)__>fK4>6=_P@Jko)(kg%nh-+cnUYF%td)cnQ5Ry0lOe*QoY7M0$ zdU75ZhG@!NYCQX_jt$0kiODn>TTW+Mlj9r8+rhM{SZ*|}{8CrEze>ChfDZmU0i!8OYD z4sAtewU&rqVGQlwpPwK&*4SLw9n}pZ9sZ&cz>X4;boUAR*dN*n3TD-+d425ytI^WA{ZBiOF`>0;psdS^MbGJh|6{S5d_9|mb&&qVss6R~7 z#Cvl#e?5*CGDol8WYu@u=H)9PWcVM>7K>LQ%-vxRPHa#4ugXjjzZ;+)l}~uirwGEM zeb8Q02VWy)4mm;?o=62l73pkG9H!Uy#Ky&BL)Zi|Ok>!V{2(EZpqJ$Dn5o;#Q$P3_ zGYmfaEpY3Z(2x~NW*?YYdY_GnlUplhz?&ud%dI;<$pvU#wRAm|YPx#z#_z;19X3EY zVmm1q1R@T{Cr_ZoeIeyfglpMv_|>}6i;~a+z%^t9#`a$w95V}3jLw=?E;#n2A*~hX`jiGq z#-(K)iKD|=z&*$2i(-t4B7P*$*A57Y; zzG4oYhcP*>w}|oQOE>>e%&t3yNQZnY?;yr+h&+uRcGbYBt$oX8Z$bxjp0P49?AHum zcp+LJh=y=5(s<;K@5%?vCK6bhWYH{bp9|}7_fAD#PZk5?Ier0T@P?c?*iI*ck+Ac! z3TI)c9UU0}eD>^~tfi;Mo*PMQ@B9)P&hCEg`ew4L_2l!eQuu9mKtJ!%*Be(8&y)b{zWrJ!{+Z?fm?L#*JG2+Pu;SY*L)u z3fHe=6)J!KE;RoeEwVekAW2nSjnv!Mj1?+lvEo2OD^H<-4-fi?ehu9%_MyoWoeOIh zQ=bKJUJ^-1(zx_KJ@w$6i*?97-@^>C9B*VZRb)j!CLIydXNYrwLs?)vT zhe>Yk5GJa|5E_KX4mZ(jJv*pyi8;(nXBi@J;$;azHSeK&4jgV(kG3TH?hoN%?C!U& zN63vjKj=@|thp2(GJ7_t){c+|7hivjLk@F&N_H)px?G0dDPP6537H#$Rd;n@3LnlH zP6_fn0#3u(+GpXqyezlya4mHX7}5*?DPl`Lk`_`G=W6A*Gf~P^QpJsxpPb8e1~op{ zbJXo25u2or56(QjOJBXtQpQ&7!?u$lY#X{a93pc&(3k%HQIg~-EN~(_1ifB<6t{2+ z=p2cBk2pJ@(36kA6=tbMa?i^7o_r49qgfCohKr7&D;Z&szPI^<_i*fTnZr-3rv-fw z{N!ME90;#DNJgXu(P>_3p%x#=n|Dkqom}X0J)y(dwRcFszOm=VZXjQMixCi=KcNM# z;rvGmp!;3R>2&ea(&dkPmsu*^(iV5`Zf_TfO9z&l}?{{~V6V>X=+3En(^?zxDwW>Wp# zdq0PTv)_mH^9$U{{wgf{&Ht?5rr9l)W{(XES-9zyIH~TE>5~>>%OuD_v=dZs?tR+u}_JVsCYSshT(#DAr{ zO+GB2MM46d@k9e;|0VvL{rCA7`^&tmF+dF#RI6u7^3f}YlX?A{GJSZepQ*~S@^`WF}n z)f*~T<$2}aZ2t(8jx4?_d z@%PMzRz8!2d~6NzXS8$I7?Z17uQdBPhMyBT4e2$q-@Hgbj@e_&vI$%LjYmrYK!r?x|-6{ zN4$W05CoC9F{A#Fr}xRD`{y2z2S8Q)ZNi8+p=X7z#b3qWXM4oo4+YkN&mZ|eEWzXA z5sw(;*b<|t*aCx65v9=9BF@L6U(bWJBZ?aRT}{8HuUP=W#6wsBD{xlx@r+vleH{pt za$O4hFxYJY_>jp%47DXQbUwHJbPfwt>%SWTkR#790`}52!$|hW--d^?kG^qz^?*$z z54jC+5jMaqX#Qh_JUV~l7bV(t&}#!oh8F0-&Mg-{BhG3V<1nie%U}h7E_jS|uir<} z`j~+}4ymS2k>wRGD1?A+TX03acnaJE&o(kWvtzk{#(+zYG4r*vbfL$Tp_ecwQtJEP z){Ltuwt!Q}h8?!Ry_@##UNl_lkZ0{eTloL~wJ!UYbv|o};N8grP4*@b#cu5`9DD7$ zc%x8aP@1keC1jxh!8$VhxM{*4bcPpF4_*@yfdB-ZL0azmnNbmw=+*KD73P8PAyj-i zsbyM|fAj~N>t-CS;!mZ*^=q%yK39`8`egO3X(nUadoPWf^Zs9cl$+)tm8-aKfR-f`evr0V zA9fOVgZmD8>&$`Db|Jz7d_)+s8+s%iu8kM|;;sX7mw}2R6JY5?g9>5kaO^uLizQn& zZ~tsW*sZZ(r^&A;ULi62|A(QAMI^h#wFp;e@Ga8pWxm`0aquE7|3*ZgPKaI<103OM zFA9V~(K}LX(Z{Iv*}N7dK=M?;kWjqm6;=@B;!W7tdRGu$FzinlZJ4K|NL()}7Ua^T z_(AM4oADkgoj5$uOzQqX-f_7~!j{Y-F@xE*>tgEI_y%vxEBhH;jHF*@@01D6CENHd zdL9wQuEua=&#S=-icxFPg%N4cQs|n|<1qNC7?cc0tm@7K$>uHn=VGmzN7{ldMg0K} zSv00*1BdQrhEUmP%C@GVQI{I7z){gPGf#92lH%Ei?<~F2GfY;}N&2r7w#IA@XuFb~ zeYeS>ZSzWEO_DTY^ony8LgvnpoOJFN%dC%qjG$|NSsPyi;nV%KBNNBx~M zOGh?mbX~lYO1Iu9D2DGN8EWB-f)R7${X*h3WTy`tMLQUW)xaAp&4z&!t-EOsQ;3l9 z*rC_2g~az6{fjBhJXB%g4~Thd@rhK?d?P)*Rw%8rPGJtG9QHUeIO30ZQ(%v!r*YRvo3yq;rRS6X8|~Dy^kO*oiNe zR*TMiJRgJ;y#5SMLb$ckFjjF-Nh#eX?Q!DQ*oln|a zskY)5ND6tlm|bk%eA7_pF|x(khgBoF>Gw5jMa&*kUS>~+PYYa+<060XP9SoaRR|s~cHF;shrG_$gs8X1!@LH}>l|{=kPMyW=Rc@N zul(?nVSgPxbU7g4O4}BSaoXF{4!v(YAy4i%Y-3>L%`GcOq-1&3( zi~oVsJ$|1w`&?=9a@US?r6+;QK(~8;U>zDbpYU76|Ek)rz}=O~hs%Yyd*)vivYhKK z@C=yV-LF9HQE=NxCh+zJ6MWhij5Csnda3^G_5~MKbV4tMys^aot&5S~AL!Z_{Kxen z=l?gb;`*RdIQLX_nOYxmX%2xPq-J(+#ww}<7A{`HnrM2&ln4I`q*9^|Sr7pn@=(8oS9RZvT#qo(Y{+BA>V zXQ2+?Q3ihQQ3e>OfHflYg2zl+M4o(ATD*)^pIerHvh>j((sMXj#ragK?!1GAxX(5l zPXjTY+xy3~We5qTz0icd_%*=-!Y&b_40x7t7>0iGqW^7w;Nu$m<6v+5f9_8wI6^Tg z{p4={%dTj1mSk%E%G5#L|?8PxGyF?^*?#LK95 z;%27MBFN|8VlNe)+`|r3;Awp4i_+dL(6Q}Uf29#>|0)5C-oP-&k=`(e+l1*Hjm#gj zpi|sU?tPfn=Z=fX9vW)JGx7=I8P0^avY5Be^tNUKMxFDxO>cQ15h?n-@c9Qu$T5zE zHKqe6g`UY~Gy0a{nL3NnrWhkt*H|<P&i{l_`g%!lR&K3}CTf-}W_t5B=Kyw5NJJ5L z@YDIc8WZ@)Dvw6ibt>U*w%f-Re(m?gd&vEw;-a~Oi|RSQgAD8=y$mf|nTX6k`ee!m zfo5st2+^SueblIrw$;Q8>?74^4}q;D>&Tz@Utxz#sd-7;SyLV7BI^`q8kMkJV^<6; zAuAFo{rC*YVXxJ#vB@Y^qOs}?F#3u6tB*Non-^k4d*Q=6n!M9VTh-wQAR?oh*)A~Fw` zh|DP}DcUsX<$6yg-BQ%k!6IOvcf;^g7k{CuU3l8ko19EE>kJvAw|AICM;wSBPi)8MD*WG~3eQ^V zzbx}vE9Cm2F3{drVIL-HotAuz6;ECcMAFG`bdrJy7x5iD>XXfQFCH;n*o^VeUKja8 zLOhh29vR5{mzZ+-+;&l_X3$xMNTO$_(T0NxB8~(sx-ok6-a-C~QL4z^FWdK~-x1@e z{*&#s+4xwp*l&__icarK1|R81q(SGVHEkO6lwDWkPY#kHD`e%wv4ZtHu2u_C1rw@9 zB2gJLN7YY0a0nmK=h-Yb?KNzK!(fgS{u|0!9rIB{d9sNi4^53v=0WvAUwhpXxGehE z0$dk;Y=LBE^9TxuBy-FQ?_7>3G$wd)Or)B_L}!=0$IVFcrR5j9hoXnp+jr+)?i0w$ zU%(tn(orGP$F6!S)})}X!|FFG&~cB5L6O(~UEt50>`jF({$eR%RltE|Rcow4XNND* z*O*S5o$~U)mT39MeWXO;#k}rk6mmQek?N8I^z#>Z3VOm z+R~eB=HihDr`4!JwurSOrhp-`<)tO9(U|n&ZPKr6o-y$6)9lZHZXHNc<3C2^bBmDd zW4+0>syq5@Kh2J|?;#U1jL@N+ODkb^(?i$-$%gp`^p^M9SK69|X{hOWQS}7N%W*N0 zn^62Als_a@NaPkol22HKRuB#A5f<@w@Zo-^9vdQjoFv{(PZ%x2rIC!#|LL|U-j>0w z{zbzypk5N`Ire>a{@HEoEeoP9ZLZO_QtjHSk{1}!7lBVNeRp?--Ia#N2;hPNa`vCL!FV zLxtknRzQhYhT~!dP@|kbWbg-XZK-!!GY4XsG4}yeJk+j3C?v!Lo?ixF0#E3YTch55 z$125>8Xq2dlOCSXZ>FO*$&Y1oLNTrx6L^Lk>@O*#@{h5ElG=*==|ObFP!7COu%#Hh z_!>O#49G*C4VvKyP_Z8Yd}-cGGry`i!O6Xlil+b>FRXr_Ms z4$&MM*V}9@p<{Zs>7{Tz03XrV5&PyCkXg^bfCyVzJ6IoM$>Sw*!K48~93))C^H6OM zS&Yb$F60mP)zRS}5kCR`&~2UzB9Ef$N$$5SZpB`{B=&9V%_{Zg`mHYC?#kf6?l00k zq>v3F^09T>FVXR@aBbjN8dNW;tsC43Er_B2x|#2=cWVE0obY?AVpql&Cy*NQ z1@`BEjTM$JY&~)WJIi1@+;%h~3(vBnee5_*Zi=0ItSE0d)?-9+S!p3KB4JUNveS)E z=CTuR%kAlPwu21jRs=DO1Iq6qaubP|^=EYB+&NLjZPDW5BAlbW5Ot5*3$HVZ&v=&O z4Ftn35n`|+mvCIPA;!-i+?hV1rQiba060Q$#)l_k%g>D5k+AC1BPT5di9}9`{kW78ow@)lb?Q4qeh2blCo~5obvRO=_@5^=`=Y5 zJL`!2^yk=QBDatEmc+ufi{JybO$53&QTrEd7o7bOgz)YKaE1SuO(>twjQR9vujQ3y zT_`9DpLueoEJ@9CdM`51Dw!G3v18Zi=9ysb%J#Qq+P*~rz@q!;N3OKAv?h6yJbe`X z*p)VP8kMGup&#?xU9;RNy=IIOw|jykQbl+nouYM+7S~p*9n_ZYFo$x7hbvVbgG=h0 zYU2oG$YE0f8-p$CkWm2jd1aeWO6rYHPt=-rqO@8yUg-zyMg!Nr(x8y1#Vo7zZ0za! zCG|-?)~kK_@cf|Q?%g24?8JC=m;HTNZm^ZKVCP&5SPM#Ljp#iM(QYDgGq0kOtD0e% zBU;4s)q|>rSU^+yOb<}T<{_(t8c8SL!CH-R$^FME6*toy6`VMS)H2OPZk_^+*` zL!+^m1ay%+WKWGUiGGxq7e`#(aUY4HI(kv9frd^oTy;pI#!aP;k8PO(8l-5PE7(}0 zj%et{sS_F}ZeS?7ONZVLg@xHTv|}hmkSO$X{=d-BN}&{CqR``bRwU z{Fldt&ciT;(r1a#&N+QoUVi^Hn^;V`#-13(1lCB51gbvtScFO{V2 zPBbMkuN`=s9vU@(+VCF%Ug$+z zVqHbBnzvzzfrc=jb!q4L|FSMBP^ws$SM>9Bg+6;-=_a~=a^2#(6Axad!*@JB!KRYb zR!U`3g?-3>gpquiJm0Q2Bu+2b6J0?y3vBw?D%He-G^+XFJbdK8kM7kR9bXG85?U5a z6ba2;hODq2Fb1pxu5U=0BTD=Z7e1V-lAFRv$?!{;D3N(&D!F{%&oj?+T5ta1jj!32 z_UB#aF)ejTFWOV;{&${6b8?!sQtZydoa*SNXHeRL>K0gt^K|>ts4n)Uz4*WG%Md2| zLqY@rTdK1kAZAf)0>niGwp-?~n)&wsYioRqd~4|@(g~*Ri0zN<&rPXYoHgm-<-^zO z7MGUb?bKGrbaI)_fIH(pHBy<~g(g|%KDRV(|Ki-@k;$Lx2oZBM(RBdMg}PZWK3Y3O z5!BE`g%9g%Z4Df;Ap%VtD~<}yMs?_Cz@^Y0pi&u7Q4XIDgJ|Z(FEY1|()p8gUSq-E zNXg7Z$4~so&4TZ~ADwf)k)J8@#g#DSqobpmvPAD1fdS6Qa zstkti#OLb1B+*pYRyy4x(dFye3Nqo|=X42m%_iRvoNE=FYaq@w4%LP|)U665Njpl9 zAe7_8z)e7!aU|$Hj^;wx2<$yw5iq7#$^w^&s>1}2zCcq^8x(_-C}zJTbH7@*KNGQ9 z601~*|M7!T>1DR&$bqPsk{Fb46=#KaEbbyTShPJlj{NTbJ==Zw-4FfAXDmMO%WHf0 zHOf3_qERf5l=>685c9KNB!u&6E3~ESg>y_nwQr##LG5`D{iJmZ5TP9H9EAz5y%08= zcBnpvqGu2_mvkP2pe~PJMr07YK~Y}e0jmH+K#>L>amaWlRbXf<>j;u)LC-?Ywjc`b zDeSjr96Ud8+VZ)?er(JnXu$DO3-(xE#{w)L3?FV4JP=`DUujI~MAQ7uhof`p3UTmc z^}#`sYc!w@v*}{jG%|6Ln-4Yx%jvE{IxT|IMVnEdS(P&YD25(gMm`NY3DKC%fE&rwf7i_Y|xS8nHkrK;+ag_vCsu=v`6+J8Y(G`Vz z-JDc@i?xyyP0Nvs&*sSFOx0ZyMxw?tq6|xmZwQ;1^ABu7Z=D&hA*@kmN9PG|os}a@ zg$f*V7%5yt?sXSkU-Mq3o?#5#7nKY{PjO;yq=dA44X^RnbjQ7&f+pCO6CwR98Kebx}LPpStc&zBwPCi`ext3r= zZ@|G3lG^EUrN(F4!vELiGQ0Q0?!Ml}>C3!2)UD0GV~wWYTa6>Gt6Vr@SS+u=rE=|})jBC-D*SW>I zlQFdDMc-aFT{&c5cUh_<9WGi|0^j2mZY!ZLHfGwZ>-T}l`M6}B&5&R*Bm&NtUx?Pj z4;LOijBu&>1Wgl+yzm zXJ33Wvxt4ij!PGb)My|Xn#BHkf8r3f{rO>JXgV={c7yM*dHHg=hFk)xI9-dAh});B zOO3ABhaFuffm#hH(>Zy3d)^!j4+A6mpUORHu`@s$k($7yZ{E-f2uE`kg1&s4(0s#kjqQoQr_ifwILL>5O)SYxH8l~KiViwR^x8vFQ`^&a~q zVKf<=Mv~u*dPowTBQi+T)xqoH2a&?|sbJ0sYcUzsB?SU}4lPjqp5)CG7e0UXIuVrnMDI)OiQ=tI-^h~4_4W%lKnqhC&5e(&WI0aCx@88a@J zKd#+Vp){|}=)%aBrO$^99X4QTbRX1ww{LwkAoqFpbGz&o{&bGyzhq3U?j^mMp zo{TV1HJt5CPK#u`}IIEVjBhjhd3cqy6JBXLm~j|i3F$GkQaiSo0ipdnp7HaE4zHZAj}Ct`YSf%LoE9QR42_cjJI{@N7hoQZ6Fm_P#Da0#;TXZZ z^I9YvqKLN>#G}}p+uBR=Zo9JZo>JZ0PXC`aExKxA)5_YR=$jOWnixi`Y^TdDKr+xL&vg(WMa&w2MeohV=HC(GXViGvU^`He;MuFvA!m-Qcf$m(47`fqeLxm1md81 z6as^&YvVtN@8C79?(FRR&Q4OFc4j2l)y4ViQFf=i>)+(m(TRuH1+w|b#KUCDk;#Wi zJ2v3R1YTY0{6^kiUZyyKvFPLt_lr!^Wf zPLXC(zy8&`{QX>;AZ0VDQll~<<6uif43>#`h(hM!uQIC=$-Xpp2l6{ea2Sf26wdvS zn^qIEMjVe#ZLd6WukX#P`K+PJpHx?}2ILy() z`yQe|ZAFWlwqcG=-nSFW?A?XH>K^9k<9)kE85~?kea{$AM`MEIyOyJyAaZn*9bsyYE{q2lRrM+?O-+f4 zoV4~rOW5)LO1exP4HoG;QGjO;6k$q8UY*|Y$xDI<6UCK<%_7ot94g{X)4AA<0iHD7 zgR`+`l1h@0rpwgQbf~?1*PW(Qq6;oxb{2V)bQB0#gZvXTWGFO7dq=3~S_$|EJR5ay zLf&cH(GWfktIUg2c=4@wS3J_{wH2^v9Hj^XK`f*j(Kw2i%ce?+b!-Uz^cr*?tshq0 z92{a^G;q?$`3Fh8tYGufx$NK|lGC?W*U7Yj>$+km@|dgh&dyrbw;-Fuw(mZ7i%eYC zD$VbMQz`!tUFclU9vq`J){&%!Rg$d0>1Z>SH_5@`Q1zZQ-PKT(^=3ci5uW4-NiDvusH*`pm!V7>B;eB?z zgEx@V_M+*u%VLJhZL;xfZ(2G|$%00Qt{$EC?*DFNcpUrk`;d*r)~Ex=Uqyow-qN3C z5IMixaDch6#0}D|*I#>=5Z3?^t4Lw@C1muGE$i(Fdd8|XuKJf%Q+3t2>%QHAaN)g% zm%3^mF{Q9wyo;9lvAEiUmfaj29R9?SGGkX*=*oFByQrm8>`Nj~e{b<2R-U#cVduOR zMKWO(u};G4Q5EFHP)jvXy$ZtP*QhJ5g7(65lKc=n_CM^xP=qvjuJ|^8@CJ(=L>(Fm zr7w_TwQBoQWVc|{iX0cOJVNY6Y2|W~%3nO_Ty1^z!4pfJ=f@AOvA$*tatJa1=B^-` z|M;2r4!^DU5_DJZ<5!ps6#&A|B#Tku$OblSG*1ShiLOxeeR`L{xj*XMJybC zMqWzV*SnFi)%4*O(!~ldOC#YDf52>{mKD?r>6)pp?Dm=#|>P|!%3Z8-P zYP||CMBxQ26Lo@uOClNa7mI z^aZFLZ0M`*K&(?Eun)J3y=e(F4;v9aI>wPfkletf^ezl(T^;B1E6PVba3bR;lPsgx z$4F_ht}PGFO>xzqf(*5kOD7im{SBXHt4a>gb`xkDY}l?_nMO_@mGtbDAz!X84(()7 z0Yq+NxDAXFUI9ct2gV&Wpu7Tz9Ouu=@jLttQ~>d3d_O10A(;+z$Nyzp&B^^vG(MIU z6rIdtl>{1N2zkHI*-xzx;&-(f`^+>BJG2^xJHp+4noO!3_ldxHDjPXpd9ZpUN@OL0 zKZI8GN)}FSU1A*(Iv??v8D-E(biwNUBos2zMNAbuBE9I91(Q9~F{CC&_I9~PreAtj zb`A7Q%s?0H`^Kg?ooHT%>&E5zpvF8YA9P?em_?5_v_fN-VxKRDG*Z#bt5wsN;xjwmd3|BxMBJfqrTCX z0Fn&_4IL;krDXlt zce3l(fWmvV6GG&`wZqrNCk0fLTQsB6!k@Rj*ncmnK-w$&6z8W`x}CXCY1r2!`_sQk z76v8UnAW)dH|*H82ueOPVmdua+NIpOUa$Y|ZiEDt{M_^AZ;E{3rH)JP z?F^;l;Jed1+`m}mFj8SZ^4ort?J*9*ZMPUOu{!)2zMPMU^;ki^mm6+BN>`w0kz=4D z*y|mm1Lowy)s~o*8Oa4KHy}lE5{+h?Dv-e_SC3_@UZv_sYK&vuxLIvJ0J0pq6Yn=Og97m&PSjy6_hO7^aZ z3}8+TTg`>Gzg`)JjRKh|*Y?XT(AW=5Q*rLGA1bc-8ZpnkT{(eDYM>X6~Z(#mxG~OFK zWlqfvHSfG@ZL8Rs?fI;{&PI~W-U&{mr+A;8k2XL@j#ypA)*SO84QXb4&8p8f3; zCH2u%9v?8A@UdvK!4lE>j5s2xXga|=j`Qj}ZE+$7>{)f+k~VdR#BGS%QfRJITvs8| ztn7_-8}&jb?-ilJ%a@t&yuxeos#RW9kwmj^{Vbv$?*~wIAgF5Aa+W@NUc+4TcW5a*lX;)R}{srsMt~LCHCICQDch{PkVo!`FYNF{q zH@P?Errgw<$Q=I9+Goy`T<`n7-|tI)&M-rnUDjUZSh}KgGWbAUUZy zSVfc3f|%`}q8ri25B$0jxsK*?`I`qu-@n7El;i3Q?XjlnTjd52)>K4C?z_4CVtzBZ zt)*K8;XK{1*)5Jhx&WG?Sra|Fl<)zs_8^@=u&bzgkB*8K1r_KiVg+PwLg~>eOBZnh zsZ?pk=|2nOohudxZIvb4q=+7@`Ma-vp|D^_<$+LpkmJPK;ivkiEOvd$Pls@6&GPm4 zn}h@fvBfYjarO?F~(nPu-AHkfJRg+ z^4x*5dn4EMpWs#&&gCP%b#1!;ZcLp1@i#$R5V;;XqyLKdX(KOkEsxRfeghxp19cC7 z{rctmjF9y@`kylR*@#&SJQ2Jf|55lh=AN0_rxc|SPVATSu9G4rC%niiJP>9JMdZVJ zL9Wj0szG-fv=pDfRZN9XK61(t_Vc;4MLUB-*KI8ou~RR0=Nq11{i`RB{gl2VY0uO} zn-pe5PYg})2qWkyx}8N>#(KOmKfP(N@pBbm4MM;amQw zJae8$><)XA-*PR2O2W9)^p0|EtayZFq2ZT_L7OWq25r6&NhcG2GH37zNBR~j z5A#6+&VN2T`moRXl)V!5(vHWvCN-+PE_I0T?ZGlbz5m0)wW4qyqBme*Tj|S{qN|drzH6}t8>ZkLiIndd9P8&t~Cdj z2W`s0T^ggs3S8GGP&1usVg4v;gp21zyENl$Bi%w~kZxf`9vg)SsOI#>0HvU*#QIK_ z{0TZPMo*J$Lzxjol`ECFHYZ4ZqV?3W>mfm#ep>(1NA?Q=^QSDkr_OIi@OyLr{L;j4*R&?QS5xN%&lWMdYOxt@%dx<%@l0A9lMx88s8 zBYRmu$+VT%LLIBtY>P+izDSP>|GfPA&$9f_^D~gt+`Dl7CQPELs_Nf*d-)&OjSNdE z{PYa=@$;=MR(96%wFS3%;>Ozc(ml*D!}4u+@!h=}a9Pq>%lj6(=NawP7}{+@cI(5J z`3!%Bddu}fb8afbC8n!cvnm`Ib8k)f2x}wm-$H-~|InuZ0+Q@k~yAs zrGdFimkVBUxgNgyWmp)i`^o18dIj3wIp)omX7Co^s;l2#d;KR@P2QO8Sw3gKiV-%b z($#E?FdBL3AzF-ae+pQbCUPwlggHX9`GlrM3!*CUSahB6p)`Z9<4{Gt8iQ_XV%_C1 z$AY;m;JZt&|HLqtZyEo`8-04Q-n~xi-|pc1#gvNo%M?>}10Sc28UwE=+p<_w8#ba< zhZmjZ)))e2H|v=Ez+@46nV^iP1XqaVf_S22gO`a*Ayt;gnR3(Ugp+Kz zOJF8t=F;TpHaeA9HW|6-I4`16@}{9@a{EWFyS@0Cyu$LkvaGaia^&Rz?l=)FSy$<< zr@pVV_O+eotdhz1vA#QjHF-FFL};Y`Yll9nY_~RRmA7f2Dml*DWp(L~ z2RH5vV6$dFq3{E2#q#MTGDCy!MH5f_V_MR@-VKX84wIGTEc$Z6=+Oml>jy7!eqt}p ze05L3^5mui`&o}3`}Fq?OT1)y_jNXOjvUB&xE2%jk#wnu3q6g`&L#KuE87p=^N{XVSuqD*8mnxoEeFhLjsKp&b=d zA(Q}ZW&p$hamr04A*bxe+4!x;FNV@ieii@yM_+~otzN##AzP!>Q_*S9j~|$opRAx+ zdhoc3ym%*DyJYTSnIXD<_hQlUX01?Ujd#6vc*C4**7R*A5b&d*AYU=jcS}npBn_w z=_=Vxkn&Yi8M*Rez4n~UR^L6>H7tAK{@Ssdq>dM%n%d+ZyoMsMvrtW|b=T2D`@?XF zz(*JL5A@&UeUkm7A2;w*4^O71wd@R4)Pf}oRrH>I=(4O{CB8}3`&D163igg>iYtjQ zARpCZ?%)4$rd|mx^`B{6vRm``7s>n1)T?l$-uf$jM4K;X#^{CBgGcdw^U*`4UGD0` z3JW_CtOOK)v1#xAFe;RHcm6tgtqXhKm6)2|x;s-@29t;5zw7$5rLue(?b?~8S=HaI zbQfcynNJdIe$%Lmqi4SGltqvfoBp^DB%}p}3zY*44L(>xmR6O3$Y=yTfL@P4i5`*? z0KE642QRV;#rw#eH4+GjJCs2eFweG)4qivXr!-i`j_ObC+ZUYW8iZKm#TonrvSbgB z(`K>&)`}&H&HMmm_L6-4B+I1WgW?g)Hx(UAz!k%M*BaaDS0nYGbq%J$70w~OP!Z&z z)tHL8RMA5yb&xx#o>h@rX!VzFa%FebPw0K0oD>Skya2Nn5%11PiByTe&%Bn{XXC^5 zs9xw3(1(59r+hvMcjMJZajp095N!G9TX*jdbvK|xmqOa?HeDo@)np8Nop)1z4n6%| zK7qMUtolk`3PdIaj4h#x{%f&;H)^F2#k*5lHFpjQzzeBO>R=IV#g||=8w1bD0UI=% zTnOIjW!-7DW!7O6D_>pPe&Np2s#MfpN(WYsKR%EJJ!`YB)b&WE@=mv&f3QS0jPn6& zQ5CKK`QdL3bM{~7()g>|kipNsrT>fW4DE(KI%~jUNV2pr#_q?I6=ZZ$qh1B0DM2C) zju_nQ1d9F}Ik_}IRTK{7qH7GzfVitP0rp#$iFG+YsY+w67C(W?0jV0R_2!9*O-3$U zaXHSe+U76it)|bMHS^%b(UQFW-&^7yGSCqo-_U};e{Nidnd|6G?E$m5I?hxa?j;fH z>=%ohj_Q8`tngR8iUJ)P$kTR55l{%G10ozWtKor+)3X!g5ea(j!vXEuO*%4IVvc7* zBxS_#Z6EDA6pT>lKxM~Kg)v*D1;GvV*t&;$-VZD80!f-BwR@>vD;^2@9M|mq@pyHb$)_89#yZ>DN}s2wlkWRT0GjY0DAe0&q64 z5CnY^ZUpuw+R9&l@m@%1>Hh7XMP3X!sQ5D}vU_h?0^hZ9(X6!+-#VWyzcNw!qZe|mvt*wPWzZn z+iE$AeTv>ip5GQxlL(;<4y6-b9vBMhccW*=L~G78IjYOnHOq=WgN@&XX0_i~%JI9= zgraG(;^9aF%p(G(C+2@hpZq|MW*6|uLB#L`h#*V@#NWN{ zq#)Vhs34myW8ygYTal_|MfVOJ+qa*%zkdD2Sh)(hzSI))&R~-RFn%_ffeMQEx64ry zei-i;+Ufm51}+nrT-)?Fd8Fkxj5ZV=CEbSNGhU#?=l~4(lv1?*V~=*vK^{LdKCvt| zbL_a8af#)znfjYuckVpB?_WE+?%8&F-;bEl9AE;yp}B(08W_J2TX=G&UJx$2`NCrz z;f;G$u%RSK9{?%@qJscCS#GQsZzhwL6UrQ4+E z^x17H+Ug5q*phkTktVPvMxR~G*68`{&`!xF=CK=1YvKFzNdB1g8ubLzY$24cqJEm^ zY+m0T%vi8wt*V-ulF{g}I%`1h30y52(q|lZ4KFGjRBOnTiTz0)npFM7uUPH_(FsRX zVYP%asBhzaWEjl%GmZD@`%+8D3$w)WM9T-b7ea!(0EItCk^j5#9}Y%Hl$x7;=~(hmJYbRVTFZ?7cz~IMR4gqTLb4$0k9KB-hX8KaEU$P-U z4Xs#Eyd}UIFnE27QBu(;{fzbTwjBzB0Gp zKCXAq9tE5i^zGGcEN)2b*|RI23i|Rdy5pM#{d&;5<9pJ6j)1Q1CzWHz92O{gjavnl z!HFl11`)Z)iUes3KI3fYE+Etk*s=(=f_{%%cCp{h-y`NcDD*&`B=LKw0%Q`4`i$$x zcCk+9q;h>hq&^>I!YgnZf3QrGt}4|bL4nZBSrDRn^>eY>y=iHtVGf;04oC7${0rrn zWCh*6h;PE#_4h7=aiC}%3;9~9i*f5?^1Zq{Y?QQL(QpXz#Ds*d^n z41Kp6op&-V8;ubOZ^s;w8M$hi25yK}-4;)Q0Hu1o*M3tH8kK=K1DS$bkH^$|rKwpJ zp{Yr!S*cQL#^E?5Qc!UkSmTj=0;c-yJaIyEil z9;i9fWKofG1WMr}k|KB>uuh~q!JICQahoa>OZp}Qpg^#A z611{AlBCL_>Y@)DGK63pdm|`fh1UdU;+~cfP5A{aGcXQMSifv*sulmxHic9`a!Ms!V)0PW<2hxzF^8{V(>vAOB_?{tYSrj;$K!&o_2N4U*TT1rH2$Nm_E0xZxo=%Xb0so48V}S{7x@vwdA+`aAW&Wkss)2{ru=%xc_|nDt-W+NnE!imTPn|j?PU7RUWM#GBd66QP%nSYgaeKpX>E$yzaVoy1u^oqtl7{!}!naW$_!U zRm89^@9anGy10ll`tSpTswDYfcfDi)kRX@Zmj$+G+eg`WZRr8~P*2-+b(fyVKBs^9 zlHOq-R^GZw|LG@qP3>A7i@9)&C-9-8CQ*!$R8^@EKPUvJ-_3CmqH4;m=b%IOyu?E) z{snbT38yH_FC+{ijSb0z-h!l2b|qa(jpw)?6Ma3wc2P6=x4Snw8xycD6prMmitK&yS_^bsY> z^f{k@U%f2q>DV(-$6B&xUk%=tGO^(B{km*kl)f&8&EnO%bey|Vl2Q&=!_B-ozp;|l z3s^9V=ZQztIKOpu!D`ePwFCd>AS^`TVmnD#I4rRw2of=ovSp6iq5uXT7hs|)nqDu zQWQ#lJJT~Vli9X{7uH{nyBu~U{&Fq$-LcOzzmGp}3%L^iV3&TB%?@;xIQRm6-{I-5 z3yyv~r}1|EIF-*x^>z;5`3qY(YbVRD%XhNh*z*l>efN(XU9{MjyeGPgqDLP*1%Qme zN=6v#=~pZ4ITg6Z(Tg@wU=Dv+utmt60gCcDGKdx-C}@=cF1{D`!E}*nf#JgS$IObV z85GIjo~R7UUL?yk|DGw|?YyyJmE}uT!rs#hB0m3htn1~@oT(+_^-nuXtCeszeB1%; ztkrchgioKzZ?gk=s7e%fIofc;RRrdcXjyN}!HDzoLKnOqc1S^s1DqIK3(vu=T|{EFc-Y6Y)6m($DE3 zlGNiZ{n=BTJ9)n;7pHE(Ki2Qz^o!FsPQN(A^_jvVe}sl(RX<@TS3<)jSo#~Q;AfYG zuW5#k9>Ncq6O-nwSwiW`a=61jSyzf4p)=x0ToZX@gn%nxW68Wy>xWc8r2rwMh}p;c z+Y-wYBGjM>c}vQd?0h*hr93H%<$P14T$&oa^}DrQJ6$+cGH%_j1XnhHExpR}-ks-J zZ8kCWRYCy1#My3y9gKpNEHp;%7ax1l^r|G-7C@?fd{l@dj+Z!dWudkt8_u#<@W@5O zcd>J*5W&WSpW#=^RFj+v_mn9{BcpVFM!#6^g?g_h+>E`IaB~rJ-Twx+biehZ zek=wZFTZE)cV7#0Jh4!JiaGV~nDfBu{ro*<{pU+>{>)Y*FR^d!Jk+c~d%cEkrA>fQ z$HQ;RMO`bZTpDMUHuXuJnJ#B4vc9RbQy4D}mjpqTD2Jwn*aSrZP(+v~l!Q9bV!W^5 zev1?Z{BW&~_iglTZ0LD~orHA~$iY&>Jcdhys9aEzr=V_=7hEpzrG9l6?zrcf&fO+JDhu}~H_4jEj6eyH32uZ$8 z?%XK=71d*C)*+V2s#>rJeem~yei3OpGbN|Utd(vs6qcx3Li0**^U+}D#Tx= zx<2a<$_>P%VeqbNncj6K#39p^jhc8-(|jQSAoGP^!Y&OzmPR53+6&YeAUqD*HF`;U zqDwN6k=|EeQ&jW3(o$=tk-XJNu4(unq%a=D)Kz^7Lv;CyzU-B<$}4QqE6=ih8>F4`wXFk>q4Cny zEd!psskbZ`2aq`5UQiQV0SiYx+%3<3xCTkEC*)%6{WsDM`3&@g9hj?IPxuip{SrSS zlY;fpSR|!gsmKQ;A(|P0TY5vj2k8)$HN+fPC)IH-*bH0o4zzo)gA^cDhB0tHXqrwq zcer_3nC@h`>9vL(Iu0H_vHhDx!w2aTH}o3Zb7Kgbi-N+HoNd;p@mPHZTkrY@yQw#3 zH+y3SOJS=@MAd2n@~_;ex8-DT47KNn1e)-p7H4zww6svd*^=Ll|3%QzoSs)&r12xr z4pE*ri2{L>4sbtQ;QB!O$ZwMXCL}vEq|);*Ex$K9Bt&EKn#C{W2Pv+IW+OJ9di&0* zJ=r`cJ1=jh%=a+9dJ79fyZJQ_x761w#>v)2Qf;Y3|Ar+^M$}VY^@}o7*=xzfwLx9@ zN<5cXK7l#1vJZJB;va`GEn$SQ7xn7nceYghqB@ic{OmiHoqQYp4g&+7en-Ny`8#G= zwfLQl_#IU_il2SYQp`7s-vO#CerJRCcZ36Ie$Go6+ePs^A6PcJe<#}gJCA#R$2&Ic zPj@f^bCrL>mv{`l2T%qnw2PT6f{hfBKOiG$4Id)|z2dbhgn4+$Nst{v`$VCP3XlUj z7ZhJ|3~(JG(sUWBJHtpIA0ItnXG59GZHoJJ-PnO|J+}2)zkuKax_0x~3d+3bX*425}F8&&S^NC%q$1#V~K;8a@{ES37BbtCXEm3sd zJ)S@QGAXaOE8mKjYV)-_Y3^;{YlL8|0T$eA9Y~hdQtGZ=Go?rTIgiibrUs&*#fwtV zkh4h*3-7C$PFKQQm^$ikW+;6H<3@5Dw$4$3mMoL!T<|G7Cpc_$3Cq z3|AUKg-^hRmQ+3!Lsz6;S8t znG8F9D_5DY;X#cBzpOa&Al$iy1sz!bR*iWW^$UYT6ZM;azBOlJztgJ|&}FJ|kKq%J zjZ*H)(u@iHPHd=VRl7gYbN%(`Ncok6uO5@+FQ0pw4S~LX`SA7AlDzfddXUebXRob3 z&iRz9d9}KnXxdwrm;D~vcjIB1Pq>y}v*(L5WaS^vV(sDNwnv+#IMnR7(73p**jN;i z@-VHpSa_s7d`&kJ8(vmzz53C#2AR2-mtmq2c%tvyznsr+Z`3BCVeG!dYt9?{bB3kV ztMOdwq$6iI*v%o#`l@0-ah@t)o7eR+a7o%cQ|ubFy>j zP2)ZB&bq=)eS0;oKfG!4Io%_tE^U@yzd^q~i&i(Dvc5sz2i@l_kC?jju`ciRn>?+K zw6d^vQni|mJH9xT*Q}P1wdn6tSlrx27pL;5d4n@Z>Ze)u<0hB;z_4>IAo=@-v$6L?na9L}n=N0*)*y5eYp>qUKf0{i;P&@Jby z>EB;OujY+EwK;dF>M)brTsvF^e5~q$g-fr>ZNclW9yYSIrO6&-0C!f^bj^W9h{YNE zO74#Dr9{l|d~b?tHueeUReFH)ssO8RjJ{L?;|L%fWyp>n7u|DcRSP-GT7Y=M;IkP^ z4dhPHSXZ+UU0I|5#B1mq%NUiRS3^kh8L-ZOxO5(k(ag0RWk1TlLpO#4b@r9 z>?PZ%RrYfn;RfiZT0 z{j$R1#^afzFS12e@O~8H_zA|igeznoDL+z)i11C^OMqZzTEY{ zPH$wRpBp`b!(biA=JFQlWH!ESS52| z{8q_qa!rwLn#bM~rj3O`7z~SQ2&|9(hFj)!(mV@8@+<6zXJtqhoS;sbGLkIKA$bn3 zHgD{PMqQ(t))+d=5yqB>#=d=OK+z?={O2XjUr!17EbbFyX-GyYhWDUlu}>K{c~aRG z&ZBDlSwk5e#s4%3Mq4;YG1xY0#Eh5r!%a4>TKVxK2QX1IWwwZzq%H_CA z+3hFxpC10YI5A<-Hx4}gR&&4H$=;>>z($sw#wSg9*cXd4_t-Tqjn&s;1!`7(ts0!UzRk#)ygAWe)H5oizTY+v_3tcgYpbG9|`c58e3Yzo9%-8>;|GHd<1F?$H9Y| z3YN`$+`O>N@&q`j8yRd`OCz%Ah~4T)f%u{>Qf;kdJ|5;S!^7fcc(AqXNQ(`)T!38! zsG`0S*q7mo^cD=0(%xCxG^-i;YEiwXiQhrJsOL>W!ZN(C;I!1bS6VBp6mA;a=d3KP zk@uS|9a;-dkX+i*Q9Aiv>G*r4qwkfrx>wr5QCfJfbi%#TG51PaqhqK;>*W2}{ClOt z?v)NgPdWNd>BxJfdG|^Oqtz=$?a=yoKLX+59M3DriE0RlvDr>1Z8?1Ns7Mv*a4OHp zfcAl-4gijlM>P-Zh?pp9!at|`nZ9NK zuX3_DbLWTg3)$&DUrP?#+7ZKN%7FoE^Ydo%p!`$AM@T$3vnPvcxI#a#G;Z2#fIZmS zWN!Z;>E6g@wn^RljAeu6L60>F{G%XuYTBg;xhmpvT4C-Vk`RABVAJ>SxBU7Y9tGed_97NM!2R#u#gDX)Cd+F!3GVSA8c!%JiPMG z)H+imr#?3IES{~F!p90D3+oh~#WQ;_2CS2LBd3g+kEeY7JWpp*m$vnqL{=MAFS&=z zy0(Lw?a^s^t3Gn?_N=GAqUX>){rL#a8rQ76#hTqJD!QfLP?K1-nI})q)caUg)8DLI_-AG09}A5q_?*LBZ&}|7m;sNE?w_DL8yZ?l z)3eavPD@CXYEvprxNYFSyFoUb5fV;xVoc&9ftm!LE>Kb$Vn=e&ADNsFTth?@sR+nG zWOQmIa;K5#Ssj@w$4Hkd+f+U-hbE?V8Fqa8rbGNTZ(6%aEg;U6DuLJn+=DpDIhEgDlEPgr&7SFiL(bvk%xZ#U79~_-J8|WL!hLnP#Y=tz}1#JqYhP}@%im%di9Pv!jv_x z5l?`&@-He9Sq^m0`y{4FY3E3uc0fogtZ~hUcj%We^24S zjEcb(`fiR@WKQ`VX@+_i+{8rkdx7@{da!!R*8`hCBnk}I>eh*rdBV+Kt-_J6gqlNs z0}KE(`Si&HK>H+k{|It*iRAYR9n>gVMe5BdbPRM)rjW!as0*oE;L%0%w``IZEK4{a zIJ`s6rJ3y$``AaeOPibKY?q>(9Xp-#S^0bxpUr}MjqAyz{t*`e=M~} z*Wn;UAYh04&%!-^V=k0UqM9KwZY?&Bcph4CL@b`pIo%>-jUH(Gaq29-djG;^= zIv|N4v2`Hjp|jLhsz@^vG#!gTFb0qi2@a5G!!jZdCu110@g0%wY8{kh%d)ky^|Xz! zDS4Eb49+TR72GozY$Vf!0>svwo}RLJTZ{6(LR=R^qLG?uO-;|v^_L0~iXB^zz5g8R zx%k_lycRW!GFztf49aVrF*~Dmiu}d?{lEOZ!{9DV?%-^n*O~DSnByJ!3%MB5tODc7 zGdd7s%rqO!Lrk~An5~3vTaTU`e$Wtmu_ao7mB<$!WL}F1q5e_En5`^38p1(UeTG4` zN;|e4`nZDSJa@ubdqBv@q@X#|aXnuboBYM|C?Qu%mMK9K6`p79)h?&KqXlWP6#1^S zRb7e^+i-^z?TW=aVq@hM;-6Q9DoIL~VvO5oFEHEygkW^*P%I8>45Be37wKMBmaRay zOIy#bxqOdx+@^0V*-;_i-M^oy{TavSzbStvKUBAi&+jMDQ~2r(AIFkd7Q@F$BnGj7 zH^mwvs=*s#M5UaTG*&c=!Fz`68cP>QV~B-UMIwth9oq}XB9+H)|Mu*v%Wq19@BM3s z@|FI_fdi~ecm01n8$$mOwHO3A_}pRmAT)u&2f?GEw%_ivk)9o$`j@kzf3~{ofWID& zmnjyilsE89wS|F&06`H(6@SuX$X_1UH6o@gteV0}UzeBTmE+|8)2PiLi-uw?eaNiZa z_esV|^;EWeJd4)9me)U=!Jc8TClWf}TBLtqEOb*cYRJpL=CKwe(=R%aIpNWXtqCZ9npy2OTX^ZJ&Gu%`0dl~1moK&bWy*GY(7@4uyf<}&E#jTeB9l=VY+JB2Fvg)L?~*`&4a{Qf&>y5A_?FQ zL8uQ`1U|c$Iza*?N>N1lRa7*I65L|wS$F}t(%)0{?{2QSG9b*J&YFCB{;hy#mBP7O zZzaX6%IwJxyRmsM+$ZC{YYZ$Tu71Ni>%B_k61+&)5Hdtj&dnAWqk8IFQ?X*aN zKbL~q#NF~D5(wt_J$vIVvc`GyDLN(qff$AW-;orjfF*F)t-8|cKf#UOXU&v!7KHj99x2V2qvWG2aGHT-5Ub!bpM30q9P|_ zj!1|z32hK=gobPdWtAlbWd%V(E(L+f;uYXhq;q|6Fu#gaEHa=TtI^6ZS*q`HwdI53 zD}TN%S>s*LG(~w^h`xHKyneTiKPblaImQ)e>8M%Vy=DoPdgRISIZWOR42{LxIYxXs zz$Q_4kgNv`EWgeFjCZ}ziv7WU)`RI|DG`XOxbNjQkgz1nFfFk<-M;-lNmz)GFv2&y zja?`l^!BXKl8hfog4ga7y{E$?q9#LB?iUq}&GU*I+O8vS)au6roA2g@At}}Dt7qSK zoQrsW+iTSmg6u1%9-CN4|2~dg+tGWV#5Yy$Z^oinjw)Y1%kBp#H_sm&F>jTm^!R?0 zdw1nMVt2=D%x8B6aAEGQP)X(sbE}1qE>wn4Rx(+>64;uUviyK)0jR({6aaN0zRvUU z-$m~&BDSC~1^@1r4RD>uQkM_$3d(A$CRPQ%4(;C@;ci*)82PTQGS9#%K9SqQG9w4;C}P z2a7c{Q8LXUQzl(g#S_Gl*qhm+!~lB!YH4e%(ughW+IOzkSjlT#-L7xMT79~j?R5R< zTIN0xsThZXIV&pd$0NpJezadElA?2G_CI-Uyesl{*-o4>w`?e-Vh!_g1M7cTL%+@N zlMOLrbCM=oPXpnICTTUEY~l%Xb&?Cqu&$~Tdb{nfc zLn4#5mp!Zm7u@xMUW}0mEg?yx}hCR2ZOqyA_4ntWh%_5!M1^vc)Kof*Q7j)1Pgf1urr82;+vmgDj0K~oN z!cv5pUNF>bu7)#jC~sVG;XU_=GuUq%Zwv}ksA9~ zGkVd$F}J%%FP6q!LC-n2qXZiI-Ja!}CWk)rP6?ZdoiyocCRdFmb}PTlo`3eOAiMtO z8#)@JE;twxG<6(0MdN~6vOiZ3J$++0n?7d5WRTJ@zV=nQa#yUb(~?SE`$@G6)`dAF z^YBs(;jNY~1z6w>1_`io634+>Xn zEe>2bW&2&MYhX#?_B%;YZH|t;5hSr{Uu8Ce5$~YNn|0TL24J&Ro3~b0-mO?ZV%|ns zx%c7<)0)GgTFB$-{y!bU5W~j<9o1`=u(HC2!h?o?1{>wuiwzdiy|{`qGL@MQ6wlVb z>wyK{{NinUxcm-Rtk%sFHa8b9S1%IT5gbbkL=BlT1}AH-(n4;^oKOJUHG-^u%d zGr+s274}p6o+cntqG*(X@XW_QLIi|;_gQ)1`hU4?i~;6LLkN^h5l|+1Ai$SYN-$gD zO$ilC#6JFB_|XL|^{U{2e>_|B*>{vOrDpD;qAm8Y3vFLG7GTqVzjEORrQEu>WbO`D ze?EGqjJ>mt7U}wa*1KVQX?UNaCK0*X{9Wf1{>m{nric$C?Ntbmsx9_Fbc(0B`8h1+ z!ABtLhr^3xGM1Q-r3`&xX?dx>FhP1APLW;uWjFoZ_Bize@pr?h13mp+fgYJsX=*^9 z{x?WXA`YQrVN4o29c(=W=uUayvRM6_o0r~mE_-%)@T{5hPDU<=dinLj$Flt4vy#2? z=UGc6dFgy97@s>2^VuzL05_zurntEw^znXL#_!OYCj^br-H=%{)vHm}+MCwL*zH$c z^G^O)&eDdClnNfsfQ;Z%wj*m;6Q2@p_P+7^iz3lsPSx*&{b;)$i^f9f{ya?$B8X25 z4ktI83>${wbdRMGU5S^=CaLjk?cv^tEBijLN1hrY>u3vkoMrTBE6u4~*b*&1pt6wgdBRbxpYk2?l}lozNY~nUX+-qSohziNyO#=WR`nxaBBfh`!G-9c zIYif3l!O6PFb;qi0mw~aWj*E? z?7_}6tCuXXhd56+lnYi=i(vAY<<*>axor2mXU@xV`R*mB%6R<}NxJ@Q?jlKj6~e%f z<-vtTQY5g72F9?2_?yG>7%-U$rab^Q$!9!BFk5revsv+;@gK&p(UH7=<0p#n2dlou z0?d%oP^%8c9UV6z=>PFoy>mmvrb(gVCO;sZ0iMr5OlOqkBxAi{%7tOK8cTrY)X6-{ zbs>Tk6xgke>b30^vM1=7#dFsx0Xth?XY*&WTK&4z%VDf*OEzme=L^TqUy!{SqkCBO zGoK5dS(;_CF*;!(&Cz+8fzcGUl@QcbvDmW7a>yd(RUE=^T((F>WIu6Zw8`AWMtRF7 zweU1iwn~MPo*w~mBpNy$pl1rQh;-8skWWe(L8CXyju7M_pk80}Xq#tMTQ-N%1G>R;aBN>xniVxdz)m#oA#u zyC0*MHf!CsaEYuwvuxI8Wn19XHUk3GHqG0$Vk_Ck<);%?%qZE*`QidLhWB~Ac?VVt zo>U@g*~d%Oq0_6G^%vrlnlmtcb8<$RXGofA7kiI-23Zw#o<4&|r9zD7CrP7&k&uJ? zr!Z>DHKPTgltD>DF?QZOI7lDRXY9n;s#;pP1y_Tyzz477wUDh%7Yo71wtRmJ0g zEG4I2PG?nZT(?0F-nFQ6v)L0COVXTCOFQRIn6!ZNIeOdrxvd*E$Zf;c)N0f`t9GLn zkd>UO-}xM96esd#y$xv>OJJ^tY3DT_Dq23G`8?EIm`4@}hl=pN!h{n%uV{+M9((k@ zoSF&Y&V<&dESfP*cD4JEN%K_o?9xRmg5)T@>On;C6MF~sZV`ZPRJnCpU~((2J z=AYpF+@|a|KVyrAKPh)@S*==D<6&)^cZ0la1^YHeuy4bt2ZN7mjS;}qahGdHJfA2y zw_qX2t)zIh2+|M=`_|H!vpCe09yB0ppBx#T;&4y)oKA6!=N0}uDVK&u0#(e_(1w^C z?|bvNMSI6|Y&UphhxWtzC@qtlTIH0K$JL^Wk2{Rdd%XSFp^x{<&P+mKu2i)L9eXy=_2Xe(8ns0ClVW&C08vTa}^_8LDmV(jXRgVDXWR zNvx>y*Pctm0+&o5c6Lmlt?!gi)LDZI_Jwlmw7gOK9MW+%Y-HLq1>Jdc<0c(su5Mda zurFUyHWUwDTQ93s$?(ag_Ls)>MVT6V_>;9&apykSLz=XDT;lr&Oyzv;(5L~kkUks^ zHG>MCFXSh%@=kCladVfbYbADUklWW0uC2KV;xL#mJbH+{1i=m@wPE4p^J*bRGg}-E zFYrg8pl@+cI>#wMb~z`U{Gw=(Dx9gfSwSGoIpT~E79cg)S-BhiJ_91w-(6U8s(P=| zTaFX1&(ZaBa{i&I^`jNFTK2MaWpO|0KUw7m$ zUf!tGDWlJ-%6G5PtWm!zf2o`WYMu_1H_@0iE|oBQDvKZhEE(YenXZ(0;hAVPqe*Qw zzidUIr5Xt$;zVy`2>GE9mTZM+_DLW*UC}M_>L|JNAO?knxQFedkG}~+cTaSMR8h?= zCri&)SERs*;0fdP3YPxl^N!$oi}Z3n)3r`H%ig*4#Wd;*xjnZ=(^|20I@E2yX69=3 z09&B@sGX#F!8G2beso#%;1|GCq7)OQ zS{$nJCx$Oi)ru~~c!Up_Q0L~Y;6P;L$&B2mHi_Kxp)u9zEwBk5t zH~(aKDT05H zH1LR=B)ldcl0J|fA7zj#%GmLkN#t3-8yCDVO19M(NFmJthl?s*y;#coZY(A6_O{gGpqX-uKZtt>So6<2s-=-`^$V6xozLCs-(U+z+NaoAqEB8kQj!lhtDr#R) z^fzaYpR!dr&g3s}1f$mV7j|b@Bfe_~t9fHOE1vklkBa=}GYmR&_lD`17fh}^1(9{M zWt(Pk-x)=6CM4RNmk6fJ7pBjzS%N9)sX0V|Mcu(d9bmo)`iRkarKoi%bzsSgXcf^j zVnoE$2x}gg5)k21YHs0O7$nURQ6o)Gtya8mi;G?;P{9(=Du}=ZE)2D_fO*~ew%+)M zDE*C~FxDzcegBTnD zFd~C@FZ9eQmY*nI8B@_;T7OXoLq6oS)t%gY3mx33>HnfMMAg zU47yKk}ZFQ=cQ))WAW^Pe(LQ{;{npQ{(?YyHCey@Y+%Wh9rpkx2P`Tike>aq+cjKa z&3<`|*;yyx^i`IF4fP-Nt5U?=RkHG4+46kcvk9PnIbjgy+7iNKtnB}=rot+llSN=p z3rx8&Vp?EbN0(tue|lxV4L4x}Q5!ZnA1hjQ9}nBb?pdMnN4pU<5>%W|ld|B4rg^r| z%gm#n74EW@WW~CELJvN-838@^a@S~|bCbjHkC0YeRS_7^e|N2k=d(EzV53e+^OCnm`D=6J;5XgrQE zVf(>(0r(LZAi6w&D+cTXWidXN+aSRAW}E0QgJFza3w1kXjGp>M#r-Y~D zK4_`)tDl92>$ks+DUZ4RS(tt6zxTzKyO3synfc@e$(E#lGwaX`a)k5O%l81{Pnj0x zy13?z;=tLiGy3;Qd{*%B1uQhlwJwYSys4QJVhuPa9V>-dPb5 z9Ne&?VIb$D^Ojby=bN%oxT5&x@A?NZ`X?+o>hhiuWAMf+t=mlB9L*nK4rmZ5Pm~Ws z_rSjwy2p@6QKDpy)C`n`L?**2NT!Xd?g^u?Q{dkClx@=SK~AN*kt|40bGk7?)k^+x zGOimk>MFxSIa)`-^7Us)4Hf6|b-V9J*%=Et6{B}aIGNAnZ7lrw&98AIK+OkQyxw_V zJGMUURb6M>`V-9PPE2S zN3Ta{8MDu;n3ahyLeKjciBbin>!K?y5zoLp_m*YRN%1;BWKHOR824SlkI6-@2$RH~ z0jN11FHMct4>sMt{rMaAkgBgjS#)f0-t>hPW6O|;*{#3bP?qnUzxWE@seC7v8+#qOnG@I{x|?IR7GT`X z0Y+b}+un(8DW?3Hewf%P(_g`P_ff(GWq8XewP;mbM*^akPvaS=P(KzFDGE6iS{saG zs0%6-r6%zRKMj~tsq@V1LBYCyOV2s07tYAJwXa=NO2Lxk@IwAa_c#zSrymFo8aNV*X*R8J~u%ky`nuP9&U3Te%S;^Re6BLR`q4(8tp%LRP%Qa@)Y|e;N{0O=9 z(->w*B&KejLzKspS`;8S_;{jc0R>lnRkSeq-b6OZg;#fyv_grv^V+lk2<@0TZPt!A z8dBB`eRW?C3exr4dZU4^+eB;O%e!FC2ZMt~jpu8)q=S)qY5$2kZla5Z3C|lpV4?!a zrF`Xgm~WJ2pk{U7=0%#(&vWuZwfK(N9p@3}&o1T%>Yz7a>wnxZddkO&!}hX%Ji$0@ zoA+G29?`VC2|$|@OP(EDZk)6R5`Xsv^gbKYxb9|E95i^5`d)bjMjK>l>){On3#0-2 z8Rkbi4R9=c3aH5!Ag>auOaETb*S9Qhsjs~Wdmg##LvTKz=(yx$-q^gI~2l!Mw zSaL%(r@@i~Pgr`C$7jZ%w2xjNR^vvME^tAwDkA2w|5m#<8W++eGXuR!m!vDM%MDoU znU^A>^lz`|-EQ%p^qNK6WIlbIUe!hVUH_EHFC92@M@H(u(#GeG8;T@`J{Tu=wf?kV zsf1wM{k3po+@PnDr%D+MteT(uZ4TYnJRpmK@BqAP7zxCZ5LGXu40${Z5;9378d^*R zEnBo;pIUgoNLMHoQ{DI-Ku`4G5eL{lF-!B>UCqvol$0Hpq8+jm zQOrKg4t&zbVPp^zS@32tb+o=i0#Nv}EE5w%pA$wmdP86gP(wO2eqhC*A^Mzuv2T97 zb9?BZiorcu$v^bw%<+Kz%5)q1O}Fu(yn!w;7yWZxbHTA@mawYt;rSgx^~_Q&t|r0s zhJF!>!}mg4z(KMsk8!dRLXT(zIq8|XoGsd7v&LrcnAE;q zScT)^b1%JPv;EXRU$HLue0BMKMSE|_$)Fhh;qrKXaOA+8^zJgR^H^`Tqm)Zetv^31 zd1c!AL#3R$qVsAaEIQQ*i=sS)X zVooHKjDRrd*Qal3`&@yi@hHNNMU_i%RF>eg6Y<%^s<6ZR`2WM9Gstt|l2YvuV7an< zbs9C$^HBgc(P0PU@i~!3rt9T?X4ZE9aH%U88E|msAg* zDi-S(*WIt)k&klgf%8*%0@iF0YMlCEL}7?oSU90AkFboQBd57}=7^ByqkzGOq=In} z5*ET!Q!;arbIirD`Z$8Ee$VxO%Yu?#jT$_=UE zYPhA77V4x*9b@)>5u2Y{GJ`}d#6q(#K{02HkHQfFq6!RNG|7b19YtS^F7Ll_|Ap%j zP0E|%KBiMkOUIV6YxOyQ`z2PO?`vFlt0dLu4QLgBn7YI&bVKUY%aiuA-~YR9^!3ja ztVgnG7xAn#`14z=1)E=5K@aeb$Sw-oD0V^7@%f>aKAPP@z78e7{uhfZ{CQJ49^0JEe)d|prDUwZj7DQLiX&jJ>j_i+&ntSDQvE_a`=eX=jLkAH8efIx z6mP>+pS~wExHx(j*JWNjcE~ug*63sbFGC?cn89&H06KwOm3|kUEXez~kM|A6WRSs_ zLK z+KC1}ciezU!p(pTRtGmN4v}e+WrimEL_dC!fu}tIB2aYS^J*q7Ab}zP9};(-4~e_T z$M8`c;nTbTC<65%a}pq(L+o^zF!+{a!q5naIF}ZBo# zhz+W~QGN#!9f|$~YcwV-YAIra6!%W}`6+%f?iUt$6oO49G@*oQlFIUJ(`>|Ew~_In zuk(Bff{15*5ELl(R3GcDAP6MH0X|6%(e}m6$-YB)oAf0ZxmlPEcxUg`?okRy;{p&`ibL@2BA1KBYIAJz$!Yh19hmP~s0U<13 zK8|>&4=%&YL~k>>HMo1hSeKES!#Hh@zworo!*0%9Cf$5`Yq9 z);F3+WyDj+$yUgIF{c`>I6?1BW($T5RfGO`mEF8m-cSEjFRzID8{=*D*_(M-#`e)q zoo8Tif1)Q#HP14J=4zrp=${z*V>nsCxa%~?eQyK#j(#V~^eO>r8tNMbZQ3EAjAi-O zX;%1J;;G0-qnEP(0Ou&(;5Pk;UPZM>HXrlB;PSyA#J@j?e;Mz(*Wv@iLEH(HRzC#G ze^!55c*C)lGg^fE&UDGptbW#2IJf5d`hh{FYvi}s;)NNRYf%p3tCRqEz@z{=l;uZF zi=s)#l+ZO%#(88AM0m<*9`jd!S#EuMZ~vpsr+ql) zQ9d*8rFQ`LsUNvOfAyNlV@`ypcHilSzf~@R>C>QaG1J(?byn@VYGQaQ|b?hwJyf4ju2TcQ+?w z_;fT2*y~`-BEm9PQ^c)|hX3GaqWw}^=BUNS3C{x7O0&3i2gr3Aqy=L~Lo3=idMZMQ zNA8~w%o5-bv??Kn09vi?oGhv!bA?07TJ_D`TqlS8(6`}->JQq~+??KRQ2Fh%d?Wkf zOQw@QiiXK|?~sE^`!NACX^JmHEDJQNPo0L}O#Do(d6fJ`FaS5bxz)dq-p5RgdLAEX z!!CH6m*5gwk~;UPA`48^Iz*bqlLuCm>d(is%E5!#8()j*kUUAh?t)*VaPd2Zdd{%!- z;LeA(^XyW?qa_Ti@+jaZoHU9#>R?mb0Fwom@7Qg_q0@TTt3d;MB8<)8y^Tgrsrsd64$+kXgbDhC6C=f}py>cV` zt!F3{saNZXgde{Tu8v>?BSkbK{SzZ~5@TCR}VnS2f2rHmkpdA zRY}-X1E7#nzbfy)W7~o=y@Hz}Hd3Qbl{_~VA&K6i0hjVG6ng-}Y}Xy~*|MtsrHq7c znuuzX30g>vnsmz1&7ivbl>14XXW3E#+v4X^0j;D0TJbr*NW7&A@&L}P7osMB#<%{5 zTr!g#0iTS@s!UiuT9x3UD&(F?Nn5{}n7}se2-+UlsZV2;`_|Ss20J4vZwK3*JLjz0 zUuR+7hP$=+im)K(%22lM*Np)|uO4Ovg^urVMLb{i;LdOdFP-7Y-FoEm>WXPzLI`~e8uBd zz@We0PH!p^kKXW45CQ#-HvsDREFZ21?n9(T8=AxT9>_9&ArhTcij(}CRb`;P0{_(Y zAVI1gq0ih}8em=d>B{mq6>a+1l~37i(`Kwn!~tHYAB=eZi5bTSNlN*?LAd#8=D0xx z3VQ~J#KR^aY&HRLQ?$|d7(4>RM|gC&<Rk;q!>z#Vi3+`bltW1k_k|`ef86IH|x4qg)U=>Yi`x$bHWxo z{Fwv?vh<(z^9Pj|pFj4BG*fx$xudUO$6yl-_D-hdtd=fLpCN;y%ImK?1_VR&2LhW6 zm#yZJBh9i}2U6FER;(uz%|LJ*xtFN|m%!?Mh0XH@5T!t@k-|pXJB0q=#&BxvLE##1 zH30J`1%7J^{#Xlo=!OTp>0^Z<+ECKOegPB6O9YC}HLhpMfozM~GW4oi#x_Ul#aNEj zk@}*{EH^3W@r_{-~`1Nq;|OFoOoqi{U4VhlR6ZHnlxbgQ|_IkFUdr6*qnV z?O?6g(n&2 zg(nntM_bV*kjm+iD*g@q>t`4BDh{4D`N9Xb1Cd)IwnlDf!9uSOTaz|;>K{Yc)+oKm z$u{90>V<2$RBdN9v`M_eiVKVHzsGsf_9R*Vx|kAFWLKDpRwr$eSv>eK5$u|IOQxc;hJxPzyjUWg3SitV*F2TF*6d8hjXm*Be^#%k z{zCi(2mXy?<v9Hau^7MPUNabYl@MpR;VGd1t^Q~*M;+Da#~H}C%$8b%jhXWk%eX#PsAng z$;2c6_3f8H4PLOb2%``ZlBW_KC2$w31eZJ~H%AV13~smf#w){X9{}~WaOs6{2L>wq zeBg}HCuj9;`qY}2;{th1@tfWDD)QE)s>OA6lg!3npVgx6EU>4a(Q7^>D<5AN0)5a9 zmhU&YA8bWe&EnHxMEEa%osN$$s>z~aLJJQN9u52yUmK8)G3JtKGfjatwIN~$*z|}f z_RYxs@lQKezBcLBTd`6itNZR#uk%wyBlf-;#AYw$(?_u}Cr3y!d+eKdkenN;@_SED zS|+Rdzdujgwi8}RNA!(ffxQUFUX0XaV=r*FXfNEpzc`HM;7t$TKRQ%p!eOZ`6+QVl zA_%K|9TBJCuY+iV27h$a!0XOdqp7!KF4g&|)?UsX?=3DHIiXztb#KV>i+f+N%WAp8 z=1zKY)_~^w{~vE}0v|=uJbq8l%=3gy4RnMS>cVizgPqz^xo3{T0=epKoEkk{LZszov8D;r_ zcyx;uN<>Er!V7JHLh(e7P9jU6@bZuOWNFu1_l%jl(}R^@!nC-fdh%6R1?`;qR}Yz^ z+(~sG{iJYSmXpXj%-i!s?c1)Na?2&hPkyqbS*=FyomKyityg!y;JQC8I_ZR-JG{;I zSGPXuxD%`Xd@AN_n{z28-w(cyqU43I>x&)37gKS<)e8UQCS*-pnUJ;6J7up7y}T{k zd}WvzCi`TXn1&M6rJNbdl)YI{Y!lKodOe_xYWDSqL)uUA_RYES{+ZWIxg_B(NW`6y7aTYF@ekxMI92;0$9?ABefG~@mFu22_B1=L z8r?!&T{NTn2|auE9`l%+cth=aKJKhpL@RQiUl!}dnMb_wNR8$dSgVXFEvf@(9;a0hiCkg0-l27|>$RhXo9avWA3ytxhCWJhoA)~9}aAiMV9RVr`F zYUS3NA3uJ;OOI@v(9k*a*`ccIFtu`%_lN5|=uLi=bFf=INqpwdjgOyqz3aZ{egFOW zca_}W)K*MbRn~)kd8{{Q0Jdc|XP)le8iz(lwg16IeMg6I>A0plcCt1o?b8;w$<lYt^Mij{Ea>s(CH7jo!^a6u^Uyt zmqc4-?MvgBoaEDl=t*t8B0yS}uo~(?{*b${8q%N17*3a-dwPIOZ^zZu)h5w)IjpA% zE8-eR+t{Z{J@v6_c>FPWPSbVXn=7)uD0%*mH+$A=yl^t7d4Bx*luz@&^*)%VVh#Qt ztL{muBkq|x#}yhMLh_fPKjL5Y%a{w;G}FBQgGQ`(hIxa=%!ZruJFsb@H{v{Dy$L^x z4-&VTu++GF1N;6b*4=c?7J{={+X?ynuoinsj6`$pX~W8!mrUWmUv{+T_`HgX=r z7`&q{S54W^`4NB0!1FtN=e;@Cd1T>E*InSf;f>ho#^)(*6&~{4*wygRh#g+~6*~tV zEG;;8ym`Qbb`V1zLZ48)!1Vf%BD}!#oLV%+Z1)l}!Vp}O#w`02FGK>hnh$5@s`v`l zQ{M5Wdi(4xE4I1rC*JEzmcq<@HH4ZlpSG91p=#_t5c>4tv=9!D*Q>&1_kj%kCiKS{ zeBJE+v!{CZx3TjMaHc+9^aWTso8I}8J#d%wEYTFP=s{Y7NA#cDIurL5HnY1PdT&ncp_hz)y%DZZi%+kAYhbN< z<=$oX;IV4afj5mj=Nj96`ZhJ|SKB%7xhv*>=*@ys`h~6&`%qC0$~ldtLOR66N3LO~rqax#H}78SH}_&Zel|A!2!$p76-# zj98cSD5a=JT3L#l$0Wcc0R@RA3C|c7?Xfl1Q;*yCaB{1j%6Bem?DZM;!YNsGr+dG? zIp>=bo_+gWb^&Pk!n9s>buei}!#n3+Us&}7Q^v<#=(^v|eCdstx(Sc#J8!Pr1&U?2 zf__F0+RqC0Knq1ee3?zO?#{89C!IQCny{evDEPd6BkdQl655y7 z&8$?YdLS0KA@+-$BK}Trig*O4X%;wria2nOv7*}6aO*U_dIn!;2=ysg&oICB$Jjh@ ztV)o=g0md2j zQ}!>hkAU8gnX~qmBxhOSAQ7%uwZx+M?Q_dkyzhNeiWUq(o@L9UKuH()o&2Avz=ntsa0(3ujX2}*mU z1O_vkC#C^qb}rhsjj@lHUVhcJaW|q`65Ddx#(FdqBc^+pv8`1vckY>~eq2|z z&%N}5@fVLPbe%QRpZZLEh^vVU+y;MgreiR9u38C4g<5TPw752zy&`cNB%Bs;5m(}J z+KEQNc@lQB7nTlcVAs3qoL7HcxhdOiSm-I+ZT-Xh+Y%4lKKX|h*^S)sD(B6-ySJS? zJr?t}?CLSs+ceSs=|rzq+*|u++n3&TW2u#w$~jG0UO)97=kdfX9JPO5vm=+KUeV9T z>F0Mazh17}SzPnhYhPt!&1ypJ@@8Z}C9IiFcPuzZv;X;k4+=eq8- zCVtsk410QISaDWsy`Cbgb8)RGDp`b{q-}q3GuCS9;3Nac2#~Q1rORCg*-#1@MrOT5 z9C@mtr(ZDSv7ClG1~*epkGrbi;ke{L9iXBVlsK^HDD;?_bD~`IkxHG?I-{jomu^yFJ4|t zOcQGonS>MT>gt(NvZ$g-S4;Oj+qZYxUNmxY{^Xm~9klf$nq+tM3cQj9Ud5mfzgO)$ z9$33>(eoS6R}Jh*6YP6bvG?WT)4avrLpG;=DOIa<-hD5<=PHjW%{BNduG^}$Fj2Q& zQGAtYR&=W@4TV_Ikl7-=y|!l0aQhGDGTaQ@nv9CBLlOVK@u#fgDL=Y>_(@k;MY19e zHmY@^!?`N@NiS3Vlo*B&Elo-!IYqWN^5)18BuV)LlZws&IF`Jwo`<6L9Ca6ABrg*aVf&ZJo z!+t(?649jsLrb+&$)eRo;qiJzff=c3z$jMa(hEt9O{C9cl;if&MiXC%8?wxdPkfoC z9N_?^M3eLxd$IwL7O7MYW;L;;OgHh$V;!wosz*W`cS`qO5gcADL3 zNwd#eZ?-S?ikde*D|_N?3i=b*g*l z6KX{fIp-v`PpF|^%zz%P_N1XByO5g!JvPxj!adpgGYuW#u9pG*9(oc|GL0#K$A*+d zxa(v#?NUw)FIixu<9f3Ul0X5Nc$8iuZ!rt)w@rN1+c zQ&%4;<5++bXs1O6^k{30p^`aM@idIRB_UKAjFbJl_k%Gj4eewngh~Tl;LkHug0WeW zF)QuYBg@zrUH&pjCBa#SN2SX@^4CLIjv+>tt97eeAo<7D(V^rc`*2V|K~3nA4b)7QM1wc?kfiRUp-p0qyJ{+FTcC2Z`q<=4SEF`-sT<>9D`Ot{_BEVXKT>ako~EAtDv|2L z)6i~q2J~n(6lgf1z3P;PaaP8y0At*m%-rCb_>M@!x@}{>MzGUHx&gNCX$a@{*q0G~ z1=e(Ogi~_tl`QIL%0qJzzchk+)v9D2i-9^Ssn4}V9zeNu9%*D>*?E*|2{4fDD*TS~h|a z*_{1Pe4&<`+=X+KdjTgKYRkYg)Pl4Wfzc8d zj7a>VNa7K`&{7zDqKyW2+7L}2*h2j`5K<5Uj|A06+se?~JJ3KqS6By%_j8LvRA*3y8 z-2<;g*T8nMc|eP`iCZIXtrf!7v^9ahQ#Zm~h>hzJLPwax)>te+Dz+}boUjV{SHcf= zqOST;=5U7l zt?C(OvU5<=hPu1hG;^I$aq~v9tdGf|O^DCpA2L9vcTnshaZ{OP-PU26Z?8MD6202= zcKe)n*5$Ud^yI4IFPAw@rmHqpn5x^I&KF;FqOF?W-eKsulWtbmdk@BnI0wAB{RVxb zZr%WArF#y2z+;L3H0*htxYx{3JR;~DwWnhnZ8{jzuQ>~s^6HDufOVDtuXw#_<~qyt zIbp6rdwrBvbNwYJY_-pvrdfPIb3M_TEs?sUedy-ZkF)%T2-@pGcG+vRNf^mKL1O#~ z2T3LLgbEguInE1jJTO3 zyzr%?+dua9+?=e7s)_HGE?pjX?e`y=xkwEhaWNZU?!qPE#5)q!MYKrlt!4q0)gGc0Q@Jv^g3}o9B-?s>6km?Y(7i_G9H^J4{vCk2vm{4|?@F@42sC_j!AoGv#Gf@9sB3 z&DOQTX!aB<8R=xuhnDjPob7R`TSl{|4ApfDO$uw@?W~TBC&XTK(Dh@oRb^^A;tjRd zMcWS1_Tmgw4gDOjZKeALtr@PwX^!6SCZ zP%~A1A5jzLW$;M-FnFf2Z*@pdw~!uY2F0~^0v@pjYLGVpnHf%A2;Ws7s;-1<8(0;Yc;weyJ{)X|nWFIl`XPYu?7Gg5bsOdJlJ z>FG}MA6ES&KfK}4ry#CsZ;Aa3jPZu2`A4Gp)nNqBG1`h5JR|(aj1>cq8}Qs5JY})D z5uOo#52DxxPY44Z+t+r?;3@QH8Jz)7BETd5_B*k)5uQSSh>>p^#(&ZqWUE*aFyN6` z`Nk}~v=QC_wN*>~OmlaUj2lXxJy_No%3!K>zL6*RLV2F%m&Qk6&kR0J;Q(6R?d3Mi=6W%Rl_N_fRX4q_n^|F_3$K3*~~epi2O029i- zr#C2ew&sJlw$_u2y+6sfjn~(0t~Gvuxo@rYO1Y12IPWJqlP^ss`Hr@Rsv`s^I$SG| zADEmviRXc#+ofTyQ{#hj2;(I^y(|a&ZSd%P5BAv`d2Lx2~#>Vi3e+Hk?>S&S=C&V zBeg){fF}Af+HP-p^)luha4J15rTr1SFSxeZ(IJC;5h@CbjQ(ZPg@SJccpas*!7xG-b|Kw)bdfh1mPX z8o`y0`@}1`-%V3ILLID5670lXLThJwU($P!-WR=xtF5RE-%TK@>;9Q3z>&;%l7`y?rS=F*CU{Q zaTJdW?S3b`U(=VQ=c=_0zf-6W{UXZO;1OyJp2^nI2v6vf3ZA*TjtL&TUrdX^686yB zdz>Yu?HE{eboW_pbvk*yow@GWVCPMJ{}TTX$+gPQgr~LX=oNCmQ`NsS;nDHEx)m~1 z9ve|P#o7?*PuLO)m0PsT43$%^3|sC{9&c9pG716~j+W6S)k^2uyULdl3GNRv_pST& z{WrZcGU16?Kd8Ct?VXVcZ{2Q{>-!Sd%hEMbj;={q;&tnqnBh71_IEf>#BaBvyzIMU zkHfi%MM~`c82#=v{N-as%4mNWg)tEciG!GE!?d9~4g&U8f!=5=y4P>8jIexq{RT_J z0LEaE+G?O=PuEIQpP*P0%&p z;F@l&qeOuMSK}muK?EF>HO#v+b_i`}YuX##9#rcD=t&1*Cm>q3nI2s&b{psg&`dbU z7ic?%(mYc>7d9%sK<6p=KD7XXH?P~Vshi}w>eB6uQzP225x`xROzHCW*57)cG|!ET8Ay z^Z83JG#oW&bj*qM@3Xkz(K!n;`z#Y~9{hmouKCcOUv+ZF!%jWdiNEIL{r!dbFif9F z^wPEs?*ZMKOkY}CX4&_E)@KF}FxjRy zm{^*|V`6EO4+^n_mR4iYF@1xj0DoU=9#~o>_5MBhA-~d^e63rP6Er=e)dG_j6P&`a zza6wDU+dO{fStC-WF|Ccz-T=2zo`ud&r~%r!V}bB-{28{-r$+4RD>slG4zOCH+ZI4 zKbSg9UV(fJ9&IrN53S6J+G1uvVDA#Q>5;7a48`{Ec%qpRPU$*_o=Zc&JU&F%zJ~+o zk?3jwt?QWdI{O56sEt1@_HyEGD10D*K1AIcLPt}ay9Ch3_;3-OR&l4&S8dbU^21H)l?an0{?1YkS{Rl5n#A;C+X7sQe&ECy~@l( za-%O0T26hgs-|bDhUsJd0j5CT^yryT-!`asHK9kV`weaQkYVi8z=%u@#>vDfG>^bk z$0K@XV5V_Unx+hx(9hI(G>-FH&~&GKX)B0PZ_zD;_Z#935* zm}KQqUe?Qt?3Z3us%oTq@Y=2yN0GWoYch%og`{h)5EjO7UB)#IBjNDk8 z+&a)h10!W5FqF|~Em@g%~kFmmwA+?B@$ag)Tz_QFyz?0YunqG!R0qKnS(@hFV~> z<)!6pNhw!Q$}OyM#r12(tfi8QOZUHtSk zuG(Jxp!rN+@R{q(vGb9|7wH?xO}QwPTo|F%C&X)OxzK3B$WRl)64Ve{`T`*}=*_5< z!-#}|5&0XKsYC}uJmGjv|Ehg*7QKPd{l$bg+0clU6#!|q3e0w`M+Rnuf0U&)379bcC~d>rnim68=wEJl0Vaq)`gagTd`o*f z!036n;zdgvwN=*#c{5I&O7q8ip`XAh?(Vgk4?J#Zca&>juxg>STY51$eH~su2e(9> zR(h`o<#eE~vr9Dg(M>dVe1b5l*V1F|qJ9$y{pJeq&G1e4NifQrV6+>u&uM044%OC? zIjJKV7~o)2RgXyi;scphZnS#d(47%!Yw0<%C$xdlWp|J_EqYh<%e*_qde6u+BU)zK zA+gb>9U8%G0$nb&L*e+Afe|ZhU<$2|4IW@Z9TS+v@s<(HbS+=nY+w#Z>ID`7MM_KZ zD_shsRcFHuvJB@AAWPZy8ce`wSuP7@$=p=oM&8APKV8=r-pmi|rapsOV_y+q?`yCV zOA6av10(t@Fxb{JbXfus)`a@r8FG@ffzbXLF=}WxZ%Y2=%_&#t{CTrukpFN`xttRX z1m16;Kdv?EHhkIvczKKtG6fK`GBQ&)C;z^j+dfF}8kI*p% zJ;%~O=z3)!MvT^_2ShM~B7l(6Gwpey^@=GyV8Y&v$wxd|1M{j?VLV!3@{?>SqIFcD zrs*;^P}8ka&6EL&$|#a@ipuOYab1y6tTkifa>Ea@~gyFZAlXFbWZN z=!@Nkvg?K{(#wikY&p^?J^7X4MIC~u5rZ(h?wS|`=VCXUcJKM8yNPI4gL~!dFKe8V z{m7Sx^}M2U7=;*dLGJpusvVh4N$At8wf$J7b!##`OszQ$(!Q1PiA1-=CqlPQ(h%t$ zxbd2_Z)G3~?$Gk9*1JxkEp@aOe-~(R;8|t#oHdNLcLrvvYGSAXChQd(Jfg1xLw&hG zYh6Z<_dRkN8$Xd=>A~o0+=bLZkSJ7GvU9qs7)c{>fVZZ|44w@m}2T7~DTw z>*yG)_R#oA+&?_HKTz)xR6rD~t;W+W&*0JZ$lnQ`@%sMp2HvAqkZ&uf*{Sb;7{K?} z_uKftajNDhs5Gs@yZ+&R3O_-61kuhPXleabMJ%b2rCju9HE+Z}g z$+e8J#AW0^jA`iW6GC`BG7*6yM@nXr3BYU>gzX=io|Q<60ZebuDj~%U}6HShmNH0mk@n@2Ix^UjoAnoG|8mkT=BH zqwy@%n){CGY4Bu>_&mfpxkKXz2c?P59aJh&DQ0;TIbt@`;UMsv!E8cT2!z3Pq3rt2sd5g*`3tBe`r(Tq0j*Wi`wu?R+355bl<%s9~?98}bG zFuh`_wO&%eMnN2f!#awLWi717%h>0owN%rh*43v_n6n9)cg1Sj_Q9gH*0$@gl?`(# zn#3Es-JRi$7rb+ z)By|Bn8MRfZ1&Ku+dmrWu)y_h_3(4H{opMxoOx86`+e)qSywu0THLTu0tel=x?VbaCUk#53;%w5_ln*>1 zRkue>qQe!22WvW!USm%}9%@RX*h9rf=7MXnDaS z^9R+5HGH~!+*>PV*tZOMVtx}R?k3oaY4qjlnl~?V*tdIP*O&jz{yfPUs^9_FS-ZIT zNqt5?D)vp!pVjtjut-DBm8fRVw6yd{CDIbxu;1C+SW)MJ*e}SCIJ)SlwUYKV&^oQ7 zB80G~qsK=X<&4WHrzrtFt0OLRFu0~3>}Ni9jo6)^$Lh<~P!?xBet^ZjP|tFyG&HDV z7-h(e(+LehJRz79ETiY}jb~GMQ51QPw$2KpS)bv0^wMJ$=rY{(vHLT|5MYk%T^Jp^ z7yb2g@ZB5*x?KS(s9s1ZcagVkerE%-cS~7Sv<3hUSHgp%* zjlmt*b-kO5*aAit4>5M#V3&E)hVlY+0oVihh;qgS4>0iBGthFuzYw|T6;YWI7yQ*m zj+xD#GnItv-u`Zn zuF&@n_Reu%)D~{N$X^wy2mE=!xAo3--qLe1b_Vwk_dn$RDBv?z<^jK4!}s&f$y|NI z{eJp>4KLh!5RbCCwzvy){@B&bUV%RoB1Y>rm9co_Q)qWgx8Tt@Ul8e#(WZDE-FodX z(CSiJub>WUXpv4B7pa-od&qWd;{R-ILXcN9qTbnfmBzQw)(3rukN;u4q^zmFF_4-4dgBl#Z!2|L60l&+&hb9Txu)t)o_I>T9XIz>_~V$!73cH&0*= z%|`bubo*tUyIgOkht^K6pJf#rA*dgJ~U@2hUiRKL~t&{8% zs^w-ZituJE3S*>(w`x$@GyEUdFq(OA(rTHW(*D;nUB~>debRSUjde+#On{@BuQFoM4>%$H1F3>U~HjDSFpt-#@ z&dm;JDnMHU9`t*{L-d~iz1LUAS=w30@m@l`=a8TH*2q_41?{X$&3*eVt$VC2aYt)k z=Tr^1ocD)nPa$dG+=KM}rO5Jh{r;{1FV+sc?|H9O^DJh%yoYSMd9PISEM~fg8hCB> zKZFirncs>j)lcd%S{%j=bgwD?05Hb>z2%N%%)!JBj!9ei*p9?!As+RCwOe%x<&x1e z4c6+3g^yhxXC%X{no}QK{bvZB(RvgeWwh}GQu9aAt64EmVugM?NRw5d?xl_eJa@9pW<^O>~n^ehR~VVyG7V(SEYAh zu+O$C(9MAMsK-zz8TvRv`|okFt0L{Vnmy#35IVwsc(SN_fL+R4&(i`sdZ~9gK%aHF zhi!k9OK1bMHt3mK{+xPK577c^#21VRHH);$s%a@*N)7JE#w0XhQw=`27L( z2{p@l%>P56^qR$@o|!U9+uvd%pg zu!Li1P!pS| z_PN#<>a>4guN$r+*8QO^+IAT1a|cAWBNKbjPZrvbP5e8;KF3<5+V2m05HA&Je5P%O z!9M5o$aX~7X+4bH3utHlm?vp0D-oaHC7kLq^{i zQ4f32oq)M6ejl`t3t+mj#tEIwfT`oXnXwW`_QN{QlC?mxPgZ&@P_R!H@)+a263f*- zIHM$5|7k5nPSnlTdOZk!qP~y6CGd;hpLIb0+U4jU?_Azz6Fh1s6 z?hsQi@K-|^@WktAel;HTfoiC_gyj}_7kFF2UJu}movAfiaK_aK=SCVG&Cg6j8!G7q z8!B0Q(M+AVKkR|WZzz`5&|sfCDAMRm>;bf3es^$K$2U;Z9S7?nk*yo%V zX>^30@eX5Q0}0cY3TU6L>Zw})zz%%icNyA6qYd`i10s#i#2!HF^46;ex>2sQhO&!_ z)@bpPg5GH)|8OiyYlGHk@(_)_$Y`|q;K4glUg0~#{Ga3bdTrJOttq4Jx~$ErnL{{| zC4B{7M~7ZC(CV811@1oTq5a?vt!GW#eJt@5Ytr35&|X9LY~*R^ek<0Jbp@*H*-q@+|yJ`<{i|;9nNkrbjyki!A-j`$_-&7X@_(S^InPP z$9ovey1s7J_4Q`?`iA8*;B)q#XU)nhD|i(Y-iD{2qd7_ z4of^MT$6G!wf-y}DW7DZ)fMSjnx1SZeTi_6UQOJ6)IDk3QEw<*1yvJwA8Sn-cN7Z> zDKWUkA24*k6>EZhu1R;O`x8ot+=r=gpDK;&TAazO^8p@bMV2eOL?_hk&co$O1e z?^6dPy5iZKNG4iAzf|8}?_Y&hn3%R`1@OAWzfxK&=qU%@jp=Xe8p698rlZjcU_$8{ zJZ&R9)2y$|`Xpe&*%fB*5~&S>2fjOMF9`@ebCSq{>^UIkmNdi9z02Y>PCZx}1&9haS-l<=or4e`kJ!j4IhW9QQ&qDZGc~7qT*PJ0;_T^W# znA3dj-<8e{*G|4;;Bix~f9(SI+rK-F8t1xOKka$$bd~*}ao&xGFB?FTbCJ6-0$p7)T8?C z*gr|%clv2<=;=)i)`~LrsNsj|`vTuxYr~!Z9$PKi0DR^OxFQ>0hWl4|6PsJ<*Im0(#8-f56*i z8qYuARjIz;8$8oB{vw0NGVq5(&jXr%#_L257I7EopXp6ZjMnh$%>B5wm1z9LcpVK- zEK_g*-6xc`S*wa|b06Q4gZ!Au z!-Rp19VFRpK7C%FXmlbb+nKrtwvANTiOIgF?b_QfY&%SKUz@65&s+O*RoSP@^OqgC z;K1$Pf-BVNPb{oo=dQclvv(`C<JbI+czY+2R1stsz&1Ghfv*5K*p{qPhG!dK&| zK|Re=gUo$0iXC&4sV^K9$=OrvGR$1J1-qORq!`pZ3$79~gpK*gTv_;jR zb5zWpS#`cWbAmm5igyI2l36Z{H?y8^zqCjL`hSg(V7#ajypLCl6mW%a$;Prf$cAOuKO|6_{sdC?6&i#yNFZlcE`%A%piiVedj8HikD$U-scr^5r2Nq{%oUa_Q8)@1)XSS)VHFl|0-5N5W-_5ye-6iucUY-AfSGuA?RcxwS{j{A`^}C%l!Kqi( z&R)NdCRSO4&8Q|+T~(|ysM1Eenl6PG+HnbI>}u~ntQoq_NX=nZ!Ljpi;0 zRne4HxzN$-PC)ch$we({EC_mekqvfAvmR?mAksLd19V((VT90xJjU~u z;EG#K_4O_EuJtTAd}De3yzjXU8QqUtE%o(XJU=nEjO)BSd2aUok=@VmIjHla)$fdx z2ECm~7Y+(~%w`8559l)j=riFUfY$0MS{(LjB_5c$lSv;nSw-`MqF7ouKSKLJIxcXo z#@)wa9(Raa7oXs+HbXDL3~UqWX12t=>?l-oB!N*7IYa|KB^JLj+KH6e70zzIDuj>X z`-~+V5yS(L>-&k0;3po4T;6uiQYVD)5$)`KX~qbHnIqC?A-*T@&JSt)Q4El1rWqmk zH{#|!uJM~F;M<%G7~zj*)Wo87;ZFd6bjDsqZ`;Mpdky&2@FJZEK8P*J{8pkrn*OQk z$Phk?`Vd6hg|EmRRGzGmSr@pOq1^7X$Fs_p}iCZ%gCP*poBZtJE(> zH;>aZ;#XcRt;jpxGrE4r=z+{-Z%6D)?$2~z)T0Njz44COC!k+&|6#N5H1Ml6{2{^p z2^#(kqAN0X8SIJ&o{0hetW0=zENQKGb2+2R&xGfGTfKJ(^i*qQXS#m{^vuvb2E7lK zrt=Rw)e7QXZ}TMFfl(FRPfs6^1>%KQeb}f|GBpi;#F5Z+qrW zP24}5`JT))@n%%p?wW5kHUa7Wo%uMGmeIIPGA$r#{>L;~knzdO)@ug@MLO3VoM%vOHu`Td= zG0?)>yEw0r|e;zwK?{{${kGL#(yMdeGy9o_D;3-X`u>aeqy$1@{*P_mcvT=VqzW zSS#)?4(@OAHgdluV^)JS{8A=82%dc!|4ZPRs_%arz~7sXO~{|kMs*B!DZH7@H81NcMr^JV&aIQhwXySS{kBUt zjebu4_CNO($ZVfvMOu2VXpOJNYOMfTx0V7;YY?oC6X{fFXrzIr%3cZqv~G(9I=v1< zpf~ANUcUe>K21+nKm}fk_6h|)oOP|&9mhIL-jlF>0PDOvX( zO${ZXsX07NO~h+xZ3p4soiFQjZP7sHUyo`XQm$Kh!>Jy9{I7JVL{owsOc~2M@KC3u zO-5(QOL>~ILhF0(1#*fg3;TQUQB8w{FIgEIYT*7f>S6tyxorEm@Gwrt(Z6plJ~VOx4Xm1X;he8#Uu2(p@tpUk zcoWqywcEpVRaM!}z8nv ztl03|o?G5JKOVdFhQIr(J7#=S$Gck1I7GGkVvwq(y2Rbpb8ordjV+%$<*LzR-Rym$ z(>1Ijv5#|NL)@vFz}7sJ-U|dl3En*flhmTux>A3Q%q@v(qIR1?)NqKt=am1Pa@K0KTP^Lv}doW zLv%acmpvmgXUn{1`8=1uT=s%-EahhL`!bUGEwgzq3x3PY&w}8$V>P#K4Su^BzhkWZ zd^)%v=l+7=cfvZ!S`+-vvT~SpYVg;#^3(yr?;Kjw?!oU|>r(cpE+gbuDGohIOJ{h&mm?uTyw>6ZdbhhH`b9bt7wXJMpU*cW&VO+~}>5`f8{( z63AQNVW@RAkmvIDm84Om)A$_1Ti1aj^S7$l!{YIqg*Ks``_wfFF+3uGJD73C8Qd zB$S#wh5J$DC)D@Xybk4;Nabo^M)O;8zlGnUz#&rYh5Uyg6LVGlosK-;zeJ>@M)Bsc z%%<*ajnV&|z>~(+2^wyp>^cWB59t`mo&HFxH@bZmb0hk)j@U?9wA1o`BNag9{{9pr z6SeeO>$>9ep}FSIMw<_2&oc$K%lN#Vf5*Cyf5kpy5AgXg|H^ude`Sqj4ZC8b|7AX3 z9wqDHV7yK)0Isb|^ASHaRWPnEz_xP62b<8AI z)+YXywT*wptm$$-e_>UKvi9+>EDw^EvXw3K;+Q+4R3lb{D1!0%e706?`8-e^WI4?I zIELRRFz%#OU)7h-Gu4@V4p0O5JWrj+=LJN5l)6YU<%9kwwOqZXX0Qn3BUZUHs-w2> zxlKWd`bGW1=N`3(&%J6dpZl=Epyu-PN&-I28+^X)yv^r3&TKyC zI`jDa*!h&tMGi7_RyynWOgbq(E8J7DRA;zn@Oh>SzwQ8fsmi^?y@byz-K+V$hJK=Q z3tVz{Z*Yh6d6Rn+pJQCg*L}o&#IoH-UCPldc9-+H!ljJdZ{5{={@{|A`y=y;mHU&s znGz8l%4Qz(B+Kp7umAa0^Q&&ZCykD-3{Wd8Q?)QzFk#b?p*_t}MR z7VXI#Yp(SHtD8QwzCnY(!<$@j>iMsH?s&aLS5c67STDpws< z7xpbbS{2=w$HK8wa>H9w=b{<+85e` z?2GJ+?Mv)S?ZNhC_T}~!_7M9@`zkiKA8KD?KVUy(KVow(uKfh3&pu;6XTM-iuqWCt z*^}*8?5Xx^_H_FVdxrhC{f_;fU2MRN&M82@?{w~R{^i`wxs3Os=l44gI1f4xq3e%0k2;Sz zk2_=0_$Qnvou{1nqT|l@&U#wq)6nPvjN@PAUWV2hEvi%Z>qfhex)Pl~U$jO|&;B<1 z+xY#pM`Yid?bV%>W5pk>v$M|5oPKo*vk#D8bth#%9)C9Hnw);wYqMwOo?EwG_GPuV z)UKD)IR0YpT=~ywQ@dXF**X1li*owct`~njx3u<%x|3>;h|i1{#}~vG$Cu{xkAEFs zn>#n|CGrx7CAuW~CHg1MO+1)*Jn?ky!rX<4PwMPUY^r7Fo?EMn;78fYQ3I&YOQ&>MYX=IRbIPZR@bclS=VM=%dactn_nYx+GMYl{BuilPpwl}r!egvWWisL(K@Ff|TuF*B*R&J?06)mV! zSi7CPms=X*$$lIuU6Xrm?Je*@+3S*ToO^0c|LmFaFS#4J3(dm6a4V&Q+=A5n96MT@e_0RRkb4JXDIF}O?0$bV*03R-LO(p&)2!3kL8U+c zt*mp1BDTig8ORR17xRA*EyG~me4PLGcndFMaf`5=hhjPBVR1j={|J2HkMUnV#Zx#E zKjCvM?-$lrSl(~=KM}jS0UvoI|7T!Fx026xZ0G>%XV$}=%eZ{@VW9`pI5pud+5`y??YeVZk?8o3Y{>tu0t`q=+@AJ;I`I zx5TQKS*2L^pRF>i`>$3x7Ji5IGgf}L^$S-1H*2T;Z~Na?1=fC$RjECfe>=mS;VLfv zi%Q_Xj8wIpG0qs3C01T#W91)KIau|_Rby=WGpd>Mob$YD?TmLOs&^^ys58@fUmfnua%M5y{DCu19Z4(jvFc7suvGPMzH(NmUe4FfH>$U@ z)>)@caW*&`)M?H}XS+Jx`NjEFor4F|M4jh0bDOEV+hihG57g(`HfcCS`b z#e3q!AG{~^n){afmYOE@!*4_V80eR(kNk!Bh95Ed?a*(`qi4_nkG>%=dwsk{R^sOZ z`GLQfU-jhL$H%n3@OSHHb$GUnRl9q^l4X6u?3P9BT(H>x+4|hCw3hf~Jl$%2<$rCh zU>v)|{}GR75i>hKBO0>A|AnWY^R$e+r}NGtc1Mz2mH@E~3MKctJX;22if4QMw^cVk zr3Ud_=)=F`bUHa@@O07=el4Rv`jP*sTEMBD3xQn9EQ#fOukiO$2kNMmRxZ0!b8DbAVr_F7&@8-(~n=+xgt3^wK`D@j;{-<=9R-#R-kboWWmf%+fZ&dQe z{NRlbfLYBOvpM*qgf~_q&2PZU1u+WheiEl;{v@&`17P zVEh@3Wne4=V;SwsN{UgeT=FLZVY5BB zQBJ0QH-MIRX*U~Kzeqjt-?4W3Ypi|L35%K-r@rJzEA)nLz zkJb6WUI;ZUtONbeEYayp7}KAKq(6YudHy$8m-^(rG^j~S(3j=p{|Yte95CHUtzHhc z4b;lr)Vku-TMIT-PzN zd|!w)rJPd!QY5nrf5+uSpMm}ya{AI5?#;9A@(-b`&$J%)pJZj?RHX1O7W;0j^)M{% zBVZUx&QqwV1?bL5to3D-!F0-?uJtpv;upUV?4u}$d!ekDviO(f`S(&Dw^JVfg3^1) z`9-K*Pr2Mjxx7fZ{0shPQ8tB0^e!Yi35ni-L`x~7>*45Gbth$27x_FRHV@w3 zLvubv${!--57C?t)e3(B(%z+O&^PFf4K>TiaVIlyKEQ%6;+`qdO}b54K`B!YDcuIp z|1&iI04+a2$9K@N20E5NM;S4eTp}zvrgao~O8G1d%4a+Jv=_T#?0Xs5 zHliQjpdTspqYzBr;3*FDha>xO*6^xNt-HK`S@&@$`on$)WPb+q4ng*Ht;JqBvTtpD z;cZ9u{j9IN9o7o3$|~{JA^UTYeGJ+^M)s#!DbGXp4axahWM2o_H$?UcWM2o_*N4jE zko`<#-w4?shwSS>VF9u~4W4tL@aPSfw;YdfULV0xT7X`6pPZPkDP0CA=65vBWP&lRtv?pV0!bg6q+OFV$#D{UiK`1=Q1p(7KegoK!;1 zTt)f@`;bKr8?D*?9&0W&@-win<(hVyQr*PcJAe|OsHybdspW^!cX-Q5x)-~j$Ku>i za6gB;5{WsHnwf1K4Hw^#R@0Vn!j?MLUu*wJ+CbXquXUdE*Scr&yb-Nf9#NYHL~RBwt-#2_b#h3UTkA$7^#3%Xf<$NB~2r}&h-aY9?`YNZZA@AQeP5qL@ew1 zjjaZxgZ+V4C+`oeLLT#=eqtZ)U)lHYSL-y=8Km<_7mzN3XV$b>gGtYE{UT`+_ul9I zStPMJlrSy&uNLjRwVY?)fO9p8QB`G=a{Pg+3E$1ogqD1_C3R(NfIY1gTq^QY{YkVa z>PEk@x`lKrX^h|4?(Yw@&m^5i8bCUmbPnlU(lGxg`&!aeAr12zVV^1QzOqxO}B)v+SMk@CHu)p9N8QJ(k^l0+v&*agY$+NeR?>15? zshso+DMhMe{@Z!}K<5(D^^8#8#Lg%1;*8|}t^6Lt@7wsk$NR&9Ugt?l{b~Ov=Nax( zR?Z8g@xVft^9tW@klq8X2$)&io5%Hse1Ae($nPaQ`+{d*^1YPr72N-tgqPy1BmGF) zK-vuKR?>D-it7sCD}mp|_in!T@ckR#d-?u1-@o(y2j744{TJVV^SzJnD!x6weSaW3 zt^VXHzHPo8zFod!e8>5&#a`9fq#RNmQaw@wQXZ)>sRgMOsSW7>(m|wlq(exDkvft( zk-Ct&l8$6PNO#iFq+?0Pkxn3;L^_$V{63_9q%+as*3{V5*0Hp9J@J%|_cu^`S5tde ztEO13u6!TsuePu8H&BaLQ;Szqi&xt_{FGh6yKFDkg0vZ6$3dm63iX{p#;@?(uiJ-AG6A?kV^l_>rVjum`7-P9w4E3p*mVqa52& zj=d0DQI4%B$3B!}AH*hZuW=o2`1(>vHOK zIrX}ndRSQ@}vYa|q zPF*Rdo=6=jciv=P`V7)c(k!k&Bz;0!LHe4slJp}fg>KX$Ws`D9bx8F{4M=&U#-zhY z9Z8)?UEx&`Pm(sG9ebs{tp2j|h=i|j7Q6Fe&&E5}`XYN=?aOk`uhYCv|2lWq*;j8% z{Xq>5%j@6BZhUQ%1Dd?qG~RS+vlCh^Y<70@S6ggqX}4NTJ z$|gnGq$rydWs{<8Qj|@KvPn@kDas~A*`z3&6lIg5Y*Lg>in2*jHYv&`McJe%n-pb} z!dpBKs+*A8ZKT^tcaZKR-9`F>1jktI6xKI|)lFetQ&_|l)-Z+jNnw3bSf3QuCx!J% zVSQ3qpA;4+CAET`z8d%s(zZQF+x8%B+k>=i59&IXqRyqLb1CXviaM8~&ZVexDe7E` zI+vo(rKoc$>RgICm!i(4sBNf+az3?@ncuo>wFeCFY#n@A%_H~YJ3 z+xF15?V(-SLmRS(wqXzL!XDa%JC?BX8m;vTf5 zJ)a#&-AG4~9w0qSnm{TheG3H%Qe#qcQVUWmQXA6Iqzj7U(N`A`ZO&8tex2X%={E5@XEE1H`28hm6~BKWRq%TkX%A^H>37nfq`yg3B;VhLC$Y_S zNHJ0`|2tZ{?`ZA5a|ig}y2R~h@xH@y*7I9YFI&N337nO{SqWT~P)}P?Pg_w>TTxG2 z!DR_tmcV5RT$aFP30#)IWeFUXz+nj-mcUsFT$R8{2^^F_c?p!4Kye8amq2j|6qi78 z2^5z=aS0TcKye8amq2j|6qm4T<|%#>E1bj%C$Yjw>m2m&T+(^;XU^yQ0`6Uee{eB# zWCxR;~$-9x&Ubf3Q&>$I6xB1tQeq?Jh0N+f9|lC%;@T8SjB zM3Pn_Nh^`0l}OS`Bxxm*v=T}CQ}S6v`i%5B=?n5$N?K0Z0{(5JQc^kT7gCB;>2IcW zNjk%^3pe45-R!TyGH%AZ-hiE7gLl1wmM7^v%k$^BexC0axE>D-v^W#Foo-X6 z@_QEd=`mtOH`7WbX{C}_)6KM0Nm{BTEmhK4&GR2f>%jRV*BkiW49r&2cGAy0OZiD! zvLr28l9ntuJN*qhXb3SS1=(iH238VU=i7 z1)5ZWCRLzG6=+ftO-iCkm1t5WnpBArQ5Ly|Ui zJ#FfG+SK)EMI{=ML?bHEh)OgfiAGeS5tV2}C0bC41|-pdBpSd>7{8LzucY)VDg8=H zzmn3gr1UE({Ypx|k`k_@gexiGN=mnq(ygF$D=6IxO1Fa2t)O%(DBTK5H%aLxDcvL^ zlyTxFwMiEd$GVuf&S26celOsAIT5vH#By#RrZb#$6KMqLX1@?g??TeMkn}Djy$eY% zLDEZ**e)ct3yJMQV!M#oE+n=Ki7i1|yO7orq_qoa?LtaRkkAq&v;+wiBB4SgRETtz zAeALZVF^-Lf)tj((JnaJ1xLH!Xcrvqf}>q$;eygGrgauLWG!?142QuH1|&e&u^c4z z&z>032<-eX*!f?u^S@x{iKtk$?fXgpFMDa&@n5jxzhK9Sh*-6eYB_fL7iT2D$M7vZ zxaatmUfg)@Nl)$-zTY6dY30zP%b`b?gY?UtdE5(obqo2O*|S>*4(Z)(;CnOAwvx7! z{+r%j3nB-tNNq?5kPafXBOOA@>I|SDAo|p(ARr7| zHjL06k^rJ|-~XIWNTN71=6!fyUfag4YRd|(yA$~n$m7T0BZ9h zFay*uwJY-$l2%Oq6~Jopuj9=(K-W}~zLk6l&PiZ9Pz}@oJAvqE5CG}0agrj!0S*yBm!&jL{QR%qWM z&a;E%tc%N87neg*6hluGBfa^O)-OYX^94OnX5Xi*Mcn@xXJpmT6vfaK#dZVF+Q{`y zoHuhW;fz+;mML9PY`@W-N;sj5`$FXlZQPHu(8v8bpAi(hfxwy2$%C{P6K)7J!P&sM zq@PC`x-;m4V(5Zm=z?OUr#sNQ^XWzD!2~^+p!ep}d-G}e1T8pQWjwizakHIqvyE|6!I-IH9F$X&GHOyrAD2^$GHOvqEz0P}a{92GJ}jpX z%i&A5(}(5s-8O1gM&HT&s-lm|>5Fpup`1RD`Bp_A$egR9?YGhH+i3G`w08waf0KF%EP&z#@jT+H>)iGM+S1@X0R-&VliR?tiA{sGnl z3CgJgcGJ3NBd0r$^ZCJgdm-`5h+jecDu8Ff3s+dmr}s9{YwPW6q`gHP86>=M1wFXl zen8q%U={z@0BZr6DdptbO8Pb+0nmoF8mI+!0^b4O13v-*elGAS<7i(O0@~4|U{co! zK(6Ty01g7^Q~2x(`0NV!>trXLPJ*bYQ{3OdHBsX528&S5oFEfcJtY zuV9}q^bn(=rfwZg((_f`7igkZaF(@lE%9~mW>I!*^km#aJNZL`T6!T#YgW;kRkUUm zt(l}XleA!xmP<0`W!*|L=BsJ7DqXK;@&7H-7jTv}N7kDST;Bwg0J5HJ4QhFdByW-A zEt0%Nm98DKR$R$7%Eas3LFkQBv$c%f$XSf#GRAKg>OC}Z4arDiSXwZJ;C;|6rL zRb1c2n6&7FGk~bBU2V-Y4w?{x1bSBff$Bn}8CajPGKV zGnT#~eJikyJPCkzVH{;MjV%ORXAS z7GtB7u_3EQDPx0`gEZ>P_{gS}%g{3SV!sPJerVkiT6HtyqLfzM%(y6JT$C~{ws=+0 zdlu-4*0nc4skBrHt+Sc2v6->4nXyqq>xisI6SXd()+KeduB6uJ4$%|$21L^Ib+CyVZ=%MVs9}BWHc>mNl}L?Bep0Iv zYE?q5DyhjPYEnW?N~lQ*HK{}v+>5Xe6jCwg75X%^lxXZmLKUF_<7t&Vt&;YsrhTeu zpK98tnzoTSQ%Rdt(7nHVZcSq3h)~gO#fi!@HjK~NzTs#^ME&jMWhu2D~NvuYym2nxo3b^2LgkMpUat*0Zg9&(1)CCwP5;M zFnz7-&odnJe=GB8D`S5v<9;i8_Mb{1QX1>zUde+<9qJ_x_0k5>LjQuaVV{zPeQAuR zux8#5{936(BkeCdOcEZZQZ=|DJxFP5lkhG{E0ThGDZ$6Y>m>v!4Qx_1u;0=v|4KUW z&$Xfrl7p01G|AUJ(%3c83Sb4Nb>r~Uaro&t{B&F;kLPf1;3(tp)^T|2ID4O4!CS{! zRbKOUpqDg&WxtL}4wb8n!)wRkwd3&Gad_=GymlP@UM5^+CR}AETxBL)Wu^fOq0>*I z(@&z)PomRLqSH^J(@)Yvad`7Mym=hnJPvOjH~W$-)^nV9bI)YpUSJA&?+4I@nyJ7v z;89>YzM$Km1Q@bGc-JTMb@31}=uOmUy_l$4M)UL=IbmEb_*^x#T3(0CmO8gImb zX2OAH!hvSmxb|+mjth+=2Z&qYLYI)f4EUJ;p8%f%Dal|wB^e}712-CH?Rw27$-f<_ z0T|tO7qA=n0ocRn@Brj%&H-sa7(H(~kO5=?IY1uJ2FM5gxg;@;+#!zKA?{L=#CT&4 zmUZ(rb`GYf%%o76%+#b%PR!OMvo$Hy3p?#kgLC~Ya5^vmI0twHcmj9_SPCoys@PAn zgY&LnC+2Axlo<6paNZ9%4&YvYAaJfoApoQj2C0M*sl+&73UEL0ATSk}20RK(2Y8m5 z0Xz*n3p@|Z1YSZya5eBS@EAZo`v&kfFdz6B_yqVA_!=k=c4DoT!COXM*voL~Kn9Qn zq;lpdt~|+1s%8d>Ca(#1&Kg?Jk&Be^ zryO}|MQ_TH(+}XErd)YaSM^cgqjWg)m2l=OS-n@n1+Rn)UI`bx5-xZpEA&dZ(3SQT z@<`5Fa>_a{yAo^3Sxe4Za>`m>OU_zy)`G_edWC4E3%$X>+3XEGFPO?&Fp;@B(cA*u z3fu-v0G0sDfaSpF!Bq1luo74WtO=$v*CsO0CNjS!+8O*`&3Rogk?}eaiOWP+2<#6W z2pkM_2DLv& znc$5e8lW2p9t!RcxE4$c#swKcHai+6Uq5y?wg?6Uli4}fLQ_t}Z|<#fCAezO?}HpogiS_4n7O|AsD$zy^Acsh)8zHZM} zq*-1tBuMpR>tCpZ$4JR0-|E!$pO2Yfe6Vp3Qm=+9j7=}-^-JY7q$BD5#h;WxDLO)t zqDfpvUEPnJz#cnIJ$-|(B{7wUNN%tZ=~*t)2uZEn8)iwY;ioO6YsoA4jmKQC4a-5Zm35?IX_QpG_LgihP?lNEO_GI&nr2l7EqEByIDf{ zrT(Yl_2JL^MRVeDkze-D-$k!JMp=7T-bQ)q`_E$q+UJ^}V`%T_s9!(yS$l(h->J{t zXPJ9%+~@nHuI}s28{PL9JIH_X3+}DE^8-0coxotMI!%A#|7C|^=L$|AL+oUL}0bJULVWwoQ6t9F#H zs2%02YDYOw?I>SUJIc7)QNFHrl=Ib&a)H`WE>t_p_tcK^eYK-pq;`~x)sFH5wWD03 zc9cuij&hmWQGTd)l*_TB-06L!wv%6~?c^Gkbjt!giMo7ziG zPGU<%Zo}?eiVVMULbE1 zx7P9YGP{heA&tx;1@LqE-;eF;lN}d8g+D2`sow*;rw2fL&JM$p? zX&bepc4jJkY8$ntwyXk=P?JaDSo86G@fh*xaIX3Iz<8Ya6L7Hkc*A&-_zXDNeEecO zMf_$ znNJA|%mPYVXciKG&%8(cee*u?MP@Pa56lO&)e^IWc35hb5?^MP5&zJ9NPM|jPFyUy zW4aQ>bR~-EN|dH6QJStqX}S_+=t`8KD^Z57L>amgW#~$jp({}iD-m*ZlVmSI0UkV% zr{l$AyO(RKO|{ovExmJ1t*Iq0_TIT>Co5NbJbVoELgMAaGx+&9&$IaYI3Jn&MfM{6 zZ(M9I=IU@e+{+ceALO~zUh1{P`^O04m)Xn6f4RLJIm}2q(o4e|$Q9gsrD_UB*-_-V z3Ok%^T@%~tni$nJu|U_vC~M-alz$s5V+-*eLjF7K9Y_!GAi`7bMAMLm7ZLH9Gs#XO z&tz85koXfJ=M>gZ%Nlw=Pk+EZ;5mGYJV+fLvJatGm};kbt?k3Cu=%X8k9bl0sD0Fn z*vF7!w82t+x>sNyw~u@6>=Vc|^6iuMNiWPQ{2b}e+vkzhV8Kp^1v}v^JBzm{V(&zO zosHb81MBiDgs<9HsmVM$&ueSrHqH}Yx35z}tlY)g2z#SU`&Z;zvTFaG8qP;%f(4RY zKxqr@Lek%}?@_}0sxw){mqgmx#da|%OY9O#TV|ILeq=wQ%#V?^ts&fDcM$Hfy9jsN-Go0_z6WIY*galrb@tQR8E1&|BTRE?ge@Fj zYIk9zKl!euYe_uar4w)ES`im%P`=A_nZ&b@3gx?OhvmA3&M;`vC8@?Bfk7B5D40U&JW+IiNsckPijb#NVscXSvy z@9*{}etWhh@Xo6Shnl$`V+_FfY(yJGa2>Hlm-SJg#KwTKAPHrN6+zExO3gPUKn3D zqMJJ3olm;>ZfXl=z1Zu7|C{0Dxx`&UIrt;s?eIrHDBhg11;2uK402(i8CxiRZK3$J zweXVQGr_X0p&Sq5pJ3S#zK;$k6wKOQ@n{HpyQ4`tmZLziX}V(5v_{yprD9XDuIq!Q zQLrg?a2zqP=;>g=0UQy7$G@_Uhf9Matg{-k=7-p}txy7)DT z`U8;mM*Jb@dd1(_IpjPS*>A)jYA< zV61^=C|E(Ten>HWNHKkyV)`t_^f55~I4`0&KB_oAZ2n*-vWHDDy}?7(U6dgBK8CNV zNyG)~$M9Np4{^c$F~$8M#r+Y*{UOEu5ykx>#r+Y*{UOEu5i<=bbwsg#MDcw@F?~dF zd_=K(1pimhQ0HfnTSxGO^&Ii%&GW=xFfS0Fi5xqEcdQqQzl1zHqBy?2;_s+p?x^DI zsN(F9;_R^E?2zK@u;T2H;_NVp5pPSFUcKFcxg7}x_OX4fc3gRoxO5$IcuZXWQ ztB9{QtBJ2MYlw@#mUPAL>5ARc6}zXIO$P0_;`lUEV$hN+rcX0vri{3Fa7i;2rh>Tm zaY-{+LJ}8mE@|dl^DS}l>C#dufGni|j8XtuN&&P{3Lrx%fHq12WGDsDMk#;{v)k+j zyPR#$2FD8p5K;;t3vLE435xsMD5ei7cF$7mo~L*{%U*4-2Ga<~6SZUQSTM2hJz*<+ zkFn$Jcv6J>3EP|P&BO(}w^zKLgMTnai(>JR;_r~+?{vlAd5XVdioYXvnw>`Zg2ls% z#iNSFBZ|e1V)1;%;t|E-Q9HxV0G~Z;pXDyW=tePmOU39d6{ELQjGm$GLc;Z*~D?-8XA;s}wyr!)o{x#Z` z2%Z7g5*Mr=R(zkM_}(bK&ry7D6yN74zBiWLZcrZOwj7FKi`_!WLILC{1(0vQMROCe zTiKW4+ihrYoK3JdBUdSdn5|-uMy}EaFY)W_Q}1#D!vr+3(oH zk*jn=%zn>aj$EZ4V)jS&bmS@x5wih%J93qhh{-ZaT?D@!5+9IY@ zMMUX|h*A;}r6D3pJw%jlh$zJnQCcCQ^g&4JgRs&EA*Bz(N*{!jJ_sv)5K{Uetn@)h z>4UJ+2O*^o!b%^6ls*W%L;1pb$Q_3ED&h`zU|81$Emp*JbzO-cfi^4Ry18z|g^~!n z9qa56<(iUlak?t7cy<9KC-mW*{3GM{K6Wxh~C%Kadh5pD=`ok#w zk)`y9QTiiG=?}v<5qIj#If(k4Ru4Ia?W<_>v6-}Fycay zM3o}RQ;HP-Qh5v#9&D z?M>bv)t~Bf-W;fyR2#5^3F_+rq#nm1pBN04bQykUZ}#r=?)Rp9&*M!w<;}P?bY2d0 z*MZP)y`jTSgX+2vKb2$g-g=k!05sDJ-dy}trs~=P8mS$$UpFKozd@Tk6v}HP{$_9W z?)DypvYP3=f)#8kZCkZ(27|yB(hNUi4nY_hl+?OWL6W z)MO7R$Ub;#7zPa|-gPJ7F?K4n+DqO%yuH0WqUZG^-1*H6M~u1F4Ik00@UqdPu5crp z8D2AXj2nGfv%-<%E*;^j5ja6>-pvs?`$HI}QX zu#LtA>-emp5{5J^&`>ne;`dTQDP6n=OV~=o3=Ksy>a(Ith<=(7ojjp@!?c%OlJ;hc zOEQz0$*i=j&RN5=?#}vi){?9>c-Zu^W7!vF-a*oL9n{#Wrnf9im>0o{^Kbk!zusF@e{k4S{ z3)wWw=YDNVn{Hd#44Y}QY_`p@xi-(Xwry<0=G(S5Y71=4wzKVR2iwthvW0d(yT3ia z9%v7;2irqzXM3nU%pPvL*sk^n+s$^jJ#0^Vq&>u1MEP1raj9JvV-jqJJii}ueev;JolQ5yVvn+{f2wf z{l)#4d&~XRz3tv{@4COazq|Qvfm`U_bML!FZn68oE%5`l)Gc!#y5;U8{9ymL`^0_f zK6Ax*!~Vj3=~lRvZk1c@zBVzp)?~S_OlyFM?bEoC!6bKdJ?ot99rc6{Y?Mg z`I&B*jW>92HD@lGA8mJL;%*r|^|Q?njHjchnDMjES=V@$HkpBKnSITjaf5!a);|ww`*%>s7edKi4AprL^zkE}cxb7_N6S{cw20)c3Yi`D`uJ) zO6tDndjg`L4p`vjivsuy_CtOe`mrAVkx0{y_xt!K`KOryNVTpsqs&$2YBSo5LAo{8 zTx+f~q>AKzAVJ3>K3mMmBByyK zAdh+$+0#tqOtZ{v^Rjux%rkG8znHho+vZ*KcVtfQA!}NKTxmJlpHI;Ge2)BRCGw%Q z<{xGQlAsc#J{3rKzBSvBy3P3o|j4-GGKAx7xa3k~Tv zH%dRNQTinf>1JM|bn(4kSB`zEQF`}A>CZGuk2a*c7#Q4#KbuPlDXbmlb5R}PvETYTz*#-PhvVsqnY89Vz(+A~%`x^$I}Ts;laczogLGvF ze0xv$-D})Lu)|{ak5D)i3mq6bBGfC?H#9mlJ+v_NOAtb0jbN z5XwbEBIW*pa4wn?DK}NdO`K;VwUjdCNe}9^rnNkuv?B96&52f%($I}i+8u;*MMFYq z7F@-fxvBh{?WRc@-lnD0x+~_t^va`p<*#~0YaqHU?wBs=P*53+peVfif$kPkibMxW z{m={Z)F&j5K@noJ^`i(E!(l4|*x zoaeZgG^MVMtdv`XMo?-sORqF)5wwF+Hrg7lo=P|eEs>OcGGSe*X1iXM5%S7U#>5q* z6`3pLx{+@n%(0U9WjBFvE?POcL)u72n8whYlNXS&_MejK9@xhlkL5~{xmNO`b(319 z6Ta-wv+~Aa!c@686PvA1cxZ2$%*lqa^RVP_k4T#NOOt+hORqepSKe;u2Q;E`$K#UT zWbE8ZN|C`=Fz$c4GGs-e#A1x;DIkDAErEHct=vys(HO^zXa*-a*#i!@Ja zlIjiSD_7ZV(9n8T$}O^TWww)9+N4F$DNEUZ)T{jo=b&4ZvilO&kDY40I!9A@W3x;C z%ey1HuaAAVH}<{88jVkbG@fVNAn8WN%^VjceA!JToZF;-4kx7u38&Px8{r(Jnv$~z zVUv2hE~FG81(lrL3FjdBl$<>Yo8~-@lp=R5;cVB3aE?2k@MZTK!lpTUlTw5%RC1n3 zI0sp%QcFJ9d zEKMkh!;s4T5lNkBBD*5Tnv8_)K8|is822L;dmOn|5ARcsqiN$5-zJ=-U@3#9XXV~h z!}AxQ*H$_kfL_WdF%tJO(x~tZFh^nXSHzf-`)1gYzZ7FMTR8QlWSn?vgPe zvQo(-D-qxOAvQ~64Y_1K)aQ~hH&}DYh?1B*=|#?a-@t#2e?G0!IPDNkd#6d7w6#xr z*5@-)e}A)I(kO+s#4q*BNHMe=UtX$vjsZtxpkF-994h)n)5#Q?{mlOUJaeEqh+G*+ z6FbvyN7A|}DsTW2NTK-}O2}Z3%)#amBXzS-i3803jjoRL!lsYuYK}17O%HRN>1|GE zbTyxm(5_B45Jl43L0d8GziJL}*ST@-dUu1n(T#6)MT1mdPfpTRI^n`ZjGD9=XnO&wfJaGQ5@8BdObvxR3_J2=N(6 zi0j23DI@gaPvsK`2|tSaZF&#slQi~ox9x<4RmM9<`*a&VgxC=`l)n=9o%#$M-Fw&S z?!OaK^%0?$GyC>T8dc-_>Uu&vCV`<>eS3B5`Onzxc6hfWo{#B^42L%kE0Au5bm_iH zBSw|Zi~or9KZLlY4IJE~+v6v_cM=lePKf>aq;8{zXk8hXXa0)(BDW! z(S>|3jv))ha%7V5oK)AAAswZb#8q-4i>0chw^WTR7N-NfkRC?*OS{QpR-0@PhmtVK z5&5miVlBnJUBGlaUrMEkqJn$3NP_qf&&87QQW$a7I*;iNnZ9;Un>s-je`PL;Qso#0j(o+fAx4Ms|VvO3g_! z^CQ#6@ua7?k93h%kt9TNO(=^LRRybjwB&}lCTAQgh$|g9NO(j zCNr6gVogX{;T{+cgAell){yajAT|hCej5R?qmW(A?XL26p^xl-iTN zc4;KcZa!I|=}0P}-bIofS)kF7(%SVX_YP?&{Q}+G3Vn1SRW)59m(O@+CYh&QL6&Jh zlVuto;;s3N_GrlhsTmodZAI3Ke}mugq@y^W%ojS4RPhrD)ua$V(UUYmKTH<~p+A3~D>6ayBL14ec&;x{oix`>!?+tlLdBt`he)^5 zTqk~-=XhtP=`UW6wjuPODRiliDI4Q*nTC?-7?&j>3kPj&vO^O?R%u>CF29l~_K{=* z+Av?#!#2EyOvaF|kYQ8Fhv>M>t!Zstlo?M(Sj)!!-q77nqKPD-e|uZ{dMx^R6Cqzp z15J4Sk{k4LI>uCg$YCA&>;U>$k2Y0+{%t4oG)qWj=vfVI7G%7QOt7nue)vcxXv#r{ zO{AN)668LFgh(UMufxd*X$DEvlt#atFR+EvEi1#Xx*5D%m_9$Lz zO(qK!zz1d{yRxvp7RnC6);hrEc0wNPHjBXZdKlyDW`oSu!L9;QS;#p8Wvn71JxO}d zqa=!6C6V+Ok|4N~fr2lI6YNN&*qOwMKa)=EGD#D@kXh1ZGK&r*^|f0_0vkpKvVNo$ zY+M*@LA1~bV|^cVV+eHTAX#SjBkX7ziPp@4jOW1qe1xs4Ov;Gs(S|PQ$MK|$^qdTV z{b+1g5&CIQk|cMsR1*zb@>tcKj+*rt?+ZzHX(`z(-UlyJ$!bw1-`UkAU09fDH|%3C z)z-U^>fGLoPNX#JNY-Jl=|SI-x{@!(-7myjJW9f}L1suUBusOFG~yDmiy-aoqM<8M zq?-66Y^=^?pnFLt=tHs)$ z1=%*@wiYnkV#pfTO@Ssr48ZT#LmdlX^OmA42iWR1Qar|e8R#GS8S~x>*qq5~UA;*a zu?Z>8dE)h{{D2C}NNw>R@=8FzR*_~>E7DASPP$49!5iABZ3Vm2mZV5OA$=Fm4aIeP z*p6z%N34f;pCgaA=Q8fsBmPonT+bo3U=vcb4tTZ$anR_I*9VwHs%sX3reQ7!ME)X_ zu?o-l0E0+r=`Cc`0qs9aJTMMR^KyU`*hL5N2JZ3txE#?I;crsUE(T@&3Av>~*J^<8 zWu&RF5#wzgX)G>A-WoiMIT!P7bJ&dm(t2PzeiEmUL8?sJ5@+$aDq}9! zZ^~L602@=0)X|_GF`W!Y-QD?Iq{0`zj<4w}1LgXm`akezq;{siImG#v||nAb_jG6=u=S0k$AyhAfT%>d*KHU9gFeI zEDLR|(sg8xN`E7Bct3FY{F{oyO`CYXaC!Zka(`0w>CCjLC0#}JG2!R^uT<3`_=1J$ zbz;Z+o%hB6EydW3Q2j{wu&N(v@nyL`$$i?wl>2quk5m0R?!%2SZC1hU7q^H14X_`o zedIRM0-A5y3>!HWbStpRW*hmqE(~rL3xnIm!u6nR)dpMX7}DQbM`0>*yIdHmjW#Vr z-9G`xz>5bkuCUGK_P`32KW@LRHr&c1w|Q1@TV5DkE>;w7L!oQc-t#tD>^-;n9O}6F z!<3+LGqq%!O>Ly*rY%yuk|PZ^$!wcx2EWhOH0t<3KUvo?Txb8ie&IU8ZGeQe3bz}o zJ>dQ;_gUeeFz&0uABEkVr;csz>tlU^zV}C6nd&`0=JAZ`tMV}kKbh;O#U7pDV}{Q+ zynYG(sEt4V9G;iptEzlqJo2%?eQI@W#q9w2oudX-wIy3=xEyT2k`#qc|zTQ&h&Fi=DYUM-q_u-?P z{Z7+6tjL?%bNdhfoBPaGJEqDMekqp+_s=!(srj|FTr0JXA*)?eeM78a(EshN@7c3^YCUHcEZ9{LQZJ{k0tk5_el1>INIS6u(mCw%?J`^rlBIO95R)eY+! zgU@M_)|AB|CY#<09Zb1Wb<;C3-n7f6FP1t~9mjgk+SgWHwdn!31HB02YXbOLMdK`M zvGz!ZKVh9`t#h5ZpNpZt8eptYR$KYRe3V>^+&wX$MPki92=mZT%ty}RQ)P#0uP~<7 z7!21v9*g1BGDlnITPwB9x1(%h)LJ)UGOBGb&z-|;bERc2>}V_vKYTp4)!z!*kot?Kb>% zbq>R|I_GfT8uI|=lT@B>om049Y%813ExdgA&1#vLkJNdO`{2B6KA-XO`C5ScyZk=S zLmjFg%>8YYr~2xaF=rh+@Y{G?l42G3+}=@ybHkXRk+d2n2%@BZNY+2ba3$Jl@Fz(c zjUZ_xHKC^L@X16bih}w$KJhrS;|T%(M6D!B0*Xc%8i{E{ttd)bJS+&fi5sG*)oMjM z+|;Nq@dv?(y&cnlXpj`~#~Bg@FpNK5EN6vti^|P^sMmar(j-Z%)i^lduGXGEiIly) z7A$jKMGfxb30(09?Rb*s*r9eiE&fB}w02qtdpyaRQd6Mjx_KocuL?zK?C~&4l~9EF zQC_+oFF~@`+Jm5OQL>lp1uhbXxT>JhiV!qf4Soet!|c&6$XjdYfV#m3m=*2ufl_!? zl06qa9u*i;c6J&&VsFnS43Y4BQN7KtnW(mhXX1}H2m-eJ@yb+rA(y|#8^8sK@^EFY z2raUT0vQ&e@M0wJV|h<~jf)orSc>LVX?Tm!K!NuLKFojoRsN7Q&2JX^Q(v*AMT@M> zV&sCe-Li<5-+{K6|Dmh6JWwasG4o5-=LDz?+H3pc+G2Uc{2(ODg~0z*0hllOr>bbY zDgXJ$Z<*iXjB{aI)Bo|TDl{%a-gH$a_~hdS;!_z@KQJiprn#Tg-r%<_qsr2F)Q6D> zc0{g_oNXo`ZSFPRaT>|N5ftSJ_NWb4T#1pkN4e(4T0TV$|EDT<(Hlil|85GGc9CL= zJdHcHKQPMwsrRkp28zRV1?{#CB+e>_Swxo7z&)=8{1+)6HU#R)Z}9eU{viSWCeOgL zsEt_);wFNR3C=$>$x=E`VVH6T@F=$%7L>#l>>lA1kuXgf5jEIDB7cxcL__-HijiVu z0$EFTke%cNIZv*UU&$MyP-p5wgJ~#@pe<=v+J{b{6X|@qh_0gs`j(oQFN_Z zWw6IAPoU6$d%;-<5@rc=ghj$S!5|zGGK8zb4dIR$EQX79#in9+aj-aAoGxA!?}|C% zM~O;0$<2@Yeeaj*_s%cR@3Vgsy`$bm@1gh82kJxh5&9^7HGOq`yncj!qJE=(n|_CW zkN&X!Sb!AZ7T_5W7!VRrF`!Ez3)BQU2f7CO1o{P*4{Q*a7}zWL(qHV;nXjT^G8s)K zwA9>IJ=(esZQVsqk_#k@{6^jq6V*{y8bZs^O0*SCqXtly5d9?~Bz($PZZ@tnt~Aa>iI+?n{0XByuD9hI^S>aLj0kJ~9$+)D7H@w5-r>3-Auo2l z81%yb#ShQ-zG(cSQ%=X6wuI!g%4wO?Jg4EavL67qv#(}f$)27) zI(uaHz^6ZEcgv1`y6DOFr_-ONKArG%?9;(dTRyG+wCcm#ZfhK#YBsR#bhoP6oTY+4 zltiARUD)BHWeS07dZ9nspN=S$EOJS^^CX_&@>*@aMfc-cfdYj94S;q)F7O^hO;hA` zHNmh?`k#O7CEfu3fBsk_)|fS6Kd`2(8Fq8(vyQA2>&&{at}GEdIa66T)}8fWJy|a@ zjij>PtPktU`mz3O0GUo^uoO0ujbfwO7&exqk(q298_y=NiEI*?#p=OtnvGV?VY``u z?O`(8%hJhQwvX*+2iQS&h#h7}*ikYMtBqsqI6J{kvQz9dJ3|(bh3qUl$IinFTx1z! z5&040<34)?i|~X!Wer&ZYt9C;zu7} z7Q%A8BkxI`u!wws4OmP*3QNc*VW}VsKT#?yqfGc&ST3v(R#JhAR1#JRdxh0hL$%aS z>?EWM`=}@NqTaNGuwOU;Yk3g%wv5;fR`Ol&MR5snKd#C~Fb@dvRftwz6tJ!(#? z(;Bp<*nxge&JVlS~btt(s+GGW2530bgg zH)uUtUu-3|7Jd_6(gw7l@VoGbI6xdo6NEp-B;l3tn)ajpVc`eSiDG@4O0b)V;|Fp4 z6XOStx9yM5NqnBNq8P3@_`IbDV4nzoeytfS9&{bB1Ly(Z>;VU>3%Uz90SpFC0_Tv= z_cP90Fd6g$a1Hq_K(owX^+EYg&>iG=1icH~1Ev7?fyc=22Koee3QPmCffvZ{4f?AE z(?Nd&-XK2-l%Hwfm;t~Rl26EottEd0+%BX6p8+HC`FRM~6&15UVGXG>^1(CJnZfFT zx|o5HN~kLkjAs^shL}OPeGfH*+b7lbMc|puxUOUdnFAUL#3Fw;XcaTaT+pgO9P;;p z)&gpS7wiqwIsj}rI|iBnaJeo3Z45L={#j7Sl(s}Z=cg6W75SGy69LGNL8jcM(q6cJ z1lk+ugKLya`vT}|mJK@546+z>z8Pc*C@&WvOF`EH>u~)OC~t!S*FS^4HAC12ig}5H zfj|1y4D5CjtUd{ad>Q(Ic>^T?-uFI$FMzp&aoGT51!#LS$V$+oW(eCs&jT0m%qq|f zGsqfHw39(+$Xd`mGYI6*Ra&6<*aC_K2iXd0Zw3L+0{WbTpnM_746f_2O$4?{)pcPy zt~nrYVTKt5G7z9o!YlxNfYT;sv;jr`!7>q{E$|}%xx&^G*eD|W1atzHnL%Vw$Wd4h zp#KE4pM&fLMfeEGTpUyQl>762VT33SkmxF*A6(vAeGVGZqn{BOKgji8?bd zixHgiQNeAP=nA-@{HdVsW^lVEdYHlW36WYNdZV2Cpe4-Ux+VIUfmx7X7f=Ox1X>aZ zM42-{gMiX_7rHJ6o56KW3<1KC{}eRB49uEDtOQg>{_mjCW?&8_Vhm6P`L98%nt?eL zXQzM~$bSo3(+sZ1;`e5d51?^CE%5UrXl*mdN6~q8x`FCignEpmV(v;nxg!_ zL7SN&$e_*5;A2B=ge6ANmfT1Wq9dsCwjC|g2DZohN?*|=a1|J*ZXfuR^ zpj_vs<9XhnX~0Zehl0XR;PjMQHzJ!v1^5;*2Z)e8EepzJ&E?8@UkpH&v?3^%9hXfT zfXf2y=3^1jaw4t(8UQN+w3|kN@^-EPcw5&3>yRG_x*pg7Bmf(Mt;nwoit&z_+}^Py?_B=m*FEm+KDzm(f0yQw@~M((0f`Ea(7w6gY-_ zu2a0+6F@uQBybvaae4+gi)U(qo&(MUeSix9>;<12#S8%ULhZN9pqW4m;0kaR=mlH@ z?xIXy-aRuY*T?&22>jUxW(fTKhrm-j&)?4ma!?o7*<9cw@^6BE0{#YC0sjD>k^dX$ z7vL+N=Y5e67?J-wr~;UP0XXMK%;596M9mQX1Z98@?=}K;F$0lTBDn%?DCZR+et6dp z?+EA+YC23-l-6X=EfRfGg%OmOhiuzx{c{sJF#EnH!Y0S>yJkgv%9D&iV)R7_@2 z$kCJ!KyT@G1F6u+VBf6W9!lr6KS)ifhH0ht*b7~|gc)cBy}oY0cmqugGq4H?F^IReGPH(?R^6R^mPp< zo3%5XjQ0&_-#*NsvGE9A$M^F#bE~aj(3A@^*qKXc+0GE>Yas1s&En;?Y!?(@m^5pa z?<};ynm$=HeUOrWXT%lGfCTCuq?4MVD3G84U!D;Z5EK9o+sB6)>?<^C*{&{F3;>G` z6%1wTh8Y|y7|MY-RoD|s)AX}iwmTFD_ol}|JCfF_-60$reL1APuOSG`>eCMDAU8`M zZ)LFxhPbqYdeWiYo^mAK_Yf&3yo^V_Q+Wd^Ph?t*m8WuXiq8YZt3?F+>WE!=a)4H; zSlY)0mj~DnagjkD{7Pu>UBv)*ekI!Sq=+*9p2c~drbqMd!+iObHmiYY%~w=IA;!jEysysDE7#9iZ!lUpZ=4(m);t*Dw{yoSF-+rQ=HERCZlSUdJX zC@xe(oMR={=Ff!BqF#&@XN!j<2Wh-?N)xJ?uQ{r%rroGDXpd?i+A+HTyBYRT_QUNT zJ485)b~xnl#_p(8;+Q(AlsW*O3en|7=#Z*{0^M&8Id0*kVFUP0Nj~Vq0x$?cBO$ z>z~_*Z3eV0-}YI%PVFAHk7z%&{lWIPI%qqT>JZgY>^Q9BgHDw?t?iWA>0{@F&PzJ~ z*`-F8xm|L**6KRH>+8fii8s1+>bAbyi|(=Ar+3fjQKiR$o?bl%_Po?9xYwLsfAwzA zyKV12z4!O=>$9n^SKmo}f9;phZ(o1^{!{zE9nfgNssV2X#tqy*Fz3Ji`+eZMfnSrP zBz;nyq+Us>NgI<4Nk^0Z8dPD>+(CN=9UF9I(658j2WJg_HP|%7ZAgb9kA_Yd<}l22 z*ssGI4bK=cVZ`&~F3I~-N~fF}894IbD9=%&MlBk(W7PRk*`phc9y)sK=o6#!#-xt9 zFt*;<)Uk`lZW#M$?3;1k<0_4-F>dX+kK^Y}@SZS#VuOhdCjB$H+vIsu9H&&D(qhV~ zslHSDPQ5=Zd|L9fqp1$5VW|UB-%O96K4*I73^pTi#^D*a(@0vKv_5Hv(%#RkH*@~X zKW5dQwSCs@*~MpnKYQlv8*_v?-_4miXU806?$Eh==ef=sG;hUx|M?T=FPZ;x!O{h$ zh20l!U-)iO)S?lK{`j%wj~PGaEiSWo#p0_=yq6>_nY-lc(#A`7|K#*j>QDbHOIvpD zXRn_J{(O3Qjpav{|GlE=ie)Pvu5@47dga`emsbU>3R^XL)tl85R$pJ^wr25~&uhD` zJ+-dcx=!nMuKT>c{`$1_e{blt;qbu1hbO9+h4HE^Jq(4djxKF#U)V_-Q>h0^iZ}7gqkXUUi~D`|rydABQ1w8g z1KkgdIxzph<^u;0WE^;S;Ln5XpxeQ62jdR5Jviv#!$ZRk%{;XH(4IpV4m~;a;jrW3 zz{3>}#~p5axZmMPhZh~*didnwyNCZe{P~D@#P>+(k*FgHN4gzJIx_mmf+Jgw>^*Yg z$gLy4ANhEc9`!z2?r6->+DF?T?SFLQ(WOVX96f&Y_R-hJq+?#k${ve8R_j>HV?B?h z97{X4=GeYtr;c4YcK_ImV}BpFJMMm5f4su+D#x21?|6LJ@wDU1j~k9(IR51LyA$Gx zk|)AX%suhuq~>I)la)^cpu# zr(T^hp7uB$cDm~6x~Dsx9)5b}>9wa1oW64U`RV*K#m@wvi9OTgOqVk$XXc*Sc;@h# z8)tq$V>;`3cKq4-XE&WadiKiMCucvLb2t}pZr-_#=MJB{e(vSD59b}umpmVJKH+@p z^8?OLIY00G#`A{r=gwb0|ML8Y3yv2`UWmF-??Sr^Juf6*m~mm%g{>D3UpRl^(S?^6 zl#9+6LoQam*!beki)SxBxcDx^F2g?~IwLNlaYnn0o*6?j#$}{sY{=N2u{YyL#+i)E z88m}im<0ZFC72_&d&TXb4BKc z%yHLtY3GVscXE90&#zOwSl-YXebvakGowfNQGt5vQxy4wBf z@T)VfZoVpCJ$p6t>a(jKuhDD8u9d#_-L)3i`du4(ZS=K;*S22UckR@*E7$H{dvWdE zwa-~J%RWn=6`S>aR-3G(tkkTPSsSxBi9;w{E<;Dc3?V3owPfP@2tJEfBNLJAjL_S7&d_-k*Is`&Ra^+3&NJ9ETjw zoWPulIn{FN<+RJ`pOca^C1+mF@|?{%a?aVD+c`NouX8@?o-@};_CWKD5r&bdZspx@%t34A(nJ~hQ0%C`%+=lh{O9yHMKh)OgFwO5Xb^z?Ao z1cuNF*S#oFJ||2{XfUk--6;xR&QxvGsA_CN0_yA~d|+`{l!}m8uvr`eN)`ej4wePc z7_?aiZMZ?u8SJtQcD!^U$R$eRAJi>q_AVNR4{4+_o;l6rA1E^s#T`XEe2G8yHB_mp z+*(DfLj^i(LKQyRp+4q=J3hQorJNXVe5r7m2)5>lS%y+-58~4?%itI;+ZEh&L=PZO zXK)3ZI)l6VtY?;i=nUR!j$f84nIN~I=l~T_LX;ce5u^g2Zb9r?cH>_f|3;;1dDP{H zEkEP{S$|b~{I&6xlpBq&hh;qEE=F{p&rBPco~Bs$97Gb%Dhh#Ht* z@ApeP*X}z0erUJEfdeR6)HCMVp*81k=S>_jY$P4mdT{%Y@gFzeaewfr#K*G}7WVDd zwqKWKeWrKVdc*C^Y0tOkC(J@HMj|~-ucVpMIqV?%kWdm$s*;(qRP8&?pQJOmW${m6 z^|Orn83V132{%*;S9@MnI;&WMA&Fov7HFMAmcb!hc41aQAW!x#NCoQ*epv>;a6_<8 zE?sJ!wdK*#l|vvE3>3>Pec?M?U{Wac>alIsoUL1D z&Dg!I$@euIH<{3gx$c^gwsVW}a{IQXHRBroP@`rO1^f6H#*53QZQVMv!PH+i&C%3t z-MV4Jx^3Fl&(E5^dGp-*Q?_oIDaE&K*{D&yR;>~~G!Tb1fR$=Xml7ZbU!7dara7{IDb-lo>*R1-rYgKx=!;oSP#-OgiH_1~y#hit`qENl zEY)(|65PFFV`CswNUqJG^{wk<8P;6x)UO9EQRC)>JIb#uRw~UDBh4Kz+kH&D_?{ix*aFm_9R5!8Z?^z4}2Yl5(?)x^dn zV%t=04%0$O3n8C6sy55>TNcY=qNtWEI(y11h4#2|(n ziou|{Rd#ia^};z+t(`z)KxwGFXro+L zg2&CMO&cP{MoAfz+Z^S(@^anWt>qTyhSHreZD@?EOSF!KhQ@ljx_YtZWB!>Dv2^#c zdHxZT-cGV(aZi*U%FbFdM$pGJ(hDaMGG>)btErq-MrZMs`m!d%2v|~_;WxKbM2Cy& zFv%)mAmQEydrdZUnLTU8u3&t)5X?U^wei83hz?+_jCrgWvpf|!ElIU!AU@_jSJ{_SEfCq9HsG#g?ssJS)!in!(>RC|LR65(qH!R^G9K3W+o_6WieZd)q|W(^V`1j1W$_l%6ug$UjJGCz1F??3fa`FiVt@{T6cF0Y!U z`lsESFiAR)Aw0M^R(X5(iSnA(rcz6sot2FZJ2XmIe_}ng+syl>E_5UYeWM|f=1wVM z2h<+oogx+K6nytVl`*A3-1dqw#=|C7*XS&~lgfU%E561yl0f=eETI<(z;43`*}g&; zmzBNF;KOGULurde^gzdZSS6jR-e69Y9p!#@Rf(2J18`O2!SSA17edX)8AzhN*W?p%FbMmc;;~$On zA9Q$N(%~dAV!)P&=z}9p=H#A8J{%dbWx(MF5At^pOr4fAVA42d>^e5NSI-n|aWc}` z^hI=qeeposd&>5Ks*{d3ds^CDWEiSuk+<2?g}ZCx44&cMg?)U&RCgW*($&^BJ{1?Z zXlN;1SO#YdnnGMWbVLe@hNTfAF{xVGD)^1raPs+xJ98gVrmR%flnT20>!XH~f~MUV zKY?|dOp85S@W&M8pz=CiNm07vba)1JZk5n=-PxVfX8uBOa(N17)m1o&5kg$Q5~3xp zrmsSCU~Y!s&91b~Kk$wX_1mK9Pk-avm9c{KSH9gznKE~Gt$H#pNHpeC$9`C2o}AYkEFAOfvU7Huh%#+?vAc$2?g z=)xg5T{6zg;Ji#Cn}qCd@S@J+W?q6hC(-N=<5D3pe=QsL?2R(#lrrZHc&TpsAS^>~ zdXpg1MYb;;%rz6eS<=#*MOLnXQ0GA2nE5OG8J{wpJGAMS$6lYw$XPbFHv5q9eH<3@_34h()yK-z zsNbbWx0ZXZW**qEdUT@&O2&5$tt5%hhb_DT7CrAqv*3Afud44k}1tvW&B(xW>Y( z3DxkWS8R+c^w!f$(7-^)x?&q$WLk}@$WvbYiPE7VZmzDSqasCDs^L~V){QSHG*_IS z9N$+XYDU7MpImhl&kSlcxou^))ZSAyF3Kt8lcn;HiQJyYu-1u$A2CA7~uD0>Y`G>pcP?~mDnfv;k zvSELjz?o$#-Oap7L-2iseeWMCy_7j=bGx>ruidUgN1*ajZP-yQX4`sZMKAEmt>bq8P1>Wxwe9S&$ug(*g~ahO222);Q`$TCSug~#tiZ&#$72ACkuuAh9Y4j zn-5(i2Eu*lf;oe08}|WNXmn++M#L*9gewrAMY%SKe|jpnKJQZgULY)@E_>h65bu1~ zALnh_!?tc%vecbE_+9zBiAH3kU8U8wDPP{Kn*Hwg$*=yIj-wS!mHZ7z-VxTmp3FQ| zc|qbH7VGd$iE|M;*+j_2Tg;ZS2-FpU2_^;!E}TQ|wk)Q*PSNrkH!0W7ZQgX@HoJOO zGVD;!W;VR0oZlus|N86a-@6@%5ex;Wy(pb|k-nu*cY#wPCZAxJ!~DQyFBbzY^-VCvpG7NRYp!{07ut zu*BqJfV-N!PT`?(zfo9aOvD!#`Wb)Xbu~p@{h=dop(B2zwe0B6BOB%_9bvQ_txdM+ zh~s}>XUTq!0@rlE@FEUau!cM4P#pMOk)l@+3sBVtOR-o!*@$nODlg>&%CA2QIKc0l zNBv6uQ%?E3ZI5ta&*>J*Emr1OpZ=R^^wnWBfewG0OSKm79weVH3KSe2 z8Rf#4IMx7TG<%t^e7*DhpZwuTy}?z!aQ)M-S4Jey7+FXvPNb!|_#&26osO(Mt8#5M zt7@O~igDN%U76mWj3KPEtTCs0X_7UpGdR(zqKSoJr2#BvlhHVbZljULXRJEO5-IZyZmbLx8bcA4g1N><(S>YD{vhKej0-M1j7m*^ToxyT zz9FoBV8$)Y-{ zVHgm-Hw&(a{kO>q_P<~?$n8jxbrd(H)(Jo_BBEEB2URcu@SsYxPCA~x24p0;Fpbu*pbb@>|^pB<=D=hH12wf+qB-!?aGPU(tCK(raxP~RlZQ1Vm8kL zw;(GA;zpXt4({se#X)Cqvhb`5!>YB`WtHqmRhv`P1Y_zd2k{<9}>&bRz z&lUS1dJ9)YA~IG#kB4GP*sMNx^7OV8*l}lCFKsaQ%B<6=Do)I&1>!6*HRa1jJvz{IPoGKWXW5N zPGiSFXW_qyVXzHFXQobU&V{3d5Vg8-hKU&)LeLJc!foOM#NxwH4>(+EoFFuSZC8FZ zGLlbS=T4yYm3PL|RGhRRb(->#RWe?a47qm}or^ZEE5`CC4@sWH4^ol@%tx~z@leu3 zb}7SGs%D)nvf?X+$*B}KRIC(V+R4T3)i5E}bcLdTtT2yqp!y_sx{5AvD~G^0j;;)! zrpS(tbQ4=#B8doh7q_*pNDW0S z=(qirqS0%$Zdo!D2P-FTQQ!psMY+)^$szlzVtB9osl3Qj3}17p=PlY-Z1AO-82a@- z?CfED(}E)UNyOj5ouhT0Ey7k2@53r|)v#-!zFKvjrF@{lVN(e<*m=tAl9)xK&ar%& zor$kQmR1_j)5?A20%Fq-=ozIxEiJ5P#f=q>fy~qR2fmhigKL=jvC@cAZcbwU_+vsx?SCwQ8MV;xwCf4&4M>}tEA( cASb?` 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

  1. 2a-ytx-(Y1%*Q`;e(V?9Smc22g?_xG~I&%zq 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 Lrq7v<7MlJau*;2? literal 0 HcmV?d00001 diff --git a/tests/pdfmake/__snapshots__/tables.spec.js.snap b/tests/pdfmake/__snapshots__/tables.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..de4d54d7a556d0b00400a231ba338355ae20d8ca GIT binary patch literal 56882 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 BnE(I) literal 0 HcmV?d00001 diff --git a/tests/pdfmake/__snapshots__/text_decorations.spec.js.snap b/tests/pdfmake/__snapshots__/text_decorations.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..76b1889bb89e91a80ea054cc1bc3a552faf4e8a3 GIT binary patch literal 13686 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 F{{x~@>pK7d literal 0 HcmV?d00001 diff --git a/tests/pdfmake/__snapshots__/toc.spec.js.snap b/tests/pdfmake/__snapshots__/toc.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..7146b5bcfe14d7b99f8fabf8eaac95f1b7408b6a GIT binary patch literal 13979 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 KK4Q2~W%wUq@xD+1 literal 0 HcmV?d00001 diff --git a/tests/pdfmake/__snapshots__/watermark.spec.js.snap b/tests/pdfmake/__snapshots__/watermark.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..dc71efc712dd37f0016d15195eb95accee628dc6 GIT binary patch literal 14283 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 Date: Sun, 16 Dec 2018 22:12:21 -0300 Subject: [PATCH 08/41] Add initial reference spec --- package.json | 3 +- tests/unit/reference.spec.js | 96 ++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 tests/unit/reference.spec.js diff --git a/package.json b/package.json index 944952383..7eecc6bf4 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,8 @@ "pdf-guide": "node docs/generate.js", "website": "node docs/generate_website.js", "docs": "npm run pdf-guide && npm run website && npm run browser-demo", - "test": "jest -i" + "test": "jest -i", + "test:unit": "jest unit/ -i" }, "main": "js/pdfkit.js", "module": "js/pdfkit.es5.js", diff --git a/tests/unit/reference.spec.js b/tests/unit/reference.spec.js new file mode 100644 index 000000000..e72878d51 --- /dev/null +++ b/tests/unit/reference.spec.js @@ -0,0 +1,96 @@ +const PDFDocument = require('../../') +const zlib = require('zlib') + +describe('PDFReference', () => { + let document + beforeEach(() => { + document = new PDFDocument() + }) + + test('instantiated without data', () => { + const ref = document.ref() + + expect(ref.id).toBeDefined() + expect(ref.data).toBeDefined() + expect(ref.data).toBeInstanceOf(Object) + }) + + test('instantiated with data', () => { + const refData = {Pages: 0} + const ref = document.ref(refData) + + expect(ref.id).toBeDefined() + expect(ref.data).toBe(refData) + }) + + test('written data of empty reference', (done) => { + const dataLog = [] + const expected = [ + '7 0 obj', + '<<\n>>', + 'endobj' + ] + const ref = document.ref() + document._write = function(data) { + dataLog.push(data) + } + ref.finalize() + setTimeout(() => { + expect(dataLog).toEqual(expected) + done() + }, 1) + }) + + test('written data of reference with uncompressed data', (done) => { + const dataLog = [] + const chunk = new Buffer('test') + const expected = [ + '7 0 obj', + `<< +/Length ${chunk.length} +>>`, + 'stream', + chunk, + '\nendstream', + 'endobj' + ] + const ref = document.ref() + ref.compress = false + ref.write(chunk) + document._write = function(data) { + dataLog.push(data) + } + ref.finalize() + setTimeout(() => { + expect(dataLog).toEqual(expected) + done() + }, 1) + }) + + test('written data of reference with compressed data', (done) => { + const dataLog = [] + const chunk = new Buffer('test') + const compressed = zlib.deflateSync(chunk); + const expected = [ + '7 0 obj', + `<< +/Length ${compressed.length} +/Filter /FlateDecode +>>`, + 'stream', + compressed, + '\nendstream', + 'endobj' + ] + const ref = document.ref() + ref.write(chunk) + document._write = function(data) { + dataLog.push(data) + } + ref.finalize() + setTimeout(() => { + expect(dataLog).toEqual(expected) + done() + }, 1) + }) +}) \ No newline at end of file From f5b6ddd2a9d52333ef0f99dca37d88b718125069 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Thu, 6 Dec 2018 23:33:09 +0900 Subject: [PATCH 09/41] Add PDF security features with ES6 --- lib/document.js | 54 +++++-- lib/object.js | 43 +++-- lib/reference.js | 18 ++- lib/security.js | 399 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 6 +- 5 files changed, 493 insertions(+), 27 deletions(-) create mode 100644 lib/security.js diff --git a/lib/document.js b/lib/document.js index e4d598673..43d670d58 100644 --- a/lib/document.js +++ b/lib/document.js @@ -8,6 +8,7 @@ import fs from 'fs'; import PDFObject from './object'; import PDFReference from './reference'; import PDFPage from './page'; +import PDFSecurity from './security'; import ColorMixin from './mixins/color'; import VectorMixin from './mixins/vector'; import FontsMixin from './mixins/fonts'; @@ -22,7 +23,24 @@ class PDFDocument extends stream.Readable { this.options = options; // PDF version - this.version = 1.3; + switch (options.pdfVersion) { + case '1.4': + this.version = 1.4; + break; + case '1.5': + this.version = 1.5; + break; + case '1.6': + this.version = 1.6; + break; + case '1.7': + case '1.7ext3': + this.version = 1.7; + break; + default: + this.version = 1.3; + break; + } // Whether streams should be compressed this.compress = this.options.compress != null ? this.options.compress : true; @@ -82,6 +100,12 @@ class PDFDocument extends stream.Readable { } } + // Generate file ID + this._id = PDFSecurity.generateFileID(this.info); + + // Initialize security settings + this._security = PDFSecurity.create(this, options); + // Write the header // PDF version this._write(`%PDF-${this.version}`); @@ -213,7 +237,10 @@ Please pipe the document into a Node stream.\ val = new String(val); } - this._info.data[key] = val; + let entry = this.ref(val); + entry.end(); + + this._info.data[key] = entry; } this._info.end(); @@ -224,10 +251,14 @@ Please pipe the document into a Node stream.\ } this.endOutline(); - + this._root.end(); this._root.data.Pages.end(); + if (this._security) { + this._security.end(); + } + if (this._waiting === 0) { return this._finalize(); } else { @@ -248,13 +279,18 @@ Please pipe the document into a Node stream.\ } // trailer - this._write('trailer'); - this._write(PDFObject.convert({ + const trailer = { Size: this._offsets.length + 1, Root: this._root, - Info: this._info - }) - ); + Info: this._info, + ID: [this._id, this._id] + }; + if (this._security) { + trailer.Encrypt = this._security.dictionary; + } + + this._write('trailer'); + this._write(PDFObject.convert(trailer)); this._write('startxref'); this._write(`${xRefOffset}`); @@ -270,7 +306,7 @@ Please pipe the document into a Node stream.\ }; const mixin = methods => { - Object.assign(PDFDocument.prototype, methods); + Object.assign(PDFDocument.prototype, methods); }; mixin(ColorMixin); diff --git a/lib/object.js b/lib/object.js index f87816028..1491f110a 100644 --- a/lib/object.js +++ b/lib/object.js @@ -6,7 +6,7 @@ By Devon Govett import PDFAbstractReference from './abstract_reference'; const pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length); - + const escapableRe = /[\n\r\t\b\f\(\)\\]/g; const escapable = { '\n': '\\n', @@ -36,7 +36,7 @@ const swapBytes = function(buff) { }; class PDFObject { - static convert(object) { + static convert(object, encryptFn = null) { // String literals are converted to the PDF name type if (typeof object === 'string') { return `/${object}`; @@ -54,8 +54,18 @@ class PDFObject { } // If so, encode it as big endian UTF-16 + let stringBuffer; if (isUnicode) { - string = swapBytes(new Buffer(`\ufeff${string}`, 'utf16le')).toString('binary'); + stringBuffer = swapBytes(new Buffer(`\ufeff${string}`, 'utf16le')); + } else { + stringBuffer = new Buffer(string, 'ascii'); + } + + // Encrypt the string when necessary + if (encryptFn) { + string = encryptFn(stringBuffer).toString('binary'); + } else { + string = stringBuffer.toString('binary'); } // Escape characters as required by the spec @@ -71,23 +81,32 @@ class PDFObject { return object.toString(); } else if (object instanceof Date) { - return `(D:${pad(object.getUTCFullYear(), 4)}` + - pad(object.getUTCMonth() + 1, 2) + - pad(object.getUTCDate(), 2) + - pad(object.getUTCHours(), 2) + - pad(object.getUTCMinutes(), 2) + - pad(object.getUTCSeconds(), 2) + - 'Z)'; + let string = `D:${pad(object.getUTCFullYear(), 4)}` + + pad(object.getUTCMonth() + 1, 2) + + pad(object.getUTCDate(), 2) + + pad(object.getUTCHours(), 2) + + pad(object.getUTCMinutes(), 2) + + pad(object.getUTCSeconds(), 2) + 'Z'; + + // Encrypt the string when necessary + if (encryptFn) { + string = encryptFn(new Buffer(string, 'ascii')).toString('binary'); + + // Escape characters as required by the spec + string = string.replace(escapableRe, c => escapable[c]); + } + + return `(${string})`; } else if (Array.isArray(object)) { - const items = (object.map((e) => PDFObject.convert(e))).join(' '); + const items = (object.map((e) => PDFObject.convert(e, encryptFn))).join(' '); return `[${items}]`; } else if ({}.toString.call(object) === '[object Object]') { const out = ['<<']; for (let key in object) { const val = object[key]; - out.push(`/${key} ${PDFObject.convert(val)}`); + out.push(`/${key} ${PDFObject.convert(val, encryptFn)}`); } out.push('>>'); diff --git a/lib/reference.js b/lib/reference.js index 3958ce1f4..067fcb3ce 100644 --- a/lib/reference.js +++ b/lib/reference.js @@ -9,7 +9,7 @@ import PDFObject from './object'; class PDFReference extends PDFAbstractReference { constructor(document, id, data) { - super(); + super(); this.document = document; this.id = id; if (data == null) { data = {}; } @@ -45,15 +45,25 @@ class PDFReference extends PDFAbstractReference { return setTimeout(() => { this.offset = this.document._offset; - this.document._write(`${this.id} ${this.gen} obj`); - this.document._write(PDFObject.convert(this.data)); + const encryptFn = this.document._security ? this.document._security.getEncryptFn(this.id, this.gen) : null; if (this.buffer.length) { this.buffer = Buffer.concat(this.buffer); if (this.compress) { this.buffer = zlib.deflateSync(this.buffer); - this.data.Length = this.buffer.length; } + + if (encryptFn) { + this.buffer = encryptFn(this.buffer); + } + + this.data.Length = this.buffer.length; + } + + this.document._write(`${this.id} ${this.gen} obj`); + this.document._write(PDFObject.convert(this.data, encryptFn)); + + if (this.buffer.length) { this.document._write('stream'); this.document._write(this.buffer); diff --git a/lib/security.js b/lib/security.js new file mode 100644 index 000000000..a634e5d88 --- /dev/null +++ b/lib/security.js @@ -0,0 +1,399 @@ +/* + PDFSecurity - represents PDF security settings + By Yang Liu + */ + +import CryptoJS from 'crypto-js'; +import saslprep from 'saslprep'; + +class PDFSecurity { + static generateFileID(info = {}) { + let infoStr = `${new Date().getTime()}\n`; + + for (let key in info) { + if (!info.hasOwnProperty(key)) { + continue; + } + infoStr += `${key}: ${info[key].toString()}\n`; + } + + return wordArrayToBuffer(CryptoJS.MD5(infoStr)); + } + + static create(document, options = {}) { + if (!options.ownerPassword && !options.userPassword) { + return null; + } + return new PDFSecurity(document, options); + } + + constructor(document, options = {}) { + if (!options.ownerPassword && !options.userPassword) { + throw new Error('None of owner password and user password is defined.'); + } + + this.document = document; + this._setupEncryption(options); + } + + _setupEncryption(options) { + switch (options.pdfVersion) { + case '1.4': + case '1.5': + this.version = 2; + break; + case '1.6': + case '1.7': + this.version = 4; + break; + case '1.7ext3': + this.version = 5; + break; + default: + this.version = 1; + break; + } + + const encDict = { + Filter: 'Standard' + }; + + switch (this.version) { + case 1: + case 2: + case 4: + this._setupEncryptionV1V2V4(this.version, encDict, options); + break; + case 5: + this._setupEncryptionV5(encDict, options); + break; + } + + this.dictionary = this.document.ref(encDict); + } + + _setupEncryptionV1V2V4(v, encDict, options) { + let r, permissions; + switch (v) { + case 1: + r = 2; + this.keyBits = 40; + permissions = getPermissionsR2(options); + break; + case 2: + r = 3; + this.keyBits = 128; + permissions = getPermissionsR3(options); + break; + case 4: + r = 4; + this.keyBits = 128; + permissions = getPermissionsR3(options); + break; + } + + const paddedUserPassword = processPasswordR2R3R4(options.userPassword); + const paddedOwnerPassword = options.ownerPassword ? + processPasswordR2R3R4(options.ownerPassword) : paddedUserPassword; + + const ownerPasswordEntry = getOwnerPasswordR2R3R4(r, this.keyBits, paddedUserPassword, paddedOwnerPassword); + this.encryptionKey = getEncryptionKeyR2R3R4(r, this.keyBits, this.document._id, + paddedUserPassword, ownerPasswordEntry, permissions); + let userPasswordEntry; + if (r === 2) { + userPasswordEntry = getUserPasswordR2(this.encryptionKey); + } else { + userPasswordEntry = getUserPasswordR3R4(this.document._id, this.encryptionKey); + } + + encDict.V = v; + if (v >= 2) { + encDict.Length = this.keyBits; + } + if (v === 4) { + encDict.CF = { + StdCF: { + AuthEvent: 'DocOpen', + CFM: 'AESV2', + Length: this.keyBits / 8 + } + }; + encDict.StmF = 'StdCF'; + encDict.StrF = 'StdCF'; + } + encDict.R = r; + encDict.O = wordArrayToBuffer(ownerPasswordEntry); + encDict.U = wordArrayToBuffer(userPasswordEntry); + encDict.P = permissions; + } + + _setupEncryptionV5(encDict, options) { + this.keyBits = 256; + const permissions = getPermissionsR3(options); + + const processedUserPassword = processPasswordR5(options.userPassword); + const processedOwnerPassword = options.ownerPassword ? + processPasswordR5(options.ownerPassword) : processedUserPassword; + + this.encryptionKey = getEncryptionKeyR5(); + const userPasswordEntry = getUserPasswordR5(processedUserPassword); + const userKeySalt = CryptoJS.lib.WordArray.create(userPasswordEntry.words.slice(10, 12), 8); + const userEncryptionKeyEntry = getUserEncryptionKeyR5(processedUserPassword, userKeySalt, this.encryptionKey); + const ownerPasswordEntry = getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry); + const ownerKeySalt = CryptoJS.lib.WordArray.create(ownerPasswordEntry.words.slice(10, 12), 8); + const ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(processedOwnerPassword, ownerKeySalt, userPasswordEntry, + this.encryptionKey); + const permsEntry = getEncryptedPermissionsR5(permissions, this.encryptionKey); + + encDict.V = 5; + encDict.Length = this.keyBits; + encDict.CF = { + StdCF: { + AuthEvent: 'DocOpen', + CFM: 'AESV3', + Length: this.keyBits / 8 + } + }; + encDict.StmF = 'StdCF'; + encDict.StrF = 'StdCF'; + encDict.R = 5; + encDict.O = wordArrayToBuffer(ownerPasswordEntry); + encDict.OE = wordArrayToBuffer(ownerEncryptionKeyEntry); + encDict.U = wordArrayToBuffer(userPasswordEntry); + encDict.UE = wordArrayToBuffer(userEncryptionKeyEntry); + encDict.P = permissions; + encDict.Perms = wordArrayToBuffer(permsEntry); + } + + getEncryptFn(obj, gen) { + let digest; + if (this.version < 5) { + digest = this.encryptionKey.clone().concat(CryptoJS.lib.WordArray.create([ + ((obj & 0xff) << 24) | ((obj & 0xff00) << 8) | ((obj >> 8) & 0xff00) | (gen & 0xff), (gen & 0xff00) << 16 + ], 5)); + } + + if (this.version === 1 || this.version === 2) { + let key = CryptoJS.MD5(digest); + key.sigBytes = Math.min(16, this.keyBits / 8 + 5); + return buffer => wordArrayToBuffer( + CryptoJS.RC4.encrypt(CryptoJS.lib.WordArray.create(buffer), key).ciphertext); + } + + let key; + if (this.version === 4) { + key = CryptoJS.MD5(digest.concat(CryptoJS.lib.WordArray.create([0x73416c54], 4))); + } else { + key = this.encryptionKey; + } + + const iv = CryptoJS.lib.WordArray.random(16); + const options = { + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7, + iv + }; + + return buffer => wordArrayToBuffer( + iv.clone().concat(CryptoJS.AES.encrypt(CryptoJS.lib.WordArray.create(buffer), key, options).ciphertext)); + } + + end() { + this.dictionary.end(); + } +} + +function getPermissionsR2(options) { + let permissions = 0xffffffc0 >> 0; + if (options.allowPrinting) { + permissions |= 0b00000000010; + } + if (options.allowModifying) { + permissions |= 0b000000001000; + } + if (options.allowCopying) { + permissions |= 0b000000010000; + } + if (options.allowAnnotating) { + permissions |= 0b000000100000; + } + return permissions; +} + +function getPermissionsR3(options) { + let permissions = 0xfffff0c0 >> 0; + if (options.allowPrinting === 'lowResolution') { + permissions |= 0b000000000100; + } + if (options.allowPrinting === 'highResolution') { + permissions |= 0b100000000100; + } + if (options.allowModifying) { + permissions |= 0b000000001000; + } + if (options.allowCopying) { + permissions |= 0b000000010000; + } + if (options.allowAnnotating) { + permissions |= 0b000000100000; + } + if (options.allowFillingForms) { + permissions |= 0b000100000000; + } + if (options.allowContentAccessibility) { + permissions |= 0b001000000000; + } + if (options.allowDocumentAssembly) { + permissions |= 0b010000000000; + } + return permissions; +} + +function getUserPasswordR2(encryptionKey) { + return CryptoJS.RC4.encrypt(processPasswordR2R3R4(), encryptionKey).ciphertext; +} + +function getUserPasswordR3R4(documentId, encryptionKey) { + const key = encryptionKey.clone(); + let cipher = CryptoJS.MD5(processPasswordR2R3R4().concat(CryptoJS.lib.WordArray.create(documentId))); + for (let i = 0; i < 20; i++) { + const xorRound = Math.ceil(key.sigBytes / 4); + for (let j = 0; j < xorRound; j++) { + key.words[j] = encryptionKey.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24)); + } + cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext; + } + return cipher.concat(CryptoJS.lib.WordArray.create(null, 16)); +} + +function getOwnerPasswordR2R3R4(r, keyBits, paddedUserPassword, paddedOwnerPassword) { + let digest = paddedOwnerPassword; + let round = r >= 3 ? 51 : 1; + for (let i = 0; i < round; i++) { + digest = CryptoJS.MD5(digest); + } + + const key = digest.clone(); + key.sigBytes = keyBits / 8; + let cipher = paddedUserPassword; + round = r >= 3 ? 20 : 1; + for (let i = 0; i < round; i++) { + const xorRound = Math.ceil(key.sigBytes / 4); + for (let j = 0; j < xorRound; j++) { + key.words[j] = digest.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24)); + } + cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext; + } + return cipher; +} + +function getEncryptionKeyR2R3R4(r, keyBits, documentId, paddedUserPassword, ownerPasswordEntry, permissions) { + let key = paddedUserPassword.clone() + .concat(ownerPasswordEntry) + .concat(CryptoJS.lib.WordArray.create([lsbFirstWord(permissions)], 4)) + .concat(CryptoJS.lib.WordArray.create(documentId)); + const round = r >= 3 ? 51 : 1; + for (let i = 0; i < round; i++) { + key = CryptoJS.MD5(key); + key.sigBytes = keyBits / 8; + } + return key; +} + +function getUserPasswordR5(processedUserPassword) { + const validationSalt = CryptoJS.lib.WordArray.random(8); + const keySalt = CryptoJS.lib.WordArray.random(8); + return CryptoJS.SHA256(processedUserPassword.clone().concat(validationSalt)) + .concat(validationSalt).concat(keySalt); +} + +function getUserEncryptionKeyR5(processedUserPassword, userKeySalt, encryptionKey) { + const key = CryptoJS.SHA256(processedUserPassword.clone().concat(userKeySalt)); + const options = { + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.NoPadding, + iv: CryptoJS.lib.WordArray.create(null, 16) + }; + return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext; +} + +function getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry) { + const validationSalt = CryptoJS.lib.WordArray.random(8); + const keySalt = CryptoJS.lib.WordArray.random(8); + return CryptoJS.SHA256(processedOwnerPassword.clone().concat(validationSalt).concat(userPasswordEntry)) + .concat(validationSalt).concat(keySalt); +} + +function getOwnerEncryptionKeyR5(processedOwnerPassword, ownerKeySalt, userPasswordEntry, encryptionKey) { + const key = CryptoJS.SHA256(processedOwnerPassword.clone().concat(ownerKeySalt).concat(userPasswordEntry)); + const options = { + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.NoPadding, + iv: CryptoJS.lib.WordArray.create(null, 16) + }; + return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext; +} + +function getEncryptionKeyR5() { + return CryptoJS.lib.WordArray.random(32); +} + +function getEncryptedPermissionsR5(permissions, encryptionKey) { + const cipher = CryptoJS.lib.WordArray.create([lsbFirstWord(permissions), 0xffffffff, 0x54616462], 12) + .concat(CryptoJS.lib.WordArray.random(4)); + const options = { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.NoPadding + }; + return CryptoJS.AES.encrypt(cipher, encryptionKey, options).ciphertext; +} + +function processPasswordR2R3R4(password = '') { + const out = new Buffer(32); + const length = password.length; + let index = 0; + while (index < length && index < 32) { + const code = password.charCodeAt(index); + if (code > 0xff) { + throw new Error('Password contains one or more invalid characters.'); + } + out[index] = code; + index++; + } + while (index < 32) { + out[index] = PASSWORD_PADDING[index - length]; + index++; + } + return CryptoJS.lib.WordArray.create(out); +} + +function processPasswordR5(password = '') { + password = unescape(encodeURIComponent(saslprep(password))); + const length = Math.min(127, password.length); + const out = new Buffer(length); + + for (let i = 0; i < length; i++) { + out[i] = password.charCodeAt(i); + } + + return CryptoJS.lib.WordArray.create(out); +} + +function lsbFirstWord(data) { + return ((data & 0xff) << 24) | ((data & 0xff00) << 8) | ((data >> 8) & 0xff00) | ((data >> 24) & 0xff); +} + +function wordArrayToBuffer(wordArray) { + const byteArray = []; + for (let i = 0; i < wordArray.sigBytes; i++) { + byteArray.push((wordArray.words[Math.floor(i / 4)] >> (8 * (3 - i % 4))) & 0xff); + } + return Buffer.from(byteArray); +} + +const PASSWORD_PADDING = [ + 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 +]; + +export default PDFSecurity; diff --git a/package.json b/package.json index 7eecc6bf4..db9d60c40 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "blob-stream": "^0.1.2", "brace": "^0.2.1", "brfs": "~2.0.1", - "browserify": "^3.39.0", + "browserify": "^13.3.0", "codemirror": "~3.20.0", "coffee-script": ">=1.0.1", "eslint": "^5.3.0", @@ -41,9 +41,11 @@ "rollup-plugin-cpy": "^1.0.0" }, "dependencies": { + "crypto-js": "^3.1.9-1", "fontkit": "^1.0.0", "linebreak": "^0.3.0", - "png-js": ">=0.1.0" + "png-js": ">=0.1.0", + "saslprep": "^1.0.0" }, "scripts": { "prepublishOnly": "npm run build", From 2ef9d7d6a31180417fd3658b27b1720139100e22 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Sun, 16 Dec 2018 23:02:28 +0900 Subject: [PATCH 10/41] Allow customization of randomizer --- lib/security.js | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/lib/security.js b/lib/security.js index a634e5d88..629ae54e4 100644 --- a/lib/security.js +++ b/lib/security.js @@ -8,7 +8,7 @@ import saslprep from 'saslprep'; class PDFSecurity { static generateFileID(info = {}) { - let infoStr = `${new Date().getTime()}\n`; + let infoStr = `${info.CreationDate.getTime()}\n`; for (let key in info) { if (!info.hasOwnProperty(key)) { @@ -20,6 +20,10 @@ class PDFSecurity { return wordArrayToBuffer(CryptoJS.MD5(infoStr)); } + static generateRandomWordArray(bytes) { + return CryptoJS.lib.WordArray.random(bytes); + } + static create(document, options = {}) { if (!options.ownerPassword && !options.userPassword) { return null; @@ -135,15 +139,16 @@ class PDFSecurity { const processedOwnerPassword = options.ownerPassword ? processPasswordR5(options.ownerPassword) : processedUserPassword; - this.encryptionKey = getEncryptionKeyR5(); - const userPasswordEntry = getUserPasswordR5(processedUserPassword); + this.encryptionKey = getEncryptionKeyR5(PDFSecurity.generateRandomWordArray); + const userPasswordEntry = getUserPasswordR5(processedUserPassword, PDFSecurity.generateRandomWordArray); const userKeySalt = CryptoJS.lib.WordArray.create(userPasswordEntry.words.slice(10, 12), 8); const userEncryptionKeyEntry = getUserEncryptionKeyR5(processedUserPassword, userKeySalt, this.encryptionKey); - const ownerPasswordEntry = getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry); + const ownerPasswordEntry = getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry, + PDFSecurity.generateRandomWordArray); const ownerKeySalt = CryptoJS.lib.WordArray.create(ownerPasswordEntry.words.slice(10, 12), 8); const ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(processedOwnerPassword, ownerKeySalt, userPasswordEntry, this.encryptionKey); - const permsEntry = getEncryptedPermissionsR5(permissions, this.encryptionKey); + const permsEntry = getEncryptedPermissionsR5(permissions, this.encryptionKey, PDFSecurity.generateRandomWordArray); encDict.V = 5; encDict.Length = this.keyBits; @@ -187,7 +192,7 @@ class PDFSecurity { key = this.encryptionKey; } - const iv = CryptoJS.lib.WordArray.random(16); + const iv = PDFSecurity.generateRandomWordArray(16); const options = { mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, @@ -300,9 +305,9 @@ function getEncryptionKeyR2R3R4(r, keyBits, documentId, paddedUserPassword, owne return key; } -function getUserPasswordR5(processedUserPassword) { - const validationSalt = CryptoJS.lib.WordArray.random(8); - const keySalt = CryptoJS.lib.WordArray.random(8); +function getUserPasswordR5(processedUserPassword, generateRandomWordArray) { + const validationSalt = generateRandomWordArray(8); + const keySalt = generateRandomWordArray(8); return CryptoJS.SHA256(processedUserPassword.clone().concat(validationSalt)) .concat(validationSalt).concat(keySalt); } @@ -317,9 +322,9 @@ function getUserEncryptionKeyR5(processedUserPassword, userKeySalt, encryptionKe return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext; } -function getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry) { - const validationSalt = CryptoJS.lib.WordArray.random(8); - const keySalt = CryptoJS.lib.WordArray.random(8); +function getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry, generateRandomWordArray) { + const validationSalt = generateRandomWordArray(8); + const keySalt = generateRandomWordArray(8); return CryptoJS.SHA256(processedOwnerPassword.clone().concat(validationSalt).concat(userPasswordEntry)) .concat(validationSalt).concat(keySalt); } @@ -334,13 +339,13 @@ function getOwnerEncryptionKeyR5(processedOwnerPassword, ownerKeySalt, userPassw return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext; } -function getEncryptionKeyR5() { - return CryptoJS.lib.WordArray.random(32); +function getEncryptionKeyR5(generateRandomWordArray) { + return generateRandomWordArray(32); } -function getEncryptedPermissionsR5(permissions, encryptionKey) { +function getEncryptedPermissionsR5(permissions, encryptionKey, generateRandomWordArray) { const cipher = CryptoJS.lib.WordArray.create([lsbFirstWord(permissions), 0xffffffff, 0x54616462], 12) - .concat(CryptoJS.lib.WordArray.random(4)); + .concat(generateRandomWordArray(4)); const options = { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.NoPadding From 870260c62957603a871500bcfa7338a5f99efdb9 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Sun, 16 Dec 2018 23:10:56 +0900 Subject: [PATCH 11/41] Add tests for security features and update snapshots --- tests/__snapshots__/fonts.spec.js.snap | Bin 108644 -> 109909 bytes tests/__snapshots__/text.spec.js.snap | Bin 5468 -> 6298 bytes tests/__snapshots__/vector.spec.js.snap | Bin 62820 -> 63708 bytes tests/helpers.js | 17 ++++-- .../__snapshots__/absolute.spec.js.snap | Bin 74056 -> 74703 bytes .../__snapshots__/background.spec.js.snap | Bin 71960 -> 72590 bytes .../pdfmake/__snapshots__/basics.spec.js.snap | Bin 1720 -> 1936 bytes .../__snapshots__/columns_simple.spec.js.snap | Bin 52344 -> 52729 bytes .../pdfmake/__snapshots__/images.spec.js.snap | Bin 174028 -> 175035 bytes .../pdfmake/__snapshots__/lists.spec.js.snap | Bin 43424 -> 43757 bytes .../page_references.spec.js.snap | Bin 15282 -> 15534 bytes .../pdfmake/__snapshots__/qrcode.spec.js.snap | Bin 35987 -> 36311 bytes .../__snapshots__/security.spec.js.snap | Bin 0 -> 10448 bytes .../pdfmake/__snapshots__/tables.spec.js.snap | Bin 56882 -> 57275 bytes .../text_decorations.spec.js.snap | Bin 13686 -> 13956 bytes tests/pdfmake/__snapshots__/toc.spec.js.snap | Bin 13979 -> 14218 bytes .../__snapshots__/watermark.spec.js.snap | Bin 14283 -> 14514 bytes tests/pdfmake/security.spec.js | 56 ++++++++++++++++++ 18 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 tests/pdfmake/__snapshots__/security.spec.js.snap create mode 100644 tests/pdfmake/security.spec.js diff --git a/tests/__snapshots__/fonts.spec.js.snap b/tests/__snapshots__/fonts.spec.js.snap index 530cccb08963599e50077fc0fe272afcbdcfe2cd..0c751752bc4c5647c9ff18ebdbd6e3cd8517831a 100644 GIT binary patch delta 2557 zcmd6pdu$X{6o+%}?5op4`hZem8#mBWirAf*ohNRp(nka;ZkJM|xX8BMJ~VWjb`={? z(AKn;G)k^G5K`Ji!CD|yZsZC?Fk*ZV0~i5K1zL(Ef*OoyOehd%wrRvpi2cJxCzCsw zIcLs2Gw1i+bH6|3I5XgQcO5XQrt0r?LoRs-vTXP@*+EX&7o$ftH|LI2JjKrS7Zfe2 zi{`N5`YQ9D=k8|U#|#Av1ddlZW8h*(c@9o=Wy~`p23SviV>lFzG`eGf#_sDP^#!45 z*v*?k0{Xt)AmeUVJK_a>N*8$2c!^isv0(0cH#-`Z7d072;+6(9(PHunMw;evhr8gF ztj{DPtMPuShzC!ngMhEa%?x@L6}VUV)JjFDtQOVkYE`KUg(@W_EXWnryd-g9SyQw; z_dmM?*}OcqDH>{wKGztoW_d}Lb^lICClV`y@uj%o`W&()KG{xs5`zfeNM1?&DNewp z(>DG4)lep04KwYr;(KxT#p$?jC=)+D{YVNg#7cUHT{P@PhAj?vq?Uu1TuwcdIK%ku zF)8_ctfx3!UlXl0im!>L>N3ed_OOi{nBT*s8C7%#f~==Bvb?^oGE!xz!F)4-Pr6EQ z`SodbK~R*KRJWpSK8#=YdB{h;JO>$BSdMU@@IKrr z$KmG-w~^$cuNgeND3`E{_WnwgT_pZUe*&S$H!y@d@v@QgDUku$M1)VZs#{Tc(Ey}4O_62U zB6Ee4@cPr4wY)4^`H^J{7mBJ{{S;G2f9FTwL4AHf5HL-#)v8_`WH%kDb9TlnD33Y>Q9C_a7bbF%$5W@rwA^`P%$po7k`ff|#pzQP47 z^gS*pq*q!YelV za1LZKv~oTK5Z#{(#S9(c0RjC(fKEhTl)w`gi?=TimdE-MJ|54~gnX!B5{!AiIBX1= z=7h~fFkq+tVmQm_Za*B*Px&E4b4y?j(2@XLVW?6DQ*Cr%Ib1??RuE<*`rwnW5z)gT zP#OJ~D(IzK!|)ZNm9D=@;wNybr7_B~peOZ0I^rjtPD$3N(ei@8Xq=ZCU@oxHAKrxM zf4|*0IKi!kwN_rivfS~4X!*;$AX}GDLDl}+YSc~IvS@BK*sQF=$BNil?3xGIKLLp% B2q*vm delta 1638 zcmb`{YfKzf6bJB}nb}>KMc$M(&^V#Mf?{_bJNrlr5ur$dErf!#G-!EjDb(&#SSd77 zk&>b%rIcGTq@>Z(6iGmBIBjoIZE9ltU{VcA3jq^CDHyeh)qYVE1I{)v3baOzlld^Y zbM8HJXMXd)HEUd)FkUvE0CWSV##>OHE@$dp<=vUl>{+(2tI*-a3M-|MI_-W%Ho>?RZW4`ChtC8QbiH(@+H72PSMdPTXA1lgaKQlDj0Gr=6T#4%K=g2 zUj6qE9H#g2`fB~v4ZI|3!YIU%gLjgNM+znV8!kt?1yLyF|576bYvRd~Mcad#vG@uQ z(PX(ANxqe0I7M>FeR4AXmbSp*;?rl?Sp6LcrIoy`%wO)SukqJ<1xY6NmdoRVD+jx7 z-OAgFyuP}?e!*_HtJ;_6Aq}na2_RJ2iIMhJ7Q3CZfCt>OEXmL8C3BhS$Y*UaVt(!} zh79GUk;%LP^gTDhlI+5#u&M9@;6_h@85>@xW$A6t!&&UAY6HU7>>*V( zGniRxU@^aL@iDZ$Vqvi4a0QF+9ho*^SI3hKUg~TFv>yAO!PvL->9xn_!f>0m3-Ij$ zeO=?Ahr!)viwrn26lcJX-!11z!dN5rjQL^w{az!IO9c%7$>6=~*Yqms8*MB`PINFh@YQA(6kUtW;&eKkYehJnc8AWz!>VoIoT-B#FAOw_|{)w5)DS$w1~%foyrswxII*11wmzFYaIe*`|I zjR3tYWev~@+8ajbq-GPyoR(vTGVP2Ro}~+B7&d9$G4M0(j)f&7ZBBqpj^Y#WHA7D) zK_9E7r@{^GmsFUc(^fdj(aH=+VrhpBiWz!Sg6*s(sIWp)9MHwk4_uHDN^fUFDW`qj z0zA#hgF4pu*@wE5WO`*g%o->uhDla?c_&=dlFDEYZ7+jOK!?lW8t%P}o zw(kXjp~KbC#?T}$sH|48A1+X)9=>4chpzZ+lFjQ|hZlWEp!4ObuJKQ(X z#5bXtq5a39ouihMU}LD~6x0E|+6N6G)H(>S8~y<5a_O&hb)Gq04wv@BJFtV1C9U)v z=tAAf`e4%;ubnB2>(x3`Re7{fJppy0iL_@3vVoJ;V9;3Uuje6#qY)!;=)Z-vsuhgF k(SMZKin4YSl5Cg$Oze%TeyLz$^C>CYiu3p+e(x6kclh%bwg3PC diff --git a/tests/__snapshots__/text.spec.js.snap b/tests/__snapshots__/text.spec.js.snap index 32d2bff7c98283cbdb28aa2739f064d2f7c2e5d9..b331ab7f7a97de850b2fe9f74b6505fd369794a0 100644 GIT binary patch delta 1396 zcmd6n&uY|A7{$rNFnFVw)^P^W87|_Wtw_JzB=?WjS?E|0Y1Kgy)Pm_ug5zQa#}T@; zYd6|&rw?Hv3(>uA;mVC`A3*RXHEl^Mt}4BYz|A=v!Y_yOZT`Kx^};Zj@bF{xLh`|= zRhAV6I$nEDF5c}f-5yToNHiLxcNhL9xVg~1!oZcFACR3#b9nqjb3RS%k%b$RD4dQb zGz-e_!||vaP9y53A-&BbpDQjy>bP|&XqG`olx(MgmvJn`APoC~h!|gs-5`L7E1^2{-5!Mx za57z=L@`kwM`z|t^40obn66YB?EU0d^}6wJ2U8I&%lQ=rFBi&ScmE1*nYByX`1UYP zGfRxqydJ(i`o-`yV`wO;zo|e{allRTsv)^{7c?OS61&yR-UA56%a#C}c2nnXSSNAC zuC5*!Xcs)lNWZq3VR|4m>C4IYW8NXDu*S>w!3&@}yxfqm4_>D5le1f5E=zd1^8QPS z1tiYQ1ET_If6wEa*&+U%9UP8r08=mzuUTzecNXg$f)b^`!*`^HkPAtST7rN!hL4)x8m8AX^Tv#^M2Y6Q5rd1sbra_Ku4r6!i-7b&2LWaj6& zB$lKqO#UDsGTB>j2czZWe=LS#Mg|H7AfS+^zy)R)7?@jHPWBPWeH>CKbao-;BV zo0$UL7_#{qhYjQ83@%dLxRPrpqao0Z2I7{6Kx@$)X<=zNc@=jlFd$4OoAJm^uHg{^ zs_y5J5hCm1DZf@o?rYz7*O)%YKYzzuCW^-e+$s2^^NC`Ac z1LMtg!l8^z#vtdZO#Ug7IXP7{k%DM75H~Y5!*HURu_@Szrp6YN4~T=EXhvkbnj4sM Qsj9mAyKyOTC0KI-0J3eikN^Mx diff --git a/tests/__snapshots__/vector.spec.js.snap b/tests/__snapshots__/vector.spec.js.snap index 4ec160a9b0b0802dad396d8a36cd0bedbb47a8a7..7cf40f0926885fb5d7beaeb9c67cef8b48ca48d5 100644 GIT binary patch delta 1442 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 SNdlLVv9_d;OXIfYa(@FCN7_pO delta 1035 zcmZute@v8h7~k`K-xGK%P4pyC*u{@=2P@wD_1+y2<~%O}Eo*^F#c$BLb~Q6o74;aQG=d8zI*n0KF{a# z`95t4x#N_4vLy+vNyQR+l{+#{EVwIhEVWYb-Ng;qXf6{tnzliLymXo1oXi}QXYMs& zG}}+e&)rElp4TjpWlbS2uw6b?Fd*aG$CC*^6_v6eBJprVO>`<;hSSt3BPyeC*x7X1bR*% z7W_i*Ev!CsO(3VQTtGjYD`Ee+Jp$JAJ%VpsoWRhf4uLHLgEB84Y{$^xNx|<7^`qkQ zDnjf^4e{-(_i+3B8^l+xb+G>9VKxu1XMOlF92xEt2#)L}OkRJ0Xdx@3L4-$>1#kcP zT^3`7(8i)NKK|6%4&CdX1Wi)wl9zay_PIxg%URNnIwUzl1fx!vkarhz}dBJQ~VrP=PCUV2d} zdS0&zH`eK!LKeG^w@y{3O{+~Cl$I(*YeM0M=w^#s^Vl&mwNFZH6Qoh%Gl>?>OI%7J z%R`BqOK7gAtSSivBl<6#wbR%_xtw((d08s&o-}TW@PlWR4`D;Ps-xb2yk)p&MeX7 zO3h0F@eK`dNf^Q;T&#=?3@r?RgaH^tX-;0jBC7>5F^EgwxhOTUB)>=jY!Hl}nV;v9 zSdyw>2r?vSG9&9wCPSmiyIJ)m3=K?;6u`zPrH-)z#mPONlGNnhOAoEO5pE delta 193 zcmbQhzk_!}AtQ^iv8nOq62>UT$=8`4Pu|P?Z?XWZsEtN|i<@_5i6)o6b5UwyNq&(6 znn-4To=aj$s)B}#m63s=g#nN-0D~ya$^NW687(JsvFS?~SX!7VfQ1$E6u2M?3@pt| zCkL|mid&djV91%9n@#@6CJofi$1W*rXUA1sl2}wyQIwj-WoTe*%B8C6>hH#-#Fb#p F1pvI8GB5xD diff --git a/tests/pdfmake/__snapshots__/columns_simple.spec.js.snap b/tests/pdfmake/__snapshots__/columns_simple.spec.js.snap index 612d245ce255177a87342e71385f618989c49966..9cd1a461ee97511304fbc7114149ca51eab8eda4 100644 GIT binary patch delta 1148 zcmah{TS!z<6y@GKGfh_rDSIes7t>S{=G-&)ajp&8)k0SBuO zn4#ii&UV_=*a@-5DS z)+rX(xvEYCA|;|P=#8H-{#U@h5pb1ZBoo9wD6!6!(81w6g5#3)qOCIQb4Nm9DWSA+ z4upa(cf=>*xJtcPUcTw4!na|L+o`1D8VycJ^w8)Kr^5W`Yo0m>vUp8ruPA`Uu~H#R zi)XZmwuVq+FyIM!nYd2BPc+e>Ui7cAtSLqsQBzPlhK)bTTXGEpvF0Wl8$?dWwB(0GSqes)tfnMmq+%l-Q&X$O zczPNSt8!`unTL^j8H@}Kvl&UcHI~U%lStSdxa13q4u@zv8@R?Mh|r^}Ii0pzmvr7i zJUaIH72@|3-RpLHRNaTQHovT@$fp^)Q7-+T(h?u_u82Dv=??q+A~sZ65eo~CpQ#e_ I#nvO@Z~ItGCjbBd delta 960 zcmZWnO-NKx6z09>8>S~=L~3R~53|w`-o5wzUX=;aG)Yu6#U#T~$8lWDqw!Ia#k7eK z`!O$5BW-FSN&;A1&YZ>N@||mVZC5PU_FOELB-)g56l!F@QS)_s)pNB z3>#%vcotL)c&v1BFYtti#Y`Pm%~Kr9p+^AINeNKU-T&Ia} zt08|Ed(sw!?DmHOn>rt0yF0U?u=AA%K6mE|u-)t900*w}Y%aLYVgqAvG*sk;GnW?m zECcCQa`KbTvKM|{yU0UplyY$I#&<77N1J#-H7&L__6=U&ZWUN?Jh#52xu*7P$SIYS z>PW!v*bzAm3EANqzY~y4YRU=17IGhyjLuTY=aT~AKD%d7B7`aNT=rpnb1#;W-12`) zbyG6?djBp*;PS+KK2LKi5>1trlF|?e2b}@gLMUn9aI8$&rzRM>B;}ml77q2=eF2$h zY%$)xKS7<=h%vHKJ2y-&Wkb%CpNFAopTHKL`dQ&@iCDMwW~mn%XSaB$ex{2s0vkLV zn7_%k=U=kvg&z=KeBcHA?l=eC%WGavXLtqYA$P_^$YEJZeh5)5l?|^nMpcxSLWX8p z8JJ3G21YXKFd~|sR)-PRGclx*WL@;%OxVzoKRm{OD>LM@z$nJ6Xv zSGU8ZAxKv<4bt><5rPb2rU?^7cM>M}ut^c?SUpH}NolcdM|LIMBU0+a{kBY8!&4VE c|1abyrA#0I3BVuK)l5 diff --git a/tests/pdfmake/__snapshots__/images.spec.js.snap b/tests/pdfmake/__snapshots__/images.spec.js.snap index 9cc0009382eb02b1b6a86d5f44719a902a10c633..89415bba3b1650aae4c2319ce1a088cb8a98f619 100644 GIT binary patch delta 1925 zcmcgqdr(wm6rXeM-CeoM0zL*!6gM1E7=>Nf$6X~R$5o&L6~ov1T5vZ}*{yX0C7-3H zsexSZ6W^0cnqt{ko_s}W@HfSPXG4JeVp%{-*5C#!DVMZLk=XR)9m8)Yt`WE)Y%?faDr(6Z^{tg8eVx*z|5{lUet?fMbVYV- zH|W^geL$D)+u zb>S|pvZnk;#l3VIKeyDbmJppcNNcO>DJw2EP z-8Ix@7DOYZ%z*$XV?-@&cpqv+%J>jI5b59|C=^()GB`wc%iuGl>I&EnETa+>I#&tx zda7Lq!!YCsiR8y&rxT1=U1KKM40wRHLy< z>y)}AgkgYfk@wE3eFbxg< z88U#XF2Ee1whd5>EV&=*Xvrne04r;Rvy^`sj)~Os3h05%SD~*+{_7CX(8b$u8Q7k? zFocCQ!$6kT3{{~4r>15o1-2<34dnX+CL*2r6C|Kt?m=4(U3&=M3bX+*MxZ?+p4YYL zSsIRmfi4*^6(}+iYmx12jms&g4XzUDYBZJrxjJAcq+mxJp`jyPaJZH_#bXI7OSbD6 z>w%NlqaNsFuO#3cwmSiLw6ygl;vs>>YSp2zC81X}--PKRownd%U@L4GAgvwK!>I48 zI1p$_U)%_!%HId9$%#{FWPcn0p+;==0Q{8tW?&?+>`dIunlmwpt*Jn*-l3M&%N{}{ zWMLYO%|eaH?oU@Ib3!&Y2}&=gj)o4#c|hlLaRyRu9%euOi>pRp8(>>TqKgSGbdk#y zLN$!S;ucoQ9)n2&O?6{pD_UEKRY>N^xE|RFAKs$9e!PHG6~H%;E(Wo?K#xkW0_o#Y z+=Ikfv~x9{K*44;Gj+DR5nqR!#aR}k$>`6YDD@cR9PoN!FhTP8#)tN1 z>wgt&e;1s+Q%q*rq&`e7Yvj|zsZTIzX;Si_fPehE1)hM>9OBBAlKTZb?x0`Ys}$}3 zNfi2hPIu5_G>7`4)&-9yN85? z)>Dk#YLQ>aSyI*Z&){si8gCKuRK3cMEC>y_=}-R=Ub-IHR= z_nNI%lgH+;JJO9WLQKzNMoa1G(v+Y(5S$wDcqNByH`}Cc-TDt4AjL`J`bd8PA9$-< delta 1468 zcmb`FX;9R47{}-N?tfW!xm3W+NEVdgs$qeJ-Bn{UL0qx$!YdiUV*^umg!KY1v~j!z z{=yGD63s9`4f~BfD5#94JQZE}8sV__e)j_e%s+ac{YKwP^+~{M3TI=^jW+xVt8a$|7 zHd>oWo(M2Q9v}UH)Q%yU@_Eu)t$K3UYH11n+wgx6RV~3&WO|DIb#?E&*Jz?R(MkTY zb>1?a9KYzXMq2XXNG^6>*U2#}S~YTDQL&#a-^w0pdg%o9S!UMBi&a@9Blb2x zez(6Ea&C3KBK<%85VH74xLZi=Us`$e^L8(}u4x9zo6UDgo;%y>=kbbP!rJLpS=n}- zWI=n)05zz)Ubc2m)XShp({!@nX&&THy%l=7=7pDs*r`wyHz{;#0Ivw7FdZKVqAsmi z8A@GZ+Hkr+Av|mZRr&JiINC*=Zl?KqKKT~;c#F$+>gJ;ps9h23(kYi8rPFU(zLP<> zAev@UC#$n4K*x1iR6{&{9wmTF7tki+p$>`!kISL?#7A@Kk(T#3>5>;aiYP?OTi266 zxOxLQi32~P8imhpru7Ps*+CACs4Jn1oL@>uz(Kp|IEmJBD&edO>hfaSA({rRI82Sc zip83k$de_VQrM@F_IvWN78r>c|fBSPWzRd zT0ZlX?vVJnmnMncUb2g~pHUg#ct(Z98Gn!qeDzP#5qCYO0a||ik{UI9M1vt3KJS4} z9q;$Wd&E6{FcF6gL>)w%Kg!t=fGUOYDqO^?hPoq{2VuIFdqR-m!S)C&g*X!hr-+Hh z7_mGWMWQzvl8?QCiyB^Of&<(g2ltl27F;56-wG#Z+F;dt&ebnVe{$~3Dp6cc{w&`? zEb+auI7Gs&R^gHqoOY+FSi&u-7)wHL$6;=;!<)pp38)b{X^0k8Y48((qE_ zehKtw`1Vw6A5u?%+b!4(*x;VXsM4xYURUqbk=M-MB-s01I_h-->ix)~*` zY(WDAZ^LFE$DDK16fQKDZSAp&D&a%odwfxF0W!J3m3KB04@p;OK}+ z$>Y*;U6F>EvH1(LUCw-CKa%UrOU`yJG)5$kj5EbrO>SrEv)Pd%pw@kQv$$4^*uf@~ zu@4*bjE26%W=*iz#Nax-t1(;Sgrg4OlN0*)SQ5;(|1fjBr5{U7h`04;Hfy}qCWh7{ z$YwUgOmRA0#yF$NIK>cS&vQ79vGILHQj(#-m7VWenZM9suvrt$HbYogO8PiMs3B{V F;a^8G9KZko diff --git a/tests/pdfmake/__snapshots__/lists.spec.js.snap b/tests/pdfmake/__snapshots__/lists.spec.js.snap index b1b6bfbf8f883b466593701a2597279a69ae2ded..b1508befa51b1331219746537ef82ec240bae00c 100644 GIT binary patch delta 1173 zcmah|O-L0{6z0v0PaP}#Nlg+NBTE0* zU0@5NOM%cr0{;l2xH}Ce7jh}5SnftU5#w8C6L%p!_gOPEm|h9 zS7%TW``tb-vboM#Nm3zEy$Z>mw8);H|5eUbl1rip4a0+{GmE972|R}mjuSdFUPtH0 zw~Be|y>9#WuGSYidz>o~!W?ly<}?W1x&jnCc|~sSi*})LISPF7k;&L>)Q%?mna^qX2>4zbQ zt7%W33Mycq^M+8XqQ4Eaw#t!nR(906tf<)4C(dq8tO?aBbV-Kg$OZdib}VJ5Ek#9i zXtJLko~V*E4HmTAocvP4)^B|k*~)EAq8l?Utn!W^u!_6Q64UR0EMnyk8pG`5!w({r z7q&wx{kZ^Z3|`$eC9BBZ4>XYmY1?AA2!TrJ;;|{nhu9MW5C*&_ABIRE&VWGk$LS{F ztJs^X69fA&2sOfm=Qg#gH;A!OBAW+!QXybC#sD}OeKtnSEtfq?mdUIA1Se;?wz}SR~OS_iqr&Ku-w{1sp zuN%L@qw5KiNQ*d-yBLDOP^|NI-YfFk=l^AyId!)gpjP0YwU7uCEa*{V#2V$ z;KDdxi|Xr!!#%yb8%AB&dn6 zjqHbgH(rPd%7Va7q_#V!bJ=dE$5yDtCGSi!Pz-X^)giUT&Ruq|D2!#m@k&d;8()&3 z?>3eBy@_ggHStG)*LPAftWGY*VE%4p5&WF~DDig>mIch8&5$I)O2NI7Q&3?;EaLaE zc=m*ZHNrb)t34W~V5(sn3d59I5uQn~8Ri)lvmzKX{i1^L-v-hD@w|M2FbWINn8XAdWnMh}dsnbn@fu2R9g_uU9)5K&f5vh(D zROc-Zt1OJvHpg)l|1$hHrZ(q#9fkUy)*sw}+m&~R^L8)tzpG}TRO)DJ6WW6=9z=fu DM>h@) diff --git a/tests/pdfmake/__snapshots__/page_references.spec.js.snap b/tests/pdfmake/__snapshots__/page_references.spec.js.snap index 56c51762fdd4fecf58dfa3d503544020a4420745..28ca450ffdf4f9010185c307851b04bbf5090485 100644 GIT binary patch delta 670 zcmaiwUn>Mr7{=S#S#lH?NJ*UJ-zGV8X6BstSnUN%36WAFGP^rdOYPPe`FFvMOE->N zxp6HyH&XH;l=2n0@D@S{P^VrRr#02tbd^ZjCX1N2=F_CwX_-yv)MQ2|^{Us_aU|2-H|n|jL{GjyKB(nh zUDK&0h;sUEEt2HmMMLx$rkg2w&Y$LNOmHQ?i3S&PQ!}L?jofmvT2uB{gMT-2qm&px z!iz*_B`w#XYlv1Y7tzRs?>a%n$C1-_U8rSDlG>7Xt%yg7SrgM083<{hUJPSMzc+qhRHg_q@dxmWj kmkBPi_yo2Rp1VA`C;RnEBi6}KDHW;4Edj4UPwMuuP& z|M+{EH}?s9GO`+5n41^_#Z)%`7jfd6>>|H*^B4Ihmd!OPj7+S?M#d(Vn;X?knKtjy zn8mp{#weY2@-g!Zb|wl23i(M{TsAgb`T<4xDW%D&MG6`LE^gkLC7N9N&PAz-CHWX4 znfZAxi6yBDlP_3^OxCsB$!I$Hxut=)ftj&_0SGAMDR6-q29^dUMw9idd{`_jO-v`( zSyaH3v-BGMTFbT3@xF8NMZ&SlP_8e vGnpDq=ChFj`b*nJO4iPftGFbwsHCDOHI2*C(9noWRn^tsjZ29u!I}#I;YxBa diff --git a/tests/pdfmake/__snapshots__/qrcode.spec.js.snap b/tests/pdfmake/__snapshots__/qrcode.spec.js.snap index c76e55eee7f4bcc1477276b7bbc057c1a7c0726e..e5e8bdc612e0a51edd3601fd582b934c1e89cd72 100644 GIT binary patch delta 854 zcmah{Pe@cj7-!ylp-j+0#mX!mnUw^+nc125-rBkZZi1+7NJ?d5&)v71Ywp6jMbg2n z2>b`tT#7E8q7uUR4%H!yAUsA!l-Hy~k$9*>hYro#GIAxF!#DGN-|zc<|3==@-rd$_ zpCiL1giCX94=f`M!58gX8I0g_27KD|T8GCK*HQV(+_Pp~2|258m8q&Ocv98A5s+D{ zLrvX_a#-9K*P-58D1&eI+y*%t`ECeK?IP*hriU6_Jb0&EZf_M3Z(TOPK8y`$>b$AL zLf2;6fkqxZfB5BlyR=f^i zRvocMMyN}aAjNZ{LCz<3I5eQ_#8z|O_X@eZS!7z(2Xfh%SMW_5uyo>R^iMvyKT|E6 zlS>tLsmGO8#+1kWapb@Ue+E^De^(HRV5{BFrVFRd5OvfvcENo5y;kK0487Pon(N9A zByvfWE-WF_EvM6!2Iqo-Ik*LZI5UD^W+-b^s?pbWx7Dia&Akgs2CJyczmhBYMR++p zgupuMVVEBMh-7X|!jG|W4K7_-LeO{hhM_SczfO?N4pEH<$IP0z_@KgenQWZw&_#&L ziOJogOqIR{LR=9l4I?gRv;;>vBWfdSVkxIowOVT9rF;r!|H8HXU7I7=x?tv#bvD7( zM%E?~lye!K+7`6lGgXtZT4QEU#7#IXk>YMD91jZNvcK`qY delta 676 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 VZIM-~6D*gPudl0>%jCvY@=vvaOM(CZ diff --git a/tests/pdfmake/__snapshots__/text_decorations.spec.js.snap b/tests/pdfmake/__snapshots__/text_decorations.spec.js.snap index 76b1889bb89e91a80ea054cc1bc3a552faf4e8a3..e39cdc5552e2a362e356adf7d79eabc2c1f2e7de 100644 GIT binary patch delta 715 zcmah`O=}ZD7-lwB$y~J2wAJ`AHddQc=6iNEjh4iMXsJXis07?5ySl~h!gfJX#2)nE zd47R-=|vExAReUPK@h|r;UDlKdUbcT+OCLm7w8y${;=^Qf|J>B(w+-a!~e zOUrQja(C`xkTjqd4zrrze>KQfqkEcSV&n9}`MJ^1Gu0z1W9-3ZC-&SVicwCqRR>Yn zbrTPfjHCzK?cZ`tzo>rSPiPV6`qLq#KaM>E%v>99fHCn)zSV-wOI~<8xr3;!^cpx} z-b_5T4)Bbj51Ut`#V{B|!&FS@UTtwA=gzEc+hmOJeD!nfon@XM-Ly>q_{NAnTrZo^ zQzy%s0{K6cZgtyMX EA6p)}hyVZp delta 529 zcmZWmyGjE=6lFF9$uu#(R#9+#n`&ov)-|g^1Y_`t5*0*HjAqpp-I2`*qD2}7t>*`9 zY{f8@ppEwagN=oq;G=bSB^dM;w>X!3&bjBF?tkvyoPa1XQ-&@}U{H~Fk++DHHTytx z#gNR#;y^CL=BO;j4}f^7<#IJK3gl(ol_Dk@(OL>Q(eIt{gXj};C#Z4dR&XR^}{ zPeN_Xv-6z&LmcL2^4v!KnIRpM6!seqYb6OsMxgB$0#1TOtm&)H@+ETBFcAZ-NKo|x zV0o`5L6cr(V#ap2`3@SOrYM1KiCWH-1`;r=LT!;Pxy~jl*of%jwslDjs4MO(i-eMJ zbE@q@k@5CBMLu73Hzvw>RKDXh5T;(1ulgeZR9qWaHB5{`|Hwt~=Mux9miRDc zRo(LCgZiCOf=%&k)R%nyzZ1((^bcm3^dDx?Dpv00ojuzNpRnK@`{z-p3K155EA_+})y?o)5^n0xMd=bSh9)swwqx);S9W4jNR?T2XU^48aO ziyPmsxSgX(AG4>r_n@~#UXN3O+V~hnnV#qv(mGqCR>$ev+Sj}Sub5moJSt7;UNB{FOF(Sk? z55iC_^!#0_WQa*I8_@gv65IqPg5waQCNS0{46U&Y|2WpO#*MEg6EZ`r$|QfBmeA`# z_g?bSQHiVJF3@ybDR~3`Up)kKS6opAmtf>8XKszqH$Ci9a_uymnqp{Q8;1V(M8q8S<^xU%4~;A(dI z3JQe*LEQKVZbaO>QmC(BQe4=?S>5^O+&SmouDCtzbu}H^oXU1?S@uCjK50GWrC#+B zV%fiNRQVZKQ}1J6nobcmBdq%1dPH4LRJAnWHYFijQs0vsK+^2J`p91C>SSI^r3og~ zQSBT{sk_CSakag6l$HS;lq_$sj}4yR)MkUH{3uZNK1Gn zH)uflOs3>4eblIYqi7o27DUm39t48|am<*UV>=y_@%WobacDoRHwmE$W;!^|kZmQr zkb{yQh@q&r^EVVmG%0lc3CJmn8)I&n31-_#W)1yU9?Z#D7$Y_@qh^v}$ByebvY7m| vW;g{#U5EgNJArjzRK2Ev(IUf3u?Wrr*AFiIMiX#?8OZ0$yA`ki_SV4GJ3F{TOeXUP{1h@q7dD+NF1UixWb*;R^^9U> zNEZ5}=B1ZpC>R@>Og_!1vU#PjBh%#PqJ1K!AQNJ_^h5GP^D>k3Q-F4vP3{y669*X$ z@-oP^P|YUB#%4g>>YHW7uLw_mr*(7k5$)-lBXnd~Cl?wTZ(eA4oQ2VRa;BM~m?h9^ z5Kzcd-~uxYj4jPgCvPzGWwtP~m}IV2Z)t(9!pH>VOH^G(CdTHNVrCfXObkqb9zoM< zY7X=RnwW(NFlvE-AK7UpCWezM%w_7$x%7kb^Gg&UfvxYEmzJ*piZozsc)BP=+gK!< z8zrZiSfr&{n5QHrCYze48kr@f8Je0Jq?%cpTiPiQRuT(}#Nv{~qLPZD)HE&&6H`+z QRaIAiH!dX>t^{i?0RDilegFUf delta 469 zcmdl~cshT>F-BG+0|Rs8&8HZbGi@$m+0QiDjQ!nab&h^^J4*!vh5V!}E*l#z{eYtU zl+xtXA_a{A7dP+B5=}0B=c3fal6(x2%=|o;#FA8n$shSecOFt+-zeEA-T`qmk nyvYt0oU*{cD=tYaDyb++P2;jKwlL>XRdw}u<5J>Eu;u~)bbf%X diff --git a/tests/pdfmake/security.spec.js b/tests/pdfmake/security.spec.js new file mode 100644 index 000000000..5fb9fbde4 --- /dev/null +++ b/tests/pdfmake/security.spec.js @@ -0,0 +1,56 @@ +var {runDocTest} = require('../helpers'); +var PDFDocument = require('../..'); +var CryptoJS = require('crypto-js'); + +describe('pdfmake', function () { + let generateRandomWordArray = null; + + beforeAll(function () { + const doc = new PDFDocument({ userPassword: 'user' }); + generateRandomWordArray = Object.getPrototypeOf(doc._security).constructor.generateRandomWordArray; + Object.getPrototypeOf(doc._security).constructor.generateRandomWordArray = function (bytes) { + return CryptoJS.lib.WordArray.create(null, bytes); + }; + }); + + afterAll(function () { + const doc = new PDFDocument({ userPassword: 'user' }); + Object.getPrototypeOf(doc._security).constructor.generateRandomWordArray = generateRandomWordArray; + }); + + test('encryption with RC-40 (PDF 1.3)', function () { + return runDocTest({ pdfVersion: '1.3', userPassword: 'user', ownerPassword: 'owner' }, function(doc) { + doc.text('test'); + }); + }); + + test('encryption with RC-128 (PDF 1.4)', function () { + return runDocTest({ pdfVersion: '1.4', userPassword: 'user', ownerPassword: 'owner' }, function(doc) { + doc.text('test'); + }); + }); + + test('encryption with RC-128 (PDF 1.5)', function () { + return runDocTest({ pdfVersion: '1.5', userPassword: 'user', ownerPassword: 'owner' }, function(doc) { + doc.text('test'); + }); + }); + + test('encryption with AES-128 (PDF 1.6)', function () { + return runDocTest({ pdfVersion: '1.6', userPassword: 'user', ownerPassword: 'owner' }, function(doc) { + doc.text('test'); + }); + }); + + test('encryption with AES-128 (PDF 1.7)', function () { + return runDocTest({ pdfVersion: '1.7', userPassword: 'user', ownerPassword: 'owner' }, function(doc) { + doc.text('test'); + }); + }); + + test('encryption with AES-256 (PDF 1.7 extension 3)', function () { + return runDocTest({ pdfVersion: '1.7ext3', userPassword: 'user', ownerPassword: 'owner' }, function(doc) { + doc.text('test'); + }); + }); +}); From 678148a286bf063f5eb2a0aa4498657117f9e931 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Sun, 16 Dec 2018 23:31:10 +0900 Subject: [PATCH 12/41] Downgrade dependency version to avoid fs operation --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db9d60c40..49a210474 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "fontkit": "^1.0.0", "linebreak": "^0.3.0", "png-js": ">=0.1.0", - "saslprep": "^1.0.0" + "saslprep": "1.0.1" }, "scripts": { "prepublishOnly": "npm run build", From 6398cca89914bc3c5ea3fb50707bede340e9b134 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Sun, 16 Dec 2018 23:45:14 +0900 Subject: [PATCH 13/41] Update readme and docs --- README.md | 32 +++++++++--------- docs/getting_started.coffee.md | 61 ++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 23a3c60dd..c57d43495 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ A JavaScript PDF generation library for Node and the browser. ## Description -PDFKit is a PDF document generation library for Node and the browser that makes creating complex, multi-page, printable documents easy. -It's written in CoffeeScript, but you can choose to use the API in plain 'ol JavaScript if you like. The API embraces -chainability, and includes both low level functions as well as abstractions for higher level functionality. The PDFKit API +PDFKit is a PDF document generation library for Node and the browser that makes creating complex, multi-page, printable documents easy. +It's written in CoffeeScript, but you can choose to use the API in plain 'ol JavaScript if you like. The API embraces +chainability, and includes both low level functions as well as abstractions for higher level functionality. The PDFKit API is designed to be simple, so generating complex documents is often as simple as a few function calls. Check out some of the [documentation and examples](http://pdfkit.org/docs/getting_started.html) to see for yourself! @@ -49,15 +49,17 @@ Installation uses the [npm](http://npmjs.org/) package manager. Just type the f * Underlines * etc. * Outlines - +* PDF security + * Encryption + * Access privileges (printing, copying, modifying, annotating, form filling, content accessibility, document assembly) + ## Coming soon! * Patterns fills -* PDF Security * Higher level APIs for creating tables and laying out content * More performance optimizations * Even more awesomeness, perhaps written by you! Please fork this repository and send me pull requests. - + ## Example ```coffeescript @@ -111,9 +113,9 @@ doc.addPage() # Finalize PDF file doc.end() ``` - -[The PDF output from this example](http://pdfkit.org/demo/out.pdf) (with a few additions) shows the power of PDFKit — producing -complex documents with a very small amount of code. For more, see the `demo` folder and the + +[The PDF output from this example](http://pdfkit.org/demo/out.pdf) (with a few additions) shows the power of PDFKit — producing +complex documents with a very small amount of code. For more, see the `demo` folder and the [PDFKit programming guide](http://pdfkit.org/docs/getting_started.html). ## Browser Usage @@ -122,13 +124,13 @@ There are two ways to use PDFKit in the browser. The first is to use [Browserif which is a Node module packager for the browser with the familiar `require` syntax. The second is to use a prebuilt version of PDFKit, which you can [download from Github](https://github.com/devongovett/pdfkit/releases). -In addition to PDFKit, you'll need somewhere to stream the output to. HTML5 has a +In addition to PDFKit, you'll need somewhere to stream the output to. HTML5 has a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) object which can be used to store binary data, and -get URLs to this data in order to display PDF output inside an iframe, or upload to a server, etc. In order to +get URLs to this data in order to display PDF output inside an iframe, or upload to a server, etc. In order to get a Blob from the output of PDFKit, you can use the [blob-stream](https://github.com/devongovett/blob-stream) module. -The following example uses Browserify to load `PDFKit` and `blob-stream`, but if you're not using Browserify, +The following example uses Browserify to load `PDFKit` and `blob-stream`, but if you're not using Browserify, you can load them in whatever way you'd like (e.g. script tags). ```coffeescript @@ -157,9 +159,9 @@ stream.on 'finish', -> You can see an interactive in-browser demo of PDFKit [here](http://pdfkit.org/demo/browser.html). -Note that in order to Browserify a project using PDFKit, you need to install the `brfs` module with npm, -which is used to load built-in font data into the package. It is listed as a `devDependency` in -PDFKit's `package.json`, so it isn't installed by default for Node users. +Note that in order to Browserify a project using PDFKit, you need to install the `brfs` module with npm, +which is used to load built-in font data into the package. It is listed as a `devDependency` in +PDFKit's `package.json`, so it isn't installed by default for Node users. If you forget to install it, Browserify will print an error message. ## Documentation diff --git a/docs/getting_started.coffee.md b/docs/getting_started.coffee.md index abe151530..fc3a00dcd 100644 --- a/docs/getting_started.coffee.md +++ b/docs/getting_started.coffee.md @@ -183,6 +183,67 @@ capitalized. * `CreationDate` - the date the document was created (added automatically by PDFKit) * `ModDate` - the date the document was last modified +## Encryption and Access Privileges + +PDF specification allow you to encrypt the PDF file and require a password when opening the file, +and/or set permissions of what users can do with the PDF file. PDFKit implements standard security +handler in PDF version 1.3 (40-bit RC4), version 1.4 (128-bit RC4), PDF version 1.7 (128-bit AES), +and PDF version 1.7 ExtensionLevel 3 (256-bit AES). + +To enable encryption, provide a user password when creating the `PDFDocument` in `options` object. +The PDF file will be encrypted when a user password is provided, and users will be prompted to enter +the password to decrypt the file when opening it. + + * `userPassword` - the user password (string value) + +To set access privileges for the PDF file, you need to provide an owner password and permission +settings in the `option` object when creating `PDFDocument`. By default, all operations are disallowed. +You need to explicitly allow certain operations. + + * `ownerPassword` - the owner password (string value) + * `allowPrinting` - whether printing is allowed. Specify `"lowResolution"` to allow degraded printing, or `"highResolution"` to allow printing with high resolution + * `allowModifying` - whether modifying the file is allowed. Specify `true` to allow modifying document content + * `allowCopying` - whether copying text or graphics is allowed. Specify `true` to allow copying + * `allowAnnotating` - whether annotating, form filling is allowed. Specify `true` to allow annotating and form filling + * `allowFillingForms` - whether form filling and signing is allowed. Specify `true` to allow filling in form fields and signing + * `allowContentAccessibility` - whether copying text for accessibility is allowed. Specify `true` to allow copying for accessibility + * `allowDocumentAssembly` - whether assembling document is allowed. Specify `true` to allow document assembly + +You can specify either user password, owner password or both passwords. +Behavior differs according to passwords you provides: + + * When only user password is provided, + users with user password are able to decrypt the file and have full access to the document. + * When only owner password is provided, + users are able to decrypt and open the document without providing any password, + but the access is limited to those operations explicitly permitted. + Users with owner password have full access to the document. + * When both passwords are provided, + users with user password are able to decrypt the file + but only have limited access to the file according to permission settings. + Users with owner password have full access to the document. + +Note that PDF file itself cannot enforce access privileges. +When file is decrypted, PDF viewer applications have full access to the file content, +and it is up to them to respect permission settings. + +To choose encryption method, you need to specify PDF version. +PDFKit will choose best encryption method available in the PDF version you specified. + + * `pdfVersion` - a string value specifying PDF file version + +Available options includes: + + * `1.3` - PDF version 1.3 (default), 40-bit RC4 is used + * `1.4` - PDF version 1.4, 128-bit RC4 is used + * `1.5` - PDF version 1.5, 128-bit RC4 is used + * `1.6` - PDF version 1.6, 128-bit AES is used + * `1.7` - PDF version 1.7, 128-bit AES is used + * `1.7ext3` - PDF version 1.7 ExtensionLevel 3, 256-bit AES is used + +When using PDF version 1.7 ExtensionLevel 3, password is truncated to 127 bytes of its UTF-8 representation. +In older versions, password is truncated to 32 bytes, and only Latin-1 characters are allowed. + ### Adding content Once you've created a `PDFDocument` instance, you can add content to the From 2651a74012e01b97f1a56fc183d320c2f9a36a70 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Mon, 17 Dec 2018 21:15:45 +0900 Subject: [PATCH 14/41] Organize permissions in option to an object --- docs/getting_started.coffee.md | 20 ++++++++++++-------- lib/security.js | 34 +++++++++++++++++----------------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/docs/getting_started.coffee.md b/docs/getting_started.coffee.md index fc3a00dcd..d75814bd1 100644 --- a/docs/getting_started.coffee.md +++ b/docs/getting_started.coffee.md @@ -201,13 +201,17 @@ settings in the `option` object when creating `PDFDocument`. By default, all ope You need to explicitly allow certain operations. * `ownerPassword` - the owner password (string value) - * `allowPrinting` - whether printing is allowed. Specify `"lowResolution"` to allow degraded printing, or `"highResolution"` to allow printing with high resolution - * `allowModifying` - whether modifying the file is allowed. Specify `true` to allow modifying document content - * `allowCopying` - whether copying text or graphics is allowed. Specify `true` to allow copying - * `allowAnnotating` - whether annotating, form filling is allowed. Specify `true` to allow annotating and form filling - * `allowFillingForms` - whether form filling and signing is allowed. Specify `true` to allow filling in form fields and signing - * `allowContentAccessibility` - whether copying text for accessibility is allowed. Specify `true` to allow copying for accessibility - * `allowDocumentAssembly` - whether assembling document is allowed. Specify `true` to allow document assembly + * `permissions` - the object specifying PDF file permissions + +Following settings are allowed in `permissions` object: + + * `printing` - whether printing is allowed. Specify `"lowResolution"` to allow degraded printing, or `"highResolution"` to allow printing with high resolution + * `modifying` - whether modifying the file is allowed. Specify `true` to allow modifying document content + * `copying` - whether copying text or graphics is allowed. Specify `true` to allow copying + * `annotating` - whether annotating, form filling is allowed. Specify `true` to allow annotating and form filling + * `fillingForms` - whether form filling and signing is allowed. Specify `true` to allow filling in form fields and signing + * `contentAccessibility` - whether copying text for accessibility is allowed. Specify `true` to allow copying for accessibility + * `documentAssembly` - whether assembling document is allowed. Specify `true` to allow document assembly You can specify either user password, owner password or both passwords. Behavior differs according to passwords you provides: @@ -225,7 +229,7 @@ Behavior differs according to passwords you provides: Note that PDF file itself cannot enforce access privileges. When file is decrypted, PDF viewer applications have full access to the file content, -and it is up to them to respect permission settings. +and it is up to viewer applications to respect permission settings. To choose encryption method, you need to specify PDF version. PDFKit will choose best encryption method available in the PDF version you specified. diff --git a/lib/security.js b/lib/security.js index 629ae54e4..75f33d3b5 100644 --- a/lib/security.js +++ b/lib/security.js @@ -82,17 +82,17 @@ class PDFSecurity { case 1: r = 2; this.keyBits = 40; - permissions = getPermissionsR2(options); + permissions = getPermissionsR2(options.permissions); break; case 2: r = 3; this.keyBits = 128; - permissions = getPermissionsR3(options); + permissions = getPermissionsR3(options.permissions); break; case 4: r = 4; this.keyBits = 128; - permissions = getPermissionsR3(options); + permissions = getPermissionsR3(options.permissions); break; } @@ -208,47 +208,47 @@ class PDFSecurity { } } -function getPermissionsR2(options) { +function getPermissionsR2(permissionObject = {}) { let permissions = 0xffffffc0 >> 0; - if (options.allowPrinting) { + if (permissionObject.printing) { permissions |= 0b00000000010; } - if (options.allowModifying) { + if (permissionObject.modifying) { permissions |= 0b000000001000; } - if (options.allowCopying) { + if (permissionObject.copying) { permissions |= 0b000000010000; } - if (options.allowAnnotating) { + if (permissionObject.annotating) { permissions |= 0b000000100000; } return permissions; } -function getPermissionsR3(options) { +function getPermissionsR3(permissionObject = {}) { let permissions = 0xfffff0c0 >> 0; - if (options.allowPrinting === 'lowResolution') { + if (permissionObject.printing === 'lowResolution') { permissions |= 0b000000000100; } - if (options.allowPrinting === 'highResolution') { + if (permissionObject.printing === 'highResolution') { permissions |= 0b100000000100; } - if (options.allowModifying) { + if (permissionObject.modifying) { permissions |= 0b000000001000; } - if (options.allowCopying) { + if (permissionObject.copying) { permissions |= 0b000000010000; } - if (options.allowAnnotating) { + if (permissionObject.annotating) { permissions |= 0b000000100000; } - if (options.allowFillingForms) { + if (permissionObject.fillingForms) { permissions |= 0b000100000000; } - if (options.allowContentAccessibility) { + if (permissionObject.contentAccessibility) { permissions |= 0b001000000000; } - if (options.allowDocumentAssembly) { + if (permissionObject.documentAssembly) { permissions |= 0b010000000000; } return permissions; From c400dfa9e6cb93d84e98fff5175b14f13afd3bd4 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Tue, 18 Dec 2018 20:56:28 +0900 Subject: [PATCH 15/41] Add unit tests for trailer --- tests/unit/trailer.spec.js | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 tests/unit/trailer.spec.js diff --git a/tests/unit/trailer.spec.js b/tests/unit/trailer.spec.js new file mode 100644 index 000000000..d485ebe7c --- /dev/null +++ b/tests/unit/trailer.spec.js @@ -0,0 +1,48 @@ +const PDFDocument = require('../../'); + +describe('Document trailer', () => { + let document; + + beforeEach(() => { + document = new PDFDocument({info: { CreationDate: new Date(Date.UTC(2018,1,1)) } }); + }); + + test('', (done) => { + const dataLog = []; + const expected = [ + [ + '7 0 obj', + '<<\n/Producer 8 0 R\n/Creator 9 0 R\n/CreationDate 10 0 R\n>>' + ], + [ + '8 0 obj', + '(PDFKit)' + ], + [ + '9 0 obj', + '(PDFKit)' + ], + [ + '10 0 obj', + '(D:20180201000000Z)' + ], + [ + 'trailer', + `<<\n/Size 11\n/Root 2 0 R\n/Info 7 0 R\n/ID [<8c72cf48ff87daac57e26bf1550e6979> <8c72cf48ff87daac57e26bf1550e6979>]\n>>` + ] + ]; + document._write = function(data) { + dataLog.push(data) + } + document.end(); + setTimeout(() => { + for (let i = 0; i < expected.length; ++i) { + let idx = dataLog.indexOf(expected[i][0]); + for (let j = 1; j < expected[i].length; ++j) { + expect(dataLog[idx + j]).toEqual(expected[i][j]); + } + } + done(); + }, 1); + }); +}); \ No newline at end of file From 5274136477f0f534df93c5c69cb84a2425742835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Mon, 17 Dec 2018 20:05:10 -0300 Subject: [PATCH 16/41] Complete coffee -> JS conversion of docs --- docs/annotations.coffee.md | 32 +++++----- docs/generate.js | 17 +++--- docs/generate_website.js | 92 ++++++++++++---------------- docs/getting_started.coffee.md | 107 +++++++++++++++++---------------- docs/images.coffee.md | 30 ++++----- docs/outline.coffee.md | 20 +++--- docs/paper_sizes.coffee.md | 10 ++- docs/text.coffee.md | 91 +++++++++++++++------------- docs/vector.coffee.md | 94 +++++++++++++++-------------- 9 files changed, 245 insertions(+), 248 deletions(-) diff --git a/docs/annotations.coffee.md b/docs/annotations.coffee.md index 28c606be5..a889403ac 100644 --- a/docs/annotations.coffee.md +++ b/docs/annotations.coffee.md @@ -37,29 +37,29 @@ covered by another annotation and the user won't be able to click it. Here is an example that uses a few of the annotation types. - # Add the link text + // Add the link text doc.fontSize(25) .fillColor('blue') - .text('This is a link!', 20, 0) + .text('This is a link!', 20, 0); - # Measure the text - width = doc.widthOfString('This is a link!') - height = doc.currentLineHeight() + // Measure the text + const width = doc.widthOfString('This is a link!'); + const height = doc.currentLineHeight(); - # Add the underline and link annotations - doc.underline(20, 0, width, height, color: 'blue') - .link(20, 0, width, height, 'http://google.com/') + // Add the underline and link annotations + doc.underline(20, 0, width, height, {color: 'blue'}) + .link(20, 0, width, height, 'http://google.com/'); - # Create the highlighted text + // Create the highlighted text doc.moveDown() .fillColor('black') .highlight(20, doc.y, doc.widthOfString('This text is highlighted!'), height) - .text('This text is highlighted!') + .text('This text is highlighted!'); - # Create the crossed out text + // Create the crossed out text doc.moveDown() .strike(20, doc.y, doc.widthOfString('STRIKE!'), height) - .text('STRIKE!') + .text('STRIKE!'); The output of this example looks like this. @@ -70,11 +70,13 @@ that is the fault of the PDF spec itself. Calculating a rectangle manually isn't fun, but PDFKit makes it easier for a few common annotations applied to text, including links, underlines, and strikes. Here's an example showing two of them: - doc.fontSize 20 - .fillColor 'red' - .text 'Another link!', 20, 0, + doc.fontSize(20) + .fillColor('red') + .text('Another link!', 20, 0, { link: 'http://apple.com/', underline: true + } + ); The output is as you'd expect: diff --git a/docs/generate.js b/docs/generate.js index bd0c40afd..c4161b3eb 100644 --- a/docs/generate.js +++ b/docs/generate.js @@ -9,16 +9,15 @@ const fs = require('fs'); const vm = require('vm'); const md = require('markdown').markdown; -const coffee = require('coffee-script'); const CodeMirror = require('codemirror/addon/runmode/runmode.node'); const PDFDocument = require('../'); process.chdir(__dirname); -// setup code mirror coffeescript mode -const filename = require.resolve('codemirror/mode/coffeescript/coffeescript'); -const coffeeMode = fs.readFileSync(filename, 'utf8'); -vm.runInNewContext(coffeeMode, {CodeMirror}); +// setup code mirror javascript mode +const filename = require.resolve('codemirror/mode/javascript/javascript'); +const jsMode = fs.readFileSync(filename, 'utf8'); +vm.runInNewContext(jsMode, {CodeMirror}); // style definitions for markdown const styles = { @@ -142,7 +141,7 @@ class Node { // use code mirror to syntax highlight the code block var code = this.content[0].text; this.content = []; - CodeMirror.runMode(code, 'coffeescript', (text, style) => { + CodeMirror.runMode(code, 'javascript', (text, style) => { const color = colors[style] || colors.default; const opts = { color, @@ -158,11 +157,11 @@ class Node { case 'img': // images are used to generate inline example output - // compiles the coffeescript to JS so it can be run + // stores the JS so it can be run // in the render method this.type = 'example'; code = codeBlocks[this.attrs.alt]; - if (code) { this.code = coffee.compile(code); } + if (code) { this.code = code; } this.height = +this.attrs.title || 0; break; } @@ -266,7 +265,7 @@ class Node { } } -// reads and renders a markdown/literate coffeescript file to the document +// reads and renders a markdown/literate javascript file to the document const render = function(doc, filename) { codeBlocks = []; const tree = md.parse(fs.readFileSync(filename, 'utf8')); diff --git a/docs/generate_website.js b/docs/generate_website.js index b7881453b..1a0b2fcbd 100644 --- a/docs/generate_website.js +++ b/docs/generate_website.js @@ -1,15 +1,7 @@ -/* - * decaffeinate suggestions: - * DS101: Remove unnecessary use of Array.from - * DS102: Remove unnecessary code created because of implicit returns - * DS205: Consider reworking code to avoid use of IIFEs - * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md - */ const jade = require('jade'); const { markdown } = require('markdown'); const fs = require('fs'); const vm = require('vm'); -const coffee = require('coffee-script'); const {exec} = require('child_process'); const PDFDocument = require('../'); @@ -53,60 +45,50 @@ let imageIndex = 0; const generateImages = function(tree) { // find code blocks const codeBlocks = []; - for (var node of Array.from(tree)) { + for (var node of tree) { if (node[0] === 'code_block') { codeBlocks.push(node[1]); } } - return (() => { - const result = []; - for (node of Array.from(tree)) { - if ((node[0] === 'para') && Array.isArray(node[1]) && (node[1][0] === 'img')) { - // compile the code - const attrs = node[1][1]; - let code = codeBlocks[attrs.alt]; - if (code) { code = coffee.compile(code); } - delete attrs.height; // used for pdf generation - - // create a PDF and run the example - const doc = new PDFDocument; - const f = `img/${imageIndex++}`; - var file = fs.createWriteStream(`${f}.pdf`); - doc.pipe(file); - - doc.translate(doc.x, doc.y); - doc.scale(0.8); - doc.x = (doc.y = 0); - - vm.runInNewContext(code, { - doc, - lorem - } - ); - - delete attrs.title; - delete attrs.alt; - attrs.href = `${f}.png`; + for (node of tree) { + if ((node[0] === 'para') && Array.isArray(node[1]) && (node[1][0] === 'img')) { + // compile the code + const attrs = node[1][1]; + let code = codeBlocks[attrs.alt]; + delete attrs.height; // used for pdf generation + + // create a PDF and run the example + const doc = new PDFDocument; + const f = `img/${imageIndex++}`; + var file = fs.createWriteStream(`${f}.pdf`); + doc.pipe(file); + + doc.translate(doc.x, doc.y); + doc.scale(0.8); + doc.x = (doc.y = 0); - // write the PDF, convert to PNG using the mac `sips` - // command line tool, and trim with graphicsmagick - (f => - file.on('finish', () => - exec(`sips -s format png ${f}.pdf --out ${f}.png`, function() { - fs.unlink(`${f}.pdf`); - return exec(`gm convert ${f}.png -trim ${f}.png`); - }) - ) - )(f); - - result.push(doc.end()); - } else { - result.push(undefined); + vm.runInNewContext(code, { + doc, + lorem } + ); + + delete attrs.title; + delete attrs.alt; + attrs.href = `${f}.png`; + + // write the PDF, convert to PNG using the mac `sips` + // command line tool, and trim with graphicsmagick + + file.on('finish', () => + exec(`sips -s format png ${f}.pdf --out ${f}.png`, function() { + fs.unlink(`${f}.pdf`); + exec(`gm convert ${f}.png -trim ${f}.png`); + }) + ) } - return result; - })(); + } }; const pages = []; @@ -114,7 +96,7 @@ for (let file of Array.from(files)) { let content = fs.readFileSync(file, 'utf8'); // turn github highlighted code blocks into normal markdown code blocks - content = content.replace(/^```coffeescript\n((:?.|\n)*?)\n```/mg, (m, $1) => ` ${$1.split('\n').join('\n ')}`); + content = content.replace(/^```javascript\n((:?.|\n)*?)\n```/mg, (m, $1) => ` ${$1.split('\n').join('\n ')}`); const tree = markdown.parse(content); const headers = extractHeaders(tree); diff --git a/docs/getting_started.coffee.md b/docs/getting_started.coffee.md index d75814bd1..8eac47f30 100644 --- a/docs/getting_started.coffee.md +++ b/docs/getting_started.coffee.md @@ -13,21 +13,21 @@ Creating a PDFKit document is quite simple. Just require the `pdfkit` module in your CoffeeScript or JavaScript source file and create an instance of the `PDFDocument` class. - PDFDocument = require 'pdfkit' - doc = new PDFDocument + const PDFDocument = require('pdfkit'); + const doc = new PDFDocument; `PDFDocument` instances are readable Node streams. They don't get saved anywhere automatically, but you can call the `pipe` method to send the output of the PDF document to another writable Node stream as it is being written. When you're done with your document, call the `end` method to finalize it. Here is an example showing how to pipe to a file or an HTTP response. - doc.pipe fs.createWriteStream('/path/to/file.pdf') # write to PDF - doc.pipe res # HTTP response + doc.pipe(fs.createWriteStream('/path/to/file.pdf')); // write to PDF + doc.pipe(res); // HTTP response - # add stuff to PDF here using methods described below... + // add stuff to PDF here using methods described below... - # finalize the PDF and end the stream - doc.end() + // finalize the PDF and end the stream + doc.end(); The `write` and `output` methods found in PDFKit before version 0.5 are now deprecated. @@ -48,27 +48,28 @@ To get a Blob from a `PDFDocument`, you should pipe it to a [blob-stream](https: which is a module that generates a Blob from any Node-style stream. The following example uses Browserify to load `PDFKit` and `blob-stream`, but if you're not using Browserify, you can load them in whatever way you'd like (e.g. script tags). - # require dependencies - PDFDocument = require 'pdfkit' - blobStream = require 'blob-stream' + // require dependencies + const PDFDocument = require('pdfkit'); + const blobStream = require('blob-stream'); - # create a document the same way as above - doc = new PDFDocument + // create a document the same way as above + const doc = new PDFDocument; - # pipe the document to a blob - stream = doc.pipe(blobStream()) + // pipe the document to a blob + const stream = doc.pipe(blobStream()); - # add your content to the document here, as usual + // add your content to the document here, as usual - # get a blob when you're done - doc.end() - stream.on 'finish', -> - # get a blob you can do whatever you like with - blob = stream.toBlob('application/pdf') + // get a blob when you're done + doc.end(); + stream.on('finish', function() { + // get a blob you can do whatever you like with + const blob = stream.toBlob('application/pdf'); - # or get a blob URL for display in the browser - url = stream.toBlobURL('application/pdf') - iframe.src = url + // or get a blob URL for display in the browser + const url = stream.toBlobURL('application/pdf'); + iframe.src = url; + }); You can see an interactive in-browser demo of PDFKit [here](http://pdfkit.org/demo/browser.html). @@ -87,8 +88,7 @@ quite simple! To add some content every time a page is created, either by calling `addPage()` or automatically, you can use the `pageAdded` event. - doc.on 'pageAdded', -> - doc.text "Page Title" + doc.on('pageAdded', () => doc.text("Page Title")); You can also set some options for the page, such as its size and orientation. @@ -110,18 +110,20 @@ on all sides. For example: - # Add a 50 point margin on all sides - doc.addPage - margin: 50 + // Add a 50 point margin on all sides + doc.addPage({ + margin: 50}); - # Add different margins on each side - doc.addPage - margins: - top: 50 - bottom: 50 - left: 72 + // Add different margins on each side + doc.addPage({ + margins: { + top: 50, + bottom: 50, + left: 72, right: 72 + } + }); ## Switching to previous pages @@ -142,28 +144,31 @@ never need to call it. Finally, there is a `bufferedPageRange` method, which re of pages that are currently buffered. Here is a small example that shows how you might add page numbers to a document. - # create a document, and enable bufferPages mode - doc = new PDFDocument - bufferPages: true + // create a document, and enable bufferPages mode + let i; + let end; + const doc = new PDFDocument({ + bufferPages: true}); - # add some content... - doc.addPage() - # ... - doc.addPage() + // add some content... + doc.addPage(); + // ... + doc.addPage(); - # see the range of buffered pages - range = doc.bufferedPageRange() # => { start: 0, count: 2 } + // see the range of buffered pages + const range = doc.bufferedPageRange(); // => { start: 0, count: 2 } - for i in [range.start...range.start + range.count] - doc.switchToPage(i) - doc.text "Page #{i + 1} of #{range.count}" + for (i = range.start, end = range.start + range.count, range.start <= end; i < end; i++;) { + doc.switchToPage(i); + doc.text(`Page ${i + 1} of ${range.count}`); + } - # manually flush pages that have been buffered - doc.flushPages() + // manually flush pages that have been buffered + doc.flushPages(); - # or, if you are at the end of the document anyway, - # doc.end() will call it for you automatically. - doc.end() + // or, if you are at the end of the document anyway, + // doc.end() will call it for you automatically. + doc.end(); ## Setting document metadata diff --git a/docs/images.coffee.md b/docs/images.coffee.md index ebd05c534..e6153fc67 100644 --- a/docs/images.coffee.md +++ b/docs/images.coffee.md @@ -21,29 +21,29 @@ When a `fit` or `cover` array is provided, PDFKit accepts these additional optio Here is an example showing some of these options. - # Scale proprotionally to the specified width - doc.image('images/test.jpeg', 0, 15, width: 300) - .text('Proportional to width', 0, 0) + // Scale proprotionally to the specified width + doc.image('images/test.jpeg', 0, 15, {width: 300}) + .text('Proportional to width', 0, 0); - # Fit the image within the dimensions - doc.image('images/test.jpeg', 320, 15, fit: [100, 100]) + // Fit the image within the dimensions + doc.image('images/test.jpeg', 320, 15, {fit: [100, 100]}) .rect(320, 15, 100, 100) .stroke() - .text('Fit', 320, 0) + .text('Fit', 320, 0); - # Stretch the image - doc.image('images/test.jpeg', 320, 145, width: 200, height: 100) - .text('Stretch', 320, 130) + // Stretch the image + doc.image('images/test.jpeg', 320, 145, {width: 200, height: 100}) + .text('Stretch', 320, 130); - # Scale the image - doc.image('images/test.jpeg', 320, 280, scale: 0.25) - .text('Scale', 320, 265) + // Scale the image + doc.image('images/test.jpeg', 320, 280, {scale: 0.25}) + .text('Scale', 320, 265); - # Fit the image in the dimensions, and center it both horizontally and vertically - doc.image('images/test.jpeg', 430, 15, fit: [100, 100], align: 'center', valign: 'center') + // Fit the image in the dimensions, and center it both horizontally and vertically + doc.image('images/test.jpeg', 430, 15, {fit: [100, 100], align: 'center', valign: 'center'}) .rect(430, 15, 100, 100) .stroke() - .text('Centered', 430, 0) + .text('Centered', 430, 0); * * * diff --git a/docs/outline.coffee.md b/docs/outline.coffee.md index f1e6b8f15..7ee46da2e 100644 --- a/docs/outline.coffee.md +++ b/docs/outline.coffee.md @@ -6,14 +6,14 @@ Outlines are the heirachical bookmarks that display in some PDF readers. Current Here is an example of adding a bookmark with a single child bookmark. - # Get a reference to the Outline root - outline = doc.outline + // Get a reference to the Outline root + const { outline } = doc; - # Add a top-level bookmark - top = outline.addItem('Top Level') + // Add a top-level bookmark + const top = outline.addItem('Top Level'); - # Add a sub-section - top.addItem('Sub-section') + // Add a sub-section + top.addItem('Sub-section'); ## Options @@ -21,8 +21,8 @@ The `options` parameter currently only has one property: `expanded`. If this val In this example the 'Top Level' section will be expanded to show 'Sub-section'. - # Add a top-level bookmark - top = outline.addItem('Top Level', { expanded: true }) + // Add a top-level bookmark + const top = outline.addItem('Top Level', { expanded: true }); - # Add a sub-section - top.addItem('Sub-section') \ No newline at end of file + // Add a sub-section + top.addItem('Sub-section'); \ No newline at end of file diff --git a/docs/paper_sizes.coffee.md b/docs/paper_sizes.coffee.md index 1ce6341b2..8b2f40ad9 100644 --- a/docs/paper_sizes.coffee.md +++ b/docs/paper_sizes.coffee.md @@ -81,10 +81,8 @@ PDFKit supports also the following paper sizes. The dimensions in brackets are i In order to use the predefined sizes, the name of the size (as named in the lists above) should be passed to either the `PDFDocument` constructor or the `addPage()` function in the `size` property of the `options` object, as shown in the example below, using `A7` as the preferred size. - # Passing size to the constructor - doc = new PDFDocument - size: 'A7' + // Passing size to the constructor + const doc = new PDFDocument({size: 'A7'}); - # Passing size to the addPage function - doc.addPage - size: 'A7' + // Passing size to the addPage function + doc.addPage({size: 'A7'}); diff --git a/docs/text.coffee.md b/docs/text.coffee.md index 28998f9bb..406c05e08 100644 --- a/docs/text.coffee.md +++ b/docs/text.coffee.md @@ -6,7 +6,7 @@ PDFKit makes adding text to documents quite simple, and includes many options to customize the display of the output. Adding text to a document is as simple as calling the `text` method. - doc.text 'Hello world!' + doc.text('Hello world!') Internally, PDFKit keeps track of the current X and Y position of text as it is added to the document. This way, subsequent calls to the `text` method will @@ -14,7 +14,7 @@ automatically appear as new lines below the previous line. However, you can modify the position of text by passing X and Y coordinates to the `text` method after the text itself. - doc.text 'Hello world!', 100, 100 + doc.text('Hello world!', 100, 100) If you want to move down or up by lines, just call the `moveDown` or `moveUp` method with the number of lines you'd like to move (1 by default). @@ -39,30 +39,38 @@ four options: `left` (the default), `center`, `right`, and `justify`. They work just as they do in your favorite word processor, but here is an example showing their use in a text box. - lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus nec hendrerit felis. Morbi aliquam facilisis risus eu lacinia. Sed eu leo in turpis fringilla hendrerit. Ut nec accumsan nisl.' + const lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus nec hendrerit felis. Morbi aliquam facilisis risus eu lacinia. Sed eu leo in turpis fringilla hendrerit. Ut nec accumsan nisl.'; - doc.fontSize 8 - doc.text 'This text is left aligned. ' + lorem, - width: 410 + doc.fontSize(8); + doc.text(`This text is left aligned. ${lorem}`, { + width: 410, align: 'left' + } + ); - doc.moveDown() - doc.text 'This text is centered. ' + lorem, - width: 410 + doc.moveDown(); + doc.text(`This text is centered. ${lorem}`, { + width: 410, align: 'center' + } + ); - doc.moveDown() - doc.text 'This text is right aligned. ' + lorem, - width: 410 + doc.moveDown(); + doc.text(`This text is right aligned. ${lorem}`, { + width: 410, align: 'right' + } + ); - doc.moveDown() - doc.text 'This text is justified. ' + lorem, - width: 410 + doc.moveDown(); + doc.text(`This text is justified. ${lorem}`, { + width: 410, align: 'justify' + } + ); - # draw bounding rectangle - doc.rect(doc.x, 0, 410, doc.y).stroke() + // draw bounding rectangle + doc.rect(doc.x, 0, 410, doc.y).stroke(); The output of this example, looks like this: @@ -103,14 +111,15 @@ Additionally, the fill and stroke color and opacity methods described in the Here is an example combining some of the options above, wrapping a piece of text into three columns, in a specified width and height. - lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus nec hendrerit felis. Morbi aliquam facilisis risus eu lacinia. Sed eu leo in turpis fringilla hendrerit. Ut nec accumsan nisl. Suspendisse rhoncus nisl posuere tortor tempus et dapibus elit porta. Cras leo neque, elementum a rhoncus ut, vestibulum non nibh. Phasellus pretium justo turpis. Etiam vulputate, odio vitae tincidunt ultricies, eros odio dapibus nisi, ut tincidunt lacus arcu eu elit. Aenean velit erat, vehicula eget lacinia ut, dignissim non tellus. Aliquam nec lacus mi, sed vestibulum nunc. Suspendisse potenti. Curabitur vitae sem turpis. Vestibulum sed neque eget dolor dapibus porttitor at sit amet sem. Fusce a turpis lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;' + const lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus nec hendrerit felis. Morbi aliquam facilisis risus eu lacinia. Sed eu leo in turpis fringilla hendrerit. Ut nec accumsan nisl. Suspendisse rhoncus nisl posuere tortor tempus et dapibus elit porta. Cras leo neque, elementum a rhoncus ut, vestibulum non nibh. Phasellus pretium justo turpis. Etiam vulputate, odio vitae tincidunt ultricies, eros odio dapibus nisi, ut tincidunt lacus arcu eu elit. Aenean velit erat, vehicula eget lacinia ut, dignissim non tellus. Aliquam nec lacus mi, sed vestibulum nunc. Suspendisse potenti. Curabitur vitae sem turpis. Vestibulum sed neque eget dolor dapibus porttitor at sit amet sem. Fusce a turpis lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;'; - doc.text lorem, - columns: 3 - columnGap: 15 - height: 100 - width: 465 + doc.text(lorem, { + columns: 3, + columnGap: 15, + height: 100, + width: 465, align: 'justify' + }); The output looks like this: @@ -143,12 +152,12 @@ The options given to the first `text` call are also retained for subsequent call `continued` one, but of course you can override them. In the following example, the `width` option from the first `text` call is retained by the second call. - doc.fillColor 'green' - .text lorem.slice(0, 500), - width: 465 - continued: yes - .fillColor 'red' - .text lorem.slice(500) + doc.fillColor('green') + .text(lorem.slice(0, 500), { + width: 465, + continued: true + }).fillColor('red') + .text(lorem.slice(500)); Here is the output: @@ -187,22 +196,22 @@ to be extracted from the collection. Here is an example showing how to set the font in each case. - # Set the font size - doc.fontSize(18) + // Set the font size + doc.fontSize(18); - # Using a standard PDF font + // Using a standard PDF font doc.font('Times-Roman') .text('Hello from Times Roman!') - .moveDown(0.5) + .moveDown(0.5); - # Using a TrueType font (.ttf) + // Using a TrueType font (.ttf) doc.font('fonts/GoodDog.ttf') .text('This is Good Dog!') - .moveDown(0.5) + .moveDown(0.5); - # Using a collection font (.ttc or .dfont) + // Using a collection font (.ttc or .dfont) doc.font('fonts/Chalkboard.ttc', 'Chalkboard-Bold') - .text('This is Chalkboard, not Comic Sans.') + .text('This is Chalkboard, not Comic Sans.'); The output of this example looks like this: @@ -212,12 +221,12 @@ Another nice feature of the PDFKit font support, is the ability to register a font file under a name for use later rather than entering the path to the font every time you want to use it. - # Register a font - doc.registerFont('Heading Font', 'fonts/Chalkboard.ttc', 'Chalkboard-Bold') + // Register a font + doc.registerFont('Heading Font', 'fonts/Chalkboard.ttc', 'Chalkboard-Bold'); - # Use the font later + // Use the font later doc.font('Heading Font') - .text('This is a heading.') + .text('This is a heading.'); That's about all there is too it for text in PDFKit. Let's move on now to images. diff --git a/docs/vector.coffee.md b/docs/vector.coffee.md index be0c21627..5c6305ebf 100644 --- a/docs/vector.coffee.md +++ b/docs/vector.coffee.md @@ -18,12 +18,12 @@ and `quadraticCurveTo` all draw from the current point (which you can set with curves use two control points and quadratic curves use just one. Here is an example that illustrates defining a path. - doc.moveTo(0, 20) # set the current point - .lineTo(100, 160) # draw a line - .quadraticCurveTo(130, 200, 150, 120) # draw a quadratic curve - .bezierCurveTo(190, -40, 200, 200, 300, 150) # draw a bezier curve - .lineTo(400, 90) # draw another line - .stroke() # stroke the path + doc.moveTo(0, 20) // set the current point + .lineTo(100, 160) // draw a line + .quadraticCurveTo(130, 200, 150, 120) // draw a quadratic curve + .bezierCurveTo(190, -40, 200, 200, 300, 150) // draw a bezier curve + .lineTo(400, 90) // draw another line + .stroke(); // stroke the path The output of this example looks like this: @@ -67,8 +67,8 @@ pairs), and it will create the shape by moving to the first point, and then drawing lines to each consecutive point. Here is how you'd draw a triangle with the polygon helper. - doc.polygon [100, 0], [50, 100], [150, 100] - doc.stroke() + doc.polygon([100, 0], [50, 100], [150, 100]); + doc.stroke(); The output of this example looks like this: @@ -104,38 +104,38 @@ Some of these are pretty self explanatory, but let's go through a few of them. The `lineCap` and `lineJoin` properties accept constants describing what they should do. This is best illustrated by an example. - # these examples are easier to see with a large line width - doc.lineWidth(25) + // these examples are easier to see with a large line width + doc.lineWidth(25); - # line cap settings + // line cap settings doc.lineCap('butt') .moveTo(50, 20) .lineTo(100, 20) - .stroke() + .stroke(); doc.lineCap('round') .moveTo(150, 20) .lineTo(200, 20) - .stroke() + .stroke(); - # square line cap shown with a circle instead of a line so you can see it + // square line cap shown with a circle instead of a line so you can see it doc.lineCap('square') .moveTo(250, 20) .circle(275, 30, 15) - .stroke() + .stroke(); - # line join settings + // line join settings doc.lineJoin('miter') .rect(50, 100, 50, 50) - .stroke() + .stroke(); doc.lineJoin('round') .rect(150, 100, 50, 50) - .stroke() + .stroke(); doc.lineJoin('bevel') .rect(250, 100, 50, 50) - .stroke() + .stroke(); The output of this example looks like this. @@ -156,8 +156,8 @@ The following example draws a circle with a dashed line where the space between the dashes is double the length of each dash. doc.circle(100, 50, 50) - .dash(5, space: 10) - .stroke() + .dash(5, {space: 10}) + .stroke(); The output of this example looks like this: @@ -205,21 +205,21 @@ fillColor method), and an optional opacity. You can see both linear and radial gradients in the following example: - # Create a linear gradient - grad = doc.linearGradient(50, 0, 150, 100) + // Create a linear gradient + let grad = doc.linearGradient(50, 0, 150, 100); grad.stop(0, 'green') - .stop(1, 'red') + .stop(1, 'red'); - doc.rect 50, 0, 100, 100 - doc.fill grad + doc.rect(50, 0, 100, 100); + doc.fill(grad); - # Create a radial gradient - grad = doc.radialGradient(300, 50, 0, 300, 50, 50) + // Create a radial gradient + grad = doc.radialGradient(300, 50, 0, 300, 50, 50); grad.stop(0, 'orange', 0) - .stop(1, 'orange', 1) + .stop(1, 'orange', 1); - doc.circle 300, 50, 50 - doc.fill grad + doc.circle(300, 50, 50); + doc.fill(grad); Here is the output from the this example: @@ -232,19 +232,19 @@ example. The winding rule is an optional attribute to the `fill` and `fillAndStroke` methods, and there are two values to choose from: `non-zero` and `even-odd`. - # Initial setup + // Initial setup doc.fillColor('red') .translate(-100, -50) - .scale(0.8) + .scale(0.8); - # Draw the path with the non-zero winding rule + // Draw the path with the non-zero winding rule doc.path('M 250,75 L 323,301 131,161 369,161 177,301 z') - .fill('non-zero') + .fill('non-zero'); - # Draw the path with the even-odd winding rule + // Draw the path with the even-odd winding rule doc.translate(280, 0) .path('M 250,75 L 323,301 131,161 369,161 177,301 z') - .fill('even-odd') + .fill('even-odd'); You'll notice that I used the `scale` and `translate` transformations in this example. We'll cover those in a minute. The output of this example, with some @@ -291,9 +291,9 @@ We used the `scale` and `translate` transformations above, so here is an example of using the `rotate` transformation. We'll set the origin of the rotation to the center of the rectangle. - doc.rotate(20, origin: [150, 70]) + doc.rotate(20, {origin: [150, 70]}) .rect(100, 20, 100, 100) - .fill('gray') + .fill('gray'); This example produces the following effect. @@ -307,16 +307,18 @@ parts of the drawing. Everything falling inside the clipping path after it is created is visible, and everything outside the path is invisible. Here is an example that clips a checkerboard pattern to the shape of a circle. - # Create a clipping path + // Create a clipping path doc.circle(100, 100, 100) - .clip() + .clip(); - # Draw a checkerboard pattern - for row in [0...10] - for col in [0...10] - color = if (col % 2) - (row % 2) then '#eee' else '#4183C4' + // Draw a checkerboard pattern + for (let row = 0; row < 10; row++) { + for (let col = 0; col < 10; col++) { + const color = (col % 2) - (row % 2) ? '#eee' : '#4183C4'; doc.rect(row * 20, col * 20, 20, 20) - .fill(color) + .fill(color); + } + } The result of this example is the following: From aec971f2c872651c60bff19f73d4bef0553cdc52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Wed, 19 Dec 2018 20:34:40 -0300 Subject: [PATCH 17/41] Rename docs files, removing the coffee sufix --- docs/{annotations.coffee.md => annotations.md} | 0 docs/generate.js | 12 ++++++------ docs/generate_website.js | 14 +++++++------- ...etting_started.coffee.md => getting_started.md} | 0 docs/{images.coffee.md => images.md} | 0 docs/{outline.coffee.md => outline.md} | 0 docs/{text.coffee.md => text.md} | 0 docs/{vector.coffee.md => vector.md} | 0 8 files changed, 13 insertions(+), 13 deletions(-) rename docs/{annotations.coffee.md => annotations.md} (100%) rename docs/{getting_started.coffee.md => getting_started.md} (100%) rename docs/{images.coffee.md => images.md} (100%) rename docs/{outline.coffee.md => outline.md} (100%) rename docs/{text.coffee.md => text.md} (100%) rename docs/{vector.coffee.md => vector.md} (100%) diff --git a/docs/annotations.coffee.md b/docs/annotations.md similarity index 100% rename from docs/annotations.coffee.md rename to docs/annotations.md diff --git a/docs/generate.js b/docs/generate.js index c4161b3eb..04041e133 100644 --- a/docs/generate.js +++ b/docs/generate.js @@ -316,12 +316,12 @@ const renderTitlePage = function(doc) { const doc = new PDFDocument; doc.pipe(fs.createWriteStream('guide.pdf')); renderTitlePage(doc); - render(doc, 'getting_started.coffee.md'); - render(doc, 'vector.coffee.md'); - render(doc, 'text.coffee.md'); - render(doc, 'images.coffee.md'); - render(doc, 'outline.coffee.md'); - render(doc, 'annotations.coffee.md'); + render(doc, 'getting_started.md'); + render(doc, 'vector.md'); + render(doc, 'text.md'); + render(doc, 'images.md'); + render(doc, 'outline.md'); + render(doc, 'annotations.md'); return doc.end(); })(); diff --git a/docs/generate_website.js b/docs/generate_website.js index 1a0b2fcbd..e9a705b88 100644 --- a/docs/generate_website.js +++ b/docs/generate_website.js @@ -13,11 +13,11 @@ if (!fs.existsSync('img')) { const files = [ '../README.md', - 'getting_started.coffee.md', - 'vector.coffee.md', - 'text.coffee.md', - 'images.coffee.md', - 'annotations.coffee.md' + 'getting_started.md', + 'vector.md', + 'text.md', + 'images.md', + 'annotations.md' ]; // shared lorem ipsum text so we don't need to copy it into every example @@ -103,8 +103,8 @@ for (let file of Array.from(files)) { generateImages(tree); file = file - .replace(/\.coffee\.md$/, '') - .replace(/README\.md/, 'index'); + .replace(/README\.md/, 'index') + .replace(/\.md$/, ''); pages.push({ file, diff --git a/docs/getting_started.coffee.md b/docs/getting_started.md similarity index 100% rename from docs/getting_started.coffee.md rename to docs/getting_started.md diff --git a/docs/images.coffee.md b/docs/images.md similarity index 100% rename from docs/images.coffee.md rename to docs/images.md diff --git a/docs/outline.coffee.md b/docs/outline.md similarity index 100% rename from docs/outline.coffee.md rename to docs/outline.md diff --git a/docs/text.coffee.md b/docs/text.md similarity index 100% rename from docs/text.coffee.md rename to docs/text.md diff --git a/docs/vector.coffee.md b/docs/vector.md similarity index 100% rename from docs/vector.coffee.md rename to docs/vector.md From e595a8ebf592599a14b4e6fc128673b57be322b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Wed, 19 Dec 2018 20:39:29 -0300 Subject: [PATCH 18/41] Convert coffeescript code in README.md --- README.md | 77 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index c57d43495..a69cbe571 100644 --- a/README.md +++ b/README.md @@ -62,56 +62,56 @@ Installation uses the [npm](http://npmjs.org/) package manager. Just type the f ## Example -```coffeescript -PDFDocument = require 'pdfkit' +```javascript +const PDFDocument = require('pdfkit'); -# Create a document -doc = new PDFDocument +// Create a document +const doc = new PDFDocument; -# Pipe its output somewhere, like to a file or HTTP response -# See below for browser usage -doc.pipe fs.createWriteStream('output.pdf') +// Pipe its output somewhere, like to a file or HTTP response +// See below for browser usage +doc.pipe(fs.createWriteStream('output.pdf')); -# Embed a font, set the font size, and render some text +// Embed a font, set the font size, and render some text doc.font('fonts/PalatinoBold.ttf') .fontSize(25) - .text('Some text with an embedded font!', 100, 100) + .text('Some text with an embedded font!', 100, 100); -# Add an image, constrain it to a given size, and center it vertically and horizontally +// Add an image, constrain it to a given size, and center it vertically and horizontally doc.image('path/to/image.png', { fit: [250, 300], align: 'center', valign: 'center' }); -# Add another page +// Add another page doc.addPage() .fontSize(25) - .text('Here is some vector graphics...', 100, 100) + .text('Here is some vector graphics...', 100, 100); -# Draw a triangle +// Draw a triangle doc.save() .moveTo(100, 150) .lineTo(100, 250) .lineTo(200, 250) - .fill("#FF3300") + .fill("#FF3300"); -# Apply some transforms and render an SVG path with the 'even-odd' fill rule +// Apply some transforms and render an SVG path with the 'even-odd' fill rule doc.scale(0.6) .translate(470, -380) .path('M 250,75 L 323,301 131,161 369,161 177,301 z') .fill('red', 'even-odd') - .restore() + .restore(); -# Add some text with annotations +// Add some text with annotations doc.addPage() .fillColor("blue") .text('Here is a link!', 100, 100) - .underline(100, 100, 160, 27, color: "#0000FF") - .link(100, 100, 160, 27, 'http://google.com/') + .underline(100, 100, 160, 27, {color: "#0000FF"}) + .link(100, 100, 160, 27, 'http://google.com/'); -# Finalize PDF file -doc.end() +// Finalize PDF file +doc.end(); ``` [The PDF output from this example](http://pdfkit.org/demo/out.pdf) (with a few additions) shows the power of PDFKit — producing @@ -133,28 +133,29 @@ module. The following example uses Browserify to load `PDFKit` and `blob-stream`, but if you're not using Browserify, you can load them in whatever way you'd like (e.g. script tags). -```coffeescript -# require dependencies -PDFDocument = require 'pdfkit' -blobStream = require 'blob-stream' +```javascript +// require dependencies +const PDFDocument = require('pdfkit'); +const blobStream = require('blob-stream'); -# create a document the same way as above -doc = new PDFDocument +// create a document the same way as above +const doc = new PDFDocument; -# pipe the document to a blob -stream = doc.pipe(blobStream()) +// pipe the document to a blob +const stream = doc.pipe(blobStream()); -# add your content to the document here, as usual +// add your content to the document here, as usual -# get a blob when you're done -doc.end() -stream.on 'finish', -> - # get a blob you can do whatever you like with - blob = stream.toBlob('application/pdf') +// get a blob when you're done +doc.end(); +stream.on('finish', function() { + // get a blob you can do whatever you like with + const blob = stream.toBlob('application/pdf'); - # or get a blob URL for display in the browser - url = stream.toBlobURL('application/pdf') - iframe.src = url + // or get a blob URL for display in the browser + const url = stream.toBlobURL('application/pdf'); + iframe.src = url; +}); ``` You can see an interactive in-browser demo of PDFKit [here](http://pdfkit.org/demo/browser.html). From 3eae1855f65763888fb6a73021a010d80583d343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Wed, 19 Dec 2018 21:02:15 -0300 Subject: [PATCH 19/41] Remove coffee-script dependency --- index.js | 3 --- package.json | 1 - 2 files changed, 4 deletions(-) delete mode 100644 index.js diff --git a/index.js b/index.js deleted file mode 100644 index 85814fc7d..000000000 --- a/index.js +++ /dev/null @@ -1,3 +0,0 @@ -// Load CoffeeScript, and the main PDFKit files -require('coffee-script/register'); -module.exports = require('./lib/document'); \ No newline at end of file diff --git a/package.json b/package.json index 49a210474..4f232ce7e 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "brfs": "~2.0.1", "browserify": "^13.3.0", "codemirror": "~3.20.0", - "coffee-script": ">=1.0.1", "eslint": "^5.3.0", "iconv-lite": "^0.4.13", "jade": "~1.1.5", From 883983aa3d837446ec35f52741d863693a825dd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Thu, 20 Dec 2018 13:31:25 -0300 Subject: [PATCH 20/41] Import test dependencies directly from src through babel-jest. Adapt relative paths accordingly --- .babelrc | 8 ++++++++ lib/font/standard.js | 28 ++++++++++++++-------------- package.json | 1 + rollup.config.js | 2 +- tests/helpers.js | 2 +- tests/unit/color.spec.js | 4 ++-- tests/unit/reference.spec.js | 21 +++++++++++---------- tests/unit/trailer.spec.js | 2 +- 8 files changed, 39 insertions(+), 29 deletions(-) create mode 100644 .babelrc diff --git a/.babelrc b/.babelrc new file mode 100644 index 000000000..1cb920f07 --- /dev/null +++ b/.babelrc @@ -0,0 +1,8 @@ +{ + "presets": [["env", {"modules": false, "targets": {"node": "6.10"}}]], + "env": { + "test": { + "presets": [["env", {"targets": {"node": "6.10"}}]] + } + } +} \ No newline at end of file diff --git a/lib/font/standard.js b/lib/font/standard.js index feaeee4dc..80eefcb20 100644 --- a/lib/font/standard.js +++ b/lib/font/standard.js @@ -4,20 +4,20 @@ import fs from 'fs'; // This insanity is so bundlers can inline the font files const STANDARD_FONTS = { - "Courier"() { return fs.readFileSync(__dirname + "/font/data/Courier.afm", 'utf8'); }, - "Courier-Bold"() { return fs.readFileSync(__dirname + "/font/data/Courier-Bold.afm", 'utf8'); }, - "Courier-Oblique"() { return fs.readFileSync(__dirname + "/font/data/Courier-Oblique.afm", 'utf8'); }, - "Courier-BoldOblique"() { return fs.readFileSync(__dirname + "/font/data/Courier-BoldOblique.afm", 'utf8'); }, - "Helvetica"() { return fs.readFileSync(__dirname + "/font/data/Helvetica.afm", 'utf8'); }, - "Helvetica-Bold"() { return fs.readFileSync(__dirname + "/font/data/Helvetica-Bold.afm", 'utf8'); }, - "Helvetica-Oblique"() { return fs.readFileSync(__dirname + "/font/data/Helvetica-Oblique.afm", 'utf8'); }, - "Helvetica-BoldOblique"() { return fs.readFileSync(__dirname + "/font/data/Helvetica-BoldOblique.afm", 'utf8'); }, - "Times-Roman"() { return fs.readFileSync(__dirname + "/font/data/Times-Roman.afm", 'utf8'); }, - "Times-Bold"() { return fs.readFileSync(__dirname + "/font/data/Times-Bold.afm", 'utf8'); }, - "Times-Italic"() { return fs.readFileSync(__dirname + "/font/data/Times-Italic.afm", 'utf8'); }, - "Times-BoldItalic"() { return fs.readFileSync(__dirname + "/font/data/Times-BoldItalic.afm", 'utf8'); }, - "Symbol"() { return fs.readFileSync(__dirname + "/font/data/Symbol.afm", 'utf8'); }, - "ZapfDingbats"() { return fs.readFileSync(__dirname + "/font/data/ZapfDingbats.afm", 'utf8'); } + "Courier"() { return fs.readFileSync(__dirname + "/data/Courier.afm", 'utf8'); }, + "Courier-Bold"() { return fs.readFileSync(__dirname + "/data/Courier-Bold.afm", 'utf8'); }, + "Courier-Oblique"() { return fs.readFileSync(__dirname + "/data/Courier-Oblique.afm", 'utf8'); }, + "Courier-BoldOblique"() { return fs.readFileSync(__dirname + "/data/Courier-BoldOblique.afm", 'utf8'); }, + "Helvetica"() { return fs.readFileSync(__dirname + "/data/Helvetica.afm", 'utf8'); }, + "Helvetica-Bold"() { return fs.readFileSync(__dirname + "/data/Helvetica-Bold.afm", 'utf8'); }, + "Helvetica-Oblique"() { return fs.readFileSync(__dirname + "/data/Helvetica-Oblique.afm", 'utf8'); }, + "Helvetica-BoldOblique"() { return fs.readFileSync(__dirname + "/data/Helvetica-BoldOblique.afm", 'utf8'); }, + "Times-Roman"() { return fs.readFileSync(__dirname + "/data/Times-Roman.afm", 'utf8'); }, + "Times-Bold"() { return fs.readFileSync(__dirname + "/data/Times-Bold.afm", 'utf8'); }, + "Times-Italic"() { return fs.readFileSync(__dirname + "/data/Times-Italic.afm", 'utf8'); }, + "Times-BoldItalic"() { return fs.readFileSync(__dirname + "/data/Times-BoldItalic.afm", 'utf8'); }, + "Symbol"() { return fs.readFileSync(__dirname + "/data/Symbol.afm", 'utf8'); }, + "ZapfDingbats"() { return fs.readFileSync(__dirname + "/data/ZapfDingbats.afm", 'utf8'); } }; class StandardFont extends PDFFont { diff --git a/package.json b/package.json index 4f232ce7e..24e9a3080 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "bugs": "http://github.com/devongovett/pdfkit/issues", "devDependencies": { "babel-core": "^6.26.3", + "babel-jest": "^23.6.0", "babel-plugin-external-helpers": "^6.22.0", "babel-preset-env": "^1.7.0", "blob-stream": "^0.1.2", diff --git a/rollup.config.js b/rollup.config.js index cb8dd6159..c2c513852 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -41,7 +41,7 @@ export default [ }), copy({ files: ['lib/font/data/*.afm'], - dest: 'js/font/data' + dest: 'js/data' }), stripFSInterop() ] diff --git a/tests/helpers.js b/tests/helpers.js index 7e558cc77..d73daa073 100644 --- a/tests/helpers.js +++ b/tests/helpers.js @@ -1,4 +1,4 @@ -var PDFDocument = require('../'); +var PDFDocument = require('../lib/document').default; var path = require('path'); var fs = require('fs'); diff --git a/tests/unit/color.spec.js b/tests/unit/color.spec.js index 6e55cf0c5..8f7cbf395 100644 --- a/tests/unit/color.spec.js +++ b/tests/unit/color.spec.js @@ -1,8 +1,8 @@ -var PDFDocument = require("../../"); +const PDFDocument = require("../../lib/document").default; describe("color", function() { test("normalize", function() { - var doc = new PDFDocument(); + const doc = new PDFDocument(); expect(doc._normalizeColor("#FFF")).toEqual([1, 1, 1]); expect(doc._normalizeColor("#FFFFFF")).toEqual([1, 1, 1]); diff --git a/tests/unit/reference.spec.js b/tests/unit/reference.spec.js index e72878d51..930533be4 100644 --- a/tests/unit/reference.spec.js +++ b/tests/unit/reference.spec.js @@ -1,4 +1,5 @@ -const PDFDocument = require('../../') +const PDFReference = require("../../lib/reference").default; +const PDFDocument = require("../../lib/document").default; const zlib = require('zlib') describe('PDFReference', () => { @@ -8,7 +9,7 @@ describe('PDFReference', () => { }) test('instantiated without data', () => { - const ref = document.ref() + const ref = new PDFReference(document, 1); expect(ref.id).toBeDefined() expect(ref.data).toBeDefined() @@ -17,20 +18,20 @@ describe('PDFReference', () => { test('instantiated with data', () => { const refData = {Pages: 0} - const ref = document.ref(refData) + const ref = new PDFReference(document, 1, refData); - expect(ref.id).toBeDefined() + expect(ref.id).toBe(1) expect(ref.data).toBe(refData) }) test('written data of empty reference', (done) => { const dataLog = [] const expected = [ - '7 0 obj', + '1 0 obj', '<<\n>>', 'endobj' ] - const ref = document.ref() + const ref = new PDFReference(document, 1); document._write = function(data) { dataLog.push(data) } @@ -45,7 +46,7 @@ describe('PDFReference', () => { const dataLog = [] const chunk = new Buffer('test') const expected = [ - '7 0 obj', + '1 0 obj', `<< /Length ${chunk.length} >>`, @@ -54,7 +55,7 @@ describe('PDFReference', () => { '\nendstream', 'endobj' ] - const ref = document.ref() + const ref = new PDFReference(document, 1); ref.compress = false ref.write(chunk) document._write = function(data) { @@ -72,7 +73,7 @@ describe('PDFReference', () => { const chunk = new Buffer('test') const compressed = zlib.deflateSync(chunk); const expected = [ - '7 0 obj', + '1 0 obj', `<< /Length ${compressed.length} /Filter /FlateDecode @@ -82,7 +83,7 @@ describe('PDFReference', () => { '\nendstream', 'endobj' ] - const ref = document.ref() + const ref = new PDFReference(document, 1); ref.write(chunk) document._write = function(data) { dataLog.push(data) diff --git a/tests/unit/trailer.spec.js b/tests/unit/trailer.spec.js index d485ebe7c..775eeb68b 100644 --- a/tests/unit/trailer.spec.js +++ b/tests/unit/trailer.spec.js @@ -1,4 +1,4 @@ -const PDFDocument = require('../../'); +const PDFDocument = require('../../lib/document').default; describe('Document trailer', () => { let document; From 5f125f792dad08db1365c25ac2c84532cb7d1fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Thu, 20 Dec 2018 13:34:54 -0300 Subject: [PATCH 21/41] Mock PDFSecurity methods in tests to ensure same output accross different runs or systems --- tests/helpers.js | 15 +++++++++++++++ tests/unit/trailer.spec.js | 8 +++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/helpers.js b/tests/helpers.js index d73daa073..889ef871d 100644 --- a/tests/helpers.js +++ b/tests/helpers.js @@ -1,7 +1,22 @@ var PDFDocument = require('../lib/document').default; +var PDFSecurity = require('../lib/security').default; +var CryptoJS = require('crypto-js'); var path = require('path'); var fs = require('fs'); +// manual mock for PDFSecurity to ensure stored id will be the same accross different systems +PDFSecurity.generateFileID = () => { + return new Buffer('mocked-pdf-id'); +} + +PDFSecurity.generateRandomWordArray = (bytes) => { + const words = []; + for (let i = 0; i < bytes; i++) { + words.push(0x00010203); + } + return new CryptoJS.lib.WordArray.init(words, bytes); +} + function updatePdf (pdfData, testState, snapshotChanges) { const pdfDir = path.join(path.dirname(testState.testPath), '__pdfs__'); if (!fs.existsSync(pdfDir)) { diff --git a/tests/unit/trailer.spec.js b/tests/unit/trailer.spec.js index 775eeb68b..f35023879 100644 --- a/tests/unit/trailer.spec.js +++ b/tests/unit/trailer.spec.js @@ -1,4 +1,10 @@ const PDFDocument = require('../../lib/document').default; +const PDFSecurity = require('../../lib/security').default; + +// manual mock for PDFSecurity to ensure stored id will be the same accross different systems +PDFSecurity.generateFileID = () => { + return new Buffer('mocked-pdf-id'); +} describe('Document trailer', () => { let document; @@ -28,7 +34,7 @@ describe('Document trailer', () => { ], [ 'trailer', - `<<\n/Size 11\n/Root 2 0 R\n/Info 7 0 R\n/ID [<8c72cf48ff87daac57e26bf1550e6979> <8c72cf48ff87daac57e26bf1550e6979>]\n>>` + `<<\n/Size 11\n/Root 2 0 R\n/Info 7 0 R\n/ID [<6d6f636b65642d7064662d6964> <6d6f636b65642d7064662d6964>]\n>>` ] ]; document._write = function(data) { From 8bf29c5d9cc201a34731cc68fb8c071e69de49f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Thu, 20 Dec 2018 13:36:12 -0300 Subject: [PATCH 22/41] Update saved snapshots --- tests/__snapshots__/fonts.spec.js.snap | Bin 109909 -> 109414 bytes tests/__snapshots__/text.spec.js.snap | Bin 6298 -> 6241 bytes tests/__snapshots__/vector.spec.js.snap | Bin 63708 -> 63393 bytes .../__snapshots__/absolute.spec.js.snap | Bin 74703 -> 74247 bytes .../__snapshots__/background.spec.js.snap | Bin 72590 -> 72149 bytes .../pdfmake/__snapshots__/basics.spec.js.snap | Bin 1936 -> 1912 bytes .../__snapshots__/columns_simple.spec.js.snap | Bin 52729 -> 52531 bytes .../pdfmake/__snapshots__/images.spec.js.snap | Bin 175035 -> 174219 bytes .../pdfmake/__snapshots__/lists.spec.js.snap | Bin 43757 -> 43610 bytes .../page_references.spec.js.snap | Bin 15534 -> 15471 bytes .../pdfmake/__snapshots__/qrcode.spec.js.snap | Bin 36311 -> 36176 bytes .../__snapshots__/security.spec.js.snap | Bin 10448 -> 10280 bytes .../pdfmake/__snapshots__/tables.spec.js.snap | Bin 57275 -> 57065 bytes .../text_decorations.spec.js.snap | Bin 13956 -> 13878 bytes tests/pdfmake/__snapshots__/toc.spec.js.snap | Bin 14218 -> 14167 bytes .../__snapshots__/watermark.spec.js.snap | Bin 14514 -> 14475 bytes tests/pdfmake/watermark.spec.js | 1 + 17 files changed, 1 insertion(+) diff --git a/tests/__snapshots__/fonts.spec.js.snap b/tests/__snapshots__/fonts.spec.js.snap index 0c751752bc4c5647c9ff18ebdbd6e3cd8517831a..e4884386dda1de84a144d324aa6776f5557c8ff1 100644 GIT binary patch delta 855 zcmbV~+e=ho6vbKJcg`7`u^Sl(6%A84*-f*VV`3wiWs@}-X%~&D)G51Bl4cqd(us^ug5O?mW7?N@+MRxt zBI;8mQxE8S^ksUv?$%uyfy{K>rRy01Jxh1x*jN1Dq^R|ZMs-t5h4FUU7Fv>|fZWq> zB-5wG1FFHxifD?fPEvDb40IqXCJnEr%^32ek~Jq=Bk!uM!U*TjHzN5RbZE_hG;-H1 zq$BIDfoAy%Y_xw{K+v1gLP05hAEjC%#b`mFPN-{ZJaC()1lqY3o6uP2e(U)D>SG7u8f@j5(yb|<3g zf@pAqLdsBrFeVSzP~&hdjIj|f6?_=|2XUXIn}4!ld>wmqu^Z313TTroRn);erJ;ds z7Gx-9o(;w3B^y@q2OGL9X7e=s;^riL*0_2GJPOlnycgW=zy)chrr@RdI|YLrb>g(b z{zY&|4yB<`@SCMrD^0r_V?0ksli=RvSTuo0a*adf$qh7FMH{8-J-HU51_TiP_ z$N}uMu)7)nXVsuZaJ=rWg+nJ120McoweZX{s1|(j9D)ibw<1lj?>s8O4=!MT0y{hL XQycG)*&jx)%9FeCaoi6zqE`D~lw~j> delta 970 zcmb_b>rc&b7~kjn{axy)L{VeRrP{2iLymJov>}$ua)wfrIynt9gxr#a?9?=u@8*Za zu(@m}(>&?1NNj9q<~Gfmq&4?TV|ZZ;r~UzNdh@(_o_%inJa1c#=WRyaL;XmKK@auY z+DwtuxRVOW__M|dNSK@VtwP>~Jcy(=2s z@I8pan=gmZjh0eLjz<*%g-KjeSlCyJGN3)$95d)oJVszfA%K4 zUefuVsZg)}G^-PT?_JG;PlZrCasPbJhJ?;c**5)sMOeuN37&=32+PEX2*QVx04{iO_NY9 zc#ac^!F_m}Qn5q}v`kfn*!bxz6v>bP&Hd|v5!1^zV=mfs9=Z^%(t5lDhV^+7>eMM| zST%0s@DDfQz)_3wL2^$f!ZZ$AjxNFPb1_!1o{!yv%RO*OtHFzloKu7+LS3?(Y+r*M zlYJYZfh&t~Sa9SPTr>H8Db9h{mf@$#EB2#A^r?L8!(L5&$ul{#8u5Zl4`Lm->ku{s bamI1{GWz2`c-LuM)_L4{yzQ4l^!?jE%h70) diff --git a/tests/__snapshots__/text.spec.js.snap b/tests/__snapshots__/text.spec.js.snap index b331ab7f7a97de850b2fe9f74b6505fd369794a0..1e4f0cc23e13b202e54c7007af36f89ad33dcc4a 100644 GIT binary patch delta 260 zcmbPb_|Ra3BAdBcidmYOv00LtshNpUin)QAiJ6&EikYREiJgKCZpqClY&lGuuW{UD dCfkHhJZ9uupDp~IadWEZWhQd1pIj{=4*>7aL%je1 delta 335 zcmaE8Fw1a*BAc^Cvbj-mnu$ePnuU2vVq&tXd8(0FQktQusX?llrMab@f(;=hngw;trNotB%>@8c;$Q6m diff --git a/tests/__snapshots__/vector.spec.js.snap b/tests/__snapshots__/vector.spec.js.snap index 7cf40f0926885fb5d7beaeb9c67cef8b48ca48d5..174c9da6db30b9813f12e50a1df3b7b742b48c10 100644 GIT binary patch delta 528 zcmbWv!Ap~I9LI5<@2_Xia-kq7v2@7hP#l5G`Lp3HQxpbCDxvKV(pY5#(Ml9$h`S?VmXvkEt<-*jy)-|e`f@uVX4Z+ur@mks17|Ld}_B4?{pksy))w? z4ttVRPW0Jfdzq%8_;s;B>!6wNW~hOX7-IIqPEf3r>i DVVlli delta 602 zcmZ4Zp83v4<_$@#o8wt$Gfn=^9<|wZH?yG1jYHp@!1Fm0Y8^^1uaq@Z8cXY&o&Ue?J;%DQY&O+CtMC!48k-~3$V3FG7w zYOR~S)ZN%N_v*%QZ+>QRh-va7>%E&}Y(6nf_O?F-GGw!mLl*PqO6M(%o3&hPg*Gn< zFJs><9{-JTGgsnV9ubJCVUa-E7KpE{2Wi=qyN79VcEP&IVuh}oLkpRiH;0z!F@jBN zDAi-zyt+D%X|q_JBGY7(h7X$+8|67S+jjA?PIm9t*qqZZ!M?e1njQ1zJu_vQHea5d z%Cy;ZUN-aQSqp>NH@{kOm}&E>)u-4e7j6#Ue01|9*3E%C**P|c9+YIr0bi9EWj!_w&rnO)yij!$g-_N++@Pn7KqtEv=+C>PSMYVaK&}Bhii&6f05N zZ9P*WOqZEqSYLA{W>y}^powOvkXaT%hed?FsL1>Wg6rMq&E**o&-aS0N0lg5t{2d* z{w|`$e}>`4{H=`t2-=HX!AT6)L-GW$#ahO7p%K^|TCKq3l2k%e4P81QMwQm+^(2?FD zz?!*0K*jb^CH7}$5jt~X314%Y8L!=W8F6_vB3|U%2x$ci84C8~DA2ht+XumxBF61S z7XG^^g>NiA#(Ro^Qfr@p)RIDmmeRSA&nNncx1F*e=JYyWnC#mKxKK|pmUk1^R+v#< zv5EL-r3=Ta{D@z?)X4RY<*I~lj~>ny&yP3^xaXJ^;J)G&&{S(D=&zPB+`X15f*SmZ z2fB>>u*-;Nt}}$JMk`_PX0(8r=4C2`!NJgWzmDyk1@Ei3#D~Y6+&o^#11EC1 zd158%Cb}5%Usn@;PHKn(xN52Zho)4Fm%KYCmxYs>tEY9)PuoP?{wN7}|EXS$%9#K) z8fI5$yoA6_Ewzp{wctIse+x;c6+)zdN(3@UGNN;r_U8QJTqIuK)@Wqzk=pNuUAyK zJ|~gzV{R#-a9)w%s^cCQ3Q-XcFL;5Dg^y)agy{&@#R>8$4XMz#bdL%q;~;TR>;~Qy zo5r_dYdB9*BROtAv1hIqdg6BrL@n16;u5B+khHo@f}9*EAt=S+F=6xT#`T0{o0bxC zH#Z6P+fj59J4vx*5V+kyo8a<-@tx-(sk1AB`Ff5|K0to)UHHoueu3vN${^b|aj z_)w}Er;02BBl}D;A`f;G|2k9vONmK?`lD%tq4EYo)$#kp$(4m@u3Syy%RGAGBI>KW ziJML~@&;=dkG)dsjP8lM4C91yYaH6GDj97xE(uppR}f!@j<63ye`i48NAp?%Q)`HXtb5f0pF8df zKHvEj)eq|gLc5>JJo1=P-UGqL-cJ1PT|-#@EOXL!ZQm%Wp1&h5d|Agjhm9{ewzB9C z$D;lYfsX?Uq2%=x;$u!9R-Ebhbjd$VXYFr55|BmWtI%zAyc?@9`tOr@btIc1g;Ro&xOh yEV?YMh%p-t%CKWebdDt=Dk^+Ow9#NR&5rvYMR^-c!T$hh6G0aM diff --git a/tests/pdfmake/__snapshots__/background.spec.js.snap b/tests/pdfmake/__snapshots__/background.spec.js.snap index c600ab3cc2cdfeae73ceb56b28fee40e39d52919..ca8ff312da1c9b2d7f4e042eb0b4aa58b4b7b71e 100644 GIT binary patch delta 602 zcmZ|J%S%*Y7zbe9@0@YeO3N}6Q`9jur4pMy^MWavHFlwmmvmvKj6vARTX`Xipun`r z&TFM2Av$OXq4i5gV-S*3u)^?CHj!v9f-tj%6oFL#KZ&^W4YaKzhRSV!jx(cP!o7mT$%@^$1 zcxAsvIN4Q3c-CdAh0$e9 zjx`Guk58z4V4@L|6McfOPmUmc>JUMn&L&=&`Hhu#3&hj2&8&TBXJ1zqYpz}Ba5)9? zKQ$44&8;Ka#Gdo{I6v<$xa#u_7K>4ki{&aFeaTbdvlJ*0vwYec&1){zQ6Wf@r2yN80CF`zil>~iYDPLODRocnU~EuHJ7DbW`44Z5;d1YEGieeiZl#@#5CuV zSZP=c6@ySa)+$=5WMp8tO4CHqFBMXmAsMLEv_Bv?=hHdo;hbj>VwGKNKP^L%EJ;9{ zd{z{upE+>L^A|_0_a06Ys|t|rtK+z^+8|)eKZMgl;06Q-)k%PmbcVUmGKQk{#T=i* zRx+9iAHwsE{UWNA?hLd^C&C$HmLNql$*4ENifPgg_!!mbQD;L6D^rDXKKJds=G3fTjFcj{)%PAoH8rriP zMC?3dVQ?G{l2~C)M7LEUqN{dRK*#mV3<>om9Gy2a{(boOZEr>jTMp&fa^SFCWZ2SFynGmK z%}N0uS|i-R?$vTor;SsLeHy_JM>*ym>p4;!VFC$rnI|ueOr6Xd#l2ZNY8Tt)8wsM!n?EGmF>W?Ytzw$IG5z7>sTtjyl{1w% zHhUB<;okhICXQ)yaJ?nt=KhAa9GmMqZJ0Oj>+zP@%)c~|X>;*%JLbvTS0zrCUai6E z{(k@7xq9;}rpX!GS|@+lwq^42?e8|v*fEV`v*AHC#?1+bOu5a? nQq0oKjLnkFOwCM;Qp^p^Ow7!TQp_yPOzaeFa7#|UaaIuktxkDH delta 366 zcmdlyi}~kl<_#xUCm&^fws{5H1cA+_;_n$JD@v~0d{VNJnfd+xy_4N#Z*G>A%Vpc# zuCj+~vaP<&<}&>R#?6-vrm{^=HMiJ2%iM`^@=Xh+%|9&WFmCR%>SvoQ<>|{} diff --git a/tests/pdfmake/__snapshots__/images.spec.js.snap b/tests/pdfmake/__snapshots__/images.spec.js.snap index 89415bba3b1650aae4c2319ce1a088cb8a98f619..7cabe09bd264fd68ddf66e2a91fdbb082b411079 100644 GIT binary patch delta 1242 zcmb_a{ZEy39Njt3bGckzM7_GqNJMQQ)Iz#EK$*+T@QMqUUSCQkAtN-EDfkAyq0RX& z@CaY7FNw}@f*SUneN<4HrgIrYCZuMzo0YF&Ib6$1yZ=DH^~*VDJKNbg+iChXY{S=K zjdM&pJ>iZXnt066F|In;=fh^%kCS@Yy@xg1;SrzOEfFnxb>u+W`=jpb_pCD5F}>UM z(X?jh!+ku|hlbyVeW_ozel%ja!#*-#sZNdgJM8}swNqo>)>)&y&)VB_pTRhFxC3t8 zn!CWM$IQBC=+wE%(6b9KI`zm!t%mMZS{9|N)=P+;RdL4dTe(nguJkzdS$__6{Psrb z?{=0^Pp@q-wfo}_sLS@n1&8ea%b^c^(jKl?G);!S(tHE@)XCPUkf)+jmQPC4HEkE6 zi`wgY+R=dq-5MC@($RM(I(5;5xzs;(SG)AG$KfGrvxx+0GI6Y@Eb5EroU$t#oes5l z5IWVw!8n6h888I?9&$VxTOe5;%y7w(R}mSZ&U+D%17p!{sufw7DR;B*n?tVqaFwcQ z3OdA|iat)M&p{nzQZ7;`6?s?#>7S3Gls5}719D&{?mA>!AU9)R#s}bnn)V~Uk>nfr!jvaB5ekXCjaN*`{1t@`Iq?A3p+4%yc-7qvuX^nv zD&_J+lt6rcpqTRIpKwAtAEBp1?mfX#L-rZ$XUORgb~t5c555KIieeHZwioNE+T5&? z{66%X!lzjbS<*kqQWecf4(W=eFGRfYoJVycfraYDM2=Jo6IrUd6RG9k^E_+F;w0u% z0?7=vj7jA=s9R|)ll_BTIf{Frf@@7FAI;-InZY^I zlEG0>E-&{=qn8m-r^d2Q6=X6|`7_x=)o0R@Uo!c`2>yUwhFqJ#b&vudODI22=2%lw zrZEaCBb!syo*>9S*<1x#HJwF}$2p8QWN04aLS@2iR#I-wWi8c)dAuhj^Ld%#TR<;m z_aY84`lQy+P^yOQT%$ZY ym?#B1SZvACMN&cpFBq9l64(IqgG4a(ie5v777{3lNh*Y6=j@zk=h^d|v;DHU zzSaDBrY=g&MvOqu^>yS=|niQ0C0OZh*y0gjgCxr{ybA<^HW&U>ylLG#pk@ z&0rhU5uXPn%6%8BF5g0fa2~OW0{?8);SbCI#wI%aQ&dAt z{4m+Gj!eRR$q*H=q}ZftGrBZYo*6;vT-MJf<;=aLDM$V$4|Q+rNu#JP{a)C2u2ro& zZ6;-LrjuH^TS58l-2_$j$x&VUZiH1O?OzV{MQt$D)q`YIEk~OzYX8YpQqSt|lDc*J zl85`lhSNhlBG$hd=_=Hh7p{03TYNYvopOoKETwVaP6s)N6W^vk3>=w7jTU~kmc|%(_y^7cyizOk8}M3?x5pr>ktgLl<;@=`LAF-dGDW zPrgSsowI(YYy-DFqB|t(yJ(Ia&`mSt+-@rGeP8bArhJkIM!OD^`4_DKxBN|J;+s!s zkb&>_&^H>_5d1W**Ky6%C!^FIvxsk5F_Czn2kIbCc%hOLy-}s}T_5BTr~2Xr@amzM zZ{Wt^NHMbCXyifcIA)R+L0BoD2O&mAk42$8ITpwJ)@BCdyv8qwU=_GB6jO9=4o4$N z=Okpa!G%Fj zVHbEuKE8&WUVz6uVLkSM8#myJE-N=fa8MBx^Y#i@AVnp% z%BQcvEJr%=qOso|j&UMS=M#JJzIl3Nx-Bf-5gzGqMB0|x?dcJ=Wnq(+I3`3ygf5#D RWs8~;5dB{ex#A#3`~$D|FpvNM diff --git a/tests/pdfmake/__snapshots__/lists.spec.js.snap b/tests/pdfmake/__snapshots__/lists.spec.js.snap index b1508befa51b1331219746537ef82ec240bae00c..497a49a17e7f0127bd5a1f7c22ddfc49bad437fe 100644 GIT binary patch delta 248 zcmaERmFd_{8YH`DvjH<7W0^R;JCOr9$kRwQ7QRHrIE&VBVb7 zW5hCf{sgtnCno%7+}GPB*0%}4CGnKqwsFk;>O+jS}P z=DD7#9GmwC{uS7~E$J$+7|=pSSpyaz1wk6eJAsVJvkN}418ILC-rQFx!w9x!c@YN_ z8${XWH6^0#oA*_R@@y99c+I@|N4F`Usrq`|VeWZDDP&3yGc_|YN-;MuGchwWN-?uEGqF>!!7Vwt&qe_N DpNc1W delta 149 zcmaD~v95B%6!y&%*)KC~PUNa$ocy1IZSxIoPo~Y%e9^3%i-oswPgaxPu=%olD+}}c z{d+fus@Osp{Tg#Q!6KSQS*)8Un0K%^TO^wsC8wEKq@`Jyrz9pOo0_K@nI)wenwlD< Snpv7#+9}u&QZm`!Mgai!=`?=; diff --git a/tests/pdfmake/__snapshots__/qrcode.spec.js.snap b/tests/pdfmake/__snapshots__/qrcode.spec.js.snap index e5e8bdc612e0a51edd3601fd582b934c1e89cd72..220e32418fb116120c23e8c0102e19375eeda65d 100644 GIT binary patch delta 263 zcmcaUo9V(VrVVeIHh*C1W#8PuRm`&aC*Nu2&BulM7+IZ}-|yc$c_XvrX-^JaJb^X!`?&G)cQp3*I}`IXHc=FKY|=5kE-^fcOB=lP0d zbDkdy%jVLcsmz;s!=5v5{vNrGar263AI8bwV*)pO$1Y>q{3U)dn+a delta 291 zcmcaGi|P7orVVeIHosz;z|Q`D|6Xn&o-CLzym=y549n){d>5HFZxx!z$O;s8W}dvR zO>%OgNW|uCB0k)k|I5oTZv7MX(kqFX%^-wiHXUk=BY+zNoj_rrUt2Imgbgr3O0n4 JOxEvJ1OT>lctijI diff --git a/tests/pdfmake/__snapshots__/security.spec.js.snap b/tests/pdfmake/__snapshots__/security.spec.js.snap index a8df99fbb216af4e0ddefa1b93cd3fa1bc96a129..a81ed8b8f653c9d29f08069b794668814b5657ca 100644 GIT binary patch literal 10280 zcmeHN+ix959c~CAWrJEZG!)vT8l`fH$z^ADXJ==K6XL7l)`?x)xkyfkXLn}pQ|xoB zbJoELrB#u5gC|~)kjeu^;*m#Q5E9{~LVZC39^i?8fPaB+&YWAlxfvrARp)4Celx$F z`_BBn{bo)WlDBNDBujO@)mm?qRqh`QDZ#;euYXtstCiY}ZS|g7EE{X_1u_`4(>n7cU03Zd?JU zs1^)RylGuQmp=%vSX0vzjUBQ=p%5%0sfup9+Uq50>NH z?%GCan{i*ddNX+Lz!we|jd z=s$ml)N7+X6(Vo@#DkB${MT=Pacea|d=~!s*S&JP<|RTGyHxAE%@z_{Q}F?aH{s!q zpPs)t0jY0x6fb!Fz1xRI+&k=yr}H+Mdp&M8P7Myu#jm57tKp_E-VsQQd=bGK{AhPc zu)EgR4;sH4dJSAzawtSy-VJQbQ82b^65_@ z@|hB$fFE?@Nc37#11}$|%53L&E*nU97I8a`JvM~}L9m3~%I>ctx3s$J z$nPMx@Pcqcw`_X}hL`QeU0c?29fV8US=ruYE+;nEbRFxfR$n9Gjaq%Y-l}yK0}aIe z2KudbXR5z%Cv~Ye8f$I`Vgq+JV7~zG*V0?!OQo(G-84aXo$w&+?t(~S4rbb0XQ?!u z*!Xt2K7H41?Qp7*&u`hf%XEc=usPSUZMubp>p5JwRBmFAwkvRnWOH{6Db8>07r>f{9FB_S}TL*5fFSC(ig(2$A(3 zdm(wrq{V4KXgYRgZwb*Q9PKB zz4AlQg$_TAqo?7AXbk+28&JDQ2rG(0nkX-#LRuBYLUI)wVI!JmnaV-AY%HnONh(;D zD{2I_31tN=IHM7bA0@&3=BGhNWJ)aqqtwRoJQ1nMnE`vWR;X0Qk<2wyf>}y4C1q}8 zoJWy1xwJ*1EH|Ep@`B@;;7lTGVWPz3X+*izx!~3mDi%DCSuAr#6Oh^{VNx6P4`axU z21R;uXRo2NR&ZKmF&8>3@|49zp+&-|keNjXCD^giLNS%bRI?aU#k4d^V+?toSj7j} zZn$8Zn=OoAV1PP}m9dgV;NU4WEKV|`DT_0cx9NQ6vv?o8cz{njXvHs8IAC$VLH;bN zy8ZED@W@?l2v+65PtS`7`uEK6V$Rs!c=6)oSx&nj0S^KGc*u$$&59)s?jCJo2Ag8#MRB;Z75s}6rC+AU- z;fT-1Mioq11!GKYPL<|{Qh-Y;3!oq^Qk{vY@aUry(}@zQkcl=0lPW88Q5c-NMHaxu zB)~@69QND-8g*XaY%mgxD<&i0pY^bS)3yGA@qcaVg~E~eZj+nhzG#;&a#}wKjXQCq5uE@ literal 10448 zcmeHNU2h#n84fL^bbA90R7o4qD3#T;!P%MF`PfO_q>ew7G;wU~I8-<(nVp@nPi>!L zowE*3+R__@#BV_A4R=UL+|Y|khzlxlgOK0?A@K{iK>P*X_w1fM%Q>kNE2u)zSOpmfoK{; z(bT_x|GU~nj8M|a-j8NxqWI?hJx}5lyXkvTJlEN87lcLewN~CE8yd>3-ia<=jC?!C z3Md$_7(w-}$BI}!ikE!evX?stWP^f0F;2AMcd+$#0mXVmmgQD`ue0BEzDHDFFzg5O zgML=J9k=ESvJvC+#W(#yLE@{sFyPBoJXgh6p^ruAgWz*5GLjBj9X5HhO)zb&WqW*NQmMm@uS_@quY z6U*O)+=+jE@(YNrb+)%}K)kgHLHBRJd~g~wKY`#|;K8k3x&q;Q--O^C_>her zUAnpFKY+x?;KMVlmNpZo@HJMCRJ~A!ZwM#k?8qY?gNhdXTi~BFVj!}(5!sl!E5i&0x0eryzQa``AU)dd01!jpcDku7`1z-OQ>E0T`E@* zDqj>|wmsih!}yBdx#x?Pvr)XZpB4R;h9zNvEwn+$TJ22||De^LZTDIOL8F6Y*uk*Z z!CVd3?wl>`PG=KWAuQr*5e_SeVJo$ouNAhP+io7kw}^=1!AjsM%)w%R`K%Rrm73iz zwifQ;@{Z>_Zh6nQvCtBUVc)q0OJ`77;mEnfl$<$g+ zjpNKHo;xQEeZ&Q=tdQx%P|=w4gRTz|B`k@CwTY54ktC2>#$X@8i?nN5%3z{LWZJ+h z9Fe7JT*lRSdrZS7I8v8tc>5zVWyZ@X4hlR{P6$x_5t)Q17?a6H-J)w-JHFcoinZ1Q zSOiHFuXX^i%Eb_0ZHErQH3h5Z>O9$)NuA~{h%|&$=hix@Jy%&^Qc|ysHW$gGi@-Jx zs{t{Npz`+DT(7X*qW^LjQ!<*GT3B9;&O~?LJUT$?ae&klfUE#v0+17ctWj+OkQ0EM z0OTlWKAix`r5Z3uO@L#0_$CF0nM}a)OJI}l0!4W#fnd9&E0$6fLDU zo;|->rkY{+;fH1RIf(x2{v{B^pMRRX*eqVB=gQOxWK?H41n02xb}5DMQ|%q1VM`hXsdQPIzTeqsLP zJd#6jC&0h3Uh#GN8j@%n6#DS@UqJ}&M`cuxY{DGTK+S$n!CO!n6C%NdeokIfP zgv$#+Eq(41=2FfXkWS!~mYKw)RK>l{Su90X)pO)XOYT#&j;cvzCY88ay~&@!j1X5_G{i6*RFt zlhSLGNh<>5KH-j0%KJpWVhm5fm>W#9dRA@58ELA@TIGa)27T-=Kwp9TfF|)Pp9i*ka(||i4Gul`s;_` z`}#X&1^gbUQF4gi*wtTt3c+*3n>9MWz4!nP+fBD}0dgOme0yN!t!qtycNBO*!Bz>F zUI7q|@F_JyfYnoR3#L*bc*wv|=#$(8W;~)5^^O`Va!M8RIt|`%8nn$64<%9=E-4sW zb&$pdl}Z_u@RTzqY?5UewUB3;Dh?p)(}abDOV6D%09w!m8f3wgs{SX2RIn0`ZN=&# z#!#>dkCl58SdjW*2GVh(E=KHkw;xnXdNs<8M01&zCYJQQ#`hQf9CnaMmtDh~)5oDHsp$?3c1med`~e zz41I`kRiQTK?fu&;5iHw@Oba|2e0ya_Z|Ym=|BAjf$G@sRt*QZ=V!NXpMl$@t0*l& zX2yH>@R93k6FeBjgT^Tw9^tJLAXiW6G1~+kzNBL|1C;(qr)h%qY v$zLe_W7WzC^0=g7f)1cM6Le_)hw`W&JSONc_H91l4v+j#&A*-7c{XOyarI@9e8Ji`UnVOjxrI;I-nV6XwrI=Zonb;}V L;Fg>`>%JlYfz*dU delta 351 zcmaF4mwESo<_$3{nBOH?-$*$Vm zDK~|Evy_@5_hwVWdiKfDM>sccvDn49IooOr<7OEfDVE8`4r*LLZ4gvHSy5MXbH0NM z^X9eAy*!f*blEmr1z0g|E)2ZSx7j!049jG(RQ=6PsV5jGv!|DBu1decwAmv|fo1ZS z5P{A4dE(-mn_H8(Hb3gGVcHx$={nya8Tl3g9U*CP2ar2zLvlu~s*=)Suig|MSp~suu4}W3YYzj5k!)_1oMvK?mS$m|l9-rmYMyFjmXu~_ VYHE;bW@&C|r(i=!$>bCF6afn0kzxP< diff --git a/tests/pdfmake/__snapshots__/text_decorations.spec.js.snap b/tests/pdfmake/__snapshots__/text_decorations.spec.js.snap index e39cdc5552e2a362e356adf7d79eabc2c1f2e7de..c3a82bb624c2c774b950ce678e46346515cfdc2f 100644 GIT binary patch delta 148 zcmZq4-IlXq8}sHp%paLIZ)VSBoUF{Lu-T21pK)^pmjvtPV*Ucg$`7$=(s-5%9{;2g%~$Ga7nXnj^Hn5oP0u{ ze6x+9GvnqOp%qM<6-AG8Zhk7apK0?##VxFpW0g5KhpMY_POdO;-n_%Wo^kR=!|j`w y8d)(rTO^wsC8wEKq@`Jyrz9pOo0_K@nI)wenwlDrT$yw$K0HZe|@c;k- delta 135 zcmcbf*Ok8^n`v_fQwH1SQyeQ;H|O(h1xkY#fT%YLTGX6)}at8)nOZMG6)7oF^)eQmO=&XmntbR=0PUobS-%xvVt z7H*bemS$#bmSkpXW@40LZeV6&W@eOPW@%<(r(lCeGM3BEj;pvNv8be?C^e1C!o<{+ QOI6j?-;GO&E5Vuz0BO`Fi2wiq delta 120 zcmeA!+*G)skY#fo%OR%8y6hh}OLGYGZPpg!5}j Date: Thu, 20 Dec 2018 13:52:37 -0300 Subject: [PATCH 23/41] Move integration tests into a separated directory and add script to run only integration tests --- package.json | 1 + .../__snapshots__/fonts.spec.js.snap | Bin .../__snapshots__/security.spec.js.snap | Bin 10280 -> 10270 bytes .../__snapshots__/text.spec.js.snap | Bin .../__snapshots__/vector.spec.js.snap | Bin tests/{ => integration}/fonts.spec.js | 0 tests/{ => integration}/helpers.js | 4 ++-- .../__snapshots__/absolute.spec.js.snap | Bin .../__snapshots__/background.spec.js.snap | Bin .../pdfmake/__snapshots__/basics.spec.js.snap | Bin .../__snapshots__/columns_simple.spec.js.snap | Bin .../pdfmake/__snapshots__/images.spec.js.snap | Bin .../pdfmake/__snapshots__/lists.spec.js.snap | Bin .../page_references.spec.js.snap | Bin .../pdfmake/__snapshots__/qrcode.spec.js.snap | Bin .../pdfmake/__snapshots__/tables.spec.js.snap | Bin .../text_decorations.spec.js.snap | Bin .../pdfmake/__snapshots__/toc.spec.js.snap | Bin .../__snapshots__/watermark.spec.js.snap | Bin .../pdfmake/absolute.spec.js | 2 +- .../pdfmake/background.spec.js | 2 +- .../{ => integration}/pdfmake/basics.spec.js | 0 .../pdfmake/columns_simple.spec.js | 0 .../{ => integration}/pdfmake/images.spec.js | 2 +- tests/{ => integration}/pdfmake/lists.spec.js | 0 .../pdfmake/page_references.spec.js | 0 .../{ => integration}/pdfmake/qrcode.spec.js | 0 .../{ => integration}/pdfmake/tables.spec.js | 0 .../pdfmake/text_decorations.spec.js | 0 tests/{ => integration}/pdfmake/toc.spec.js | 0 .../pdfmake/watermark.spec.js | 1 - .../{pdfmake => integration}/security.spec.js | 4 ++-- tests/{ => integration}/text.spec.js | 0 tests/{ => integration}/vector.spec.js | 2 +- 34 files changed, 9 insertions(+), 9 deletions(-) rename tests/{ => integration}/__snapshots__/fonts.spec.js.snap (100%) rename tests/{pdfmake => integration}/__snapshots__/security.spec.js.snap (83%) rename tests/{ => integration}/__snapshots__/text.spec.js.snap (100%) rename tests/{ => integration}/__snapshots__/vector.spec.js.snap (100%) rename tests/{ => integration}/fonts.spec.js (100%) rename tests/{ => integration}/helpers.js (95%) rename tests/{ => integration}/pdfmake/__snapshots__/absolute.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/background.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/basics.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/columns_simple.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/images.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/lists.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/page_references.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/qrcode.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/tables.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/text_decorations.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/toc.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/__snapshots__/watermark.spec.js.snap (100%) rename tests/{ => integration}/pdfmake/absolute.spec.js (99%) rename tests/{ => integration}/pdfmake/background.spec.js (99%) rename tests/{ => integration}/pdfmake/basics.spec.js (100%) rename tests/{ => integration}/pdfmake/columns_simple.spec.js (100%) rename tests/{ => integration}/pdfmake/images.spec.js (99%) rename tests/{ => integration}/pdfmake/lists.spec.js (100%) rename tests/{ => integration}/pdfmake/page_references.spec.js (100%) rename tests/{ => integration}/pdfmake/qrcode.spec.js (100%) rename tests/{ => integration}/pdfmake/tables.spec.js (100%) rename tests/{ => integration}/pdfmake/text_decorations.spec.js (100%) rename tests/{ => integration}/pdfmake/toc.spec.js (100%) rename tests/{ => integration}/pdfmake/watermark.spec.js (99%) rename tests/{pdfmake => integration}/security.spec.js (95%) rename tests/{ => integration}/text.spec.js (100%) rename tests/{ => integration}/vector.spec.js (98%) diff --git a/package.json b/package.json index 24e9a3080..f4f83e5b8 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "website": "node docs/generate_website.js", "docs": "npm run pdf-guide && npm run website && npm run browser-demo", "test": "jest -i", + "test:integration": "jest integration/ -i", "test:unit": "jest unit/ -i" }, "main": "js/pdfkit.js", diff --git a/tests/__snapshots__/fonts.spec.js.snap b/tests/integration/__snapshots__/fonts.spec.js.snap similarity index 100% rename from tests/__snapshots__/fonts.spec.js.snap rename to tests/integration/__snapshots__/fonts.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/security.spec.js.snap b/tests/integration/__snapshots__/security.spec.js.snap similarity index 83% rename from tests/pdfmake/__snapshots__/security.spec.js.snap rename to tests/integration/__snapshots__/security.spec.js.snap index a81ed8b8f653c9d29f08069b794668814b5657ca..acf386cd7f82bc1454b86c93f217bdf3214e59cd 100644 GIT binary patch delta 1623 zcmeHGOG}nP6xPgyPm(Ot)UXe_nU>D|oiQ(6ED5uu`npOr*A}H+jG~a-1+8BSA_$^Q z1c4>AlL&(Lt)hL4Hq{>pI^!7RXS8n7aGvKmb7tO|dFRY|Hu`vUW~OqwVsZQSW)7@} zB~5&68|aqgUkABL`hX_@S2h9-0v7r))R?+GAfNBP0B# zZUqq7P!iy?fSdXERSg|wA3?medOXcL2+|hMABrcy&Fc$IBW2S+%+Tg|7emM6yx3$j zbaw+x7Z3s*1tjwz@ea}9)SrFZ)>=9Hu=dlkSyOZFe>(n=bnILHhr&1sDQl!a7gO#A zT0!@Q>8VQ><3o&z20K*MbtHMeb2uGeH&_i|(f9xay5GH~tJC-|KDh8;_NKs^cF=YL z)ERe=4=!0tl30YX7-h?5T>>rL3cytWu)+NNy7k-3-fhKt7>S!7Uk>#C5fIp9btf>5 zbFL0ZC<~Qrs$ym=4lwlLhd(6Id(ny;9N$VWmX@3q*YgnWK*7x_aaE;eEwk>Yb(7 zNl9&`I|IsqiBotjTCa}yeuiTlx ST>GFB<-6;;W^XjUs{aXuU*r)0 delta 1696 zcmeHH%}Z556!-a2@&wI3EHvekJxQ&cuRC{!#LRq>WhsRz^up%O%q=r5vcjTz1#Mfz zTLwi`;8J*-HWB2iMT>$qQ4swD{tKOP9qdoj9@D761n>r(?xOjcuvolWJN0|8&YX_}@C6@0G=w z`kBoJD4Waeg99Br;ZHSaDV?qxogu&K0fmoOHLQd&*s0 zpaypt+kr29db={bYI5V^so8@I0h$7KGX&J%i@kCH;Qme!TfZ)P3&?v9cDNzxS~o=C zaRX4($@9_AFazTK?1o^=sA;_P_E`XvlV;1 z+0D_~uVo7i$Fo$PnK%v!=awglFhnOL5mpk)1(VcpOHdTYQVUEi709YE;yBh48IEj- zaDouRh#>km>`V8IW`kZXB4lyMxiXgNkVi&iqZG?q%Vi`e5n5r%u|+7BLTDqXCPW!6 zY!XV#4CEOPdRfB2#~Bt7nivuq9TCK=(wte7NXnU}msEi zuPfhu2FkUZp(Lh^t2ogSrb(iBh!GdDg$hL&3!}KiGNMRf3Y&$MFj7GiT8CCLNHZ23 zq7pGs?9JJE*Z~e5s)$Ns1tt-*5i*$8g|Sfx)7a>~!d%B-H~0dm5}{x&NUthTyu=%9 cumOdi9jAA5$u{^nmW6A(zNB!mujyCgANcF*4gdfE diff --git a/tests/__snapshots__/text.spec.js.snap b/tests/integration/__snapshots__/text.spec.js.snap similarity index 100% rename from tests/__snapshots__/text.spec.js.snap rename to tests/integration/__snapshots__/text.spec.js.snap diff --git a/tests/__snapshots__/vector.spec.js.snap b/tests/integration/__snapshots__/vector.spec.js.snap similarity index 100% rename from tests/__snapshots__/vector.spec.js.snap rename to tests/integration/__snapshots__/vector.spec.js.snap diff --git a/tests/fonts.spec.js b/tests/integration/fonts.spec.js similarity index 100% rename from tests/fonts.spec.js rename to tests/integration/fonts.spec.js diff --git a/tests/helpers.js b/tests/integration/helpers.js similarity index 95% rename from tests/helpers.js rename to tests/integration/helpers.js index 889ef871d..ced1b73f8 100644 --- a/tests/helpers.js +++ b/tests/integration/helpers.js @@ -1,5 +1,5 @@ -var PDFDocument = require('../lib/document').default; -var PDFSecurity = require('../lib/security').default; +var PDFDocument = require('../../lib/document').default; +var PDFSecurity = require('../../lib/security').default; var CryptoJS = require('crypto-js'); var path = require('path'); var fs = require('fs'); diff --git a/tests/pdfmake/__snapshots__/absolute.spec.js.snap b/tests/integration/pdfmake/__snapshots__/absolute.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/absolute.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/absolute.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/background.spec.js.snap b/tests/integration/pdfmake/__snapshots__/background.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/background.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/background.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/basics.spec.js.snap b/tests/integration/pdfmake/__snapshots__/basics.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/basics.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/basics.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/columns_simple.spec.js.snap b/tests/integration/pdfmake/__snapshots__/columns_simple.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/columns_simple.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/columns_simple.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/images.spec.js.snap b/tests/integration/pdfmake/__snapshots__/images.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/images.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/images.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/lists.spec.js.snap b/tests/integration/pdfmake/__snapshots__/lists.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/lists.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/lists.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/page_references.spec.js.snap b/tests/integration/pdfmake/__snapshots__/page_references.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/page_references.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/page_references.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/qrcode.spec.js.snap b/tests/integration/pdfmake/__snapshots__/qrcode.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/qrcode.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/qrcode.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/tables.spec.js.snap b/tests/integration/pdfmake/__snapshots__/tables.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/tables.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/tables.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/text_decorations.spec.js.snap b/tests/integration/pdfmake/__snapshots__/text_decorations.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/text_decorations.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/text_decorations.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/toc.spec.js.snap b/tests/integration/pdfmake/__snapshots__/toc.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/toc.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/toc.spec.js.snap diff --git a/tests/pdfmake/__snapshots__/watermark.spec.js.snap b/tests/integration/pdfmake/__snapshots__/watermark.spec.js.snap similarity index 100% rename from tests/pdfmake/__snapshots__/watermark.spec.js.snap rename to tests/integration/pdfmake/__snapshots__/watermark.spec.js.snap diff --git a/tests/pdfmake/absolute.spec.js b/tests/integration/pdfmake/absolute.spec.js similarity index 99% rename from tests/pdfmake/absolute.spec.js rename to tests/integration/pdfmake/absolute.spec.js index dc5f74fa6..16975831d 100644 --- a/tests/pdfmake/absolute.spec.js +++ b/tests/integration/pdfmake/absolute.spec.js @@ -1,5 +1,5 @@ var {runDocTest} = require('../helpers'); -var {jpeg: bee} = require('../images/bee') +var {jpeg: bee} = require('../../images/bee') describe('pdfmake', function () { // somehow the generated pdf changes at each run diff --git a/tests/pdfmake/background.spec.js b/tests/integration/pdfmake/background.spec.js similarity index 99% rename from tests/pdfmake/background.spec.js rename to tests/integration/pdfmake/background.spec.js index 095178456..966c4447f 100644 --- a/tests/pdfmake/background.spec.js +++ b/tests/integration/pdfmake/background.spec.js @@ -1,5 +1,5 @@ var {runDocTest} = require('../helpers'); -var {jpeg: bee} = require('../images/bee') +var {jpeg: bee} = require('../../images/bee') describe('pdfmake', function () { // somehow the generated pdf changes at each run diff --git a/tests/pdfmake/basics.spec.js b/tests/integration/pdfmake/basics.spec.js similarity index 100% rename from tests/pdfmake/basics.spec.js rename to tests/integration/pdfmake/basics.spec.js diff --git a/tests/pdfmake/columns_simple.spec.js b/tests/integration/pdfmake/columns_simple.spec.js similarity index 100% rename from tests/pdfmake/columns_simple.spec.js rename to tests/integration/pdfmake/columns_simple.spec.js diff --git a/tests/pdfmake/images.spec.js b/tests/integration/pdfmake/images.spec.js similarity index 99% rename from tests/pdfmake/images.spec.js rename to tests/integration/pdfmake/images.spec.js index f3ce09dcb..274742c80 100644 --- a/tests/pdfmake/images.spec.js +++ b/tests/integration/pdfmake/images.spec.js @@ -1,5 +1,5 @@ var {runDocTest} = require('../helpers'); -var {jpeg: bee} = require('../images/bee'); +var {jpeg: bee} = require('../../images/bee'); describe('pdfmake', function () { test('images', function () { diff --git a/tests/pdfmake/lists.spec.js b/tests/integration/pdfmake/lists.spec.js similarity index 100% rename from tests/pdfmake/lists.spec.js rename to tests/integration/pdfmake/lists.spec.js diff --git a/tests/pdfmake/page_references.spec.js b/tests/integration/pdfmake/page_references.spec.js similarity index 100% rename from tests/pdfmake/page_references.spec.js rename to tests/integration/pdfmake/page_references.spec.js diff --git a/tests/pdfmake/qrcode.spec.js b/tests/integration/pdfmake/qrcode.spec.js similarity index 100% rename from tests/pdfmake/qrcode.spec.js rename to tests/integration/pdfmake/qrcode.spec.js diff --git a/tests/pdfmake/tables.spec.js b/tests/integration/pdfmake/tables.spec.js similarity index 100% rename from tests/pdfmake/tables.spec.js rename to tests/integration/pdfmake/tables.spec.js diff --git a/tests/pdfmake/text_decorations.spec.js b/tests/integration/pdfmake/text_decorations.spec.js similarity index 100% rename from tests/pdfmake/text_decorations.spec.js rename to tests/integration/pdfmake/text_decorations.spec.js diff --git a/tests/pdfmake/toc.spec.js b/tests/integration/pdfmake/toc.spec.js similarity index 100% rename from tests/pdfmake/toc.spec.js rename to tests/integration/pdfmake/toc.spec.js diff --git a/tests/pdfmake/watermark.spec.js b/tests/integration/pdfmake/watermark.spec.js similarity index 99% rename from tests/pdfmake/watermark.spec.js rename to tests/integration/pdfmake/watermark.spec.js index dd5221fe5..366a1b091 100644 --- a/tests/pdfmake/watermark.spec.js +++ b/tests/integration/pdfmake/watermark.spec.js @@ -1,4 +1,3 @@ -jest.mock('../../lib/security'); var {runDocTest} = require('../helpers'); describe('pdfmake', function () { diff --git a/tests/pdfmake/security.spec.js b/tests/integration/security.spec.js similarity index 95% rename from tests/pdfmake/security.spec.js rename to tests/integration/security.spec.js index 5fb9fbde4..6a621194f 100644 --- a/tests/pdfmake/security.spec.js +++ b/tests/integration/security.spec.js @@ -1,5 +1,5 @@ -var {runDocTest} = require('../helpers'); -var PDFDocument = require('../..'); +var {runDocTest} = require('./helpers'); +var PDFDocument = require('../../lib/document').default; var CryptoJS = require('crypto-js'); describe('pdfmake', function () { diff --git a/tests/text.spec.js b/tests/integration/text.spec.js similarity index 100% rename from tests/text.spec.js rename to tests/integration/text.spec.js diff --git a/tests/vector.spec.js b/tests/integration/vector.spec.js similarity index 98% rename from tests/vector.spec.js rename to tests/integration/vector.spec.js index 62d57c47a..4a3161215 100644 --- a/tests/vector.spec.js +++ b/tests/integration/vector.spec.js @@ -1,5 +1,5 @@ var {runDocTest} = require('./helpers'); -var tiger = require('../demo/tiger') +var tiger = require('../../demo/tiger') describe('vector', function () { test('simple shapes', function () { From 6488c534f7c18896cf313a032ccc7245c46c802c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Fri, 21 Dec 2018 19:40:44 -0300 Subject: [PATCH 24/41] Use sync version of zlib deflate method to compress png images --- lib/image/png.js | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/lib/image/png.js b/lib/image/png.js index 394767db9..0e9acfb68 100644 --- a/lib/image/png.js +++ b/lib/image/png.js @@ -114,7 +114,7 @@ class PNGImage { const imgData = new Buffer(pixelCount * colorByteSize); const alphaChannel = new Buffer(pixelCount); - let i = (p = (a = 0)); + let i = p = a = 0; const len = pixels.length; while (i < len) { imgData[p++] = pixels[i++]; @@ -123,22 +123,13 @@ class PNGImage { alphaChannel[a++] = pixels[i++]; } - let done = 0; - zlib.deflate(imgData, (err, imgData1) => { - this.imgData = imgData1; - if (err) { throw err; } - if (++done === 2) { return this.finalize(); } - }); - - return zlib.deflate(alphaChannel, (err, alphaChannel1) => { - this.alphaChannel = alphaChannel1; - if (err) { throw err; } - if (++done === 2) { return this.finalize(); } - }); + this.imgData = zlib.deflateSync(imgData); + this.alphaChannel = zlib.deflateSync(alphaChannel); + return this.finalize(); }); } - loadIndexedAlphaChannel(fn) { + loadIndexedAlphaChannel() { const transparency = this.image.transparency.indexed; return this.image.decodePixels(pixels => { const alphaChannel = new Buffer(this.width * this.height); @@ -148,11 +139,8 @@ class PNGImage { alphaChannel[i++] = transparency[pixels[j]]; } - return zlib.deflate(alphaChannel, (err, alphaChannel1) => { - this.alphaChannel = alphaChannel1; - if (err) { throw err; } - return this.finalize(); - }); + this.alphaChannel = zlib.deflateSync(alphaChannel); + return this.finalize(); }); } } From fe8632befc5c34b21fcc3473bb21db85101cf40d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Fri, 21 Dec 2018 20:22:30 -0300 Subject: [PATCH 25/41] Add png-benchmark demo --- demo/png-benchmark.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 demo/png-benchmark.js diff --git a/demo/png-benchmark.js b/demo/png-benchmark.js new file mode 100644 index 000000000..1f621fe7b --- /dev/null +++ b/demo/png-benchmark.js @@ -0,0 +1,33 @@ +const PDFDocument = require('../'); +const fs = require('fs'); + +const doc = new PDFDocument(); + +// files with alpha channel -> uses zlib.deflate +const files = [ + 'test.png', + 'test3.png' +]; + +const filesData = files.map(fileName => { + return fs.readFileSync(`images/${fileName}`); +}); + +const iterationCount = 100; + +console.time('png-bench') + +for (let i = 0; i < iterationCount; i++) { + filesData.forEach(data => { + doc.image(data) + doc.addPage() + }) +} + +doc.on('data', () => {}) + +doc.on('end', () => { + console.timeEnd('png-bench'); +}); + +doc.end(); \ No newline at end of file From 4e90b87d826adee4e67a14a016b986f2c35e8134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Fri, 21 Dec 2018 20:33:14 -0300 Subject: [PATCH 26/41] Remove setTimeout call in PDFReference.finalize --- lib/reference.js | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/lib/reference.js b/lib/reference.js index 067fcb3ce..f5b7dd116 100644 --- a/lib/reference.js +++ b/lib/reference.js @@ -42,39 +42,36 @@ class PDFReference extends PDFAbstractReference { } finalize() { - return setTimeout(() => { - this.offset = this.document._offset; + this.offset = this.document._offset; - const encryptFn = this.document._security ? this.document._security.getEncryptFn(this.id, this.gen) : null; + const encryptFn = this.document._security ? this.document._security.getEncryptFn(this.id, this.gen) : null; - if (this.buffer.length) { - this.buffer = Buffer.concat(this.buffer); - if (this.compress) { - this.buffer = zlib.deflateSync(this.buffer); - } - - if (encryptFn) { - this.buffer = encryptFn(this.buffer); - } + if (this.buffer.length) { + this.buffer = Buffer.concat(this.buffer); + if (this.compress) { + this.buffer = zlib.deflateSync(this.buffer); + } - this.data.Length = this.buffer.length; + if (encryptFn) { + this.buffer = encryptFn(this.buffer); } - this.document._write(`${this.id} ${this.gen} obj`); - this.document._write(PDFObject.convert(this.data, encryptFn)); + this.data.Length = this.buffer.length; + } - if (this.buffer.length) { - this.document._write('stream'); - this.document._write(this.buffer); + this.document._write(`${this.id} ${this.gen} obj`); + this.document._write(PDFObject.convert(this.data, encryptFn)); - this.buffer = []; // free up memory - this.document._write('\nendstream'); - } + if (this.buffer.length) { + this.document._write('stream'); + this.document._write(this.buffer); - this.document._write('endobj'); - return this.document._refEnd(this); + this.buffer = []; // free up memory + this.document._write('\nendstream'); } - , 0); + + this.document._write('endobj'); + this.document._refEnd(this); } toString() { return `${this.id} ${this.gen} R`; From 52c3b45e2e1e0a8ca2a85b18b9a5c052c6dd310f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Fri, 21 Dec 2018 20:50:22 -0300 Subject: [PATCH 27/41] Use property getter to define PDFPage lazy dictionaries --- lib/page.js | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/lib/page.js b/lib/page.js index bff680c8d..5c8e9ea8b 100644 --- a/lib/page.js +++ b/lib/page.js @@ -95,25 +95,6 @@ class PDFPage { this.resources = this.document.ref({ ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']}); - // Lazily create these dictionaries - Object.defineProperties(this, { - fonts: { - get: () => this.resources.data.Font != null ? this.resources.data.Font : (this.resources.data.Font = {}) - }, - xobjects: { - get: () => this.resources.data.XObject != null ? this.resources.data.XObject : (this.resources.data.XObject = {}) - }, - ext_gstates: { - get: () => this.resources.data.ExtGState != null ? this.resources.data.ExtGState : (this.resources.data.ExtGState = {}) - }, - patterns: { - get: () => this.resources.data.Pattern != null ? this.resources.data.Pattern : (this.resources.data.Pattern = {}) - }, - annotations: { - get: () => this.dictionary.data.Annots != null ? this.dictionary.data.Annots : (this.dictionary.data.Annots = []) - } - }); - // The page dictionary this.dictionary = this.document.ref({ Type: 'Page', @@ -123,6 +104,32 @@ class PDFPage { Resources: this.resources }); } + + // Lazily create these dictionaries + get fonts() { + const data = this.resources.data; + return data.Font != null ? data.Font : (data.Font = {}); + } + + get xobjects() { + const data = this.resources.data; + return data.XObject != null ? data.XObject : (data.XObject = {}); + } + + get ext_gstates() { + const data = this.resources.data; + return data.ExtGState != null ? data.ExtGState : (data.ExtGState = {}); + } + + get patterns() { + const data = this.resources.data; + return data.Pattern != null ? data.Pattern : (data.Pattern = {}); + } + + get annotations() { + const data = this.dictionary.data; + return data.Annots != null ? data.Annots : (data.Annots = []); + } maxY() { return this.height - this.margins.bottom; From f2208a7c20efb391ae7fff7ac3852012eee5a63c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Fri, 21 Dec 2018 23:40:50 -0300 Subject: [PATCH 28/41] Add png unit tests --- tests/images/fish.png | Bin 0 -> 10000 bytes tests/unit/png.spec.js | 170 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 tests/images/fish.png create mode 100644 tests/unit/png.spec.js diff --git a/tests/images/fish.png b/tests/images/fish.png new file mode 100644 index 0000000000000000000000000000000000000000..fca79c0b06215d1c416b5cd9efa868f5cb9fe365 GIT binary patch literal 10000 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 { + let document; + + const createImage = fileName => { + const img = new PNGImage(fs.readFileSync(fileName), "I1"); + // noop data manipulation methods + img.loadIndexedAlphaChannel = () => { + if (img.image.hasAlphaChannel) { + img.alphaChannel = {}; + } + }; + img.splitAlphaChannel = () => { + if (img.image.hasAlphaChannel) { + img.alphaChannel = {}; + } + }; + img.embed(document); + img.finalize(); + return img; + }; + + beforeEach(() => { + document = new PDFDocument(); + }); + + test("RGB", () => { + // ImageWidth = 400 + // ImageHeight = 533 + // BitDepth = 8 + // ColorType = 2 (RGB) + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./demo/images/test2.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: "DeviceRGB", + Filter: "FlateDecode", + Height: 533, + Length: 397011, + Subtype: "Image", + Type: "XObject", + Width: 400, + DecodeParms: expect.any(PDFReference) + }); + + expect(img.obj.data.DecodeParms.data).toMatchObject({ + BitsPerComponent: 8, + Colors: 3, + Columns: 400, + Predictor: 15 + }); + }); + + test("RGB with Alpha", () => { + // ImageWidth = 409 + // ImageHeight = 400 + // BitDepth = 8 + // ColorType = 6 (RGB with Alpha) + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./tests/images/bee.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: "DeviceRGB", + Filter: "FlateDecode", + Height: 400, + Length: 47715, + Subtype: "Image", + Type: "XObject", + Width: 409, + SMask: expect.any(PDFReference) + }); + + expect(img.obj.data.SMask.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: "DeviceGray", + Decode: [ + 0, + 1 + ], + Filter: "FlateDecode", + Height: 400, + Length: 16, + Subtype: "Image", + Type: "XObject", + Width: 409, + }); + }); + + test("Pallete", () => { + // ImageWidth = 980 + // ImageHeight = 540 + // BitDepth = 8 + // ColorType = 3 (Pallete) + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./demo/images/test3.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: ["Indexed", "DeviceRGB", 255, expect.any(PDFReference)], + Filter: "FlateDecode", + Height: 540, + Length: 56682, + Subtype: "Image", + Type: "XObject", + Width: 980, + DecodeParms: expect.any(PDFReference) + }); + + expect(img.obj.data.DecodeParms.data).toMatchObject({ + BitsPerComponent: 8, + Colors: 1, + Columns: 980, + Predictor: 15 + }); + }); + + test("Grayscale with Alpha", () => { + // ImageWidth = 112 + // ImageHeight = 112 + // BitDepth = 8 + // ColorType = 4 (Grayscale with Alpha) + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./tests/images/fish.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: "DeviceGray", + Filter: "FlateDecode", + Height: 112, + Length: 9922, + Subtype: "Image", + Type: "XObject", + Width: 112, + SMask: expect.any(PDFReference) + }); + + expect(img.obj.data.SMask.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: "DeviceGray", + Decode: [ + 0, + 1 + ], + Filter: "FlateDecode", + Height: 112, + Length: 16, + Subtype: "Image", + Type: "XObject", + Width: 112, + }); + }); +}); From faad6e82dbb0990c6dc4262a142e48bfed6b6fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Sat, 22 Dec 2018 22:21:42 -0300 Subject: [PATCH 29/41] Fix defining Mask for grayscale transparent PNG files --- lib/image/png.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/image/png.js b/lib/image/png.js index 0e9acfb68..0b60cfaab 100644 --- a/lib/image/png.js +++ b/lib/image/png.js @@ -49,10 +49,10 @@ class PNGImage { // For PNG color types 0, 2 and 3, the transparency data is stored in // a dedicated PNG chunk. - if (this.image.transparency.grayscale) { + if (this.image.transparency.grayscale != null) { // Use Color Key Masking (spec section 4.8.5) // An array with N elements, where N is two times the number of color components. - const val = this.image.transparency.greyscale; + const val = this.image.transparency.grayscale; return this.obj.data['Mask'] = [val, val]; } else if (this.image.transparency.rgb) { From 7c6134aa4e27a39437a3976cad90c1e46f60316e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Sat, 22 Dec 2018 22:45:13 -0300 Subject: [PATCH 30/41] Add new png tests --- tests/images/glassware-noisy.png | Bin 0 -> 82829 bytes .../pngsuite-gray-transparent-black.png | Bin 0 -> 429 bytes .../pngsuite-gray-transparent-white.png | Bin 0 -> 1313 bytes .../pngsuite-palette-transparent-white.png | Bin 0 -> 1496 bytes .../images/pngsuite-rgb-transparent-white.png | Bin 0 -> 2041 bytes tests/unit/png.spec.js | 169 +++++++++++++++++- 6 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 tests/images/glassware-noisy.png create mode 100644 tests/images/pngsuite-gray-transparent-black.png create mode 100644 tests/images/pngsuite-gray-transparent-white.png create mode 100644 tests/images/pngsuite-palette-transparent-white.png create mode 100644 tests/images/pngsuite-rgb-transparent-white.png diff --git a/tests/images/glassware-noisy.png b/tests/images/glassware-noisy.png new file mode 100644 index 0000000000000000000000000000000000000000..f4261631180e9cf66ded3fe76e874af31ccc4ca2 GIT binary patch literal 82829 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 literal 0 HcmV?d00001 diff --git a/tests/images/pngsuite-gray-transparent-black.png b/tests/images/pngsuite-gray-transparent-black.png new file mode 100644 index 0000000000000000000000000000000000000000..39a7050d27af28f3bcb7bfc6b071cae91f8c091b GIT binary patch literal 429 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 { const img = new PNGImage(fs.readFileSync(fileName), "I1"); // noop data manipulation methods img.loadIndexedAlphaChannel = () => { - if (img.image.hasAlphaChannel) { + if (img.image.transparency.indexed) { img.alphaChannel = {}; } }; @@ -59,6 +59,38 @@ describe("PNGImage", () => { }); }); + test("RGB white transparent", () => { + // ImageWidth = 32 + // ImageHeight = 32 + // BitDepth = 16 + // ColorType = 2 + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./tests/images/pngsuite-rgb-transparent-white.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 16, + ColorSpace: "DeviceRGB", + Filter: "FlateDecode", + Height: 32, + Length: 1932, + Subtype: "Image", + Type: "XObject", + Width: 32, + Mask: [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + DecodeParms: expect.any(PDFReference) + }); + + expect(img.obj.data.DecodeParms.data).toMatchObject({ + BitsPerComponent: 16, + Colors: 3, + Columns: 32, + Predictor: 15 + }); + }); + test("RGB with Alpha", () => { // ImageWidth = 409 // ImageHeight = 400 @@ -129,6 +161,141 @@ describe("PNGImage", () => { }); }); + test("Pallete indexed transparency", () => { + // ImageWidth = 32 + // ImageHeight = 32 + // BitDepth = 8 + // ColorType = 3 + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./tests/images/pngsuite-palette-transparent-white.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: ["Indexed", "DeviceRGB", 244, expect.any(PDFReference)], + Filter: "FlateDecode", + Height: 32, + Length: 650, + Subtype: "Image", + Type: "XObject", + Width: 32, + DecodeParms: expect.any(PDFReference), + SMask: expect.any(PDFReference), + }); + + expect(img.obj.data.DecodeParms.data).toMatchObject({ + BitsPerComponent: 8, + Colors: 1, + Columns: 32, + Predictor: 15 + }); + + expect(img.obj.data.SMask.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: "DeviceGray", + Decode: [ + 0, + 1 + ], + Filter: "FlateDecode", + Height: 32, + Length: 16, + Subtype: "Image", + Type: "XObject", + Width: 32, + }); + }); + + test("Grayscale", () => { + // ImageWidth = 428 + // ImageHeight = 320 + // BitDepth = 8 + // ColorType = 0 + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./tests/images/glassware-noisy.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: "DeviceGray", + Filter: "FlateDecode", + Height: 428, + Length: 82633, + Subtype: "Image", + Type: "XObject", + Width: 320, + DecodeParms: expect.any(PDFReference), + }); + }); + + test("Grayscale black transparent", () => { + // ImageWidth = 32 + // ImageHeight = 32 + // BitDepth = 4 + // ColorType = 0 + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./tests/images/pngsuite-gray-transparent-black.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 4, + ColorSpace: "DeviceGray", + Filter: "FlateDecode", + Height: 32, + Length: 328, + Subtype: "Image", + Type: "XObject", + Width: 32, + Mask: [0, 0], + DecodeParms: expect.any(PDFReference), + }); + + expect(img.obj.data.DecodeParms.data).toMatchObject({ + BitsPerComponent: 4, + Colors: 1, + Columns: 32, + Predictor: 15 + }); + }); + + test("Grayscale white transparent", () => { + // ImageWidth = 32 + // ImageHeight = 32 + // BitDepth = 16 + // ColorType = 0 + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./tests/images/pngsuite-gray-transparent-white.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 16, + ColorSpace: "DeviceGray", + Filter: "FlateDecode", + Height: 32, + Length: 1212, + Subtype: "Image", + Type: "XObject", + Width: 32, + Mask: [255, 255], + DecodeParms: expect.any(PDFReference), + }); + + expect(img.obj.data.DecodeParms.data).toMatchObject({ + BitsPerComponent: 16, + Colors: 1, + Columns: 32, + Predictor: 15 + }); + }); + test("Grayscale with Alpha", () => { // ImageWidth = 112 // ImageHeight = 112 From ffdda49bd63c0a50a9c1ea1789f0ee838424b79d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Sun, 23 Dec 2018 00:44:10 -0300 Subject: [PATCH 31/41] Fix grayscale PNG images with alpha channel --- lib/image/png.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/image/png.js b/lib/image/png.js index 0b60cfaab..c61eb6305 100644 --- a/lib/image/png.js +++ b/lib/image/png.js @@ -109,7 +109,8 @@ class PNGImage { splitAlphaChannel() { return this.image.decodePixels(pixels => { let a, p; - const colorByteSize = (this.image.colors * this.image.bits) / 8; + const colorCount = this.image.colors; + const colorByteSize = (colorCount * this.image.bits) / 8; const pixelCount = this.width * this.height; const imgData = new Buffer(pixelCount * colorByteSize); const alphaChannel = new Buffer(pixelCount); @@ -117,9 +118,9 @@ class PNGImage { let i = p = a = 0; const len = pixels.length; while (i < len) { - imgData[p++] = pixels[i++]; - imgData[p++] = pixels[i++]; - imgData[p++] = pixels[i++]; + pixels.copy(imgData, p, i, i + colorCount); + p += colorCount; + i += colorCount; alphaChannel[a++] = pixels[i++]; } From acbeceb2b3bbdad3102b2cb0c2dadbf8fbfee8a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Sun, 23 Dec 2018 20:30:40 -0300 Subject: [PATCH 32/41] Use a loop to copy png image data instead of Buffer.copy --- lib/image/png.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/image/png.js b/lib/image/png.js index c61eb6305..7338c9b25 100644 --- a/lib/image/png.js +++ b/lib/image/png.js @@ -118,9 +118,9 @@ class PNGImage { let i = p = a = 0; const len = pixels.length; while (i < len) { - pixels.copy(imgData, p, i, i + colorCount); - p += colorCount; - i += colorCount; + for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) { + imgData[p++] = pixels[i++]; + } alphaChannel[a++] = pixels[i++]; } From b7edc733189491240af16de44d0e48f5692e8418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Sun, 23 Dec 2018 22:16:21 -0300 Subject: [PATCH 33/41] Fix 16bit png files with alpha channel --- lib/image/png.js | 33 ++++++++++++++++++++---------- tests/images/straight.png | Bin 0 -> 28630 bytes tests/unit/png.spec.js | 41 +++++++++++++++++++++++++++++++++++++- 3 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 tests/images/straight.png diff --git a/lib/image/png.js b/lib/image/png.js index 7338c9b25..8c1ad045e 100644 --- a/lib/image/png.js +++ b/lib/image/png.js @@ -15,16 +15,18 @@ class PNGImage { this.document = document; if (this.obj) { return; } + const hasAlphaChannel = this.image.hasAlphaChannel; + this.obj = this.document.ref({ Type: 'XObject', Subtype: 'Image', - BitsPerComponent: this.image.bits, + BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits, Width: this.width, Height: this.height, Filter: 'FlateDecode' }); - if (!this.image.hasAlphaChannel) { + if (!hasAlphaChannel) { const params = this.document.ref({ Predictor: 15, Colors: this.image.colors, @@ -71,7 +73,7 @@ class PNGImage { // in the PLTE and tRNS sections. See below for details on SMasks. return this.loadIndexedAlphaChannel(); - } else if (this.image.hasAlphaChannel) { + } else if (hasAlphaChannel) { // For PNG color types 4 and 6, the transparency data is stored as a alpha // channel mixed in with the main image data. Separate this data out into an // SMask object and store it separately in the PDF. @@ -110,18 +112,29 @@ class PNGImage { return this.image.decodePixels(pixels => { let a, p; const colorCount = this.image.colors; - const colorByteSize = (colorCount * this.image.bits) / 8; const pixelCount = this.width * this.height; - const imgData = new Buffer(pixelCount * colorByteSize); - const alphaChannel = new Buffer(pixelCount); + const imgData = new Buffer(pixelCount * colorCount); + const alphaChannel = new Buffer(pixelCount); let i = p = a = 0; const len = pixels.length; - while (i < len) { - for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) { - imgData[p++] = pixels[i++]; + if (this.image.bits === 8) { + while (i < len) { + for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) { + imgData[p++] = pixels[i++]; + } + alphaChannel[a++] = pixels[i++]; + } + } else { + // copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first) + while (i < len) { + for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) { + imgData[p++] = pixels[i++]; + i++; + } + alphaChannel[a++] = pixels[i++]; + i++; } - alphaChannel[a++] = pixels[i++]; } this.imgData = zlib.deflateSync(imgData); diff --git a/tests/images/straight.png b/tests/images/straight.png new file mode 100644 index 0000000000000000000000000000000000000000..12347fc25480f51c37822c16415cad7ecef64b0e GIT binary patch literal 28630 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 literal 0 HcmV?d00001 diff --git a/tests/unit/png.spec.js b/tests/unit/png.spec.js index 19dcb3089..cb9d327bd 100644 --- a/tests/unit/png.spec.js +++ b/tests/unit/png.spec.js @@ -91,7 +91,7 @@ describe("PNGImage", () => { }); }); - test("RGB with Alpha", () => { + test("RGB (8bit) with Alpha", () => { // ImageWidth = 409 // ImageHeight = 400 // BitDepth = 8 @@ -130,6 +130,45 @@ describe("PNGImage", () => { }); }); + test("RGB (16bit) with Alpha", () => { + // ImageWidth = 175 + // ImageHeight = 65 + // BitDepth = 16 + // ColorType = 6 + // Compression = 0 + // Filter = 0 + // Interlace = 0 + + const img = createImage("./tests/images/straight.png"); + + expect(img.obj.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: "DeviceRGB", + Filter: "FlateDecode", + Height: 65, + Length: 28537, + Subtype: "Image", + Type: "XObject", + Width: 175, + SMask: expect.any(PDFReference) + }); + + expect(img.obj.data.SMask.data).toMatchObject({ + BitsPerComponent: 8, + ColorSpace: "DeviceGray", + Decode: [ + 0, + 1 + ], + Filter: "FlateDecode", + Height: 65, + Length: 16, + Subtype: "Image", + Type: "XObject", + Width: 175, + }); + }); + test("Pallete", () => { // ImageWidth = 980 // ImageHeight = 540 From dfb5f932ead2ebf0f2addc37c4991e09e3f532a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Am=C3=A9rico?= Date: Mon, 24 Dec 2018 09:02:25 -0300 Subject: [PATCH 34/41] Avoid code duplication in copy image data routine --- lib/image/png.js | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/lib/image/png.js b/lib/image/png.js index 8c1ad045e..01746ef56 100644 --- a/lib/image/png.js +++ b/lib/image/png.js @@ -118,23 +118,15 @@ class PNGImage { let i = p = a = 0; const len = pixels.length; - if (this.image.bits === 8) { - while (i < len) { - for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) { - imgData[p++] = pixels[i++]; - } - alphaChannel[a++] = pixels[i++]; - } - } else { - // copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first) - while (i < len) { - for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) { - imgData[p++] = pixels[i++]; - i++; - } - alphaChannel[a++] = pixels[i++]; - i++; + // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first) + const skipByteCount = this.image.bits === 16 ? 1 : 0; + while (i < len) { + for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) { + imgData[p++] = pixels[i++]; + i += skipByteCount; } + alphaChannel[a++] = pixels[i++]; + i += skipByteCount; } this.imgData = zlib.deflateSync(imgData); From ea7927c67a9747aada6d77534f487db07b6ddc66 Mon Sep 17 00:00:00 2001 From: Ry Jones Date: Tue, 25 Dec 2018 18:41:49 -0800 Subject: [PATCH 35/41] Remove outdated Gratipay reference (#896) Signed-off-by: Ry Jones --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index a69cbe571..39f3cb656 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ A JavaScript PDF generation library for Node and the browser. -[![](https://img.shields.io/gratipay/devongovett.svg)](https://gratipay.com/devongovett) - ## Description PDFKit is a PDF document generation library for Node and the browser that makes creating complex, multi-page, printable documents easy. From 147ebfd332c3a5b948fe5fea69ebc0bfca9f5ad3 Mon Sep 17 00:00:00 2001 From: Diego Muracciole Date: Fri, 28 Dec 2018 12:50:37 -0300 Subject: [PATCH 36/41] Rename src to lib (compatible to fork) --- {src => lib}/data.js | 0 {src => lib}/document.js | 0 {src => lib}/font.js | 0 {src => lib}/font/afm.js | 0 {src => lib}/font/data/Courier-Bold.afm | 0 {src => lib}/font/data/Courier-BoldOblique.afm | 0 {src => lib}/font/data/Courier-Oblique.afm | 0 {src => lib}/font/data/Courier.afm | 0 {src => lib}/font/data/Helvetica-Bold.afm | 0 {src => lib}/font/data/Helvetica-BoldOblique.afm | 0 {src => lib}/font/data/Helvetica-Oblique.afm | 0 {src => lib}/font/data/Helvetica.afm | 0 {src => lib}/font/data/Times-Bold.afm | 0 {src => lib}/font/data/Times-BoldItalic.afm | 0 {src => lib}/font/data/Times-Italic.afm | 0 {src => lib}/font/data/Times-Roman.afm | 0 {src => lib}/font/data/Zap.afm | 0 {src => lib}/font/data/compressData.js | 0 {src => lib}/font/embedded.js | 0 {src => lib}/font/standard.js | 0 {src => lib}/image.js | 0 {src => lib}/image/jpeg.js | 0 {src => lib}/image/png.js | 0 {src => lib}/index.js | 0 {src => lib}/mixins/annotations.js | 0 {src => lib}/mixins/color.js | 0 {src => lib}/mixins/fonts.js | 0 {src => lib}/mixins/images.js | 0 {src => lib}/mixins/text.js | 0 {src => lib}/mixins/vector.js | 0 {src => lib}/object.js | 0 {src => lib}/page.js | 0 {src => lib}/path.js | 0 {src => lib}/reference.js | 0 {src => lib}/utils/range.js | 0 package.json | 4 ++-- rollup.config.js | 2 +- 37 files changed, 3 insertions(+), 3 deletions(-) rename {src => lib}/data.js (100%) rename {src => lib}/document.js (100%) rename {src => lib}/font.js (100%) rename {src => lib}/font/afm.js (100%) rename {src => lib}/font/data/Courier-Bold.afm (100%) rename {src => lib}/font/data/Courier-BoldOblique.afm (100%) rename {src => lib}/font/data/Courier-Oblique.afm (100%) rename {src => lib}/font/data/Courier.afm (100%) rename {src => lib}/font/data/Helvetica-Bold.afm (100%) rename {src => lib}/font/data/Helvetica-BoldOblique.afm (100%) rename {src => lib}/font/data/Helvetica-Oblique.afm (100%) rename {src => lib}/font/data/Helvetica.afm (100%) rename {src => lib}/font/data/Times-Bold.afm (100%) rename {src => lib}/font/data/Times-BoldItalic.afm (100%) rename {src => lib}/font/data/Times-Italic.afm (100%) rename {src => lib}/font/data/Times-Roman.afm (100%) rename {src => lib}/font/data/Zap.afm (100%) rename {src => lib}/font/data/compressData.js (100%) rename {src => lib}/font/embedded.js (100%) rename {src => lib}/font/standard.js (100%) rename {src => lib}/image.js (100%) rename {src => lib}/image/jpeg.js (100%) rename {src => lib}/image/png.js (100%) rename {src => lib}/index.js (100%) rename {src => lib}/mixins/annotations.js (100%) rename {src => lib}/mixins/color.js (100%) rename {src => lib}/mixins/fonts.js (100%) rename {src => lib}/mixins/images.js (100%) rename {src => lib}/mixins/text.js (100%) rename {src => lib}/mixins/vector.js (100%) rename {src => lib}/object.js (100%) rename {src => lib}/page.js (100%) rename {src => lib}/path.js (100%) rename {src => lib}/reference.js (100%) rename {src => lib}/utils/range.js (100%) diff --git a/src/data.js b/lib/data.js similarity index 100% rename from src/data.js rename to lib/data.js diff --git a/src/document.js b/lib/document.js similarity index 100% rename from src/document.js rename to lib/document.js diff --git a/src/font.js b/lib/font.js similarity index 100% rename from src/font.js rename to lib/font.js diff --git a/src/font/afm.js b/lib/font/afm.js similarity index 100% rename from src/font/afm.js rename to lib/font/afm.js diff --git a/src/font/data/Courier-Bold.afm b/lib/font/data/Courier-Bold.afm similarity index 100% rename from src/font/data/Courier-Bold.afm rename to lib/font/data/Courier-Bold.afm diff --git a/src/font/data/Courier-BoldOblique.afm b/lib/font/data/Courier-BoldOblique.afm similarity index 100% rename from src/font/data/Courier-BoldOblique.afm rename to lib/font/data/Courier-BoldOblique.afm diff --git a/src/font/data/Courier-Oblique.afm b/lib/font/data/Courier-Oblique.afm similarity index 100% rename from src/font/data/Courier-Oblique.afm rename to lib/font/data/Courier-Oblique.afm diff --git a/src/font/data/Courier.afm b/lib/font/data/Courier.afm similarity index 100% rename from src/font/data/Courier.afm rename to lib/font/data/Courier.afm diff --git a/src/font/data/Helvetica-Bold.afm b/lib/font/data/Helvetica-Bold.afm similarity index 100% rename from src/font/data/Helvetica-Bold.afm rename to lib/font/data/Helvetica-Bold.afm diff --git a/src/font/data/Helvetica-BoldOblique.afm b/lib/font/data/Helvetica-BoldOblique.afm similarity index 100% rename from src/font/data/Helvetica-BoldOblique.afm rename to lib/font/data/Helvetica-BoldOblique.afm diff --git a/src/font/data/Helvetica-Oblique.afm b/lib/font/data/Helvetica-Oblique.afm similarity index 100% rename from src/font/data/Helvetica-Oblique.afm rename to lib/font/data/Helvetica-Oblique.afm diff --git a/src/font/data/Helvetica.afm b/lib/font/data/Helvetica.afm similarity index 100% rename from src/font/data/Helvetica.afm rename to lib/font/data/Helvetica.afm diff --git a/src/font/data/Times-Bold.afm b/lib/font/data/Times-Bold.afm similarity index 100% rename from src/font/data/Times-Bold.afm rename to lib/font/data/Times-Bold.afm diff --git a/src/font/data/Times-BoldItalic.afm b/lib/font/data/Times-BoldItalic.afm similarity index 100% rename from src/font/data/Times-BoldItalic.afm rename to lib/font/data/Times-BoldItalic.afm diff --git a/src/font/data/Times-Italic.afm b/lib/font/data/Times-Italic.afm similarity index 100% rename from src/font/data/Times-Italic.afm rename to lib/font/data/Times-Italic.afm diff --git a/src/font/data/Times-Roman.afm b/lib/font/data/Times-Roman.afm similarity index 100% rename from src/font/data/Times-Roman.afm rename to lib/font/data/Times-Roman.afm diff --git a/src/font/data/Zap.afm b/lib/font/data/Zap.afm similarity index 100% rename from src/font/data/Zap.afm rename to lib/font/data/Zap.afm diff --git a/src/font/data/compressData.js b/lib/font/data/compressData.js similarity index 100% rename from src/font/data/compressData.js rename to lib/font/data/compressData.js diff --git a/src/font/embedded.js b/lib/font/embedded.js similarity index 100% rename from src/font/embedded.js rename to lib/font/embedded.js diff --git a/src/font/standard.js b/lib/font/standard.js similarity index 100% rename from src/font/standard.js rename to lib/font/standard.js diff --git a/src/image.js b/lib/image.js similarity index 100% rename from src/image.js rename to lib/image.js diff --git a/src/image/jpeg.js b/lib/image/jpeg.js similarity index 100% rename from src/image/jpeg.js rename to lib/image/jpeg.js diff --git a/src/image/png.js b/lib/image/png.js similarity index 100% rename from src/image/png.js rename to lib/image/png.js diff --git a/src/index.js b/lib/index.js similarity index 100% rename from src/index.js rename to lib/index.js diff --git a/src/mixins/annotations.js b/lib/mixins/annotations.js similarity index 100% rename from src/mixins/annotations.js rename to lib/mixins/annotations.js diff --git a/src/mixins/color.js b/lib/mixins/color.js similarity index 100% rename from src/mixins/color.js rename to lib/mixins/color.js diff --git a/src/mixins/fonts.js b/lib/mixins/fonts.js similarity index 100% rename from src/mixins/fonts.js rename to lib/mixins/fonts.js diff --git a/src/mixins/images.js b/lib/mixins/images.js similarity index 100% rename from src/mixins/images.js rename to lib/mixins/images.js diff --git a/src/mixins/text.js b/lib/mixins/text.js similarity index 100% rename from src/mixins/text.js rename to lib/mixins/text.js diff --git a/src/mixins/vector.js b/lib/mixins/vector.js similarity index 100% rename from src/mixins/vector.js rename to lib/mixins/vector.js diff --git a/src/object.js b/lib/object.js similarity index 100% rename from src/object.js rename to lib/object.js diff --git a/src/page.js b/lib/page.js similarity index 100% rename from src/page.js rename to lib/page.js diff --git a/src/path.js b/lib/path.js similarity index 100% rename from src/path.js rename to lib/path.js diff --git a/src/reference.js b/lib/reference.js similarity index 100% rename from src/reference.js rename to lib/reference.js diff --git a/src/utils/range.js b/lib/utils/range.js similarity index 100% rename from src/utils/range.js rename to lib/utils/range.js diff --git a/package.json b/package.json index fc21ef698..aece111b2 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,8 @@ "scripts": { "build": "rimraf ./dist && rollup -c", "prepublish": "npm run build", - "prebuild": "node ./src/font/data/compressData.js", - "postbuild": "rimraf ./src/font/data/*.b64.afm" + "prebuild": "node ./lib/font/data/compressData.js", + "postbuild": "rimraf ./lib/font/data/*.b64.afm" }, "files": [ "dist" diff --git a/rollup.config.js b/rollup.config.js index 25b785d6b..17c73a1fa 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -21,7 +21,7 @@ const getCJS = override => Object.assign({}, cjs, override) const getESM = override => Object.assign({}, esm, override) const configBase = { - input: 'src/index.js', + input: 'lib/index.js', plugins: [ nodeResolve(), json(), From 5f425128e74f0dcdd46551d7690db36d408450c8 Mon Sep 17 00:00:00 2001 From: Diego Muracciole Date: Sat, 29 Dec 2018 17:19:17 -0300 Subject: [PATCH 37/41] Apply changes needed for react-pdf --- .gitignore | 1 + lib/font.js | 2 +- lib/font/embedded.js | 384 ++++++++++++++-------------- lib/font/standard.js | 94 ++++--- lib/font_factory.js | 5 +- lib/index.js | 1 + lib/mixins/text.js | 584 ++++++++++++++++++++++++++++--------------- 7 files changed, 644 insertions(+), 427 deletions(-) diff --git a/.gitignore b/.gitignore index da6ea9a85..afd204472 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ lib/font/tables/.DS_Store .DS_Store /node_modules/ +/tests/ node-zlib/ playground/ build/ diff --git a/lib/font.js b/lib/font.js index c30c88226..f91e8ccd2 100644 --- a/lib/font.js +++ b/lib/font.js @@ -1,4 +1,4 @@ -class PDFFont { +export class PDFFont { constructor() { } diff --git a/lib/font/embedded.js b/lib/font/embedded.js index 881e27067..27ba28d0c 100644 --- a/lib/font/embedded.js +++ b/lib/font/embedded.js @@ -1,211 +1,234 @@ -import PDFFont from '../font'; +import PDFFont from '../font' const toHex = function(num) { - return (`0000${num.toString(16)}`).slice(-4); -}; + return `0000${num.toString(16)}`.slice(-4) +} class EmbeddedFont extends PDFFont { - constructor(document, font, id) { - super(); - this.document = document; - this.font = font; - this.id = id; - this.subset = this.font.createSubset(); - this.unicode = [[0]]; - this.widths = [this.font.getGlyph(0).advanceWidth]; - - this.name = this.font.postscriptName; - this.scale = 1000 / this.font.unitsPerEm; - this.ascender = this.font.ascent * this.scale; - this.descender = this.font.descent * this.scale; - this.xHeight = this.font.xHeight * this.scale; - this.capHeight = this.font.capHeight * this.scale; - this.lineGap = this.font.lineGap * this.scale; - this.bbox = this.font.bbox; - - this.layoutCache = Object.create(null); - } - - layoutRun(text, features) { - const run = this.font.layout(text, features); - - // Normalize position values - for (let i = 0; i < run.positions.length; i++) { - const position = run.positions[i]; - for (let key in position) { - position[key] *= this.scale; - } - - position.advanceWidth = run.glyphs[i].advanceWidth * this.scale; + constructor(document, font, id) { + super() + this.document = document + this.font = font + this.id = id + this.subset = this.font.createSubset() + this.unicode = [[0]] + this.widths = [this.font.getGlyph(0).advanceWidth] + + this.name = this.font.postscriptName + this.scale = 1000 / this.font.unitsPerEm + this.ascender = this.font.ascent * this.scale + this.descender = this.font.descent * this.scale + this.xHeight = this.font.xHeight * this.scale + this.capHeight = this.font.capHeight * this.scale + this.lineGap = this.font.lineGap * this.scale + this.bbox = this.font.bbox + + this.layoutCache = Object.create(null) + } + + layoutRun(text, features) { + const run = this.font.layout(text, features) + + // Normalize position values + for (let i = 0; i < run.positions.length; i++) { + const position = run.positions[i] + for (let key in position) { + position[key] *= this.scale } - return run; + position.advanceWidth = run.glyphs[i].advanceWidth * this.scale } - layoutCached(text) { - let cached; - if (cached = this.layoutCache[text]) { - return cached; - } + return run + } - const run = this.layoutRun(text); - this.layoutCache[text] = run; - return run; + layoutCached(text) { + let cached + if ((cached = this.layoutCache[text])) { + return cached } - layout(text, features, onlyWidth) { - // Skip the cache if any user defined features are applied - if (onlyWidth == null) { onlyWidth = false; } - if (features) { - return this.layoutRun(text, features); - } + const run = this.layoutRun(text) + this.layoutCache[text] = run + return run + } + + layout(text, features, onlyWidth) { + // Skip the cache if any user defined features are applied + if (onlyWidth == null) { + onlyWidth = false + } + if (features) { + return this.layoutRun(text, features) + } - const glyphs = onlyWidth ? null : []; - const positions = onlyWidth ? null : []; - let advanceWidth = 0; - - // Split the string by words to increase cache efficiency. - // For this purpose, spaces and tabs are a good enough delimeter. - let last = 0; - let index = 0; - while (index <= text.length) { - var needle; - - if (((index === text.length) && (last < index)) || (needle = text.charAt(index), [' ', '\t'].includes(needle))) { - const run = this.layoutCached(text.slice(last, ++index)); - if (!onlyWidth) { - glyphs.push(...(run.glyphs || [])); - positions.push(...(run.positions || [])); - } - - advanceWidth += run.advanceWidth; - last = index; - } else { - index++; + const glyphs = onlyWidth ? null : [] + const positions = onlyWidth ? null : [] + let advanceWidth = 0 + + // Split the string by words to increase cache efficiency. + // For this purpose, spaces and tabs are a good enough delimeter. + let last = 0 + let index = 0 + while (index <= text.length) { + var needle + + if ((index === text.length && last < index) || ((needle = text.charAt(index)), [' ', '\t'].includes(needle))) { + const run = this.layoutCached(text.slice(last, ++index)) + if (!onlyWidth) { + glyphs.push(...(run.glyphs || [])) + positions.push(...(run.positions || [])) } - } - return {glyphs, positions, advanceWidth}; + advanceWidth += run.advanceWidth + last = index + } else { + index++ + } } - encode(text, features) { - const {glyphs, positions} = this.layout(text, features); + return { glyphs, positions, advanceWidth } + } - const res = []; - for (let i = 0; i < glyphs.length; i++) { - const glyph = glyphs[i]; - const gid = this.subset.includeGlyph(glyph.id); + encode(text, features) { + const { glyphs, positions } = this.layout(text, features) + const res = this.encodeGlyphs(glyphs) - res.push((`0000${gid.toString(16)}`).slice(-4)); + return [res, positions] + } - if (this.widths[gid] == null) { this.widths[gid] = glyph.advanceWidth * this.scale; } - if (this.unicode[gid] == null) { this.unicode[gid] = glyph.codePoints; } - } + encodeGlyphs(glyphs) { + const res = [] + for (let i = 0; i < glyphs.length; i++) { + const glyph = glyphs[i] + const gid = this.subset.includeGlyph(glyph.id) - return [res, positions]; + res.push(`0000${gid.toString(16)}`.slice(-4)) + + if (this.widths[gid] == null) { + this.widths[gid] = glyph.advanceWidth * this.scale + } + if (this.unicode[gid] == null) { + this.unicode[gid] = glyph.codePoints + } } - widthOfString(string, size, features) { - const width = this.layout(string, features, true).advanceWidth; - const scale = size / 1000; - return width * scale; + return res + } + + widthOfString(string, size, features) { + const width = this.layout(string, features, true).advanceWidth + const scale = size / 1000 + return width * scale + } + + embed() { + const isCFF = this.subset.cff != null + const fontFile = this.document.ref() + + if (isCFF) { + fontFile.data.Subtype = 'CIDFontType0C' } - embed() { - const fontFile = this.document.ref(); + this.subset + .encodeStream() + .on('data', data => fontFile.write(data)) + .on('end', () => fontFile.end()) - if (isCFF) { - fontFile.data.Subtype = 'CIDFontType0C'; - } + const familyClass = ((this.font['OS/2'] != null ? this.font['OS/2'].sFamilyClass : undefined) || 0) >> 8 + let flags = 0 + if (this.font.post.isFixedPitch) { + flags |= 1 << 0 + } + if (1 <= familyClass && familyClass <= 7) { + flags |= 1 << 1 + } + flags |= 1 << 2 // assume the font uses non-latin characters + if (familyClass === 10) { + flags |= 1 << 3 + } + if (this.font.head.macStyle.italic) { + flags |= 1 << 6 + } - this.subset.encodeStream() - .on('data', data => fontFile.write(data)).on('end', () => fontFile.end()); - - const familyClass = ((this.font['OS/2'] != null ? this.font['OS/2'].sFamilyClass : undefined) || 0) >> 8; - let flags = 0; - if (this.font.post.isFixedPitch) { flags |= 1 << 0; } - if (1 <= familyClass && familyClass <= 7) { flags |= 1 << 1; } - flags |= 1 << 2; // assume the font uses non-latin characters - if (familyClass === 10) { flags |= 1 << 3; } - if (this.font.head.macStyle.italic) { flags |= 1 << 6; } - - // generate a tag (6 uppercase letters. 16 is the char code offset from '1' to 'A'. 74 will map to 'Z') - const tag = ([1, 2, 3, 4, 5, 6].map((i) => String.fromCharCode((this.id.charCodeAt(i) || 74) + 16))).join(''); - const name = tag + '+' + this.font.postscriptName; - - const { bbox } = this.font; - const descriptor = this.document.ref({ - Type: 'FontDescriptor', - FontName: name, - Flags: flags, - FontBBox: [bbox.minX * this.scale, bbox.minY * this.scale, bbox.maxX * this.scale, bbox.maxY * this.scale], - ItalicAngle: this.font.italicAngle, - Ascent: this.ascender, - Descent: this.descender, - CapHeight: (this.font.capHeight || this.font.ascent) * this.scale, - XHeight: (this.font.xHeight || 0) * this.scale, - StemV: 0 - }); // not sure how to calculate this - - if (isCFF) { - descriptor.data.FontFile3 = fontFile; - } else { - descriptor.data.FontFile2 = fontFile; - } + // generate a tag (6 uppercase letters. 16 is the char code offset from '1' to 'A'. 74 will map to 'Z') + const tag = [1, 2, 3, 4, 5, 6].map(i => String.fromCharCode((this.id.charCodeAt(i) || 74) + 16)).join('') + const name = tag + '+' + this.font.postscriptName + + const { bbox } = this.font + const descriptor = this.document.ref({ + Type: 'FontDescriptor', + FontName: name, + Flags: flags, + FontBBox: [bbox.minX * this.scale, bbox.minY * this.scale, bbox.maxX * this.scale, bbox.maxY * this.scale], + ItalicAngle: this.font.italicAngle, + Ascent: this.ascender, + Descent: this.descender, + CapHeight: (this.font.capHeight || this.font.ascent) * this.scale, + XHeight: (this.font.xHeight || 0) * this.scale, + StemV: 0 + }) // not sure how to calculate this + + if (isCFF) { + descriptor.data.FontFile3 = fontFile + } else { + descriptor.data.FontFile2 = fontFile + } - descriptor.end(); - - const descendantFont = this.document.ref({ - Type: 'Font', - Subtype: isCFF ? 'CIDFontType0' : 'CIDFontType2', - BaseFont: name, - CIDSystemInfo: { - Registry: new String('Adobe'), - Ordering: new String('Identity'), - Supplement: 0 - }, - FontDescriptor: descriptor, - W: [0, this.widths]}); - - descendantFont.end(); - - this.dictionary.data = { - Type: 'Font', - Subtype: 'Type0', - BaseFont: name, - Encoding: 'Identity-H', - DescendantFonts: [descendantFont], - ToUnicode: this.toUnicodeCmap() - }; - - return this.dictionary.end(); + descriptor.end() + + const descendantFont = this.document.ref({ + Type: 'Font', + Subtype: isCFF ? 'CIDFontType0' : 'CIDFontType2', + BaseFont: name, + CIDSystemInfo: { + Registry: new String('Adobe'), + Ordering: new String('Identity'), + Supplement: 0 + }, + FontDescriptor: descriptor, + W: [0, this.widths] + }) + + descendantFont.end() + + this.dictionary.data = { + Type: 'Font', + Subtype: 'Type0', + BaseFont: name, + Encoding: 'Identity-H', + DescendantFonts: [descendantFont], + ToUnicode: this.toUnicodeCmap() } - // Maps the glyph ids encoded in the PDF back to unicode strings - // Because of ligature substitutions and the like, there may be one or more - // unicode characters represented by each glyph. - toUnicodeCmap() { - const cmap = this.document.ref(); - const entries = []; - - for (let codePoints of this.unicode) { - const encoded = []; - - // encode codePoints to utf16 - for (let value of codePoints) { - if (value > 0xffff) { - value -= 0x10000; - encoded.push(toHex(((value >>> 10) & 0x3ff) | 0xd800)); - value = 0xdc00 | (value & 0x3ff); - } - - encoded.push(toHex(value)); + return this.dictionary.end() + } + + // Maps the glyph ids encoded in the PDF back to unicode strings + // Because of ligature substitutions and the like, there may be one or more + // unicode characters represented by each glyph. + toUnicodeCmap() { + const cmap = this.document.ref() + const entries = [] + + for (let codePoints of this.unicode) { + const encoded = [] + + // encode codePoints to utf16 + for (let value of codePoints) { + if (value > 0xffff) { + value -= 0x10000 + encoded.push(toHex(((value >>> 10) & 0x3ff) | 0xd800)) + value = 0xdc00 | (value & 0x3ff) } - entries.push(`<${encoded.join(' ')}>`); + encoded.push(toHex(value)) } - cmap.end(`\ + entries.push(`<${encoded.join(' ')}>`) + } + + cmap.end(`\ /CIDInit /ProcSet findresource begin 12 dict begin begincmap @@ -226,11 +249,10 @@ endcmap CMapName currentdict /CMap defineresource pop end end\ -` - ); +`) - return cmap; - } - }; + return cmap + } +} -export default EmbeddedFont; +export default EmbeddedFont diff --git a/lib/font/standard.js b/lib/font/standard.js index 29b8ef45f..2f8119db1 100644 --- a/lib/font/standard.js +++ b/lib/font/standard.js @@ -1,15 +1,15 @@ -import LZString from 'lz-string'; -import AFMFont from './afm'; -import PDFFont from '../font'; -import Courier from './data/Courier.b64.afm'; -import CourierBold from './data/Courier-Bold.b64.afm'; -import CourierOblique from './data/Courier-Oblique.b64.afm'; -import Helvetica from './data/Helvetica.b64.afm'; -import HelveticaBold from './data/Helvetica-Bold.b64.afm'; -import HelveticaOblique from './data/Helvetica-Oblique.b64.afm'; -import TimesRoman from './data/Times-Roman.b64.afm'; -import TimesBold from './data/Times-Bold.b64.afm'; -import TimesItalic from './data/Times-Italic.b64.afm'; +import LZString from 'lz-string' +import AFMFont from './afm' +import PDFFont from '../font' +import Courier from './data/Courier.b64.afm' +import CourierBold from './data/Courier-Bold.b64.afm' +import CourierOblique from './data/Courier-Oblique.b64.afm' +import Helvetica from './data/Helvetica.b64.afm' +import HelveticaBold from './data/Helvetica-Bold.b64.afm' +import HelveticaOblique from './data/Helvetica-Oblique.b64.afm' +import TimesRoman from './data/Times-Roman.b64.afm' +import TimesBold from './data/Times-Bold.b64.afm' +import TimesItalic from './data/Times-Italic.b64.afm' const STANDARD_FONTS = { Courier: LZString.decompressFromBase64(Courier), @@ -20,17 +20,24 @@ const STANDARD_FONTS = { 'Helvetica-Oblique': LZString.decompressFromBase64(HelveticaOblique), 'Times-Roman': LZString.decompressFromBase64(TimesRoman), 'Times-Bold': LZString.decompressFromBase64(TimesBold), - 'Times-Italic': LZString.decompressFromBase64(TimesItalic), -}; + 'Times-Italic': LZString.decompressFromBase64(TimesItalic) +} class StandardFont extends PDFFont { constructor(document, name, id) { - super(); - this.document = document; - this.name = name; - this.id = id; - this.font = new AFMFont(STANDARD_FONTS[this.name]()); - ({ascender: this.ascender,descender: this.descender,bbox: this.bbox,lineGap: this.lineGap,xHeight: this.xHeight,capHeight: this.capHeight} = this.font); + super() + this.document = document + this.name = name + this.id = id + this.font = new AFMFont(STANDARD_FONTS[this.name]) + ;({ + ascender: this.ascender, + descender: this.descender, + bbox: this.bbox, + lineGap: this.lineGap, + xHeight: this.xHeight, + capHeight: this.capHeight + } = this.font) } embed() { @@ -39,47 +46,56 @@ class StandardFont extends PDFFont { BaseFont: this.name, Subtype: 'Type1', Encoding: 'WinAnsiEncoding' - }; + } - return this.dictionary.end(); + return this.dictionary.end() } encode(text) { - const encoded = this.font.encodeText(text); - const glyphs = this.font.glyphsForString(`${text}`); - const advances = this.font.advancesForGlyphs(glyphs); - const positions = []; + const encoded = this.font.encodeText(text) + const glyphs = this.font.glyphsForString(`${text}`) + const advances = this.font.advancesForGlyphs(glyphs) + const positions = [] for (let i = 0; i < glyphs.length; i++) { - const glyph = glyphs[i]; + const glyph = glyphs[i] positions.push({ xAdvance: advances[i], yAdvance: 0, xOffset: 0, yOffset: 0, advanceWidth: this.font.widthOfGlyph(glyph) - }); + }) } - return [encoded, positions]; + return [encoded, positions] + } + + encodeGlyphs(glyphs) { + const res = [] + + for (let glyph of Array.from(glyphs)) { + res.push(`00${glyph.id.toString(16)}`.slice(-2)); + } + + return res; } widthOfString(string, size) { - const glyphs = this.font.glyphsForString(`${string}`); - const advances = this.font.advancesForGlyphs(glyphs); + const glyphs = this.font.glyphsForString(`${string}`) + const advances = this.font.advancesForGlyphs(glyphs) - let width = 0; + let width = 0 for (let advance of advances) { - width += advance; + width += advance } - const scale = size / 1000; - return width * scale; + const scale = size / 1000 + return width * scale } static isStandardFont(name) { - return name in STANDARD_FONTS; + return name in STANDARD_FONTS } -}; - +} -export default StandardFont; +export default StandardFont diff --git a/lib/font_factory.js b/lib/font_factory.js index cb13f9edd..da2c01395 100644 --- a/lib/font_factory.js +++ b/lib/font_factory.js @@ -2,7 +2,7 @@ import fontkit from '@react-pdf/fontkit'; import StandardFont from './font/standard'; import EmbeddedFont from './font/embedded'; -class PDFFontFactory { +export class PDFFontFactory { static open(document, src, family, id) { let font; if (typeof src === 'string') { @@ -20,6 +20,9 @@ class PDFFontFactory { } else if (src instanceof ArrayBuffer) { font = fontkit.create(new Buffer(new Uint8Array(src)), family); + + } else if (typeof src === 'object') { + font = src; } if ((font == null)) { diff --git a/lib/index.js b/lib/index.js index a73fd9855..810a5c256 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,4 +1,5 @@ import PDFDocument from './document' export * from './font' +export * from './font_factory' export default PDFDocument diff --git a/lib/mixins/text.js b/lib/mixins/text.js index f029d8ecc..2acc44b4c 100644 --- a/lib/mixins/text.js +++ b/lib/mixins/text.js @@ -1,393 +1,564 @@ -import LineWrapper from '../line_wrapper'; -import PDFObject from '../object'; +// import LineWrapper from '../line_wrapper'; +import PDFObject from '../object' -const { - number -} = PDFObject; +const LineWrapper = () => {} + +const { number } = PDFObject export default { initText() { - this._line = this._line.bind(this); + this._line = this._line.bind(this) // Current coordinates - this.x = 0; - this.y = 0; - return this._lineGap = 0; + this.x = 0 + this.y = 0 + return (this._lineGap = 0) }, lineGap(_lineGap) { - this._lineGap = _lineGap; - return this; + this._lineGap = _lineGap + return this }, moveDown(lines) { - if (lines == null) { lines = 1; } - this.y += (this.currentLineHeight(true) * lines) + this._lineGap; - return this; + if (lines == null) { + lines = 1 + } + this.y += this.currentLineHeight(true) * lines + this._lineGap + return this }, moveUp(lines) { - if (lines == null) { lines = 1; } - this.y -= (this.currentLineHeight(true) * lines) + this._lineGap; - return this; + if (lines == null) { + lines = 1 + } + this.y -= this.currentLineHeight(true) * lines + this._lineGap + return this }, _text(text, x, y, options, lineCallback) { - options = this._initOptions(x, y, options); + options = this._initOptions(x, y, options) // Convert text to a string - text = (text == null) ? '' : `${text}`; + text = text == null ? '' : `${text}` // if the wordSpacing option is specified, remove multiple consecutive spaces if (options.wordSpacing) { - text = text.replace(/\s{2,}/g, ' '); + text = text.replace(/\s{2,}/g, ' ') } // word wrapping if (options.width) { - let wrapper = this._wrapper; + let wrapper = this._wrapper if (!wrapper) { - wrapper = new LineWrapper(this, options); - wrapper.on('line', lineCallback); + wrapper = new LineWrapper(this, options) + wrapper.on('line', lineCallback) } - this._wrapper = options.continued ? wrapper : null; - this._textOptions = options.continued ? options : null; - wrapper.wrap(text, options); + this._wrapper = options.continued ? wrapper : null + this._textOptions = options.continued ? options : null + wrapper.wrap(text, options) - // render paragraphs as single lines + // render paragraphs as single lines } else { - for (let line of text.split('\n')) { lineCallback(line, options); } + for (let line of text.split('\n')) { + lineCallback(line, options) + } } - return this; + return this }, text(text, x, y, options) { - return this._text(text, x, y, options, this._line); + return this._text(text, x, y, options, this._line) }, widthOfString(string, options) { - if (options == null) { options = {}; } - return this._font.widthOfString(string, this._fontSize, options.features) + ((options.characterSpacing || 0) * (string.length - 1)); + if (options == null) { + options = {} + } + return ( + this._font.widthOfString(string, this._fontSize, options.features) + + (options.characterSpacing || 0) * (string.length - 1) + ) }, heightOfString(text, options) { - if (options == null) { options = {}; } - const {x,y} = this; + if (options == null) { + options = {} + } + const { x, y } = this - options = this._initOptions(options); - options.height = Infinity; // don't break pages + options = this._initOptions(options) + options.height = Infinity // don't break pages - const lineGap = options.lineGap || this._lineGap || 0; + const lineGap = options.lineGap || this._lineGap || 0 this._text(text, this.x, this.y, options, (line, options) => { - return this.y += this.currentLineHeight(true) + lineGap; - }); + return (this.y += this.currentLineHeight(true) + lineGap) + }) - const height = this.y - y; - this.x = x; - this.y = y; + const height = this.y - y + this.x = x + this.y = y - return height; + return height }, list(list, x, y, options, wrapper) { - options = this._initOptions(x, y, options); + options = this._initOptions(x, y, options) - const listType = options.listType || 'bullet'; - const unit = Math.round(((this._font.ascender / 1000) * this._fontSize)); - const midLine = unit / 2; - const r = options.bulletRadius || (unit / 3); - const indent = options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2); - const itemIndent = options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2); + const listType = options.listType || 'bullet' + const unit = Math.round((this._font.ascender / 1000) * this._fontSize) + const midLine = unit / 2 + const r = options.bulletRadius || unit / 3 + const indent = options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2) + const itemIndent = options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2) - let level = 1; - const items = []; - const levels = []; - const numbers = []; + let level = 1 + const items = [] + const levels = [] + const numbers = [] var flatten = function(list) { - let n = 1; + let n = 1 for (let i = 0; i < list.length; i++) { - const item = list[i]; + const item = list[i] if (Array.isArray(item)) { - level++; - flatten(item); - level--; + level++ + flatten(item) + level-- } else { - items.push(item); - levels.push(level); + items.push(item) + levels.push(level) if (listType !== 'bullet') { - numbers.push(n++); + numbers.push(n++) } } } - }; + } - flatten(list); + flatten(list) const label = function(n) { switch (listType) { case 'numbered': - return `${n}.`; + return `${n}.` case 'lettered': - var letter = String.fromCharCode(((n - 1) % 26) + 65); - var times = Math.floor(((n - 1) / 26) + 1); - var text = Array(times + 1).join(letter); - return `${text}.`; + var letter = String.fromCharCode(((n - 1) % 26) + 65) + var times = Math.floor((n - 1) / 26 + 1) + var text = Array(times + 1).join(letter) + return `${text}.` } - }; + } - wrapper = new LineWrapper(this, options); - wrapper.on('line', this._line); + wrapper = new LineWrapper(this, options) + wrapper.on('line', this._line) - level = 1; - let i = 0; + level = 1 + let i = 0 wrapper.on('firstLine', () => { - let l; + let l if ((l = levels[i++]) !== level) { - const diff = itemIndent * (l - level); - this.x += diff; - wrapper.lineWidth -= diff; - level = l; + const diff = itemIndent * (l - level) + this.x += diff + wrapper.lineWidth -= diff + level = l } switch (listType) { case 'bullet': - this.circle((this.x - indent) + r, this.y + midLine, r); - return this.fill(); - case 'numbered': case 'lettered': - var text = label(numbers[i - 1]); - return this._fragment(text, this.x - indent, this.y, options); + this.circle(this.x - indent + r, this.y + midLine, r) + return this.fill() + case 'numbered': + case 'lettered': + var text = label(numbers[i - 1]) + return this._fragment(text, this.x - indent, this.y, options) } - }); + }) wrapper.on('sectionStart', () => { - const pos = indent + (itemIndent * (level - 1)); - this.x += pos; - return wrapper.lineWidth -= pos; - }); + const pos = indent + itemIndent * (level - 1) + this.x += pos + return (wrapper.lineWidth -= pos) + }) wrapper.on('sectionEnd', () => { - const pos = indent + (itemIndent * (level - 1)); - this.x -= pos; - return wrapper.lineWidth += pos; - }); + const pos = indent + itemIndent * (level - 1) + this.x -= pos + return (wrapper.lineWidth += pos) + }) - wrapper.wrap(items.join('\n'), options); + wrapper.wrap(items.join('\n'), options) - return this; + return this }, _initOptions(x, y, options) { - if (x == null) { x = {}; } - if (options == null) { options = {}; } + if (x == null) { + x = {} + } + if (options == null) { + options = {} + } if (typeof x === 'object') { - options = x; - x = null; + options = x + x = null } // clone options object options = (function() { - const opts = {}; - for (let k in options) { const v = options[k]; opts[k] = v; } - return opts; - })(); + const opts = {} + for (let k in options) { + const v = options[k] + opts[k] = v + } + return opts + })() // extend options with previous values for continued text if (this._textOptions) { for (let key in this._textOptions) { - const val = this._textOptions[key]; + const val = this._textOptions[key] if (key !== 'continued') { - if (options[key] == null) { options[key] = val; } + if (options[key] == null) { + options[key] = val + } } } } // Update the current position if (x != null) { - this.x = x; + this.x = x } if (y != null) { - this.y = y; + this.y = y } // wrap to margins if no x or y position passed if (options.lineBreak !== false) { - if (options.width == null) { options.width = this.page.width - this.x - this.page.margins.right; } + if (options.width == null) { + options.width = this.page.width - this.x - this.page.margins.right + } } - if (!options.columns) { options.columns = 0; } - if (options.columnGap == null) { options.columnGap = 18; } // 1/4 inch + if (!options.columns) { + options.columns = 0 + } + if (options.columnGap == null) { + options.columnGap = 18 + } // 1/4 inch - return options; + return options }, _line(text, options, wrapper) { - if (options == null) { options = {}; } - this._fragment(text, this.x, this.y, options); - const lineGap = options.lineGap || this._lineGap || 0; + if (options == null) { + options = {} + } + this._fragment(text, this.x, this.y, options) + const lineGap = options.lineGap || this._lineGap || 0 if (!wrapper) { - return this.x += this.widthOfString(text); + return (this.x += this.widthOfString(text)) } else { - return this.y += this.currentLineHeight(true) + lineGap; + return (this.y += this.currentLineHeight(true) + lineGap) } }, _fragment(text, x, y, options) { - let dy, encoded, i, positions, textWidth, words; - text = (`${text}`).replace(/\n/g, ''); - if (text.length === 0) { return; } + let dy, encoded, i, positions, textWidth, words + text = `${text}`.replace(/\n/g, '') + if (text.length === 0) { + return + } // handle options - const align = options.align || 'left'; - let wordSpacing = options.wordSpacing || 0; - const characterSpacing = options.characterSpacing || 0; + const align = options.align || 'left' + let wordSpacing = options.wordSpacing || 0 + const characterSpacing = options.characterSpacing || 0 // text alignments if (options.width) { switch (align) { case 'right': - textWidth = this.widthOfString(text.replace(/\s+$/, ''), options); - x += options.lineWidth - textWidth; - break; + textWidth = this.widthOfString(text.replace(/\s+$/, ''), options) + x += options.lineWidth - textWidth + break case 'center': - x += (options.lineWidth / 2) - (options.textWidth / 2); - break; + x += options.lineWidth / 2 - options.textWidth / 2 + break case 'justify': // calculate the word spacing value - words = text.trim().split(/\s+/); - textWidth = this.widthOfString(text.replace(/\s+/g, ''), options); - var spaceWidth = this.widthOfString(' ') + characterSpacing; - wordSpacing = Math.max(0, ((options.lineWidth - textWidth) / Math.max(1, words.length - 1)) - spaceWidth); - break; + words = text.trim().split(/\s+/) + textWidth = this.widthOfString(text.replace(/\s+/g, ''), options) + var spaceWidth = this.widthOfString(' ') + characterSpacing + wordSpacing = Math.max(0, (options.lineWidth - textWidth) / Math.max(1, words.length - 1) - spaceWidth) + break } } // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling if (typeof options.baseline === 'number') { - dy = -options.baseline; + dy = -options.baseline } else { switch (options.baseline) { case 'svg-middle': - dy = 0.5 * this._font.xHeight; - break; - case 'middle': case 'svg-central': - dy = 0.5 * (this._font.descender + this._font.ascender); - break; - case 'bottom': case 'ideographic': - dy = this._font.descender; - break; + dy = 0.5 * this._font.xHeight + break + case 'middle': + case 'svg-central': + dy = 0.5 * (this._font.descender + this._font.ascender) + break + case 'bottom': + case 'ideographic': + dy = this._font.descender + break case 'alphabetic': - dy = 0; - break; + dy = 0 + break case 'mathematical': - dy = 0.5 * this._font.ascender; - break; + dy = 0.5 * this._font.ascender + break case 'hanging': - dy = 0.8 * this._font.ascender; - break; + dy = 0.8 * this._font.ascender + break case 'top': - dy = this._font.ascender; - break; + dy = this._font.ascender + break default: - dy = this._font.ascender; + dy = this._font.ascender } - dy = (dy / 1000) * this._fontSize; + dy = (dy / 1000) * this._fontSize } // calculate the actual rendered width of the string after word and character spacing - const renderedWidth = options.textWidth + (wordSpacing * (options.wordCount - 1)) + (characterSpacing * (text.length - 1)); + const renderedWidth = + options.textWidth + wordSpacing * (options.wordCount - 1) + characterSpacing * (text.length - 1) // create link annotations if the link option is given if (options.link != null) { - this.link(x, y, renderedWidth, this.currentLineHeight(), options.link); + this.link(x, y, renderedWidth, this.currentLineHeight(), options.link) } // create underline or strikethrough line if (options.underline || options.strike) { - this.save(); - if (!options.stroke) { this.strokeColor(...(this._fillColor || [])); } + this.save() + if (!options.stroke) { + this.strokeColor(...(this._fillColor || [])) + } - const lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10); - this.lineWidth(lineWidth); + const lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10) + this.lineWidth(lineWidth) - const d = options.underline ? 1 : 2; - let lineY = y + (this.currentLineHeight() / d); - if (options.underline) { lineY -= lineWidth; } + const d = options.underline ? 1 : 2 + let lineY = y + this.currentLineHeight() / d + if (options.underline) { + lineY -= lineWidth + } - this.moveTo(x, lineY); - this.lineTo(x + renderedWidth, lineY); - this.stroke(); - this.restore(); + this.moveTo(x, lineY) + this.lineTo(x + renderedWidth, lineY) + this.stroke() + this.restore() } - this.save(); + this.save() // oblique (angle in degrees or boolean) if (options.oblique) { - let skew; + let skew if (typeof options.oblique === 'number') { - skew = -Math.tan((options.oblique * Math.PI) / 180); + skew = -Math.tan((options.oblique * Math.PI) / 180) } else { - skew = -0.25; + skew = -0.25 } - this.transform(1, 0, 0, 1, x, y); - this.transform(1, 0, skew, 1, -skew * dy, 0); - this.transform(1, 0, 0, 1, -x, -y); + this.transform(1, 0, 0, 1, x, y) + this.transform(1, 0, skew, 1, -skew * dy, 0) + this.transform(1, 0, 0, 1, -x, -y) } // flip coordinate system - this.transform(1, 0, 0, -1, 0, this.page.height); - y = this.page.height - y - dy; + this.transform(1, 0, 0, -1, 0, this.page.height) + y = this.page.height - y - dy // add current font to page if necessary - if (this.page.fonts[this._font.id] == null) { this.page.fonts[this._font.id] = this._font.ref(); } + if (this.page.fonts[this._font.id] == null) { + this.page.fonts[this._font.id] = this._font.ref() + } // begin the text object - this.addContent("BT"); + this.addContent('BT') // text position - this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`); + this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`) // font and font size - this.addContent(`/${this._font.id} ${number(this._fontSize)} Tf`); + this.addContent(`/${this._font.id} ${number(this._fontSize)} Tf`) // rendering mode - const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0; - if (mode) { this.addContent(`${mode} Tr`); } + const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0 + if (mode) { + this.addContent(`${mode} Tr`) + } // Character spacing - if (characterSpacing) { this.addContent(`${number(characterSpacing)} Tc`); } + if (characterSpacing) { + this.addContent(`${number(characterSpacing)} Tc`) + } // Add the actual text // If we have a word spacing value, we need to encode each word separately // since the normal Tw operator only works on character code 32, which isn't // used for embedded fonts. if (wordSpacing) { - words = text.trim().split(/\s+/); - wordSpacing += this.widthOfString(' ') + characterSpacing; - wordSpacing *= 1000 / this._fontSize; + words = text.trim().split(/\s+/) + wordSpacing += this.widthOfString(' ') + characterSpacing + wordSpacing *= 1000 / this._fontSize - encoded = []; - positions = []; + encoded = [] + positions = [] for (let word of words) { - const [encodedWord, positionsWord] = this._font.encode(word, options.features); - encoded.push(...(encodedWord || [])); - positions.push(...(positionsWord || [])); + const [encodedWord, positionsWord] = this._font.encode(word, options.features) + encoded.push(...(encodedWord || [])) + positions.push(...(positionsWord || [])) // add the word spacing to the end of the word // clone object because of cache - const space = {}; - const object = positions[positions.length - 1]; - for (let key in object) { const val = object[key]; space[key] = val; } - space.xAdvance += wordSpacing; - positions[positions.length - 1] = space; + const space = {} + const object = positions[positions.length - 1] + for (let key in object) { + const val = object[key] + space[key] = val + } + space.xAdvance += wordSpacing + positions[positions.length - 1] = space } } else { - [encoded, positions] = this._font.encode(text, options.features); + ;[encoded, positions] = this._font.encode(text, options.features) + } + + const scale = this._fontSize / 1000 + const commands = [] + let last = 0 + let hadOffset = false + + // Adds a segment of text to the TJ command buffer + const addSegment = cur => { + if (last < cur) { + const hex = encoded.slice(last, cur).join('') + const advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth + commands.push(`<${hex}> ${number(-advance)}`) + } + + return (last = cur) + } + + // Flushes the current TJ commands to the output stream + const flush = i => { + addSegment(i) + + if (commands.length > 0) { + this.addContent(`[${commands.join(' ')}] TJ`) + + return (commands.length = 0) + } + } + + for (i = 0; i < positions.length; i++) { + // If we have an x or y offset, we have to break out of the current TJ command + // so we can move the text position. + const pos = positions[i] + if (pos.xOffset || pos.yOffset) { + // Flush the current buffer + flush(i) + + // Move the text position and flush just the current character + this.addContent(`1 0 0 1 ${number(x + pos.xOffset * scale)} ${number(y + pos.yOffset * scale)} Tm`) + flush(i + 1) + + hadOffset = true + } else { + // If the last character had an offset, reset the text position + if (hadOffset) { + this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`) + hadOffset = false + } + + // Group segments that don't have any advance adjustments + + if (pos.xAdvance - pos.advanceWidth !== 0) { + addSegment(i + 1) + } + } + + x += pos.xAdvance * scale + } + + // Flush any remaining commands + flush(i) + + // end the text object + this.addContent('ET') + + // restore flipped coordinate system + return this.restore() + }, + + _addGlyphs(glyphs, positions, x, y, options) { + // add current font to page if necessary + if (options == null) { + options = {} + } + if (this.page.fonts[this._font.id] == null) { + this.page.fonts[this._font.id] = this._font.ref() + } + + // Adjust y to match coordinate flipping + y = this.page.height - y + + const scale = 1000 / this._fontSize + const unitsPerEm = this._font.font.unitsPerEm || 1000 + const advanceWidthScale = 1000 / unitsPerEm + + // Glyph encoding and positioning + const encodedGlyphs = this._font.encodeGlyphs(glyphs) + const encodedPositions = positions.map((pos, i) => ({ + xAdvance: pos.xAdvance * scale, + yAdvance: pos.yAdvance * scale, + xOffset: pos.xOffset, + yOffset: pos.yOffset, + advanceWidth: glyphs[i].advanceWidth * advanceWidthScale + })) + + return this._glyphs(encodedGlyphs, encodedPositions, x, y, options) + }, + + _glyphs(encoded, positions, x, y, options) { + // flip coordinate system + let i; + this.save(); + this.transform(1, 0, 0, -1, 0, this.page.height); + + // begin the text object + this.addContent('BT'); + + // text position + this.addContent(`1 0 0 1 ${PDFObject.number(x)} ${PDFObject.number(y)} Tm`); + + // font and font size + this.addContent(`/${this._font.id} ${PDFObject.number(this._fontSize)} Tf`); + + // rendering mode + const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0; + if (mode) { + this.addContent(`${mode} Tr`); + } + + // Character spacing + if (options.characterSpacing) { + this.addContent(`${PDFObject.number(options.characterSpacing)} Tc`); } const scale = this._fontSize / 1000; @@ -399,11 +570,12 @@ export default { const addSegment = cur => { if (last < cur) { const hex = encoded.slice(last, cur).join(''); - const advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth; - commands.push(`<${hex}> ${number(-advance)}`); + const advance = + positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth; + commands.push(`<${hex}> ${PDFObject.number(-advance)}`); } - return last = cur; + return (last = cur); }; // Flushes the current TJ commands to the output stream @@ -412,8 +584,7 @@ export default { if (commands.length > 0) { this.addContent(`[${commands.join(' ')}] TJ`); - - return commands.length = 0; + return (commands.length = 0); } }; @@ -426,20 +597,23 @@ export default { flush(i); // Move the text position and flush just the current character - this.addContent(`1 0 0 1 ${number(x + (pos.xOffset * scale))} ${number(y + (pos.yOffset * scale))} Tm`); + this.addContent( + `1 0 0 1 ${PDFObject.number(x + pos.xOffset * scale)} ${PDFObject.number( + y + pos.yOffset * scale + )} Tm` + ); flush(i + 1); hadOffset = true; } else { // If the last character had an offset, reset the text position if (hadOffset) { - this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`); + this.addContent(`1 0 0 1 ${PDFObject.number(x)} ${PDFObject.number(y)} Tm`); hadOffset = false; } // Group segments that don't have any advance adjustments - - if ((pos.xAdvance - pos.advanceWidth) !== 0) { + if (pos.xAdvance - pos.advanceWidth !== 0) { addSegment(i + 1); } } @@ -451,9 +625,9 @@ export default { flush(i); // end the text object - this.addContent("ET"); + this.addContent('ET'); // restore flipped coordinate system return this.restore(); } -}; +} From b1a15b2acbeb85953c08c3c3a3ff8cb3332fdb3f Mon Sep 17 00:00:00 2001 From: Diego Muracciole Date: Sat, 29 Dec 2018 17:22:35 -0300 Subject: [PATCH 38/41] Remove deprecated methods from document --- lib/document.js | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/lib/document.js b/lib/document.js index 516e17c42..56625a2ac 100644 --- a/lib/document.js +++ b/lib/document.js @@ -4,7 +4,6 @@ By Devon Govett */ import stream from 'stream'; -import fs from 'fs'; import PDFObject from './object'; import PDFReference from './reference'; import PDFPage from './page'; @@ -205,30 +204,6 @@ class PDFDocument extends stream.Readable { } } - write(filename, fn) { - // print a deprecation warning with a stacktrace - const err = new Error(`\ -PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. \ -Please pipe the document into a Node stream.\ -` - ); - - console.warn(err.stack); - - this.pipe(fs.createWriteStream(filename)); - this.end(); - return this.once('end', fn); - } - - output(fn) { - // more difficult to support this. It would involve concatenating all the buffers together - throw new Error(`\ -PDFDocument#output is deprecated, and has been removed from PDFKit. \ -Please pipe the document into a Node stream.\ -` - ); - } - end() { this.flushPages(); this._info = this.ref(); From ec35445fdca36f8d0162ff13058accfa235d9e5a Mon Sep 17 00:00:00 2001 From: Diego Muracciole Date: Sat, 29 Dec 2018 17:37:31 -0300 Subject: [PATCH 39/41] Add browser check for PDF images --- lib/image.js | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/lib/image.js b/lib/image.js index 05c57eba1..4ad064c52 100644 --- a/lib/image.js +++ b/lib/image.js @@ -3,38 +3,37 @@ PDFImage - embeds images in PDF documents By Devon Govett */ -import fs from 'fs'; -import JPEG from './image/jpeg'; -import PNG from './image/png'; +import fs from 'fs' +import JPEG from './image/jpeg' +import PNG from './image/png' class PDFImage { static open(src, label) { - let data; + let data if (Buffer.isBuffer(src)) { - data = src; + data = src } else if (src instanceof ArrayBuffer) { - data = new Buffer(new Uint8Array(src)); + data = new Buffer(new Uint8Array(src)) } else { - let match; - if (match = /^data:.+;base64,(.*)$/.exec(src)) { - data = new Buffer(match[1], 'base64'); - - } else { - data = fs.readFileSync(src); - if (!data) { return; } + let match + if ((match = /^data:.+;base64,(.*)$/.exec(src))) { + data = new Buffer(match[1], 'base64') + } else if (!BROWSER) { + data = fs.readFileSync(src) + if (!data) { + return + } } } - if ((data[0] === 0xff) && (data[1] === 0xd8)) { - return new JPEG(data, label); - - } else if ((data[0] === 0x89) && (data.toString('ascii', 1, 4) === 'PNG')) { - return new PNG(data, label); - + if (data[0] === 0xff && data[1] === 0xd8) { + return new JPEG(data, label) + } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') { + return new PNG(data, label) } else { - throw new Error('Unknown image format.'); + throw new Error('Unknown image format.') } } } -export default PDFImage; +export default PDFImage From 49f2c5c9a32da0247617fe8ef1e2b52b951327ae Mon Sep 17 00:00:00 2001 From: Diego Muracciole Date: Sat, 29 Dec 2018 17:40:31 -0300 Subject: [PATCH 40/41] Restore page margins constant --- lib/page.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/page.js b/lib/page.js index 6046c9fb6..871ad10fd 100644 --- a/lib/page.js +++ b/lib/page.js @@ -1,3 +1,15 @@ +/* + PDFPage - represents a single page in the PDF document + By Devon Govett + */ + +const DEFAULT_MARGINS = { + top: 72, + left: 72, + bottom: 72, + right: 72 +}; + const SIZES = { '4A0': [4767.87, 6740.79], '2A0': [3370.39, 4767.87], From 5cbed936e0377560a865d9cdb19033e3aec989ca Mon Sep 17 00:00:00 2001 From: David Michaud Date: Tue, 14 May 2019 12:59:17 -0400 Subject: [PATCH 41/41] replaced all new Buffer with Buffer.alloc and Buffer.from --- lib/document.js | 4 ++-- lib/font_factory.js | 4 ++-- lib/image.js | 4 ++-- lib/image/png.js | 8 ++++---- lib/object.js | 6 +++--- lib/reference.js | 2 +- lib/security.js | 4 ++-- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/document.js b/lib/document.js index 56625a2ac..82f9a8c79 100644 --- a/lib/document.js +++ b/lib/document.js @@ -129,7 +129,7 @@ class PDFDocument extends stream.Readable { // add the page to the object store const pages = this._root.data.Pages.data; - pages.Kids.push(new Buffer(this.page.dictionary + ' ')); + pages.Kids.push(Buffer.from(this.page.dictionary + ' ')); pages.Count++; // reset x and y coordinates @@ -184,7 +184,7 @@ class PDFDocument extends stream.Readable { _write(data) { if (!Buffer.isBuffer(data)) { - data = new Buffer(data + '\n', 'binary'); + data = Buffer.from(data + '\n', 'binary'); } this.push(data); diff --git a/lib/font_factory.js b/lib/font_factory.js index da2c01395..3cefdc0eb 100644 --- a/lib/font_factory.js +++ b/lib/font_factory.js @@ -16,10 +16,10 @@ export class PDFFontFactory { font = fontkit.create(src, family); } else if (src instanceof Uint8Array) { - font = fontkit.create(new Buffer(src), family); + font = fontkit.create(Buffer.from(src), family); } else if (src instanceof ArrayBuffer) { - font = fontkit.create(new Buffer(new Uint8Array(src)), family); + font = fontkit.create(Buffer.from(new Uint8Array(src)), family); } else if (typeof src === 'object') { font = src; diff --git a/lib/image.js b/lib/image.js index 4ad064c52..125eff144 100644 --- a/lib/image.js +++ b/lib/image.js @@ -13,11 +13,11 @@ class PDFImage { if (Buffer.isBuffer(src)) { data = src } else if (src instanceof ArrayBuffer) { - data = new Buffer(new Uint8Array(src)) + data = Buffer.from(new Uint8Array(src)) } else { let match if ((match = /^data:.+;base64,(.*)$/.exec(src))) { - data = new Buffer(match[1], 'base64') + data = Buffer.from(match[1], 'base64') } else if (!BROWSER) { data = fs.readFileSync(src) if (!data) { diff --git a/lib/image/png.js b/lib/image/png.js index 20253d0c8..e080f5d98 100644 --- a/lib/image/png.js +++ b/lib/image/png.js @@ -44,7 +44,7 @@ class PNGImage { } else { // embed the color palette in the PDF as an object stream const palette = this.document.ref(); - palette.end(new Buffer(this.image.palette)); + palette.end(Buffer.from(this.image.palette)); // build the color space array for the image this.obj.data['ColorSpace'] = ['Indexed', 'DeviceRGB', (this.image.palette.length / 3) - 1, palette]; @@ -117,8 +117,8 @@ class PNGImage { const colorCount = this.image.colors; const pixelCount = this.width * this.height; - const imgData = new Buffer(pixelCount * colorCount); - const alphaChannel = new Buffer(pixelCount); + const imgData = Buffer.alloc(pixelCount * colorCount); + const alphaChannel = Buffer.alloc(pixelCount); let i = p = a = 0; const len = pixels.length; @@ -142,7 +142,7 @@ class PNGImage { loadIndexedAlphaChannel() { const transparency = this.image.transparency.indexed; return this.image.decodePixels(pixels => { - const alphaChannel = new Buffer(this.width * this.height); + const alphaChannel = Buffer.alloc(this.width * this.height); let i = 0; for (let j = 0, end = pixels.length; j < end; j++) { diff --git a/lib/object.js b/lib/object.js index ab44e317e..ed53cf13a 100644 --- a/lib/object.js +++ b/lib/object.js @@ -55,9 +55,9 @@ class PDFObject { // If so, encode it as big endian UTF-16 let stringBuffer; if (isUnicode) { - stringBuffer = swapBytes(new Buffer(`\ufeff${string}`, 'utf16le')); + stringBuffer = swapBytes(Buffer.from(`\ufeff${string}`, 'utf16le')); } else { - stringBuffer = new Buffer(string, 'ascii'); + stringBuffer = Buffer.from(string, 'ascii'); } // Encrypt the string when necessary @@ -89,7 +89,7 @@ class PDFObject { // Encrypt the string when necessary if (encryptFn) { - string = encryptFn(new Buffer(string, 'ascii')).toString('binary'); + string = encryptFn(Buffer.from(string, 'ascii')).toString('binary'); // Escape characters as required by the spec string = string.replace(escapableRe, c => escapable[c]); diff --git a/lib/reference.js b/lib/reference.js index 8d2502218..ae6132065 100644 --- a/lib/reference.js +++ b/lib/reference.js @@ -22,7 +22,7 @@ class PDFReference extends PDFAbstractReference { write(chunk) { if (!Buffer.isBuffer(chunk)) { - chunk = new Buffer(chunk + '\n', 'binary'); + chunk = Buffer.from(chunk + '\n', 'binary'); } this.uncompressedLength += chunk.length; diff --git a/lib/security.js b/lib/security.js index 75f33d3b5..d81bb8d08 100644 --- a/lib/security.js +++ b/lib/security.js @@ -354,7 +354,7 @@ function getEncryptedPermissionsR5(permissions, encryptionKey, generateRandomWor } function processPasswordR2R3R4(password = '') { - const out = new Buffer(32); + const out = Buffer.alloc(32); const length = password.length; let index = 0; while (index < length && index < 32) { @@ -375,7 +375,7 @@ function processPasswordR2R3R4(password = '') { function processPasswordR5(password = '') { password = unescape(encodeURIComponent(saslprep(password))); const length = Math.min(127, password.length); - const out = new Buffer(length); + const out = Buffer.alloc(length); for (let i = 0; i < length; i++) { out[i] = password.charCodeAt(i);

    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≀A#j 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%0AHUW;|^l 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 NB=zG+r1ji${|`g+Rr~+| literal 0 HcmV?d00001 diff --git a/tests/fonts/Roboto-Regular.ttf b/tests/fonts/Roboto-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8c082c8de090865264d37594e396c4d6c0099fe4 GIT binary patch literal 162876 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 literal 0 HcmV?d00001 diff --git a/tests/helpers.js b/tests/helpers.js new file mode 100644 index 000000000..75cb51995 --- /dev/null +++ b/tests/helpers.js @@ -0,0 +1,69 @@ +var PDFDocument = require('../'); +var path = require('path'); +var fs = require('fs'); + +function updatePdf (pdfData, testState, snapshotChanges) { + const pdfDir = path.join(path.dirname(testState.testPath), '__pdfs__'); + if (!fs.existsSync(pdfDir)) { + fs.mkdirSync(pdfDir); + } + + const fileRefPath = path.join(pdfDir, testState.currentTestName + '.pdf'); + const fileChangesPath = fileRefPath.replace('.pdf', '[changed].pdf'); + + const {matched, added, unmatched, updated} = snapshotChanges; + + if (added || updated || (matched && !fs.existsSync(fileRefPath))) { + fs.writeFileSync(fileRefPath, pdfData); + } + + if (updated) { + if (fs.existsSync(fileChangesPath)) { + fs.unlinkSync(fileChangesPath); + } + } + + if (unmatched) { + fs.writeFileSync(fileChangesPath, pdfData); + } +} + + +function getSnapshotChanges(snapshotState) { + const {matched, added, unmatched, updated} = snapshotState + return {matched, added, unmatched, updated} +} + +function compareSnapshotChanges(changes, previousChanges) { + return Object.keys(changes).reduce((result, key) => { + result[key] = changes[key] - previousChanges[key] + return result + }, {}) +} + +function runDocTest(fn) { + return new Promise(function(resolve) { + var doc = new PDFDocument; + var buffers = []; + + doc.info.CreationDate = new Date(Date.UTC(2018,1,1)); + + fn(doc); + + doc.on('data', buffers.push.bind(buffers)) + doc.on('end', () => { + const testState = expect.getState() + const pdfData = Buffer.concat(buffers) + const previousChanges = getSnapshotChanges(testState.snapshotState) + expect(pdfData.toString()).toMatchSnapshot() + const changes = getSnapshotChanges(testState.snapshotState) + updatePdf(pdfData, testState, compareSnapshotChanges(changes, previousChanges)) + resolve(); + }); + doc.end(); + }) +} + +module.exports = { + runDocTest: runDocTest +} \ No newline at end of file diff --git a/tests/images/bee.jpg b/tests/images/bee.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a09de470124021e4c0617ce9506d19ac83a14bbb GIT binary patch literal 31870 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 EFTE%fL;wH) literal 0 HcmV?d00001 diff --git a/tests/images/bee.js b/tests/images/bee.js new file mode 100644 index 000000000..cde642a35 --- /dev/null +++ b/tests/images/bee.js @@ -0,0 +1,8 @@ +var png = 'data:image/png;base64,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' + +var jpeg = 'data:image/jpeg;base64,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' + +module.exports = { + png, + jpeg +} \ No newline at end of file diff --git a/tests/images/bee.png b/tests/images/bee.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a6f8c7e6cdc388af6292ece7ad9b8da95ed9ca GIT binary patch literal 47832 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 aqGuF}yp%rV!^&|u;7|OU45Um**Z+SX5ml=I literal 0 HcmV?d00001 diff --git a/tests/images/sampleImage.jpg b/tests/images/sampleImage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e69725cc65752b3ab4a5f52b21cd1675beba4bbe GIT binary patch literal 63966 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 h>GQyOs2%Oc^}4Z2dUPSd<$0AA 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 literal 0 HcmV?d00001 diff --git a/tests/pdfmake/__snapshots__/background.spec.js.snap b/tests/pdfmake/__snapshots__/background.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..fafdbf9077b3a0014c4dd74b4c06fbc64f915397 GIT binary patch literal 71960 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 MrQvT3#|sVr6WSK7r~m)} literal 0 HcmV?d00001 diff --git a/tests/pdfmake/__snapshots__/basics.spec.js.snap b/tests/pdfmake/__snapshots__/basics.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..f5750c2158a7585a50cb0db863ba047654d9567b GIT binary patch literal 1720 zcmZuyU2hvj6h$NmGDS3krU)o#65+;HOU7%*UuhC4PGaIDO&q6fTI{G^d&l+$d)Mqv zg4=)#Z$%){C*J5|1%2lUp}tf?q93Y|pn?bf0)K%sJN7z?vF<(h%-Q+anen~L7+vMA zpxc(-a_hFB2ikdB7oz3PFjlkesak_o%L`lUIYM~5Wjn$xlv+l$sejCAS$EBfOSRH2 zouef(5y&lNKG3G3B=GNpUwk7P4O6?kM`mXUyL6+)Da+|K?h>|W?^}Xugsqu|OAB%I z%kPr;dBQD24v@m&K!V{8mjh*g!Y*>d)YEpG7QztXT7)K2kzF~vCD6^K)2d&dyY{|Q z;VzANLVq3E?yZw^?8-J5w7{?#$}aJ?pe)8)x_AJHXxmATJ zcw9-ZBb>ge_|V++=!>5#o?Sf&GMRcGC?`4}X?H$DoFB;pVQ;7qTUT)q`)jV?;U}R@ z)ur>-y~&d&6n9h@9!Go`9=W^$ynbtBB&?n|hs6?DwQi`kkDY>|kA6awn}(f%Uptot zz6Bq92~dHfBoVgYFDMl_DUZ`t&1`u`kvhWDF9AX_*idK~7&ug| zenxB*OIuSA$D;Azg%F6*91mV}&i(PVH^ui*o_z~=6As&40gV3njcNgB;FD{BrhF@T z=%ezqU_%_hfG1z-SCCO8P{rweSTHq)aBnz9{z|t zV|mZl;hNkTYzY3YqOuTlbD~=kl1DNMscP(3kVZkI>Y6D+$a&=ww91+G`KVq z32VtPAng4<3LPmoGJ$*9s_K+XZ^F{L%e_QrE4*>Qg;~)F+ukn=ua?Q4C}GPMlGwCr zlbR&2y=7jte@bC6102j&3%%<9!RZ&6^zC pV0jzg9eE5W=2@$1Q+dgGRS$JXc>C4D(HIE?mNzqGf|M?h{{X)T^=SYA literal 0 HcmV?d00001 diff --git a/tests/pdfmake/__snapshots__/columns_simple.spec.js.snap b/tests/pdfmake/__snapshots__/columns_simple.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..612d245ce255177a87342e71385f618989c49966 GIT binary patch literal 52344 zcmb@vhj%2^nKnL3Gg6O^at@=Gl~YSCsioE^jdIR8v~nxwoLXZWlNW3Z1{;HMSg;M) zV89q`7N28ahCDFCFhf4O_6FPg`FHmF3x3a2?^SghynFV1yK|m5+_$Q3-TS60Nj*|_ zwz1K^v1#mD9$(#@TH{o>e?)`DbJAf|NZtKbQsLW9OKHw zyrHDTklnqvYBy%LkI&dQ4B1sHTg#h9iy^ydZfe6gRDkn3jpiH?c_Ngth$EY!tju6v zp5kP*e{oU+re3#WQr@%EklkXRnj5cN*);Cbq&hsUybBQIc+7N6dC)7;8t8wjX_8inAf}m z+$P7)L#XSZjh2aZ#as&|P6oo$TnD-ycO+`KZu#f0-weIzL_W74sGFfofjEou)upHX zU%$6%Le8K&NBuTO%gf!MHG?|2NF6J>24%=~pvJWEr0g80hr;AMZX5^}Av`M-G9DCj zrhVCT8p>)D*deHiJ_t-p1YaBqof@iulGv%73LV%0m2iI{*5EY==k7-sey)6XcnmzP zz8zdgygj8}A3&Mk1`7cd_K!M-$5`v_Tnn8KaN)C`{agkn5o>4XnOkmL)oV8yT8HwW z#K{RBaq=yGMI%(S3ZKul;DzqGhHHuvqpF~|FnQc2-P;^ z*ycap{sU-x%p4sx>A|9BOr3?|oXjmlKL<*18`wC=Tep^m`a(|!g%ztQ3yc0L_b%Pp z&C~>@92QYBA+{LgR8TMz=#A&Wlw0QGrZEt#oImmAZ@r+u{xh&S5Yt7_2eDHF#>75R zS_<9~R$i^{F@s_MY&`hJt9L9xgmC)Qv_E|3E=aBbNc0rxX2_=l=w>hGh#R8>v~IXH z`p*oH`9n`NgVi3r{e6hx;V%J)N8C4XzQ&hPv2r1w-3k^73INehQy}2V17HPAD|X=m z#%-K;@8~NkfygceQzZjU&SZz~rC`7;GoR`UEJ z6BZ5m?zfoA^eVud0@ykki0S}(bl~XqM?)BFV2vlAIgF+A4?w3{|MAI3AR~sBlX(OL z#EhuhLr;sISCbE5RNHD{5-x*sKz`i$qF?lg>~?VMt5*7c`cY@;MyHD0RzpY;0%o5 z>b;O*bT~W7+>~nI%!T_4<3;LNIyJC%^ROybOmR3t~{zZ8nWpZ6bhdTn&;}*cnLCWBOn#Jd}fcpbJy7AKEbfPmURR-{ zftW&pGhCe)kF_xM0XO=bRRo-!6A8|k@;L&qeB8ROe0P&O%KG?e=j}1x00G<;(8WD4 z+33`25YN5v9V@+1NSCMXhqK{Y_BpVPj)Joz(3uci2A5h00y=iUnEe+XC>tJ&34^v% z)Y1U4zQORn?|k>cr~>rPZ+e-RM<8Hdgz$r;qmEs*zeT>t^r*W)xv-X4Q`(|2fRW>cKNY`11!JVohI;8S-$y!tXrT&r8gG~&{yrCbkHd-7g%D-#4swQ zz5nv77sR;F_R(9J-ty`rhLtJK4V4NGmN0+=I=~7_78|+YY;XV3* z)#f&?525UIz4`-)kDmk!IB#OlAISp~T)!c5|LRw~)vKf0^$Md1eDn-hZGsH6*JbC8 z)+bqZyiTozMHCqewp_Tb5*q_%Krkdg-)6EP1Pn-J6n6`_4S_M60J;%4tGWZj^UAYe z@BRbx#?HzFxTF5=$M-|2DoIyWS-u}vCVF#~$ zO$@xUVxbS5wWY(ot}%tV3NY|Vte=7)-nxF#qZ9&Aj)PXqd)wc5thhRMW5bYl2BVWc zV8tC^K>Hb09MJ3Sb>OTqz$&6g^Ea1R#N8aPO%A#(iv*8gjse4CT$F!68aQ3c+yOds zz*q+?PaQnzXco+3`sAm&b=4tifNrU1PH$;=INx~qHJFq#+kGE#* zum6lUSE)ne36LuaTnD<&+1|g?`)Fl-`|MN{OQ$L>6Wp3>0q^i)veMuE{wl$s>*!88 zH84Du8T9(SV&eLYr(S#1d4jI7sybCtT)8=LGIejj5n*8s%@r$;K#!i|X`pzJ-7?X@ zdmU<_#wJB1myH!rCH7bXO1x2t@C0E zA?E}twO6rNXpA*bk+Pkc8m0;q>zCb4fq^bKm?UJ0sXc2|}caCs-`-$G7FjD~gKzt<2 zUiB+6j`Dfit0D%qfb$3@-v1VqDbI#nh|wk%QAb%K&rgm9)6opAuM}*%8!WIB%sy8G z4n#8r3Om5eAU3+u0WCVve#fk?E}CLP8SI75{5cQm;Q&}Z(ZS1g)EDiK@Z{bLKl#g( z&*)|-#SLJ*arl;Q=0=RXqkyZ76?O3PQ&2wmjf{AiV6tXK*)p3&tkJSAwEA2QsDrbOmTIQ@;?40ubWCm=R z@@Q9g{^Wj`k}P1QL5qV<&l=fc1Ti95<~_5=%?Sf#k7WtJ_Z-+8-vm=$Z7pK&z4R5Z zs*irc&FFB5Ry;gr5=~vwZuG*qUu^T-ZeEl#2JRTY#{8f!0B+ASiw{O%4diiwnt!9S z68`O;+pXv7S*z+f&Esdmm~WZPh-p?kgSTI_4j#(j17#s#2HI;JT}2SP2XWxlv(%08>^)iM=UWRT@;j zlIbWK3DtEdo-#WJwI{n^@-~gSo;13pb@4yy&6+nLhZ7Q82GwA;A zJTTASamCK0%QC8J80>UFNJuH`i4~40QP$Q<;B*;=05ipzCr!tfo*9BT&_yp>$k~!cZmN(V3 z>Kc_)eY_+nMa>WWbjrGqTmYT|>i5oOB!SHmt{f;BH|0QR$r067oylIrK`@IGXchtf zPhY)Ss0eT$6`qYP-iwZ!cvg|L(zBbw0*s6Z5%)cQ^^EQF~;D%nc3JF*tUR;M#W~ll0-?pKpI; zvBA65GLLT!#B=XFH4L;M=P+U4e_{3Idrh3LE@rf7q^US^eFcN|ks=#o;#M|g;uXAd z;guh6=axeO23z86YAus)7_(dTGP6JZ<`%dX(rFbKi~)5|Xmf5K-zqllZEg_EDr4VQ z?=xJvt?h$vH>feg05ChVSem^tV9p)B`VTD_&oCL2N5FIpEOBaH!95CiA7;$VR;X@+ z;su(vnA5~IaB>xjYK~FIHj&_*Q4q2Lsl9&FJpd=2N&st=vB7<9Zg}ja->6|bUR#1^ z95^<~_4k4t-Dw+3bh6-+Ux?%y0Va!WEhCgp?M|UXT9}I2oy_F7p9BM%iop^G5@n>k zRmqb%3vbd(M*w+TCPM=R^QNDw+hy?Vw{MIG-+uk);0<8_cM;lyO! z28Bh+Yk-sN6M>)$PqLi=_%3GJ)o+L{T=jtInSQ3f0mjVs)6AwN(C`>jV&1?90u>S1 zz9`^cqfPWVaN0iJ&$yl77M9|j%K{~0KNhmXj@t2aYYJ;7USS8q<@ z{f5Va^XL$Nv2HQwY&$wQRWCyaxStG*YE|oD*0K++fFiCu&Lk0d&Q!hj?dg}F$4K3A zVv*a71x@zLIhi7|l4wj$3CQandiPnVo9X~mAI(79A{byun(Ci4^3_hDw4injV@8`A zA*R~~x+(eO-*=W{W{qY3z2CrQ1F^-&Wu~V=IBzyu+f@LAV~tS(e7!muR~^mJ)PQv3`e0{8B{m8I4(JT^HO71|)jE17^JHn0m%iDgp+csL!ZniI6z zG_bJ1+{J{JE8h(9!2sA>QR`1Sy>R6g7%=;C%I}`wv~BLNw0BOZJT})2Rt7qtSB_(toyo@vpnYp>J%@Xx#XbIwhnS}!pq3*rfL$!YLv-+e zeM-*+jFPW$%YYWNE4QsAavJsw0O3%#;nF|(s#wvW)}o*qxi>+<=ev`b*{xa&ED){~*c>h-n26v{zFg!+2su>H~Ke#!(J|2co z?$Ta4&gv&ZDVy3{md2Ngk!=Yqj3E*PmBxwE1kucD0TMu5VT?`2+;H)$Urjl?ru~#? zjg2*|u6H^!1W0BA2uNfENye9+-q>Msb7TL0!;i~-io&3!fdGey#9rP6@KL^um7&g6wa-_; za^k~Zfj6^4biDN90(7SPK6{RuHb51noEFbhfL9)9jeYwUU8kMBIbnkd2qZi6g28BG zqRn6Yt{g1ggJcN^*jffbbyZ-8VzWbZGHsJU9-pZT4={M?1~9jiXX_w<(;{5Ca$GZP z=a>?8on;L3$RfF5M&0H=?)vg`u&ku=8iv+8rjL=k_&nH^pRaf3g@hcxkXI1sj!&hrJ`OJQEYf9LbCpF9ZH zEVE8n69DUIAJn08$jy*_5<@;3+2?E^cGm23VLk!APyl~W5U5RtYzUs9>PU~BLcUG{ zqanN~h!L_ei*=0Vp4D|Iah&Tv1Ft@0rv6QoGbz~JFa7q6oS^bSy`Q;WG|{4Vt4+sy zCXB?elI0|IJqCj_V9e;sQ8@(O=v1fK{x9CH9}>m?{4PBRu!R6D8(^V1kR`BcO$K)~ zU-~-4gpu{6njsIyg6ZHRwND=xt$7wWXJ#mXfkXCFpy=Xvz@tXl zF)~l9I)i?;xgT5*!xvScQ^acMshrK$QVfn~huQ?nVx2J$fZpsF_TnD1a~cd6gUaU#Mo!bHP z(3b<*8wzb;;UKlQ{L3$3pkr6ppqw`Nb@@W}h*53DQagUy;SCcDf!!bY$hqJVApgbD9d<;n31C_+ zF&!4;SndKFL=M*jDDOZsfhNQ#JT@z21=?#jfkk_?ZGQ9slVtf-xvS(r!vR zow?98+H8fiRHZXNfmKcc*g$#tEDx?S)R{ZW7y{$3+|i|qF-0sR9gytmEUnlgF#5vk z2`2E~*45uXc+bpkC=&zdd->sv14t(0=b&y|Kf&o3m)Wadb3G+iA1qDGiq4|#)6Jtx zk;QBj0;U(BGQCko^z(U;2Rnv&4GuCz}XL9XZRURQH z&kx$53RGV4(2CE?&-rA(!WW~aS~}^i=e3vG4}Pf9W`gw#B+}K@H`lh`8__R?yrh>?AQDm5|!ctQ@^^j)U)MNgbK= z6)>~Aqvn*cE3c73=H#s3DW$s})^#6f6(x<6;k-p-{;q!Du%suJo^(c>3q1*%lyeqM zy&llu;ScW6e!M1TZuP+FC1z5O+6@wOp#bLg(fivIoA?$r$kD+SO^r$WG~ z0k-Z~XA}*qVmy;S2gL!(dG&=5Iz|VbE?|l{x(2J9U0$VB$c|4$ocw@znMJc9=T|N{ zlOLAYt3Lqum1CK8B10k0fMR6`&Xh24;#~*Vvv5=jUNYMe+SLi=wa3A9v}9RDUx(Pq zVII?W){vb*v4hVqUwsf_$)N6-qL#nJmAw62qVa?0ck*~;8K?`iI=D`UtM&$MpGJ@l zdXl|Pz~me92FnET+!fVoQlYnjnpxYx+Nj7Sh)gD42kZa+uZk7?T>h#}20rWKKAaNh zFYR zqg%jMQCks^(_F-B_vCdzw1Z|qbPkZiM54VOR9-YR1)-uH=T6t3i1p%Kfdvs(mEs}8 zV`j6Mgfp5wQ)=Gw_kP%^y@^$%!<>{U=9xIyu z)wBowFHqagh%QS~Dv$A*art>UV;&-+XM?`t`$0G-V}9+kp)a?zGf9{kz*}DyX*$8( zPWm)*setxbJ66p6@y{k3=qcWXPnzSG&DK+cUZx19!`Vo%_iyY6cZF93p9I~U>7Q@> zL8^A$2`;-P6|AhTjAceGe*A;mW<~d5i)gHt0eCO(xTu=3iUus)8h5eN2WGo^e{kbM za4=LIp+=}oxgh54<-1oL`XMM&EX@Me(3WQtW2hci`Z=9(P*sL<1s}e^-Lsm;LG-a6 z9X1rNS8f9bq6{ZQ8Eg^R&#me>lYSbyoj$-<1OuAi&v92lEGLgkU!|X!ojxF7o9n## zKnDx5Ivb2TN)Xzd`rt;G+oGWERs;$>Rql6@2Pz|6u@<7gx|Z z4Qww=A;F|`rR!W)BdGALhrxM;U-Ff&HVn{Dz`s0tQz*nHb4IlcXgm!9C<#9iksAgj z?p@aRxD8Bg5*n~h%K~p0!9@UD%$Nd|yyJ$z?7!;LYwg_bqDjv6%_!yVd2**W8xgg? zn%@~RhUW~(!@vhH^9%50rMkl49qqulVI&W{_UezRn}7GLoD#nXc{WW3;0#8+jBF52 z@2d<7A1XW#yD?fV={PmG!&jdgckm-|b8N(bGaVTsdeALPj_6z!B^NOimI8k0d*LRA ztw2s0WM9|eTn$Wt+`T&OmFEi5G1C6`8t)VBh_bWgYCpvbX7w$V@m9-wU_i>aa@NdD zswuNljKbZPKfQtOFo1eN!(%LEx8)LWAaA*>({9MfS)Ro}mGBx=7LPZmcLS_Ff0ARB z>YOPW^f@rfK&uE);oD1E%JY zv$#GWA0b*1H5G#1E@WZR)wLjCtwkjG1Ov~y)FQ4{i{bEC?mW}`koR&0{m%BFZo!Ce zyB-(4kojXeQcggp%u>55<&&M=La@(-1QO@Qlf2))PfH@UihvkSu$ce zV`6yT5ra?%vVnjO<)@J-4Cq~UDnNVZU{VAHfF%}#o#V|^o?!UFm#y3f+YZ1UBbcFs zc60SHa~)tn`(wbiOL?r9-tCWPZ8B%8S9u6vo*3{#qjeXa6V%~*@fTTizyjhF$%mi7 z1Yr@C?p?a@?LYs+FFMaco#|!uaih${LFGv5fR*uS1Tl?)wZ&eyX~=rectuwun}V^u zm|kCEFdKMRs1whG;l@+&d8QQl5SjaDw-m~u8D^v_RCY2;I#r4{%W-aFZ-S|% zJ)Zkn=}pFo1c;Bn3#PdW5_JmR3yJ^%%M)x-?w9WXPuo%}ri(T~f_3f-V9=S}Tyb;U zBDf$RLT#l*##^P3LnoSi7I=GRey}%p#1U`S$wm>jm{{(d0tTN=`cuHR)tjOZs{%z0 zXZ16m8v^uWD&>|qS0-c15?EZ=i$l5eaEeCT6eqT*t_d?n0Oz`N2QTYxzXZYNtU}Ag?|TCJ4}$^vd0$ zF`7V^h|=LPYvBCpF#Lp23@)?5U=IQd2DvZw|LN-wK`9H_^W>h{N0@~`NV3P0XxJ^^ zzj#qPXq#Dh;n`~NqKY``kAf9u@*dhxfD(&XCX8cg;4HT-=+yqdD)iX`m6DFIx~k4b zShoK7{IB|A(ne2B>1T`b@?DTa2Vit6aQ#`4;Oe>S3$+GR=>U88mtbeOlH>Oe=G(qu z)d=AS0=Q%yf8z&7{0%F|KXLgV|KP~1e&dSsCr9{YEBqZS&fj>V8IEuGzxuNy?dHcb zs~;W}7Fmk^N54!(Tz7gFl69=&!bXrMhu(bDQxvz!6X&6^%i-gJ+S6!A72$Rv6FJWY zRyt4$p2B7+Wu?M|vEV$5P6dr+@uaaMkAj+r&l;k0J&mx)ODomGr9)F*)M$4*k1s3e;GJ$ zt0w!1`!&nKztS*R2l1I9V2w6;gYm&DNU9Fcf!2QQiE7;@iow#u4)i&6^3{VODXy0z z3>^#pqbE421C$K{81|Ie0*3`MR!sf#<4{Vu3_xu(MMeQ4z_-Kv%=Ee|92gYfdv3ao zaVnsTrA;f}Sxvw!Ju{+iTf5Jx9R$nVAE1a)eEcZPz42 zzwrunV0i4>&9HHDH&A3_EjXRK+2=b40dSds-}svki6(pjf^8H?5~1?}wN7)y1aHXJ z1x$6n^=`Q^mY}MM=3Bf!%el>&&1UAz5eC9FdfB*rQRcuK^iaw#_o^iGw7 zGiJO}LS6iBgXgx6YwuF*}$1`d79m zmUGrq#m@UMoWo<0q3g*hnmzR}<;fZ?$XaJ2$xOk0;`X5;!?5twX0DdYCc!=sqh zdO9Fp)tQ-@1w@MA;txQnY>AYkM%r2w+J^b+>a7AvQ6Amw9fl^9Yj{h+=R62COG9t%+#@*yy-aJ}iPky`Yop zmLv$3;?M-lQu+&^PZ=e^m+e@sTr8_sek+Rb84;{B#=1|29wNYzQ|t6)+JXOOE{j^g zZU!`n2<}unJyNTtJ2rYF+-!23eguL<%&|RrgBV(%T?F_5h^=!TG|QE#E4VU&T3@(~ z0@X5@KtRnn{bcHM&^MockFxn_jp~sH`kQG zm@fyMO^c7^ERZSOr%wANTBUME`7D!3P^GGXiymhj7oZ%JF%MQ$vw+H3STn%!2b1}H zY>ZT!9NJ^zxAFS3UeJa>ovMGGpH*?@j_JoE-l79U*$e`>cGWF;uMKuXfGgmn5Es=} zY03ZzcrwrgvWeo>K=0Q!O$3c?bn7j?f=qZ)X2h!Q%SVVy$I%q zn4uqjAB>yh4bOtOg;>x#H-dR>f*G!U6I|dAQ4Hc&l0aHWc%W!u$DdI=gE5OHkil)f z_?R3PZiA=>)o}`|*ud?eCD56ZEo}A?31EvK{v>ik`&7=!u+0T#7*HYte8l7W6U+13skLP@Q>fTdroYlBBmka8IcK1C8r$X#)0$KA7P9HAO0B9qOt`l)7Ydo^#0f7 z9N|Y04p8BzFNh(?@NeIITvVNNqHwEkjrXE4Rx9+(=sf)(7sMR?>`t|#QVi->xS1TL zzltq1GsqRyLAAN9gH=OZpbw=rJ;^;G2j zH;2cx&jcJmKj%yzInOyC@1bg)s{t0Z->aaSQx*f0#tsSKdnn+nrlo)^R-Yi9(FW)X z;Cv!j7>IEN8bQ3qx!#WQHfAh0N`LZJ{pSL}T~Rl4{c&FM+0DBjJu$W9-#c((8^`JE z&u#+weX3}N7<--a=#y!yooz5;TFl*LDn3-%d`u=6rd{fZkdA8#w( zhin5edV%y3z|}U33LXur^?&=`DoEZT=B3-gxj;stFvevP#5U*4&2zh4G#3vzOUb3% zD;Mxi&Pv3f1Y|7+1L*x`W?pXA8@E7kY2C$h6%bvZ4c^E8_HPU?=aNGj!3sgF z%GysK0-qZlFHElG$)z9%ZTis{@Nxs`VJ^HfZ^M?;4B3*mqKr>c!AODg6`yk)r7?1F(w4i0jdLya6M`DCUd;% zSM-=;nkm4;z`k1CB6MaT-CHh)-ngA->tFzVLcsX)SKuA>{y$jFwWIU_*8})5Q$0iv zKN0DvHYmktg9LNt3UUr!^&8ONB&#-(NOg;x^(M#*y_2AH||w?fF1^7T7Pt((Sxfx z#Vr)t!PY=I?O=jHU3>3`P*)jtM;6%RVs-VPuDx|*0BjS)L5 z0~qIvNGr%+`>`ywoO2=T7H=qkqisVJ@KPJt@Yn(P=^ijfI}#KJQl+$QKf<6XsXHhp6Z+^S!6d{%v*_U;(zqK|3f=`;fx7_qcrb?>)c#X4BNe@Ojwb*r!78D0B6oEsIoJrH{TF^lm9tIGeEeuj z-^7yj1O|M;5lpGcFiO^qoVgk__~xTqpFK1kzWv%`a_kgD%(m!%y!%d3!24=Nbx*J3 zirp*UdvRVr$eeBax9{Ek!FN8r0ctU*($6eRsmqQXIAo>^C3)= z0WpGG&6NWg%+XZ$PVOX1H)7W;+{4^B_QC2PBDb45-_rHo(BO06pjP!L?r?U6TFLP0$@6zH2p{EZZ(; zhq?4Uuuu>{XT9}x(S>WjcHqyq{zyhgCO*l4RuSs5UB6Lo>AyxNmsiVM3z&w!>0rH} zSzW0b~ zfs7o$umb8RG&fEQv~R!@1Wgpf=AGajHHIMKqb3Y7D% z|A04SqNo;T53Y;Gh>a3BJI*lcC}jFpgtPeo?27N+I%hp?>&)wC!7MP(0Crx0CPD6h z-221Fm_`6S3{1Frf*-2wLJjo?O9M?YL*Klgp*hDyWvgcr?+wIrjrIT)a5oGDKG+4IF|t&WE;DG2sNN7BDz1hGGcqw_QV4s}~EX!At-^ z1rr)KH_46wl!^e4?KbUv_#>{vZ*KQ8^OrY`ThYFAQ;nYkW3*pUvwf~IdIT!Nz=>8* zSDa^#|KZoSxI+j+ibwWE%hGN1_q7+nR{Wc}%~R_vULQIB#~(Z<$`-_C)oV}6h(}Yn zQQna*OTT&__~J?!cmrrWsU}1FJuJ`xh6R{p7yv%yfswYus?-o}*fW$#RW`y7uoHj$ zUuF0p2&gJ&2EX$l*r&f?8d^XC#$ZR(GH0G_t9qiRQ{-q2eI#fyv8xBqq$v^%(L&x4}Sbze09=Q4o2YCHEUj{F1j`W7` zY^(6L?T$hN8bP)m(ZLr3`@k0%I-pYRNk-+9kbMj}z@j;-Dv|;C?{EATI0F&6?9Z@S zvgITI$BkDXo zUseUieHJ@&koi7HAH*|N?2LLY=;)Ov(lQ|1<2hXcNHxq)exSWX?q`MwFf z-f!8ErEbcNmxBcHbtbx6E&GFqw)G?DxOzs7&5Czs(QNdc2M=Mz95$!NL1cn-&?i0I zgK8CBRcHM$8qt2~&0l$2E;+06y~|)=O|YbZxO^~w`b0-0w^Am_$DPz^id2&kMpSpxY-s+e)rZ$H`&4s0BptYtz0tqWXmCeLRm8x2|DfN~SG z9hR;$Jcn|eQK09rHU|0+KYKu35!YJI=2?;h)_CpPxjiU0 zaE<}y0#L)&BS__zQ$Wn)C^pfQ`QP1|2N@L1ZqpL1CWcN|0V?O9UHyA7`U+rL^@}Q; zivkisw4V-W0%x338o_|8zXj`zNh{(VxT34~fC28!nGwu^_^E8R#?OI?Aqa0ZKzZjO zu-G`T!zFHp{gpMF#^4y^dEiLV_6>A(zWe18Lt`X@Tc(yrjKHHj(|L2VZ10AX_ynbt`m~11EoNQhBUHjE`OtI@vXMB7k zmw54~q2RAE3WAK(<6l2WX9C=%K>IIitFJsRqiTqQ#Oy0CsEsFL%%@2j9~m65vSUEW zYjH~lSx|tI&jpY1-U|YY0Ajwf)*M+{%P_aBbaNe0OuupWW}IJ)5b^z-51Gv zdG|gr!@qp%ISAl)p?FxtoHzpl))5 z09WG_GO&sO=YB^Z%S>X5+9}#mk$e9;7T8L~?tGAU`S{v<#W;KAd7i>!?gQ&$V~*7= zTzbrTf!Nh*G=~ksWCU@8fV#yw8G+kCYNODOeH^;UD$7Qc*BFU|4lu!+53pNyt5oCW z)oyY|m}X`BVBF~OOw*DnJuuIH{8Mn?@=rwOi!h9G8s-MD&Mpo3G8$_P=X=lbFw>Li ztK3<-A8Dvdib;h9xO^PXSPY6o*@67kLn7sUbqu!PIWXYT{md-2ZY~xhMtL^nz32Q@ zWnOp?1|XOl>IW$&MQOjuL5^kaeewdADcE5DOsgv^ZhZC82&hw_17EH?!s%{|xTjJO zU=v|F5UKoeYU2d2{Tm-x{(t$KkN@d!x-oy@Pd}PJ|F<7C!|}(8|93yI{5SskV_rdy z#rog*Z8yqu%k*uaxQuQ5x05C8z3f@8@Mw^cf5Gq=j{`f^TRmH<3NegW?e0oY zEtt~_`bRRg?|;hZh&LLVtOp-uJ?khx6t(=Xt)nAH4jj0mUMKa_b;V8BM0xWGNG~?l z_rAy6H-Ky)9cZ$_`n(%+dP}X zwBV2KEOCRMyi(;1x;M090C@@>)q9LZ8ofW&zW0Im$U`rNK4%M1hO&fzZM zhgV+oDXqP%g+=>67c*g%^W&;h9u|brApkuaD9ss~7yDR7WF#LQ9&17AMUdKGQ|(%Z z26P|!&gYhiK9SnZM@pyXU%vBwv49_zfO&SU@F`Gt-n}hSjxb^9Z&xrYH)~$`W@7^L z6@Tkh4$|AK?&~-aFwJ07 zF9a!nKzrv~U;-}tjr%(Lmu8@-XXiXa+gjh%KMS|9+-xr2O_$5SD@(!DoEu`DV@mr) zY5&Ds?G*-~paOhumArhP4207gKmv$S;DZS025}mI zg(axbHBlT6$LB1q`gp*qt4Tad`?!`NT8!(=THbArI{;W3hH3m~Oh#@f1}r^leGmfR z0*mUvxI~{y?YCP7?WT55Vn`>k?u$gR1wwd${`tA@+aUG>z)rmLcOBfFj_`q6 z=m#yG;P2d}o1yrCc0f#;AmMWETOT{EnCo;l|XJR z*Yy75G7`>&<6JDJAW*|OFy?+dsFvBJJnGkBo5W~ugm+D@>2p8;hfEzHXh0-gNS`w~ z)CT3i62$sP_s=t_y|v#n(mPTL{ld+W?>%{V2#uFjyIudvP$)HRVs2#f6qt^#g(FW4 zRNjvBf02pUg|I?3GuOkMgO-~(Myl?%y4QvNmbUWXan`#va?{<7G?ba0!! z9s1DD=c(~8U;8OUX1`7BXUavUt^`jmmo>^jnb<6}CjiU1OHI8W@0}T`N^BnXwNtgb zr7JCwbbnobal$UUW4Cq7Q~Q5)S8v29hS}bo3PAzfbE|KX`8DnhxMPafm!gKB@t z9Pih4N%e4VdTdCP4K zWN<#%itn_66LK93?pfgTDs;*imkR~>%X8nDhftB~<+Y7+1Uy4DKlT*{Ha>(=dF^gL zrUDQu0-V0i3Uq+)S()CREPSAF%DQp{Sz-fAt75k<0|}y7CO{Kc09f980K6Z>wc_v4 zltL|;1LJiKOU7b;Z3cvPWo)p3cpRt=0c!zq7i_p&Trihf2LjIWAkYU|$xtaOCh!_v z(-pH}E^qt&+noDjIeNbI_fvtza?aVd!U`5k#b=N2L2v_pd`j6sT^D`^4yXvL&LcLq zgDp@mn-86ITKnrH?|yGEHx?t{`h#1a-U&GgS{|4V7^<|JRMzCjrGgNtmu`H4tZAGft#$(u_mhTCDo7I;=*O!9M@$908W$rwleiAV7YTh2zeqm{|Y=ECI z$T>VkwGS0FSp44kg?<#uOHcEK$Q2_PsH>nkW+S*cfT<$zU|s_}Q_v2fa{i6u_u>sJ zjOt7|s}o{P)HsN;kA9xd_ai`ihWm@2(JC@qEyAC*4h((z9qn!1%UK+9K=@y7eM}Uu zLr8kyY}~S!n84|PB^ecM_PqLiF3e|*i5WvTc7X~?!GHviN}c9eddIB&Fd9k?(?g{s ze%ejbSQwO>(U(%+NU{>-xuWw_>O1`Md!lk zC+;J?KAoZ7lp`VRC4W_ZViz6_arItT3&W7N!5nGO&Fgtk?Ip*Bg#q2J!oH!OCW?_M z!8{SfLzIIW3v?5dWye`?61%n;WQqmTK2vw*_>X>b|GXS1V_Q4qJUK_Xy?^-SEfxOG zT7tFRc|(i<23q^W+7re2vjp0gFtF@IUHWkrWNbCNBO}_nz7}5UVEwOyxFCQx2D+Fe z@k3y&!qciI8oa}JUYX5U$189Q>5+8}(x z8MPjeV5p7#6WG6WM;5a*NPnB)HZYhpXrGalvp&a*SeJkgYhOoOC^M^=vjJ-$?Z?}Y z%m-%qRF|L9AY9QcgDX!$G8=$S5!oWZWs zROQe7WKyY|T8x5T3W^1pcfka0mw&ANVF8R(?kBltjAO(H+`)M{X{qQ4%C366G2fHg z-uOC%Y7UofHF4_YYj>)?gaN>;^AweL7hJ!Y+YsbCAla#PEL1?P;#Qb60HrKPoJ>LI7N;_RiMN^K9H;>*gZ(IM>Kk=*2*NEHz#Go8Qegj8vW0skaz zLm#q6bF&`AXr6!RCx)mW2(Zicb!6IZTy*zl+_S7{aTv&^}M?23&^`|_r-D7Vm5n3s7ZCSbb`6hFIPC+h=RpYDm_PLqaO=F=Mx6w}QR~AdI)s&Z;lV{E|WOr@amwJsk zvdG%GMSHF>SAIj4^XZWL#b1EME#cy=iOs!L_@SzynijeXYpfjKuygod`v=!_?QP)p z4a?Ij#*z{P9#AuL_?sB| z22S&@Gd@Nwf}Mu!KI2f1ai|Cny8?58si3GR7hcaVEHvdtynL&vATQTy&V#kcgr}C-Qed>?=b4J~E%2T(7nkMd)8)oI1f(FZ zfPuAGa&WF$o4{f!#Qab#mV8rz74hZe`4(D@mK@v);o)7)xmck#sl{wI<>uw&7jULR zlR4Ll)!?#xQ+{5a1?M8{$2pXj3pGF2Y_+=FwGcb7SdmRuoQjPX78T%lZlT3wE!5`9 zEwq}fIXDA}S77}co5{E4o2=T-@t1Fkumo+51x0x#Ykpw?eW2&4F~0~aFSKY5btZQ% zT!$@a8!jj^ap72w%egKyT*cDEu}wd8hPq@@ToRip*VYC-ZBS@W?RtjWZPI5+d3sqk`cE;n9KU@>WnLQ3Qn zqGUC9z*Q(H!~r35hPR*)UZfLnr~E>bmOa=3a*_U|I|`A2Of*bwGHc0Wv$?jSzwzM* zYYuC54nGWCH?qZS+N!bJ_bp>1a^4vLfF3(gC?DldDru)^5H}Be33(LchUm^f|>Wi7B?jAAl3j`gp z&?f%sA>|JXcS#TQ$$5LzjSkTgEpvQ`^KMIT-6gj7ee`WFsG#`Q0bM zeLJjf9f9bBm$m=a3FACpj#i5UID3-zd!uM|wK4AWy+5vQcZ>~j!EREeTunL|ch=CYd2UA&j{L3iiXgOa*fo$#n zmD);W1kTl7`<@K9Rmac|Mmh@uHkLS$-(ZQ?&w$b@1HRt_QqiL4xr?L&3)$O@4zQvR zzo|SbN5LmXy;*Q<8!6_|L;5uJgNMN{KMh82lK`%kE?BzqAUHi!4g#iU*)YeI7a7vR z^b0p!xE;#dkAMMT+8^@b7ZGgEgP>F9_rKk0UU~Te=*jF8q>r8i1C~U9J6CHGTmA>P zK^bH!p47e;3xKxDbT|+4-ptrEltN+d0HOJ@X|wcLAwyJ=kW*DB2l}^|x=H-R>4K5& z(V<+5v7tTlAZWlV@|D|sQd?CFVWwk~*h|&+wI8%&2)y<8mfp+=Ck>Wq;@4+ID}d-f0^|8UOY{h!1RbX%@hCAAgB9HXrLO{vrOP{3^O5E5 zU(N?8TW2vy`+v!8Q1%iTtNerNhLMeBS%uip#C^x2?X=1s5P1Qxvm zwhRJ3yOsM=-iJ00N~-J$4Tc;At*ivHQ&i^u>z#K%0{#gvJqnQn`tbIEV&}8xbSF%^ zNzAZU9s&c3Kq_R=GKv@M>@`5JzgJTfQ(wTB5P(AaBeuR%3>m-_;RJgLG6q)<;efbo z4Cv+@e=xSp673VA&Nd2@FDQ;F-N_q|X2&J5dv2&~g_^~n0c(Hy+3gVAaz69pq-W&s z@BR&x=1nk$L`TqnoXd^7^f-7n-R1!T=vY4xljjT*hG__7@=iz1bW&!7cMKxz zY4nVaaQ88*9pM0DYTkDCQVa!qW!waCAc6&uJ+fwk7+Mrl7c-HObp^MgBE(t(PBDFQ z>ANm2y0|wBE19Z;3b0xP>ktevz*GWg3D4U#pJsnKRmt_70|7bAuK>}(r|5LxrTgu@ zNlf@Q&Rz;)@zI?VAXeG*^nRYBm44w7&H`w^dLQx%}d~_>Vo=J_)iV?gzmzxxD|5G3STm~$)w1r?9*dT&b&SY8)r&^~@Gq_ctJk?b;GGr5H8_36hM*otdrJL7jKjS|Wb7I#TGvSakg)`HG!oir1 zDY0VQU@@wjurDmBjCucS%@`T{z}jXQ%5lSxommpY5GR0Ku{P8w!{!di^(24SgV41f zB&a(kP1|`mBzQwViS@^f1Gt=^iSk()ofOeiE;20(vb0nN$3Jjgf8`ru5YDx7gI(@9 z;H&>A!sQMY)Cv zs4`3pS8ues@qv=ag!4VaCYs+7B**fSMS{Cz{r(BZqZfxD=Emg9hE^BidF^YBsc4rV5Y=@&uV2U`znufJ@<& zZn@U>at;8?U?=@2sD(JE{etLN?}Pf%s0g+mBgp0f=FMyAWq{5}SB3Y+@#h^KIM5dk zrgle>qqYbY2v4RP*zAhM;Kud(g52>X-0*O%fgxa@W4qXFJ$KqLtNmYSj7+R5Q>m3V z_|ucWXoX-U0_S4)n7sxjDZr34Gt<%-eU*TQz%Zls$J~=)v-3iaQwHr*y*%Lr%Yy;+ zWAUZ!RGGLMu2K7DH6+j$D{^`i@?bJG@W2kGpFz!J?!| z^Yt5(0?bg9BcW*v3CZu}69S;yufG6RYymqBnm+*+fVPmI0R`A*W$@YBmQy#u^9A+3 z;VLsQ=EB&hoTaJ#hw-V#5SG-%uYm!~8Q|5s`naaoUmPA21HH&@3Y^PGXB*t-9#oL! zz`~z?_AO{{eeDpOYt>N)ZCf8f;nCwy_cJ+|UqI-~zX3m4$+!aA>wz_pvGfL+8L`!- z2ylbXOAkV@rUZP^VjAtU%LCi3>)x_3>^LL9?_ZhfgVHPZ4;^lW@edyKnsXP zL@#dScCWVa9$Vb-bSW4Q2ZHvRnJtwdK?MXGIWRoN6M>grU`V2J!A^nP=-Zk(u!EIa z@FEbft0q~Xd*f-$uuP}?|7~4~Q=I30<`4oF1`r_5r%$uWTqK9h+9LGgw zbHu;4r;Z0zLWVOwdwq$mv^G#YQkE*(ya=6-ZG^WL$D!F?8V%mG*$^6X3W|E+hyUWy&!9_H7q?u$ zsBDbR?hfM+pVE_sV8e9UiBT{he2M|OQyi7l5(b5tsza-6-G08)+`+2$?|BTRTF{4A zLRukqt9Mc$8bA#Hz6A!b`BXPJ@byoBc>CQ`AAJw%{@H}2iT{52`QT%mrhPVtapsOB zY4CE$0!Naizq1;$gkd`w zG#LyrQd^cTL;kerko@2dG)9m+Y-!%oY~z{)$C%3M<+b;JrS~@{6hq%BX6_%^iUN-@ zlLNJ&EwAW@7a<$OAu5*8!Ke<(1Oq%k37`(paZs#xJnav3vl*%K=iXa|wi>j}^n~^W z$PA#xwjl8J`P1M4mpCOV`25{V;H7CdU*;;;K{U=FH_Wo5qeT1Eo-23Ddg#+_^MLmG zGnvN6)+~w7J!e1IC*KL?WgB{~8T9MkPa-paA=Ba@>=Gwzo=01Jtk(pd7 zpsEL*A0AEX0aj4#7}vLEut^vA49%*;rxq%m!2)po9k3GC868O#^@f16=l*z^=JYPA zb0rb2urv@$&$#30gUe_Z_evjEH{8lF6Y!BM2wPWi!)+Y^Yv9uL-*7X)4cO-~_~G*!T#9+ZzXN172YA2>e9MI$F8V+W&g|$$I4#zA98ky;%bU;=*)kaHh** z`ka)0sGtA*c+*;mA0J;XN8ETqCMC3R(ZIF{`_W*7_Nn8dliFEg^#1O7W+BrrV_qhK zhk&N5N-2`C5+-Xq7qOi7&G-41OkigbWTM=Dok6t3i)f!7hqTXuZH{!NsfcT!(KEDP zW`>do0#-%L9>4Wkv}=DG(%ZtoNKi8^;|wC(=g(9!e%}94?d{(}&M=2A@ZKz$c~PF+ zre6yf7EQ;L(eK;${wm$j0c98jynhMoH1Frji>icr@T0F@`7v+3d)^D&0ZQuuQ!ao8 zm_+#Tb_^8lAzLn;J;TY7Tn}Ik0OK6(vtN(_T^?x=+P`2x3Os0{;F&Yv3tj#UP3-j)R{#}iDzc&%gKS8qNCJ}teK+mKGsLahD5a@H=i z%oVP`+6jO7r)EHH{^Hx!Trt2kM{4JJQ=mnFnn8dH8EJqwoaews*fg&Q#DN%^G^u6( zryMTqa%&}wL14VA44jWnIv!xDqeqT$J?$WdhszjfEacZL^=f~*t9pgL>fra@fMA?M z@G-+=(f)^mg?!j&?LF40Acmkjw9lxc;|N1Z1sF7APd#|>#ta{l;~zZ3$J{B}*Y^I? zJDZRIy{In75gNT>_;{&ILZ|vA1f;&_7tDu|aqgyF8CqP;`pAp+UPpbj( zBC=LR`Z`C7L|e>dz4MjE4$UY~nkO&a3X1aSrJ-i&RY9ODZsBhZRxvVosRfzgErPXR z!RQBGq=J^412}M8RB*02RjpGxopgZ??Z1Z5Iwn2c5DP{yf92QxzwHCR{LK$!ivK30 zja8O62SV*!S+X&qy~dEl*ip`kSZ!xTEe6Gb1iSPXu$jPkqzhWT=4X49oMkwRpD9H51vo?>QyH`Ja%t0eAf`&kV3T0^TJu5wh5WAhC(@`b6 zsxCt>W=#QdX+TKKfm+$5Q47V;=WL*4CUXy!B`ex?%kj0Ehycf+|7*>G^QX| zM0Ef1HZ%sYVQmZCwR=^RWS;O55%J8SqFAu?02SwF&t>~ZGo;)>W7SnkPhA#+EoGiz z14I^xRH?Vshh{nZnVLBtJzl8dCWxI6p9TY#KuKHQ0w3(%|IL`fNo%?Cq)hUF*n|NR zn4N`mTpwEbG8h8EXki^jFL)6M=m!mdz z@P!^?sMAy5v~+vf*wUPfbuv981Cf1bX&EG;?&mamtVdOBOD&}0ykbbR^@gEXKs z!~&7rn6|9aW3VkNpP@AsrcZTOR27^-Uy)`Z8DypE9vjJlXx@9Z?{}|5F+6-%27^~= zkx*rlewyht$l5$QM0>8}?TkS*)qMHtRmkaVwUYB_09(w9PChM$7%+pNZ4j`&D$<>^ z;Fzb9w?pz`2JQMl<^R6;Z?42Z=U-{D$Tu+5^V^ni5T5C*l0})F z_Xwir1nnZa3L!fiq`}<)qkKj9?wp<8iIzTabvbEg6eO+q{qdjl!TqmWyK^bZTU`cY zrW1ZLBfKx0;hgWvgtel??LYihIm@#=38Rdl$^q?%PoX6-Ufp5l__lgPL1p$(w8iwB z$F`v{adfZ-=uj!@Q>FLtTC^cwHxCL_wd>2rzl#=c!rBRxGxV~)zW5GxBiOCCS;&n3 zz2JM7z;tl5KyT5e1Fo3Xe!Wo!Rhb=}NJQJPJPuy^#cMJK?jzdNn09&(4TiEgxV$<& z21<1Tm#iaXE>k<6!r}z{>6%JnMq+rabmoZwXOu5jIi$_h1ipImdv~shs`DY5N0Nzw z1ZdwD8O3e^m(oQug@d$z7hh0Ika1rT&I^!PqJuB%S}e3Sy+t#X-FXW<3RDh?EMpg_ z;uIKQyY*JO@)25e4)153QBeRLpij7SMqpdRFgW8%z!f*->rGubBUP9AA|Dg;E?|>Mf z*@6GO@|^ZP?!1a1#gmmrT@PBfKBBUUBGv#_#)knPwBgEfPz`O>)06((nwqWsz8?ob zfXbx>sA1fsU_jR*p{b>HujyP7fWYuHuZGZ!<(qcMV>nd~|N=}7E znytkTzON4q9B1%2K+M}C%ljv^xzn^{c6&6921Aw|1@i-)9tzaHI3;71+pNC#w{&1z zCzyb_5C*c1Z7%ND8X0MJ#Fb?;s(W%(!a%pggE307x!a`)F!ccIhsr+go+XGGZi5tb zD0PvG9M!u;`SU;gnt1?l)jDoGHz&FZs)gmAo^pNkktnvfOzGQ*De+80fa|N^W?3c$ z^}6QjLl+$=XexW~N;|?wt8VDZ&C)7pO?ZjN7{3F`L>>>CI~^Q z&34L`$aR+)UA<_AF^1AlddoC$6_;5JrD&w6lBSPpXJBW0(C$!?5i4UyBMjPi8_#|E zYjeY#PYH`@Gs9#R6iD0AeNmtXFI0jvJb+4i5jeAVWmG%q%V@s;*Q{5IC%}5NpNkrZ z)P6hyZNu?&a9%*im}vC)j%V886D;dXW8(%B4h9E0eTQCa;?dRvuf+*A>%l%#K|W5W9k@q<)sF8Uc=Wyn zmP7N*CQJUoeV9#V+u=S_K90&fay@fFz8zmue6SB^{SNjW-mlqiHyyf%z37ll&Gtgm z!TVZFHtS(K<1pue`&w}R6Nix=S)avZKYTrNq20}<%S%HzLAzw&Vb(KK8#qXWlenkn s=a&ACQg7!Tyi9+s9kmH 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

  2. 2DIF1T4-r>pAyAj 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